diff --git a/.github/workflows/npm-release.yaml b/.github/workflows/npm-release.yaml index 222eb13..37dbcc2 100644 --- a/.github/workflows/npm-release.yaml +++ b/.github/workflows/npm-release.yaml @@ -67,7 +67,7 @@ jobs: - name: Install Playwright browsers with dependencies run: | - cd svelte-test + cd packages/ui npx playwright install --with-deps - name: Test full integration @@ -103,7 +103,7 @@ jobs: NEW_NPM_VERSION=$(npm --prefix pkg version patch --no-git-tag-version) NEW_VERSION=${NEW_NPM_VERSION#v} echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - for manifest in packages/sqlite-web/Cargo.toml packages/sqlite-web-core/Cargo.toml; do + for manifest in crates/sqlite-web/Cargo.toml crates/sqlite-web-core/Cargo.toml; do sed -i.bak "s/^version = \".*\"/version = \"$NEW_VERSION\"/" "$manifest" rm "$manifest".bak done @@ -131,7 +131,7 @@ jobs: - name: Commit And Tag if: ${{ env.OLD_HASH != env.NEW_HASH }} run: | - git add pkg/package.json packages/sqlite-web/Cargo.toml packages/sqlite-web-core/Cargo.toml + git add pkg/package.json crates/sqlite-web/Cargo.toml crates/sqlite-web-core/Cargo.toml git commit -m "NPM Package Release v${{ env.NEW_VERSION }}" git tag npm-v${{ env.NEW_VERSION }} diff --git a/.github/workflows/test-ui.yaml b/.github/workflows/test-ui.yaml index 9a8995c..ae2d75d 100644 --- a/.github/workflows/test-ui.yaml +++ b/.github/workflows/test-ui.yaml @@ -42,12 +42,12 @@ jobs: - name: Install Playwright browsers with dependencies run: | - cd svelte-test + cd packages/ui npx playwright install --with-deps - run: nix develop -c test-ui - name: Frontend linting and formatting run: | - cd svelte-test + cd packages/ui npm run lint-format-check \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2bc3426..db15761 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ !pkg/package.json !pkg/.gitignore # Generated files from bundle.sh -packages/sqlite-web/src/embedded_worker.js +crates/sqlite-web/src/embedded_worker.js pkg/sqlite_web_bg.wasm.b64 # macOS diff --git a/.vscode/settings.json b/.vscode/settings.json index a91360b..02a4dfc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,8 +5,8 @@ "rust-analyzer.cargo.target": "wasm32-unknown-unknown", "rust-analyzer.linkedProjects": [ "./Cargo.toml", - "./packages/sqlite-web-core/Cargo.toml", - "./packages/sqlite-web/Cargo.toml", + "./crates/sqlite-web-core/Cargo.toml", + "./crates/sqlite-web/Cargo.toml", "./lib/rain.math.float/Cargo.toml" ], "[rust]": { diff --git a/CLAUDE.md b/CLAUDE.md index 268fd90..bb0d41a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,26 +12,26 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co 4. Packages with `npm pack` and updates Svelte test integration ### Individual Package Builds -- `cd packages/sqlite-web-core && wasm-pack build --target web --out-dir ../../pkg` -- `cd packages/sqlite-web && wasm-pack build --target web --out-dir ../../pkg` +- `cd crates/sqlite-web-core && wasm-pack build --target web --out-dir ../../pkg` +- `cd crates/sqlite-web && wasm-pack build --target web --out-dir ../../pkg` ### Testing - `./test.sh` - Run all Rust WASM tests (both packages) -- `cd packages/sqlite-web-core && wasm-pack test --headless --chrome` - Test core package only -- `cd packages/sqlite-web && wasm-pack test --headless --chrome` - Test worker package only +- `cd crates/sqlite-web-core && wasm-pack test --headless --chrome` - Test core package only +- `cd crates/sqlite-web && wasm-pack test --headless --chrome` - Test worker package only -### Svelte Test App -- `cd svelte-test && bun dev` - Start development server -- `cd svelte-test && bun build` - Production build -- `cd svelte-test && bun run check` - TypeScript checking with svelte-check +### UI App +- `cd packages/ui && bun dev` - Start development server +- `cd packages/ui && bun build` - Production build +- `cd packages/ui && bun run check` - TypeScript checking with svelte-check ## Project Architecture -This is a **Rust WebAssembly SQLite Worker** project with a workspace architecture consisting of two main packages and a Svelte test application. +This is a **Rust WebAssembly SQLite Worker** project with a workspace architecture consisting of two main crates and a Svelte UI application. ### Core Components -#### 1. `packages/sqlite-web-core/` +#### 1. `crates/sqlite-web-core/` - **Purpose**: Core SQLite functionality and worker implementation - **Key modules**: - `worker.rs` - Main worker entry point called by `worker_main()` @@ -42,7 +42,7 @@ This is a **Rust WebAssembly SQLite Worker** project with a workspace architectu - **Dependencies**: sqlite-wasm-rs, alloy (Ethereum tooling), rain-math-float - **Output**: WASM module with JS glue code -#### 2. `packages/sqlite-web/` +#### 2. `crates/sqlite-web/` - **Purpose**: Public API that creates self-contained workers with embedded core - **Key files**: - `lib.rs` - `SQLiteWasmDatabase` struct with async query interface @@ -56,7 +56,7 @@ This is a **Rust WebAssembly SQLite Worker** project with a workspace architectu - **Integration**: Custom functions accessible from SQLite via `database_functions.rs` - **Architecture**: Solidity-compatible decimal float operations with Rust/WASM bindings -#### 4. `svelte-test/` +#### 4. `packages/ui/` - **Purpose**: Integration test and example usage - **Technology**: SvelteKit + TypeScript + Vite - **Pattern**: Imports `sqlite-web` package from local tarball @@ -66,7 +66,7 @@ This is a **Rust WebAssembly SQLite Worker** project with a workspace architectu 1. **Core Build**: `sqlite-web-core` compiled to WASM + JS glue 2. **Embedding**: WASM converted to base64 and embedded into JavaScript template 3. **Wrapper Build**: `sqlite-web` compiled with embedded worker generator -4. **Packaging**: NPM package created and integrated into Svelte test +4. **Packaging**: NPM package created and integrated into UI app ### Key Design Patterns diff --git a/Cargo.toml b/Cargo.toml index 26f8653..56139fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] members = [ - "packages/sqlite-web-core", - "packages/sqlite-web" + "crates/sqlite-web-core", + "crates/sqlite-web" ] exclude = [ "lib/rain.math.float" diff --git a/packages/sqlite-web-core/Cargo.toml b/crates/sqlite-web-core/Cargo.toml similarity index 100% rename from packages/sqlite-web-core/Cargo.toml rename to crates/sqlite-web-core/Cargo.toml diff --git a/packages/sqlite-web-core/src/coordination.rs b/crates/sqlite-web-core/src/coordination.rs similarity index 100% rename from packages/sqlite-web-core/src/coordination.rs rename to crates/sqlite-web-core/src/coordination.rs diff --git a/packages/sqlite-web-core/src/database.rs b/crates/sqlite-web-core/src/database.rs similarity index 100% rename from packages/sqlite-web-core/src/database.rs rename to crates/sqlite-web-core/src/database.rs diff --git a/packages/sqlite-web-core/src/database_functions/bigint_sum.rs b/crates/sqlite-web-core/src/database_functions/bigint_sum.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/bigint_sum.rs rename to crates/sqlite-web-core/src/database_functions/bigint_sum.rs diff --git a/packages/sqlite-web-core/src/database_functions/float_is_zero.rs b/crates/sqlite-web-core/src/database_functions/float_is_zero.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/float_is_zero.rs rename to crates/sqlite-web-core/src/database_functions/float_is_zero.rs diff --git a/packages/sqlite-web-core/src/database_functions/float_negate.rs b/crates/sqlite-web-core/src/database_functions/float_negate.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/float_negate.rs rename to crates/sqlite-web-core/src/database_functions/float_negate.rs diff --git a/packages/sqlite-web-core/src/database_functions/float_sum.rs b/crates/sqlite-web-core/src/database_functions/float_sum.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/float_sum.rs rename to crates/sqlite-web-core/src/database_functions/float_sum.rs diff --git a/packages/sqlite-web-core/src/database_functions/float_zero_hex.rs b/crates/sqlite-web-core/src/database_functions/float_zero_hex.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/float_zero_hex.rs rename to crates/sqlite-web-core/src/database_functions/float_zero_hex.rs diff --git a/packages/sqlite-web-core/src/database_functions/mod.rs b/crates/sqlite-web-core/src/database_functions/mod.rs similarity index 100% rename from packages/sqlite-web-core/src/database_functions/mod.rs rename to crates/sqlite-web-core/src/database_functions/mod.rs diff --git a/packages/sqlite-web-core/src/lib.rs b/crates/sqlite-web-core/src/lib.rs similarity index 100% rename from packages/sqlite-web-core/src/lib.rs rename to crates/sqlite-web-core/src/lib.rs diff --git a/packages/sqlite-web-core/src/messages.rs b/crates/sqlite-web-core/src/messages.rs similarity index 100% rename from packages/sqlite-web-core/src/messages.rs rename to crates/sqlite-web-core/src/messages.rs diff --git a/packages/sqlite-web-core/src/util.rs b/crates/sqlite-web-core/src/util.rs similarity index 100% rename from packages/sqlite-web-core/src/util.rs rename to crates/sqlite-web-core/src/util.rs diff --git a/packages/sqlite-web-core/src/worker.rs b/crates/sqlite-web-core/src/worker.rs similarity index 100% rename from packages/sqlite-web-core/src/worker.rs rename to crates/sqlite-web-core/src/worker.rs diff --git a/packages/sqlite-web/Cargo.toml b/crates/sqlite-web/Cargo.toml similarity index 100% rename from packages/sqlite-web/Cargo.toml rename to crates/sqlite-web/Cargo.toml diff --git a/packages/sqlite-web/src/db.rs b/crates/sqlite-web/src/db.rs similarity index 100% rename from packages/sqlite-web/src/db.rs rename to crates/sqlite-web/src/db.rs diff --git a/packages/sqlite-web/src/errors.rs b/crates/sqlite-web/src/errors.rs similarity index 100% rename from packages/sqlite-web/src/errors.rs rename to crates/sqlite-web/src/errors.rs diff --git a/packages/sqlite-web/src/lib.rs b/crates/sqlite-web/src/lib.rs similarity index 100% rename from packages/sqlite-web/src/lib.rs rename to crates/sqlite-web/src/lib.rs diff --git a/packages/sqlite-web/src/messages.rs b/crates/sqlite-web/src/messages.rs similarity index 100% rename from packages/sqlite-web/src/messages.rs rename to crates/sqlite-web/src/messages.rs diff --git a/packages/sqlite-web/src/opfs.rs b/crates/sqlite-web/src/opfs.rs similarity index 91% rename from packages/sqlite-web/src/opfs.rs rename to crates/sqlite-web/src/opfs.rs index d554906..b8c1ca8 100644 --- a/packages/sqlite-web/src/opfs.rs +++ b/crates/sqlite-web/src/opfs.rs @@ -18,17 +18,6 @@ pub async fn delete_opfs_sahpool_directory() -> Result<(), SQLiteWasmDatabaseErr delete_directory_contents(&sahpool_dir).await?; - let remove_options = FileSystemRemoveOptions::new(); - remove_options.set_recursive(true); - JsFuture::from(root.remove_entry_with_options(SAHPOOL_DIR_NAME, &remove_options)) - .await - .map_err(|e| { - SQLiteWasmDatabaseError::OpfsDeletionFailed(format!( - "failed to remove sahpool directory: {}", - describe_js_value(&e) - )) - })?; - Ok(()) } diff --git a/packages/sqlite-web/src/params.rs b/crates/sqlite-web/src/params.rs similarity index 100% rename from packages/sqlite-web/src/params.rs rename to crates/sqlite-web/src/params.rs diff --git a/packages/sqlite-web/src/ready.rs b/crates/sqlite-web/src/ready.rs similarity index 100% rename from packages/sqlite-web/src/ready.rs rename to crates/sqlite-web/src/ready.rs diff --git a/packages/sqlite-web/src/tests.rs b/crates/sqlite-web/src/tests.rs similarity index 100% rename from packages/sqlite-web/src/tests.rs rename to crates/sqlite-web/src/tests.rs diff --git a/packages/sqlite-web/src/utils.rs b/crates/sqlite-web/src/utils.rs similarity index 100% rename from packages/sqlite-web/src/utils.rs rename to crates/sqlite-web/src/utils.rs diff --git a/packages/sqlite-web/src/worker.rs b/crates/sqlite-web/src/worker.rs similarity index 100% rename from packages/sqlite-web/src/worker.rs rename to crates/sqlite-web/src/worker.rs diff --git a/packages/sqlite-web/src/worker_template.rs b/crates/sqlite-web/src/worker_template.rs similarity index 100% rename from packages/sqlite-web/src/worker_template.rs rename to crates/sqlite-web/src/worker_template.rs diff --git a/flake.nix b/flake.nix index dbc3426..ab7b4ea 100644 --- a/flake.nix +++ b/flake.nix @@ -15,10 +15,10 @@ name = "test-wasm"; body = '' set -euxo pipefail - cd packages/sqlite-web-core + cd crates/sqlite-web-core wasm-pack test --headless --chrome cd ../.. - cd packages/sqlite-web + cd crates/sqlite-web wasm-pack test --headless --chrome cd ../.. ''; @@ -28,10 +28,10 @@ name = "build-wasm"; body = '' set -euxo pipefail - cd packages/sqlite-web-core + cd crates/sqlite-web-core wasm-pack build --target web --out-dir ../../pkg cd ../.. - cd packages/sqlite-web + cd crates/sqlite-web wasm-pack build --target web --out-dir ../../pkg cd ../.. ''; @@ -50,9 +50,9 @@ body = '' set -euxo pipefail ./scripts/local-bundle.sh - cd svelte-test + cd packages/ui npm run test - cd .. + cd ../.. ''; }; diff --git a/svelte-test/.eslintignore b/packages/ui/.eslintignore similarity index 100% rename from svelte-test/.eslintignore rename to packages/ui/.eslintignore diff --git a/svelte-test/.gitignore b/packages/ui/.gitignore similarity index 100% rename from svelte-test/.gitignore rename to packages/ui/.gitignore diff --git a/svelte-test/.npmrc b/packages/ui/.npmrc similarity index 100% rename from svelte-test/.npmrc rename to packages/ui/.npmrc diff --git a/svelte-test/README.md b/packages/ui/README.md similarity index 100% rename from svelte-test/README.md rename to packages/ui/README.md diff --git a/svelte-test/bun.lock b/packages/ui/bun.lock similarity index 99% rename from svelte-test/bun.lock rename to packages/ui/bun.lock index 2762957..101e8ca 100644 --- a/svelte-test/bun.lock +++ b/packages/ui/bun.lock @@ -2,9 +2,9 @@ "lockfileVersion": 1, "workspaces": { "": { - "name": "svelte-test", + "name": "ui", "dependencies": { - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.1.0.tgz", + "@rainlanguage/sqlite-web": "file:../../pkg/rainlanguage-sqlite-web-0.1.0.tgz", }, "devDependencies": { "@eslint/js": "^9.33.0", diff --git a/svelte-test/eslint.config.js b/packages/ui/eslint.config.js similarity index 100% rename from svelte-test/eslint.config.js rename to packages/ui/eslint.config.js diff --git a/svelte-test/package-lock.json b/packages/ui/package-lock.json similarity index 99% rename from svelte-test/package-lock.json rename to packages/ui/package-lock.json index 50fdbf1..fac6ee2 100644 --- a/svelte-test/package-lock.json +++ b/packages/ui/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "dependencies": { "@rainlanguage/float": "^0.0.0-alpha.22", - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz" + "@rainlanguage/sqlite-web": "file:../../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", @@ -913,7 +913,7 @@ }, "node_modules/@rainlanguage/sqlite-web": { "version": "0.0.1-alpha.20", - "resolved": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz", + "resolved": "file:../../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz", "integrity": "sha512-FbZSTg/UyLPWZqyktF5q+Wj7jkR1vJXE65PPpRp2E8FXGFXfz9VkAdHYWnE9ogR6JcskuqwENgepjTAE8w8zyA==" }, "node_modules/@rollup/rollup-android-arm-eabi": { diff --git a/svelte-test/package.json b/packages/ui/package.json similarity index 92% rename from svelte-test/package.json rename to packages/ui/package.json index 5a9ad8e..4e30ef4 100644 --- a/svelte-test/package.json +++ b/packages/ui/package.json @@ -1,5 +1,5 @@ { - "name": "svelte-test", + "name": "ui", "version": "0.0.1", "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", @@ -41,6 +41,6 @@ "type": "module", "dependencies": { "@rainlanguage/float": "^0.0.0-alpha.22", - "@rainlanguage/sqlite-web": "file:../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz" + "@rainlanguage/sqlite-web": "file:../../pkg/rainlanguage-sqlite-web-0.0.1-alpha.20.tgz" } } diff --git a/svelte-test/src/app.d.ts b/packages/ui/src/app.d.ts similarity index 100% rename from svelte-test/src/app.d.ts rename to packages/ui/src/app.d.ts diff --git a/svelte-test/src/app.html b/packages/ui/src/app.html similarity index 100% rename from svelte-test/src/app.html rename to packages/ui/src/app.html diff --git a/svelte-test/src/lib/assets/favicon.svg b/packages/ui/src/lib/assets/favicon.svg similarity index 100% rename from svelte-test/src/lib/assets/favicon.svg rename to packages/ui/src/lib/assets/favicon.svg diff --git a/svelte-test/src/lib/index.ts b/packages/ui/src/lib/index.ts similarity index 100% rename from svelte-test/src/lib/index.ts rename to packages/ui/src/lib/index.ts diff --git a/svelte-test/src/routes/+layout.svelte b/packages/ui/src/routes/+layout.svelte similarity index 100% rename from svelte-test/src/routes/+layout.svelte rename to packages/ui/src/routes/+layout.svelte diff --git a/svelte-test/src/routes/+page.svelte b/packages/ui/src/routes/+page.svelte similarity index 100% rename from svelte-test/src/routes/+page.svelte rename to packages/ui/src/routes/+page.svelte diff --git a/svelte-test/src/routes/sql/+page.svelte b/packages/ui/src/routes/sql/+page.svelte similarity index 100% rename from svelte-test/src/routes/sql/+page.svelte rename to packages/ui/src/routes/sql/+page.svelte diff --git a/svelte-test/static/robots.txt b/packages/ui/static/robots.txt similarity index 100% rename from svelte-test/static/robots.txt rename to packages/ui/static/robots.txt diff --git a/svelte-test/svelte.config.js b/packages/ui/svelte.config.js similarity index 100% rename from svelte-test/svelte.config.js rename to packages/ui/svelte.config.js diff --git a/svelte-test/tests/database-functions/bigint-sum.test.ts b/packages/ui/tests/database-functions/bigint-sum.test.ts similarity index 100% rename from svelte-test/tests/database-functions/bigint-sum.test.ts rename to packages/ui/tests/database-functions/bigint-sum.test.ts diff --git a/svelte-test/tests/database-functions/float-is-zero.test.ts b/packages/ui/tests/database-functions/float-is-zero.test.ts similarity index 100% rename from svelte-test/tests/database-functions/float-is-zero.test.ts rename to packages/ui/tests/database-functions/float-is-zero.test.ts diff --git a/svelte-test/tests/database-functions/float-negate.test.ts b/packages/ui/tests/database-functions/float-negate.test.ts similarity index 100% rename from svelte-test/tests/database-functions/float-negate.test.ts rename to packages/ui/tests/database-functions/float-negate.test.ts diff --git a/svelte-test/tests/database-functions/float-sum.test.ts b/packages/ui/tests/database-functions/float-sum.test.ts similarity index 100% rename from svelte-test/tests/database-functions/float-sum.test.ts rename to packages/ui/tests/database-functions/float-sum.test.ts diff --git a/svelte-test/tests/database-functions/float-zero-hex.test.ts b/packages/ui/tests/database-functions/float-zero-hex.test.ts similarity index 100% rename from svelte-test/tests/database-functions/float-zero-hex.test.ts rename to packages/ui/tests/database-functions/float-zero-hex.test.ts diff --git a/svelte-test/tests/fixtures/float-utils.ts b/packages/ui/tests/fixtures/float-utils.ts similarity index 100% rename from svelte-test/tests/fixtures/float-utils.ts rename to packages/ui/tests/fixtures/float-utils.ts diff --git a/svelte-test/tests/fixtures/test-data.sql b/packages/ui/tests/fixtures/test-data.sql similarity index 100% rename from svelte-test/tests/fixtures/test-data.sql rename to packages/ui/tests/fixtures/test-data.sql diff --git a/svelte-test/tests/fixtures/test-helpers.ts b/packages/ui/tests/fixtures/test-helpers.ts similarity index 100% rename from svelte-test/tests/fixtures/test-helpers.ts rename to packages/ui/tests/fixtures/test-helpers.ts diff --git a/svelte-test/tests/global-setup.js b/packages/ui/tests/global-setup.js similarity index 100% rename from svelte-test/tests/global-setup.js rename to packages/ui/tests/global-setup.js diff --git a/svelte-test/tests/integration/database-basic.test.ts b/packages/ui/tests/integration/database-basic.test.ts similarity index 100% rename from svelte-test/tests/integration/database-basic.test.ts rename to packages/ui/tests/integration/database-basic.test.ts diff --git a/svelte-test/tests/integration/error-handling.test.ts b/packages/ui/tests/integration/error-handling.test.ts similarity index 100% rename from svelte-test/tests/integration/error-handling.test.ts rename to packages/ui/tests/integration/error-handling.test.ts diff --git a/svelte-test/tests/integration/multi-sql-commands.test.ts b/packages/ui/tests/integration/multi-sql-commands.test.ts similarity index 100% rename from svelte-test/tests/integration/multi-sql-commands.test.ts rename to packages/ui/tests/integration/multi-sql-commands.test.ts diff --git a/svelte-test/tests/integration/opfs-persistence.test.ts b/packages/ui/tests/integration/opfs-persistence.test.ts similarity index 100% rename from svelte-test/tests/integration/opfs-persistence.test.ts rename to packages/ui/tests/integration/opfs-persistence.test.ts diff --git a/svelte-test/tests/integration/parameter-binding.test.ts b/packages/ui/tests/integration/parameter-binding.test.ts similarity index 100% rename from svelte-test/tests/integration/parameter-binding.test.ts rename to packages/ui/tests/integration/parameter-binding.test.ts diff --git a/svelte-test/tests/integration/wipe-and-recreate.test.ts b/packages/ui/tests/integration/wipe-and-recreate.test.ts similarity index 100% rename from svelte-test/tests/integration/wipe-and-recreate.test.ts rename to packages/ui/tests/integration/wipe-and-recreate.test.ts diff --git a/svelte-test/tests/integration/worker-communication.test.ts b/packages/ui/tests/integration/worker-communication.test.ts similarity index 100% rename from svelte-test/tests/integration/worker-communication.test.ts rename to packages/ui/tests/integration/worker-communication.test.ts diff --git a/svelte-test/tests/test-setup.js b/packages/ui/tests/test-setup.js similarity index 100% rename from svelte-test/tests/test-setup.js rename to packages/ui/tests/test-setup.js diff --git a/svelte-test/tsconfig.json b/packages/ui/tsconfig.json similarity index 100% rename from svelte-test/tsconfig.json rename to packages/ui/tsconfig.json diff --git a/svelte-test/vite.config.ts b/packages/ui/vite.config.ts similarity index 100% rename from svelte-test/vite.config.ts rename to packages/ui/vite.config.ts diff --git a/svelte-test/vitest.config.js b/packages/ui/vitest.config.js similarity index 100% rename from svelte-test/vitest.config.js rename to packages/ui/vitest.config.js diff --git a/pkg/package.json b/pkg/package.json index ff18cd0..881fffd 100644 --- a/pkg/package.json +++ b/pkg/package.json @@ -16,4 +16,4 @@ "sideEffects": [ "./snippets/*" ] -} +} \ No newline at end of file diff --git a/scripts/local-bundle.sh b/scripts/local-bundle.sh index 774468e..d30bcce 100755 --- a/scripts/local-bundle.sh +++ b/scripts/local-bundle.sh @@ -9,10 +9,10 @@ rm -rf pkg/*.tgz 2>/dev/null || true # Clear embedded_worker.js file contents first echo "๐Ÿงน Clearing embedded_worker.js..." -echo "" > packages/sqlite-web/src/embedded_worker.js +echo "" > crates/sqlite-web/src/embedded_worker.js echo "๐Ÿ“ฆ Step 1: Building core package with web target..." -cd packages/sqlite-web-core +cd crates/sqlite-web-core wasm-pack build --target web --out-dir ../../pkg cd ../.. @@ -29,7 +29,7 @@ base64 < pkg/sqlite_web_core_bg.wasm | tr -d '\n' > pkg/sqlite_web_core_bg.wasm. echo "๐Ÿ”ง Generating embedded worker template..." # Create the embedded worker with fetch interceptor -cat > packages/sqlite-web/src/embedded_worker.js << 'EOF' +cat > crates/sqlite-web/src/embedded_worker.js << 'EOF' (function(){ // Base64 decoder utility - works in both Node.js and browser self.__b64ToU8 = function(b64) { @@ -90,25 +90,25 @@ echo "๐Ÿ”„ Assembling final worker..." # Create the final embedded worker by combining template + JS glue + base64 substitution { # Start with the template (everything before JS_GLUE_PLACEHOLDER) - sed '/JS_GLUE_PLACEHOLDER/,$d' packages/sqlite-web/src/embedded_worker.js + sed '/JS_GLUE_PLACEHOLDER/,$d' crates/sqlite-web/src/embedded_worker.js # Add the JS glue code (convert exports to regular variables for worker context) sed 's/^export function /function /; s/^export class /class /; s/^export { initSync };/self.initSync = initSync;/; s/^export default __wbg_init;/self.wasm_bindgen = __wbg_init;/; s/import\.meta\.url/self.location.href/g' pkg/sqlite_web_core.js # Add the rest of the template (everything after JS_GLUE_PLACEHOLDER) - sed '1,/JS_GLUE_PLACEHOLDER/d' packages/sqlite-web/src/embedded_worker.js -} | awk 'BEGIN{getline b64<"pkg/sqlite_web_core_bg.wasm.b64"} {gsub(/__WASM_B64_CORE__/, b64)}1' > packages/sqlite-web/src/embedded_worker.js.final + sed '1,/JS_GLUE_PLACEHOLDER/d' crates/sqlite-web/src/embedded_worker.js +} | awk 'BEGIN{getline b64<"pkg/sqlite_web_core_bg.wasm.b64"} {gsub(/__WASM_B64_CORE__/, b64)}1' > crates/sqlite-web/src/embedded_worker.js.final # Replace the original with the final version -mv packages/sqlite-web/src/embedded_worker.js.final packages/sqlite-web/src/embedded_worker.js +mv crates/sqlite-web/src/embedded_worker.js.final crates/sqlite-web/src/embedded_worker.js -echo "โœ… Core embedding complete! Generated packages/sqlite-web/src/embedded_worker.js" +echo "โœ… Core embedding complete! Generated crates/sqlite-web/src/embedded_worker.js" echo "๐Ÿ“Š Embedded WASM size: $(wc -c < pkg/sqlite_web_core_bg.wasm.b64) base64 characters" echo "๐Ÿ“Š JS glue code lines: $(wc -l < pkg/sqlite_web_core.js)" echo "" echo "๐Ÿ“ฆ Step 2: Building main package with embedded core..." -cd packages/sqlite-web +cd crates/sqlite-web wasm-pack build --target web --out-dir ../../pkg cd ../.. @@ -122,7 +122,7 @@ else fi echo "๐Ÿ“Œ Syncing package version with Cargo manifest..." -CARGO_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' packages/sqlite-web/Cargo.toml | head -n 1) +CARGO_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' crates/sqlite-web/Cargo.toml | head -n 1) if [ -n "$CARGO_VERSION" ]; then sed -i.bak "s/\"version\": \"[^\"]*\"/\"version\": \"$CARGO_VERSION\"/" pkg/package.json rm pkg/package.json.bak @@ -139,13 +139,13 @@ cd .. # Update Svelte integration with fresh package echo "๐Ÿ”„ Updating Svelte integration..." -cd svelte-test +cd packages/ui npm pkg delete dependencies.sqlite-web 2>/dev/null || true npm pkg delete dependencies."@rainlanguage/sqlite-web" 2>/dev/null || true -npm pkg set dependencies."@rainlanguage/sqlite-web"="file:../pkg/${PACK_FILE}" +npm pkg set dependencies."@rainlanguage/sqlite-web"="file:../../pkg/${PACK_FILE}" rm -rf node_modules package-lock.json npm install -cd .. +cd ../.. echo "" echo "๐Ÿš€ Your SQLite worker is now fully self-contained with workspace architecture!"