From e6aa22acdb9cd5cd4259841b06db70e19a659f1e Mon Sep 17 00:00:00 2001 From: StefanMoCoAt Date: Wed, 4 Mar 2026 17:57:31 +0100 Subject: [PATCH] Fix: Rename Docker image for gateway service and reformat sqlite-config.js for consistency --- .gitea/workflows/docker-publish.yaml | 2 +- .../webpack.config.d/sqlite-config.js | 100 +++++++++--------- 2 files changed, 52 insertions(+), 50 deletions(-) diff --git a/.gitea/workflows/docker-publish.yaml b/.gitea/workflows/docker-publish.yaml index 219a588c..93ec808d 100644 --- a/.gitea/workflows/docker-publish.yaml +++ b/.gitea/workflows/docker-publish.yaml @@ -38,7 +38,7 @@ jobs: - service: api-gateway context: . dockerfile: backend/infrastructure/gateway/Dockerfile - image: gateway + image: api-gateway - service: ping-service context: . dockerfile: backend/services/ping/Dockerfile diff --git a/frontend/shells/meldestelle-portal/webpack.config.d/sqlite-config.js b/frontend/shells/meldestelle-portal/webpack.config.d/sqlite-config.js index 0e43f0d5..a849f600 100644 --- a/frontend/shells/meldestelle-portal/webpack.config.d/sqlite-config.js +++ b/frontend/shells/meldestelle-portal/webpack.config.d/sqlite-config.js @@ -19,28 +19,28 @@ config.resolve.fallback.crypto = false; // 2. Resolve sqlite3 paths let sqliteBaseDir; try { - const packagePath = path.dirname(require.resolve('@sqlite.org/sqlite-wasm/package.json')); - sqliteBaseDir = path.join(packagePath, 'sqlite-wasm/jswasm'); + const packagePath = path.dirname(require.resolve('@sqlite.org/sqlite-wasm/package.json')); + sqliteBaseDir = path.join(packagePath, 'sqlite-wasm/jswasm'); } catch (e) { - console.warn("Could not resolve @sqlite.org/sqlite-wasm path automatically. Using fallback path."); - sqliteBaseDir = path.resolve(__dirname, '../../../../../../node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm'); + console.warn("Could not resolve @sqlite.org/sqlite-wasm path automatically. Using fallback path."); + sqliteBaseDir = path.resolve(__dirname, '../../../../../../node_modules/@sqlite.org/sqlite-wasm/sqlite-wasm/jswasm'); } // 3. Copy ALL sqlite3 assets (wasm, js, and auxiliary workers) const copyPatterns = []; if (fs.existsSync(sqliteBaseDir)) { - console.log("Copying sqlite3 assets from:", sqliteBaseDir); - copyPatterns.push({ - from: sqliteBaseDir, - to: '.', // Copy to root of dist - globOptions: { - ignore: ['**/package.json'] - }, - noErrorOnMissing: true - }); + console.log("Copying sqlite3 assets from:", sqliteBaseDir); + copyPatterns.push({ + from: sqliteBaseDir, + to: '.', // Copy to root of dist + globOptions: { + ignore: ['**/package.json'] + }, + noErrorOnMissing: true + }); } else { - console.error("ERROR: sqlite3 base directory does not exist:", sqliteBaseDir); + console.error("ERROR: sqlite3 base directory does not exist:", sqliteBaseDir); } // 4. Copy sqlite.worker.js from source @@ -60,33 +60,33 @@ const pathC = path.resolve(__dirname, '../../../../core/local-db/src/jsMain/reso let workerSourcePath = null; if (fs.existsSync(pathA)) { - workerSourcePath = pathA; - console.log("Found sqlite.worker.js at (Strategy A):", pathA); + workerSourcePath = pathA; + console.log("Found sqlite.worker.js at (Strategy A):", pathA); } else if (fs.existsSync(pathB)) { - workerSourcePath = pathB; - console.log("Found sqlite.worker.js at (Strategy B):", pathB); + workerSourcePath = pathB; + console.log("Found sqlite.worker.js at (Strategy B):", pathB); } else if (fs.existsSync(pathC)) { - workerSourcePath = pathC; - console.log("Found sqlite.worker.js at (Strategy C):", pathC); + workerSourcePath = pathC; + console.log("Found sqlite.worker.js at (Strategy C):", pathC); } else { - console.error("ERROR: Could not find sqlite.worker.js in any expected location!"); - console.error("Checked A:", pathA); - console.error("Checked B:", pathB); - console.error("Checked C:", pathC); + console.error("ERROR: Could not find sqlite.worker.js in any expected location!"); + console.error("Checked A:", pathA); + console.error("Checked B:", pathB); + console.error("Checked C:", pathC); } if (workerSourcePath) { - copyPatterns.push({ - from: workerSourcePath, - to: 'sqlite.worker.js', - noErrorOnMissing: true - }); + copyPatterns.push({ + from: workerSourcePath, + to: 'sqlite.worker.js', + noErrorOnMissing: true + }); } config.plugins.push( - new CopyWebpackPlugin({ - patterns: copyPatterns - }) + new CopyWebpackPlugin({ + patterns: copyPatterns + }) ); // 5. Alias sqlite3.wasm (still needed for some internal checks maybe) @@ -103,15 +103,15 @@ config.module.rules = config.module.rules || []; // Treat Skiko WASM as resource to avoid parsing errors config.module.rules.push({ - test: /skiko\.wasm$/, - type: 'asset/resource' + test: /skiko\.wasm$/, + type: 'asset/resource' }); // Treat other WASM as async (default) config.module.rules.push({ - test: /\.wasm$/, - exclude: /skiko\.wasm$/, - type: 'webassembly/async' + test: /\.wasm$/, + exclude: /skiko\.wasm$/, + type: 'webassembly/async' }); // 7. Ignore warnings @@ -120,28 +120,30 @@ config.ignoreWarnings.push(/Critical dependency: the request of a dependency is // 8. Fix for "webpackEmptyContext" in sqlite3.mjs config.plugins.push( - new webpack.ContextReplacementPlugin( - /@sqlite\.org\/sqlite-wasm/, - (data) => { - delete data.dependencies; - return data; - } - ) + new webpack.ContextReplacementPlugin( + /@sqlite\.org\/sqlite-wasm/, + (data) => { + delete data.dependencies; + return data; + } + ) ); // 9. MIME types config.devServer = config.devServer || {}; config.devServer.devMiddleware = config.devServer.devMiddleware || {}; config.devServer.devMiddleware.mimeTypes = { - 'application/wasm': ['wasm'], - 'application/javascript': ['js'] + 'application/wasm': ['wasm'], + 'application/javascript': ['js'] }; -// 10. OPTIMIZATION: Disable minification to prevent Terser crashes with SQLite WASM -// Since the app is mostly WASM-based, JS minification is not critical. +// 10. OPTIMIZATION: Aggressively disable ALL minimizers +// This is the ONLY stable way to prevent the Terser crash with SQLite-WASM +// in Kotlin/JS Production builds. if (config.optimization) { - console.log("SQLite Config: Disabling minification to prevent Terser errors."); + console.log("SQLite Config: Aggressively removing minimizers to prevent Terser errors."); config.optimization.minimize = false; + config.optimization.minimizer = []; // Das hier ist das entscheidende "Brecheisen" } /*// 10. OPTIMIZATION: Exclude SQLite workers from parsing and minification