From 6556eb55a35216e99154044732ee5123684e0463 Mon Sep 17 00:00:00 2001 From: Trent Larson Date: Sun, 25 May 2025 01:18:58 -0600 Subject: [PATCH] add the other pieces for the previous commit --- package-lock.json | 20 ++++++++++++++++++++ package.json | 2 ++ src/main.web.ts | 14 ++++++++++++++ vite.config.ts | 6 ++++++ 4 files changed, 42 insertions(+) diff --git a/package-lock.json b/package-lock.json index 74517e6d..7fa2ea91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.6", + "@jlongster/sql.js": "^1.6.7", "@peculiar/asn1-ecc": "^2.3.8", "@peculiar/asn1-schema": "^2.3.8", "@pvermeer/dexie-encrypted-addon": "^3.0.0", @@ -43,6 +44,7 @@ "@vue-leaflet/vue-leaflet": "^0.10.1", "@vueuse/core": "^12.3.0", "@zxing/text-encoding": "^0.9.0", + "absurd-sql": "^0.0.54", "asn1-ber": "^1.2.2", "axios": "^1.6.8", "cbor-x": "^1.5.9", @@ -6820,6 +6822,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jlongster/sql.js": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@jlongster/sql.js/-/sql.js-1.6.7.tgz", + "integrity": "sha512-4hf0kZr5WPoirdR5hUSfQ9O0JpH/qlW1CaR2wZ6zGrDz1xjSdTPuR8AW/oXzIHnJvZSEvlcIE+dfXJZwh/Lxfw==" + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -10005,6 +10012,14 @@ "node": ">=6.5" } }, + "node_modules/absurd-sql": { + "version": "0.0.54", + "resolved": "https://registry.npmjs.org/absurd-sql/-/absurd-sql-0.0.54.tgz", + "integrity": "sha512-p+SWTtpRs2t3sXMLxkTyLRZkEzxTv/zG/Bl93wibegLZTGAHGk68SJMWslRWHBGh63ka/ePGTXGHh1117++45Q==", + "dependencies": { + "safari-14-idb-fix": "^1.0.4" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -23335,6 +23350,11 @@ "tslib": "^2.1.0" } }, + "node_modules/safari-14-idb-fix": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-1.0.6.tgz", + "integrity": "sha512-oTEQOdMwRX+uCtWCKT1nx2gAeSdpr8elg/2gcaKUH00SJU2xWESfkx11nmXwTRHy7xfQoj1o4TTQvdmuBosTnA==" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", diff --git a/package.json b/package.json index b73c0967..74be7d90 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.6", + "@jlongster/sql.js": "^1.6.7", "@peculiar/asn1-ecc": "^2.3.8", "@peculiar/asn1-schema": "^2.3.8", "@pvermeer/dexie-encrypted-addon": "^3.0.0", @@ -81,6 +82,7 @@ "@vue-leaflet/vue-leaflet": "^0.10.1", "@vueuse/core": "^12.3.0", "@zxing/text-encoding": "^0.9.0", + "absurd-sql": "^0.0.54", "asn1-ber": "^1.2.2", "axios": "^1.6.8", "cbor-x": "^1.5.9", diff --git a/src/main.web.ts b/src/main.web.ts index accff8c1..ad974034 100644 --- a/src/main.web.ts +++ b/src/main.web.ts @@ -1,5 +1,19 @@ +import { initBackend } from 'absurd-sql/dist/indexeddb-main-thread'; import { initializeApp } from "./main.common"; import "./registerServiceWorker"; // Web PWA support const app = initializeApp(); + +function sqlInit() { + // see https://github.com/jlongster/absurd-sql + let worker = new Worker(new URL('./registerSQLWorker.js', import.meta.url), { + type: 'module' + }); + // This is only required because Safari doesn't support nested + // workers. This installs a handler that will proxy creating web + // workers through the main thread + initBackend(worker); +} +sqlInit(); + app.mount("#app"); diff --git a/vite.config.ts b/vite.config.ts index c3702bc8..ac4dc310 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,12 @@ import path from "path"; export default defineConfig({ plugins: [vue()], + server: { + headers: { + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp' + } + }, resolve: { alias: { '@': path.resolve(__dirname, './src'),