@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
package/dist/data/buildTree.js
CHANGED
|
@@ -1,174 +1,129 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
+
import { createLogger } from "../utilities/system/logger.js";
|
|
2
|
+
function convertCategory(raw, rawMap, docLookup, usedDocIds, included, visiting, diagnostics, logger) {
|
|
3
|
+
if (visiting.has(raw.id)) {
|
|
4
|
+
const message = `Detected circular category reference at ${raw.id}.`;
|
|
5
|
+
diagnostics.push({
|
|
6
|
+
code: "circular-category",
|
|
7
|
+
level: "warn",
|
|
8
|
+
message,
|
|
9
|
+
context: { categoryId: raw.id },
|
|
10
|
+
});
|
|
11
|
+
logger.warn(message);
|
|
12
|
+
return null;
|
|
25
13
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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);
|
|
14
|
+
visiting.add(raw.id);
|
|
15
|
+
let docs;
|
|
16
|
+
const docIds = Array.isArray(raw.docs) ? raw.docs : [];
|
|
17
|
+
if (docIds.length > 0) {
|
|
18
|
+
const validDocs = docIds
|
|
19
|
+
.map((rawId) => {
|
|
20
|
+
if (typeof rawId !== "string" || rawId.length === 0) {
|
|
21
|
+
const message = `Invalid doc id in category ${raw.id}.`;
|
|
22
|
+
diagnostics.push({
|
|
23
|
+
code: "invalid-doc-ref",
|
|
24
|
+
level: "warn",
|
|
25
|
+
message,
|
|
26
|
+
context: { categoryId: raw.id, docId: rawId },
|
|
27
|
+
});
|
|
28
|
+
logger.warn(message);
|
|
29
|
+
return null;
|
|
67
30
|
}
|
|
68
|
-
|
|
69
|
-
|
|
31
|
+
const doc = docLookup.get(rawId);
|
|
32
|
+
if (!doc) {
|
|
33
|
+
const message = `Doc id ${rawId} referenced in category ${raw.id} not found.`;
|
|
34
|
+
diagnostics.push({
|
|
35
|
+
code: "missing-doc-ref",
|
|
36
|
+
level: "warn",
|
|
37
|
+
message,
|
|
38
|
+
context: { categoryId: raw.id, docId: rawId },
|
|
39
|
+
});
|
|
40
|
+
logger.warn(message);
|
|
41
|
+
return null;
|
|
70
42
|
}
|
|
43
|
+
usedDocIds.add(rawId);
|
|
44
|
+
return doc;
|
|
45
|
+
})
|
|
46
|
+
.filter((doc) => doc !== null);
|
|
47
|
+
if (validDocs.length > 0) {
|
|
48
|
+
docs = validDocs;
|
|
71
49
|
}
|
|
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
50
|
}
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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);
|
|
51
|
+
let children;
|
|
52
|
+
const childIds = Array.isArray(raw.children) ? raw.children : [];
|
|
53
|
+
if (childIds.length > 0) {
|
|
54
|
+
const validChildren = childIds
|
|
55
|
+
.map((rawChildId) => {
|
|
56
|
+
if (typeof rawChildId !== "string" || rawChildId.length === 0) {
|
|
57
|
+
const message = `Invalid child category id in ${raw.id}.`;
|
|
58
|
+
diagnostics.push({
|
|
59
|
+
code: "invalid-child-ref",
|
|
60
|
+
level: "warn",
|
|
61
|
+
message,
|
|
62
|
+
context: { categoryId: raw.id, childId: rawChildId },
|
|
63
|
+
});
|
|
64
|
+
logger.warn(message);
|
|
65
|
+
return null;
|
|
143
66
|
}
|
|
67
|
+
const childRaw = rawMap[rawChildId];
|
|
68
|
+
if (!childRaw) {
|
|
69
|
+
const message = `Child category ${rawChildId} referenced in ${raw.id} not found.`;
|
|
70
|
+
diagnostics.push({
|
|
71
|
+
code: "missing-child-ref",
|
|
72
|
+
level: "warn",
|
|
73
|
+
message,
|
|
74
|
+
context: { categoryId: raw.id, childId: rawChildId },
|
|
75
|
+
});
|
|
76
|
+
logger.warn(message);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return convertCategory(childRaw, rawMap, docLookup, usedDocIds, included, visiting, diagnostics, logger);
|
|
80
|
+
})
|
|
81
|
+
.filter((child) => child !== null);
|
|
82
|
+
if (validChildren.length > 0) {
|
|
83
|
+
children = validChildren;
|
|
144
84
|
}
|
|
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;
|
|
85
|
+
}
|
|
86
|
+
visiting.delete(raw.id);
|
|
87
|
+
included.add(raw.id);
|
|
88
|
+
return {
|
|
89
|
+
id: raw.id,
|
|
90
|
+
title: raw.title,
|
|
91
|
+
description: raw.description,
|
|
92
|
+
content: raw.content ?? [],
|
|
93
|
+
docs,
|
|
94
|
+
children,
|
|
161
95
|
};
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
96
|
+
}
|
|
97
|
+
export function buildTree(rawMap, allDocs, options) {
|
|
98
|
+
const docLookup = new Map(allDocs.map((d) => [d.id, d]));
|
|
99
|
+
const usedDocIds = new Set();
|
|
100
|
+
const includedIds = new Set();
|
|
101
|
+
const diagnostics = [];
|
|
102
|
+
const logger = options?.logger ?? createLogger("data:buildTree");
|
|
103
|
+
const childCategoryIds = new Set();
|
|
104
|
+
Object.values(rawMap).forEach((category) => {
|
|
105
|
+
if (Array.isArray(category?.children)) {
|
|
106
|
+
category.children.forEach((childId) => {
|
|
107
|
+
if (typeof childId === "string" && childId.length > 0) {
|
|
108
|
+
childCategoryIds.add(childId);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
170
111
|
}
|
|
112
|
+
});
|
|
113
|
+
let rootCandidates = Object.values(rawMap).filter((category) => category &&
|
|
114
|
+
typeof category.id === "string" &&
|
|
115
|
+
category.id.length > 0 &&
|
|
116
|
+
!childCategoryIds.has(category.id));
|
|
117
|
+
if (rootCandidates.length === 0) {
|
|
118
|
+
rootCandidates = Object.values(rawMap).filter((category) => category && typeof category.id === "string" && category.id.length > 0);
|
|
171
119
|
}
|
|
172
|
-
|
|
120
|
+
const tree = rootCandidates
|
|
121
|
+
.map((rootCategory) => {
|
|
122
|
+
if (includedIds.has(rootCategory.id))
|
|
123
|
+
return null;
|
|
124
|
+
return convertCategory(rootCategory, rawMap, docLookup, usedDocIds, includedIds, new Set(), diagnostics, logger);
|
|
125
|
+
})
|
|
126
|
+
.filter((category) => category !== null);
|
|
127
|
+
return { tree, usedDocIds, diagnostics };
|
|
173
128
|
}
|
|
174
129
|
//# 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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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DataProvider } from "../types/DataProvider.js";
|
|
2
|
+
export declare class FsDataProvider implements DataProvider {
|
|
3
|
+
readJson<T>(_absPath: string): Promise<T>;
|
|
4
|
+
}
|
|
5
|
+
export declare const fsDataProvider: typeof FsDataProvider;
|
|
6
|
+
//# sourceMappingURL=fsDataProvider.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsDataProvider.browser.d.ts","sourceRoot":"","sources":["../../src/data/fsDataProvider.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qBAAa,cAAe,YAAW,YAAY;IAC3C,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAKhD;AAED,eAAO,MAAM,cAAc,uBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class FsDataProvider {
|
|
2
|
+
async readJson(_absPath) {
|
|
3
|
+
throw new Error("FsDataProvider is only available in Node.js environments where the file system can be read.");
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export const fsDataProvider = FsDataProvider;
|
|
7
|
+
//# sourceMappingURL=fsDataProvider.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsDataProvider.browser.js","sourceRoot":"","sources":["../../src/data/fsDataProvider.browser.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,QAAQ,CAAI,QAAgB;QAChC,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,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 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":"
|
|
1
|
+
{"version":3,"file":"fsDataProvider.d.ts","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AAEA,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;
|
|
1
|
+
{"version":3,"file":"fsDataProvider.js","sourceRoot":"","sources":["../../src/data/fsDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { buildTree } from "./buildTree.js";
|
|
2
|
+
export { loadAllCategories } from "./loadAllCategories.js";
|
|
3
|
+
export { loadAllItems } from "./loadAllItems.js";
|
|
4
|
+
export { loadVersionData, loadVersionDataFromHttp, } from "./loadVersionData.js";
|
|
5
|
+
export { loadVersions } from "./loadVersions.js";
|
|
6
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
7
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/data/index.browser.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,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { buildTree } from "./buildTree.js";
|
|
2
|
+
export { loadAllCategories } from "./loadAllCategories.js";
|
|
3
|
+
export { loadAllItems } from "./loadAllItems.js";
|
|
4
|
+
export { loadVersionData, loadVersionDataFromHttp, } from "./loadVersionData.js";
|
|
5
|
+
export { loadVersions } from "./loadVersions.js";
|
|
6
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
7
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/data/index.browser.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,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { buildTree } from "./buildTree.js";
|
|
2
2
|
export { loadAllCategories } from "./loadAllCategories.js";
|
|
3
3
|
export { loadAllItems } from "./loadAllItems.js";
|
|
4
|
-
export { loadVersionData } from "./loadVersionData.js";
|
|
4
|
+
export { loadVersionData, loadVersionDataFromHttp, } from "./loadVersionData.js";
|
|
5
|
+
export { loadVersionDataFromFs } from "./loadVersionData.fs.js";
|
|
5
6
|
export { loadVersions } from "./loadVersions.js";
|
|
6
|
-
export { fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
-
export { httpDataProvider } from "./httpDataProvider.js";
|
|
7
|
+
export { FsDataProvider, fsDataProvider } from "./fsDataProvider.js";
|
|
8
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
8
9
|
//# 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,
|
|
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,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,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
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { buildTree } from "./buildTree.js";
|
|
2
2
|
export { loadAllCategories } from "./loadAllCategories.js";
|
|
3
3
|
export { loadAllItems } from "./loadAllItems.js";
|
|
4
|
-
export { loadVersionData } from "./loadVersionData.js";
|
|
4
|
+
export { loadVersionData, loadVersionDataFromHttp, } from "./loadVersionData.js";
|
|
5
|
+
export { loadVersionDataFromFs } from "./loadVersionData.fs.js";
|
|
5
6
|
export { loadVersions } from "./loadVersions.js";
|
|
6
|
-
export { fsDataProvider } from "./fsDataProvider.js";
|
|
7
|
-
export { httpDataProvider } from "./httpDataProvider.js";
|
|
7
|
+
export { FsDataProvider, fsDataProvider } from "./fsDataProvider.js";
|
|
8
|
+
export { HttpDataProvider, httpDataProvider } from "./httpDataProvider.js";
|
|
8
9
|
//# 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,
|
|
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,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import type { DataDiagnostic } from "../types/DataDiagnostic.js";
|
|
1
2
|
import type { DataProvider } from "../types/DataProvider.js";
|
|
3
|
+
import type { Logger } from "../types/Logger.js";
|
|
2
4
|
import type { RawCategory } from "../types/RawCategory.js";
|
|
3
|
-
export
|
|
5
|
+
export interface LoadAllCategoriesResult {
|
|
6
|
+
categories: Record<string, RawCategory>;
|
|
7
|
+
diagnostics: DataDiagnostic[];
|
|
8
|
+
}
|
|
9
|
+
export interface LoadAllCategoriesOptions {
|
|
10
|
+
logger?: Logger;
|
|
11
|
+
}
|
|
12
|
+
export declare function loadAllCategories(provider: DataProvider, versionRootAbs: string, ids: string[], options?: LoadAllCategoriesOptions): Promise<LoadAllCategoriesResult>;
|
|
4
13
|
//# sourceMappingURL=loadAllCategories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadAllCategories.d.ts","sourceRoot":"","sources":["../../src/data/loadAllCategories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"loadAllCategories.d.ts","sourceRoot":"","sources":["../../src/data/loadAllCategories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,CAAC,CA6BlC"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
import { createLogger } from "../utilities/system/logger.js";
|
|
2
|
+
export async function loadAllCategories(provider, versionRootAbs, ids, options) {
|
|
3
|
+
const diagnostics = [];
|
|
4
|
+
const logger = options?.logger ?? createLogger("data:loadAllCategories");
|
|
2
5
|
const results = await Promise.allSettled(ids.map(async (id) => {
|
|
3
6
|
const p = `${versionRootAbs}/categories/${id}.json`;
|
|
4
7
|
const data = await provider.readJson(p);
|
|
5
8
|
return { id, data };
|
|
6
9
|
}));
|
|
7
|
-
const
|
|
10
|
+
const categories = {};
|
|
8
11
|
results.forEach((res, i) => {
|
|
9
12
|
if (res.status === "fulfilled") {
|
|
10
|
-
|
|
13
|
+
categories[res.value.id] = res.value.data;
|
|
11
14
|
}
|
|
12
15
|
else {
|
|
13
|
-
|
|
16
|
+
const message = `Failed to load category ${ids[i]}: ${res.reason.message ?? res.reason}`;
|
|
17
|
+
diagnostics.push({
|
|
18
|
+
code: "category-read-failed",
|
|
19
|
+
level: "warn",
|
|
20
|
+
message,
|
|
21
|
+
context: { id: ids[i] },
|
|
22
|
+
});
|
|
23
|
+
logger.warn(message);
|
|
14
24
|
}
|
|
15
25
|
});
|
|
16
|
-
return
|
|
26
|
+
return { categories, diagnostics };
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=loadAllCategories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadAllCategories.js","sourceRoot":"","sources":["../../src/data/loadAllCategories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadAllCategories.js","sourceRoot":"","sources":["../../src/data/loadAllCategories.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW7D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAsB,EACtB,cAAsB,EACtB,GAAa,EACb,OAAkC;IAElC,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,CAAC,GAAG,GAAG,cAAc,eAAe,EAAE,OAAO,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAc,CAAC,CAAC,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,UAAU,GAAgC,EAAE,CAAC;IACnD,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,2BAA2B,GAAG,CAAC,CAAC,CAAC,KAAM,GAAG,CAAC,MAAgB,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACpG,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,MAAM;gBACb,OAAO;gBACP,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import type { DataDiagnostic } from "../types/DataDiagnostic.js";
|
|
1
2
|
import type { DataProvider } from "../types/DataProvider.js";
|
|
3
|
+
import type { Logger } from "../types/Logger.js";
|
|
2
4
|
import type { DocItem } from "../types/DocItem.js";
|
|
3
|
-
export
|
|
5
|
+
export interface LoadAllItemsResult {
|
|
6
|
+
items: DocItem[];
|
|
7
|
+
diagnostics: DataDiagnostic[];
|
|
8
|
+
}
|
|
9
|
+
export interface LoadAllItemsOptions {
|
|
10
|
+
logger?: Logger;
|
|
11
|
+
}
|
|
12
|
+
export declare function loadAllItems(provider: DataProvider, versionRootAbs: string, ids: string[], options?: LoadAllItemsOptions): Promise<LoadAllItemsResult>;
|
|
4
13
|
//# sourceMappingURL=loadAllItems.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadAllItems.d.ts","sourceRoot":"","sources":["../../src/data/loadAllItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"loadAllItems.d.ts","sourceRoot":"","sources":["../../src/data/loadAllItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA0B7B"}
|