@shadow-shard-tools/docs-core 1.0.17 → 1.0.18
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 +28 -5
- package/dist/cjs/configs/clientConfig.js +162 -0
- package/dist/cjs/configs/codeLanguagesConfig.js +36 -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 +174 -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 +93 -0
- package/dist/cjs/data/fsDataProvider.js +23 -0
- package/dist/cjs/data/httpDataProvider.js +25 -0
- package/dist/cjs/data/index.js +19 -0
- package/dist/cjs/data/loadAllCategories.js +20 -0
- package/dist/cjs/data/loadAllItems.js +14 -0
- package/dist/cjs/data/loadVersionData.js +16 -0
- package/dist/cjs/data/loadVersions.js +6 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/themes/index.js +11 -0
- package/dist/cjs/themes/presets/default.js +121 -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/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.js +53 -0
- package/dist/cjs/utilities/path/pathExists.js +16 -0
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.js +13 -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 +45 -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.js +40 -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 +115 -17
- package/dist/configs/clientConfig.js.map +1 -1
- 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/{sstDocsConfig.shared.d.ts → sstDocsConfigShared.d.ts} +3 -2
- package/dist/configs/sstDocsConfigShared.d.ts.map +1 -0
- package/dist/configs/sstDocsConfigShared.js +165 -0
- package/dist/configs/sstDocsConfigShared.js.map +1 -0
- package/dist/data/buildTree.d.ts +2 -14
- package/dist/data/buildTree.d.ts.map +1 -1
- package/dist/data/buildTree.js +79 -162
- package/dist/data/buildTree.js.map +1 -1
- 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.d.ts +2 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +2 -2
- package/dist/data/index.js.map +1 -1
- package/dist/themes/index.d.ts +1 -2
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +1 -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/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/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 +1 -2
- package/dist/types/index.d.ts.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 +35 -6
- package/dist/utilities/string/withBasePath.js.map +1 -1
- package/package.json +141 -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.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
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { AVAILABLE_THEME_PRESET_NAMES, DEFAULT_THEME_PRESET, getThemePreset, isThemePresetName, } from "../themes/themeRegistry.js";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { normalizeSystemPath } from "../utilities/string/normalizeSystemPath.js";
|
|
4
|
+
export const SST_DOCS_CONFIG_FILENAME = "sst-docs.config.json";
|
|
5
|
+
export class SstDocsConfigError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "SstDocsConfigError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function parseConfigContents(contents, sourcePath) {
|
|
12
|
+
let parsed;
|
|
13
|
+
try {
|
|
14
|
+
parsed = JSON.parse(contents);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new SstDocsConfigError(`Failed to parse ${SST_DOCS_CONFIG_FILENAME}: ${error.message}`);
|
|
18
|
+
}
|
|
19
|
+
return normalizeConfig(parsed, sourcePath);
|
|
20
|
+
}
|
|
21
|
+
export function derivePublicDataPath(fsDataPath) {
|
|
22
|
+
const normalizedFsPath = normalizeSystemPath(fsDataPath.trim());
|
|
23
|
+
const posixPath = path.posix.normalize(normalizedFsPath || "/");
|
|
24
|
+
const segments = posixPath.split("/").filter(Boolean);
|
|
25
|
+
const publicIndex = segments.indexOf("public");
|
|
26
|
+
const publicSegments = publicIndex >= 0 ? segments.slice(publicIndex + 1) : segments;
|
|
27
|
+
if (publicSegments.length === 0) {
|
|
28
|
+
return "/";
|
|
29
|
+
}
|
|
30
|
+
const joined = `/${publicSegments.join("/")}`;
|
|
31
|
+
return joined.endsWith("/") ? joined : `${joined}/`;
|
|
32
|
+
}
|
|
33
|
+
export function resolvePublicDataPath(baseUrl, config) {
|
|
34
|
+
const publicPath = typeof config === "string" ? config : config.PUBLIC_DATA_PATH;
|
|
35
|
+
const normalizedPublicPath = normalizePublicPath(publicPath);
|
|
36
|
+
if (!baseUrl || baseUrl.trim().length === 0) {
|
|
37
|
+
return normalizedPublicPath;
|
|
38
|
+
}
|
|
39
|
+
if (isAbsoluteUrl(baseUrl)) {
|
|
40
|
+
const url = new URL(baseUrl);
|
|
41
|
+
url.pathname = joinUrlPaths(url.pathname || "/", normalizedPublicPath);
|
|
42
|
+
return url.toString();
|
|
43
|
+
}
|
|
44
|
+
const parsedBase = new URL(baseUrl, "http://local.placeholder");
|
|
45
|
+
const joinedPath = joinUrlPaths(parsedBase.pathname || "/", normalizedPublicPath);
|
|
46
|
+
return `${joinedPath}${parsedBase.search}${parsedBase.hash}`;
|
|
47
|
+
}
|
|
48
|
+
function normalizePublicPath(value) {
|
|
49
|
+
const normalized = normalizeSystemPath(value.trim());
|
|
50
|
+
const posixPath = path.posix.normalize(normalized || "/");
|
|
51
|
+
const withLeading = posixPath.startsWith("/") ? posixPath : `/${posixPath}`;
|
|
52
|
+
return withLeading.endsWith("/") ? withLeading : `${withLeading}/`;
|
|
53
|
+
}
|
|
54
|
+
function joinUrlPaths(base, child) {
|
|
55
|
+
const normalizedBase = normalizePublicPath(base);
|
|
56
|
+
const normalizedChild = normalizePublicPath(child).replace(/^\/+/, "");
|
|
57
|
+
const joined = path.posix.join(normalizedBase, normalizedChild);
|
|
58
|
+
return joined.endsWith("/") ? joined : `${joined}/`;
|
|
59
|
+
}
|
|
60
|
+
function isAbsoluteUrl(value) {
|
|
61
|
+
try {
|
|
62
|
+
new URL(value);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function normalizeConfig(value, sourcePath) {
|
|
70
|
+
if (!value || typeof value !== "object") {
|
|
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
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function resolveThemeConfiguration(value, sourcePath) {
|
|
141
|
+
if (typeof value !== "string") {
|
|
142
|
+
throw new SstDocsConfigError(`HTML_GENERATOR_SETTINGS.THEME must be a string preset in ${sourcePath}`);
|
|
143
|
+
}
|
|
144
|
+
const themeName = ensureThemePresetName(value, sourcePath, "HTML_GENERATOR_SETTINGS.THEME");
|
|
145
|
+
return cloneTheme(getThemePreset(themeName));
|
|
146
|
+
}
|
|
147
|
+
function ensureThemePresetName(raw, sourcePath, propertyPath) {
|
|
148
|
+
if (raw === undefined || raw === null) {
|
|
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;
|
|
161
|
+
}
|
|
162
|
+
function cloneTheme(theme) {
|
|
163
|
+
return JSON.parse(JSON.stringify(theme));
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=sstDocsConfigShared.js.map
|
|
@@ -0,0 +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;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,UAAkB;IAElB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAC1B,mBAAmB,wBAAwB,KAAM,KAAe,CAAC,OAAO,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,cAAc,GAClB,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEhE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,MAAgE;IAEhE,MAAM,UAAU,GACd,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAChE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE7D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,EAAE,oBAAoB,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,IAAI,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAClF,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;IAC5E,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,KAAc,EACd,UAAkB;IAElB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,kBAAkB,CAC1B,4BAA4B,UAAU,sBAAsB,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,KAAmC,CAAC;IAChD,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,kBAAkB,CAC1B,sCAAsC,UAAU,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAC1B,mCAAmC,UAAU,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,UAAU;QACxB,gBAAgB,EAAE,oBAAoB,CAAC,UAAU,CAAC;QAClD,eAAe,EAAE,uBAAuB,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC;QACzE,uBAAuB,EAAE,8BAA8B,CACrD,GAAG,CAAC,uBAAuB,EAC3B,UAAU,CACX;KACF,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc,EACd,UAAkB;IAElB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,kBAAkB,CAC1B,wCAAwC,UAAU,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAgC,CAAC;IAExE,OAAO;QACL,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;QAChE,OAAO,EAAE,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;QAChE,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc,EACd,GAAW,EACX,UAAkB;IAElB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,kBAAkB,CAC1B,mBAAmB,GAAG,wBAAwB,UAAU,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAc,EACd,UAAkB;IAElB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,kBAAkB,CAC1B,gDAAgD,UAAU,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,EACJ,gBAAgB,EAChB,KAAK,EACL,iCAAiC,GAClC,GAAG,KAAgC,CAAC;IAErC,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,kBAAkB,CAC1B,gEAAgE,UAAU,EAAE,CAC7E,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,kBAAkB,CAC1B,+DAA+D,UAAU,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,kBAAkB,CAC1B,qDAAqD,UAAU,EAAE,CAClE,CAAC;IACJ,CAAC;IAED,IACE,iCAAiC,KAAK,SAAS;QAC/C,OAAO,iCAAiC,KAAK,SAAS,EACtD,CAAC;QACD,MAAM,IAAI,kBAAkB,CAC1B,kFAAkF,UAAU,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAEnE,OAAO;QACL,gBAAgB,EAAE,eAAe;QACjC,KAAK,EAAE,aAAa;QACpB,iCAAiC,EAC9B,iCAAyD,IAAI,KAAK;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAc,EACd,UAAkB;IAElB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,kBAAkB,CAC1B,4DAA4D,UAAU,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CACrC,KAAK,EACL,UAAU,EACV,+BAA+B,CAChC,CAAC;IAEF,OAAO,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAY,EACZ,UAAkB,EAClB,YAAoB;IAEpB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,kBAAkB,CAC1B,GAAG,YAAY,oBAAoB,OAAO,OAAO,UAAU,EAAE,CAC9D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,kBAAkB,CAC1B,WAAW,YAAY,KAAK,GAAG,QAAQ,UAAU,wBAAwB,OAAO,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAe,CAAC;AACzD,CAAC"}
|
package/dist/data/buildTree.d.ts
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
import type { Category } from "../types/Category.js";
|
|
2
2
|
import type { DocItem } from "../types/DocItem.js";
|
|
3
3
|
import type { RawCategory } from "../types/RawCategory.js";
|
|
4
|
-
|
|
5
|
-
export interface BuildTreeIssue {
|
|
6
|
-
type: BuildTreeIssueType;
|
|
7
|
-
categoryId?: string;
|
|
8
|
-
childId?: string;
|
|
9
|
-
docId?: string;
|
|
10
|
-
path?: string[];
|
|
11
|
-
message: string;
|
|
12
|
-
}
|
|
13
|
-
export interface BuildTreeResult {
|
|
4
|
+
export declare function buildTree(rawMap: Record<string, RawCategory>, allDocs: DocItem[]): {
|
|
14
5
|
tree: Category[];
|
|
15
6
|
usedDocIds: Set<string>;
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
export declare function buildTree(rawMap: Record<string, RawCategory>, allDocs: DocItem[]): BuildTreeResult;
|
|
19
|
-
export {};
|
|
7
|
+
};
|
|
20
8
|
//# 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,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
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,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA2F3D,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,OAAO,EAAE,OAAO,EAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CA8C/C"}
|
package/dist/data/buildTree.js
CHANGED
|
@@ -1,174 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// First pass: collect valid category ids.
|
|
6
|
-
const categoryIds = new Set();
|
|
7
|
-
for (const raw of Object.values(rawMap)) {
|
|
8
|
-
const id = typeof raw?.id === "string" ? raw.id.trim() : "";
|
|
9
|
-
if (id.length === 0) {
|
|
10
|
-
errors.push({
|
|
11
|
-
type: "invalidCategoryId",
|
|
12
|
-
message: "Encountered category with missing or invalid id.",
|
|
13
|
-
});
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
if (categoryIds.has(id)) {
|
|
17
|
-
errors.push({
|
|
18
|
-
type: "invalidCategoryId",
|
|
19
|
-
categoryId: id,
|
|
20
|
-
message: `Duplicate category id "${id}" encountered.`,
|
|
21
|
-
});
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
categoryIds.add(id);
|
|
1
|
+
function convertCategory(raw, rawMap, docLookup, usedDocIds, included, visiting) {
|
|
2
|
+
if (visiting.has(raw.id)) {
|
|
3
|
+
console.warn(`Detected circular category reference at ${raw.id}.`);
|
|
4
|
+
return null;
|
|
25
5
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (raw.docs !== undefined && !Array.isArray(raw.docs)) {
|
|
36
|
-
errors.push({
|
|
37
|
-
type: "invalidDocsField",
|
|
38
|
-
categoryId: id,
|
|
39
|
-
message: `Category "${id}" has an invalid docs field (expected array).`,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
else if (Array.isArray(raw.docs)) {
|
|
43
|
-
const collected = [];
|
|
44
|
-
for (const rawDocId of raw.docs) {
|
|
45
|
-
if (typeof rawDocId !== "string" || rawDocId.trim().length === 0) {
|
|
46
|
-
errors.push({
|
|
47
|
-
type: "invalidDocId",
|
|
48
|
-
categoryId: id,
|
|
49
|
-
docId: rawDocId,
|
|
50
|
-
message: `Category "${id}" references an invalid doc id.`,
|
|
51
|
-
});
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
const docId = rawDocId.trim();
|
|
55
|
-
const doc = docLookup.get(docId);
|
|
56
|
-
if (!doc) {
|
|
57
|
-
errors.push({
|
|
58
|
-
type: "missingDoc",
|
|
59
|
-
categoryId: id,
|
|
60
|
-
docId,
|
|
61
|
-
message: `Doc id "${docId}" referenced in category "${id}" was not found.`,
|
|
62
|
-
});
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
collected.push(doc);
|
|
66
|
-
usedDocIds.add(docId);
|
|
6
|
+
visiting.add(raw.id);
|
|
7
|
+
let docs;
|
|
8
|
+
const docIds = Array.isArray(raw.docs) ? raw.docs : [];
|
|
9
|
+
if (docIds.length > 0) {
|
|
10
|
+
const validDocs = docIds
|
|
11
|
+
.map((rawId) => {
|
|
12
|
+
if (typeof rawId !== "string" || rawId.length === 0) {
|
|
13
|
+
console.warn(`Invalid doc id in category ${raw.id}:`, rawId);
|
|
14
|
+
return null;
|
|
67
15
|
}
|
|
68
|
-
|
|
69
|
-
|
|
16
|
+
const doc = docLookup.get(rawId);
|
|
17
|
+
if (!doc) {
|
|
18
|
+
console.warn(`Doc id ${rawId} referenced in category ${raw.id} not found.`);
|
|
19
|
+
return null;
|
|
70
20
|
}
|
|
21
|
+
usedDocIds.add(rawId);
|
|
22
|
+
return doc;
|
|
23
|
+
})
|
|
24
|
+
.filter((doc) => doc !== null);
|
|
25
|
+
if (validDocs.length > 0) {
|
|
26
|
+
docs = validDocs;
|
|
71
27
|
}
|
|
72
|
-
const childIds = [];
|
|
73
|
-
if (raw.children !== undefined && !Array.isArray(raw.children)) {
|
|
74
|
-
errors.push({
|
|
75
|
-
type: "invalidChildrenField",
|
|
76
|
-
categoryId: id,
|
|
77
|
-
message: `Category "${id}" has an invalid children field (expected array).`,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
else if (Array.isArray(raw.children)) {
|
|
81
|
-
for (const rawChildId of raw.children) {
|
|
82
|
-
if (typeof rawChildId !== "string" ||
|
|
83
|
-
rawChildId.trim().length === 0) {
|
|
84
|
-
errors.push({
|
|
85
|
-
type: "invalidChildId",
|
|
86
|
-
categoryId: id,
|
|
87
|
-
childId: rawChildId,
|
|
88
|
-
message: `Category "${id}" references an invalid child category id.`,
|
|
89
|
-
});
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
const childId = rawChildId.trim();
|
|
93
|
-
if (!categoryIds.has(childId)) {
|
|
94
|
-
errors.push({
|
|
95
|
-
type: "missingCategory",
|
|
96
|
-
categoryId: id,
|
|
97
|
-
childId,
|
|
98
|
-
message: `Child category "${childId}" referenced in "${id}" was not found.`,
|
|
99
|
-
});
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
childIds.push(childId);
|
|
103
|
-
referencedAsChild.set(childId, (referencedAsChild.get(childId) ?? 0) + 1);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
prepared.set(id, { raw, docs, childIds });
|
|
107
28
|
}
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const cyclePath = [...stack, id];
|
|
117
|
-
errors.push({
|
|
118
|
-
type: "cycle",
|
|
119
|
-
path: cyclePath,
|
|
120
|
-
message: `Detected circular category reference: ${cyclePath.join(" -> ")}`,
|
|
121
|
-
});
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
if (current === "visited") {
|
|
125
|
-
return built.get(id) ?? null;
|
|
126
|
-
}
|
|
127
|
-
const preparedCategory = prepared.get(id);
|
|
128
|
-
if (!preparedCategory) {
|
|
129
|
-
errors.push({
|
|
130
|
-
type: "missingCategory",
|
|
131
|
-
categoryId: id,
|
|
132
|
-
message: `Category "${id}" was referenced but not defined.`,
|
|
133
|
-
});
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
state.set(id, "visiting");
|
|
137
|
-
stack.push(id);
|
|
138
|
-
const children = [];
|
|
139
|
-
for (const childId of preparedCategory.childIds) {
|
|
140
|
-
const childNode = buildNode(childId, stack);
|
|
141
|
-
if (childNode) {
|
|
142
|
-
children.push(childNode);
|
|
29
|
+
let children;
|
|
30
|
+
const childIds = Array.isArray(raw.children) ? raw.children : [];
|
|
31
|
+
if (childIds.length > 0) {
|
|
32
|
+
const validChildren = childIds
|
|
33
|
+
.map((rawChildId) => {
|
|
34
|
+
if (typeof rawChildId !== "string" || rawChildId.length === 0) {
|
|
35
|
+
console.warn(`Invalid child category id in ${raw.id}:`, rawChildId);
|
|
36
|
+
return null;
|
|
143
37
|
}
|
|
38
|
+
const childRaw = rawMap[rawChildId];
|
|
39
|
+
if (!childRaw) {
|
|
40
|
+
console.warn(`Child category ${rawChildId} referenced in ${raw.id} not found.`);
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return convertCategory(childRaw, rawMap, docLookup, usedDocIds, included, visiting);
|
|
44
|
+
})
|
|
45
|
+
.filter((child) => child !== null);
|
|
46
|
+
if (validChildren.length > 0) {
|
|
47
|
+
children = validChildren;
|
|
144
48
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
node.children = children;
|
|
156
|
-
}
|
|
157
|
-
built.set(id, node);
|
|
158
|
-
state.set(id, "visited");
|
|
159
|
-
stack.pop();
|
|
160
|
-
return node;
|
|
49
|
+
}
|
|
50
|
+
visiting.delete(raw.id);
|
|
51
|
+
included.add(raw.id);
|
|
52
|
+
return {
|
|
53
|
+
id: raw.id,
|
|
54
|
+
title: raw.title,
|
|
55
|
+
description: raw.description,
|
|
56
|
+
content: raw.content ?? [],
|
|
57
|
+
docs,
|
|
58
|
+
children,
|
|
161
59
|
};
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
60
|
+
}
|
|
61
|
+
export function buildTree(rawMap, allDocs) {
|
|
62
|
+
const docLookup = new Map(allDocs.map((d) => [d.id, d]));
|
|
63
|
+
const usedDocIds = new Set();
|
|
64
|
+
const includedIds = new Set();
|
|
65
|
+
const childCategoryIds = new Set();
|
|
66
|
+
Object.values(rawMap).forEach((category) => {
|
|
67
|
+
if (Array.isArray(category?.children)) {
|
|
68
|
+
category.children.forEach((childId) => {
|
|
69
|
+
if (typeof childId === "string" && childId.length > 0) {
|
|
70
|
+
childCategoryIds.add(childId);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
170
73
|
}
|
|
74
|
+
});
|
|
75
|
+
let rootCandidates = Object.values(rawMap).filter((category) => category &&
|
|
76
|
+
typeof category.id === "string" &&
|
|
77
|
+
category.id.length > 0 &&
|
|
78
|
+
!childCategoryIds.has(category.id));
|
|
79
|
+
if (rootCandidates.length === 0) {
|
|
80
|
+
rootCandidates = Object.values(rawMap).filter((category) => category && typeof category.id === "string" && category.id.length > 0);
|
|
171
81
|
}
|
|
172
|
-
|
|
82
|
+
const tree = rootCandidates
|
|
83
|
+
.map((rootCategory) => {
|
|
84
|
+
if (includedIds.has(rootCategory.id))
|
|
85
|
+
return null;
|
|
86
|
+
return convertCategory(rootCategory, rawMap, docLookup, usedDocIds, includedIds, new Set());
|
|
87
|
+
})
|
|
88
|
+
.filter((category) => category !== null);
|
|
89
|
+
return { tree, usedDocIds };
|
|
173
90
|
}
|
|
174
91
|
//# sourceMappingURL=buildTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTree.js","sourceRoot":"","sources":["../../src/data/buildTree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"buildTree.js","sourceRoot":"","sources":["../../src/data/buildTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DataProvider } from "../index.js";
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class FsDataProvider implements DataProvider {
|
|
3
3
|
readJson<T>(absPath: string): Promise<T>;
|
|
4
4
|
}
|
|
5
|
+
export declare const fsDataProvider: typeof FsDataProvider;
|
|
5
6
|
//# sourceMappingURL=fsDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,qBAAa,cAAe,YAAW,YAAY;IAC3C,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fsDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,qBAAa,cAAe,YAAW,YAAY;IAC3C,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAkB/C;AAED,eAAO,MAAM,cAAc,uBAAiB,CAAC"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
-
export class
|
|
2
|
+
export class FsDataProvider {
|
|
3
3
|
async readJson(absPath) {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
let contents;
|
|
5
|
+
try {
|
|
6
|
+
contents = await readFile(absPath, "utf8");
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
throw new Error(`Failed to read JSON from ${absPath}: ${error.message}`);
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(contents);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new Error(`Failed to parse JSON from ${absPath}: ${error.message}`);
|
|
16
|
+
}
|
|
6
17
|
}
|
|
7
18
|
}
|
|
19
|
+
export const fsDataProvider = FsDataProvider;
|
|
8
20
|
//# sourceMappingURL=fsDataProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsDataProvider.js","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,QAAQ,CAAI,OAAe;QAC/B,
|
|
1
|
+
{"version":3,"file":"fsDataProvider.js","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,QAAQ,CAAI,OAAe;QAC/B,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,KAAM,KAAe,CAAC,OAAO,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAM,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,KAAM,KAAe,CAAC,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DataProvider } from "../index.js";
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class HttpDataProvider implements DataProvider {
|
|
3
3
|
readJson<T>(absUrl: string): Promise<T>;
|
|
4
4
|
}
|
|
5
|
+
export declare const httpDataProvider: typeof HttpDataProvider;
|
|
5
6
|
//# sourceMappingURL=httpDataProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/httpDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,qBAAa,gBAAiB,YAAW,YAAY;IAC7C,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"httpDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/httpDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,qBAAa,gBAAiB,YAAW,YAAY;IAC7C,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAwB9C;AAED,eAAO,MAAM,gBAAgB,yBAAmB,CAAC"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class HttpDataProvider {
|
|
2
2
|
async readJson(absUrl) {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
let res;
|
|
4
|
+
try {
|
|
5
|
+
res = await fetch(absUrl);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
throw new Error(`Failed to fetch ${absUrl}: ${error.message}`);
|
|
9
|
+
}
|
|
10
|
+
if (!res.ok) {
|
|
5
11
|
throw new Error(`Failed to fetch ${absUrl}: ${res.status} ${res.statusText}`);
|
|
6
|
-
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
return (await res.json());
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new Error(`Failed to parse JSON from ${absUrl}: ${error.message}`);
|
|
18
|
+
}
|
|
7
19
|
}
|
|
8
20
|
}
|
|
21
|
+
export const httpDataProvider = HttpDataProvider;
|
|
9
22
|
//# sourceMappingURL=httpDataProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpDataProvider.js","sourceRoot":"","sources":["../../src/data/httpDataProvider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,CAAI,MAAc;QAC9B,
|
|
1
|
+
{"version":3,"file":"httpDataProvider.js","sourceRoot":"","sources":["../../src/data/httpDataProvider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,CAAI,MAAc;QAC9B,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE,CACzD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAC7D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6BAA6B,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC"}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export { loadAllCategories } from "./loadAllCategories.js";
|
|
|
3
3
|
export { loadAllItems } from "./loadAllItems.js";
|
|
4
4
|
export { loadVersionData } from "./loadVersionData.js";
|
|
5
5
|
export { loadVersions } from "./loadVersions.js";
|
|
6
|
-
export { fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
-
export { httpDataProvider } from "./httpDataProvider.js";
|
|
6
|
+
export { FsDataProvider, fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/data/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/data/index.js
CHANGED
|
@@ -3,6 +3,6 @@ export { loadAllCategories } from "./loadAllCategories.js";
|
|
|
3
3
|
export { loadAllItems } from "./loadAllItems.js";
|
|
4
4
|
export { loadVersionData } from "./loadVersionData.js";
|
|
5
5
|
export { loadVersions } from "./loadVersions.js";
|
|
6
|
-
export { fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
-
export { httpDataProvider } from "./httpDataProvider.js";
|
|
6
|
+
export { FsDataProvider, fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|