diff --git a/README.md b/README.md index 9ec8990..6ceda3f 100644 --- a/README.md +++ b/README.md @@ -103,34 +103,6 @@ sqlite3InitModule({ }); ``` -## Usage with the bundled `SQLiteClient` (with OPFS if available): - -> **Warning** -> -> For this to work, you need to set the following headers on your server: -> -> `Cross-Origin-Opener-Policy: same-origin` -> -> `Cross-Origin-Embedder-Policy: require-corp` - -Import the `@sqlite.org/sqlite-wasm` library in your code and use it as such: - -```js -import { SqliteClient } from '@sqlite.org/sqlite-wasm'; - -// Must correspond to the path in your final deployed build. -const sqliteWorkerPath = 'assets/js/sqlite-worker.js'; -// This is the name of your database. It corresponds to the path in the OPFS. -const filename = '/test.sqlite3'; - -const sqlite = new SqliteClient(filename, sqliteWorkerPath); -await sqlite.init(); - -await sqlite.executeSql('CREATE TABLE IF NOT EXISTS test(a,b)'); -await sqlite.executeSql('INSERT INTO test VALUES(?, ?)', [6, 7]); -const results = await sqlite.executeSql('SELECT * FROM test'); -``` - ## Usage with vite If you are using [vite](https://vitejs.dev/), you need to add the following diff --git a/bin/index.js b/bin/index.js index 96e9e95..d420400 100644 --- a/bin/index.js +++ b/bin/index.js @@ -38,14 +38,6 @@ async function main() { const sqliteWasmLink = await getSqliteWasmDownloadLink(); await downloadAndUnzipSqliteWasm(sqliteWasmLink); try { - fs.copyFileSync( - './node_modules/comlink/dist/esm/comlink.mjs', - './src/comlink.mjs', - ); - fs.copyFileSync( - './node_modules/comlink/dist/esm/comlink.mjs.map', - './src/comlink.mjs.map', - ); fs.copyFileSync( './node_modules/module-workers-polyfill/module-workers-polyfill.min.js', './demo/module-workers-polyfill.min.js', diff --git a/demo/comlink.js b/demo/comlink.js deleted file mode 100644 index f008b4a..0000000 --- a/demo/comlink.js +++ /dev/null @@ -1,19 +0,0 @@ -import { SqliteClient } from '/src/sqlite-client.mjs'; - -const sqliteClient = new SqliteClient('/db.sqlite3', '/src/sqlite-worker.mjs'); - -await sqliteClient.init(); - -await sqliteClient.executeSql('CREATE TABLE IF NOT EXISTS t(a,b)'); - -for (let i = 20; i <= 25; ++i) { - await sqliteClient.executeSql('INSERT INTO t(a,b) VALUES (?,?)', [i, i * 2]); -} - -const rows = await sqliteClient.executeSql( - 'SELECT a FROM t ORDER BY a LIMIT 3', -); - -document.querySelector('.comlink').innerHTML = rows - .map((row) => row.a) - .join('
'); diff --git a/demo/index.html b/demo/index.html index b2aa2fc..b71d4f2 100644 --- a/demo/index.html +++ b/demo/index.html @@ -5,7 +5,6 @@ SQLite Wasm Demo -

SQLite Wasm Demo

@@ -13,7 +12,5 @@

Main thread

Worker

-

Main thread using Worker via Comlink

- diff --git a/index.d.ts b/index.d.ts index 0ab194c..55ba0d7 100644 --- a/index.d.ts +++ b/index.d.ts @@ -8025,17 +8025,3 @@ declare type CAPI = { SQLITE_FAIL: 3; SQLITE_REPLACE: 5; }; - -export class SqliteClient { - dbFile: string; - sqliteWorkerPath: string; - - constructor(dFile: string, sqliteWorkerPath: string); - - init(): Promise; - - executeSql( - sqlStatement: string, - bindParameters: SqlValue[], - ): Promise; -} diff --git a/index.mjs b/index.mjs index aa4fb56..0365b54 100644 --- a/index.mjs +++ b/index.mjs @@ -1,4 +1,3 @@ import { default as sqlite3InitModule } from './sqlite-wasm/jswasm/sqlite3-bundler-friendly.mjs'; export default sqlite3InitModule; -export * from './src/sqlite-client.mjs'; diff --git a/package-lock.json b/package-lock.json index 69cfa6d..fcb205b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sqlite.org/sqlite-wasm", - "version": "3.43.2-prebuild1", + "version": "3.43.2-build1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@sqlite.org/sqlite-wasm", - "version": "3.43.2-prebuild1", + "version": "3.43.2-build1", "license": "Apache-2.0", "bin": { "sqlite-wasm": "bin/index.js" @@ -21,9 +21,6 @@ "prettier-plugin-jsdoc": "^1.1.1", "publint": "^0.2.4", "shx": "^0.3.4" - }, - "optionalDependencies": { - "comlink": "^4.4.1" } }, "node_modules/@types/debug": { @@ -299,12 +296,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/comlink": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", - "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==", - "optional": true - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", diff --git a/package.json b/package.json index 573a9ac..2161c4d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sqlite.org/sqlite-wasm", - "version": "3.43.2-prebuild1", + "version": "3.43.2-build1", "description": "SQLite Wasm conveniently wrapped as an ES Module.", "keywords": [ "sqlite", @@ -18,8 +18,7 @@ "files": [ "index.d.ts", "index.mjs", - "sqlite-wasm/", - "src/" + "sqlite-wasm/" ], "types": "index.d.ts", "exports": { @@ -27,13 +26,10 @@ "types": "./index.d.ts", "import": "./index.mjs", "main": "./index.mjs", - "browser": "./index.mjs", - "types": "./index.d.ts" + "browser": "./index.mjs" }, - "./src/comlink.mjs": "./src/comlink.mjs", "./package.json": "./package.json" }, - "types": "./index.d.ts", "bin": { "sqlite-wasm": "bin/index.js" }, @@ -66,8 +62,5 @@ "publint": "^0.2.4", "prettier-plugin-jsdoc": "^1.1.1", "shx": "^0.3.4" - }, - "optionalDependencies": { - "comlink": "^4.4.1" } } diff --git a/src/comlink.mjs b/src/comlink.mjs deleted file mode 100644 index 7aab6ec..0000000 --- a/src/comlink.mjs +++ /dev/null @@ -1,368 +0,0 @@ -/** @license Copyright 2019 Google LLC SPDX-License-Identifier: Apache-2.0 */ -const proxyMarker = Symbol('Comlink.proxy'); -const createEndpoint = Symbol('Comlink.endpoint'); -const releaseProxy = Symbol('Comlink.releaseProxy'); -const finalizer = Symbol('Comlink.finalizer'); -const throwMarker = Symbol('Comlink.thrown'); -const isObject = (val) => - (typeof val === 'object' && val !== null) || typeof val === 'function'; -/** Internal transfer handle to handle objects marked to proxy. */ -const proxyTransferHandler = { - canHandle: (val) => isObject(val) && val[proxyMarker], - serialize(obj) { - const { port1, port2 } = new MessageChannel(); - expose(obj, port1); - return [port2, [port2]]; - }, - deserialize(port) { - port.start(); - return wrap(port); - }, -}; -/** Internal transfer handler to handle thrown exceptions. */ -const throwTransferHandler = { - canHandle: (value) => isObject(value) && throwMarker in value, - serialize({ value }) { - let serialized; - if (value instanceof Error) { - serialized = { - isError: true, - value: { - message: value.message, - name: value.name, - stack: value.stack, - }, - }; - } else { - serialized = { isError: false, value }; - } - return [serialized, []]; - }, - deserialize(serialized) { - if (serialized.isError) { - throw Object.assign( - new Error(serialized.value.message), - serialized.value, - ); - } - throw serialized.value; - }, -}; -/** Allows customizing the serialization of certain values. */ -const transferHandlers = new Map([ - ['proxy', proxyTransferHandler], - ['throw', throwTransferHandler], -]); -function isAllowedOrigin(allowedOrigins, origin) { - for (const allowedOrigin of allowedOrigins) { - if (origin === allowedOrigin || allowedOrigin === '*') { - return true; - } - if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) { - return true; - } - } - return false; -} -function expose(obj, ep = globalThis, allowedOrigins = ['*']) { - ep.addEventListener('message', function callback(ev) { - if (!ev || !ev.data) { - return; - } - if (!isAllowedOrigin(allowedOrigins, ev.origin)) { - console.warn(`Invalid origin '${ev.origin}' for comlink proxy`); - return; - } - const { id, type, path } = Object.assign({ path: [] }, ev.data); - const argumentList = (ev.data.argumentList || []).map(fromWireValue); - let returnValue; - try { - const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj); - const rawValue = path.reduce((obj, prop) => obj[prop], obj); - switch (type) { - case 'GET' /* MessageType.GET */: - { - returnValue = rawValue; - } - break; - case 'SET' /* MessageType.SET */: - { - parent[path.slice(-1)[0]] = fromWireValue(ev.data.value); - returnValue = true; - } - break; - case 'APPLY' /* MessageType.APPLY */: - { - returnValue = rawValue.apply(parent, argumentList); - } - break; - case 'CONSTRUCT' /* MessageType.CONSTRUCT */: - { - const value = new rawValue(...argumentList); - returnValue = proxy(value); - } - break; - case 'ENDPOINT' /* MessageType.ENDPOINT */: - { - const { port1, port2 } = new MessageChannel(); - expose(obj, port2); - returnValue = transfer(port1, [port1]); - } - break; - case 'RELEASE' /* MessageType.RELEASE */: - { - returnValue = undefined; - } - break; - default: - return; - } - } catch (value) { - returnValue = { value, [throwMarker]: 0 }; - } - Promise.resolve(returnValue) - .catch((value) => { - return { value, [throwMarker]: 0 }; - }) - .then((returnValue) => { - const [wireValue, transferables] = toWireValue(returnValue); - ep.postMessage( - Object.assign(Object.assign({}, wireValue), { id }), - transferables, - ); - if (type === 'RELEASE' /* MessageType.RELEASE */) { - // detach and deactive after sending release response above. - ep.removeEventListener('message', callback); - closeEndPoint(ep); - if (finalizer in obj && typeof obj[finalizer] === 'function') { - obj[finalizer](); - } - } - }) - .catch((error) => { - // Send Serialization Error To Caller - const [wireValue, transferables] = toWireValue({ - value: new TypeError('Unserializable return value'), - [throwMarker]: 0, - }); - ep.postMessage( - Object.assign(Object.assign({}, wireValue), { id }), - transferables, - ); - }); - }); - if (ep.start) { - ep.start(); - } -} -function isMessagePort(endpoint) { - return endpoint.constructor.name === 'MessagePort'; -} -function closeEndPoint(endpoint) { - if (isMessagePort(endpoint)) endpoint.close(); -} -function wrap(ep, target) { - return createProxy(ep, [], target); -} -function throwIfProxyReleased(isReleased) { - if (isReleased) { - throw new Error('Proxy has been released and is not useable'); - } -} -function releaseEndpoint(ep) { - return requestResponseMessage(ep, { - type: 'RELEASE' /* MessageType.RELEASE */, - }).then(() => { - closeEndPoint(ep); - }); -} -const proxyCounter = new WeakMap(); -const proxyFinalizers = - 'FinalizationRegistry' in globalThis && - new FinalizationRegistry((ep) => { - const newCount = (proxyCounter.get(ep) || 0) - 1; - proxyCounter.set(ep, newCount); - if (newCount === 0) { - releaseEndpoint(ep); - } - }); -function registerProxy(proxy, ep) { - const newCount = (proxyCounter.get(ep) || 0) + 1; - proxyCounter.set(ep, newCount); - if (proxyFinalizers) { - proxyFinalizers.register(proxy, ep, proxy); - } -} -function unregisterProxy(proxy) { - if (proxyFinalizers) { - proxyFinalizers.unregister(proxy); - } -} -function createProxy(ep, path = [], target = function () {}) { - let isProxyReleased = false; - const proxy = new Proxy(target, { - get(_target, prop) { - throwIfProxyReleased(isProxyReleased); - if (prop === releaseProxy) { - return () => { - unregisterProxy(proxy); - releaseEndpoint(ep); - isProxyReleased = true; - }; - } - if (prop === 'then') { - if (path.length === 0) { - return { then: () => proxy }; - } - const r = requestResponseMessage(ep, { - type: 'GET' /* MessageType.GET */, - path: path.map((p) => p.toString()), - }).then(fromWireValue); - return r.then.bind(r); - } - return createProxy(ep, [...path, prop]); - }, - set(_target, prop, rawValue) { - throwIfProxyReleased(isProxyReleased); - // FIXME: ES6 Proxy Handler `set` methods are supposed to return a - // boolean. To show good will, we return true asynchronously ¯\_(ツ)_/¯ - const [value, transferables] = toWireValue(rawValue); - return requestResponseMessage( - ep, - { - type: 'SET' /* MessageType.SET */, - path: [...path, prop].map((p) => p.toString()), - value, - }, - transferables, - ).then(fromWireValue); - }, - apply(_target, _thisArg, rawArgumentList) { - throwIfProxyReleased(isProxyReleased); - const last = path[path.length - 1]; - if (last === createEndpoint) { - return requestResponseMessage(ep, { - type: 'ENDPOINT' /* MessageType.ENDPOINT */, - }).then(fromWireValue); - } - // We just pretend that `bind()` didn’t happen. - if (last === 'bind') { - return createProxy(ep, path.slice(0, -1)); - } - const [argumentList, transferables] = processArguments(rawArgumentList); - return requestResponseMessage( - ep, - { - type: 'APPLY' /* MessageType.APPLY */, - path: path.map((p) => p.toString()), - argumentList, - }, - transferables, - ).then(fromWireValue); - }, - construct(_target, rawArgumentList) { - throwIfProxyReleased(isProxyReleased); - const [argumentList, transferables] = processArguments(rawArgumentList); - return requestResponseMessage( - ep, - { - type: 'CONSTRUCT' /* MessageType.CONSTRUCT */, - path: path.map((p) => p.toString()), - argumentList, - }, - transferables, - ).then(fromWireValue); - }, - }); - registerProxy(proxy, ep); - return proxy; -} -function myFlat(arr) { - return Array.prototype.concat.apply([], arr); -} -function processArguments(argumentList) { - const processed = argumentList.map(toWireValue); - return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))]; -} -const transferCache = new WeakMap(); -function transfer(obj, transfers) { - transferCache.set(obj, transfers); - return obj; -} -function proxy(obj) { - return Object.assign(obj, { [proxyMarker]: true }); -} -function windowEndpoint(w, context = globalThis, targetOrigin = '*') { - return { - postMessage: (msg, transferables) => - w.postMessage(msg, targetOrigin, transferables), - addEventListener: context.addEventListener.bind(context), - removeEventListener: context.removeEventListener.bind(context), - }; -} -function toWireValue(value) { - for (const [name, handler] of transferHandlers) { - if (handler.canHandle(value)) { - const [serializedValue, transferables] = handler.serialize(value); - return [ - { - type: 'HANDLER' /* WireValueType.HANDLER */, - name, - value: serializedValue, - }, - transferables, - ]; - } - } - return [ - { - type: 'RAW' /* WireValueType.RAW */, - value, - }, - transferCache.get(value) || [], - ]; -} -function fromWireValue(value) { - switch (value.type) { - case 'HANDLER' /* WireValueType.HANDLER */: - return transferHandlers.get(value.name).deserialize(value.value); - case 'RAW' /* WireValueType.RAW */: - return value.value; - } -} -function requestResponseMessage(ep, msg, transfers) { - return new Promise((resolve) => { - const id = generateUUID(); - ep.addEventListener('message', function l(ev) { - if (!ev.data || !ev.data.id || ev.data.id !== id) { - return; - } - ep.removeEventListener('message', l); - resolve(ev.data); - }); - if (ep.start) { - ep.start(); - } - ep.postMessage(Object.assign({ id }, msg), transfers); - }); -} -function generateUUID() { - return new Array(4) - .fill(0) - .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)) - .join('-'); -} - -export { - createEndpoint, - expose, - finalizer, - proxy, - proxyMarker, - releaseProxy, - transfer, - transferHandlers, - windowEndpoint, - wrap, -}; -//# sourceMappingURL=comlink.mjs.map diff --git a/src/comlink.mjs.map b/src/comlink.mjs.map deleted file mode 100644 index 5f7c34a..0000000 --- a/src/comlink.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"comlink.mjs","sources":["../../src/comlink.ts"],"sourcesContent":[null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/sqlite-client.mjs b/src/sqlite-client.mjs deleted file mode 100644 index 36c2d1f..0000000 --- a/src/sqlite-client.mjs +++ /dev/null @@ -1,66 +0,0 @@ -import * as Comlink from './comlink.mjs'; - -export class SqliteClient { - sqliteWorker; - - dbFile = ''; - sqliteWorkerPath = ''; - rowMode = 'object'; - - constructor(dbFile, sqliteWorkerPath, rowMode) { - if (typeof dbFile !== 'string') { - throw new Error( - `The 'dbFile' parameter passed to the 'SqliteClient' constructor must be of type 'string'. Instead, you passed: '${typeof dbFile}'.`, - ); - } - - if (typeof sqliteWorkerPath !== 'string') { - throw new Error( - `The 'sqliteWorkerPath' parameter passed to the 'SqliteClient' constructor must be of type 'string'. Instead, you passed: '${typeof sqliteWorkerPath}'.`, - ); - } - - this.dbFile = dbFile; - this.sqliteWorkerPath = sqliteWorkerPath; - if (rowMode && rowMode !== 'array' && rowMode !== 'object') { - throw new Error('Invalid rowMode'); - } - this.rowMode = rowMode || this.rowMode; - } - - async init() { - const SqliteWorker = Comlink.wrap( - new Worker(this.sqliteWorkerPath, { - type: 'module', - }), - ); - - this.sqliteWorker = await new SqliteWorker(); - - await this.sqliteWorker.init(this.dbFile, this.rowMode); - } - - async executeSql(sqlStatement, bindParameters = []) { - if (typeof sqlStatement !== 'string') { - throw new Error( - `The 'sqlStatement' parameter passed to the 'executeSql' method of the 'SqliteClient' must be of type 'string'. Instead, you passed: '${typeof sqlStatement}'.`, - ); - } - - if (!Array.isArray(bindParameters)) { - throw new Error( - `The 'bindParameters' parameter passed to the 'executeSql' method of the 'SqliteClient' must be of type 'array'. Instead, you passed: '${typeof bindParameters}'.`, - ); - } - - return new Promise(async (resolve) => { - await this.sqliteWorker.executeSql( - sqlStatement, - bindParameters, - Comlink.proxy((rows) => { - return resolve(rows); - }), - ); - }); - } -} diff --git a/src/sqlite-worker.mjs b/src/sqlite-worker.mjs deleted file mode 100644 index d20b6a2..0000000 --- a/src/sqlite-worker.mjs +++ /dev/null @@ -1,43 +0,0 @@ -import * as Comlink from './comlink.mjs'; -import { default as sqlite3InitModule } from '../index.mjs'; - -const log = (...args) => console.log(...args); -const error = (...args) => console.error(...args); - -class SqliteWorker { - db; - rowMode = 'object'; - init(dbFile, rowMode) { - if (rowMode && rowMode !== 'array' && rowMode !== 'object') { - throw new Error('Invalid rowMode'); - } - this.rowMode = rowMode || this.rowMode; - return new Promise((resolve) => { - sqlite3InitModule({ - print: log, - printErr: error, - }).then((sqlite3) => { - try { - this.db = new sqlite3.oo1.OpfsDb(dbFile); - } catch (err) { - error(err.name, err.message); - } - - return resolve(); - }); - }); - } - - executeSql(sqlStatement, bindParameters, callback) { - return callback( - this.db.exec({ - sql: sqlStatement, - bind: bindParameters, - returnValue: 'resultRows', - rowMode: this.rowMode, - }), - ); - } -} - -Comlink.expose(SqliteWorker);