1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
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', 'css'),
to: ['staticCSS.root'],
},
{
from: path.join(codeSrcPath, 'static', 'js'),
to: ['staticJS.root'],
},
{
from: path.join(codeSrcPath, 'static', 'misc'),
to: ['staticMisc.root'],
},
{
from: path.join(codeSrcPath, 'util'),
to: ['staticSharedUtil.root'],
},
];
export const dependencyRoutes = [
{
from:
path.join(
getNodeDependencyRootPath('flexsearch'),
'dist'),
to: ['staticLib.path', 'flexsearch'],
},
];
export const allStaticWebRoutes = [
...stationaryCodeRoutes,
...dependencyRoutes,
];
export async function identifyDynamicWebRoutes({
mediaPath,
mediaCachePath,
wikiCachePath,
}) {
const routeFunctions = [
() => Promise.resolve([
{from: path.resolve(mediaPath), to: ['media.root']},
{from: path.resolve(mediaCachePath), to: ['thumb.root']},
]),
() => {
if (!wikiCachePath) return [];
const from =
path.resolve(path.join(wikiCachePath, 'search'));
return (
readdir(from).then(
() => [{from, to: ['searchData.root']}],
() => []));
},
];
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),
];
}
|