aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2025-05-16 23:18:29 +0800
committerkaiwu <kaiwu2004@gmail.com>2025-05-16 23:21:20 +0800
commitb9d7eefcabfb98ae8417ae33154864becd6ffdc3 (patch)
treef0880b52dfc288685e0279cd72d02123500dd4a6
parent689cd29ea0576e17916814074ccb5822438aaa31 (diff)
downloadglv8-main.tar.gz
glv8-main.zip
update stdlib/jsonHEADv1.0.2main
-rw-r--r--gleam.toml6
-rw-r--r--manifest.toml6
-rw-r--r--src/glv8/database.gleam7
-rw-r--r--src/glv8/util.gleam6
-rw-r--r--src/glv8_ffi.mjs4
-rw-r--r--test/glv8/plv8_test.gleam3
6 files changed, 21 insertions, 11 deletions
diff --git a/gleam.toml b/gleam.toml
index c2e88c7..c4ae5c1 100644
--- a/gleam.toml
+++ b/gleam.toml
@@ -1,5 +1,5 @@
name = "glv8"
-version = "1.0.1"
+version = "1.0.2"
description = "Write functional type-safe postgresql procedures with gleam, through plv8's JavaScript binding"
target = "javascript"
@@ -9,7 +9,7 @@ target = "javascript"
licences = ["Apache-2.0"]
repository = { type = "github", user = "kaiwu", repo = "glv8" }
links = [{ title = "plv8", href = "https://plv8.github.io" }, { title = "plv8ify", href = "https://github.com/divyenduz/plv8ify"}]
-gleam = ">= 0.32.0"
+gleam = ">= 1.9.0"
#
# For a full reference of all the available options, you can have a look at
# https://gleam.run/writing-gleam/gleam-toml/.
@@ -17,7 +17,7 @@ gleam = ">= 0.32.0"
[dependencies]
gleam_stdlib = ">= 0.39.0 and < 1.0.0"
gleam_javascript = ">= 0.11.0 and < 2.0.0"
-gleam_json = ">= 2.0.0 and < 3.0.0"
+gleam_json = ">= 3.0.0 and < 4.0.0"
envoy = ">= 1.0.1 and < 2.0.0"
[dev-dependencies]
diff --git a/manifest.toml b/manifest.toml
index 2060cb7..31f40cf 100644
--- a/manifest.toml
+++ b/manifest.toml
@@ -4,14 +4,14 @@
packages = [
{ name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" },
{ name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" },
- { name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" },
- { name = "gleam_stdlib", version = "0.59.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F8FEE9B35797301994B81AF75508CF87C328FE1585558B0FFD188DC2B32EAA95" },
+ { name = "gleam_json", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "5BA154440B22D9800955B1AB854282FA37B97F30F409D76B0824D0A60C934188" },
+ { name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" },
{ name = "gleeunit", version = "1.3.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" },
]
[requirements]
envoy = { version = ">= 1.0.1 and < 2.0.0" }
gleam_javascript = { version = ">= 0.11.0 and < 2.0.0" }
-gleam_json = { version = ">= 2.0.0 and < 3.0.0" }
+gleam_json = { version = ">= 3.0.0 and < 4.0.0" }
gleam_stdlib = { version = ">= 0.39.0 and < 1.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
diff --git a/src/glv8/database.gleam b/src/glv8/database.gleam
index a31ef88..3f0a6a8 100644
--- a/src/glv8/database.gleam
+++ b/src/glv8/database.gleam
@@ -3,6 +3,7 @@ import gleam/dynamic/decode.{type Decoder}
import gleam/javascript/array.{type Array}
import gleam/result
import glv8.{type DBError, type DecodeErrors}
+import glv8/util.{from}
pub type Row {
Row
@@ -39,7 +40,7 @@ pub fn shift_as(
shift(rs)
|> result.try(fn(t) {
t.0
- |> dynamic.from
+ |> from
|> f
|> result.map_error(glv8.DBErrorDecode)
})
@@ -66,7 +67,7 @@ pub fn decode(
) -> Result(Array(a), DBError) {
rs
|> array.to_list
- |> dynamic.from
+ |> from
|> decode.run(decode.list(f))
|> result.map(array.from_list)
|> result.map_error(glv8.DBErrorDecode)
@@ -137,7 +138,7 @@ pub fn decode0(
decoder f: fn(Dynamic) -> Result(a, DecodeErrors),
) -> Result(a, DBError) {
r
- |> dynamic.from
+ |> from
|> f
|> result.map_error(glv8.DBErrorDecode)
}
diff --git a/src/glv8/util.gleam b/src/glv8/util.gleam
index d869358..a3029b4 100644
--- a/src/glv8/util.gleam
+++ b/src/glv8/util.gleam
@@ -8,6 +8,12 @@ import glv8.{
///
///
///
+@external(javascript, "../glv8_ffi.mjs", "identity")
+pub fn from(a: anything) -> Dynamic
+
+///
+///
+///
@external(javascript, "../glv8_ffi.mjs", "object")
pub fn object() -> JsObject
diff --git a/src/glv8_ffi.mjs b/src/glv8_ffi.mjs
index 5ed6fac..d84e739 100644
--- a/src/glv8_ffi.mjs
+++ b/src/glv8_ffi.mjs
@@ -2,6 +2,10 @@ import { Ok, Error } from "./gleam.mjs"
import { DBErrorJson } from "./glv8.mjs"
import { NilRow } from "./glv8/database.mjs"
+export function identity(x) {
+ return x;
+}
+
export function object() {
return {};
}
diff --git a/test/glv8/plv8_test.gleam b/test/glv8/plv8_test.gleam
index 096819c..769fa08 100644
--- a/test/glv8/plv8_test.gleam
+++ b/test/glv8/plv8_test.gleam
@@ -1,5 +1,4 @@
import app/plv8
-import gleam/dynamic
import gleam/dynamic/decode
import gleeunit/should
import glv8/util
@@ -11,7 +10,7 @@ pub fn rec_test() {
decode.success(plv8.Rec(i: i, t: t))
}
plv8.scalar_to_record(42, "hi")
- |> dynamic.from
+ |> util.from
|> decode.run(decoder)
|> should.equal(Ok(plv8.Rec(42, "hi")))
}