| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-02-24 14:33:55 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-02-24 14:34:24 UTC |
| parent | e0c152c8211e9bc2eec1aed21166ddf8b4d8c5ff |
| Makefile | +5 | -0 |
| npm/package.json | +9 | -0 |
| npm/persistence.ts | +0 | -1 |
| optional-sqlite-types.awk | +27 | -0 |
| optional-sqlite.awk | +37 | -0 |
diff --git a/Makefile b/Makefile index 92e5dc7..6aadff7 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,11 @@ npm/borogove-browser.js: haxe browserjs.hxml sed -i '/;var $$hx_exports = typeof exports != "undefined" ? exports : globalThis;/{N;N;N;d;}' npm/borogove-browser.js sed -i 's/^$$hx_exports[^=]*=\(.*\);$$/export {\1 };/g' npm/borogove-browser.js + cd npm && npx cjstoesm borogove-browser.js + awk -f optional-sqlite.awk npm/borogove-browser.js + mv npm/browser-no-sqlite.js npm/borogove-browser.js + awk -f optional-sqlite-types.awk npm/borogove-browser.d.ts + mv npm/no-sqlite.d.ts npm/borogove-browser.d.ts npm/borogove.js: haxe nodejs.hxml diff --git a/npm/package.json b/npm/package.json index bda6ec3..78a2b7a 100644 --- a/npm/package.json +++ b/npm/package.json @@ -13,6 +13,10 @@ "browser": { "./borogove.js": "./borogove-browser.js" }, + "exports": { + ".": "./index.js", + "./sqlite-wasm": "./sqlite-wasm.js" + }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -23,6 +27,11 @@ "@xmpp/debug": "^0.14.0", "@xmpp/sasl-scram-sha-1": "^0.14.0" }, + "peerDependenciesMeta": { + "@sqlite.org/sqlite-wasm": { + "optional": true + } + }, "devDependencies": { "typescript": "^5.4.5" } diff --git a/npm/persistence.ts b/npm/persistence.ts index 04070da..abb67fe 100644 --- a/npm/persistence.ts +++ b/npm/persistence.ts @@ -3,7 +3,6 @@ export { default as MediaStoreCache } from "./MediaStoreCache.js"; export { borogove_persistence_Dummy as Dummy, - borogove_persistence_Sqlite as Sqlite, } from "./borogove.js"; export type { borogove_persistence_KeyValueStore as KeyValueStore, diff --git a/optional-sqlite-types.awk b/optional-sqlite-types.awk new file mode 100644 index 0000000..9f8301a --- /dev/null +++ b/optional-sqlite-types.awk @@ -0,0 +1,27 @@ +/^export class borogove_persistence_Sqlite implements borogove_persistence_KeyValueStore, borogove_Persistence[[:space:]]*\{/ { + inside = 1 + brace_count = 0 + + n = gsub(/\{/, "{") + brace_count += n + n = gsub(/\}/, "}") + brace_count -= n + + print >> "npm/sqlite-wasm.d.ts" + next +} + +inside { + print >> "npm/sqlite-wasm.d.ts" + + n = gsub(/\{/, "{") + brace_count += n + n = gsub(/\}/, "}") + brace_count -= n + + if (brace_count == 0) inside = 0 + + next +} + +{ print > "npm/no-sqlite.d.ts" } diff --git a/optional-sqlite.awk b/optional-sqlite.awk new file mode 100644 index 0000000..a7a3d47 --- /dev/null +++ b/optional-sqlite.awk @@ -0,0 +1,37 @@ +BEGIN { + skipping = 0 + extra = 0 +} + +/^import \{ sqlite3Worker1Promiser as borogove_persistence_Worker1 \} from "@sqlite\.org\/sqlite-wasm";/ { + print > "npm/sqlite-wasm.js" + print "var $global = globalThis;" >> "npm/sqlite-wasm.js" + next +} + +/^class borogove_persistence_Sqlite {/ { + skipping = 1 +} + +/borogove_persistence_SqliteDriver.__name__ = "borogove\.persistence\.SqliteDriver";/ { + if (skipping) extra = 6 +} + +/^export \{ borogove_persistence_Sqlite \};/ { + print >> "npm/sqlite-wasm.js" + next +} + +skipping { + print >> "npm/sqlite-wasm.js" + + if (extra > 0) { + extra-- + if (extra == 0) skipping = 0 + } + next +} + +{ + print > "npm/browser-no-sqlite.js" +}