From cf47bb13a9a6713d94034e41d63e756d1f02a0f2 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 26 Mar 2024 21:13:32 -0300 Subject: web-routes: basic implementation --- src/web-routes.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/web-routes.js (limited to 'src/web-routes.js') diff --git a/src/web-routes.js b/src/web-routes.js new file mode 100644 index 00000000..1d010b66 --- /dev/null +++ b/src/web-routes.js @@ -0,0 +1,61 @@ +import {readdir} from 'node:fs/promises'; +import * as path from 'node:path'; +import {fileURLToPath} from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const codeSrcPath = __dirname; +const codeRootPath = path.resolve(codeSrcPath, '..'); + +function getNodeDependencyRootPath(dependencyName) { + const packageJSON = + import.meta.resolve(dependencyName + '/package.json'); + + return path.dirname(fileURLToPath(packageJSON)); +} + +export const stationaryCodeRoutes = [ + { + from: path.join(codeSrcPath, 'static'), + to: '/static', + }, + + { + from: path.join(codeSrcPath, 'util'), + to: '/util', + }, +]; + +export const dependencyRoutes = []; + +export const allStaticWebRoutes = [ + ...stationaryCodeRoutes, + ...dependencyRoutes, +]; + +export async function identifyDynamicWebRoutes({ + mediaPath, + mediaCachePath, +}) { + const routeFunctions = [ + () => Promise.resolve([ + {from: path.resolve(mediaPath), to: '/media'}, + {from: path.resolve(mediaCachePath), to: '/thumb'}, + ]), + ]; + + const routeCheckPromises = + routeFunctions.map(fn => fn()); + + const routeCheckResults = + await Promise.all(routeCheckPromises); + + return routeCheckResults.flat(); +} + +export async function identifyAllWebRoutes(opts) { + return [ + ...allStaticWebRoutes, + ...await identifyDynamicWebRoutes(opts), + ]; +} -- cgit 1.3.0-6-gf8a5