diff --git a/keyserver/src/responders/website-responders.js b/keyserver/src/responders/website-responders.js --- a/keyserver/src/responders/website-responders.js +++ b/keyserver/src/responders/website-responders.js @@ -95,6 +95,7 @@ +cssInclude: string, +olmFilename: string, +sqljsFilename: string, + +commQueryExecutorFilename: string, +opaqueURL: string, }; let assetInfo: ?AssetInfo = null; @@ -110,6 +111,7 @@ cssInclude: '', olmFilename: '', sqljsFilename: '', + commQueryExecutorFilename: '', opaqueURL: 'http://localhost:8080/opaque-ke.wasm', }; return assetInfo; @@ -134,6 +136,7 @@ `, olmFilename: manifest['olm.wasm'], sqljsFilename: webworkersManifest['sql-wasm.wasm'], + commQueryExecutorFilename: webworkersManifest['comm_query_executor.wasm'], opaqueURL: `compiled/${manifest['comm_opaque2_wasm_bg.wasm']}`, }; return assetInfo; @@ -494,8 +497,15 @@ }; })(); - const { jsURL, fontsURL, cssInclude, olmFilename, sqljsFilename, opaqueURL } = - await assetInfoPromise; + const { + jsURL, + fontsURL, + cssInclude, + olmFilename, + sqljsFilename, + opaqueURL, + commQueryExecutorFilename, + } = await assetInfoPromise; // prettier-ignore res.write(html` @@ -604,6 +614,7 @@ var baseURL = "${baseURL}"; var olmFilename = "${olmFilename}"; var sqljsFilename = "${sqljsFilename}"; + var commQueryExecutorFilename = "${commQueryExecutorFilename}"; var opaqueURL = "${opaqueURL}"; diff --git a/web/database/database-module-provider.js b/web/database/database-module-provider.js --- a/web/database/database-module-provider.js +++ b/web/database/database-module-provider.js @@ -11,6 +11,7 @@ } from '../types/worker-types.js'; declare var sqljsFilename: string; +declare var commQueryExecutorFilename: string; declare var preloadedState: AppState; const databaseStatuses = Object.freeze({ @@ -59,6 +60,7 @@ sqljsFilePath: `${origin}${SQLJS_FILE_PATH}`, sqljsFilename, encryptionKey, + commQueryExecutorFilename, }); this.status = databaseStatuses.initSuccess; console.info('Database initialization success'); diff --git a/web/database/worker/db-worker.js b/web/database/worker/db-worker.js --- a/web/database/worker/db-worker.js +++ b/web/database/worker/db-worker.js @@ -19,6 +19,7 @@ type WorkerRequestProxyMessage, workerWriteRequests, } from '../../types/worker-types.js'; +import Module from '../_generated/comm-query-executor.js'; import { migrate, setupSQLiteDB } from '../queries/db-queries.js'; import { getAllDrafts, @@ -59,11 +60,30 @@ let persistNeeded: boolean = false; let persistInProgress: boolean = false; +const defaultCommQueryExecutorFilename = 'comm_query_executor.wasm'; + async function initDatabase( sqljsFilePath: string, sqljsFilename: ?string, + commQueryExecutorFilename: ?string, encryptionKeyJWK?: ?SubtleCrypto$JsonWebKey, ) { + const dbModule = Module({ + locateFile: function () { + if (commQueryExecutorFilename) { + return `${sqljsFilePath}/${commQueryExecutorFilename}`; + } + return `${sqljsFilePath}/${defaultCommQueryExecutorFilename}`; + }, + }); + + try { + const result = dbModule.CommQueryExecutor.testDBOperation(); + console.log(result); + } catch (e) { + console.error(e); + } + if (encryptionKeyJWK) { encryptionKey = await importJWKKey(encryptionKeyJWK); } else { @@ -210,6 +230,7 @@ await initDatabase( message.sqljsFilePath, message.sqljsFilename, + message.commQueryExecutorFilename, message.encryptionKey, ); return undefined; diff --git a/web/types/worker-types.js b/web/types/worker-types.js --- a/web/types/worker-types.js +++ b/web/types/worker-types.js @@ -36,6 +36,7 @@ +type: 1, +sqljsFilePath: string, +sqljsFilename: ?string, + +commQueryExecutorFilename: ?string, +encryptionKey?: ?SubtleCrypto$JsonWebKey, };