From 40dd9be2019cd96e4a0923198d28dd4110731432 Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Wed, 3 Sep 2025 17:12:34 +0400 Subject: [PATCH 1/2] introduce package.json for separate *-browser package (both database and sync) --- .github/workflows/napi-sync.yml | 6 ++- .github/workflows/napi.yml | 6 ++- bindings/javascript/.gitignore | 2 + bindings/javascript/Makefile | 25 ++++++++++ bindings/javascript/package.browser.json | 59 ++++++++++++++++++++++++ sync/javascript/.gitignore | 2 + sync/javascript/Makefile | 25 ++++++++++ sync/javascript/package.browser.json | 57 +++++++++++++++++++++++ 8 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 bindings/javascript/Makefile create mode 100644 bindings/javascript/package.browser.json create mode 100644 sync/javascript/Makefile create mode 100644 sync/javascript/package.browser.json diff --git a/.github/workflows/napi-sync.yml b/.github/workflows/napi-sync.yml index 0baf85878..c7ec1e6ce 100644 --- a/.github/workflows/napi-sync.yml +++ b/.github/workflows/napi-sync.yml @@ -172,11 +172,13 @@ jobs: if git log -1 --pretty=%B | grep "^Turso [0-9]\+\.[0-9]\+\.[0-9]\+$"; then echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - npm publish --access public + make publish-native + make publish-browser elif git log -1 --pretty=%B | grep "^Turso [0-9]\+\.[0-9]\+\.[0-9]\+"; then echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - npm publish --tag next --access public + make publish-native-next + make publish-browser-next else echo "Not a release, skipping publish" fi diff --git a/.github/workflows/napi.yml b/.github/workflows/napi.yml index 2aa8fbf04..dcf15138c 100644 --- a/.github/workflows/napi.yml +++ b/.github/workflows/napi.yml @@ -172,11 +172,13 @@ jobs: if git log -1 --pretty=%B | grep "^Turso [0-9]\+\.[0-9]\+\.[0-9]\+$"; then echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - npm publish --access public + make publish-native + make publish-browser elif git log -1 --pretty=%B | grep "^Turso [0-9]\+\.[0-9]\+\.[0-9]\+"; then echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - npm publish --tag next --access public + make publish-native-next + make publish-browser-next else echo "Not a release, skipping publish" fi diff --git a/bindings/javascript/.gitignore b/bindings/javascript/.gitignore index b2a0e5629..02f979110 100644 --- a/bindings/javascript/.gitignore +++ b/bindings/javascript/.gitignore @@ -196,3 +196,5 @@ Cargo.lock *.node *.wasm + +package.native.json diff --git a/bindings/javascript/Makefile b/bindings/javascript/Makefile new file mode 100644 index 000000000..1baa316c2 --- /dev/null +++ b/bindings/javascript/Makefile @@ -0,0 +1,25 @@ +pack-native: + npm publish --dry-run + npm pack +pack-browser: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --dry-run + npm pack + cp package.native.json package.json + +publish-native: + npm publish --access public +publish-browser: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --access public + cp package.native.json package.json + +publish-native-next: + npm publish --tag next --access public +publish-browser-next: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --tag next --access public + cp package.native.json package.json diff --git a/bindings/javascript/package.browser.json b/bindings/javascript/package.browser.json new file mode 100644 index 000000000..17c958879 --- /dev/null +++ b/bindings/javascript/package.browser.json @@ -0,0 +1,59 @@ +{ + "name": "@tursodatabase/database-browser", + "version": "0.1.5-pre.2", + "repository": { + "type": "git", + "url": "https://github.com/tursodatabase/turso" + }, + "description": "The Turso database library specifically for browser/web environment", + "module": "./dist/promise.js", + "main": "./dist/promise.js", + "type": "module", + "exports": { + ".": "./dist/promise.js", + "./compat": "./dist/compat.js" + }, + "files": [ + "browser.js", + "index.js", + "index.d.ts", + "dist/**" + ], + "types": "index.d.ts", + "napi": { + "binaryName": "turso", + "targets": [ + "wasm32-wasip1-threads" + ] + }, + "license": "MIT", + "devDependencies": { + "@napi-rs/cli": "^3.0.4", + "@napi-rs/wasm-runtime": "^1.0.1", + "ava": "^6.0.1", + "better-sqlite3": "^11.9.1", + "typescript": "^5.9.2" + }, + "ava": { + "timeout": "3m" + }, + "engines": { + "node": ">= 10" + }, + "scripts": { + "artifacts": "napi artifacts", + "build": "npm exec tsc && napi build --platform --release --esm", + "build:debug": "npm exec tsc && napi build --platform", + "prepublishOnly": "npm exec tsc && napi prepublish -t npm", + "test": "true", + "universal": "napi universalize", + "version": "napi version" + }, + "packageManager": "yarn@4.9.2", + "imports": { + "#entry-point": { + "types": "./index.d.ts", + "browser": "./browser.js" + } + } +} diff --git a/sync/javascript/.gitignore b/sync/javascript/.gitignore index adc8d7dbc..dc7770d6a 100644 --- a/sync/javascript/.gitignore +++ b/sync/javascript/.gitignore @@ -134,3 +134,5 @@ Cargo.lock *-draft *-synced *-info + +package.native.json diff --git a/sync/javascript/Makefile b/sync/javascript/Makefile new file mode 100644 index 000000000..1baa316c2 --- /dev/null +++ b/sync/javascript/Makefile @@ -0,0 +1,25 @@ +pack-native: + npm publish --dry-run + npm pack +pack-browser: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --dry-run + npm pack + cp package.native.json package.json + +publish-native: + npm publish --access public +publish-browser: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --access public + cp package.native.json package.json + +publish-native-next: + npm publish --tag next --access public +publish-browser-next: + cp package.json package.native.json + cp package.browser.json package.json + npm publish --tag next --access public + cp package.native.json package.json diff --git a/sync/javascript/package.browser.json b/sync/javascript/package.browser.json new file mode 100644 index 000000000..0019b8a9d --- /dev/null +++ b/sync/javascript/package.browser.json @@ -0,0 +1,57 @@ +{ + "name": "@tursodatabase/sync-browser", + "version": "0.1.5-pre.2", + "repository": { + "type": "git", + "url": "https://github.com/tursodatabase/turso" + }, + "description": "Sync engine for the Turso database library specifically for browser/web environment", + "module": "./dist/sync_engine.js", + "main": "./dist/sync_engine.js", + "type": "module", + "exports": "./dist/sync_engine.js", + "files": [ + "browser.js", + "dist/**" + ], + "types": "./dist/sync_engine.d.ts", + "napi": { + "binaryName": "turso-sync-js", + "targets": [ + "wasm32-wasip1-threads" + ] + }, + "license": "MIT", + "devDependencies": { + "@napi-rs/cli": "^3.0.4", + "@napi-rs/wasm-runtime": "^1.0.1", + "@types/node": "^24.2.0", + "ava": "^6.0.1", + "typescript": "^5.9.2" + }, + "ava": { + "timeout": "3m" + }, + "engines": { + "node": ">= 10" + }, + "scripts": { + "artifacts": "napi artifacts", + "build": "npm exec tsc && napi build --platform --release --esm", + "build:debug": "npm exec tsc && napi build --platform", + "prepublishOnly": "npm exec tsc && napi prepublish -t npm", + "test": "true", + "universal": "napi universalize", + "version": "napi version" + }, + "packageManager": "yarn@4.9.2", + "imports": { + "#entry-point": { + "types": "./index.d.ts", + "browser": "./browser.js" + } + }, + "dependencies": { + "@tursodatabase/database": "~0.1.4-pre.5" + } +} \ No newline at end of file From 185392fb9dc5e0b2c42cc20516bcf22a97b22441 Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Wed, 3 Sep 2025 17:26:36 +0400 Subject: [PATCH 2/2] skip optional packages publish as they will be published for native package --- bindings/javascript/Makefile | 13 ++++--------- bindings/javascript/package.browser.json | 2 +- sync/javascript/Makefile | 13 ++++--------- sync/javascript/package.browser.json | 4 ++-- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/bindings/javascript/Makefile b/bindings/javascript/Makefile index 1baa316c2..9bca855b1 100644 --- a/bindings/javascript/Makefile +++ b/bindings/javascript/Makefile @@ -1,25 +1,20 @@ pack-native: - npm publish --dry-run - npm pack + npm publish --dry-run && npm pack pack-browser: cp package.json package.native.json cp package.browser.json package.json - npm publish --dry-run - npm pack - cp package.native.json package.json + npm publish --dry-run && npm pack; cp package.native.json package.json publish-native: npm publish --access public publish-browser: cp package.json package.native.json cp package.browser.json package.json - npm publish --access public - cp package.native.json package.json + npm publish --access public; cp package.native.json package.json publish-native-next: npm publish --tag next --access public publish-browser-next: cp package.json package.native.json cp package.browser.json package.json - npm publish --tag next --access public - cp package.native.json package.json + npm publish --tag next --access public; cp package.native.json package.json diff --git a/bindings/javascript/package.browser.json b/bindings/javascript/package.browser.json index 17c958879..0242ed5ad 100644 --- a/bindings/javascript/package.browser.json +++ b/bindings/javascript/package.browser.json @@ -44,7 +44,7 @@ "artifacts": "napi artifacts", "build": "npm exec tsc && napi build --platform --release --esm", "build:debug": "npm exec tsc && napi build --platform", - "prepublishOnly": "npm exec tsc && napi prepublish -t npm", + "prepublishOnly": "npm exec tsc && napi prepublish -t npm --skip-optional-publish", "test": "true", "universal": "napi universalize", "version": "napi version" diff --git a/sync/javascript/Makefile b/sync/javascript/Makefile index 1baa316c2..9bca855b1 100644 --- a/sync/javascript/Makefile +++ b/sync/javascript/Makefile @@ -1,25 +1,20 @@ pack-native: - npm publish --dry-run - npm pack + npm publish --dry-run && npm pack pack-browser: cp package.json package.native.json cp package.browser.json package.json - npm publish --dry-run - npm pack - cp package.native.json package.json + npm publish --dry-run && npm pack; cp package.native.json package.json publish-native: npm publish --access public publish-browser: cp package.json package.native.json cp package.browser.json package.json - npm publish --access public - cp package.native.json package.json + npm publish --access public; cp package.native.json package.json publish-native-next: npm publish --tag next --access public publish-browser-next: cp package.json package.native.json cp package.browser.json package.json - npm publish --tag next --access public - cp package.native.json package.json + npm publish --tag next --access public; cp package.native.json package.json diff --git a/sync/javascript/package.browser.json b/sync/javascript/package.browser.json index 0019b8a9d..beddc6066 100644 --- a/sync/javascript/package.browser.json +++ b/sync/javascript/package.browser.json @@ -39,7 +39,7 @@ "artifacts": "napi artifacts", "build": "npm exec tsc && napi build --platform --release --esm", "build:debug": "npm exec tsc && napi build --platform", - "prepublishOnly": "npm exec tsc && napi prepublish -t npm", + "prepublishOnly": "npm exec tsc && napi prepublish -t npm --skip-optional-publish", "test": "true", "universal": "napi universalize", "version": "napi version" @@ -54,4 +54,4 @@ "dependencies": { "@tursodatabase/database": "~0.1.4-pre.5" } -} \ No newline at end of file +}