mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-08 09:44:21 +01:00
Begin adding nodejs/web to a single npm package
Update build script to build both Update package.json Add basic test of node variant of npm package.
This commit is contained in:
1
bindings/wasm/.gitignore
vendored
1
bindings/wasm/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
node_modules/
|
||||
*.wasm
|
||||
dist/
|
||||
|
||||
19
bindings/wasm/integration-tests/package-lock.json
generated
19
bindings/wasm/integration-tests/package-lock.json
generated
@@ -7,15 +7,30 @@
|
||||
"name": "limbo-wasm-integration-tests",
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^11.7.0",
|
||||
"limbo-wasm": "../pkg"
|
||||
"limbo-wasm": "../dist/"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "^6.2.0"
|
||||
}
|
||||
},
|
||||
"../dist": {
|
||||
"version": "0.0.11",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.49.1",
|
||||
"@vitest/ui": "^2.1.8",
|
||||
"happy-dom": "^16.3.0",
|
||||
"playwright": "^1.49.1",
|
||||
"vite": "^6.0.7",
|
||||
"vite-plugin-wasm": "^3.4.1",
|
||||
"vitest": "^2.1.8",
|
||||
"wasm-pack": "^0.13.1"
|
||||
}
|
||||
},
|
||||
"../pkg": {
|
||||
"name": "limbo-wasm",
|
||||
"version": "0.0.10",
|
||||
"extraneous": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@isaacs/cliui": {
|
||||
@@ -1363,7 +1378,7 @@
|
||||
}
|
||||
},
|
||||
"node_modules/limbo-wasm": {
|
||||
"resolved": "../pkg",
|
||||
"resolved": "../dist",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/load-json-file": {
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test": "PROVIDER=better-sqlite3 ava tests/test.js && PROVIDER=limbo-wasm ava tests/test.js && rm *.db *.db-wal"
|
||||
"test": "PROVIDER=better-sqlite3 npx ava tests/test.js && PROVIDER=limbo-wasm npx ava tests/test.js && rm *.db *.db-wal"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "^6.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^11.7.0",
|
||||
"limbo-wasm": "../pkg"
|
||||
"limbo-wasm": "../dist/"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ test.beforeEach(async (t) => {
|
||||
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)
|
||||
`);
|
||||
db.exec(
|
||||
"INSERT INTO users (id, name, email) VALUES (1, 'Alice', 'alice@example.org')"
|
||||
"INSERT INTO users (id, name, email) VALUES (1, 'Alice', 'alice@example.org')",
|
||||
);
|
||||
db.exec(
|
||||
"INSERT INTO users (id, name, email) VALUES (2, 'Bob', 'bob@example.com')"
|
||||
"INSERT INTO users (id, name, email) VALUES (2, 'Bob', 'bob@example.com')",
|
||||
);
|
||||
t.context = {
|
||||
db,
|
||||
errorType,
|
||||
provider
|
||||
provider,
|
||||
};
|
||||
});
|
||||
|
||||
@@ -35,7 +35,9 @@ test.serial("Statement.raw().get()", async (t) => {
|
||||
|
||||
const stmt = db.prepare("SELECT * FROM users");
|
||||
const expected = [
|
||||
1, "Alice", "alice@example.org"
|
||||
1,
|
||||
"Alice",
|
||||
"alice@example.org",
|
||||
];
|
||||
t.deepEqual(stmt.raw().get(), expected);
|
||||
|
||||
@@ -54,13 +56,13 @@ test.serial("Statement.raw().iterate()", async (t) => {
|
||||
];
|
||||
|
||||
let iter = stmt.raw().iterate();
|
||||
t.is(typeof iter[Symbol.iterator], 'function');
|
||||
t.deepEqual(iter.next(), expected[0])
|
||||
t.deepEqual(iter.next(), expected[1])
|
||||
t.deepEqual(iter.next(), expected[2])
|
||||
t.is(typeof iter[Symbol.iterator], "function");
|
||||
t.deepEqual(iter.next(), expected[0]);
|
||||
t.deepEqual(iter.next(), expected[1]);
|
||||
t.deepEqual(iter.next(), expected[2]);
|
||||
|
||||
const emptyStmt = db.prepare("SELECT * FROM users WHERE id = -1");
|
||||
t.is(typeof emptyStmt[Symbol.iterator], 'undefined');
|
||||
t.is(typeof emptyStmt[Symbol.iterator], "undefined");
|
||||
t.throws(() => emptyStmt.next(), { instanceOf: TypeError });
|
||||
});
|
||||
|
||||
@@ -69,7 +71,7 @@ const connect = async (path_opt) => {
|
||||
const provider = process.env.PROVIDER;
|
||||
if (provider === "limbo-wasm") {
|
||||
const database = process.env.LIBSQL_DATABASE ?? path;
|
||||
const x = await import("limbo-wasm");
|
||||
const x = await import("limbo-wasm/node");
|
||||
const options = {};
|
||||
const db = new x.Database(database, options);
|
||||
return [db, x.SqliteError, provider];
|
||||
@@ -81,4 +83,5 @@ const connect = async (path_opt) => {
|
||||
return [db, x.SqliteError, provider];
|
||||
}
|
||||
throw new Error("Unknown provider: " + provider);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -9,14 +9,15 @@
|
||||
"type": "git",
|
||||
"url": "https://github.com/penberg/limbo"
|
||||
},
|
||||
"files": [
|
||||
"snippets",
|
||||
"limbo_wasm_bg.wasm",
|
||||
"limbo_wasm.js",
|
||||
"limbo_wasm.d.ts"
|
||||
],
|
||||
"main": "limbo_wasm.js",
|
||||
"types": "limbo_wasm.d.ts",
|
||||
"files": ["dist"],
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./dist/web/index.js",
|
||||
"require": "./dist/node/index.cjs"
|
||||
}
|
||||
},
|
||||
"main": "./dist/node/index.cjs",
|
||||
"types": "./dist/node/index.d.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,12 +1,30 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# get target as argument from cli, defaults to nodejs if no argument is supplied
|
||||
TARGET=${1:-nodejs}
|
||||
FEATURE="nodejs"
|
||||
# Define final output directories
|
||||
NODE_DIR="dist/node"
|
||||
WEB_DIR="dist/web"
|
||||
rm -rf dist
|
||||
rm -rf pkg
|
||||
|
||||
if [ "$TARGET" = "web" ]; then
|
||||
FEATURE="web"
|
||||
fi
|
||||
mkdir -p $NODE_DIR $WEB_DIR pkg
|
||||
|
||||
npx wasm-pack build --no-pack --target $TARGET --no-default-features --features $FEATURE
|
||||
cp package.json pkg/package.json
|
||||
# Build Node.js target
|
||||
npx wasm-pack build \
|
||||
--target nodejs \
|
||||
--out-name index \
|
||||
--no-default-features \
|
||||
--features nodejs
|
||||
mv pkg/* $NODE_DIR/
|
||||
mv $NODE_DIR/index.js $NODE_DIR/index.cjs
|
||||
rm -r pkg
|
||||
|
||||
# Build web target
|
||||
npx wasm-pack build \
|
||||
--target web \
|
||||
--out-name index \
|
||||
--no-default-features \
|
||||
--features web
|
||||
mv pkg/* $WEB_DIR/
|
||||
cp src/opfs.js $WEB_DIR/
|
||||
rm -r pkg
|
||||
|
||||
1
bindings/wasm/test-limbo-pkg/.gitignore
vendored
Normal file
1
bindings/wasm/test-limbo-pkg/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
test.db
|
||||
11
bindings/wasm/test-limbo-pkg/index.js
Normal file
11
bindings/wasm/test-limbo-pkg/index.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// import { Database } from "limbo-wasm/node";
|
||||
|
||||
const { Database } = require("limbo-wasm");
|
||||
// Rest of your code...
|
||||
|
||||
const db = new Database("test.db");
|
||||
db.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
|
||||
db.exec("INSERT INTO users (name) VALUES ('test')");
|
||||
|
||||
const stmt = db.prepare("SELECT * FROM users");
|
||||
console.log(stmt.all());
|
||||
50
bindings/wasm/test-limbo-pkg/package-lock.json
generated
Normal file
50
bindings/wasm/test-limbo-pkg/package-lock.json
generated
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "test-limbo",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "test-limbo",
|
||||
"dependencies": {
|
||||
"limbo-wasm": "file:../"
|
||||
}
|
||||
},
|
||||
"..": {
|
||||
"version": "0.0.11",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.49.1",
|
||||
"@vitest/ui": "^2.1.8",
|
||||
"happy-dom": "^16.3.0",
|
||||
"playwright": "^1.49.1",
|
||||
"vite": "^6.0.7",
|
||||
"vite-plugin-wasm": "^3.4.1",
|
||||
"vitest": "^2.1.8",
|
||||
"wasm-pack": "^0.13.1"
|
||||
}
|
||||
},
|
||||
"../dist": {
|
||||
"name": "limbo-wasm",
|
||||
"version": "0.0.11",
|
||||
"extraneous": true,
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.49.1",
|
||||
"@vitest/ui": "^2.1.8",
|
||||
"happy-dom": "^16.3.0",
|
||||
"playwright": "^1.49.1",
|
||||
"vite": "^6.0.7",
|
||||
"vite-plugin-wasm": "^3.4.1",
|
||||
"vitest": "^2.1.8",
|
||||
"wasm-pack": "^0.13.1"
|
||||
}
|
||||
},
|
||||
"../limbo-wasm": {
|
||||
"extraneous": true
|
||||
},
|
||||
"node_modules/limbo-wasm": {
|
||||
"resolved": "..",
|
||||
"link": true
|
||||
}
|
||||
}
|
||||
}
|
||||
8
bindings/wasm/test-limbo-pkg/package.json
Normal file
8
bindings/wasm/test-limbo-pkg/package.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "test-limbo",
|
||||
"private": true,
|
||||
"type": "commonjs",
|
||||
"dependencies": {
|
||||
"limbo-wasm": "file:../"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user