@shadow-shard-tools/docs-core 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -0
- package/dist/cjs/configs/clientConfig.js +28 -112
- package/dist/cjs/configs/index.browser.js +16 -0
- package/dist/cjs/configs/sstDocsConfigShared.js +159 -101
- package/dist/cjs/data/buildTree.js +48 -10
- package/dist/cjs/data/fsDataProvider.browser.js +10 -0
- package/dist/cjs/data/index.browser.js +17 -0
- package/dist/cjs/data/index.js +4 -1
- package/dist/cjs/data/loadAllCategories.js +15 -5
- package/dist/cjs/data/loadAllItems.js +19 -7
- package/dist/cjs/data/loadVersionData.fs.js +29 -0
- package/dist/cjs/data/loadVersionData.js +69 -7
- package/dist/cjs/index.browser.js +22 -0
- package/dist/cjs/themes/index.js +5 -1
- package/dist/cjs/themes/styleThemeSchema.js +36 -0
- package/dist/cjs/types/DataDiagnostic.js +2 -0
- package/dist/cjs/utilities/index.browser.js +53 -0
- package/dist/cjs/utilities/path/pathExists.browser.js +6 -0
- package/dist/cjs/utilities/path/pathExists.js +1 -1
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveDataPath.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveDataPath.js +1 -1
- package/dist/cjs/utilities/string/withBasePath.js +37 -9
- package/dist/cjs/utilities/system/logger.browser.js +39 -0
- package/dist/cjs/utilities/system/logger.js +26 -6
- package/dist/configs/clientConfig.d.ts.map +1 -1
- package/dist/configs/clientConfig.js +28 -112
- package/dist/configs/clientConfig.js.map +1 -1
- package/dist/configs/index.browser.d.ts +4 -0
- package/dist/configs/index.browser.d.ts.map +1 -0
- package/dist/configs/index.browser.js +4 -0
- package/dist/configs/index.browser.js.map +1 -0
- package/dist/configs/sstDocsConfig.browser.d.ts.map +1 -1
- package/dist/configs/sstDocsConfig.browser.js.map +1 -1
- package/dist/configs/sstDocsConfig.d.ts.map +1 -1
- package/dist/configs/sstDocsConfig.js.map +1 -1
- package/dist/configs/sstDocsConfigShared.d.ts +8 -0
- package/dist/configs/sstDocsConfigShared.d.ts.map +1 -1
- package/dist/configs/sstDocsConfigShared.js +158 -97
- package/dist/configs/sstDocsConfigShared.js.map +1 -1
- package/dist/data/buildTree.d.ts +10 -2
- package/dist/data/buildTree.d.ts.map +1 -1
- package/dist/data/buildTree.js +48 -10
- package/dist/data/buildTree.js.map +1 -1
- package/dist/data/fsDataProvider.browser.d.ts +6 -0
- package/dist/data/fsDataProvider.browser.d.ts.map +1 -0
- package/dist/data/fsDataProvider.browser.js +7 -0
- package/dist/data/fsDataProvider.browser.js.map +1 -0
- package/dist/data/fsDataProvider.d.ts.map +1 -1
- package/dist/data/fsDataProvider.js.map +1 -1
- package/dist/data/index.browser.d.ts +7 -0
- package/dist/data/index.browser.d.ts.map +1 -0
- package/dist/data/index.browser.js +7 -0
- package/dist/data/index.browser.js.map +1 -0
- package/dist/data/index.d.ts +2 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +2 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/loadAllCategories.d.ts +10 -1
- package/dist/data/loadAllCategories.d.ts.map +1 -1
- package/dist/data/loadAllCategories.js +15 -5
- package/dist/data/loadAllCategories.js.map +1 -1
- package/dist/data/loadAllItems.d.ts +10 -1
- package/dist/data/loadAllItems.d.ts.map +1 -1
- package/dist/data/loadAllItems.js +19 -7
- package/dist/data/loadAllItems.js.map +1 -1
- package/dist/data/loadVersionData.d.ts +22 -1
- package/dist/data/loadVersionData.d.ts.map +1 -1
- package/dist/data/loadVersionData.fs.d.ts +3 -0
- package/dist/data/loadVersionData.fs.d.ts.map +1 -0
- package/dist/data/loadVersionData.fs.js +24 -0
- package/dist/data/loadVersionData.fs.js.map +1 -0
- package/dist/data/loadVersionData.js +67 -7
- package/dist/data/loadVersionData.js.map +1 -1
- package/dist/index.browser.d.ts +7 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +7 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/themes/index.d.ts +1 -0
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +1 -0
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/styleThemeSchema.d.ts +6 -0
- package/dist/themes/styleThemeSchema.d.ts.map +1 -0
- package/dist/themes/styleThemeSchema.js +32 -0
- package/dist/themes/styleThemeSchema.js.map +1 -0
- package/dist/themes/themeRegistry.d.ts.map +1 -1
- package/dist/themes/themeRegistry.js.map +1 -1
- package/dist/types/DataDiagnostic.d.ts +8 -0
- package/dist/types/DataDiagnostic.d.ts.map +1 -0
- package/dist/types/DataDiagnostic.js +2 -0
- package/dist/types/DataDiagnostic.js.map +1 -0
- package/dist/types/HtmlGeneratorSettings.d.ts +1 -1
- package/dist/types/HtmlGeneratorSettings.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utilities/index.browser.d.ts +23 -0
- package/dist/utilities/index.browser.d.ts.map +1 -0
- package/dist/utilities/index.browser.js +29 -0
- package/dist/utilities/index.browser.js.map +1 -0
- package/dist/utilities/path/pathExists.browser.d.ts +2 -0
- package/dist/utilities/path/pathExists.browser.d.ts.map +1 -0
- package/dist/utilities/path/pathExists.browser.js +4 -0
- package/dist/utilities/path/pathExists.browser.js.map +1 -0
- package/dist/utilities/path/pathExists.js +1 -1
- package/dist/utilities/path/pathExists.js.map +1 -1
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts +2 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts.map +1 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.js +4 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.js.map +1 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.d.ts.map +1 -1
- package/dist/utilities/path/resolveAgainstProjectRoot.js.map +1 -1
- package/dist/utilities/path/resolveDataPath.browser.d.ts +2 -0
- package/dist/utilities/path/resolveDataPath.browser.d.ts.map +1 -0
- package/dist/utilities/path/resolveDataPath.browser.js +4 -0
- package/dist/utilities/path/resolveDataPath.browser.js.map +1 -0
- package/dist/utilities/path/resolveDataPath.d.ts.map +1 -1
- package/dist/utilities/path/resolveDataPath.js +1 -1
- package/dist/utilities/path/resolveDataPath.js.map +1 -1
- package/dist/utilities/string/withBasePath.d.ts.map +1 -1
- package/dist/utilities/string/withBasePath.js +37 -6
- package/dist/utilities/string/withBasePath.js.map +1 -1
- package/dist/utilities/system/logger.browser.d.ts +3 -0
- package/dist/utilities/system/logger.browser.d.ts.map +1 -0
- package/dist/utilities/system/logger.browser.js +36 -0
- package/dist/utilities/system/logger.browser.js.map +1 -0
- package/dist/utilities/system/logger.d.ts.map +1 -1
- package/dist/utilities/system/logger.js +26 -6
- package/dist/utilities/system/logger.js.map +1 -1
- package/package.json +181 -9
|
@@ -1,4 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { styleThemeSchema } from "../themes/styleThemeSchema.js";
|
|
1
3
|
export const DEFAULT_CLIENT_CONFIG_GLOBAL = "__SST_DOCS_CONFIG__";
|
|
4
|
+
const headerBrandingSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
logoSrc: z.string().optional(),
|
|
7
|
+
logoAlt: z.string().optional(),
|
|
8
|
+
logoText: z.string().optional(),
|
|
9
|
+
})
|
|
10
|
+
.strict()
|
|
11
|
+
.optional()
|
|
12
|
+
.default({});
|
|
13
|
+
const clientConfigSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
PUBLIC_DATA_PATH: z.string(),
|
|
16
|
+
HEADER_BRANDING: headerBrandingSchema,
|
|
17
|
+
HTML_GENERATOR_THEME: styleThemeSchema.optional(),
|
|
18
|
+
})
|
|
19
|
+
.strict();
|
|
2
20
|
export function buildClientVisibleConfig(config) {
|
|
3
21
|
return {
|
|
4
22
|
PUBLIC_DATA_PATH: config.PUBLIC_DATA_PATH,
|
|
@@ -32,125 +50,23 @@ export function readClientConfig(globalName = DEFAULT_CLIENT_CONFIG_GLOBAL) {
|
|
|
32
50
|
return assertClientConfig(value, globalName);
|
|
33
51
|
}
|
|
34
52
|
function normalizeAndValidateClientConfigSource(source) {
|
|
35
|
-
const normalized =
|
|
53
|
+
const normalized = isClientConfigShape(source)
|
|
36
54
|
? source
|
|
37
55
|
: buildClientVisibleConfig(source);
|
|
38
56
|
return assertClientConfig(normalized);
|
|
39
57
|
}
|
|
40
58
|
function assertClientConfig(value, globalName = DEFAULT_CLIENT_CONFIG_GLOBAL) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
const candidate = value;
|
|
51
|
-
const hasPublicPath = typeof candidate.PUBLIC_DATA_PATH === "string";
|
|
52
|
-
const hasBranding = isHeaderBranding(candidate.HEADER_BRANDING);
|
|
53
|
-
const hasTheme = candidate.HTML_GENERATOR_THEME === undefined ||
|
|
54
|
-
isStyleTheme(candidate.HTML_GENERATOR_THEME);
|
|
55
|
-
return hasPublicPath && hasBranding && hasTheme;
|
|
56
|
-
}
|
|
57
|
-
function isHeaderBranding(value) {
|
|
58
|
-
if (value === undefined)
|
|
59
|
-
return true;
|
|
60
|
-
if (!value || typeof value !== "object")
|
|
61
|
-
return false;
|
|
62
|
-
const record = value;
|
|
63
|
-
return (["logoSrc", "logoAlt", "logoText"].every((key) => key in record ? typeof record[key] === "string" || record[key] === undefined : true));
|
|
59
|
+
const parsed = clientConfigSchema.safeParse(value);
|
|
60
|
+
if (parsed.success)
|
|
61
|
+
return parsed.data;
|
|
62
|
+
const message = parsed.error.issues
|
|
63
|
+
.map((issue) => `${issue.path.join(".") || "config"}: ${issue.message}`)
|
|
64
|
+
.join("; ");
|
|
65
|
+
throw new Error(`Client config "${globalName}" is missing or malformed on globalThis. ${message}`);
|
|
64
66
|
}
|
|
65
|
-
function
|
|
67
|
+
function isClientConfigShape(value) {
|
|
66
68
|
if (!value || typeof value !== "object")
|
|
67
69
|
return false;
|
|
68
|
-
|
|
69
|
-
const stringProps = (obj, keys) => !!obj &&
|
|
70
|
-
typeof obj === "object" &&
|
|
71
|
-
keys.every((k) => typeof obj[k] === "string");
|
|
72
|
-
return (typeof theme.input === "string" &&
|
|
73
|
-
stringProps(theme.text, [
|
|
74
|
-
"logoText",
|
|
75
|
-
"documentTitle",
|
|
76
|
-
"breadcrumb",
|
|
77
|
-
"titleLevel1",
|
|
78
|
-
"titleLevel2",
|
|
79
|
-
"titleLevel3",
|
|
80
|
-
"titleAnchor",
|
|
81
|
-
"general",
|
|
82
|
-
"alternative",
|
|
83
|
-
"list",
|
|
84
|
-
"math",
|
|
85
|
-
]) &&
|
|
86
|
-
stringProps(theme.hints, ["text", "key"]) &&
|
|
87
|
-
stringProps(theme.divider, ["border", "gradient", "text"]) &&
|
|
88
|
-
stringProps(theme.buttons, ["common", "small", "tabSmall", "tabSmallActive"]) &&
|
|
89
|
-
stringProps(theme.dropdown, ["container", "item", "itemActive"]) &&
|
|
90
|
-
stringProps(theme.messageBox, [
|
|
91
|
-
"info",
|
|
92
|
-
"warning",
|
|
93
|
-
"error",
|
|
94
|
-
"success",
|
|
95
|
-
"neutral",
|
|
96
|
-
"quote",
|
|
97
|
-
]) &&
|
|
98
|
-
stringProps(theme.table, ["cornerCell", "headers", "rows", "border", "empty"]) &&
|
|
99
|
-
stringProps(theme.code, ["header", "language", "lines", "empty"]) &&
|
|
100
|
-
stringProps(theme.audioPlayer, [
|
|
101
|
-
"container",
|
|
102
|
-
"playButton",
|
|
103
|
-
"time",
|
|
104
|
-
"slider",
|
|
105
|
-
"sliderThumb",
|
|
106
|
-
"sliderTrackColor",
|
|
107
|
-
"sliderFillColor",
|
|
108
|
-
]) &&
|
|
109
|
-
stringProps(theme.chart, [
|
|
110
|
-
"legendLabelColor",
|
|
111
|
-
"tooltipBg",
|
|
112
|
-
"tooltipTitleColor",
|
|
113
|
-
"tooltipBodyColor",
|
|
114
|
-
"tooltipBorderColor",
|
|
115
|
-
"axisTickColor",
|
|
116
|
-
"gridLineColor",
|
|
117
|
-
]) &&
|
|
118
|
-
stringProps(theme.graph, ["background", "defaultCurve"]) &&
|
|
119
|
-
stringProps(theme.searchModal, [
|
|
120
|
-
"resultBackground",
|
|
121
|
-
"resultEmptyInputText",
|
|
122
|
-
"resultNoResultText",
|
|
123
|
-
"header",
|
|
124
|
-
"footer",
|
|
125
|
-
"borders",
|
|
126
|
-
"item",
|
|
127
|
-
"selectedItem",
|
|
128
|
-
"itemHeaderText",
|
|
129
|
-
"itemFoundSectionText",
|
|
130
|
-
"itemTags",
|
|
131
|
-
]) &&
|
|
132
|
-
stringProps(theme.navigation, [
|
|
133
|
-
"row",
|
|
134
|
-
"rowActive",
|
|
135
|
-
"rowFocused",
|
|
136
|
-
"rowHover",
|
|
137
|
-
"hideOrShowHintsText",
|
|
138
|
-
]) &&
|
|
139
|
-
stringProps(theme.category, [
|
|
140
|
-
"empty",
|
|
141
|
-
"cardBody",
|
|
142
|
-
"cardHeaderText",
|
|
143
|
-
"cardDescriptionText",
|
|
144
|
-
]) &&
|
|
145
|
-
stringProps(theme.sections, [
|
|
146
|
-
"siteBackground",
|
|
147
|
-
"siteBorders",
|
|
148
|
-
"headerBackground",
|
|
149
|
-
"headerMobileBackground",
|
|
150
|
-
"sidebarBackground",
|
|
151
|
-
"documentHeaderBackground",
|
|
152
|
-
"contentBackground",
|
|
153
|
-
]) &&
|
|
154
|
-
stringProps(theme.header, ["mobileNavigationToggle", "mobileMenuToggle"]));
|
|
70
|
+
return clientConfigSchema.safeParse(value).success;
|
|
155
71
|
}
|
|
156
72
|
//# sourceMappingURL=clientConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientConfig.js","sourceRoot":"","sources":["../../src/configs/clientConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientConfig.js","sourceRoot":"","sources":["../../src/configs/clientConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAgBlE,MAAM,oBAAoB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,eAAe,EAAE,oBAAoB;IACrC,oBAAoB,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CAClD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,wBAAwB,CACtC,MAA6B;IAE7B,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,oBAAoB,EAAE,MAAM,CAAC,uBAAuB,EAAE,KAAK;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,MAA0B,EAC1B,OAA0C;IAE1C,MAAM,OAAO,GAAG,sCAAsC,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,4BAA4B,CAAC;IACvE,MAAM,OAAO,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,OAAO,UAAU,UAAU,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,OAAmC;IAEnC,MAAM,OAAO,GAAG,sCAAsC,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,MAAM,GACV,OAAO,EAAE,MAAM;QACb,UAA8D,CAAC;IAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,4BAA4B,CAAC;IACvE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,UAAU,GAAG,4BAA4B;IAEzC,MAAM,YAAY,GAAG,UAAiD,CAAC;IACvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,sCAAsC,CAC7C,MAA0B;IAE1B,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc,EACd,UAAU,GAAG,4BAA4B;IAEzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SACvE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,IAAI,KAAK,CACb,kBAAkB,UAAU,4CAA4C,OAAO,EAAE,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CODE_LANGUAGE_CONFIG } from "./codeLanguagesConfig.js";
|
|
2
|
+
export { derivePublicDataPath, resolvePublicDataPath, SstDocsConfigError, SST_DOCS_CONFIG_FILENAME, } from "./sstDocsConfigShared.js";
|
|
3
|
+
export { buildClientVisibleConfig, DEFAULT_CLIENT_CONFIG_GLOBAL, exposeClientConfig, readClientConfig, serializeClientConfigForBrowser, } from "./clientConfig.js";
|
|
4
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/configs/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { CODE_LANGUAGE_CONFIG } from "./codeLanguagesConfig.js";
|
|
2
|
+
export { derivePublicDataPath, resolvePublicDataPath, SstDocsConfigError, SST_DOCS_CONFIG_FILENAME, } from "./sstDocsConfigShared.js";
|
|
3
|
+
export { buildClientVisibleConfig, DEFAULT_CLIENT_CONFIG_GLOBAL, exposeClientConfig, readClientConfig, serializeClientConfigForBrowser, } from "./clientConfig.js";
|
|
4
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/configs/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfig.browser.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sstDocsConfig.browser.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAQlC,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED,wBAAgB,qBAAqB,CACnC,WAAW,CAAC,EAAE,MAAM,GACnB,qBAAqB,CAEvB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,qBAAqB,CAEvB;AAED,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,GACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfig.browser.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sstDocsConfig.browser.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.browser.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,IAAI,kBAAkB,CAC1B,GAAG,MAAM,gFAAgF,CAC1F,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAoB;IAEpB,OAAO,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAAoB;IAEpB,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB;IAElB,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAkB;IAElB,OAAO,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,GACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfig.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sstDocsConfig.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EACL,oBAAoB,EAEpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAIlC,wBAAsB,iBAAiB,CACrC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAIhC;AAED,wBAAgB,qBAAqB,CACnC,UAAU,CAAC,EAAE,MAAM,GAClB,qBAAqB,CAGvB;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAGhC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAGvB;AA6ED,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,GACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfig.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,OAAO,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sstDocsConfig.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,14 @@ export declare const SST_DOCS_CONFIG_FILENAME = "sst-docs.config.json";
|
|
|
3
3
|
export declare class SstDocsConfigError extends Error {
|
|
4
4
|
constructor(message: string);
|
|
5
5
|
}
|
|
6
|
+
export interface SstDocsConfigFieldReference {
|
|
7
|
+
key: string;
|
|
8
|
+
type: string;
|
|
9
|
+
required: boolean;
|
|
10
|
+
default?: string;
|
|
11
|
+
description: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const SST_DOCS_CONFIG_REFERENCE: SstDocsConfigFieldReference[];
|
|
6
14
|
export declare function parseConfigContents(contents: string, sourcePath: string): ResolvedSstDocsConfig;
|
|
7
15
|
export declare function derivePublicDataPath(fsDataPath: string): string;
|
|
8
16
|
export declare function resolvePublicDataPath(baseUrl: string, config: Pick<ResolvedSstDocsConfig, "PUBLIC_DATA_PATH"> | string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfigShared.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfigShared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sstDocsConfigShared.d.ts","sourceRoot":"","sources":["../../src/configs/sstDocsConfigShared.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAI/D,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,yBAAyB,EAAE,2BAA2B,EAkD1B,CAAC;AA+D1C,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,qBAAqB,CAwBvB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAc/D;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,GAAG,MAAM,GAC/D,MAAM,CAkBR"}
|
|
@@ -1,13 +1,120 @@
|
|
|
1
1
|
import { AVAILABLE_THEME_PRESET_NAMES, DEFAULT_THEME_PRESET, getThemePreset, isThemePresetName, } from "../themes/themeRegistry.js";
|
|
2
|
-
import path from "node:path";
|
|
3
2
|
import { normalizeSystemPath } from "../utilities/string/normalizeSystemPath.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
4
|
export const SST_DOCS_CONFIG_FILENAME = "sst-docs.config.json";
|
|
5
|
+
const DEFAULT_FS_DATA_PATH = "./public/SST-Docs/data";
|
|
6
|
+
const DEFAULT_OUTPUT_DIRECTORY = "./dist/html";
|
|
5
7
|
export class SstDocsConfigError extends Error {
|
|
6
8
|
constructor(message) {
|
|
7
9
|
super(message);
|
|
8
10
|
this.name = "SstDocsConfigError";
|
|
9
11
|
}
|
|
10
12
|
}
|
|
13
|
+
export const SST_DOCS_CONFIG_REFERENCE = [
|
|
14
|
+
{
|
|
15
|
+
key: "FS_DATA_PATH",
|
|
16
|
+
type: "string",
|
|
17
|
+
required: true,
|
|
18
|
+
default: DEFAULT_FS_DATA_PATH,
|
|
19
|
+
description: "Absolute or project-relative path to the docs data root (contains versions.json).",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
key: "HEADER_BRANDING.logoSrc",
|
|
23
|
+
type: "string",
|
|
24
|
+
required: false,
|
|
25
|
+
description: "Optional logo image path/URL shown in the header.",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
key: "HEADER_BRANDING.logoAlt",
|
|
29
|
+
type: "string",
|
|
30
|
+
required: false,
|
|
31
|
+
description: "Optional alt text for the logo image.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: "HEADER_BRANDING.logoText",
|
|
35
|
+
type: "string",
|
|
36
|
+
required: false,
|
|
37
|
+
description: "Optional text fallback when no logo image is provided.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY",
|
|
41
|
+
type: "string",
|
|
42
|
+
required: true,
|
|
43
|
+
default: DEFAULT_OUTPUT_DIRECTORY,
|
|
44
|
+
description: "Where the HTML generator writes the output bundle.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "HTML_GENERATOR_SETTINGS.THEME",
|
|
48
|
+
type: "string",
|
|
49
|
+
required: true,
|
|
50
|
+
default: DEFAULT_THEME_PRESET,
|
|
51
|
+
description: `Theme preset name. Options: ${AVAILABLE_THEME_PRESET_NAMES.join(", ")}.`,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: "HTML_GENERATOR_SETTINGS.SEPARATE_BUILD_FOR_HTML_GENERATOR",
|
|
55
|
+
type: "boolean",
|
|
56
|
+
required: false,
|
|
57
|
+
default: "false",
|
|
58
|
+
description: "Whether to run a separate build for the HTML generator.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
const optionalTrimmedString = z
|
|
62
|
+
.string()
|
|
63
|
+
.trim()
|
|
64
|
+
.transform((value) => (value.length > 0 ? value : undefined))
|
|
65
|
+
.optional();
|
|
66
|
+
const HeaderBrandingSchema = z
|
|
67
|
+
.object({
|
|
68
|
+
logoSrc: optionalTrimmedString,
|
|
69
|
+
logoAlt: optionalTrimmedString,
|
|
70
|
+
logoText: optionalTrimmedString,
|
|
71
|
+
})
|
|
72
|
+
.strict()
|
|
73
|
+
.transform((value) => value);
|
|
74
|
+
const HtmlGeneratorSettingsSchema = z
|
|
75
|
+
.object({
|
|
76
|
+
OUTPUT_DIRECTORY: z
|
|
77
|
+
.string()
|
|
78
|
+
.trim()
|
|
79
|
+
.min(1, {
|
|
80
|
+
message: `Set HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY (default: "${DEFAULT_OUTPUT_DIRECTORY}")`,
|
|
81
|
+
})
|
|
82
|
+
.transform((val) => normalizeSystemPath(val)),
|
|
83
|
+
THEME: z
|
|
84
|
+
.string()
|
|
85
|
+
.trim()
|
|
86
|
+
.min(1, {
|
|
87
|
+
message: `Set HTML_GENERATOR_SETTINGS.THEME (default: "${DEFAULT_THEME_PRESET}")`,
|
|
88
|
+
})
|
|
89
|
+
.transform((value, ctx) => {
|
|
90
|
+
const normalized = value.toLowerCase();
|
|
91
|
+
if (!isThemePresetName(normalized)) {
|
|
92
|
+
const options = AVAILABLE_THEME_PRESET_NAMES.join(", ");
|
|
93
|
+
ctx.addIssue({
|
|
94
|
+
code: z.ZodIssueCode.custom,
|
|
95
|
+
message: `HTML_GENERATOR_SETTINGS.THEME must be one of: ${options} (default: "${DEFAULT_THEME_PRESET}")`,
|
|
96
|
+
});
|
|
97
|
+
return z.NEVER;
|
|
98
|
+
}
|
|
99
|
+
return cloneTheme(getThemePreset(normalized));
|
|
100
|
+
}),
|
|
101
|
+
SEPARATE_BUILD_FOR_HTML_GENERATOR: z.boolean().default(false),
|
|
102
|
+
})
|
|
103
|
+
.strict()
|
|
104
|
+
.transform((value) => value);
|
|
105
|
+
const ConfigSchema = z
|
|
106
|
+
.object({
|
|
107
|
+
FS_DATA_PATH: z
|
|
108
|
+
.string()
|
|
109
|
+
.trim()
|
|
110
|
+
.min(1, {
|
|
111
|
+
message: `Provide FS_DATA_PATH (default: "${DEFAULT_FS_DATA_PATH}")`,
|
|
112
|
+
})
|
|
113
|
+
.transform((val) => normalizeSystemPath(val)),
|
|
114
|
+
HEADER_BRANDING: HeaderBrandingSchema.optional().transform((value) => value ?? {}),
|
|
115
|
+
HTML_GENERATOR_SETTINGS: HtmlGeneratorSettingsSchema.optional(),
|
|
116
|
+
})
|
|
117
|
+
.strict();
|
|
11
118
|
export function parseConfigContents(contents, sourcePath) {
|
|
12
119
|
let parsed;
|
|
13
120
|
try {
|
|
@@ -16,11 +123,21 @@ export function parseConfigContents(contents, sourcePath) {
|
|
|
16
123
|
catch (error) {
|
|
17
124
|
throw new SstDocsConfigError(`Failed to parse ${SST_DOCS_CONFIG_FILENAME}: ${error.message}`);
|
|
18
125
|
}
|
|
19
|
-
|
|
126
|
+
const result = ConfigSchema.safeParse(parsed);
|
|
127
|
+
if (!result.success) {
|
|
128
|
+
throw new SstDocsConfigError(formatConfigValidationError(sourcePath, result.error));
|
|
129
|
+
}
|
|
130
|
+
const resolved = result.data;
|
|
131
|
+
return {
|
|
132
|
+
FS_DATA_PATH: resolved.FS_DATA_PATH,
|
|
133
|
+
PUBLIC_DATA_PATH: derivePublicDataPath(resolved.FS_DATA_PATH),
|
|
134
|
+
HEADER_BRANDING: resolved.HEADER_BRANDING,
|
|
135
|
+
HTML_GENERATOR_SETTINGS: resolved.HTML_GENERATOR_SETTINGS,
|
|
136
|
+
};
|
|
20
137
|
}
|
|
21
138
|
export function derivePublicDataPath(fsDataPath) {
|
|
22
139
|
const normalizedFsPath = normalizeSystemPath(fsDataPath.trim());
|
|
23
|
-
const posixPath =
|
|
140
|
+
const posixPath = normalizePosixPath(normalizedFsPath || "/");
|
|
24
141
|
const segments = posixPath.split("/").filter(Boolean);
|
|
25
142
|
const publicIndex = segments.indexOf("public");
|
|
26
143
|
const publicSegments = publicIndex >= 0 ? segments.slice(publicIndex + 1) : segments;
|
|
@@ -47,14 +164,14 @@ export function resolvePublicDataPath(baseUrl, config) {
|
|
|
47
164
|
}
|
|
48
165
|
function normalizePublicPath(value) {
|
|
49
166
|
const normalized = normalizeSystemPath(value.trim());
|
|
50
|
-
const posixPath =
|
|
167
|
+
const posixPath = normalizePosixPath(normalized || "/");
|
|
51
168
|
const withLeading = posixPath.startsWith("/") ? posixPath : `/${posixPath}`;
|
|
52
169
|
return withLeading.endsWith("/") ? withLeading : `${withLeading}/`;
|
|
53
170
|
}
|
|
54
171
|
function joinUrlPaths(base, child) {
|
|
55
172
|
const normalizedBase = normalizePublicPath(base);
|
|
56
173
|
const normalizedChild = normalizePublicPath(child).replace(/^\/+/, "");
|
|
57
|
-
const joined =
|
|
174
|
+
const joined = normalizePosixPath(`${normalizedBase}${normalizedChild ? `/${normalizedChild}` : ""}`);
|
|
58
175
|
return joined.endsWith("/") ? joined : `${joined}/`;
|
|
59
176
|
}
|
|
60
177
|
function isAbsoluteUrl(value) {
|
|
@@ -66,100 +183,44 @@ function isAbsoluteUrl(value) {
|
|
|
66
183
|
return false;
|
|
67
184
|
}
|
|
68
185
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
throw new SstDocsConfigError(`Invalid configuration in ${sourcePath}: expected an object`);
|
|
72
|
-
}
|
|
73
|
-
const raw = value;
|
|
74
|
-
if (typeof raw.FS_DATA_PATH !== "string") {
|
|
75
|
-
throw new SstDocsConfigError(`Missing or invalid FS_DATA_PATH in ${sourcePath}`);
|
|
76
|
-
}
|
|
77
|
-
const fsDataPath = normalizeSystemPath(raw.FS_DATA_PATH.trim());
|
|
78
|
-
if (fsDataPath.length === 0) {
|
|
79
|
-
throw new SstDocsConfigError(`FS_DATA_PATH cannot be empty in ${sourcePath}`);
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
FS_DATA_PATH: fsDataPath,
|
|
83
|
-
PUBLIC_DATA_PATH: derivePublicDataPath(fsDataPath),
|
|
84
|
-
HEADER_BRANDING: normalizeHeaderBranding(raw.HEADER_BRANDING, sourcePath),
|
|
85
|
-
HTML_GENERATOR_SETTINGS: normalizeHtmlGeneratorSettings(raw.HTML_GENERATOR_SETTINGS, sourcePath),
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
function normalizeHeaderBranding(value, sourcePath) {
|
|
89
|
-
if (value === undefined) {
|
|
90
|
-
return {};
|
|
91
|
-
}
|
|
92
|
-
if (!value || typeof value !== "object") {
|
|
93
|
-
throw new SstDocsConfigError(`HEADER_BRANDING must be an object in ${sourcePath}`);
|
|
94
|
-
}
|
|
95
|
-
const { logoSrc, logoAlt, logoText } = value;
|
|
96
|
-
return {
|
|
97
|
-
logoSrc: normalizeOptionalString(logoSrc, "logoSrc", sourcePath),
|
|
98
|
-
logoAlt: normalizeOptionalString(logoAlt, "logoAlt", sourcePath),
|
|
99
|
-
logoText: normalizeOptionalString(logoText, "logoText", sourcePath),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function normalizeOptionalString(value, key, sourcePath) {
|
|
103
|
-
if (value === undefined || value === null)
|
|
104
|
-
return undefined;
|
|
105
|
-
if (typeof value !== "string") {
|
|
106
|
-
throw new SstDocsConfigError(`HEADER_BRANDING.${key} must be a string in ${sourcePath}`);
|
|
107
|
-
}
|
|
108
|
-
const trimmed = value.trim();
|
|
109
|
-
return trimmed.length > 0 ? trimmed : undefined;
|
|
110
|
-
}
|
|
111
|
-
function normalizeHtmlGeneratorSettings(value, sourcePath) {
|
|
112
|
-
if (value === undefined) {
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
116
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS must be an object in ${sourcePath}`);
|
|
117
|
-
}
|
|
118
|
-
const { OUTPUT_DIRECTORY, THEME, SEPARATE_BUILD_FOR_HTML_GENERATOR, } = value;
|
|
119
|
-
if (typeof OUTPUT_DIRECTORY !== "string") {
|
|
120
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY must be a string in ${sourcePath}`);
|
|
121
|
-
}
|
|
122
|
-
const outputDirectory = normalizeSystemPath(OUTPUT_DIRECTORY.trim());
|
|
123
|
-
if (outputDirectory.length === 0) {
|
|
124
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY cannot be empty in ${sourcePath}`);
|
|
125
|
-
}
|
|
126
|
-
if (THEME === undefined) {
|
|
127
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.THEME must be provided in ${sourcePath}`);
|
|
128
|
-
}
|
|
129
|
-
if (SEPARATE_BUILD_FOR_HTML_GENERATOR !== undefined &&
|
|
130
|
-
typeof SEPARATE_BUILD_FOR_HTML_GENERATOR !== "boolean") {
|
|
131
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.SEPARATE_BUILD_FOR_HTML_GENERATOR must be a boolean in ${sourcePath}`);
|
|
132
|
-
}
|
|
133
|
-
const resolvedTheme = resolveThemeConfiguration(THEME, sourcePath);
|
|
134
|
-
return {
|
|
135
|
-
OUTPUT_DIRECTORY: outputDirectory,
|
|
136
|
-
THEME: resolvedTheme,
|
|
137
|
-
SEPARATE_BUILD_FOR_HTML_GENERATOR: SEPARATE_BUILD_FOR_HTML_GENERATOR ?? false,
|
|
138
|
-
};
|
|
186
|
+
function cloneTheme(theme) {
|
|
187
|
+
return JSON.parse(JSON.stringify(theme));
|
|
139
188
|
}
|
|
140
|
-
function
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
189
|
+
function formatConfigValidationError(sourcePath, error) {
|
|
190
|
+
const lines = error.issues.map((issue) => {
|
|
191
|
+
const path = issue.path.join(".") || "config";
|
|
192
|
+
const defaultValue = defaultValueFor(path);
|
|
193
|
+
const hint = defaultValue ? ` (default: ${defaultValue})` : "";
|
|
194
|
+
return `${path}: ${issue.message}${hint}`;
|
|
195
|
+
});
|
|
196
|
+
return `Invalid configuration in ${sourcePath}:\n- ${lines.join("\n- ")}`;
|
|
146
197
|
}
|
|
147
|
-
function
|
|
148
|
-
|
|
149
|
-
return DEFAULT_THEME_PRESET;
|
|
150
|
-
}
|
|
151
|
-
if (typeof raw !== "string") {
|
|
152
|
-
const options = AVAILABLE_THEME_PRESET_NAMES.join(", ");
|
|
153
|
-
throw new SstDocsConfigError(`${propertyPath} must be one of: ${options} in ${sourcePath}`);
|
|
154
|
-
}
|
|
155
|
-
const normalized = raw.trim().toLowerCase();
|
|
156
|
-
if (!isThemePresetName(normalized)) {
|
|
157
|
-
const options = AVAILABLE_THEME_PRESET_NAMES.join(", ");
|
|
158
|
-
throw new SstDocsConfigError(`Unknown ${propertyPath} "${raw}" in ${sourcePath}. Supported presets: ${options}`);
|
|
159
|
-
}
|
|
160
|
-
return normalized;
|
|
198
|
+
function defaultValueFor(path) {
|
|
199
|
+
return SST_DOCS_CONFIG_REFERENCE.find((entry) => entry.key === path)?.default;
|
|
161
200
|
}
|
|
162
|
-
function
|
|
163
|
-
|
|
201
|
+
function normalizePosixPath(value) {
|
|
202
|
+
const sanitized = value.replace(/\\/g, "/");
|
|
203
|
+
const hasLeadingSlash = sanitized.startsWith("/");
|
|
204
|
+
const parts = sanitized.split("/");
|
|
205
|
+
const stack = [];
|
|
206
|
+
for (const part of parts) {
|
|
207
|
+
if (!part || part === ".")
|
|
208
|
+
continue;
|
|
209
|
+
if (part === "..") {
|
|
210
|
+
if (stack.length > 0 && stack[stack.length - 1] !== "..") {
|
|
211
|
+
stack.pop();
|
|
212
|
+
}
|
|
213
|
+
else if (!hasLeadingSlash) {
|
|
214
|
+
stack.push("..");
|
|
215
|
+
}
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
stack.push(part);
|
|
219
|
+
}
|
|
220
|
+
const normalized = stack.join("/");
|
|
221
|
+
if (hasLeadingSlash) {
|
|
222
|
+
return `/${normalized}`;
|
|
223
|
+
}
|
|
224
|
+
return normalized || ".";
|
|
164
225
|
}
|
|
165
226
|
//# sourceMappingURL=sstDocsConfigShared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sstDocsConfigShared.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfigShared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"sstDocsConfigShared.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfigShared.ts"],"names":[],"mappings":"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"}
|