diff --git a/apps/electron/forge.config.js b/apps/electron/forge.config.js index 0da54795fa..d24a1332ed 100644 --- a/apps/electron/forge.config.js +++ b/apps/electron/forge.config.js @@ -49,6 +49,7 @@ module.exports = { { name: '@electron-forge/maker-dmg', config: { + format: 'ULFO', icon: icnsPath, name: 'AFFiNE', 'icon-size': 128, diff --git a/apps/electron/layers/main/src/data/sqlite.ts b/apps/electron/layers/main/src/data/sqlite.ts index eda93d7d9c..f955878596 100644 --- a/apps/electron/layers/main/src/data/sqlite.ts +++ b/apps/electron/layers/main/src/data/sqlite.ts @@ -1,15 +1,13 @@ import path from 'node:path'; +import type { Database } from 'better-sqlite3'; +import sqlite from 'better-sqlite3'; import fs from 'fs-extra'; -import type { Database } from 'sqlite3'; -import sqlite3Default from 'sqlite3'; import * as Y from 'yjs'; import { logger } from '../../../logger'; import type { AppContext } from '../context'; -const sqlite3 = sqlite3Default.verbose(); - const schemas = [ `CREATE TABLE IF NOT EXISTS "updates" ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -23,8 +21,6 @@ const schemas = [ )`, ]; -sqlite3.verbose(); - interface UpdateRow { id: number; data: Buffer; @@ -38,14 +34,14 @@ interface BlobRow { } export class WorkspaceDatabase { - sqliteDB$: Promise; + sqliteDB: Database; ydoc = new Y.Doc(); _db: Database | null = null; ready: Promise; constructor(public path: string) { - this.sqliteDB$ = this.reconnectDB(); + this.sqliteDB = this.reconnectDB(); logger.log('open db', path); this.ydoc.on('update', update => { @@ -67,29 +63,21 @@ export class WorkspaceDatabase { this.ydoc.destroy(); }; - reconnectDB = async () => { + reconnectDB = () => { logger.log('open db', this.path); if (this._db) { - const _db = this._db; - await new Promise(res => - _db.close(() => { - res(); - }) - ); + this._db.close(); } - return (this.sqliteDB$ = new Promise(res => { - // use cached version? - const db = new sqlite3.Database(this.path, error => { - if (error) { - logger.error('open db error', error); - } - }); - this._db = db; - - db.exec(schemas.join(';'), () => { - res(db); - }); - })); + // use cached version? + const db = sqlite(this.path); + // const db = new sqlite.Database(this.path, error => { + // if (error) { + // logger.error('open db error', error); + // } + // }); + this._db = db; + db.exec(schemas.join(';')); + return db; }; getEncodedDocUpdates = () => { @@ -106,100 +94,75 @@ export class WorkspaceDatabase { // yjs-idb will always trim the db for the first time after DB is loaded }; - addBlob = async (key: string, data: Uint8Array) => { - const db = await this.sqliteDB$; - return new Promise((resolve, reject) => { - db.run( - 'INSERT INTO blobs (key, data) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET data = ?', - [key, data, data], - err => { - if (err) { - logger.error('addBlob', err); - reject(err); - } else { - resolve(); - } - } + addBlob = (key: string, data: Uint8Array) => { + try { + const statement = this.sqliteDB.prepare( + 'INSERT INTO blobs (key, data) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET data = ?' ); - }); + statement.run(key, data, data); + } catch (error) { + logger.error('addBlob', error); + } }; - getBlob = async (key: string) => { - const db = await this.sqliteDB$; - return new Promise((resolve, reject) => { - db.get( - 'SELECT data FROM blobs WHERE key = ?', - [key], - (err, row) => { - if (err) { - logger.error('getBlob', err); - reject(err); - } else if (!row) { - logger.error('getBlob', 'not found'); - resolve(null); - } else { - resolve(row.data); - } - } + getBlob = (key: string) => { + try { + const statement = this.sqliteDB.prepare( + 'SELECT data FROM blobs WHERE key = ?' ); - }); + const row = statement.get(key) as BlobRow; + if (!row) { + return null; + } + return row.data; + } catch (error) { + logger.error('getBlob', error); + return null; + } }; - deleteBlob = async (key: string) => { - const db = await this.sqliteDB$; - return new Promise((resolve, reject) => { - db.run('DELETE FROM blobs WHERE key = ?', [key], err => { - if (err) { - logger.error('deleteBlob', err); - reject(err); - } else { - resolve(); - } - }); - }); + deleteBlob = (key: string) => { + try { + const statement = this.sqliteDB.prepare( + 'DELETE FROM blobs WHERE key = ?' + ); + statement.run(key); + } catch (error) { + logger.error('deleteBlob', error); + } }; - getPersistentBlobKeys = async () => { - const db = await this.sqliteDB$; - return new Promise((resolve, reject) => { - db.all('SELECT key FROM blobs', (err, rows) => { - if (err) { - logger.error('getPersistentBlobKeys', err); - reject(err); - } else { - resolve(rows.map(row => row.key)); - } - }); - }); + getPersistentBlobKeys = () => { + try { + const statement = this.sqliteDB.prepare('SELECT key FROM blobs'); + const rows = statement.all() as BlobRow[]; + return rows.map(row => row.key); + } catch (error) { + logger.error('getPersistentBlobKeys', error); + return []; + } }; - private getUpdates = async () => { - const db = await this.sqliteDB$; - return new Promise<{ id: number; data: any }[]>((resolve, reject) => { - // do we need to order by id? - db.all('SELECT * FROM updates', (err, rows) => { - if (err) { - logger.error('getUpdates', err); - reject(err); - } else { - resolve(rows); - } - }); - }); + private getUpdates = () => { + try { + const statement = this.sqliteDB.prepare('SELECT * FROM updates'); + const rows = statement.all() as UpdateRow[]; + return rows; + } catch (error) { + logger.error('getUpdates', error); + return []; + } }; - private addUpdateToSQLite = async (data: Uint8Array) => { - const db = await this.sqliteDB$; - return new Promise((resolve, reject) => { - db.run('INSERT INTO updates (data) VALUES (?)', [data], err => { - if (err) { - logger.error('addUpdateToSQLite', err); - reject(err); - } else { - resolve(); - } - }); - }); + private addUpdateToSQLite = (data: Uint8Array) => { + try { + const statement = this.sqliteDB.prepare( + 'INSERT INTO updates (data) VALUES (?)' + ); + statement.run(data); + } catch (error) { + logger.error('addUpdateToSQLite', error); + } }; } diff --git a/apps/electron/layers/main/src/data/workspace.ts b/apps/electron/layers/main/src/data/workspace.ts index 4c70d85fc5..75a094db88 100644 --- a/apps/electron/layers/main/src/data/workspace.ts +++ b/apps/electron/layers/main/src/data/workspace.ts @@ -2,11 +2,17 @@ import path from 'node:path'; import fs from 'fs-extra'; +import { logger } from '../../../logger'; import type { AppContext } from '../context'; export async function listWorkspaces(context: AppContext) { const basePath = path.join(context.appDataPath, 'workspaces'); - return fs.readdir(basePath); + try { + return fs.readdir(basePath); + } catch (error) { + logger.error('listWorkspaces', error); + return []; + } } export async function deleteWorkspace(context: AppContext, id: string) { @@ -16,5 +22,9 @@ export async function deleteWorkspace(context: AppContext, id: string) { 'delete-workspaces', `${id}` ); - return fs.move(basePath, movedPath); + try { + return fs.move(basePath, movedPath); + } catch (error) { + logger.error('deleteWorkspace', error); + } } diff --git a/apps/electron/package.json b/apps/electron/package.json index e7ecb74f1e..48a9e8fdeb 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -14,7 +14,8 @@ "make-macos-arm64": "electron-forge make --platform=darwin --arch=arm64", "make-macos-x64": "electron-forge make --platform=darwin --arch=x64", "make-windows-x64": "electron-forge make --platform=win32 --arch=x64", - "make-linux-x64": "electron-forge make --platform=linux --arch=x64" + "make-linux-x64": "electron-forge make --platform=linux --arch=x64", + "electron-rebuild": "electron-rebuild" }, "config": { "forge": "./forge.config.js" @@ -31,20 +32,21 @@ "@electron-forge/shared-types": "^6.1.1", "@electron/rebuild": "^3.2.12", "@electron/remote": "2.0.9", + "@types/better-sqlite3": "^7.6.4", "@types/fs-extra": "^11.0.1", "cross-env": "7.0.3", "dts-for-context-bridge": "^0.7.1", "electron": "24.1.2", + "electron-log": "^5.0.0-beta.22", "electron-squirrel-startup": "1.0.0", + "electron-window-state": "^5.0.3", "esbuild": "^0.17.17", + "fs-extra": "^11.1.1", + "undici": "^5.21.2", "zx": "^7.2.1" }, "dependencies": { - "electron-log": "^5.0.0-beta.22", - "electron-window-state": "^5.0.3", - "fs-extra": "^11.1.1", - "sqlite3": "^5.1.6", - "undici": "^5.21.2", + "better-sqlite3": "^8.3.0", "yjs": "^13.5.53" }, "build": { diff --git a/apps/electron/scripts/common.mjs b/apps/electron/scripts/common.mjs index 0ae7225e50..fbae63ae5e 100644 --- a/apps/electron/scripts/common.mjs +++ b/apps/electron/scripts/common.mjs @@ -28,7 +28,7 @@ export default () => { bundle: true, target: `node${NODE_MAJOR_VERSION}`, platform: 'node', - external: ['electron', 'sqlite3'], + external: ['electron', 'yjs', 'better-sqlite3'], plugins: [nativeNodeModulesPlugin], define: define, }, diff --git a/yarn.lock b/yarn.lock index 6252e5e06a..3e635475b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -122,7 +122,9 @@ __metadata: "@electron-forge/shared-types": ^6.1.1 "@electron/rebuild": ^3.2.12 "@electron/remote": 2.0.9 + "@types/better-sqlite3": ^7.6.4 "@types/fs-extra": ^11.0.1 + better-sqlite3: ^8.3.0 cross-env: 7.0.3 dts-for-context-bridge: ^0.7.1 electron: 24.1.2 @@ -131,7 +133,6 @@ __metadata: electron-window-state: ^5.0.3 esbuild: ^0.17.17 fs-extra: ^11.1.1 - sqlite3: ^5.1.6 undici: ^5.21.2 yjs: ^13.5.53 zx: ^7.2.1 @@ -3870,7 +3871,7 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": +"@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 @@ -4606,25 +4607,6 @@ __metadata: languageName: node linkType: hard -"@mapbox/node-pre-gyp@npm:^1.0.0": - version: 1.0.10 - resolution: "@mapbox/node-pre-gyp@npm:1.0.10" - dependencies: - detect-libc: ^2.0.0 - https-proxy-agent: ^5.0.0 - make-dir: ^3.1.0 - node-fetch: ^2.6.7 - nopt: ^5.0.0 - npmlog: ^5.0.1 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.11 - bin: - node-pre-gyp: bin/node-pre-gyp - checksum: 1a98db05d955b74dad3814679593df293b9194853698f3f5f1ed00ecd93128cdd4b14fb8767fe44ac6981ef05c23effcfdc88710e7c1de99ccb6f647890597c8 - languageName: node - linkType: hard - "@mdx-js/react@npm:^2.1.5": version: 2.3.0 resolution: "@mdx-js/react@npm:2.3.0" @@ -5211,16 +5193,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 - languageName: node - linkType: hard - "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" @@ -5231,16 +5203,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 - languageName: node - linkType: hard - "@npmcli/move-file@npm:^2.0.0": version: 2.0.1 resolution: "@npmcli/move-file@npm:2.0.1" @@ -7634,13 +7596,6 @@ __metadata: languageName: unknown linkType: soft -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -7755,6 +7710,15 @@ __metadata: languageName: node linkType: hard +"@types/better-sqlite3@npm:^7.6.4": + version: 7.6.4 + resolution: "@types/better-sqlite3@npm:7.6.4" + dependencies: + "@types/node": "*" + checksum: 75ab00d31b56437cc65fe15ff673cf8d1609edca52628083921bcbab1cbd828d135a2859fb4e68af8ef5a4801705ba99d54b96499f997bce65dd306ade3dbe58 + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.2 resolution: "@types/body-parser@npm:1.19.2" @@ -9091,7 +9055,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": +"agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" dependencies: @@ -9847,6 +9811,17 @@ __metadata: languageName: node linkType: hard +"better-sqlite3@npm:^8.3.0": + version: 8.3.0 + resolution: "better-sqlite3@npm:8.3.0" + dependencies: + bindings: ^1.5.0 + node-gyp: latest + prebuild-install: ^7.1.0 + checksum: 00fc9f12058d2d157f56fe57b0f5c8ba705aee22a1dfe33ef8f60755531eda8f809cdb2377af314f6ed9396ad036094576e0596649bd6ca5bcaec172613e2dc9 + languageName: node + linkType: hard + "big-integer@npm:^1.6.44": version: 1.6.51 resolution: "big-integer@npm:1.6.51" @@ -9868,6 +9843,15 @@ __metadata: languageName: node linkType: hard +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: 1.0.0 + checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 + languageName: node + linkType: hard + "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -10157,32 +10141,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 - infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 - unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 - languageName: node - linkType: hard - "cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -12161,7 +12119,7 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.12, encoding@npm:^0.1.13": +"encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -13067,6 +13025,13 @@ __metadata: languageName: node linkType: hard +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 + languageName: node + linkType: hard + "expand-tilde@npm:^1.2.2": version: 1.2.2 resolution: "expand-tilde@npm:1.2.2" @@ -13369,6 +13334,13 @@ __metadata: languageName: node linkType: hard +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + languageName: node + linkType: hard + "filelist@npm:^1.0.1": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -14144,6 +14116,13 @@ __metadata: languageName: node linkType: hard +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 + languageName: node + linkType: hard + "github-slugger@npm:^1.0.0": version: 1.5.0 resolution: "github-slugger@npm:1.5.0" @@ -14787,17 +14766,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -17385,7 +17353,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -17425,30 +17393,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.2.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 - languageName: node - linkType: hard - "makeerror@npm:1.0.12": version: 1.0.12 resolution: "makeerror@npm:1.0.12" @@ -17768,7 +17712,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.1, minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7, minimist@npm:^1.2.8, minimist@npm:~1.2.5": +"minimist@npm:^1.1.1, minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7, minimist@npm:^1.2.8, minimist@npm:~1.2.5": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -17784,21 +17728,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 - languageName: node - linkType: hard - "minipass-fetch@npm:^2.0.3": version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" @@ -17823,7 +17752,7 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": +"minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -17841,7 +17770,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: @@ -17857,7 +17786,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -17867,7 +17796,7 @@ __metadata: languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2": +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac @@ -18052,6 +17981,13 @@ __metadata: languageName: node linkType: hard +"napi-build-utils@npm:^1.0.1": + version: 1.0.2 + resolution: "napi-build-utils@npm:1.0.2" + checksum: 06c14271ee966e108d55ae109f340976a9556c8603e888037145d6522726aebe89dd0c861b4b83947feaf6d39e79e08817559e8693deedc2c94e82c5cbd090c7 + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -18066,7 +18002,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 @@ -18195,6 +18131,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.3.0": + version: 3.40.0 + resolution: "node-abi@npm:3.40.0" + dependencies: + semver: ^7.3.5 + checksum: 8f4ef0d9ac82352465e7e7a8ce3915dae49c0fd19d6cb49a93140ff587b612166443531111a60d25e479a18e6e6b9af09698c7870babe0f44aa54287aeaf5eef + languageName: node + linkType: hard + "node-abort-controller@npm:^3.1.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" @@ -18202,15 +18147,6 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^4.2.0": - version: 4.3.0 - resolution: "node-addon-api@npm:4.3.0" - dependencies: - node-gyp: latest - checksum: 3de396e23cc209f539c704583e8e99c148850226f6e389a641b92e8967953713228109f919765abc1f4355e801e8f41842f96210b8d61c7dcc10a477002dcf00 - languageName: node - linkType: hard - "node-api-version@npm:^0.1.4": version: 0.1.4 resolution: "node-api-version@npm:0.1.4" @@ -18282,26 +18218,6 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:8.x": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 - languageName: node - linkType: hard - "node-gyp@npm:^9.0.0, node-gyp@npm:latest": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" @@ -18365,17 +18281,6 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: 1 - bin: - nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -19304,6 +19209,28 @@ __metadata: languageName: node linkType: hard +"prebuild-install@npm:^7.1.0": + version: 7.1.1 + resolution: "prebuild-install@npm:7.1.1" + dependencies: + detect-libc: ^2.0.0 + expand-template: ^2.0.3 + github-from-package: 0.0.0 + minimist: ^1.2.3 + mkdirp-classic: ^0.5.3 + napi-build-utils: ^1.0.1 + node-abi: ^3.3.0 + pump: ^3.0.0 + rc: ^1.2.7 + simple-get: ^4.0.0 + tar-fs: ^2.0.0 + tunnel-agent: ^0.6.0 + bin: + prebuild-install: bin.js + checksum: dbf96d0146b6b5827fc8f67f72074d2e19c69628b9a7a0a17d0fad1bf37e9f06922896972e074197fc00a52eae912993e6ef5a0d471652f561df5cb516f3f467 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -19772,7 +19699,7 @@ __metadata: languageName: node linkType: hard -"rc@npm:^1.0.1, rc@npm:^1.1.6": +"rc@npm:^1.0.1, rc@npm:^1.1.6, rc@npm:^1.2.7": version: 1.2.8 resolution: "rc@npm:1.2.8" dependencies: @@ -21116,6 +21043,24 @@ __metadata: languageName: node linkType: hard +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a + languageName: node + linkType: hard + +"simple-get@npm:^4.0.0": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: ^6.0.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: e4132fd27cf7af230d853fa45c1b8ce900cb430dd0a3c6d3829649fe4f2b26574c803698076c4006450efb0fad2ba8c5455fbb5755d4b0a5ec42d4f12b31d27e + languageName: node + linkType: hard + "simple-git@npm:^3.15.0": version: 3.17.0 resolution: "simple-git@npm:3.17.0" @@ -21229,17 +21174,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -21415,35 +21349,6 @@ __metadata: languageName: node linkType: hard -"sqlite3@npm:^5.1.6": - version: 5.1.6 - resolution: "sqlite3@npm:5.1.6" - dependencies: - "@mapbox/node-pre-gyp": ^1.0.0 - node-addon-api: ^4.2.0 - node-gyp: 8.x - tar: ^6.1.11 - peerDependencies: - node-gyp: 8.x - dependenciesMeta: - node-gyp: - optional: true - peerDependenciesMeta: - node-gyp: - optional: true - checksum: ea640628843e37a63dfb4bd2c8429dbd7aab845c1a8204574dca3aac61486ab65bc0abfd99b48f1cead1f783171c6111c0cc4115335d5b95bb0b4eb44db162d5 - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 - languageName: node - linkType: hard - "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -22028,7 +21933,7 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.1.1": +"tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1": version: 2.1.1 resolution: "tar-fs@npm:2.1.1" dependencies: @@ -22053,7 +21958,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.13, tar@npm:^6.1.2": +"tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.13, tar@npm:^6.1.2": version: 6.1.13 resolution: "tar@npm:6.1.13" dependencies: @@ -22531,6 +22436,15 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + "turndown@npm:^7.1.1": version: 7.1.2 resolution: "turndown@npm:7.1.2" @@ -22828,15 +22742,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 - languageName: node - linkType: hard - "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -22846,15 +22751,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0"