@flyingrobots/bijou 4.4.1 → 7.0.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 (249) hide show
  1. package/README.md +71 -1
  2. package/dist/adapters/test/index.d.ts.map +1 -1
  3. package/dist/adapters/test/index.js +1 -3
  4. package/dist/adapters/test/index.js.map +1 -1
  5. package/dist/adapters/test/runtime.d.ts.map +1 -1
  6. package/dist/adapters/test/runtime.js +4 -3
  7. package/dist/adapters/test/runtime.js.map +1 -1
  8. package/dist/context-theme.d.ts +25 -0
  9. package/dist/context-theme.d.ts.map +1 -1
  10. package/dist/context-theme.js +19 -0
  11. package/dist/context-theme.js.map +1 -1
  12. package/dist/context.d.ts +13 -1
  13. package/dist/context.d.ts.map +1 -1
  14. package/dist/context.js +24 -3
  15. package/dist/context.js.map +1 -1
  16. package/dist/core/active-binding-collection.d.ts +49 -0
  17. package/dist/core/active-binding-collection.d.ts.map +1 -0
  18. package/dist/core/active-binding-collection.js +264 -0
  19. package/dist/core/active-binding-collection.js.map +1 -0
  20. package/dist/core/app-shell-composition.d.ts +44 -0
  21. package/dist/core/app-shell-composition.d.ts.map +1 -0
  22. package/dist/core/app-shell-composition.js +123 -0
  23. package/dist/core/app-shell-composition.js.map +1 -0
  24. package/dist/core/binding-frame-update.d.ts +18 -0
  25. package/dist/core/binding-frame-update.d.ts.map +1 -0
  26. package/dist/core/binding-frame-update.js +133 -0
  27. package/dist/core/binding-frame-update.js.map +1 -0
  28. package/dist/core/binding-lifecycle.d.ts +65 -0
  29. package/dist/core/binding-lifecycle.d.ts.map +1 -0
  30. package/dist/core/binding-lifecycle.js +357 -0
  31. package/dist/core/binding-lifecycle.js.map +1 -0
  32. package/dist/core/binding.d.ts +192 -0
  33. package/dist/core/binding.d.ts.map +1 -0
  34. package/dist/core/binding.js +587 -0
  35. package/dist/core/binding.js.map +1 -0
  36. package/dist/core/block-metadata.d.ts +113 -0
  37. package/dist/core/block-metadata.d.ts.map +1 -0
  38. package/dist/core/block-metadata.js +376 -0
  39. package/dist/core/block-metadata.js.map +1 -0
  40. package/dist/core/block-tree-render.d.ts +17 -0
  41. package/dist/core/block-tree-render.d.ts.map +1 -0
  42. package/dist/core/block-tree-render.js +186 -0
  43. package/dist/core/block-tree-render.js.map +1 -0
  44. package/dist/core/component-metadata.d.ts +63 -0
  45. package/dist/core/component-metadata.d.ts.map +1 -0
  46. package/dist/core/component-metadata.js +158 -0
  47. package/dist/core/component-metadata.js.map +1 -0
  48. package/dist/core/components/alert-v3.d.ts.map +1 -1
  49. package/dist/core/components/alert-v3.js +5 -4
  50. package/dist/core/components/alert-v3.js.map +1 -1
  51. package/dist/core/components/alert.d.ts.map +1 -1
  52. package/dist/core/components/alert.js +7 -8
  53. package/dist/core/components/alert.js.map +1 -1
  54. package/dist/core/components/badge.d.ts.map +1 -1
  55. package/dist/core/components/badge.js +19 -18
  56. package/dist/core/components/badge.js.map +1 -1
  57. package/dist/core/components/box-v3.d.ts.map +1 -1
  58. package/dist/core/components/box-v3.js +29 -29
  59. package/dist/core/components/box-v3.js.map +1 -1
  60. package/dist/core/components/dag-edges.d.ts +28 -5
  61. package/dist/core/components/dag-edges.d.ts.map +1 -1
  62. package/dist/core/components/dag-edges.js +116 -22
  63. package/dist/core/components/dag-edges.js.map +1 -1
  64. package/dist/core/components/dag-layout.d.ts +3 -4
  65. package/dist/core/components/dag-layout.d.ts.map +1 -1
  66. package/dist/core/components/dag-layout.js +42 -9
  67. package/dist/core/components/dag-layout.js.map +1 -1
  68. package/dist/core/components/dag-render.d.ts +4 -3
  69. package/dist/core/components/dag-render.d.ts.map +1 -1
  70. package/dist/core/components/dag-render.js +209 -105
  71. package/dist/core/components/dag-render.js.map +1 -1
  72. package/dist/core/components/dag-source.d.ts +4 -0
  73. package/dist/core/components/dag-source.d.ts.map +1 -1
  74. package/dist/core/components/dag-source.js +10 -0
  75. package/dist/core/components/dag-source.js.map +1 -1
  76. package/dist/core/components/dag.d.ts +20 -4
  77. package/dist/core/components/dag.d.ts.map +1 -1
  78. package/dist/core/components/dag.js.map +1 -1
  79. package/dist/core/components/explainability.d.ts.map +1 -1
  80. package/dist/core/components/explainability.js +30 -87
  81. package/dist/core/components/explainability.js.map +1 -1
  82. package/dist/core/components/guided-flow.d.ts +32 -0
  83. package/dist/core/components/guided-flow.d.ts.map +1 -0
  84. package/dist/core/components/guided-flow.js +131 -0
  85. package/dist/core/components/guided-flow.js.map +1 -0
  86. package/dist/core/components/hyperlink.d.ts.map +1 -1
  87. package/dist/core/components/hyperlink.js +7 -4
  88. package/dist/core/components/hyperlink.js.map +1 -1
  89. package/dist/core/components/index.d.ts +5 -3
  90. package/dist/core/components/index.d.ts.map +1 -1
  91. package/dist/core/components/index.js +1 -0
  92. package/dist/core/components/index.js.map +1 -1
  93. package/dist/core/components/markdown-parse.d.ts +4 -0
  94. package/dist/core/components/markdown-parse.d.ts.map +1 -1
  95. package/dist/core/components/markdown-parse.js +66 -2
  96. package/dist/core/components/markdown-parse.js.map +1 -1
  97. package/dist/core/components/markdown-render.d.ts.map +1 -1
  98. package/dist/core/components/markdown-render.js +220 -14
  99. package/dist/core/components/markdown-render.js.map +1 -1
  100. package/dist/core/components/markdown.d.ts +4 -3
  101. package/dist/core/components/markdown.d.ts.map +1 -1
  102. package/dist/core/components/markdown.js +6 -5
  103. package/dist/core/components/markdown.js.map +1 -1
  104. package/dist/core/components/paginator.d.ts.map +1 -1
  105. package/dist/core/components/paginator.js +5 -3
  106. package/dist/core/components/paginator.js.map +1 -1
  107. package/dist/core/components/perf-overlay.d.ts.map +1 -1
  108. package/dist/core/components/perf-overlay.js +3 -2
  109. package/dist/core/components/perf-overlay.js.map +1 -1
  110. package/dist/core/components/preference-list.d.ts.map +1 -1
  111. package/dist/core/components/preference-list.js +75 -37
  112. package/dist/core/components/preference-list.js.map +1 -1
  113. package/dist/core/components/progress.d.ts.map +1 -1
  114. package/dist/core/components/progress.js +4 -3
  115. package/dist/core/components/progress.js.map +1 -1
  116. package/dist/core/components/separator-v3.d.ts.map +1 -1
  117. package/dist/core/components/separator-v3.js +11 -11
  118. package/dist/core/components/separator-v3.js.map +1 -1
  119. package/dist/core/components/separator.d.ts.map +1 -1
  120. package/dist/core/components/separator.js +4 -1
  121. package/dist/core/components/separator.js.map +1 -1
  122. package/dist/core/components/skeleton.d.ts.map +1 -1
  123. package/dist/core/components/skeleton.js +3 -2
  124. package/dist/core/components/skeleton.js.map +1 -1
  125. package/dist/core/components/surface-text.d.ts +7 -0
  126. package/dist/core/components/surface-text.d.ts.map +1 -1
  127. package/dist/core/components/surface-text.js +33 -25
  128. package/dist/core/components/surface-text.js.map +1 -1
  129. package/dist/core/components/table-v3.d.ts +5 -2
  130. package/dist/core/components/table-v3.d.ts.map +1 -1
  131. package/dist/core/components/table-v3.js +162 -37
  132. package/dist/core/components/table-v3.js.map +1 -1
  133. package/dist/core/components/table.d.ts +51 -7
  134. package/dist/core/components/table.d.ts.map +1 -1
  135. package/dist/core/components/table.js +655 -81
  136. package/dist/core/components/table.js.map +1 -1
  137. package/dist/core/fixture-promotion.d.ts +33 -0
  138. package/dist/core/fixture-promotion.d.ts.map +1 -0
  139. package/dist/core/fixture-promotion.js +62 -0
  140. package/dist/core/fixture-promotion.js.map +1 -0
  141. package/dist/core/forms/filter-interactive.d.ts.map +1 -1
  142. package/dist/core/forms/filter-interactive.js +2 -4
  143. package/dist/core/forms/filter-interactive.js.map +1 -1
  144. package/dist/core/forms/multiselect.d.ts.map +1 -1
  145. package/dist/core/forms/multiselect.js +2 -4
  146. package/dist/core/forms/multiselect.js.map +1 -1
  147. package/dist/core/forms/note.d.ts.map +1 -1
  148. package/dist/core/forms/note.js +2 -1
  149. package/dist/core/forms/note.js.map +1 -1
  150. package/dist/core/forms/select.d.ts.map +1 -1
  151. package/dist/core/forms/select.js +2 -4
  152. package/dist/core/forms/select.js.map +1 -1
  153. package/dist/core/forms/textarea-editor.d.ts.map +1 -1
  154. package/dist/core/forms/textarea-editor.js +7 -5
  155. package/dist/core/forms/textarea-editor.js.map +1 -1
  156. package/dist/core/layout/envelope.d.ts +174 -0
  157. package/dist/core/layout/envelope.d.ts.map +1 -0
  158. package/dist/core/layout/envelope.js +336 -0
  159. package/dist/core/layout/envelope.js.map +1 -0
  160. package/dist/core/layout/geometry.d.ts +39 -0
  161. package/dist/core/layout/geometry.d.ts.map +1 -0
  162. package/dist/core/layout/geometry.js +201 -0
  163. package/dist/core/layout/geometry.js.map +1 -0
  164. package/dist/core/mode-lowering.d.ts +48 -0
  165. package/dist/core/mode-lowering.d.ts.map +1 -0
  166. package/dist/core/mode-lowering.js +176 -0
  167. package/dist/core/mode-lowering.js.map +1 -0
  168. package/dist/core/numeric.d.ts +16 -0
  169. package/dist/core/numeric.d.ts.map +1 -0
  170. package/dist/core/numeric.js +37 -0
  171. package/dist/core/numeric.js.map +1 -0
  172. package/dist/core/render/differ.d.ts.map +1 -1
  173. package/dist/core/render/differ.js +15 -13
  174. package/dist/core/render/differ.js.map +1 -1
  175. package/dist/core/runtime-viewport.d.ts.map +1 -1
  176. package/dist/core/runtime-viewport.js +2 -3
  177. package/dist/core/runtime-viewport.js.map +1 -1
  178. package/dist/core/schema-block.d.ts +63 -0
  179. package/dist/core/schema-block.d.ts.map +1 -0
  180. package/dist/core/schema-block.js +361 -0
  181. package/dist/core/schema-block.js.map +1 -0
  182. package/dist/core/selection.d.ts +127 -0
  183. package/dist/core/selection.d.ts.map +1 -0
  184. package/dist/core/selection.js +350 -0
  185. package/dist/core/selection.js.map +1 -0
  186. package/dist/core/standard-blocks.d.ts +264 -0
  187. package/dist/core/standard-blocks.d.ts.map +1 -0
  188. package/dist/core/standard-blocks.js +2518 -0
  189. package/dist/core/standard-blocks.js.map +1 -0
  190. package/dist/core/story-capture.d.ts +48 -0
  191. package/dist/core/story-capture.d.ts.map +1 -0
  192. package/dist/core/story-capture.js +64 -0
  193. package/dist/core/story-capture.js.map +1 -0
  194. package/dist/core/text/grapheme.d.ts +51 -0
  195. package/dist/core/text/grapheme.d.ts.map +1 -1
  196. package/dist/core/text/grapheme.js +68 -0
  197. package/dist/core/text/grapheme.js.map +1 -1
  198. package/dist/core/text/icon-presentation.d.ts +10 -0
  199. package/dist/core/text/icon-presentation.d.ts.map +1 -0
  200. package/dist/core/text/icon-presentation.js +12 -0
  201. package/dist/core/text/icon-presentation.js.map +1 -0
  202. package/dist/core/text/index.d.ts +2 -1
  203. package/dist/core/text/index.d.ts.map +1 -1
  204. package/dist/core/text/index.js +2 -1
  205. package/dist/core/text/index.js.map +1 -1
  206. package/dist/core/text/wrap.d.ts.map +1 -1
  207. package/dist/core/text/wrap.js +37 -20
  208. package/dist/core/text/wrap.js.map +1 -1
  209. package/dist/core/theme/color.d.ts +32 -0
  210. package/dist/core/theme/color.d.ts.map +1 -1
  211. package/dist/core/theme/color.js +68 -0
  212. package/dist/core/theme/color.js.map +1 -1
  213. package/dist/core/theme/doctor.d.ts +37 -0
  214. package/dist/core/theme/doctor.d.ts.map +1 -0
  215. package/dist/core/theme/doctor.js +175 -0
  216. package/dist/core/theme/doctor.js.map +1 -0
  217. package/dist/core/theme/dtcg.d.ts.map +1 -1
  218. package/dist/core/theme/dtcg.js +10 -1
  219. package/dist/core/theme/dtcg.js.map +1 -1
  220. package/dist/core/theme/graph-types.d.ts +5 -0
  221. package/dist/core/theme/graph-types.d.ts.map +1 -1
  222. package/dist/core/theme/graph.d.ts.map +1 -1
  223. package/dist/core/theme/graph.js +52 -5
  224. package/dist/core/theme/graph.js.map +1 -1
  225. package/dist/core/theme/index.d.ts +4 -1
  226. package/dist/core/theme/index.d.ts.map +1 -1
  227. package/dist/core/theme/index.js +3 -1
  228. package/dist/core/theme/index.js.map +1 -1
  229. package/dist/core/theme/presets.d.ts +3 -2
  230. package/dist/core/theme/presets.d.ts.map +1 -1
  231. package/dist/core/theme/presets.js +22 -29
  232. package/dist/core/theme/presets.js.map +1 -1
  233. package/dist/core/theme/tokens.d.ts +1 -1
  234. package/dist/core/theme/tokens.d.ts.map +1 -1
  235. package/dist/factory.d.ts +3 -0
  236. package/dist/factory.d.ts.map +1 -1
  237. package/dist/factory.js +4 -6
  238. package/dist/factory.js.map +1 -1
  239. package/dist/index.d.ts +23 -6
  240. package/dist/index.d.ts.map +1 -1
  241. package/dist/index.js +25 -6
  242. package/dist/index.js.map +1 -1
  243. package/dist/ports/context.d.ts +6 -1
  244. package/dist/ports/context.d.ts.map +1 -1
  245. package/dist/ports/surface.d.ts +6 -4
  246. package/dist/ports/surface.d.ts.map +1 -1
  247. package/dist/ports/surface.js +40 -23
  248. package/dist/ports/surface.js.map +1 -1
  249. package/package.json +2 -2
@@ -0,0 +1,113 @@
1
+ import type { OutputMode } from './detect/tty.js';
2
+ import type { ModeLoweringFact } from './mode-lowering.js';
3
+ import { type CommandIntent, type ViewDataContract } from './binding.js';
4
+ declare const BLOCK_DEFINITION_BRAND: unique symbol;
5
+ export type BlockScale = 'app' | 'section' | 'panel' | 'control' | 'inline' | 'item' | 'data' | 'diagnostic' | 'overlay' | 'workspace';
6
+ export type BlockConfigOptionKind = 'boolean' | 'enum' | 'number' | 'string' | 'adapter';
7
+ export interface BlockMetadataDocs {
8
+ readonly summary: string;
9
+ readonly useWhen?: readonly string[];
10
+ readonly avoidWhen?: readonly string[];
11
+ readonly relatedDocs?: readonly string[];
12
+ }
13
+ export interface BlockSlot {
14
+ readonly id: string;
15
+ readonly label?: string;
16
+ readonly required?: boolean;
17
+ readonly description?: string;
18
+ }
19
+ export interface BlockVariantMetadata {
20
+ readonly id: string;
21
+ readonly label: string;
22
+ readonly description?: string;
23
+ readonly requiredSlots?: readonly string[];
24
+ readonly optionalSlots?: readonly string[];
25
+ readonly facts?: readonly ModeLoweringFact[];
26
+ }
27
+ export interface BlockConfigOption {
28
+ readonly id: string;
29
+ readonly label?: string;
30
+ readonly kind: BlockConfigOptionKind;
31
+ readonly required?: boolean;
32
+ readonly description?: string;
33
+ readonly values?: readonly string[];
34
+ }
35
+ export interface BlockExample {
36
+ readonly id: string;
37
+ readonly label: string;
38
+ readonly path?: string;
39
+ readonly command?: string;
40
+ }
41
+ export interface BlockMetadata {
42
+ readonly packageName: string;
43
+ readonly blockName: string;
44
+ readonly family: string;
45
+ readonly scale: BlockScale;
46
+ readonly modes: readonly OutputMode[];
47
+ readonly docs: BlockMetadataDocs;
48
+ readonly sourcePath?: string;
49
+ readonly slots: readonly BlockSlot[];
50
+ readonly variants?: readonly BlockVariantMetadata[];
51
+ readonly configOptions?: readonly BlockConfigOption[];
52
+ readonly composedComponents?: readonly string[];
53
+ readonly semanticFacts?: readonly ModeLoweringFact[];
54
+ readonly storyIds?: readonly string[];
55
+ readonly examples?: readonly BlockExample[];
56
+ readonly tags?: readonly string[];
57
+ }
58
+ export interface BlockRenderInput<Config = unknown> {
59
+ readonly config?: Config;
60
+ readonly slots?: Readonly<Record<string, unknown>>;
61
+ readonly mode?: OutputMode;
62
+ }
63
+ export interface BlockRenderResult<Output = unknown> {
64
+ readonly output: Output;
65
+ readonly facts?: readonly ModeLoweringFact[];
66
+ }
67
+ export interface BlockDefinitionInput<Config = unknown, Output = unknown> {
68
+ readonly metadata: BlockMetadata;
69
+ readonly data?: ViewDataContract;
70
+ readonly commands?: readonly CommandIntent[];
71
+ readonly render: (input: BlockRenderInput<Config>) => BlockRenderResult<Output>;
72
+ }
73
+ export interface BlockDefinition<Config = unknown, Output = unknown> extends BlockDefinitionInput<Config, Output> {
74
+ readonly [BLOCK_DEFINITION_BRAND]: true;
75
+ }
76
+ export interface BlockPackageManifest {
77
+ readonly packageName: string;
78
+ readonly version: string;
79
+ readonly bijouPeerRange: string;
80
+ readonly blocks: readonly string[];
81
+ readonly docs?: readonly string[];
82
+ readonly tags?: readonly string[];
83
+ }
84
+ export type BlockMetadataIssueKind = 'missing-required-field' | 'empty-list' | 'duplicate-id' | 'unknown-reference' | 'invalid-value';
85
+ export type BlockMetadataSeverity = 'error' | 'warning';
86
+ export interface BlockMetadataIssue {
87
+ readonly kind: BlockMetadataIssueKind;
88
+ readonly severity: BlockMetadataSeverity;
89
+ readonly path: string;
90
+ readonly message: string;
91
+ }
92
+ export interface BlockMetadataReport {
93
+ readonly packageName: string;
94
+ readonly blockName: string;
95
+ readonly issues: readonly BlockMetadataIssue[];
96
+ readonly passed: boolean;
97
+ }
98
+ export interface BlockPackageManifestReport {
99
+ readonly packageName: string;
100
+ readonly issues: readonly BlockMetadataIssue[];
101
+ readonly passed: boolean;
102
+ }
103
+ export declare function defineBlock<Config = unknown, Output = unknown>(definition: BlockDefinitionInput<Config, Output>): BlockDefinition<Config, Output>;
104
+ export declare function isBlockDefinition(value: unknown): value is BlockDefinition;
105
+ export declare function defineBlockPackage(manifest: BlockPackageManifest): BlockPackageManifest;
106
+ export declare function validateBlockMetadata(metadata: BlockMetadata): BlockMetadataReport;
107
+ export declare function validateBlockPackageManifest(manifest: BlockPackageManifest): BlockPackageManifestReport;
108
+ export declare function blockMetadataSummary(metadata: BlockMetadata): string;
109
+ export declare function blockPackageManifestSummary(manifest: BlockPackageManifest): string;
110
+ export declare function blockMetadataReportText(report: BlockMetadataReport): string;
111
+ export declare function blockPackageManifestReportText(report: BlockPackageManifestReport): string;
112
+ export {};
113
+ //# sourceMappingURL=block-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-metadata.d.ts","sourceRoot":"","sources":["../../src/core/block-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,376 @@
1
+ import { isCommandIntent, isViewDataContract, } from './binding.js';
2
+ const BLOCK_DEFINITION_BRAND = Symbol('BlockDefinition');
3
+ const CONFIG_OPTION_KINDS = [
4
+ 'boolean',
5
+ 'enum',
6
+ 'number',
7
+ 'string',
8
+ 'adapter',
9
+ ];
10
+ const BLOCK_SCALES = [
11
+ 'app',
12
+ 'section',
13
+ 'panel',
14
+ 'control',
15
+ 'inline',
16
+ 'item',
17
+ 'data',
18
+ 'diagnostic',
19
+ 'overlay',
20
+ 'workspace',
21
+ ];
22
+ const OUTPUT_MODES = [
23
+ 'interactive',
24
+ 'static',
25
+ 'pipe',
26
+ 'accessible',
27
+ ];
28
+ const LIST_SEPARATOR = ',';
29
+ const EMPTY_LABEL = '-';
30
+ export function defineBlock(definition) {
31
+ const report = validateBlockMetadata(definition.metadata);
32
+ const hasError = report.issues.some((issue) => issue.severity === 'error');
33
+ if (hasError) {
34
+ throw new Error(blockMetadataReportText(report));
35
+ }
36
+ if (definition.data !== undefined && !isViewDataContract(definition.data)) {
37
+ throw new Error('block definition: data must be created by defineViewData()');
38
+ }
39
+ const commands = definition.commands ?? [];
40
+ commands.forEach((command, index) => {
41
+ if (!isCommandIntent(command)) {
42
+ throw new Error(`block definition: command at index ${index} must be created by commandIntent()`);
43
+ }
44
+ });
45
+ const block = {
46
+ ...definition,
47
+ ...(definition.commands === undefined ? {} : { commands: Object.freeze([...commands]) }),
48
+ };
49
+ Object.defineProperty(block, BLOCK_DEFINITION_BRAND, { value: true });
50
+ return Object.freeze(block);
51
+ }
52
+ export function isBlockDefinition(value) {
53
+ return Boolean(value
54
+ && typeof value === 'object'
55
+ && value[BLOCK_DEFINITION_BRAND] === true);
56
+ }
57
+ export function defineBlockPackage(manifest) {
58
+ const report = validateBlockPackageManifest(manifest);
59
+ const hasError = report.issues.some((issue) => issue.severity === 'error');
60
+ if (hasError) {
61
+ throw new Error(blockPackageManifestReportText(report));
62
+ }
63
+ return manifest;
64
+ }
65
+ export function validateBlockMetadata(metadata) {
66
+ const issues = [];
67
+ const slots = metadata.slots ?? [];
68
+ const variants = metadata.variants ?? [];
69
+ const configOptions = metadata.configOptions ?? [];
70
+ const examples = metadata.examples ?? [];
71
+ pushRequiredTextIssue(issues, 'packageName', metadata.packageName);
72
+ pushRequiredTextIssue(issues, 'blockName', metadata.blockName);
73
+ pushRequiredTextIssue(issues, 'family', metadata.family);
74
+ pushRequiredTextIssue(issues, 'docs.summary', metadata.docs?.summary ?? '');
75
+ pushScaleIssue(issues, metadata.scale);
76
+ pushModesIssues(issues, metadata.modes ?? []);
77
+ pushSlotsIssues(issues, slots);
78
+ pushVariantIssues(issues, variants, slots);
79
+ pushConfigOptionIssues(issues, configOptions);
80
+ pushExampleIssues(issues, examples);
81
+ pushDuplicateStringIssues(issues, metadata.composedComponents ?? [], {
82
+ label: 'composed component',
83
+ pathPrefix: 'composedComponents',
84
+ });
85
+ pushDuplicateStringIssues(issues, metadata.storyIds ?? [], {
86
+ label: 'story id',
87
+ pathPrefix: 'storyIds',
88
+ });
89
+ pushDuplicateStringIssues(issues, metadata.tags ?? [], {
90
+ label: 'tag',
91
+ pathPrefix: 'tags',
92
+ });
93
+ return {
94
+ packageName: metadata.packageName,
95
+ blockName: metadata.blockName,
96
+ issues,
97
+ passed: issues.length === 0,
98
+ };
99
+ }
100
+ export function validateBlockPackageManifest(manifest) {
101
+ const issues = [];
102
+ pushRequiredTextIssue(issues, 'packageName', manifest.packageName);
103
+ pushRequiredTextIssue(issues, 'version', manifest.version);
104
+ pushRequiredTextIssue(issues, 'bijouPeerRange', manifest.bijouPeerRange);
105
+ if (manifest.blocks.length === 0) {
106
+ issues.push({
107
+ kind: 'empty-list',
108
+ severity: 'error',
109
+ path: 'blocks',
110
+ message: 'blocks must include at least one block id',
111
+ });
112
+ }
113
+ pushDuplicateStringIssues(issues, manifest.blocks, {
114
+ label: 'block id',
115
+ pathPrefix: 'blocks',
116
+ });
117
+ pushDuplicateStringIssues(issues, manifest.docs ?? [], {
118
+ label: 'doc path',
119
+ pathPrefix: 'docs',
120
+ });
121
+ pushDuplicateStringIssues(issues, manifest.tags ?? [], {
122
+ label: 'tag',
123
+ pathPrefix: 'tags',
124
+ });
125
+ return {
126
+ packageName: manifest.packageName,
127
+ issues,
128
+ passed: issues.length === 0,
129
+ };
130
+ }
131
+ export function blockMetadataSummary(metadata) {
132
+ return [
133
+ `block metadata: ${metadata.packageName}/${metadata.blockName}`,
134
+ `family=${metadata.family}`,
135
+ `scale=${metadata.scale}`,
136
+ `modes=${joinLabels(metadata.modes)}`,
137
+ `slots=${joinLabels(metadata.slots.map((slot) => slot.id))}`,
138
+ `requiredSlots=${joinLabels(metadata.slots.filter((slot) => slot.required !== false).map((slot) => slot.id))}`,
139
+ `variants=${joinLabels((metadata.variants ?? []).map((variant) => variant.id))}`,
140
+ `config=${joinLabels((metadata.configOptions ?? []).map((option) => option.id))}`,
141
+ `components=${joinLabels(metadata.composedComponents ?? [])}`,
142
+ `facts=${joinLabels((metadata.semanticFacts ?? []).map(factLabel))}`,
143
+ `stories=${joinLabels(metadata.storyIds ?? [])}`,
144
+ `source=${metadata.sourcePath ?? EMPTY_LABEL}`,
145
+ ].join('\n');
146
+ }
147
+ export function blockPackageManifestSummary(manifest) {
148
+ return [
149
+ `block package: ${manifest.packageName}@${manifest.version}`,
150
+ `bijouPeerRange=${manifest.bijouPeerRange}`,
151
+ `blocks=${joinLabels(manifest.blocks)}`,
152
+ `docs=${joinLabels(manifest.docs ?? [])}`,
153
+ `tags=${joinLabels(manifest.tags ?? [])}`,
154
+ ].join('\n');
155
+ }
156
+ export function blockMetadataReportText(report) {
157
+ const status = report.passed ? 'passed' : 'failed';
158
+ const block = report.blockName.trim() === '' ? EMPTY_LABEL : report.blockName.trim();
159
+ const lines = [`block metadata: ${status} block=${block}`];
160
+ if (report.issues.length === 0) {
161
+ return lines.join('\n');
162
+ }
163
+ lines.push('issues:');
164
+ for (const issue of report.issues) {
165
+ lines.push(`- ${issue.severity} ${issue.kind} path=${issue.path}: ${issue.message}`);
166
+ }
167
+ return lines.join('\n');
168
+ }
169
+ export function blockPackageManifestReportText(report) {
170
+ const status = report.passed ? 'passed' : 'failed';
171
+ const packageName = report.packageName.trim() === '' ? EMPTY_LABEL : report.packageName.trim();
172
+ const lines = [`block package manifest: ${status} package=${packageName}`];
173
+ if (report.issues.length === 0) {
174
+ return lines.join('\n');
175
+ }
176
+ lines.push('issues:');
177
+ for (const issue of report.issues) {
178
+ lines.push(`- ${issue.severity} ${issue.kind} path=${issue.path}: ${issue.message}`);
179
+ }
180
+ return lines.join('\n');
181
+ }
182
+ function pushScaleIssue(issues, scale) {
183
+ if (typeof scale !== 'string' || scale.trim() === '') {
184
+ issues.push({
185
+ kind: 'missing-required-field',
186
+ severity: 'error',
187
+ path: 'scale',
188
+ message: 'scale is required',
189
+ });
190
+ return;
191
+ }
192
+ if (!BLOCK_SCALES.includes(scale)) {
193
+ issues.push({
194
+ kind: 'invalid-value',
195
+ severity: 'error',
196
+ path: 'scale',
197
+ message: `unsupported block scale ${String(scale)}`,
198
+ });
199
+ }
200
+ }
201
+ function pushModesIssues(issues, modes) {
202
+ if (modes.length === 0) {
203
+ issues.push({
204
+ kind: 'empty-list',
205
+ severity: 'error',
206
+ path: 'modes',
207
+ message: 'modes must include at least one output mode',
208
+ });
209
+ return;
210
+ }
211
+ modes.forEach((mode, index) => {
212
+ if (OUTPUT_MODES.includes(mode)) {
213
+ return;
214
+ }
215
+ issues.push({
216
+ kind: 'invalid-value',
217
+ severity: 'error',
218
+ path: `modes[${index}]`,
219
+ message: `unsupported output mode ${String(mode)}`,
220
+ });
221
+ });
222
+ pushDuplicateStringIssues(issues, modes, {
223
+ label: 'mode',
224
+ pathPrefix: 'modes',
225
+ });
226
+ }
227
+ function pushSlotsIssues(issues, slots) {
228
+ if (slots.length === 0) {
229
+ issues.push({
230
+ kind: 'empty-list',
231
+ severity: 'error',
232
+ path: 'slots',
233
+ message: 'slots must include at least one slot',
234
+ });
235
+ return;
236
+ }
237
+ slots.forEach((slot, index) => {
238
+ pushRequiredTextIssue(issues, `slots[${index}].id`, slot.id);
239
+ });
240
+ pushDuplicateStringIssues(issues, slots.map((slot) => slot.id), {
241
+ label: 'slot id',
242
+ pathPrefix: 'slots',
243
+ valuePath: 'id',
244
+ });
245
+ }
246
+ function pushVariantIssues(issues, variants, slots) {
247
+ const slotIds = new Set(slots.map((slot) => slot.id).filter((id) => id.trim() !== ''));
248
+ variants.forEach((variant, index) => {
249
+ pushRequiredTextIssue(issues, `variants[${index}].id`, variant.id);
250
+ pushRequiredTextIssue(issues, `variants[${index}].label`, variant.label);
251
+ pushSlotReferenceIssues(issues, `variants[${index}].requiredSlots`, variant.requiredSlots ?? [], slotIds);
252
+ pushSlotReferenceIssues(issues, `variants[${index}].optionalSlots`, variant.optionalSlots ?? [], slotIds);
253
+ });
254
+ pushDuplicateStringIssues(issues, variants.map((variant) => variant.id), {
255
+ label: 'variant id',
256
+ pathPrefix: 'variants',
257
+ valuePath: 'id',
258
+ });
259
+ }
260
+ function pushConfigOptionIssues(issues, options) {
261
+ options.forEach((option, index) => {
262
+ pushRequiredTextIssue(issues, `configOptions[${index}].id`, option.id);
263
+ if (!CONFIG_OPTION_KINDS.includes(option.kind)) {
264
+ issues.push({
265
+ kind: 'invalid-value',
266
+ severity: 'error',
267
+ path: `configOptions[${index}].kind`,
268
+ message: `unsupported config option kind ${String(option.kind)}`,
269
+ });
270
+ }
271
+ if (option.kind === 'enum' && (option.values ?? []).length === 0) {
272
+ issues.push({
273
+ kind: 'empty-list',
274
+ severity: 'error',
275
+ path: `configOptions[${index}].values`,
276
+ message: 'enum config options must include values',
277
+ });
278
+ }
279
+ pushDuplicateStringIssues(issues, option.values ?? [], {
280
+ label: 'config enum value',
281
+ pathPrefix: `configOptions[${index}].values`,
282
+ });
283
+ });
284
+ pushDuplicateStringIssues(issues, options.map((option) => option.id), {
285
+ label: 'config option id',
286
+ pathPrefix: 'configOptions',
287
+ valuePath: 'id',
288
+ });
289
+ }
290
+ function pushExampleIssues(issues, examples) {
291
+ examples.forEach((example, index) => {
292
+ pushRequiredTextIssue(issues, `examples[${index}].id`, example.id);
293
+ pushRequiredTextIssue(issues, `examples[${index}].label`, example.label);
294
+ });
295
+ pushDuplicateStringIssues(issues, examples.map((example) => example.id), {
296
+ label: 'example id',
297
+ pathPrefix: 'examples',
298
+ valuePath: 'id',
299
+ });
300
+ }
301
+ function pushSlotReferenceIssues(issues, pathPrefix, references, slotIds) {
302
+ references.forEach((reference, index) => {
303
+ const normalized = reference.trim();
304
+ if (normalized === '') {
305
+ issues.push({
306
+ kind: 'missing-required-field',
307
+ severity: 'error',
308
+ path: `${pathPrefix}[${index}]`,
309
+ message: `${pathPrefix}[${index}] is required`,
310
+ });
311
+ return;
312
+ }
313
+ if (!slotIds.has(normalized)) {
314
+ issues.push({
315
+ kind: 'unknown-reference',
316
+ severity: 'error',
317
+ path: `${pathPrefix}[${index}]`,
318
+ message: `unknown slot reference ${normalized}`,
319
+ });
320
+ }
321
+ });
322
+ pushDuplicateStringIssues(issues, references, {
323
+ label: 'slot reference',
324
+ pathPrefix,
325
+ });
326
+ }
327
+ function pushDuplicateStringIssues(issues, values, options) {
328
+ const seenValues = new Set();
329
+ const reportedValues = new Set();
330
+ values.forEach((value, index) => {
331
+ const normalized = value.trim();
332
+ if (normalized === '') {
333
+ return;
334
+ }
335
+ if (!seenValues.has(normalized)) {
336
+ seenValues.add(normalized);
337
+ return;
338
+ }
339
+ if (reportedValues.has(normalized)) {
340
+ return;
341
+ }
342
+ reportedValues.add(normalized);
343
+ issues.push({
344
+ kind: 'duplicate-id',
345
+ severity: 'error',
346
+ path: indexedPath(options.pathPrefix, index, options.valuePath ?? ''),
347
+ message: `duplicate ${options.label} ${normalized}`,
348
+ });
349
+ });
350
+ }
351
+ function pushRequiredTextIssue(issues, path, value) {
352
+ if (value.trim() !== '') {
353
+ return;
354
+ }
355
+ issues.push({
356
+ kind: 'missing-required-field',
357
+ severity: 'error',
358
+ path,
359
+ message: `${path} is required`,
360
+ });
361
+ }
362
+ function factLabel(fact) {
363
+ return fact.value === undefined
364
+ ? `${fact.kind}:${fact.key}`
365
+ : `${fact.kind}:${fact.key}=${String(fact.value)}`;
366
+ }
367
+ function indexedPath(pathPrefix, index, valuePath) {
368
+ if (valuePath === '') {
369
+ return `${pathPrefix}[${index}]`;
370
+ }
371
+ return `${pathPrefix}[${index}].${valuePath}`;
372
+ }
373
+ function joinLabels(values) {
374
+ return values.length === 0 ? EMPTY_LABEL : values.join(LIST_SEPARATOR);
375
+ }
376
+ //# sourceMappingURL=block-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-metadata.js","sourceRoot":"","sources":["../../src/core/block-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { OutputMode } from './detect/tty.js';
2
+ import { type BlockDefinition, type BlockRenderInput, type BlockRenderResult } from './block-metadata.js';
3
+ declare const BLOCK_RENDER_NODE_BRAND: unique symbol;
4
+ export interface BlockRenderNode<Config = unknown> {
5
+ readonly [BLOCK_RENDER_NODE_BRAND]: true;
6
+ readonly block: BlockDefinition<Config>;
7
+ readonly input: BlockRenderInput<Config>;
8
+ }
9
+ export interface BlockTreeRenderOptions {
10
+ readonly mode?: OutputMode;
11
+ readonly maxDepth?: number;
12
+ }
13
+ export declare function blockRenderNode<Config = unknown>(block: BlockDefinition<Config>, input?: BlockRenderInput<Config>): BlockRenderNode<Config>;
14
+ export declare function isBlockRenderNode(value: unknown): value is BlockRenderNode;
15
+ export declare function renderBlockTree<Config = unknown>(target: BlockDefinition<Config> | BlockRenderNode<Config>, options?: BlockTreeRenderOptions): BlockRenderResult;
16
+ export {};
17
+ //# sourceMappingURL=block-tree-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tree-render.d.ts","sourceRoot":"","sources":["../../src/core/block-tree-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,uBAAuB,EAAE,OAAO,MAAkC,CAAC;AAGzE,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,OAAO;IAC/C,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAgBD,wBAAgB,eAAe,CAAC,MAAM,GAAG,OAAO,EAC9C,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,KAAK,GAAE,gBAAgB,CAAC,MAAM,CAAM,GACnC,eAAe,CAAC,MAAM,CAAC,CAYzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAM1E;AAED,wBAAgB,eAAe,CAAC,MAAM,GAAG,OAAO,EAC9C,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,EACzD,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CAMnB"}