🌳
pt0/deployF/dockerF/scopesF.mts
1// === Types ===
2export type EpScope = 'alljs' | 'deployjs' | 'dockerjs' | 'pubfejs'
3export type EpScopeClr = EpScope | 'deploysrvjs'
4export type SimpleEpScope = Exclude<EpScope, 'pubfejs'>
6// === Constants ===
7export const epScopes = {
8 alljs: 'alljs',
9 deployjs: 'deployjs',
10 dockerjs: 'dockerjs',
11 pubfejs: 'pubfejs',
12 deploysrvjs: 'deploysrvjs',
13} as const
15// Colors for each scope (for legend display)
16type ClrName = 'green' | 'gray' | 'yellow' | 'cyan' | 'magenta'
17export const epScopeColors: Record<EpScopeClr, ClrName> = {
18 alljs: 'cyan',
19 deployjs: 'yellow',
20 dockerjs: 'gray',
21 pubfejs: 'green',
22 deploysrvjs: 'magenta',
25// === Config ===
26export type EpScopeCfg = {
27 inclDeploy?: boolean
28 inclDocker?: boolean
29 feOnly?: boolean
32export const epScopeToCfgH: Record<EpScope, EpScopeCfg> = {
33 [epScopes.alljs]: {inclDeploy: true, inclDocker: true},
34 [epScopes.deployjs]: {inclDeploy: true},
35 [epScopes.dockerjs]: {inclDocker: true},
36 [epScopes.pubfejs]: {inclDocker: true, feOnly: true},
39// All scopes
40export const allEpScopeOptA: EpScope[] = [epScopes.alljs, epScopes.deployjs, epScopes.dockerjs, epScopes.pubfejs]
42// Scopes for simple deploys (no pubfejs)
43export const simpleEpScopeOptA: SimpleEpScope[] = [epScopes.alljs, epScopes.deployjs, epScopes.dockerjs]
45export const legendScopes: EpScopeClr[] = [epScopes.alljs, epScopes.deploysrvjs, epScopes.pubfejs, epScopes.dockerjs, epScopes.deployjs]
46export const simpleLegendScopes: SimpleEpScope[] = [epScopes.dockerjs, epScopes.deployjs]
48export type EpScopeSets = { deployjsSet: Set<string>, dockerjsSet: Set<string>, pubfejsSet: Set<string> }
50export const fileClrFromEpTypes = (inDeploy: boolean, inDocker: boolean, inFe: boolean) => {
51 if (inDeploy && inFe) return epScopeColors.alljs
52 if (inFe) return epScopeColors.pubfejs
53 if (inDeploy && inDocker) return epScopeColors.deploysrvjs
54 if (inDocker) return epScopeColors.dockerjs
55 return epScopeColors.deployjs
58export const fileClrFromEpSets = (path: string, {deployjsSet, dockerjsSet, pubfejsSet}: EpScopeSets) =>
59 fileClrFromEpTypes(deployjsSet.has(path), dockerjsSet.has(path), pubfejsSet.has(path))