From 3b9f95a125d28b8cda3ebca1fe248e2026d2e56d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 13 May 2024 14:01:54 -0300 Subject: web-routes, client: import shims, more adaptive web routes --- src/static/js/module-import-shims.js | 27 +++++++++++++++++++++ src/web-routes.js | 46 ++++++++++++++++++++++-------------- 2 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 src/static/js/module-import-shims.js diff --git a/src/static/js/module-import-shims.js b/src/static/js/module-import-shims.js new file mode 100644 index 00000000..e7e1e0cc --- /dev/null +++ b/src/static/js/module-import-shims.js @@ -0,0 +1,27 @@ +export const loadDependency = { + async fromWindow(modulePath) { + globalThis.window = {}; + + await import(modulePath); + + const exports = globalThis.window; + + delete globalThis.window; + + return exports; + }, + + async fromModuleExports(modulePath) { + globalThis.exports = {}; + globalThis.module = {exports: globalThis.exports}; + + await import(modulePath); + + const exports = globalThis.exports; + + delete globalThis.module; + delete globalThis.exports; + + return exports; + }, +}; diff --git a/src/web-routes.js b/src/web-routes.js index 2ebd6f3e..8bb2fba3 100644 --- a/src/web-routes.js +++ b/src/web-routes.js @@ -8,10 +8,10 @@ const codeSrcPath = __dirname; const codeRootPath = path.resolve(codeSrcPath, '..'); function getNodeDependencyRootPath(dependencyName) { - const packageJSON = - import.meta.resolve(dependencyName + '/package.json'); - - return path.dirname(fileURLToPath(packageJSON)); + return ( + path.dirname( + fileURLToPath( + import.meta.resolve(dependencyName)))); } export const stationaryCodeRoutes = [ @@ -36,23 +36,33 @@ export const stationaryCodeRoutes = [ }, ]; -export const dependencyRoutes = [ - { - from: - path.join( - getNodeDependencyRootPath('flexsearch'), - 'dist'), +function quickNodeDependency({ + name, + path: subpath = '', +}) { + const root = getNodeDependencyRootPath(name); - to: ['staticLib.path', 'flexsearch'], - }, + return [ + { + from: + (subpath + ? path.join(root, subpath) + : root), - { - from: - getNodeDependencyRootPath('chroma-js'), + to: ['staticLib.path', name], + }, + ]; +} - to: ['staticLib.path', 'chroma-js'], - } -]; +export const dependencyRoutes = [ + quickNodeDependency({ + name: 'chroma-js', + }), + + quickNodeDependency({ + name: 'flexsearch', + }), +].flat(); export const allStaticWebRoutes = [ ...stationaryCodeRoutes, -- cgit 1.3.0-6-gf8a5