diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 27cf0206b..c231016a5 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -50,7 +50,8 @@ kotlin { } jsMain.dependencies { implementation(libs.sqldelight.webworker.driver) - implementation(npm("sql.js", "1.6.2")) + implementation(npm("@cashapp/sqldelight-sqljs-worker", "2.0.1")) + implementation(npm("sql.js", "1.8.0")) implementation(devNpm("copy-webpack-plugin", "9.1.0")) } commonTest.dependencies { diff --git a/core/database/karma.config.d/sqljs-config.js b/core/database/karma.config.d/sqljs-config.js new file mode 100644 index 000000000..ef2be34df --- /dev/null +++ b/core/database/karma.config.d/sqljs-config.js @@ -0,0 +1,30 @@ +const path = require("path"); +const os = require("os"); +const dist = path.resolve("../../node_modules/sql.js/dist/") +const wasm = path.join(dist, "sql-wasm.wasm") + +config.files.push({ + pattern: wasm, + served: true, + watched: false, + included: false, + nocache: false, +}); + +config.proxies["/sql-wasm.wasm"] = `/absolute${wasm}` + +// Adapted from: https://github.com/ryanclark/karma-webpack/issues/498#issuecomment-790040818 +const output = { + path: path.join(os.tmpdir(), '_karma_webpack_') + Math.floor(Math.random() * 1000000), +} +config.set({ + webpack: {...config.webpack, output} +}); +config.files.push({ + pattern: `${output.path}/**/*`, + watched: false, + included: false, +}); + +// TODO: Figure out why on earth this is necessary. Presumably a karma-webpack bug??? +delete config.webpack.optimization; diff --git a/core/database/webpack.config.d/sqljs-config.js b/core/database/webpack.config.d/sqljs-config.js new file mode 100644 index 000000000..03f701073 --- /dev/null +++ b/core/database/webpack.config.d/sqljs-config.js @@ -0,0 +1,16 @@ +config.resolve = { + fallback: { + fs: false, + path: false, + crypto: false, + } +}; + +const CopyWebpackPlugin = require('copy-webpack-plugin'); +config.plugins.push( + new CopyWebpackPlugin({ + patterns: [ + '../../node_modules/sql.js/dist/sql-wasm.wasm' + ] + }) +);