diff options
author | Kai WU <kaiwu2004@gmail.com> | 2024-07-29 10:32:10 +0800 |
---|---|---|
committer | Kai WU <kaiwu2004@gmail.com> | 2024-07-29 10:32:10 +0800 |
commit | 8021cb3eb343c8da203fc90f44cc55afa1a9f96e (patch) | |
tree | 8e0e810e921d37f6d81796d0389dc862d0640d95 | |
parent | 5bc9f048ad4660caf7275208488cc957c853bdf6 (diff) | |
download | glv8-8021cb3eb343c8da203fc90f44cc55afa1a9f96e.tar.gz glv8-8021cb3eb343c8da203fc90f44cc55afa1a9f96e.zip |
name works for test, only..
-rw-r--r-- | src/build.gleam | 7 | ||||
-rw-r--r-- | src/build_ffi.mjs | 13 | ||||
-rw-r--r-- | src/bundle.gleam | 18 | ||||
-rw-r--r-- | src/glv8.gleam | 2 | ||||
-rw-r--r-- | src/glv8/util.gleam | 7 | ||||
-rw-r--r-- | src/glv8_ffi.mjs | 6 | ||||
-rw-r--r-- | test/glv8/plv8_test.gleam | 8 |
7 files changed, 46 insertions, 15 deletions
diff --git a/src/build.gleam b/src/build.gleam index b3c1765..f0da63d 100644 --- a/src/build.gleam +++ b/src/build.gleam @@ -11,12 +11,19 @@ pub fn bundle_build( outfile o: String, ) -> Promise(Result(Nil, String)) +@external(javascript, "./build_ffi.mjs", "copy_build") +pub fn copy_build( + json f: String, + outfile o: String, +) -> Promise(Result(Nil, String)) + const entry = "./build/dev/javascript/glv8/bundle.mjs" const dist = "./dist/" pub fn main() { use r <- promise.await(bundle_build(entry, "app", dist <> "app.js")) + use _ <- promise.await(copy_build(dist <> "app.js", dist <> "glv8_init.sql")) r |> result.map_error(fn(e) { io.println_error(e) }) diff --git a/src/build_ffi.mjs b/src/build_ffi.mjs index 5df1d66..34193cd 100644 --- a/src/build_ffi.mjs +++ b/src/build_ffi.mjs @@ -18,3 +18,16 @@ export function bundle_build(entry, global, out) { }) } +export function copy_build(src, out) { + return new Promise(resolve => { + build({ + entryPoints: [src], + loader: {'.js': 'copy'}, + outfile: out, + }).then(function(r){ + resolve(new Ok(undefined)) + }).catch(function(e){ + resolve(new Error(JSON.stringify(e))) + }) + }) +} diff --git a/src/bundle.gleam b/src/bundle.gleam index ac12a28..563c60a 100644 --- a/src/bundle.gleam +++ b/src/bundle.gleam @@ -1,15 +1,15 @@ import app/plv8 import glv8.{type JsObject} -import glv8/util +import glv8/util.{name} pub fn exports() -> JsObject { util.object() - |> util.merge("plv8_test", plv8.plv8_test) - |> util.merge("catch_sql_error", plv8.catch_sql_error) - |> util.merge("catch_sql_error2", plv8.catch_sql_error2) - |> util.merge("scalar_to_record", plv8.scalar_to_record) - |> util.merge("set_of_records", plv8.set_of_records) - |> util.merge("set_of_integers", plv8.set_of_integers) - |> util.merge("fastsum", plv8.fastsum) - |> util.merge("return_sql", plv8.return_sql) + |> util.merge(name(plv8.plv8_test), plv8.plv8_test) + |> util.merge(name(plv8.catch_sql_error), plv8.catch_sql_error) + |> util.merge(name(plv8.catch_sql_error2), plv8.catch_sql_error2) + |> util.merge(name(plv8.scalar_to_record), plv8.scalar_to_record) + |> util.merge(name(plv8.set_of_records), plv8.set_of_records) + |> util.merge(name(plv8.set_of_integers), plv8.set_of_integers) + |> util.merge(name(plv8.fastsum), plv8.fastsum) + |> util.merge(name(plv8.return_sql), plv8.return_sql) } diff --git a/src/glv8.gleam b/src/glv8.gleam index 3d7dacb..43447a9 100644 --- a/src/glv8.gleam +++ b/src/glv8.gleam @@ -20,7 +20,7 @@ pub fn error_to_string(e: DBError) -> String { DBErrorJson(j) -> json.to_string(j) DBErrorDecode(es) -> list.fold(es, "", fn(s, e) { - s <> "\n\nExpect '" <> e.expected <> "' Found '" <> e.found <> "'" + s <> "\nExpect '" <> e.expected <> "' Found '" <> e.found <> "'" }) } } diff --git a/src/glv8/util.gleam b/src/glv8/util.gleam index e20257a..06cfcf8 100644 --- a/src/glv8/util.gleam +++ b/src/glv8/util.gleam @@ -18,6 +18,7 @@ pub fn object() -> JsObject @external(javascript, "../glv8_ffi.mjs", "merge") pub fn merge(o: JsObject, k: k, v: v) -> JsObject + /// /// /// @@ -27,6 +28,12 @@ pub fn get(o: JsObject, k: k) -> Result(JsObject, Nil) /// /// /// +@external(javascript, "../glv8_ffi.mjs", "name") +pub fn name(a: a) -> String + +/// +/// +/// @external(javascript, "../glv8_ffi.mjs", "id") pub fn to_json(a: a) -> Json diff --git a/src/glv8_ffi.mjs b/src/glv8_ffi.mjs index 1ef2a7f..875c097 100644 --- a/src/glv8_ffi.mjs +++ b/src/glv8_ffi.mjs @@ -14,7 +14,11 @@ export function merge(o, k, v) { } export function get(o, k) { - return k in o ? new Ok(o[k]) : new Error(undefined) + return k in o ? new Ok(o[k]) : new Error(undefined); +} + +export function name(f) { + return f.name; } export function id(a) { diff --git a/test/glv8/plv8_test.gleam b/test/glv8/plv8_test.gleam index 45c60b4..57a7de0 100644 --- a/test/glv8/plv8_test.gleam +++ b/test/glv8/plv8_test.gleam @@ -5,12 +5,12 @@ import gleam/result import gleeunit/should import glv8/util -pub fn object_test() { - let f = fn(a) { a + 1 } +// import gleam/io +pub fn object_test() { util.object() - |> util.merge("f", f) - |> util.get("f") + |> util.merge(util.name(plv8.fastsum), plv8.fastsum) + |> util.get("fastsum") |> result.map(javascript.type_of) |> should.equal(Ok(javascript.FunctionType)) } |