Works on iphone and android

This commit is contained in:
2026-06-13 18:10:05 +03:00
parent 38ac9d90b8
commit 5eda681ab0
5 changed files with 30 additions and 10 deletions
+14
View File
@@ -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",
+1
View File
@@ -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
View File
@@ -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() {
+5 -2
View File
@@ -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
View File
@@ -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'],