@shadow-shard-tools/docs-core 1.0.17 → 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 +85 -5
- package/dist/cjs/configs/clientConfig.js +78 -0
- package/dist/cjs/configs/codeLanguagesConfig.js +36 -0
- package/dist/cjs/configs/index.browser.js +16 -0
- package/dist/cjs/configs/index.js +20 -0
- package/dist/cjs/configs/sstDocsConfig.browser.js +27 -0
- package/dist/cjs/configs/sstDocsConfig.js +88 -0
- package/dist/cjs/configs/sstDocsConfigShared.js +232 -0
- package/dist/cjs/constants/alignmentClasses.js +17 -0
- package/dist/cjs/constants/index.js +7 -0
- package/dist/cjs/constants/spacingClasses.js +9 -0
- package/dist/cjs/data/buildTree.js +131 -0
- package/dist/cjs/data/fsDataProvider.browser.js +10 -0
- package/dist/cjs/data/fsDataProvider.js +23 -0
- package/dist/cjs/data/httpDataProvider.js +25 -0
- package/dist/cjs/data/index.browser.js +17 -0
- package/dist/cjs/data/index.js +22 -0
- package/dist/cjs/data/loadAllCategories.js +30 -0
- package/dist/cjs/data/loadAllItems.js +26 -0
- package/dist/cjs/data/loadVersionData.fs.js +29 -0
- package/dist/cjs/data/loadVersionData.js +78 -0
- package/dist/cjs/data/loadVersions.js +6 -0
- package/dist/cjs/index.browser.js +22 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/themes/index.js +15 -0
- package/dist/cjs/themes/presets/default.js +121 -0
- package/dist/cjs/themes/styleThemeSchema.js +36 -0
- package/dist/cjs/themes/themeRegistry.js +22 -0
- package/dist/cjs/types/AudioData.js +2 -0
- package/dist/cjs/types/BaseImage.js +2 -0
- package/dist/cjs/types/Category.js +2 -0
- package/dist/cjs/types/CategoryTitleData.js +2 -0
- package/dist/cjs/types/ChartData.js +2 -0
- package/dist/cjs/types/ClientVisibleSstDocsConfig.js +2 -0
- package/dist/cjs/types/CodeData.js +2 -0
- package/dist/cjs/types/Content.js +2 -0
- package/dist/cjs/types/DataDiagnostic.js +2 -0
- package/dist/cjs/types/DataProvider.js +2 -0
- package/dist/cjs/types/DividerData.js +2 -0
- package/dist/cjs/types/DocItem.js +2 -0
- package/dist/cjs/types/HeaderBranding.js +2 -0
- package/dist/cjs/types/HtmlGeneratorSettings.js +2 -0
- package/dist/cjs/types/ImageCarouselData.js +2 -0
- package/dist/cjs/types/ImageCompareData.js +2 -0
- package/dist/cjs/types/ImageData.js +2 -0
- package/dist/cjs/types/ImageGridData.js +2 -0
- package/dist/cjs/types/IndexJson.js +2 -0
- package/dist/cjs/types/ListData.js +2 -0
- package/dist/cjs/types/Logger.js +2 -0
- package/dist/cjs/types/MathData.js +2 -0
- package/dist/cjs/types/MessageBoxData.js +2 -0
- package/dist/cjs/types/RawCategory.js +2 -0
- package/dist/cjs/types/SstDocsConfig.js +2 -0
- package/dist/cjs/types/StyleTheme.js +2 -0
- package/dist/cjs/types/TableData.js +2 -0
- package/dist/cjs/types/TextData.js +2 -0
- package/dist/cjs/types/TitleData.js +2 -0
- package/dist/cjs/types/Version.js +2 -0
- package/dist/cjs/types/YoutubeData.js +2 -0
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/utilities/dom/copyToClipboard.js +40 -0
- package/dist/cjs/utilities/dom/downloadTextFile.js +23 -0
- package/dist/cjs/utilities/dom/getResponsiveWidth.js +11 -0
- package/dist/cjs/utilities/file/getFileExtension.js +9 -0
- package/dist/cjs/utilities/index.browser.js +53 -0
- package/dist/cjs/utilities/index.js +53 -0
- package/dist/cjs/utilities/path/pathExists.browser.js +6 -0
- package/dist/cjs/utilities/path/pathExists.js +16 -0
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.js +13 -0
- package/dist/cjs/utilities/path/resolveDataPath.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveDataPath.js +18 -0
- package/dist/cjs/utilities/string/extractYouTubeId.js +18 -0
- package/dist/cjs/utilities/string/normalizeBaseUrlPath.js +11 -0
- package/dist/cjs/utilities/string/normalizeSystemPath.js +14 -0
- package/dist/cjs/utilities/string/processListItems.js +10 -0
- package/dist/cjs/utilities/string/sanitizeFilename.js +13 -0
- package/dist/cjs/utilities/string/slugify.js +12 -0
- package/dist/cjs/utilities/string/withBasePath.js +73 -0
- package/dist/cjs/utilities/system/createTimeout.js +11 -0
- package/dist/cjs/utilities/system/formatTime.js +12 -0
- package/dist/cjs/utilities/system/logger.browser.js +39 -0
- package/dist/cjs/utilities/system/logger.js +60 -0
- package/dist/cjs/utilities/validation/isMobileDevice.js +8 -0
- package/dist/cjs/utilities/validation/isValidColor.js +182 -0
- package/dist/cjs/utilities/validation/isValidImageUrl.js +42 -0
- package/dist/cjs/utilities/validation/isValidYouTubeId.js +9 -0
- package/dist/cjs/utilities/validation/validateScale.js +8 -0
- package/dist/configs/clientConfig.d.ts.map +1 -1
- package/dist/configs/clientConfig.js +38 -24
- 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/index.d.ts +1 -3
- package/dist/configs/index.d.ts.map +1 -1
- package/dist/configs/index.js +1 -3
- package/dist/configs/index.js.map +1 -1
- package/dist/configs/sstDocsConfig.browser.d.ts +8 -0
- package/dist/configs/sstDocsConfig.browser.d.ts.map +1 -0
- package/dist/configs/sstDocsConfig.browser.js +18 -0
- package/dist/configs/sstDocsConfig.browser.js.map +1 -0
- package/dist/configs/sstDocsConfig.d.ts +2 -2
- package/dist/configs/sstDocsConfig.d.ts.map +1 -1
- package/dist/configs/sstDocsConfig.js +18 -183
- package/dist/configs/sstDocsConfig.js.map +1 -1
- package/dist/configs/sstDocsConfigShared.d.ts +17 -0
- package/dist/configs/sstDocsConfigShared.d.ts.map +1 -0
- package/dist/configs/sstDocsConfigShared.js +226 -0
- package/dist/configs/sstDocsConfigShared.js.map +1 -0
- package/dist/data/buildTree.d.ts +6 -10
- package/dist/data/buildTree.d.ts.map +1 -1
- package/dist/data/buildTree.js +117 -162
- 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 +2 -1
- package/dist/data/fsDataProvider.d.ts.map +1 -1
- package/dist/data/fsDataProvider.js +15 -3
- package/dist/data/fsDataProvider.js.map +1 -1
- package/dist/data/httpDataProvider.d.ts +2 -1
- package/dist/data/httpDataProvider.d.ts.map +1 -1
- package/dist/data/httpDataProvider.js +17 -4
- package/dist/data/httpDataProvider.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 +4 -3
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +4 -3
- 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 +2 -2
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +2 -2
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/presets/default.d.ts +3 -0
- package/dist/themes/presets/default.d.ts.map +1 -0
- package/dist/themes/presets/default.js +119 -0
- package/dist/themes/presets/default.js.map +1 -0
- 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 +3 -4
- package/dist/themes/themeRegistry.d.ts.map +1 -1
- package/dist/themes/themeRegistry.js +11 -11
- package/dist/themes/themeRegistry.js.map +1 -1
- package/dist/types/Content.d.ts +35 -18
- package/dist/types/Content.d.ts.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 +3 -11
- package/dist/types/HtmlGeneratorSettings.d.ts.map +1 -1
- package/dist/types/StyleTheme.d.ts +115 -131
- package/dist/types/StyleTheme.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- 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/normalizeSystemPath.d.ts.map +1 -1
- package/dist/utilities/string/normalizeSystemPath.js +9 -1
- package/dist/utilities/string/normalizeSystemPath.js.map +1 -1
- package/dist/utilities/string/withBasePath.d.ts.map +1 -1
- package/dist/utilities/string/withBasePath.js +66 -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 +313 -160
- package/dist/browser/serverOnly.d.ts +0 -15
- package/dist/browser/serverOnly.d.ts.map +0 -1
- package/dist/browser/serverOnly.js +0 -33
- package/dist/browser/serverOnly.js.map +0 -1
- package/dist/browser.d.ts +0 -38
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js +0 -45
- package/dist/browser.js.map +0 -1
- package/dist/configs/sstDocsConfig.shared.d.ts +0 -8
- package/dist/configs/sstDocsConfig.shared.d.ts.map +0 -1
- package/dist/configs/sstDocsConfig.shared.js +0 -86
- package/dist/configs/sstDocsConfig.shared.js.map +0 -1
- package/dist/configs/stylesConfig.d.ts +0 -3
- package/dist/configs/stylesConfig.d.ts.map +0 -1
- package/dist/configs/stylesConfig.js +0 -8
- package/dist/configs/stylesConfig.js.map +0 -1
- package/dist/styles/themes.css +0 -1
- package/dist/styles/themes.css.map +0 -1
- package/dist/themes/baseThemeClasses.d.ts +0 -106
- package/dist/themes/baseThemeClasses.d.ts.map +0 -1
- package/dist/themes/baseThemeClasses.js +0 -106
- package/dist/themes/baseThemeClasses.js.map +0 -1
- package/dist/themes/darkTheme.d.ts +0 -3
- package/dist/themes/darkTheme.d.ts.map +0 -1
- package/dist/themes/darkTheme.js +0 -42
- package/dist/themes/darkTheme.js.map +0 -1
- package/dist/themes/lightTheme.d.ts +0 -3
- package/dist/themes/lightTheme.d.ts.map +0 -1
- package/dist/themes/lightTheme.js +0 -42
- package/dist/themes/lightTheme.js.map +0 -1
- package/dist/types/StylesConfig.d.ts +0 -8
- package/dist/types/StylesConfig.d.ts.map +0 -1
- package/dist/types/StylesConfig.js +0 -2
- package/dist/types/StylesConfig.js.map +0 -1
|
@@ -2,49 +2,16 @@ import { readFileSync } from "node:fs";
|
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import appRoot from "app-root-path";
|
|
5
|
-
import {
|
|
6
|
-
import { normalizeSystemPath } from "../utilities/string/normalizeSystemPath.js";
|
|
7
|
-
import { derivePublicDataPath, resolvePublicDataPath, SstDocsConfigError, SST_DOCS_CONFIG_FILENAME, } from "./sstDocsConfig.shared.js";
|
|
8
|
-
export { derivePublicDataPath, resolvePublicDataPath, SstDocsConfigError, SST_DOCS_CONFIG_FILENAME, };
|
|
5
|
+
import { derivePublicDataPath, parseConfigContents, resolvePublicDataPath, SST_DOCS_CONFIG_FILENAME, SstDocsConfigError, } from "./sstDocsConfigShared.js";
|
|
9
6
|
const APP_ROOT = appRoot.path;
|
|
10
|
-
const UTF8 = "utf-8";
|
|
11
7
|
export async function loadSstDocsConfig(configPath) {
|
|
12
|
-
const { path: finalPath, contents } = await
|
|
8
|
+
const { path: finalPath, contents } = await readConfigFile(configPath);
|
|
13
9
|
return parseConfigContents(contents, finalPath);
|
|
14
10
|
}
|
|
15
11
|
export function loadSstDocsConfigSync(configPath) {
|
|
16
|
-
const { path: finalPath, contents } =
|
|
12
|
+
const { path: finalPath, contents } = readConfigFileSync(configPath);
|
|
17
13
|
return parseConfigContents(contents, finalPath);
|
|
18
14
|
}
|
|
19
|
-
function parseConfigContents(contents, sourcePath) {
|
|
20
|
-
let parsed;
|
|
21
|
-
try {
|
|
22
|
-
parsed = JSON.parse(contents);
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
throw new SstDocsConfigError(`Failed to parse ${SST_DOCS_CONFIG_FILENAME}: ${error.message}`);
|
|
26
|
-
}
|
|
27
|
-
return normalizeConfig(parsed, sourcePath);
|
|
28
|
-
}
|
|
29
|
-
function normalizeConfig(value, sourcePath) {
|
|
30
|
-
if (!value || typeof value !== "object") {
|
|
31
|
-
throw new SstDocsConfigError(`Invalid configuration in ${sourcePath}: expected an object`);
|
|
32
|
-
}
|
|
33
|
-
const raw = value;
|
|
34
|
-
if (typeof raw.FS_DATA_PATH !== "string") {
|
|
35
|
-
throw new SstDocsConfigError(`Missing or invalid FS_DATA_PATH in ${sourcePath}`);
|
|
36
|
-
}
|
|
37
|
-
const fsDataPath = normalizeSystemPath(raw.FS_DATA_PATH.trim());
|
|
38
|
-
if (fsDataPath.length === 0) {
|
|
39
|
-
throw new SstDocsConfigError(`FS_DATA_PATH cannot be empty in ${sourcePath}`);
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
FS_DATA_PATH: fsDataPath,
|
|
43
|
-
PUBLIC_DATA_PATH: derivePublicDataPath(fsDataPath),
|
|
44
|
-
HEADER_BRANDING: normalizeHeaderBranding(raw.HEADER_BRANDING, sourcePath),
|
|
45
|
-
HTML_GENERATOR_SETTINGS: normalizeHtmlGeneratorSettings(raw.HTML_GENERATOR_SETTINGS, sourcePath),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
15
|
export async function loadSstDocsConfigFrom(configDir) {
|
|
49
16
|
const fullPath = resolve(configDir, SST_DOCS_CONFIG_FILENAME);
|
|
50
17
|
return loadSstDocsConfig(fullPath);
|
|
@@ -53,39 +20,43 @@ export function loadSstDocsConfigFromSync(configDir) {
|
|
|
53
20
|
const fullPath = resolve(configDir, SST_DOCS_CONFIG_FILENAME);
|
|
54
21
|
return loadSstDocsConfigSync(fullPath);
|
|
55
22
|
}
|
|
56
|
-
async function
|
|
23
|
+
async function readConfigFile(configPath) {
|
|
24
|
+
const searchPaths = getConfigSearchPaths(configPath);
|
|
57
25
|
const attempted = [];
|
|
58
26
|
for (const candidate of searchPaths) {
|
|
59
27
|
attempted.push(candidate);
|
|
60
28
|
try {
|
|
61
|
-
const contents = await
|
|
29
|
+
const contents = await readFile(candidate, "utf-8");
|
|
62
30
|
return { path: candidate, contents };
|
|
63
31
|
}
|
|
64
32
|
catch (error) {
|
|
65
|
-
|
|
33
|
+
const err = error;
|
|
34
|
+
if (err.code === "ENOENT" || err.code === "EISDIR") {
|
|
66
35
|
continue;
|
|
67
36
|
}
|
|
68
|
-
throw
|
|
37
|
+
throw new SstDocsConfigError(`Failed to read ${SST_DOCS_CONFIG_FILENAME} at ${candidate}: ${err.message}`);
|
|
69
38
|
}
|
|
70
39
|
}
|
|
71
|
-
throw
|
|
40
|
+
throw new SstDocsConfigError(`Unable to locate ${SST_DOCS_CONFIG_FILENAME}. Tried: ${attempted.join(", ")}`);
|
|
72
41
|
}
|
|
73
|
-
function
|
|
42
|
+
function readConfigFileSync(configPath) {
|
|
43
|
+
const searchPaths = getConfigSearchPaths(configPath);
|
|
74
44
|
const attempted = [];
|
|
75
45
|
for (const candidate of searchPaths) {
|
|
76
46
|
attempted.push(candidate);
|
|
77
47
|
try {
|
|
78
|
-
const contents =
|
|
48
|
+
const contents = readFileSync(candidate, "utf-8");
|
|
79
49
|
return { path: candidate, contents };
|
|
80
50
|
}
|
|
81
51
|
catch (error) {
|
|
82
|
-
|
|
52
|
+
const err = error;
|
|
53
|
+
if (err.code === "ENOENT" || err.code === "EISDIR") {
|
|
83
54
|
continue;
|
|
84
55
|
}
|
|
85
|
-
throw
|
|
56
|
+
throw new SstDocsConfigError(`Failed to read ${SST_DOCS_CONFIG_FILENAME} at ${candidate}: ${err.message}`);
|
|
86
57
|
}
|
|
87
58
|
}
|
|
88
|
-
throw
|
|
59
|
+
throw new SstDocsConfigError(`Unable to locate ${SST_DOCS_CONFIG_FILENAME}. Tried: ${attempted.join(", ")}`);
|
|
89
60
|
}
|
|
90
61
|
function getConfigSearchPaths(configPath) {
|
|
91
62
|
const searchPaths = [];
|
|
@@ -101,141 +72,5 @@ function getConfigSearchPaths(configPath) {
|
|
|
101
72
|
}
|
|
102
73
|
return searchPaths;
|
|
103
74
|
}
|
|
104
|
-
|
|
105
|
-
const code = error?.code;
|
|
106
|
-
return code === "ENOENT" || code === "EISDIR";
|
|
107
|
-
}
|
|
108
|
-
function wrapReadError(candidate, error) {
|
|
109
|
-
const message = error?.message ?? String(error);
|
|
110
|
-
return new SstDocsConfigError(`Failed to read ${SST_DOCS_CONFIG_FILENAME} at ${candidate}: ${message}`);
|
|
111
|
-
}
|
|
112
|
-
function missingConfigError(attempted) {
|
|
113
|
-
return new SstDocsConfigError(`Unable to locate ${SST_DOCS_CONFIG_FILENAME}. Tried: ${attempted.join(", ")}`);
|
|
114
|
-
}
|
|
115
|
-
function normalizeHeaderBranding(value, sourcePath) {
|
|
116
|
-
if (value === undefined) {
|
|
117
|
-
return {};
|
|
118
|
-
}
|
|
119
|
-
if (!value || typeof value !== "object") {
|
|
120
|
-
throw new SstDocsConfigError(`HEADER_BRANDING must be an object in ${sourcePath}`);
|
|
121
|
-
}
|
|
122
|
-
const { logoSrc, logoAlt, logoText } = value;
|
|
123
|
-
return {
|
|
124
|
-
logoSrc: normalizeOptionalString(logoSrc, "logoSrc", sourcePath),
|
|
125
|
-
logoAlt: normalizeOptionalString(logoAlt, "logoAlt", sourcePath),
|
|
126
|
-
logoText: normalizeOptionalString(logoText, "logoText", sourcePath),
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
function normalizeOptionalString(value, key, sourcePath) {
|
|
130
|
-
if (value === undefined || value === null)
|
|
131
|
-
return undefined;
|
|
132
|
-
if (typeof value !== "string") {
|
|
133
|
-
throw new SstDocsConfigError(`HEADER_BRANDING.${key} must be a string in ${sourcePath}`);
|
|
134
|
-
}
|
|
135
|
-
const trimmed = value.trim();
|
|
136
|
-
return trimmed.length > 0 ? trimmed : undefined;
|
|
137
|
-
}
|
|
138
|
-
function normalizeHtmlGeneratorSettings(value, sourcePath) {
|
|
139
|
-
if (value === undefined) {
|
|
140
|
-
return undefined;
|
|
141
|
-
}
|
|
142
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
143
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS must be an object in ${sourcePath}`);
|
|
144
|
-
}
|
|
145
|
-
const { OUTPUT_DIRECTORY, THEME, SEPARATE_BUILD_FOR_HTML_GENERATOR, } = value;
|
|
146
|
-
if (typeof OUTPUT_DIRECTORY !== "string") {
|
|
147
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY must be a string in ${sourcePath}`);
|
|
148
|
-
}
|
|
149
|
-
const outputDirectory = normalizeSystemPath(OUTPUT_DIRECTORY.trim());
|
|
150
|
-
if (outputDirectory.length === 0) {
|
|
151
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.OUTPUT_DIRECTORY cannot be empty in ${sourcePath}`);
|
|
152
|
-
}
|
|
153
|
-
if (THEME === undefined) {
|
|
154
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.THEME must be provided in ${sourcePath}`);
|
|
155
|
-
}
|
|
156
|
-
if (SEPARATE_BUILD_FOR_HTML_GENERATOR !== undefined &&
|
|
157
|
-
typeof SEPARATE_BUILD_FOR_HTML_GENERATOR !== "boolean") {
|
|
158
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.SEPARATE_BUILD_FOR_HTML_GENERATOR must be a boolean in ${sourcePath}`);
|
|
159
|
-
}
|
|
160
|
-
const resolvedTheme = resolveThemeConfiguration(THEME, sourcePath);
|
|
161
|
-
return {
|
|
162
|
-
OUTPUT_DIRECTORY: outputDirectory,
|
|
163
|
-
THEME: resolvedTheme,
|
|
164
|
-
SEPARATE_BUILD_FOR_HTML_GENERATOR: SEPARATE_BUILD_FOR_HTML_GENERATOR ?? false,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
function resolveThemeConfiguration(value, sourcePath) {
|
|
168
|
-
if (typeof value === "string") {
|
|
169
|
-
return cloneThemeFromPreset(value, sourcePath, "HTML_GENERATOR_SETTINGS.THEME");
|
|
170
|
-
}
|
|
171
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
172
|
-
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.THEME must be a string or object in ${sourcePath}`);
|
|
173
|
-
}
|
|
174
|
-
const themeObject = value;
|
|
175
|
-
let baseThemeName = DEFAULT_THEME_PRESET;
|
|
176
|
-
if (themeObject.preset !== undefined) {
|
|
177
|
-
baseThemeName = ensureThemePresetName(themeObject.preset, sourcePath, "HTML_GENERATOR_SETTINGS.THEME.preset");
|
|
178
|
-
}
|
|
179
|
-
else if (themeObject.extend !== undefined) {
|
|
180
|
-
baseThemeName = ensureThemePresetName(themeObject.extend, sourcePath, "HTML_GENERATOR_SETTINGS.THEME.extend");
|
|
181
|
-
}
|
|
182
|
-
const overrides = { ...themeObject };
|
|
183
|
-
delete overrides.preset;
|
|
184
|
-
delete overrides.extend;
|
|
185
|
-
const baseTheme = cloneTheme(getThemePreset(baseThemeName));
|
|
186
|
-
return applyThemeOverrides(baseTheme, overrides, sourcePath);
|
|
187
|
-
}
|
|
188
|
-
function cloneThemeFromPreset(preset, sourcePath, propertyPath) {
|
|
189
|
-
const themeName = ensureThemePresetName(preset, sourcePath, propertyPath);
|
|
190
|
-
const presetTheme = getThemePreset(themeName);
|
|
191
|
-
return cloneTheme(presetTheme);
|
|
192
|
-
}
|
|
193
|
-
function ensureThemePresetName(raw, sourcePath, propertyPath) {
|
|
194
|
-
if (raw === undefined || raw === null) {
|
|
195
|
-
return DEFAULT_THEME_PRESET;
|
|
196
|
-
}
|
|
197
|
-
if (typeof raw !== "string") {
|
|
198
|
-
const options = AVAILABLE_THEME_PRESET_NAMES.join(", ");
|
|
199
|
-
throw new SstDocsConfigError(`${propertyPath} must be one of: ${options} in ${sourcePath}`);
|
|
200
|
-
}
|
|
201
|
-
const normalized = raw.trim().toLowerCase();
|
|
202
|
-
if (!isThemePresetName(normalized)) {
|
|
203
|
-
const options = AVAILABLE_THEME_PRESET_NAMES.join(", ");
|
|
204
|
-
throw new SstDocsConfigError(`Unknown ${propertyPath} "${raw}" in ${sourcePath}. Supported presets: ${options}`);
|
|
205
|
-
}
|
|
206
|
-
return normalized;
|
|
207
|
-
}
|
|
208
|
-
function applyThemeOverrides(theme, overrides, sourcePath) {
|
|
209
|
-
mergeThemeFragments(theme, overrides, sourcePath, "HTML_GENERATOR_SETTINGS.THEME");
|
|
210
|
-
return theme;
|
|
211
|
-
}
|
|
212
|
-
function mergeThemeFragments(target, overrides, sourcePath, path) {
|
|
213
|
-
const targetRecord = target;
|
|
214
|
-
for (const [key, value] of Object.entries(overrides)) {
|
|
215
|
-
if (value === undefined) {
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
if (!(key in targetRecord)) {
|
|
219
|
-
throw new SstDocsConfigError(`${path}.${key} is not a recognized theme field in ${sourcePath}`);
|
|
220
|
-
}
|
|
221
|
-
const current = targetRecord[key];
|
|
222
|
-
if (current &&
|
|
223
|
-
typeof current === "object" &&
|
|
224
|
-
!Array.isArray(current)) {
|
|
225
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
226
|
-
throw new SstDocsConfigError(`${path}.${key} must be an object in ${sourcePath}`);
|
|
227
|
-
}
|
|
228
|
-
targetRecord[key] = { ...current };
|
|
229
|
-
mergeThemeFragments(targetRecord[key], value, sourcePath, `${path}.${key}`);
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
if (typeof value !== "string") {
|
|
233
|
-
throw new SstDocsConfigError(`${path}.${key} must be a string in ${sourcePath}`);
|
|
234
|
-
}
|
|
235
|
-
targetRecord[key] = value;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
function cloneTheme(theme) {
|
|
239
|
-
return JSON.parse(JSON.stringify(theme));
|
|
240
|
-
}
|
|
75
|
+
export { derivePublicDataPath, resolvePublicDataPath, SST_DOCS_CONFIG_FILENAME, SstDocsConfigError, };
|
|
241
76
|
//# sourceMappingURL=sstDocsConfig.js.map
|
|
@@ -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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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ResolvedSstDocsConfig } from "../types/SstDocsConfig.js";
|
|
2
|
+
export declare const SST_DOCS_CONFIG_FILENAME = "sst-docs.config.json";
|
|
3
|
+
export declare class SstDocsConfigError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
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[];
|
|
14
|
+
export declare function parseConfigContents(contents: string, sourcePath: string): ResolvedSstDocsConfig;
|
|
15
|
+
export declare function derivePublicDataPath(fsDataPath: string): string;
|
|
16
|
+
export declare function resolvePublicDataPath(baseUrl: string, config: Pick<ResolvedSstDocsConfig, "PUBLIC_DATA_PATH"> | string): string;
|
|
17
|
+
//# sourceMappingURL=sstDocsConfigShared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { AVAILABLE_THEME_PRESET_NAMES, DEFAULT_THEME_PRESET, getThemePreset, isThemePresetName, } from "../themes/themeRegistry.js";
|
|
2
|
+
import { normalizeSystemPath } from "../utilities/string/normalizeSystemPath.js";
|
|
3
|
+
import { z } from "zod";
|
|
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";
|
|
7
|
+
export class SstDocsConfigError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "SstDocsConfigError";
|
|
11
|
+
}
|
|
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();
|
|
118
|
+
export function parseConfigContents(contents, sourcePath) {
|
|
119
|
+
let parsed;
|
|
120
|
+
try {
|
|
121
|
+
parsed = JSON.parse(contents);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw new SstDocsConfigError(`Failed to parse ${SST_DOCS_CONFIG_FILENAME}: ${error.message}`);
|
|
125
|
+
}
|
|
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
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function derivePublicDataPath(fsDataPath) {
|
|
139
|
+
const normalizedFsPath = normalizeSystemPath(fsDataPath.trim());
|
|
140
|
+
const posixPath = normalizePosixPath(normalizedFsPath || "/");
|
|
141
|
+
const segments = posixPath.split("/").filter(Boolean);
|
|
142
|
+
const publicIndex = segments.indexOf("public");
|
|
143
|
+
const publicSegments = publicIndex >= 0 ? segments.slice(publicIndex + 1) : segments;
|
|
144
|
+
if (publicSegments.length === 0) {
|
|
145
|
+
return "/";
|
|
146
|
+
}
|
|
147
|
+
const joined = `/${publicSegments.join("/")}`;
|
|
148
|
+
return joined.endsWith("/") ? joined : `${joined}/`;
|
|
149
|
+
}
|
|
150
|
+
export function resolvePublicDataPath(baseUrl, config) {
|
|
151
|
+
const publicPath = typeof config === "string" ? config : config.PUBLIC_DATA_PATH;
|
|
152
|
+
const normalizedPublicPath = normalizePublicPath(publicPath);
|
|
153
|
+
if (!baseUrl || baseUrl.trim().length === 0) {
|
|
154
|
+
return normalizedPublicPath;
|
|
155
|
+
}
|
|
156
|
+
if (isAbsoluteUrl(baseUrl)) {
|
|
157
|
+
const url = new URL(baseUrl);
|
|
158
|
+
url.pathname = joinUrlPaths(url.pathname || "/", normalizedPublicPath);
|
|
159
|
+
return url.toString();
|
|
160
|
+
}
|
|
161
|
+
const parsedBase = new URL(baseUrl, "http://local.placeholder");
|
|
162
|
+
const joinedPath = joinUrlPaths(parsedBase.pathname || "/", normalizedPublicPath);
|
|
163
|
+
return `${joinedPath}${parsedBase.search}${parsedBase.hash}`;
|
|
164
|
+
}
|
|
165
|
+
function normalizePublicPath(value) {
|
|
166
|
+
const normalized = normalizeSystemPath(value.trim());
|
|
167
|
+
const posixPath = normalizePosixPath(normalized || "/");
|
|
168
|
+
const withLeading = posixPath.startsWith("/") ? posixPath : `/${posixPath}`;
|
|
169
|
+
return withLeading.endsWith("/") ? withLeading : `${withLeading}/`;
|
|
170
|
+
}
|
|
171
|
+
function joinUrlPaths(base, child) {
|
|
172
|
+
const normalizedBase = normalizePublicPath(base);
|
|
173
|
+
const normalizedChild = normalizePublicPath(child).replace(/^\/+/, "");
|
|
174
|
+
const joined = normalizePosixPath(`${normalizedBase}${normalizedChild ? `/${normalizedChild}` : ""}`);
|
|
175
|
+
return joined.endsWith("/") ? joined : `${joined}/`;
|
|
176
|
+
}
|
|
177
|
+
function isAbsoluteUrl(value) {
|
|
178
|
+
try {
|
|
179
|
+
new URL(value);
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function cloneTheme(theme) {
|
|
187
|
+
return JSON.parse(JSON.stringify(theme));
|
|
188
|
+
}
|
|
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- ")}`;
|
|
197
|
+
}
|
|
198
|
+
function defaultValueFor(path) {
|
|
199
|
+
return SST_DOCS_CONFIG_REFERENCE.find((entry) => entry.key === path)?.default;
|
|
200
|
+
}
|
|
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 || ".";
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=sstDocsConfigShared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sstDocsConfigShared.js","sourceRoot":"","sources":["../../src/configs/sstDocsConfigShared.ts"],"names":[],"mappings":"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"}
|
package/dist/data/buildTree.d.ts
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import type { Category } from "../types/Category.js";
|
|
2
|
+
import type { DataDiagnostic } from "../types/DataDiagnostic.js";
|
|
2
3
|
import type { DocItem } from "../types/DocItem.js";
|
|
3
4
|
import type { RawCategory } from "../types/RawCategory.js";
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
categoryId?: string;
|
|
8
|
-
childId?: string;
|
|
9
|
-
docId?: string;
|
|
10
|
-
path?: string[];
|
|
11
|
-
message: string;
|
|
5
|
+
import type { Logger } from "../types/Logger.js";
|
|
6
|
+
interface BuildTreeOptions {
|
|
7
|
+
logger?: Logger;
|
|
12
8
|
}
|
|
13
9
|
export interface BuildTreeResult {
|
|
14
10
|
tree: Category[];
|
|
15
11
|
usedDocIds: Set<string>;
|
|
16
|
-
|
|
12
|
+
diagnostics: DataDiagnostic[];
|
|
17
13
|
}
|
|
18
|
-
export declare function buildTree(rawMap: Record<string, RawCategory>, allDocs: DocItem[]): BuildTreeResult;
|
|
14
|
+
export declare function buildTree(rawMap: Record<string, RawCategory>, allDocs: DocItem[], options?: BuildTreeOptions): BuildTreeResult;
|
|
19
15
|
export {};
|
|
20
16
|
//# sourceMappingURL=buildTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTree.d.ts","sourceRoot":"","sources":["../../src/data/buildTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"buildTree.d.ts","sourceRoot":"","sources":["../../src/data/buildTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AA8HD,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,EAAE,gBAAgB,GACzB,eAAe,CAkDjB"}
|