Works on iphone and android
This commit is contained in:
Generated
+14
@@ -12,6 +12,7 @@
|
||||
"wa-sqlite": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-basic-ssl": "^2.3.0",
|
||||
"typescript": "~6.0.2",
|
||||
"vite": "^8.0.12"
|
||||
}
|
||||
@@ -360,6 +361,19 @@
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vitejs/plugin-basic-ssl": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.3.0.tgz",
|
||||
"integrity": "sha512-bdyo8rB3NnQbikdMpHaML9Z1OZPBu6fFOBo+OtxsBlvMJtysWskmBcnbIDhUqgC8tcxNv/a+BcV5U+2nQMm1OQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-basic-ssl": "^2.3.0",
|
||||
"typescript": "~6.0.2",
|
||||
"vite": "^8.0.12"
|
||||
},
|
||||
|
||||
+6
-7
@@ -3,6 +3,10 @@
|
||||
* Воркер необходим, так как createSyncAccessHandle() доступен только в Worker'ах.
|
||||
*/
|
||||
|
||||
import { Factory } from 'wa-sqlite/src/sqlite-api.js';
|
||||
import { OriginPrivateFileSystemVFS } from 'wa-sqlite/src/examples/OriginPrivateFileSystemVFS.js';
|
||||
import ModuleConstructor from 'wa-sqlite/dist/wa-sqlite-async.mjs';
|
||||
|
||||
let sqlite: any = null;
|
||||
let db: number | null = null;
|
||||
let vfs: any = null;
|
||||
@@ -16,19 +20,13 @@ const OPEN_FLAGS = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
|
||||
async function init() {
|
||||
if (initialized) return;
|
||||
|
||||
const { Factory } = await import('wa-sqlite/src/sqlite-api.js');
|
||||
const { OriginPrivateFileSystemVFS } = await import(
|
||||
'wa-sqlite/src/examples/OriginPrivateFileSystemVFS.js'
|
||||
);
|
||||
const ModuleConstructor = (await import('wa-sqlite/dist/wa-sqlite-async.mjs')).default;
|
||||
|
||||
const module = await ModuleConstructor();
|
||||
const api = Factory(module);
|
||||
sqlite = api;
|
||||
|
||||
const opfsVfs = new OriginPrivateFileSystemVFS();
|
||||
vfs = opfsVfs;
|
||||
|
||||
vfs = opfsVfs;
|
||||
const rc = api.vfs_register(opfsVfs, true);
|
||||
if (rc) {
|
||||
throw new Error(`Не удалось зарегистрировать OPFS VFS, код ${rc}`);
|
||||
@@ -39,6 +37,7 @@ async function init() {
|
||||
|
||||
initialized = true;
|
||||
self.postMessage({ type: 'ready', ok: true });
|
||||
|
||||
}
|
||||
|
||||
async function execSchema() {
|
||||
|
||||
@@ -31,7 +31,10 @@ function initWorker(): Promise<void> {
|
||||
if (initPromise) return initPromise;
|
||||
|
||||
initPromise = new Promise((resolve, reject) => {
|
||||
worker = new DbWorker();
|
||||
worker = new Worker(
|
||||
new URL('./db-worker.ts', import.meta.url),
|
||||
{ type: 'module' } // <--- ЭТО КЛЮЧЕВОЙ ПАРАМЕТР, КОТОРЫЙ ЛЕЧИТ SAFAFI/iOS
|
||||
);
|
||||
|
||||
worker.onmessage = (e: MessageEvent) => {
|
||||
const msg = e.data;
|
||||
@@ -49,7 +52,7 @@ function initWorker(): Promise<void> {
|
||||
if (msg.ok) {
|
||||
pendingReq.resolve(msg.data);
|
||||
} else {
|
||||
console.log(msg);
|
||||
console.log(msg)
|
||||
pendingReq.reject(new Error(msg.error || 'Неизвестная ошибка Worker'));
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -1,8 +1,11 @@
|
||||
import { defineConfig } from 'vite';
|
||||
import basicSsl from '@vitejs/plugin-basic-ssl'; // npm i -D @vitejs/plugin-basic-ssl
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [basicSsl()], // Добавит локальный HTTPS
|
||||
|
||||
build: {
|
||||
target: 'es2020',
|
||||
target: 'esnext',
|
||||
},
|
||||
optimizeDeps: {
|
||||
exclude: ['wa-sqlite'],
|
||||
|
||||
Reference in New Issue
Block a user