diff --git a/bindings/wasm/.gitignore b/bindings/wasm/.gitignore index 8bbddddf2..f633a3dc2 100644 --- a/bindings/wasm/.gitignore +++ b/bindings/wasm/.gitignore @@ -1,5 +1,5 @@ node_modules/ *.wasm -dist/ +packages/ limbo-wasm*tgz claude.md diff --git a/bindings/wasm/node_package.json b/bindings/wasm/node_package.json new file mode 100644 index 000000000..6cbf4b8d5 --- /dev/null +++ b/bindings/wasm/node_package.json @@ -0,0 +1,15 @@ +{ + "name": "@limbo-wasm/node", + "version": "0.0.11", + "type": "commonjs", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": ["dist"], + "exports": { + ".": { + "require": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./snippets/*": "./dist/snippets/*" + } +} diff --git a/bindings/wasm/package-lock.json b/bindings/wasm/package-lock.json index a41e64210..995ae103f 100644 --- a/bindings/wasm/package-lock.json +++ b/bindings/wasm/package-lock.json @@ -6,8 +6,10 @@ "packages": { "": { "name": "limbo-wasm", - "version": "0.0.12", - "license": "MIT", + "version": "0.0.11", + "workspaces": [ + "packages/*" + ], "devDependencies": { "@playwright/test": "^1.49.1", "@vitest/ui": "^2.1.8", @@ -43,6 +45,14 @@ "dev": true, "license": "MIT" }, + "node_modules/@limbo-wasm/node": { + "resolved": "packages/node", + "link": true + }, + "node_modules/@limbo-wasm/web": { + "resolved": "packages/web", + "link": true + }, "node_modules/@playwright/test": { "version": "1.49.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.49.1.tgz", @@ -1452,6 +1462,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" + }, + "packages/node": { + "version": "0.0.11" + }, + "packages/web": { + "version": "0.0.11" } } } diff --git a/bindings/wasm/package.json b/bindings/wasm/package.json index d1ba81723..cf62823aa 100644 --- a/bindings/wasm/package.json +++ b/bindings/wasm/package.json @@ -1,29 +1,22 @@ { "name": "limbo-wasm", - "collaborators": [ - "the Limbo authors" + "version": "0.0.11", + "workspaces": [ + "packages/*" + ], + "files": [ + "packages" ], - "version": "0.0.12", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/penberg/limbo" - }, - "files": ["dist", "src"], "exports": { - ".": { - "import": "./dist/web/index.js", - "require": "./dist/node/index.cjs" + "./node": { + "require": "./packages/node/dist/index.js", + "types": "./packages/node/dist/index.d.ts" }, - "./src/*": "./src/*" - }, - "main": "./dist/node/index.cjs", - "types": "./dist/node/index.d.ts", - "type": "module", - "scripts": { - "dev": "vite", - "test": "vitest --sequence.shuffle=false", - "test:ui": "vitest --ui" + "./web": { + "import": "./packages/web/dist/index.js", + "types": "./packages/web/dist/index.d.ts" + }, + "./web/limbo-worker.js": "./packages/web/dist/limbo-worker.js" }, "devDependencies": { "@playwright/test": "^1.49.1", diff --git a/bindings/wasm/scripts/build b/bindings/wasm/scripts/build index 0d0260811..24f481d4e 100755 --- a/bindings/wasm/scripts/build +++ b/bindings/wasm/scripts/build @@ -2,12 +2,12 @@ set -e # Define final output directories -NODE_DIR="dist/node" -WEB_DIR="dist/web" -rm -rf dist +NODE_DIR="packages/node" +WEB_DIR="packages/web" +rm -rf packages/ rm -rf pkg -mkdir -p $NODE_DIR $WEB_DIR pkg +mkdir -p $NODE_DIR/dist $WEB_DIR/dist pkg # Build Node.js target npx wasm-pack build \ @@ -16,8 +16,7 @@ npx wasm-pack build \ --no-default-features \ --features nodejs rm -rf pkg/package.json # don't want generated package.json -mv pkg/* $NODE_DIR/ -mv $NODE_DIR/index.js $NODE_DIR/index.cjs +mv pkg/* $NODE_DIR/dist/ rm -r pkg # Build web target @@ -27,6 +26,11 @@ npx wasm-pack build \ --no-default-features \ --features web rm -rf pkg/package.json # don't want generated package.json -mv pkg/* $WEB_DIR/ -# cp src/opfs.js $WEB_DIR/ +mv pkg/* $WEB_DIR/dist/ + +cp node_package.json $NODE_DIR/package.json +cp web_package.json $WEB_DIR/package.json + +# mv $WEB_DIR/index.js $WEB_DIR/index.mjs +cp src/* $WEB_DIR/dist/ rm -r pkg diff --git a/bindings/wasm/src/limbo-worker.js b/bindings/wasm/src/limbo-worker.js index 2094cc55e..1238f0846 100644 --- a/bindings/wasm/src/limbo-worker.js +++ b/bindings/wasm/src/limbo-worker.js @@ -1,5 +1,5 @@ import { VFS } from "./opfs.js"; -import init, { Database } from "../dist/web/index.js"; +import init, { Database } from "./index.js"; let db = null; let currentStmt = null; diff --git a/bindings/wasm/test-limbo-pkg/index.html b/bindings/wasm/test-limbo-pkg/index.html index d99978031..263d54a81 100644 --- a/bindings/wasm/test-limbo-pkg/index.html +++ b/bindings/wasm/test-limbo-pkg/index.html @@ -24,7 +24,7 @@ // const worker = new Worker('./src/limbo-worker.js', { type: 'module' }); // const worker = new Worker('limbo-wasm/src/limbo-worker.js', { type: 'module' }); // const worker = new Worker('./node_modules/limbo-wasm/src/limbo-worker.js', { type: 'module' }); - const worker = new Worker(new URL('limbo-wasm/src/limbo-worker.js', import.meta.url), { type: 'module' }); + const worker = new Worker(new URL('limbo-wasm/web/limbo-worker.js', import.meta.url), { type: 'module' }); // Wait for ready then send createDb await waitForMessage(worker, 'ready'); diff --git a/bindings/wasm/test-limbo-pkg/index.js b/bindings/wasm/test-limbo-pkg/index.js index 01f653da3..205e4fea7 100644 --- a/bindings/wasm/test-limbo-pkg/index.js +++ b/bindings/wasm/test-limbo-pkg/index.js @@ -1,6 +1,6 @@ // import { Database } from "limbo-wasm/node"; -const { Database } = require("limbo-wasm"); +const { Database } = require("limbo-wasm/node"); // Rest of your code... const db = new Database("test.db"); diff --git a/bindings/wasm/test-limbo-pkg/package-lock.json b/bindings/wasm/test-limbo-pkg/package-lock.json index 6b0dd70f8..013132367 100644 --- a/bindings/wasm/test-limbo-pkg/package-lock.json +++ b/bindings/wasm/test-limbo-pkg/package-lock.json @@ -770,8 +770,10 @@ "node_modules/limbo-wasm": { "version": "0.0.11", "resolved": "file:../limbo-wasm-0.0.11.tgz", - "integrity": "sha512-9as9fkjVCXqrDKziYuGP0b4E4pEvHmf9XOtjtRE5TZsH9u7lHOekZ24ALyuO0eeaCa87Mc2yobC7LRMmISvEew==", - "license": "MIT" + "integrity": "sha512-5u2JFU1bqaiUawXD3Lkj++O4ezj+D+PAStZwqVeRu85QO7yBiLOvV3/OworAgICZC3l18jQfDuJguRXN4lLMYA==", + "workspaces": [ + "packages/*" + ] }, "node_modules/nanoid": { "version": "3.3.8", diff --git a/bindings/wasm/web_package.json b/bindings/wasm/web_package.json new file mode 100644 index 000000000..10dd46d77 --- /dev/null +++ b/bindings/wasm/web_package.json @@ -0,0 +1,14 @@ +{ + "name": "@limbo-wasm/web", + "version": "0.0.11", + "type": "module", + "main": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": ["dist"], + "exports": { + ".": { + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + } + } +}