aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai WU <kaiwu2004@gmail.com>2024-07-29 10:32:10 +0800
committerKai WU <kaiwu2004@gmail.com>2024-07-29 10:32:10 +0800
commit8021cb3eb343c8da203fc90f44cc55afa1a9f96e (patch)
tree8e0e810e921d37f6d81796d0389dc862d0640d95
parent5bc9f048ad4660caf7275208488cc957c853bdf6 (diff)
downloadglv8-8021cb3eb343c8da203fc90f44cc55afa1a9f96e.tar.gz
glv8-8021cb3eb343c8da203fc90f44cc55afa1a9f96e.zip
name works for test, only..
-rw-r--r--src/build.gleam7
-rw-r--r--src/build_ffi.mjs13
-rw-r--r--src/bundle.gleam18
-rw-r--r--src/glv8.gleam2
-rw-r--r--src/glv8/util.gleam7
-rw-r--r--src/glv8_ffi.mjs6
-rw-r--r--test/glv8/plv8_test.gleam8
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))
}