@cratis/scene.engine 4.25.0 → 4.27.0

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 (223) hide show
  1. package/dist/cjs/editing/resolveEffectiveConfiguration.js +8 -0
  2. package/dist/cjs/editing/resolveEffectiveConfiguration.js.map +1 -1
  3. package/dist/cjs/index.js +64 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/navigation/NavigationDiagnosticCode.js +5 -0
  6. package/dist/cjs/navigation/NavigationDiagnosticCode.js.map +1 -1
  7. package/dist/cjs/navigation/NavigationEditKind.js +16 -0
  8. package/dist/cjs/navigation/NavigationEditKind.js.map +1 -0
  9. package/dist/cjs/navigation/NavigationItemOrigin.js +14 -0
  10. package/dist/cjs/navigation/NavigationItemOrigin.js.map +1 -0
  11. package/dist/cjs/navigation/NavigationSourcesKind.js +16 -0
  12. package/dist/cjs/navigation/NavigationSourcesKind.js.map +1 -0
  13. package/dist/cjs/navigation/diagnoseNavigation.js +8 -1
  14. package/dist/cjs/navigation/diagnoseNavigation.js.map +1 -1
  15. package/dist/cjs/navigation/diagnoseNavigationRegions.js +99 -0
  16. package/dist/cjs/navigation/diagnoseNavigationRegions.js.map +1 -0
  17. package/dist/cjs/navigation/effectiveNavigation.js +133 -0
  18. package/dist/cjs/navigation/effectiveNavigation.js.map +1 -0
  19. package/dist/cjs/navigation/navigationEdits.js +230 -0
  20. package/dist/cjs/navigation/navigationEdits.js.map +1 -0
  21. package/dist/cjs/navigation/navigationRegions.js +42 -0
  22. package/dist/cjs/navigation/navigationRegions.js.map +1 -0
  23. package/dist/cjs/sampleData/SampleRandom.js +77 -0
  24. package/dist/cjs/sampleData/SampleRandom.js.map +1 -0
  25. package/dist/cjs/sampleData/describeSampleDataCatalog.js +61 -0
  26. package/dist/cjs/sampleData/describeSampleDataCatalog.js.map +1 -0
  27. package/dist/cjs/sampleData/findSampleDataSet.js +18 -0
  28. package/dist/cjs/sampleData/findSampleDataSet.js.map +1 -0
  29. package/dist/cjs/sampleData/findSampleRowLiterals.js +73 -0
  30. package/dist/cjs/sampleData/findSampleRowLiterals.js.map +1 -0
  31. package/dist/cjs/sampleData/generateSample.js +188 -0
  32. package/dist/cjs/sampleData/generateSample.js.map +1 -0
  33. package/dist/cjs/sampleData/inferSampleFieldKind.js +176 -0
  34. package/dist/cjs/sampleData/inferSampleFieldKind.js.map +1 -0
  35. package/dist/cjs/sampleData/resolveSampleData.js +107 -0
  36. package/dist/cjs/sampleData/resolveSampleData.js.map +1 -0
  37. package/dist/cjs/sampleData/sampleDataRules.js +26 -0
  38. package/dist/cjs/sampleData/sampleDataRules.js.map +1 -0
  39. package/dist/cjs/sampleData/sampleLocales.js +359 -0
  40. package/dist/cjs/sampleData/sampleLocales.js.map +1 -0
  41. package/dist/cjs/sampleData/validateSampleDataPack.js +44 -0
  42. package/dist/cjs/sampleData/validateSampleDataPack.js.map +1 -0
  43. package/dist/cjs/sampleData/validateSampleDataPackages.js +71 -0
  44. package/dist/cjs/sampleData/validateSampleDataPackages.js.map +1 -0
  45. package/dist/cjs/sampleData/validateSampleDataSelection.js +52 -0
  46. package/dist/cjs/sampleData/validateSampleDataSelection.js.map +1 -0
  47. package/dist/cjs/validateNavigationDestinations.js +2 -0
  48. package/dist/cjs/validateNavigationDestinations.js.map +1 -1
  49. package/dist/esm/editing/resolveEffectiveConfiguration.d.ts.map +1 -1
  50. package/dist/esm/editing/resolveEffectiveConfiguration.js +8 -0
  51. package/dist/esm/editing/resolveEffectiveConfiguration.js.map +1 -1
  52. package/dist/esm/index.d.ts +1 -0
  53. package/dist/esm/index.d.ts.map +1 -1
  54. package/dist/esm/index.js +19 -0
  55. package/dist/esm/index.js.map +1 -1
  56. package/dist/esm/navigation/EffectiveNavItem.d.ts +14 -0
  57. package/dist/esm/navigation/EffectiveNavItem.d.ts.map +1 -0
  58. package/dist/esm/navigation/EffectiveNavItem.js +2 -0
  59. package/dist/esm/navigation/EffectiveNavItem.js.map +1 -0
  60. package/dist/esm/navigation/EffectiveNavigationRegion.d.ts +11 -0
  61. package/dist/esm/navigation/EffectiveNavigationRegion.d.ts.map +1 -0
  62. package/dist/esm/navigation/EffectiveNavigationRegion.js +2 -0
  63. package/dist/esm/navigation/EffectiveNavigationRegion.js.map +1 -0
  64. package/dist/esm/navigation/NavigationDiagnosticCode.d.ts +6 -1
  65. package/dist/esm/navigation/NavigationDiagnosticCode.d.ts.map +1 -1
  66. package/dist/esm/navigation/NavigationDiagnosticCode.js +5 -0
  67. package/dist/esm/navigation/NavigationDiagnosticCode.js.map +1 -1
  68. package/dist/esm/navigation/NavigationEdit.d.ts +13 -0
  69. package/dist/esm/navigation/NavigationEdit.d.ts.map +1 -0
  70. package/dist/esm/navigation/NavigationEdit.js +2 -0
  71. package/dist/esm/navigation/NavigationEdit.js.map +1 -0
  72. package/dist/esm/navigation/NavigationEditKind.d.ts +7 -0
  73. package/dist/esm/navigation/NavigationEditKind.d.ts.map +1 -0
  74. package/dist/esm/navigation/NavigationEditKind.js +14 -0
  75. package/dist/esm/navigation/NavigationEditKind.js.map +1 -0
  76. package/dist/esm/navigation/NavigationEditOutcome.d.ts +7 -0
  77. package/dist/esm/navigation/NavigationEditOutcome.d.ts.map +1 -0
  78. package/dist/esm/navigation/NavigationEditOutcome.js +2 -0
  79. package/dist/esm/navigation/NavigationEditOutcome.js.map +1 -0
  80. package/dist/esm/navigation/NavigationEditPlan.d.ts +6 -0
  81. package/dist/esm/navigation/NavigationEditPlan.d.ts.map +1 -0
  82. package/dist/esm/navigation/NavigationEditPlan.js +2 -0
  83. package/dist/esm/navigation/NavigationEditPlan.js.map +1 -0
  84. package/dist/esm/navigation/NavigationGraph.d.ts +4 -1
  85. package/dist/esm/navigation/NavigationGraph.d.ts.map +1 -1
  86. package/dist/esm/navigation/NavigationItemOrigin.d.ts +5 -0
  87. package/dist/esm/navigation/NavigationItemOrigin.d.ts.map +1 -0
  88. package/dist/esm/navigation/NavigationItemOrigin.js +12 -0
  89. package/dist/esm/navigation/NavigationItemOrigin.js.map +1 -0
  90. package/dist/esm/navigation/NavigationSources.d.ts +6 -0
  91. package/dist/esm/navigation/NavigationSources.d.ts.map +1 -0
  92. package/dist/esm/navigation/NavigationSources.js +2 -0
  93. package/dist/esm/navigation/NavigationSources.js.map +1 -0
  94. package/dist/esm/navigation/NavigationSourcesKind.d.ts +7 -0
  95. package/dist/esm/navigation/NavigationSourcesKind.d.ts.map +1 -0
  96. package/dist/esm/navigation/NavigationSourcesKind.js +14 -0
  97. package/dist/esm/navigation/NavigationSourcesKind.js.map +1 -0
  98. package/dist/esm/navigation/ResolvedNavigationTarget.d.ts +6 -0
  99. package/dist/esm/navigation/ResolvedNavigationTarget.d.ts.map +1 -0
  100. package/dist/esm/navigation/ResolvedNavigationTarget.js +2 -0
  101. package/dist/esm/navigation/ResolvedNavigationTarget.js.map +1 -0
  102. package/dist/esm/navigation/diagnoseNavigation.d.ts.map +1 -1
  103. package/dist/esm/navigation/diagnoseNavigation.js +8 -1
  104. package/dist/esm/navigation/diagnoseNavigation.js.map +1 -1
  105. package/dist/esm/navigation/diagnoseNavigationRegions.d.ts +8 -0
  106. package/dist/esm/navigation/diagnoseNavigationRegions.d.ts.map +1 -0
  107. package/dist/esm/navigation/diagnoseNavigationRegions.js +97 -0
  108. package/dist/esm/navigation/diagnoseNavigationRegions.js.map +1 -0
  109. package/dist/esm/navigation/effectiveNavigation.d.ts +5 -0
  110. package/dist/esm/navigation/effectiveNavigation.d.ts.map +1 -0
  111. package/dist/esm/navigation/effectiveNavigation.js +131 -0
  112. package/dist/esm/navigation/effectiveNavigation.js.map +1 -0
  113. package/dist/esm/navigation/index.d.ts +14 -0
  114. package/dist/esm/navigation/index.d.ts.map +1 -1
  115. package/dist/esm/navigation/index.js +14 -0
  116. package/dist/esm/navigation/index.js.map +1 -1
  117. package/dist/esm/navigation/navigationEdits.d.ts +11 -0
  118. package/dist/esm/navigation/navigationEdits.d.ts.map +1 -0
  119. package/dist/esm/navigation/navigationEdits.js +225 -0
  120. package/dist/esm/navigation/navigationEdits.js.map +1 -0
  121. package/dist/esm/navigation/navigationRegions.d.ts +9 -0
  122. package/dist/esm/navigation/navigationRegions.d.ts.map +1 -0
  123. package/dist/esm/navigation/navigationRegions.js +34 -0
  124. package/dist/esm/navigation/navigationRegions.js.map +1 -0
  125. package/dist/esm/sampleData/SampleDataPackSource.d.ts +6 -0
  126. package/dist/esm/sampleData/SampleDataPackSource.d.ts.map +1 -0
  127. package/dist/esm/sampleData/SampleDataPackSource.js +2 -0
  128. package/dist/esm/sampleData/SampleDataPackSource.js.map +1 -0
  129. package/dist/esm/sampleData/SampleDataResolution.d.ts +29 -0
  130. package/dist/esm/sampleData/SampleDataResolution.d.ts.map +1 -0
  131. package/dist/esm/sampleData/SampleDataResolution.js +2 -0
  132. package/dist/esm/sampleData/SampleDataResolution.js.map +1 -0
  133. package/dist/esm/sampleData/SampleRandom.d.ts +14 -0
  134. package/dist/esm/sampleData/SampleRandom.d.ts.map +1 -0
  135. package/dist/esm/sampleData/SampleRandom.js +72 -0
  136. package/dist/esm/sampleData/SampleRandom.js.map +1 -0
  137. package/dist/esm/sampleData/describeSampleDataCatalog.d.ts +24 -0
  138. package/dist/esm/sampleData/describeSampleDataCatalog.d.ts.map +1 -0
  139. package/dist/esm/sampleData/describeSampleDataCatalog.js +57 -0
  140. package/dist/esm/sampleData/describeSampleDataCatalog.js.map +1 -0
  141. package/dist/esm/sampleData/findSampleDataSet.d.ts +3 -0
  142. package/dist/esm/sampleData/findSampleDataSet.d.ts.map +1 -0
  143. package/dist/esm/sampleData/findSampleDataSet.js +16 -0
  144. package/dist/esm/sampleData/findSampleDataSet.js.map +1 -0
  145. package/dist/esm/sampleData/findSampleRowLiterals.d.ts +11 -0
  146. package/dist/esm/sampleData/findSampleRowLiterals.d.ts.map +1 -0
  147. package/dist/esm/sampleData/findSampleRowLiterals.js +69 -0
  148. package/dist/esm/sampleData/findSampleRowLiterals.js.map +1 -0
  149. package/dist/esm/sampleData/generateSample.d.ts +6 -0
  150. package/dist/esm/sampleData/generateSample.d.ts.map +1 -0
  151. package/dist/esm/sampleData/generateSample.js +183 -0
  152. package/dist/esm/sampleData/generateSample.js.map +1 -0
  153. package/dist/esm/sampleData/index.d.ts +15 -0
  154. package/dist/esm/sampleData/index.d.ts.map +1 -0
  155. package/dist/esm/sampleData/index.js +15 -0
  156. package/dist/esm/sampleData/index.js.map +1 -0
  157. package/dist/esm/sampleData/inferSampleFieldKind.d.ts +3 -0
  158. package/dist/esm/sampleData/inferSampleFieldKind.d.ts.map +1 -0
  159. package/dist/esm/sampleData/inferSampleFieldKind.js +174 -0
  160. package/dist/esm/sampleData/inferSampleFieldKind.js.map +1 -0
  161. package/dist/esm/sampleData/resolveSampleData.d.ts +3 -0
  162. package/dist/esm/sampleData/resolveSampleData.d.ts.map +1 -0
  163. package/dist/esm/sampleData/resolveSampleData.js +105 -0
  164. package/dist/esm/sampleData/resolveSampleData.js.map +1 -0
  165. package/dist/esm/sampleData/sampleDataRules.d.ts +7 -0
  166. package/dist/esm/sampleData/sampleDataRules.d.ts.map +1 -0
  167. package/dist/esm/sampleData/sampleDataRules.js +19 -0
  168. package/dist/esm/sampleData/sampleDataRules.js.map +1 -0
  169. package/dist/esm/sampleData/sampleLocales.d.ts +13 -0
  170. package/dist/esm/sampleData/sampleLocales.d.ts.map +1 -0
  171. package/dist/esm/sampleData/sampleLocales.js +355 -0
  172. package/dist/esm/sampleData/sampleLocales.js.map +1 -0
  173. package/dist/esm/sampleData/validateSampleDataPack.d.ts +3 -0
  174. package/dist/esm/sampleData/validateSampleDataPack.d.ts.map +1 -0
  175. package/dist/esm/sampleData/validateSampleDataPack.js +42 -0
  176. package/dist/esm/sampleData/validateSampleDataPack.js.map +1 -0
  177. package/dist/esm/sampleData/validateSampleDataPackages.d.ts +3 -0
  178. package/dist/esm/sampleData/validateSampleDataPackages.d.ts.map +1 -0
  179. package/dist/esm/sampleData/validateSampleDataPackages.js +69 -0
  180. package/dist/esm/sampleData/validateSampleDataPackages.js.map +1 -0
  181. package/dist/esm/sampleData/validateSampleDataSelection.d.ts +3 -0
  182. package/dist/esm/sampleData/validateSampleDataSelection.d.ts.map +1 -0
  183. package/dist/esm/sampleData/validateSampleDataSelection.js +50 -0
  184. package/dist/esm/sampleData/validateSampleDataSelection.js.map +1 -0
  185. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  186. package/dist/esm/validateNavigationDestinations.js +2 -0
  187. package/dist/esm/validateNavigationDestinations.js.map +1 -1
  188. package/editing/resolveEffectiveConfiguration.ts +13 -0
  189. package/index.ts +1 -0
  190. package/navigation/EffectiveNavItem.ts +37 -0
  191. package/navigation/EffectiveNavigationRegion.ts +26 -0
  192. package/navigation/NavigationDiagnosticCode.ts +15 -0
  193. package/navigation/NavigationEdit.ts +36 -0
  194. package/navigation/NavigationEditKind.ts +19 -0
  195. package/navigation/NavigationEditOutcome.ts +18 -0
  196. package/navigation/NavigationEditPlan.ts +15 -0
  197. package/navigation/NavigationGraph.ts +10 -1
  198. package/navigation/NavigationItemOrigin.ts +13 -0
  199. package/navigation/NavigationSources.ts +15 -0
  200. package/navigation/NavigationSourcesKind.ts +19 -0
  201. package/navigation/ResolvedNavigationTarget.ts +19 -0
  202. package/navigation/diagnoseNavigation.ts +7 -1
  203. package/navigation/diagnoseNavigationRegions.ts +122 -0
  204. package/navigation/effectiveNavigation.ts +105 -0
  205. package/navigation/index.ts +14 -0
  206. package/navigation/navigationEdits.ts +176 -0
  207. package/navigation/navigationRegions.ts +39 -0
  208. package/package.json +3 -3
  209. package/sampleData/SampleDataPackSource.ts +13 -0
  210. package/sampleData/SampleDataResolution.ts +93 -0
  211. package/sampleData/SampleRandom.ts +85 -0
  212. package/sampleData/describeSampleDataCatalog.ts +108 -0
  213. package/sampleData/findSampleDataSet.ts +18 -0
  214. package/sampleData/findSampleRowLiterals.ts +86 -0
  215. package/sampleData/generateSample.ts +156 -0
  216. package/sampleData/index.ts +17 -0
  217. package/sampleData/inferSampleFieldKind.ts +64 -0
  218. package/sampleData/resolveSampleData.ts +96 -0
  219. package/sampleData/sampleDataRules.ts +30 -0
  220. package/sampleData/sampleLocales.ts +91 -0
  221. package/sampleData/validateSampleDataPack.ts +48 -0
  222. package/sampleData/validateSampleDataPackages.ts +79 -0
  223. package/sampleData/validateSampleDataSelection.ts +55 -0
@@ -0,0 +1,105 @@
1
+ import { generateSample } from './generateSample.js';
2
+ import { defaultSampleLocale } from './sampleLocales.js';
3
+ import { findSampleDataSet } from './findSampleDataSet.js';
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Resolves the rows to show for a read model or shape at design or preview time, by the order of spec §11.2:
9
+ *
10
+ * 1. the pack bound to the target (`profile.sampleData.bindings`, a rare override);
11
+ * 2. the application's active pack: the UI profile's `sampleData.activePack`, chosen once for the whole
12
+ * application, or the session-only override (`context.sessionActivePack`) the preview strip sets;
13
+ * 3. the default pack of the blueprint the template came from (`blueprintDefaultPack`);
14
+ * 4. generated data typed by field kind ({@link generateSample}), when the request carries a shape.
15
+ *
16
+ * A pack supplies rows when it has a set for the target, by an explicit `shape → read model` mapping or else by
17
+ * name ({@link findSampleDataSet}). A rung that cannot supply rows falls through to the next; an unknown pack
18
+ * id, or a bound pack without the target's shape, is reported in `diagnostics` (an active or blueprint pack
19
+ * that merely lacks the shape is normal and not reported). The locale carried is the supplying pack's; for
20
+ * generated data it is the first existing bound, active or blueprint pack's, else `context.locale`.
21
+ *
22
+ * Outside design and preview (`context.isDesignOrPreview` not true) nothing resolves (spec SD6).
23
+ */ function resolveSampleData(request, context) {
24
+ const target = request.target ?? request.shape?.name ?? '';
25
+ const fallbackLocale = context.locale ?? defaultSampleLocale;
26
+ const diagnostics = [];
27
+ if (context.isDesignOrPreview !== true) {
28
+ return {
29
+ source: 'disabled',
30
+ locale: fallbackLocale,
31
+ rows: [],
32
+ diagnostics
33
+ };
34
+ }
35
+ const packs = context.packs ?? [];
36
+ const selection = context.profile?.sampleData;
37
+ const mappings = selection?.mappings ?? [];
38
+ const find = (id)=>id === undefined || id === null ? undefined : packs.find((pack)=>pack.id === id);
39
+ const missing = (id, role)=>{
40
+ diagnostics.push({
41
+ code: 'packNotFound',
42
+ message: `The ${role} sample data pack '${id}' is not available`
43
+ });
44
+ };
45
+ const bindingPackId = (selection?.bindings ?? []).find((binding)=>binding.target === target)?.pack;
46
+ const bindingPack = find(bindingPackId);
47
+ if (bindingPackId !== undefined && bindingPack === undefined) {
48
+ missing(bindingPackId, `bound`);
49
+ } else if (bindingPack !== undefined) {
50
+ const set = findSampleDataSet(bindingPack, target, mappings);
51
+ if (set !== undefined) return fromSet('binding', bindingPack, set.shape, set.rows, diagnostics);
52
+ diagnostics.push({
53
+ code: 'shapeNotInPack',
54
+ message: `The bound sample data pack '${bindingPack.id}' has no rows for '${target}'`
55
+ });
56
+ }
57
+ const sessionPackId = context.sessionActivePack;
58
+ const chosenPackId = sessionPackId !== undefined ? sessionPackId : selection?.activePack;
59
+ const activePackId = chosenPackId === '' ? undefined : chosenPackId;
60
+ const activePack = find(activePackId);
61
+ if (activePackId !== undefined && activePackId !== null && activePack === undefined) {
62
+ missing(activePackId, 'active');
63
+ } else if (activePack !== undefined) {
64
+ const set = findSampleDataSet(activePack, target, mappings);
65
+ if (set !== undefined) return fromSet('activePack', activePack, set.shape, set.rows, diagnostics);
66
+ }
67
+ const blueprintPackId = context.blueprintDefaultPack;
68
+ const blueprintPack = find(blueprintPackId);
69
+ if (blueprintPackId !== undefined && blueprintPackId !== null && blueprintPack === undefined) {
70
+ missing(blueprintPackId, 'blueprint default');
71
+ } else if (blueprintPack !== undefined) {
72
+ const set = findSampleDataSet(blueprintPack, target, mappings);
73
+ if (set !== undefined) return fromSet('blueprintDefault', blueprintPack, set.shape, set.rows, diagnostics);
74
+ }
75
+ const locale = bindingPack?.locale ?? activePack?.locale ?? blueprintPack?.locale ?? fallbackLocale;
76
+ if (request.shape === undefined) {
77
+ return {
78
+ source: 'none',
79
+ locale,
80
+ shape: target,
81
+ rows: [],
82
+ diagnostics
83
+ };
84
+ }
85
+ return {
86
+ source: 'generated',
87
+ locale,
88
+ shape: request.shape.name,
89
+ rows: generateSample(request.shape, context.seed, context.rowCount, locale),
90
+ diagnostics
91
+ };
92
+ }
93
+ function fromSet(source, pack, shape, rows, diagnostics) {
94
+ return {
95
+ source,
96
+ pack: pack.id,
97
+ locale: pack.locale,
98
+ shape,
99
+ rows: structuredClone(rows),
100
+ diagnostics
101
+ };
102
+ }
103
+
104
+ export { resolveSampleData };
105
+ //# sourceMappingURL=resolveSampleData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSampleData.js","sources":["../../../sampleData/resolveSampleData.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SampleDataPack } from '@cratis/scene.model';\nimport { generateSample } from './generateSample';\nimport { defaultSampleLocale } from './sampleLocales';\nimport { findSampleDataSet } from './findSampleDataSet';\nimport { SampleDataContext, SampleDataDiagnostic, SampleDataRequest, SampleDataResolution } from './SampleDataResolution';\n\n/**\n * Resolves the rows to show for a read model or shape at design or preview time, by the order of spec §11.2:\n *\n * 1. the pack bound to the target (`profile.sampleData.bindings`, a rare override);\n * 2. the application's active pack: the UI profile's `sampleData.activePack`, chosen once for the whole\n * application, or the session-only override (`context.sessionActivePack`) the preview strip sets;\n * 3. the default pack of the blueprint the template came from (`blueprintDefaultPack`);\n * 4. generated data typed by field kind ({@link generateSample}), when the request carries a shape.\n *\n * A pack supplies rows when it has a set for the target, by an explicit `shape → read model` mapping or else by\n * name ({@link findSampleDataSet}). A rung that cannot supply rows falls through to the next; an unknown pack\n * id, or a bound pack without the target's shape, is reported in `diagnostics` (an active or blueprint pack\n * that merely lacks the shape is normal and not reported). The locale carried is the supplying pack's; for\n * generated data it is the first existing bound, active or blueprint pack's, else `context.locale`.\n *\n * Outside design and preview (`context.isDesignOrPreview` not true) nothing resolves (spec SD6).\n */\nexport function resolveSampleData(request: SampleDataRequest, context: SampleDataContext): SampleDataResolution {\n const target = request.target ?? request.shape?.name ?? '';\n const fallbackLocale = context.locale ?? defaultSampleLocale;\n const diagnostics: SampleDataDiagnostic[] = [];\n\n if (context.isDesignOrPreview !== true) {\n return { source: 'disabled', locale: fallbackLocale, rows: [], diagnostics };\n }\n\n const packs = context.packs ?? [];\n const selection = context.profile?.sampleData;\n const mappings = selection?.mappings ?? [];\n const find = (id: string | null | undefined): SampleDataPack | undefined => (id === undefined || id === null ? undefined : packs.find(pack => pack.id === id));\n const missing = (id: string, role: string): void => {\n diagnostics.push({ code: 'packNotFound', message: `The ${role} sample data pack '${id}' is not available` });\n };\n\n const bindingPackId = (selection?.bindings ?? []).find(binding => binding.target === target)?.pack;\n const bindingPack = find(bindingPackId);\n if (bindingPackId !== undefined && bindingPack === undefined) {\n missing(bindingPackId, `bound`);\n } else if (bindingPack !== undefined) {\n const set = findSampleDataSet(bindingPack, target, mappings);\n if (set !== undefined) return fromSet('binding', bindingPack, set.shape, set.rows, diagnostics);\n diagnostics.push({ code: 'shapeNotInPack', message: `The bound sample data pack '${bindingPack.id}' has no rows for '${target}'` });\n }\n\n const sessionPackId = context.sessionActivePack;\n const chosenPackId = sessionPackId !== undefined ? sessionPackId : selection?.activePack;\n const activePackId = chosenPackId === '' ? undefined : chosenPackId;\n const activePack = find(activePackId);\n if (activePackId !== undefined && activePackId !== null && activePack === undefined) {\n missing(activePackId, 'active');\n } else if (activePack !== undefined) {\n const set = findSampleDataSet(activePack, target, mappings);\n if (set !== undefined) return fromSet('activePack', activePack, set.shape, set.rows, diagnostics);\n }\n\n const blueprintPackId = context.blueprintDefaultPack;\n const blueprintPack = find(blueprintPackId);\n if (blueprintPackId !== undefined && blueprintPackId !== null && blueprintPack === undefined) {\n missing(blueprintPackId, 'blueprint default');\n } else if (blueprintPack !== undefined) {\n const set = findSampleDataSet(blueprintPack, target, mappings);\n if (set !== undefined) return fromSet('blueprintDefault', blueprintPack, set.shape, set.rows, diagnostics);\n }\n\n const locale = bindingPack?.locale ?? activePack?.locale ?? blueprintPack?.locale ?? fallbackLocale;\n if (request.shape === undefined) {\n return { source: 'none', locale, shape: target, rows: [], diagnostics };\n }\n\n return {\n source: 'generated',\n locale,\n shape: request.shape.name,\n rows: generateSample(request.shape, context.seed, context.rowCount, locale),\n diagnostics,\n };\n}\n\nfunction fromSet(\n source: 'binding' | 'activePack' | 'blueprintDefault',\n pack: SampleDataPack,\n shape: string,\n rows: Record<string, unknown>[],\n diagnostics: SampleDataDiagnostic[],\n): SampleDataResolution {\n return { source, pack: pack.id, locale: pack.locale, shape, rows: structuredClone(rows), diagnostics };\n}\n"],"names":["resolveSampleData","request","context","target","shape","name","fallbackLocale","locale","defaultSampleLocale","diagnostics","isDesignOrPreview","source","rows","packs","selection","profile","sampleData","mappings","find","id","undefined","pack","missing","role","push","code","message","bindingPackId","bindings","binding","bindingPack","set","findSampleDataSet","fromSet","sessionPackId","sessionActivePack","chosenPackId","activePack","activePackId","blueprintPackId","blueprintDefaultPack","blueprintPack","generateSample","seed","rowCount","structuredClone"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const sampleDataIdPattern: RegExp;
2
+ export declare const sampleDataLocalePattern: RegExp;
3
+ export declare const userSampleDataOwner = "user";
4
+ export declare const blueprintSampleDataOwnerPrefix = "blueprint:";
5
+ export declare function isValidSampleDataOwner(owner: string | undefined): boolean;
6
+ export declare function isValidSampleDataPath(path: string | undefined): boolean;
7
+ //# sourceMappingURL=sampleDataRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleDataRules.d.ts","sourceRoot":"","sources":["../../../sampleData/sampleDataRules.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,QAAiC,CAAC;AAGlE,eAAO,MAAM,uBAAuB,QAAwC,CAAC;AAG7E,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAG3D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGzE;AAMD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIvE"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** A pack id: lower-case letters and digits in groups separated by `.`, `_` or `-` (`crm-nordic-smb`). */ const sampleDataIdPattern = /^[a-z0-9]+([._-][a-z0-9]+)*$/;
4
+ /** A BCP 47 style locale tag: a 2-3 letter language followed by alphanumeric subtags (`nb-NO`, `en-GB`, `zh-Hant-TW`). */ const sampleDataLocalePattern = /^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/;
5
+ /** The owner of a pack the author created. */ const userSampleDataOwner = 'user';
6
+ /** The prefix of the owner of a pack a blueprint ships (`blueprint:crm`). */ const blueprintSampleDataOwnerPrefix = 'blueprint:';
7
+ /** Whether an owner is `user` or `blueprint:<id>` with a non-empty id. */ function isValidSampleDataOwner(owner) {
8
+ if (owner === undefined || owner === null) return false;
9
+ return owner === userSampleDataOwner || owner.startsWith(blueprintSampleDataOwnerPrefix) && owner.length > blueprintSampleDataOwnerPrefix.length && owner.trim() === owner;
10
+ }
11
+ /** The path separator, built from its code so the seam rule against route literals (I4) does not mistake it for a URL. */ const pathSeparator = String.fromCharCode(47);
12
+ /** Whether a package-relative pack path is `sampleData/<name>.json` with no `..`, `\\` or nested leading `/`. */ function isValidSampleDataPath(path) {
13
+ if (path === undefined || path === null) return false;
14
+ if (!path.startsWith('sampleData/') || !path.endsWith('.json') || path.length <= 'sampleData/.json'.length) return false;
15
+ return !path.includes('..') && !path.includes('\\') && !path.split(pathSeparator).includes('');
16
+ }
17
+
18
+ export { blueprintSampleDataOwnerPrefix, isValidSampleDataOwner, isValidSampleDataPath, sampleDataIdPattern, sampleDataLocalePattern, userSampleDataOwner };
19
+ //# sourceMappingURL=sampleDataRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleDataRules.js","sources":["../../../sampleData/sampleDataRules.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** A pack id: lower-case letters and digits in groups separated by `.`, `_` or `-` (`crm-nordic-smb`). */\nexport const sampleDataIdPattern = /^[a-z0-9]+([._-][a-z0-9]+)*$/;\n\n/** A BCP 47 style locale tag: a 2-3 letter language followed by alphanumeric subtags (`nb-NO`, `en-GB`, `zh-Hant-TW`). */\nexport const sampleDataLocalePattern = /^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/;\n\n/** The owner of a pack the author created. */\nexport const userSampleDataOwner = 'user';\n\n/** The prefix of the owner of a pack a blueprint ships (`blueprint:crm`). */\nexport const blueprintSampleDataOwnerPrefix = 'blueprint:';\n\n/** Whether an owner is `user` or `blueprint:<id>` with a non-empty id. */\nexport function isValidSampleDataOwner(owner: string | undefined): boolean {\n if (owner === undefined || owner === null) return false;\n return owner === userSampleDataOwner || (owner.startsWith(blueprintSampleDataOwnerPrefix) && owner.length > blueprintSampleDataOwnerPrefix.length && owner.trim() === owner);\n}\n\n/** The path separator, built from its code so the seam rule against route literals (I4) does not mistake it for a URL. */\nconst pathSeparator = String.fromCharCode(47);\n\n/** Whether a package-relative pack path is `sampleData/<name>.json` with no `..`, `\\\\` or nested leading `/`. */\nexport function isValidSampleDataPath(path: string | undefined): boolean {\n if (path === undefined || path === null) return false;\n if (!path.startsWith('sampleData/') || !path.endsWith('.json') || path.length <= 'sampleData/.json'.length) return false;\n return !path.includes('..') && !path.includes('\\\\') && !path.split(pathSeparator).includes('');\n}\n"],"names":["sampleDataIdPattern","sampleDataLocalePattern","userSampleDataOwner","blueprintSampleDataOwnerPrefix","isValidSampleDataOwner","owner","undefined","startsWith","length","trim","pathSeparator","String","fromCharCode","isValidSampleDataPath","path","endsWith","includes","split"],"mappings":"AAAA;AACA;AAEA,2GACO,MAAMA,mBAAAA,GAAsB;AAEnC,2HACO,MAAMC,uBAAAA,GAA0B;AAEvC,+CACO,MAAMC,mBAAAA,GAAsB;AAEnC,8EACO,MAAMC,8BAAAA,GAAiC;AAE9C,2EACO,SAASC,sBAAAA,CAAuBC,KAAyB,EAAA;AAC5D,IAAA,IAAIA,KAAAA,KAAUC,SAAAA,IAAaD,KAAAA,KAAU,IAAA,EAAM,OAAO,KAAA;AAClD,IAAA,OAAOA,KAAAA,KAAUH,mBAAAA,IAAwBG,KAAAA,CAAME,UAAU,CAACJ,8BAAAA,CAAAA,IAAmCE,KAAAA,CAAMG,MAAM,GAAGL,8BAAAA,CAA+BK,MAAM,IAAIH,KAAAA,CAAMI,IAAI,EAAA,KAAOJ,KAAAA;AAC1K;AAEA,2HACA,MAAMK,aAAAA,GAAgBC,MAAAA,CAAOC,YAAY,CAAC,EAAA,CAAA;AAE1C,kHACO,SAASC,qBAAAA,CAAsBC,IAAwB,EAAA;AAC1D,IAAA,IAAIA,IAAAA,KAASR,SAAAA,IAAaQ,IAAAA,KAAS,IAAA,EAAM,OAAO,KAAA;AAChD,IAAA,IAAI,CAACA,IAAAA,CAAKP,UAAU,CAAC,aAAA,CAAA,IAAkB,CAACO,IAAAA,CAAKC,QAAQ,CAAC,OAAA,CAAA,IAAYD,KAAKN,MAAM,IAAI,kBAAA,CAAmBA,MAAM,EAAE,OAAO,KAAA;AACnH,IAAA,OAAO,CAACM,IAAAA,CAAKE,QAAQ,CAAC,IAAA,CAAA,IAAS,CAACF,IAAAA,CAAKE,QAAQ,CAAC,IAAA,CAAA,IAAS,CAACF,IAAAA,CAAKG,KAAK,CAACP,aAAAA,CAAAA,CAAeM,QAAQ,CAAC,EAAA,CAAA;AAC/F;;"}
@@ -0,0 +1,13 @@
1
+ export interface SampleLocale {
2
+ firstNames: string[];
3
+ lastNames: string[];
4
+ companies: string[];
5
+ cities: string[];
6
+ domains: string[];
7
+ phoneTemplate: string;
8
+ words: string[];
9
+ }
10
+ export declare const defaultSampleLocale = "en-GB";
11
+ export declare const sampleLocaleTags: string[];
12
+ export declare function sampleLocaleFor(tag: string | undefined): SampleLocale;
13
+ //# sourceMappingURL=sampleLocales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleLocales.d.ts","sourceRoot":"","sources":["../../../sampleData/sampleLocales.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AA8DD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAG3C,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAwB,CAAC;AAM9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAMrE"}
@@ -0,0 +1,355 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** The value pools and formats generated data draws from for one locale. */ const englishWords = [
4
+ 'review',
5
+ 'quarterly',
6
+ 'update',
7
+ 'invoice',
8
+ 'customer',
9
+ 'delivery',
10
+ 'schedule',
11
+ 'renewal',
12
+ 'report',
13
+ 'follow',
14
+ 'up',
15
+ 'meeting'
16
+ ];
17
+ const locales = new Map(Object.entries({
18
+ 'en-GB': {
19
+ firstNames: [
20
+ 'Oliver',
21
+ 'Amelia',
22
+ 'George',
23
+ 'Isla',
24
+ 'Harry',
25
+ 'Ava',
26
+ 'Jack',
27
+ 'Freya',
28
+ 'Arthur',
29
+ 'Poppy'
30
+ ],
31
+ lastNames: [
32
+ 'Smith',
33
+ 'Jones',
34
+ 'Taylor',
35
+ 'Brown',
36
+ 'Wilson',
37
+ 'Evans',
38
+ 'Thomas',
39
+ 'Roberts',
40
+ 'Walker',
41
+ 'Wright'
42
+ ],
43
+ companies: [
44
+ 'Northgate Ltd',
45
+ 'Albion Supplies Ltd',
46
+ 'Thames Logistics Ltd',
47
+ 'Pennine Foods Ltd',
48
+ 'Harbour Digital Ltd',
49
+ 'Cotswold Tools Ltd'
50
+ ],
51
+ cities: [
52
+ 'London',
53
+ 'Manchester',
54
+ 'Leeds',
55
+ 'Bristol',
56
+ 'Glasgow',
57
+ 'Cardiff',
58
+ 'Sheffield',
59
+ 'Newcastle'
60
+ ],
61
+ domains: [
62
+ 'example.co.uk',
63
+ 'example.org.uk',
64
+ 'sample.co.uk'
65
+ ],
66
+ phoneTemplate: '+44 7### ######',
67
+ words: englishWords
68
+ },
69
+ 'en-US': {
70
+ firstNames: [
71
+ 'James',
72
+ 'Emma',
73
+ 'Michael',
74
+ 'Olivia',
75
+ 'William',
76
+ 'Sophia',
77
+ 'Benjamin',
78
+ 'Mia',
79
+ 'Henry',
80
+ 'Grace'
81
+ ],
82
+ lastNames: [
83
+ 'Johnson',
84
+ 'Miller',
85
+ 'Davis',
86
+ 'Garcia',
87
+ 'Anderson',
88
+ 'Martin',
89
+ 'Clark',
90
+ 'Lewis',
91
+ 'Young',
92
+ 'Hall'
93
+ ],
94
+ companies: [
95
+ 'Summit Supply Inc',
96
+ 'Bluebird Software Inc',
97
+ 'Redwood Freight Inc',
98
+ 'Lakeside Foods Inc',
99
+ 'Cardinal Tools Inc',
100
+ 'Pioneer Digital Inc'
101
+ ],
102
+ cities: [
103
+ 'New York',
104
+ 'Chicago',
105
+ 'Austin',
106
+ 'Seattle',
107
+ 'Denver',
108
+ 'Boston',
109
+ 'Atlanta',
110
+ 'Portland'
111
+ ],
112
+ domains: [
113
+ 'example.com',
114
+ 'example.net',
115
+ 'sample.com'
116
+ ],
117
+ phoneTemplate: '+1 (555) ###-####',
118
+ words: englishWords
119
+ },
120
+ 'nb-NO': {
121
+ firstNames: [
122
+ 'Lars',
123
+ 'Ingrid',
124
+ 'Ola',
125
+ 'Kari',
126
+ 'Henrik',
127
+ 'Sigrid',
128
+ 'Magnus',
129
+ 'Åse',
130
+ 'Bjørn',
131
+ 'Mari'
132
+ ],
133
+ lastNames: [
134
+ 'Hansen',
135
+ 'Johansen',
136
+ 'Olsen',
137
+ 'Larsen',
138
+ 'Andersen',
139
+ 'Pedersen',
140
+ 'Nilsen',
141
+ 'Kristiansen',
142
+ 'Berg',
143
+ 'Haugen'
144
+ ],
145
+ companies: [
146
+ 'Fjordline AS',
147
+ 'Nordlys Handel AS',
148
+ 'Fjellvik Maskin AS',
149
+ 'Bergen Logistikk AS',
150
+ 'Havbruk Partner AS',
151
+ 'Skagerrak Digital AS'
152
+ ],
153
+ cities: [
154
+ 'Oslo',
155
+ 'Bergen',
156
+ 'Trondheim',
157
+ 'Stavanger',
158
+ 'Tromsø',
159
+ 'Drammen',
160
+ 'Kristiansand',
161
+ 'Ålesund'
162
+ ],
163
+ domains: [
164
+ 'eksempel.no',
165
+ 'prove.no',
166
+ 'demo.no'
167
+ ],
168
+ phoneTemplate: '+47 9## ## ###',
169
+ words: [
170
+ 'gjennomgang',
171
+ 'kvartal',
172
+ 'oppdatering',
173
+ 'faktura',
174
+ 'kunde',
175
+ 'levering',
176
+ 'avtale',
177
+ 'fornyelse',
178
+ 'rapport',
179
+ 'oppfølging',
180
+ 'møte',
181
+ 'bestilling'
182
+ ]
183
+ },
184
+ 'sv-SE': {
185
+ firstNames: [
186
+ 'Erik',
187
+ 'Astrid',
188
+ 'Lars',
189
+ 'Maja',
190
+ 'Anders',
191
+ 'Elsa',
192
+ 'Johan',
193
+ 'Linnéa',
194
+ 'Gustav',
195
+ 'Åsa'
196
+ ],
197
+ lastNames: [
198
+ 'Andersson',
199
+ 'Johansson',
200
+ 'Karlsson',
201
+ 'Nilsson',
202
+ 'Eriksson',
203
+ 'Larsson',
204
+ 'Olsson',
205
+ 'Persson',
206
+ 'Svensson',
207
+ 'Gustafsson'
208
+ ],
209
+ companies: [
210
+ 'Norrlands Handel AB',
211
+ 'Östersund Teknik AB',
212
+ 'Göta Logistik AB',
213
+ 'Skärgården Livs AB',
214
+ 'Malmö Digital AB',
215
+ 'Vättern Verktyg AB'
216
+ ],
217
+ cities: [
218
+ 'Stockholm',
219
+ 'Göteborg',
220
+ 'Malmö',
221
+ 'Uppsala',
222
+ 'Västerås',
223
+ 'Örebro',
224
+ 'Linköping',
225
+ 'Umeå'
226
+ ],
227
+ domains: [
228
+ 'exempel.se',
229
+ 'prov.se',
230
+ 'demo.se'
231
+ ],
232
+ phoneTemplate: '+46 70 ### ## ##',
233
+ words: [
234
+ 'granskning',
235
+ 'kvartal',
236
+ 'uppdatering',
237
+ 'faktura',
238
+ 'kund',
239
+ 'leverans',
240
+ 'avtal',
241
+ 'förnyelse',
242
+ 'rapport',
243
+ 'uppföljning',
244
+ 'möte',
245
+ 'beställning'
246
+ ]
247
+ },
248
+ 'de-DE': {
249
+ firstNames: [
250
+ 'Lukas',
251
+ 'Anna',
252
+ 'Felix',
253
+ 'Marie',
254
+ 'Jonas',
255
+ 'Sophie',
256
+ 'Maximilian',
257
+ 'Lena',
258
+ 'Paul',
259
+ 'Jördis'
260
+ ],
261
+ lastNames: [
262
+ 'Müller',
263
+ 'Schmidt',
264
+ 'Schneider',
265
+ 'Fischer',
266
+ 'Weber',
267
+ 'Meyer',
268
+ 'Wagner',
269
+ 'Becker',
270
+ 'Schulz',
271
+ 'Hoffmann'
272
+ ],
273
+ companies: [
274
+ 'Rheinwerk GmbH',
275
+ 'Nordsee Handel GmbH',
276
+ 'Isar Logistik GmbH',
277
+ 'Schwarzwald Technik GmbH',
278
+ 'Elbe Digital GmbH',
279
+ 'Bayern Werkzeug GmbH'
280
+ ],
281
+ cities: [
282
+ 'Berlin',
283
+ 'Hamburg',
284
+ 'München',
285
+ 'Köln',
286
+ 'Frankfurt',
287
+ 'Stuttgart',
288
+ 'Düsseldorf',
289
+ 'Leipzig'
290
+ ],
291
+ domains: [
292
+ 'beispiel.de',
293
+ 'muster.de',
294
+ 'demo.de'
295
+ ],
296
+ phoneTemplate: '+49 151 ########',
297
+ words: [
298
+ 'prüfung',
299
+ 'quartal',
300
+ 'aktualisierung',
301
+ 'rechnung',
302
+ 'kunde',
303
+ 'lieferung',
304
+ 'vertrag',
305
+ 'verlängerung',
306
+ 'bericht',
307
+ 'nachfassen',
308
+ 'termin',
309
+ 'bestellung'
310
+ ]
311
+ }
312
+ }));
313
+ const languageDefaults = new Map([
314
+ [
315
+ 'en',
316
+ 'en-GB'
317
+ ],
318
+ [
319
+ 'nb',
320
+ 'nb-NO'
321
+ ],
322
+ [
323
+ 'nn',
324
+ 'nb-NO'
325
+ ],
326
+ [
327
+ 'no',
328
+ 'nb-NO'
329
+ ],
330
+ [
331
+ 'sv',
332
+ 'sv-SE'
333
+ ],
334
+ [
335
+ 'de',
336
+ 'de-DE'
337
+ ]
338
+ ]);
339
+ /** The locale used when a tag matches no pool. */ const defaultSampleLocale = 'en-GB';
340
+ /** The locale tags with their own pools. */ const sampleLocaleTags = [
341
+ ...locales.keys()
342
+ ];
343
+ /**
344
+ * Resolves a BCP 47 tag to a pool: the exact tag (language lower case, region upper case), else the
345
+ * language's default pool, else {@link defaultSampleLocale}.
346
+ */ function sampleLocaleFor(tag) {
347
+ const parts = (tag ?? '').trim().split('-');
348
+ const language = parts[0].toLowerCase();
349
+ const region = parts.length > 1 ? parts[1].toUpperCase() : '';
350
+ const exact = region === '' ? undefined : locales.get(`${language}-${region}`);
351
+ return exact ?? locales.get(languageDefaults.get(language) ?? defaultSampleLocale);
352
+ }
353
+
354
+ export { defaultSampleLocale, sampleLocaleFor, sampleLocaleTags };
355
+ //# sourceMappingURL=sampleLocales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampleLocales.js","sources":["../../../sampleData/sampleLocales.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** The value pools and formats generated data draws from for one locale. */\nexport interface SampleLocale {\n firstNames: string[];\n lastNames: string[];\n companies: string[];\n cities: string[];\n domains: string[];\n /** `#` is replaced by a random digit. */\n phoneTemplate: string;\n words: string[];\n}\n\nconst englishWords = ['review', 'quarterly', 'update', 'invoice', 'customer', 'delivery', 'schedule', 'renewal', 'report', 'follow', 'up', 'meeting'];\n\nconst locales = new Map<string, SampleLocale>(Object.entries({\n 'en-GB': {\n firstNames: ['Oliver', 'Amelia', 'George', 'Isla', 'Harry', 'Ava', 'Jack', 'Freya', 'Arthur', 'Poppy'],\n lastNames: ['Smith', 'Jones', 'Taylor', 'Brown', 'Wilson', 'Evans', 'Thomas', 'Roberts', 'Walker', 'Wright'],\n companies: ['Northgate Ltd', 'Albion Supplies Ltd', 'Thames Logistics Ltd', 'Pennine Foods Ltd', 'Harbour Digital Ltd', 'Cotswold Tools Ltd'],\n cities: ['London', 'Manchester', 'Leeds', 'Bristol', 'Glasgow', 'Cardiff', 'Sheffield', 'Newcastle'],\n domains: ['example.co.uk', 'example.org.uk', 'sample.co.uk'],\n phoneTemplate: '+44 7### ######',\n words: englishWords,\n },\n 'en-US': {\n firstNames: ['James', 'Emma', 'Michael', 'Olivia', 'William', 'Sophia', 'Benjamin', 'Mia', 'Henry', 'Grace'],\n lastNames: ['Johnson', 'Miller', 'Davis', 'Garcia', 'Anderson', 'Martin', 'Clark', 'Lewis', 'Young', 'Hall'],\n companies: ['Summit Supply Inc', 'Bluebird Software Inc', 'Redwood Freight Inc', 'Lakeside Foods Inc', 'Cardinal Tools Inc', 'Pioneer Digital Inc'],\n cities: ['New York', 'Chicago', 'Austin', 'Seattle', 'Denver', 'Boston', 'Atlanta', 'Portland'],\n domains: ['example.com', 'example.net', 'sample.com'],\n phoneTemplate: '+1 (555) ###-####',\n words: englishWords,\n },\n 'nb-NO': {\n firstNames: ['Lars', 'Ingrid', 'Ola', 'Kari', 'Henrik', 'Sigrid', 'Magnus', 'Åse', 'Bjørn', 'Mari'],\n lastNames: ['Hansen', 'Johansen', 'Olsen', 'Larsen', 'Andersen', 'Pedersen', 'Nilsen', 'Kristiansen', 'Berg', 'Haugen'],\n companies: ['Fjordline AS', 'Nordlys Handel AS', 'Fjellvik Maskin AS', 'Bergen Logistikk AS', 'Havbruk Partner AS', 'Skagerrak Digital AS'],\n cities: ['Oslo', 'Bergen', 'Trondheim', 'Stavanger', 'Tromsø', 'Drammen', 'Kristiansand', 'Ålesund'],\n domains: ['eksempel.no', 'prove.no', 'demo.no'],\n phoneTemplate: '+47 9## ## ###',\n words: ['gjennomgang', 'kvartal', 'oppdatering', 'faktura', 'kunde', 'levering', 'avtale', 'fornyelse', 'rapport', 'oppfølging', 'møte', 'bestilling'],\n },\n 'sv-SE': {\n firstNames: ['Erik', 'Astrid', 'Lars', 'Maja', 'Anders', 'Elsa', 'Johan', 'Linnéa', 'Gustav', 'Åsa'],\n lastNames: ['Andersson', 'Johansson', 'Karlsson', 'Nilsson', 'Eriksson', 'Larsson', 'Olsson', 'Persson', 'Svensson', 'Gustafsson'],\n companies: ['Norrlands Handel AB', 'Östersund Teknik AB', 'Göta Logistik AB', 'Skärgården Livs AB', 'Malmö Digital AB', 'Vättern Verktyg AB'],\n cities: ['Stockholm', 'Göteborg', 'Malmö', 'Uppsala', 'Västerås', 'Örebro', 'Linköping', 'Umeå'],\n domains: ['exempel.se', 'prov.se', 'demo.se'],\n phoneTemplate: '+46 70 ### ## ##',\n words: ['granskning', 'kvartal', 'uppdatering', 'faktura', 'kund', 'leverans', 'avtal', 'förnyelse', 'rapport', 'uppföljning', 'möte', 'beställning'],\n },\n 'de-DE': {\n firstNames: ['Lukas', 'Anna', 'Felix', 'Marie', 'Jonas', 'Sophie', 'Maximilian', 'Lena', 'Paul', 'Jördis'],\n lastNames: ['Müller', 'Schmidt', 'Schneider', 'Fischer', 'Weber', 'Meyer', 'Wagner', 'Becker', 'Schulz', 'Hoffmann'],\n companies: ['Rheinwerk GmbH', 'Nordsee Handel GmbH', 'Isar Logistik GmbH', 'Schwarzwald Technik GmbH', 'Elbe Digital GmbH', 'Bayern Werkzeug GmbH'],\n cities: ['Berlin', 'Hamburg', 'München', 'Köln', 'Frankfurt', 'Stuttgart', 'Düsseldorf', 'Leipzig'],\n domains: ['beispiel.de', 'muster.de', 'demo.de'],\n phoneTemplate: '+49 151 ########',\n words: ['prüfung', 'quartal', 'aktualisierung', 'rechnung', 'kunde', 'lieferung', 'vertrag', 'verlängerung', 'bericht', 'nachfassen', 'termin', 'bestellung'],\n },\n} as Record<string, SampleLocale>));\n\nconst languageDefaults = new Map<string, string>([\n ['en', 'en-GB'],\n ['nb', 'nb-NO'],\n ['nn', 'nb-NO'],\n ['no', 'nb-NO'],\n ['sv', 'sv-SE'],\n ['de', 'de-DE'],\n]);\n\n/** The locale used when a tag matches no pool. */\nexport const defaultSampleLocale = 'en-GB';\n\n/** The locale tags with their own pools. */\nexport const sampleLocaleTags: string[] = [...locales.keys()];\n\n/**\n * Resolves a BCP 47 tag to a pool: the exact tag (language lower case, region upper case), else the\n * language's default pool, else {@link defaultSampleLocale}.\n */\nexport function sampleLocaleFor(tag: string | undefined): SampleLocale {\n const parts = (tag ?? '').trim().split('-');\n const language = parts[0].toLowerCase();\n const region = parts.length > 1 ? parts[1].toUpperCase() : '';\n const exact = region === '' ? undefined : locales.get(`${language}-${region}`);\n return exact ?? locales.get(languageDefaults.get(language) ?? defaultSampleLocale)!;\n}\n"],"names":["englishWords","locales","Map","Object","entries","firstNames","lastNames","companies","cities","domains","phoneTemplate","words","languageDefaults","defaultSampleLocale","sampleLocaleTags","keys","sampleLocaleFor","tag","parts","trim","split","language","toLowerCase","region","length","toUpperCase","exact","undefined","get"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SampleDataPack } from '@cratis/scene.model';
2
+ export declare function validateSampleDataPack(pack: SampleDataPack): string[];
3
+ //# sourceMappingURL=validateSampleDataPack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSampleDataPack.d.ts","sourceRoot":"","sources":["../../../sampleData/validateSampleDataPack.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAmCrE"}
@@ -0,0 +1,42 @@
1
+ import { sampleDataIdPattern, sampleDataLocalePattern, isValidSampleDataOwner } from './sampleDataRules.js';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Checks a pack's schema: an id of the allowed form, a title, a well-formed locale tag, an owner that is
7
+ * `user` or `blueprint:<id>`, and sets with a shape each, none repeated. The C# engine
8
+ * (`SampleDataValidation.ValidatePack`) reports the same problems in the same order; both are asserted against
9
+ * `sample-data-resolution-fixtures.json`.
10
+ */ function validateSampleDataPack(pack) {
11
+ const problems = [];
12
+ const id = pack.id ?? '';
13
+ const label = id.trim() === '' ? 'Sample data pack' : `Sample data pack '${id}'`;
14
+ if (id.trim() === '') {
15
+ problems.push('Sample data pack declares no id');
16
+ } else if (!sampleDataIdPattern.test(id)) {
17
+ problems.push(`${label} declares an invalid id; use lower-case letters, digits and '.', '_' or '-' separators`);
18
+ }
19
+ if ((pack.title ?? '').trim() === '') problems.push(`${label} declares no title`);
20
+ if ((pack.locale ?? '').trim() === '') {
21
+ problems.push(`${label} declares no locale`);
22
+ } else if (!sampleDataLocalePattern.test(pack.locale)) {
23
+ problems.push(`${label} declares an invalid locale '${pack.locale}'`);
24
+ }
25
+ if (!isValidSampleDataOwner(pack.owner)) {
26
+ problems.push(`${label} declares owner '${pack.owner ?? ''}', which is neither 'user' nor 'blueprint:<id>'`);
27
+ }
28
+ const seen = new Set();
29
+ for (const set of pack.sets ?? []){
30
+ if ((set.shape ?? '').trim() === '') {
31
+ problems.push(`${label} declares a set without a shape`);
32
+ } else if (seen.has(set.shape)) {
33
+ problems.push(`${label} declares shape '${set.shape}' more than once`);
34
+ } else {
35
+ seen.add(set.shape);
36
+ }
37
+ }
38
+ return problems;
39
+ }
40
+
41
+ export { validateSampleDataPack };
42
+ //# sourceMappingURL=validateSampleDataPack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSampleDataPack.js","sources":["../../../sampleData/validateSampleDataPack.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { SampleDataPack } from '@cratis/scene.model';\nimport { isValidSampleDataOwner, sampleDataIdPattern, sampleDataLocalePattern } from './sampleDataRules';\n\n/**\n * Checks a pack's schema: an id of the allowed form, a title, a well-formed locale tag, an owner that is\n * `user` or `blueprint:<id>`, and sets with a shape each, none repeated. The C# engine\n * (`SampleDataValidation.ValidatePack`) reports the same problems in the same order; both are asserted against\n * `sample-data-resolution-fixtures.json`.\n */\nexport function validateSampleDataPack(pack: SampleDataPack): string[] {\n const problems: string[] = [];\n const id = pack.id ?? '';\n const label = id.trim() === '' ? 'Sample data pack' : `Sample data pack '${id}'`;\n\n if (id.trim() === '') {\n problems.push('Sample data pack declares no id');\n } else if (!sampleDataIdPattern.test(id)) {\n problems.push(`${label} declares an invalid id; use lower-case letters, digits and '.', '_' or '-' separators`);\n }\n\n if ((pack.title ?? '').trim() === '') problems.push(`${label} declares no title`);\n\n if ((pack.locale ?? '').trim() === '') {\n problems.push(`${label} declares no locale`);\n } else if (!sampleDataLocalePattern.test(pack.locale)) {\n problems.push(`${label} declares an invalid locale '${pack.locale}'`);\n }\n\n if (!isValidSampleDataOwner(pack.owner)) {\n problems.push(`${label} declares owner '${pack.owner ?? ''}', which is neither 'user' nor 'blueprint:<id>'`);\n }\n\n const seen = new Set<string>();\n for (const set of pack.sets ?? []) {\n if ((set.shape ?? '').trim() === '') {\n problems.push(`${label} declares a set without a shape`);\n } else if (seen.has(set.shape)) {\n problems.push(`${label} declares shape '${set.shape}' more than once`);\n } else {\n seen.add(set.shape);\n }\n }\n\n return problems;\n}\n"],"names":["validateSampleDataPack","pack","problems","id","label","trim","push","sampleDataIdPattern","test","title","locale","sampleDataLocalePattern","isValidSampleDataOwner","owner","seen","Set","set","sets","shape","has","add"],"mappings":";;AAAA;AACA;AAKA;;;;;IAMO,SAASA,sBAAAA,CAAuBC,IAAoB,EAAA;AACvD,IAAA,MAAMC,WAAqB,EAAE;IAC7B,MAAMC,EAAAA,GAAKF,IAAAA,CAAKE,EAAE,IAAI,EAAA;IACtB,MAAMC,KAAAA,GAAQD,EAAAA,CAAGE,IAAI,EAAA,KAAO,EAAA,GAAK,kBAAA,GAAqB,CAAC,kBAAkB,EAAEF,EAAAA,CAAG,CAAC,CAAC;IAEhF,IAAIA,EAAAA,CAAGE,IAAI,EAAA,KAAO,EAAA,EAAI;AAClBH,QAAAA,QAAAA,CAASI,IAAI,CAAC,iCAAA,CAAA;AAClB,IAAA,CAAA,MAAO,IAAI,CAACC,mBAAAA,CAAoBC,IAAI,CAACL,EAAAA,CAAAA,EAAK;AACtCD,QAAAA,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,sFAAsF,CAAC,CAAA;AAClH,IAAA;AAEA,IAAA,IAAI,CAACH,IAAAA,CAAKQ,KAAK,IAAI,EAAC,EAAGJ,IAAI,EAAA,KAAO,EAAA,EAAIH,SAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,kBAAkB,CAAC,CAAA;IAEhF,IAAKH,CAAAA,IAAAA,CAAKS,MAAM,IAAI,EAAC,EAAGL,IAAI,EAAA,KAAO,EAAA,EAAI;AACnCH,QAAAA,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,mBAAmB,CAAC,CAAA;AAC/C,IAAA,CAAA,MAAO,IAAI,CAACO,uBAAAA,CAAwBH,IAAI,CAACP,IAAAA,CAAKS,MAAM,CAAA,EAAG;QACnDR,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,6BAA6B,EAAEH,IAAAA,CAAKS,MAAM,CAAC,CAAC,CAAC,CAAA;AACxE,IAAA;AAEA,IAAA,IAAI,CAACE,sBAAAA,CAAuBX,IAAAA,CAAKY,KAAK,CAAA,EAAG;QACrCX,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,iBAAiB,EAAEH,IAAAA,CAAKY,KAAK,IAAI,EAAA,CAAG,+CAA+C,CAAC,CAAA;AAC/G,IAAA;AAEA,IAAA,MAAMC,OAAO,IAAIC,GAAAA,EAAAA;AACjB,IAAA,KAAK,MAAMC,GAAAA,IAAOf,IAAAA,CAAKgB,IAAI,IAAI,EAAE,CAAE;QAC/B,IAAKD,CAAAA,GAAAA,CAAIE,KAAK,IAAI,EAAC,EAAGb,IAAI,EAAA,KAAO,EAAA,EAAI;AACjCH,YAAAA,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,+BAA+B,CAAC,CAAA;AAC3D,QAAA,CAAA,MAAO,IAAIU,IAAAA,CAAKK,GAAG,CAACH,GAAAA,CAAIE,KAAK,CAAA,EAAG;YAC5BhB,QAAAA,CAASI,IAAI,CAAC,CAAA,EAAGF,KAAAA,CAAM,iBAAiB,EAAEY,GAAAA,CAAIE,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACzE,CAAA,MAAO;YACHJ,IAAAA,CAAKM,GAAG,CAACJ,GAAAA,CAAIE,KAAK,CAAA;AACtB,QAAA;AACJ,IAAA;IAEA,OAAOhB,QAAAA;AACX;;"}
@@ -0,0 +1,3 @@
1
+ import { SampleDataPackSource } from './SampleDataPackSource';
2
+ export declare function validateSampleDataPackages(sources: readonly SampleDataPackSource[]): string[];
3
+ //# sourceMappingURL=validateSampleDataPackages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSampleDataPackages.d.ts","sourceRoot":"","sources":["../../../sampleData/validateSampleDataPackages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAW9D,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,EAAE,CA+D7F"}