Files
jap_web_ng/src/main.ts
T
2026-09-13 18:43:42 +03:00

38 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import './style.css';
import * as sqlite from 'wa-sqlite';
import SQLiteESMFactory from 'wa-sqlite/dist/wa-sqlite.mjs';
import { SyncPanel } from './sync-panel';
// Смоук-тест: запускаем SQLite (сборка wa-sqlite) в памяти.
// Запись и чтение БД идут через OPFS (src/storage.ts); подключение
// SQLite к файлу из OPFS сделаем при работе с самими карточками.
const sqliteStatus = document.querySelector<HTMLParagraphElement>('#sqlite-status');
async function initSqlite(): Promise<void> {
try {
// 1. Загрузчик сам скачивает wa-sqlite.wasm (рядом с wa-sqlite.mjs).
const module = await SQLiteESMFactory();
// 2. Оборачиваем Emscripten-модуль в JS API.
const sqlite3 = sqlite.Factory(module);
// 3. Открываем базу в памяти и выполняем запрос.
const db = await sqlite3.open_v2(':memory:');
let result = 'нет данных';
await sqlite3.exec(db, "SELECT 'Привет, мир!'", (row) => {
result = String(row[0]);
});
await sqlite3.close(db);
if (sqliteStatus) sqliteStatus.textContent = `SQLite работает: ${result}`;
} catch (error) {
if (sqliteStatus) sqliteStatus.textContent = `SQLite: ошибка инициализации — ${error}`;
console.error(error);
}
}
// Главный экран: токен сохранения + кнопки «Скачать» / «Выгрузить».
// HTTP-обвязка появится на следующем шаге.
const syncPanel = new SyncPanel(document);
syncPanel.init();
void initSqlite();