@shadow-shard-tools/docs-core 1.0.18 → 1.0.20

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.
Files changed (144) hide show
  1. package/README.md +60 -1
  2. package/dist/cjs/configs/clientConfig.js +30 -112
  3. package/dist/cjs/configs/index.browser.js +16 -0
  4. package/dist/cjs/configs/sstDocsConfigShared.js +169 -101
  5. package/dist/cjs/data/buildTree.js +48 -10
  6. package/dist/cjs/data/fsDataProvider.browser.js +10 -0
  7. package/dist/cjs/data/index.browser.js +19 -0
  8. package/dist/cjs/data/index.js +6 -1
  9. package/dist/cjs/data/loadAllCategories.js +15 -5
  10. package/dist/cjs/data/loadAllItems.js +19 -7
  11. package/dist/cjs/data/loadProducts.js +6 -0
  12. package/dist/cjs/data/loadVersionData.fs.js +31 -0
  13. package/dist/cjs/data/loadVersionData.js +130 -7
  14. package/dist/cjs/index.browser.js +22 -0
  15. package/dist/cjs/themes/index.js +5 -1
  16. package/dist/cjs/themes/styleThemeSchema.js +36 -0
  17. package/dist/cjs/types/DataDiagnostic.js +2 -0
  18. package/dist/cjs/types/Product.js +2 -0
  19. package/dist/cjs/utilities/index.browser.js +53 -0
  20. package/dist/cjs/utilities/path/pathExists.browser.js +6 -0
  21. package/dist/cjs/utilities/path/pathExists.js +1 -1
  22. package/dist/cjs/utilities/path/resolveAgainstProjectRoot.browser.js +6 -0
  23. package/dist/cjs/utilities/path/resolveDataPath.browser.js +6 -0
  24. package/dist/cjs/utilities/path/resolveDataPath.js +1 -1
  25. package/dist/cjs/utilities/string/withBasePath.js +37 -9
  26. package/dist/cjs/utilities/system/logger.browser.js +39 -0
  27. package/dist/cjs/utilities/system/logger.js +26 -6
  28. package/dist/configs/clientConfig.d.ts.map +1 -1
  29. package/dist/configs/clientConfig.js +30 -112
  30. package/dist/configs/clientConfig.js.map +1 -1
  31. package/dist/configs/index.browser.d.ts +4 -0
  32. package/dist/configs/index.browser.d.ts.map +1 -0
  33. package/dist/configs/index.browser.js +4 -0
  34. package/dist/configs/index.browser.js.map +1 -0
  35. package/dist/configs/sstDocsConfig.browser.d.ts.map +1 -1
  36. package/dist/configs/sstDocsConfig.browser.js.map +1 -1
  37. package/dist/configs/sstDocsConfig.d.ts.map +1 -1
  38. package/dist/configs/sstDocsConfig.js.map +1 -1
  39. package/dist/configs/sstDocsConfigShared.d.ts +8 -0
  40. package/dist/configs/sstDocsConfigShared.d.ts.map +1 -1
  41. package/dist/configs/sstDocsConfigShared.js +168 -97
  42. package/dist/configs/sstDocsConfigShared.js.map +1 -1
  43. package/dist/data/buildTree.d.ts +10 -2
  44. package/dist/data/buildTree.d.ts.map +1 -1
  45. package/dist/data/buildTree.js +48 -10
  46. package/dist/data/buildTree.js.map +1 -1
  47. package/dist/data/fsDataProvider.browser.d.ts +6 -0
  48. package/dist/data/fsDataProvider.browser.d.ts.map +1 -0
  49. package/dist/data/fsDataProvider.browser.js +7 -0
  50. package/dist/data/fsDataProvider.browser.js.map +1 -0
  51. package/dist/data/fsDataProvider.d.ts.map +1 -1
  52. package/dist/data/fsDataProvider.js.map +1 -1
  53. package/dist/data/index.browser.d.ts +8 -0
  54. package/dist/data/index.browser.d.ts.map +1 -0
  55. package/dist/data/index.browser.js +8 -0
  56. package/dist/data/index.browser.js.map +1 -0
  57. package/dist/data/index.d.ts +3 -1
  58. package/dist/data/index.d.ts.map +1 -1
  59. package/dist/data/index.js +3 -1
  60. package/dist/data/index.js.map +1 -1
  61. package/dist/data/loadAllCategories.d.ts +10 -1
  62. package/dist/data/loadAllCategories.d.ts.map +1 -1
  63. package/dist/data/loadAllCategories.js +15 -5
  64. package/dist/data/loadAllCategories.js.map +1 -1
  65. package/dist/data/loadAllItems.d.ts +10 -1
  66. package/dist/data/loadAllItems.d.ts.map +1 -1
  67. package/dist/data/loadAllItems.js +19 -7
  68. package/dist/data/loadAllItems.js.map +1 -1
  69. package/dist/data/loadProducts.d.ts +4 -0
  70. package/dist/data/loadProducts.d.ts.map +1 -0
  71. package/dist/data/loadProducts.js +4 -0
  72. package/dist/data/loadProducts.js.map +1 -0
  73. package/dist/data/loadVersionData.d.ts +37 -1
  74. package/dist/data/loadVersionData.d.ts.map +1 -1
  75. package/dist/data/loadVersionData.fs.d.ts +3 -0
  76. package/dist/data/loadVersionData.fs.d.ts.map +1 -0
  77. package/dist/data/loadVersionData.fs.js +26 -0
  78. package/dist/data/loadVersionData.fs.js.map +1 -0
  79. package/dist/data/loadVersionData.js +127 -7
  80. package/dist/data/loadVersionData.js.map +1 -1
  81. package/dist/index.browser.d.ts +7 -0
  82. package/dist/index.browser.d.ts.map +1 -0
  83. package/dist/index.browser.js +7 -0
  84. package/dist/index.browser.js.map +1 -0
  85. package/dist/themes/index.d.ts +1 -0
  86. package/dist/themes/index.d.ts.map +1 -1
  87. package/dist/themes/index.js +1 -0
  88. package/dist/themes/index.js.map +1 -1
  89. package/dist/themes/styleThemeSchema.d.ts +6 -0
  90. package/dist/themes/styleThemeSchema.d.ts.map +1 -0
  91. package/dist/themes/styleThemeSchema.js +32 -0
  92. package/dist/themes/styleThemeSchema.js.map +1 -0
  93. package/dist/themes/themeRegistry.d.ts.map +1 -1
  94. package/dist/themes/themeRegistry.js.map +1 -1
  95. package/dist/types/ClientVisibleSstDocsConfig.d.ts +1 -0
  96. package/dist/types/ClientVisibleSstDocsConfig.d.ts.map +1 -1
  97. package/dist/types/DataDiagnostic.d.ts +8 -0
  98. package/dist/types/DataDiagnostic.d.ts.map +1 -0
  99. package/dist/types/DataDiagnostic.js +2 -0
  100. package/dist/types/DataDiagnostic.js.map +1 -0
  101. package/dist/types/HtmlGeneratorSettings.d.ts +1 -1
  102. package/dist/types/HtmlGeneratorSettings.d.ts.map +1 -1
  103. package/dist/types/Product.d.ts +5 -0
  104. package/dist/types/Product.d.ts.map +1 -0
  105. package/dist/types/Product.js +2 -0
  106. package/dist/types/Product.js.map +1 -0
  107. package/dist/types/SstDocsConfig.d.ts +2 -0
  108. package/dist/types/SstDocsConfig.d.ts.map +1 -1
  109. package/dist/types/index.d.ts +2 -0
  110. package/dist/types/index.d.ts.map +1 -1
  111. package/dist/utilities/index.browser.d.ts +23 -0
  112. package/dist/utilities/index.browser.d.ts.map +1 -0
  113. package/dist/utilities/index.browser.js +29 -0
  114. package/dist/utilities/index.browser.js.map +1 -0
  115. package/dist/utilities/path/pathExists.browser.d.ts +2 -0
  116. package/dist/utilities/path/pathExists.browser.d.ts.map +1 -0
  117. package/dist/utilities/path/pathExists.browser.js +4 -0
  118. package/dist/utilities/path/pathExists.browser.js.map +1 -0
  119. package/dist/utilities/path/pathExists.js +1 -1
  120. package/dist/utilities/path/pathExists.js.map +1 -1
  121. package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts +2 -0
  122. package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts.map +1 -0
  123. package/dist/utilities/path/resolveAgainstProjectRoot.browser.js +4 -0
  124. package/dist/utilities/path/resolveAgainstProjectRoot.browser.js.map +1 -0
  125. package/dist/utilities/path/resolveAgainstProjectRoot.d.ts.map +1 -1
  126. package/dist/utilities/path/resolveAgainstProjectRoot.js.map +1 -1
  127. package/dist/utilities/path/resolveDataPath.browser.d.ts +2 -0
  128. package/dist/utilities/path/resolveDataPath.browser.d.ts.map +1 -0
  129. package/dist/utilities/path/resolveDataPath.browser.js +4 -0
  130. package/dist/utilities/path/resolveDataPath.browser.js.map +1 -0
  131. package/dist/utilities/path/resolveDataPath.d.ts.map +1 -1
  132. package/dist/utilities/path/resolveDataPath.js +1 -1
  133. package/dist/utilities/path/resolveDataPath.js.map +1 -1
  134. package/dist/utilities/string/withBasePath.d.ts.map +1 -1
  135. package/dist/utilities/string/withBasePath.js +37 -6
  136. package/dist/utilities/string/withBasePath.js.map +1 -1
  137. package/dist/utilities/system/logger.browser.d.ts +3 -0
  138. package/dist/utilities/system/logger.browser.d.ts.map +1 -0
  139. package/dist/utilities/system/logger.browser.js +36 -0
  140. package/dist/utilities/system/logger.browser.js.map +1 -0
  141. package/dist/utilities/system/logger.d.ts.map +1 -1
  142. package/dist/utilities/system/logger.js +26 -6
  143. package/dist/utilities/system/logger.js.map +1 -1
  144. package/package.json +181 -9
@@ -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,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,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,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,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 declare function loadAllCategories(provider: DataProvider, versionRootAbs: string, ids: string[]): Promise<Record<string, RawCategory>>;
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;AAE3D,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAkBtC"}
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
- export async function loadAllCategories(provider, versionRootAbs, ids) {
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 map = {};
10
+ const categories = {};
8
11
  results.forEach((res, i) => {
9
12
  if (res.status === "fulfilled") {
10
- map[res.value.id] = res.value.data;
13
+ categories[res.value.id] = res.value.data;
11
14
  }
12
15
  else {
13
- console.warn(`Failed to load category ${ids[i]}:`, res.reason);
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 map;
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":"AAGA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAsB,EACtB,cAAsB,EACtB,GAAa;IAEb,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,GAAG,GAAgC,EAAE,CAAC;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
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";
2
3
  import type { DocItem } from "../types/DocItem.js";
3
- export declare function loadAllItems(provider: DataProvider, versionRootAbs: string, ids: string[]): Promise<DocItem[]>;
4
+ import type { Logger } from "../types/Logger.js";
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;AAEnD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC,OAAO,EAAE,CAAC,CAapB"}
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,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,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"}
@@ -1,12 +1,24 @@
1
- export async function loadAllItems(provider, versionRootAbs, ids) {
1
+ import { createLogger } from "../utilities/system/logger.js";
2
+ export async function loadAllItems(provider, versionRootAbs, ids, options) {
3
+ const diagnostics = [];
4
+ const logger = options?.logger ?? createLogger("data:loadAllItems");
2
5
  const results = await Promise.allSettled(ids.map((id) => provider.readJson(`${versionRootAbs}/items/${id}.json`)));
3
- const list = [];
6
+ const items = [];
4
7
  results.forEach((res, i) => {
5
- if (res.status === "fulfilled")
6
- list.push(res.value);
7
- else
8
- console.warn(`Failed to load item ${ids[i]}:`, res.reason);
8
+ if (res.status === "fulfilled") {
9
+ items.push(res.value);
10
+ }
11
+ else {
12
+ const message = `Failed to load item ${ids[i]}: ${res.reason.message ?? res.reason}`;
13
+ diagnostics.push({
14
+ code: "item-read-failed",
15
+ level: "warn",
16
+ message,
17
+ context: { id: ids[i] },
18
+ });
19
+ logger.warn(message);
20
+ }
9
21
  });
10
- return list;
22
+ return { items, diagnostics };
11
23
  }
12
24
  //# sourceMappingURL=loadAllItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadAllItems.js","sourceRoot":"","sources":["../../src/data/loadAllItems.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAsB,EACtB,cAAsB,EACtB,GAAa;IAEb,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACb,QAAQ,CAAC,QAAQ,CAAU,GAAG,cAAc,UAAU,EAAE,OAAO,CAAC,CACjE,CACF,CAAC;IAEF,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAChD,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"loadAllItems.js","sourceRoot":"","sources":["../../src/data/loadAllItems.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAsB,EACtB,cAAsB,EACtB,GAAa,EACb,OAA6B;IAE7B,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACb,QAAQ,CAAC,QAAQ,CAAU,GAAG,cAAc,UAAU,EAAE,OAAO,CAAC,CACjE,CACF,CAAC;IAEF,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,uBAAuB,GAAG,CAAC,CAAC,CAAC,KAAM,GAAG,CAAC,MAAgB,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChG,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,kBAAkB;gBACxB,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;IACH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DataProvider } from "../types/DataProvider.js";
2
+ import type { Product } from "../types/Product.js";
3
+ export declare function loadProducts(provider: DataProvider, dataRootAbs: string): Promise<Product[]>;
4
+ //# sourceMappingURL=loadProducts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadProducts.d.ts","sourceRoot":"","sources":["../../src/data/loadProducts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,EAAE,CAAC,CAEpB"}
@@ -0,0 +1,4 @@
1
+ export async function loadProducts(provider, dataRootAbs) {
2
+ return provider.readJson(`${dataRootAbs}/products.json`);
3
+ }
4
+ //# sourceMappingURL=loadProducts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadProducts.js","sourceRoot":"","sources":["../../src/data/loadProducts.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAsB,EACtB,WAAmB;IAEnB,OAAO,QAAQ,CAAC,QAAQ,CAAY,GAAG,WAAW,gBAAgB,CAAC,CAAC;AACtE,CAAC"}
@@ -1,9 +1,45 @@
1
1
  import type { Category } from "../types/Category.js";
2
+ import type { DataDiagnostic } from "../types/DataDiagnostic.js";
2
3
  import type { DataProvider } from "../types/DataProvider.js";
3
4
  import type { DocItem } from "../types/DocItem.js";
4
- export declare function loadVersionData(provider: DataProvider, versionRootAbs: string): Promise<{
5
+ import type { Logger } from "../types/Logger.js";
6
+ import type { Product } from "../types/Product.js";
7
+ import type { Version } from "../types/Version.js";
8
+ export interface LoadVersionDataOptions {
9
+ logger?: Logger;
10
+ }
11
+ export interface LoadVersionDataResult {
5
12
  items: DocItem[];
6
13
  tree: Category[];
7
14
  standaloneDocs: DocItem[];
15
+ diagnostics: DataDiagnostic[];
16
+ }
17
+ export interface LoadVersionDataFromProviderOptions extends LoadVersionDataOptions {
18
+ version?: string;
19
+ product?: string;
20
+ productVersioning?: boolean;
21
+ }
22
+ export interface LoadVersionDataFromProviderResult extends LoadVersionDataResult {
23
+ version: string;
24
+ versions: Version[];
25
+ product?: string;
26
+ products?: Product[];
27
+ }
28
+ export declare function loadVersionData(provider: DataProvider, versionRootAbs: string, options?: LoadVersionDataOptions): Promise<LoadVersionDataResult>;
29
+ export declare function loadVersionDataFromHttp(baseUrl: string, options?: LoadVersionDataFromProviderOptions): Promise<LoadVersionDataFromProviderResult>;
30
+ export declare function selectVersion(provider: DataProvider, root: string, requested: string | undefined, logger: Logger): Promise<{
31
+ versions: Version[];
32
+ selectedVersion: string;
33
+ diagnostics: DataDiagnostic[];
8
34
  }>;
35
+ type JoinChildPath = (base: string, child: string) => string;
36
+ export declare function selectProductAndVersion(provider: DataProvider, root: string, options: LoadVersionDataFromProviderOptions | undefined, logger: Logger, joinChild: JoinChildPath): Promise<{
37
+ product?: string;
38
+ products?: Product[];
39
+ versionsRoot: string;
40
+ versions: Version[];
41
+ selectedVersion: string;
42
+ diagnostics: DataDiagnostic[];
43
+ }>;
44
+ export {};
9
45
  //# sourceMappingURL=loadVersionData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadVersionData.d.ts","sourceRoot":"","sources":["../../src/data/loadVersionData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAMnD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,cAAc,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAa5E"}
1
+ {"version":3,"file":"loadVersionData.d.ts","sourceRoot":"","sources":["../../src/data/loadVersionData.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,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAUnD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kCAAmC,SAAQ,sBAAsB;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iCAAkC,SAAQ,qBAAqB;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CA4BhC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kCAAkC,GAC3C,OAAO,CAAC,iCAAiC,CAAC,CAsC5C;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC,CAkCD;AAED,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAE7D,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kCAAkC,GAAG,SAAS,EACvD,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC,CAwCD"}
@@ -0,0 +1,3 @@
1
+ import type { LoadVersionDataFromProviderOptions, LoadVersionDataFromProviderResult } from "./loadVersionData.js";
2
+ export declare function loadVersionDataFromFs(baseDir: string, options?: LoadVersionDataFromProviderOptions): Promise<LoadVersionDataFromProviderResult>;
3
+ //# sourceMappingURL=loadVersionData.fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadVersionData.fs.d.ts","sourceRoot":"","sources":["../../src/data/loadVersionData.fs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kCAAkC,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAQlH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kCAAkC,GAC3C,OAAO,CAAC,iCAAiC,CAAC,CAuC5C"}
@@ -0,0 +1,26 @@
1
+ import path from "node:path";
2
+ import { normalizeSystemPath } from "../utilities/string/normalizeSystemPath.js";
3
+ import { createLogger } from "../utilities/system/logger.js";
4
+ import { FsDataProvider } from "./fsDataProvider.js";
5
+ import { loadVersionData, selectProductAndVersion } from "./loadVersionData.js";
6
+ export async function loadVersionDataFromFs(baseDir, options) {
7
+ const logger = options?.logger ?? createLogger("data:loadVersionDataFromFs");
8
+ const provider = new FsDataProvider();
9
+ const diagnostics = [];
10
+ const root = normalizeSystemPath(path.resolve(baseDir));
11
+ const { product, products, versionsRoot, versions, selectedVersion, diagnostics: selectionDiagnostics, } = await selectProductAndVersion(provider, root, options, logger, (base, child) => normalizeSystemPath(path.resolve(base, child)));
12
+ const versionRoot = normalizeSystemPath(path.resolve(versionsRoot, selectedVersion));
13
+ const { items, tree, standaloneDocs, diagnostics: loadDiagnostics } = await loadVersionData(provider, versionRoot, { logger });
14
+ diagnostics.push(...selectionDiagnostics, ...loadDiagnostics);
15
+ return {
16
+ version: selectedVersion,
17
+ versions,
18
+ product,
19
+ products,
20
+ items,
21
+ tree,
22
+ standaloneDocs,
23
+ diagnostics,
24
+ };
25
+ }
26
+ //# sourceMappingURL=loadVersionData.fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadVersionData.fs.js","sourceRoot":"","sources":["../../src/data/loadVersionData.fs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAe,EACf,OAA4C;IAE5C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAExD,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,WAAW,EAAE,oBAAoB,GAClC,GAAG,MAAM,uBAAuB,CAC/B,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,MAAM,EACN,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAChE,CAAC;IAEF,MAAM,WAAW,GAAG,mBAAmB,CACrC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAC5C,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,GACjE,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE3D,WAAW,CAAC,IAAI,CAAC,GAAG,oBAAoB,EAAE,GAAG,eAAe,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,KAAK;QACL,IAAI;QACJ,cAAc;QACd,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -1,14 +1,134 @@
1
+ import { createLogger } from "../utilities/system/logger.js";
2
+ import { HttpDataProvider } from "./httpDataProvider.js";
3
+ import { loadProducts } from "./loadProducts.js";
1
4
  import { buildTree } from "./buildTree.js";
2
5
  import { loadAllCategories } from "./loadAllCategories.js";
3
6
  import { loadAllItems } from "./loadAllItems.js";
4
- export async function loadVersionData(provider, versionRootAbs) {
7
+ import { loadVersions } from "./loadVersions.js";
8
+ export async function loadVersionData(provider, versionRootAbs, options) {
9
+ const logger = options?.logger;
10
+ const diagnostics = [];
5
11
  const index = await provider.readJson(`${versionRootAbs}/index.json`);
6
- const [rawCats, items] = await Promise.all([
7
- loadAllCategories(provider, versionRootAbs, index.categories),
8
- loadAllItems(provider, versionRootAbs, index.items),
12
+ const [categoriesResult, itemsResult] = await Promise.all([
13
+ loadAllCategories(provider, versionRootAbs, index.categories, { logger }),
14
+ loadAllItems(provider, versionRootAbs, index.items, { logger }),
9
15
  ]);
10
- const { tree, usedDocIds } = buildTree(rawCats, items);
11
- const standaloneDocs = items.filter((d) => !usedDocIds.has(d.id));
12
- return { items, tree, standaloneDocs };
16
+ const { tree, usedDocIds, diagnostics: treeDiagnostics } = buildTree(categoriesResult.categories, itemsResult.items, { logger });
17
+ const standaloneDocs = itemsResult.items.filter((d) => !usedDocIds.has(d.id));
18
+ diagnostics.push(...categoriesResult.diagnostics, ...itemsResult.diagnostics, ...treeDiagnostics);
19
+ return { items: itemsResult.items, tree, standaloneDocs, diagnostics };
20
+ }
21
+ export async function loadVersionDataFromHttp(baseUrl, options) {
22
+ const logger = options?.logger ?? createLogger("data:loadVersionDataFromHttp");
23
+ const provider = new HttpDataProvider();
24
+ const root = trimTrailingSlash(baseUrl);
25
+ const { product, products, versionsRoot, versions, selectedVersion, diagnostics: selectionDiagnostics, } = await selectProductAndVersion(provider, root, options, logger, joinUrl);
26
+ const versionRoot = joinUrl(versionsRoot, selectedVersion);
27
+ const { items, tree, standaloneDocs, diagnostics } = await loadVersionData(provider, versionRoot, { logger });
28
+ return {
29
+ version: selectedVersion,
30
+ versions,
31
+ product,
32
+ products,
33
+ items,
34
+ tree,
35
+ standaloneDocs,
36
+ diagnostics: [...selectionDiagnostics, ...diagnostics],
37
+ };
38
+ }
39
+ export async function selectVersion(provider, root, requested, logger) {
40
+ const versions = await loadVersions(provider, root);
41
+ const diagnostics = [];
42
+ const fallback = "current";
43
+ if (versions.length === 0) {
44
+ const message = `No versions found under ${root}. Falling back to "${fallback}".`;
45
+ diagnostics.push({
46
+ code: "no-versions-found",
47
+ level: "warn",
48
+ message,
49
+ context: { root },
50
+ });
51
+ logger.warn(message);
52
+ return { versions, selectedVersion: requested ?? fallback, diagnostics };
53
+ }
54
+ if (requested) {
55
+ const match = versions.find((v) => v.version === requested);
56
+ if (!match) {
57
+ const message = `Requested version "${requested}" not found. Using first available: "${versions[0].version}".`;
58
+ diagnostics.push({
59
+ code: "version-not-found",
60
+ level: "warn",
61
+ message,
62
+ context: { requested, available: versions.map((v) => v.version) },
63
+ });
64
+ logger.warn(message);
65
+ return { versions, selectedVersion: versions[0].version, diagnostics };
66
+ }
67
+ return { versions, selectedVersion: requested, diagnostics };
68
+ }
69
+ return { versions, selectedVersion: versions[0].version, diagnostics };
70
+ }
71
+ export async function selectProductAndVersion(provider, root, options, logger, joinChild) {
72
+ const diagnostics = [];
73
+ const productVersioning = options?.productVersioning ?? false;
74
+ let versionsRoot = root;
75
+ let product;
76
+ let products;
77
+ if (productVersioning) {
78
+ const productSelection = await selectProduct(provider, root, options?.product, logger);
79
+ diagnostics.push(...productSelection.diagnostics);
80
+ products = productSelection.products;
81
+ product = productSelection.selectedProduct;
82
+ if (productSelection.selectedProduct) {
83
+ versionsRoot = joinChild(root, productSelection.selectedProduct);
84
+ }
85
+ }
86
+ const { versions, selectedVersion, diagnostics: versionDiagnostics, } = await selectVersion(provider, versionsRoot, options?.version, logger);
87
+ diagnostics.push(...versionDiagnostics);
88
+ return {
89
+ product,
90
+ products,
91
+ versionsRoot,
92
+ versions,
93
+ selectedVersion,
94
+ diagnostics,
95
+ };
96
+ }
97
+ async function selectProduct(provider, root, requested, logger) {
98
+ const diagnostics = [];
99
+ const products = await loadProducts(provider, root);
100
+ if (products.length === 0) {
101
+ const message = `No products found under ${root}.`;
102
+ diagnostics.push({
103
+ code: "no-products-found",
104
+ level: "warn",
105
+ message,
106
+ context: { root },
107
+ });
108
+ logger.warn(message);
109
+ return { products, selectedProduct: undefined, diagnostics };
110
+ }
111
+ if (requested) {
112
+ const match = products.find((p) => p.product === requested);
113
+ if (!match) {
114
+ const message = `Requested product "${requested}" not found. Using first available: "${products[0].product}".`;
115
+ diagnostics.push({
116
+ code: "product-not-found",
117
+ level: "warn",
118
+ message,
119
+ context: { requested, available: products.map((p) => p.product) },
120
+ });
121
+ logger.warn(message);
122
+ return { products, selectedProduct: products[0].product, diagnostics };
123
+ }
124
+ return { products, selectedProduct: requested, diagnostics };
125
+ }
126
+ return { products, selectedProduct: products[0].product, diagnostics };
127
+ }
128
+ function trimTrailingSlash(value) {
129
+ return value.replace(/\/+$/, "");
130
+ }
131
+ function joinUrl(base, child) {
132
+ return `${trimTrailingSlash(base)}/${child.replace(/^\/+/, "")}`;
13
133
  }
14
134
  //# sourceMappingURL=loadVersionData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadVersionData.js","sourceRoot":"","sources":["../../src/data/loadVersionData.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAsB,EACtB,cAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACnC,GAAG,cAAc,aAAa,CAC/B,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC;QAC7D,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC;KACpD,CAAC,CAAC;IAEH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"loadVersionData.js","sourceRoot":"","sources":["../../src/data/loadVersionData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./configs/index.browser.js";
2
+ export * from "./constants/index.js";
3
+ export * from "./themes/index.js";
4
+ export * from "./types/index.js";
5
+ export * from "./data/index.browser.js";
6
+ export * from "./utilities/index.browser.js";
7
+ //# sourceMappingURL=index.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./configs/index.browser.js";
2
+ export * from "./constants/index.js";
3
+ export * from "./themes/index.js";
4
+ export * from "./types/index.js";
5
+ export * from "./data/index.browser.js";
6
+ export * from "./utilities/index.browser.js";
7
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { defaultTheme } from "./presets/default.js";
2
2
  export { AVAILABLE_THEME_PRESET_NAMES, DEFAULT_THEME_PRESET, DOCS_CORE_THEME_PRESETS, getThemePreset, isThemePresetName, } from "./themeRegistry.js";
3
+ export { isStyleTheme, parseStyleTheme, styleThemeSchema } from "./styleThemeSchema.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { defaultTheme } from "./presets/default.js";
2
2
  export { AVAILABLE_THEME_PRESET_NAMES, DEFAULT_THEME_PRESET, DOCS_CORE_THEME_PRESETS, getThemePreset, isThemePresetName, } from "./themeRegistry.js";
3
+ export { isStyleTheme, parseStyleTheme, styleThemeSchema } from "./styleThemeSchema.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { z } from "zod";
2
+ import type { StyleTheme } from "../types/StyleTheme.js";
3
+ export declare const styleThemeSchema: z.ZodType<StyleTheme, z.ZodTypeDef, StyleTheme>;
4
+ export declare function parseStyleTheme(theme: unknown): StyleTheme;
5
+ export declare function isStyleTheme(theme: unknown): theme is StyleTheme;
6
+ //# sourceMappingURL=styleThemeSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleThemeSchema.d.ts","sourceRoot":"","sources":["../../src/themes/styleThemeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAuBzD,eAAO,MAAM,gBAAgB,iDAAsC,CAAC;AAEpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAW1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { defaultTheme } from "./presets/default.js";
3
+ function buildSchemaFromPreset(preset) {
4
+ const build = (value) => {
5
+ if (typeof value === "string") {
6
+ return z.string();
7
+ }
8
+ if (value && typeof value === "object" && !Array.isArray(value)) {
9
+ const shape = {};
10
+ Object.entries(value).forEach(([key, child]) => {
11
+ shape[key] = build(child);
12
+ });
13
+ return z.object(shape).strict();
14
+ }
15
+ throw new Error("Invalid style theme preset shape.");
16
+ };
17
+ return build(preset);
18
+ }
19
+ export const styleThemeSchema = buildSchemaFromPreset(defaultTheme);
20
+ export function parseStyleTheme(theme) {
21
+ const result = styleThemeSchema.safeParse(theme);
22
+ if (!result.success) {
23
+ throw new Error(`Invalid style theme provided. ${result.error.issues
24
+ .map((issue) => `${issue.path.join(".") || "theme"}: ${issue.message}`)
25
+ .join("; ")}`);
26
+ }
27
+ return result.data;
28
+ }
29
+ export function isStyleTheme(theme) {
30
+ return styleThemeSchema.safeParse(theme).success;
31
+ }
32
+ //# sourceMappingURL=styleThemeSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleThemeSchema.js","sourceRoot":"","sources":["../../src/themes/styleThemeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,SAAS,qBAAqB,CAAC,MAAkB;IAC/C,MAAM,KAAK,GAAG,CAAC,KAAc,EAAgB,EAAE;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAiC,EAAE,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,MAAM,CAA0B,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAEpE,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,KAAK,CAAC,MAAM;aACjD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"themeRegistry.d.ts","sourceRoot":"","sources":["../../src/themes/themeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,uBAAuB;;CAEW,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,eAA2B,CAAC;AAE/D,eAAO,MAAM,4BAA4B,sBAExC,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAsC,GAAG,UAAU,CAOvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E"}
1
+ {"version":3,"file":"themeRegistry.d.ts","sourceRoot":"","sources":["../../src/themes/themeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,eAAO,MAAM,uBAAuB;;CAEW,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,eAA2B,CAAC;AAE/D,eAAO,MAAM,4BAA4B,sBAExC,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAsC,GAAG,UAAU,CAOvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"themeRegistry.js","sourceRoot":"","sources":["../../src/themes/themeRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,YAAY;CACwB,CAAC;AAIhD,MAAM,CAAC,MAAM,oBAAoB,GAAoB,SAAS,CAAC;AAE/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CACvD,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAsB,CAC1D,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,OAAwB,oBAAoB;IACzE,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,4BAA4B,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAC;AACtG,CAAC"}
1
+ {"version":3,"file":"themeRegistry.js","sourceRoot":"","sources":["../../src/themes/themeRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,YAAY;CACwB,CAAC;AAIhD,MAAM,CAAC,MAAM,oBAAoB,GAAoB,SAAS,CAAC;AAE/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CACvD,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAsB,CAC1D,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,OAAwB,oBAAoB;IACzE,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,4BAA4B,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAC;AACtG,CAAC"}
@@ -2,6 +2,7 @@ import type { HeaderBranding } from "./HeaderBranding.js";
2
2
  import type { StyleTheme } from "./StyleTheme.js";
3
3
  export interface ClientVisibleSstDocsConfig {
4
4
  PUBLIC_DATA_PATH: string;
5
+ PRODUCT_VERSIONING: boolean;
5
6
  HEADER_BRANDING: HeaderBranding;
6
7
  HTML_GENERATOR_THEME?: StyleTheme;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientVisibleSstDocsConfig.d.ts","sourceRoot":"","sources":["../../src/types/ClientVisibleSstDocsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACnC"}
1
+ {"version":3,"file":"ClientVisibleSstDocsConfig.d.ts","sourceRoot":"","sources":["../../src/types/ClientVisibleSstDocsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACnC"}
@@ -0,0 +1,8 @@
1
+ export type DiagnosticLevel = "info" | "warn" | "error";
2
+ export interface DataDiagnostic {
3
+ code?: string;
4
+ level: DiagnosticLevel;
5
+ message: string;
6
+ context?: Record<string, unknown>;
7
+ }
8
+ //# sourceMappingURL=DataDiagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDiagnostic.d.ts","sourceRoot":"","sources":["../../src/types/DataDiagnostic.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DataDiagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDiagnostic.js","sourceRoot":"","sources":["../../src/types/DataDiagnostic.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import type { StyleTheme } from "./StyleTheme.js";
2
1
  import type { ThemePresetName } from "../themes/themeRegistry.js";
2
+ import type { StyleTheme } from "./StyleTheme.js";
3
3
  export interface HtmlGeneratorSettingsInput {
4
4
  OUTPUT_DIRECTORY: string;
5
5
  THEME: ThemeSelection;
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlGeneratorSettings.d.ts","sourceRoot":"","sources":["../../src/types/HtmlGeneratorSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,iCAAiC,CAAC,EAAE,OAAO,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,iCAAiC,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"HtmlGeneratorSettings.d.ts","sourceRoot":"","sources":["../../src/types/HtmlGeneratorSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,iCAAiC,CAAC,EAAE,OAAO,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,iCAAiC,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface Product {
2
+ product: string;
3
+ label: string;
4
+ }
5
+ //# sourceMappingURL=Product.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Product.d.ts","sourceRoot":"","sources":["../../src/types/Product.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Product.js","sourceRoot":"","sources":["../../src/types/Product.ts"],"names":[],"mappings":""}