@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,587 @@
1
+ const DATA_REQUIREMENT_BRAND = Symbol('DataRequirement');
2
+ const DATA_PROVIDER_BRAND = Symbol('DataProvider');
3
+ const VIEW_DATA_CONTRACT_BRAND = Symbol('ViewDataContract');
4
+ const BINDING_SNAPSHOT_BRAND = Symbol('BindingSnapshot');
5
+ const PROVIDER_SCOPE_ENTRY_BRAND = Symbol('ProviderScopeEntry');
6
+ const PROVIDER_SCOPE_BRAND = Symbol('ProviderScope');
7
+ const PROVIDER_RESOLUTION_BRAND = Symbol('ProviderResolution');
8
+ const COMMAND_INTENT_BRAND = Symbol('CommandIntent');
9
+ const COMMAND_INTENT_PAYLOAD = Symbol('CommandIntentPayload');
10
+ const BINDING_STATUSES = [
11
+ 'ready',
12
+ 'loading',
13
+ 'empty',
14
+ 'stale',
15
+ 'error',
16
+ ];
17
+ const BINDING_ISSUE_SEVERITIES = [
18
+ 'info',
19
+ 'warning',
20
+ 'error',
21
+ ];
22
+ const EMPTY_BINDING_ISSUES = Object.freeze([]);
23
+ const EMPTY_BINDING_FACTS = Object.freeze([]);
24
+ export class ViewDataContract {
25
+ [VIEW_DATA_CONTRACT_BRAND] = true;
26
+ #entriesByName;
27
+ #entriesByRequirementId;
28
+ id;
29
+ label;
30
+ description;
31
+ facts;
32
+ constructor(input) {
33
+ const entriesByName = new Map();
34
+ const entriesByRequirementId = new Map();
35
+ input.requirements.forEach((entry) => {
36
+ const name = normalizeRequiredText({
37
+ scope: 'view data',
38
+ field: 'requirement name',
39
+ value: entry.name,
40
+ });
41
+ if (!isDataRequirement(entry.requirement)) {
42
+ throw new Error(`view data: requirement ${name} was not created by defineDataRequirement()`);
43
+ }
44
+ if (entriesByName.has(name)) {
45
+ throw new Error(`view data: duplicate requirement name ${name}`);
46
+ }
47
+ if (entriesByRequirementId.has(entry.requirement.id)) {
48
+ throw new Error(`view data: duplicate requirement id ${entry.requirement.id}`);
49
+ }
50
+ const normalizedEntry = Object.freeze({
51
+ name,
52
+ requirement: entry.requirement,
53
+ });
54
+ entriesByName.set(name, normalizedEntry);
55
+ entriesByRequirementId.set(entry.requirement.id, normalizedEntry);
56
+ });
57
+ this.#entriesByName = entriesByName;
58
+ this.#entriesByRequirementId = entriesByRequirementId;
59
+ this.id = optionalTrimmedText(input.id);
60
+ this.label = optionalTrimmedText(input.label);
61
+ this.description = optionalTrimmedText(input.description);
62
+ this.facts = freezeFacts(input.facts);
63
+ Object.freeze(this);
64
+ }
65
+ names() {
66
+ return Object.freeze([...this.#entriesByName.keys()]);
67
+ }
68
+ requirementIds() {
69
+ return Object.freeze([...this.#entriesByRequirementId.keys()]);
70
+ }
71
+ entries() {
72
+ return Object.freeze([...this.#entriesByName.values()]);
73
+ }
74
+ requirements() {
75
+ return Object.freeze(this.entries().map((entry) => entry.requirement));
76
+ }
77
+ entry(name) {
78
+ const normalizedName = normalizeRequiredText({
79
+ scope: 'view data',
80
+ field: 'requirement name',
81
+ value: name,
82
+ });
83
+ return this.#entriesByName.get(normalizedName);
84
+ }
85
+ requirement(name) {
86
+ return this.entry(name)?.requirement;
87
+ }
88
+ }
89
+ export class ProviderScope {
90
+ [PROVIDER_SCOPE_BRAND] = true;
91
+ #providersByResource;
92
+ #providersById;
93
+ id;
94
+ label;
95
+ description;
96
+ facts;
97
+ constructor(entries, options = {}) {
98
+ const providersByResource = new Map();
99
+ const providersById = new Map();
100
+ entries.forEach((entry, index) => {
101
+ if (!isProviderScopeEntry(entry)) {
102
+ throw new Error(`provider scope: entry at index ${index} was not created by provide()`);
103
+ }
104
+ if (providersByResource.has(entry.resource)) {
105
+ throw new Error(`provider scope: duplicate resource ${entry.resource}`);
106
+ }
107
+ if (providersById.has(entry.provider.id)) {
108
+ throw new Error(`provider scope: duplicate provider id ${entry.provider.id}`);
109
+ }
110
+ providersByResource.set(entry.resource, entry.provider);
111
+ providersById.set(entry.provider.id, entry.provider);
112
+ });
113
+ this.#providersByResource = providersByResource;
114
+ this.#providersById = providersById;
115
+ this.id = optionalTrimmedText(options.id);
116
+ this.label = optionalTrimmedText(options.label);
117
+ this.description = optionalTrimmedText(options.description);
118
+ this.facts = freezeFacts(options.facts);
119
+ Object.freeze(this);
120
+ }
121
+ resources() {
122
+ return Object.freeze([...this.#providersByResource.keys()]);
123
+ }
124
+ providers() {
125
+ return Object.freeze([...this.#providersByResource.values()]);
126
+ }
127
+ providerIds() {
128
+ return Object.freeze([...this.#providersById.keys()]);
129
+ }
130
+ has(resource) {
131
+ return this.get(resource) !== undefined;
132
+ }
133
+ get(resource) {
134
+ const normalizedResource = normalizeRequiredText({
135
+ scope: 'provider scope',
136
+ field: 'resource',
137
+ value: resource,
138
+ });
139
+ return this.#providersByResource.get(normalizedResource);
140
+ }
141
+ }
142
+ export class BindingFrame {
143
+ #snapshotsByRequirementId;
144
+ constructor(snapshots) {
145
+ const snapshotsByRequirementId = new Map();
146
+ snapshots.forEach((snapshot, index) => {
147
+ if (!isBindingSnapshot(snapshot)) {
148
+ throw new Error(`binding frame: snapshot at index ${index} was not created by bindingSnapshot()`);
149
+ }
150
+ if (snapshotsByRequirementId.has(snapshot.requirementId)) {
151
+ throw new Error(`binding frame: duplicate requirement id ${snapshot.requirementId}`);
152
+ }
153
+ snapshotsByRequirementId.set(snapshot.requirementId, snapshot);
154
+ });
155
+ this.#snapshotsByRequirementId = snapshotsByRequirementId;
156
+ Object.freeze(this);
157
+ }
158
+ ids() {
159
+ return Object.freeze([...this.#snapshotsByRequirementId.keys()]);
160
+ }
161
+ snapshot(requirementId) {
162
+ const normalizedRequirementId = normalizeRequiredText({
163
+ scope: 'binding frame',
164
+ field: 'requirementId',
165
+ value: requirementId,
166
+ });
167
+ return this.#snapshotsByRequirementId.get(normalizedRequirementId);
168
+ }
169
+ get(requirementId) {
170
+ return this.snapshot(requirementId)?.data;
171
+ }
172
+ require(requirementId) {
173
+ const snapshot = this.snapshot(requirementId);
174
+ if (snapshot === undefined) {
175
+ throw new Error(`binding frame: missing requirement ${requirementId}`);
176
+ }
177
+ if (snapshot.status !== 'ready') {
178
+ throw new Error(`binding frame: requirement ${snapshot.requirementId} is ${snapshot.status}`);
179
+ }
180
+ if (snapshot.data === undefined) {
181
+ throw new Error(`binding frame: requirement ${snapshot.requirementId} has no data`);
182
+ }
183
+ return snapshot.data;
184
+ }
185
+ status(requirementId) {
186
+ return this.snapshot(requirementId)?.status;
187
+ }
188
+ issues(requirementId) {
189
+ return this.snapshot(requirementId)?.issues ?? EMPTY_BINDING_ISSUES;
190
+ }
191
+ facts(requirementId) {
192
+ return this.snapshot(requirementId)?.facts ?? EMPTY_BINDING_FACTS;
193
+ }
194
+ }
195
+ export function defineDataRequirement(input) {
196
+ const requirement = {
197
+ id: normalizeRequiredText({
198
+ scope: 'data requirement',
199
+ field: 'id',
200
+ value: input.id,
201
+ }),
202
+ resource: normalizeRequiredText({
203
+ scope: 'data requirement',
204
+ field: 'resource',
205
+ value: input.resource,
206
+ }),
207
+ label: optionalTrimmedText(input.label),
208
+ description: optionalTrimmedText(input.description),
209
+ optional: input.optional,
210
+ facts: freezeFacts(input.facts),
211
+ };
212
+ Object.defineProperty(requirement, DATA_REQUIREMENT_BRAND, { value: true });
213
+ return Object.freeze(requirement);
214
+ }
215
+ export function isDataRequirement(value) {
216
+ return Boolean(value
217
+ && typeof value === 'object'
218
+ && value[DATA_REQUIREMENT_BRAND] === true);
219
+ }
220
+ export function defineViewData(input) {
221
+ return new ViewDataContract(input);
222
+ }
223
+ export function isViewDataContract(value) {
224
+ return Boolean(value
225
+ && typeof value === 'object'
226
+ && value[VIEW_DATA_CONTRACT_BRAND] === true);
227
+ }
228
+ export function defineDataProvider(input) {
229
+ const provider = {
230
+ id: normalizeRequiredText({
231
+ scope: 'data provider',
232
+ field: 'id',
233
+ value: input.id,
234
+ }),
235
+ resource: normalizeRequiredText({
236
+ scope: 'data provider',
237
+ field: 'resource',
238
+ value: input.resource,
239
+ }),
240
+ label: optionalTrimmedText(input.label),
241
+ description: optionalTrimmedText(input.description),
242
+ facts: freezeFacts(input.facts),
243
+ };
244
+ Object.defineProperty(provider, DATA_PROVIDER_BRAND, { value: true });
245
+ return Object.freeze(provider);
246
+ }
247
+ export function provide(provider) {
248
+ if (!isDataProvider(provider)) {
249
+ throw new Error('provider scope: provider was not created by defineDataProvider()');
250
+ }
251
+ const entry = {
252
+ resource: provider.resource,
253
+ provider,
254
+ };
255
+ Object.defineProperty(entry, PROVIDER_SCOPE_ENTRY_BRAND, { value: true });
256
+ return Object.freeze(entry);
257
+ }
258
+ export function providerScope(entries, options = {}) {
259
+ return new ProviderScope(entries, options);
260
+ }
261
+ export function resolveProviderRequirement(requirement, scope) {
262
+ if (!isDataRequirement(requirement)) {
263
+ throw new Error('provider resolution: requirement was not created by defineDataRequirement()');
264
+ }
265
+ const provider = scope.get(requirement.resource);
266
+ const base = {
267
+ requirementId: requirement.id,
268
+ resource: requirement.resource,
269
+ optional: requirement.optional === true,
270
+ scopeId: scope.id,
271
+ facts: freezeFacts([
272
+ ...requirement.facts,
273
+ ...(provider?.facts ?? []),
274
+ ]),
275
+ };
276
+ if (provider !== undefined) {
277
+ return providerResolution({
278
+ ...base,
279
+ status: 'resolved',
280
+ providerId: provider.id,
281
+ issues: EMPTY_BINDING_ISSUES,
282
+ });
283
+ }
284
+ if (requirement.optional === true) {
285
+ return providerResolution({
286
+ ...base,
287
+ status: 'missing-optional',
288
+ issues: EMPTY_BINDING_ISSUES,
289
+ });
290
+ }
291
+ return providerResolution({
292
+ ...base,
293
+ status: 'missing-required',
294
+ issues: freezeIssues([{
295
+ severity: 'error',
296
+ code: 'provider.missing',
297
+ message: `No provider in scope ${scope.id ?? '<anonymous>'} satisfies resource ${requirement.resource}`,
298
+ path: requirement.id,
299
+ }]),
300
+ });
301
+ }
302
+ export function resolveProviderRequirements(requirements, scope) {
303
+ return Object.freeze(requirements.map((requirement) => resolveProviderRequirement(requirement, scope)));
304
+ }
305
+ export function bindingSnapshot(input) {
306
+ const providerId = normalizeRequiredText({
307
+ scope: 'binding snapshot',
308
+ field: 'providerId',
309
+ value: input.providerId,
310
+ });
311
+ const requirementId = normalizeRequiredText({
312
+ scope: 'binding snapshot',
313
+ field: 'requirementId',
314
+ value: input.requirementId,
315
+ });
316
+ if (!Number.isInteger(input.version) || input.version < 1) {
317
+ throw new Error('binding snapshot: version must be a positive integer');
318
+ }
319
+ if (!isBindingStatus(input.status)) {
320
+ throw new Error(`binding snapshot: unsupported status ${String(input.status)}`);
321
+ }
322
+ const snapshot = {
323
+ providerId,
324
+ requirementId,
325
+ version: input.version,
326
+ status: input.status,
327
+ ...(input.data === undefined ? {} : { data: freezeSnapshotData(input.data) }),
328
+ issues: freezeIssues(input.issues),
329
+ facts: freezeFacts(input.facts),
330
+ };
331
+ Object.defineProperty(snapshot, BINDING_SNAPSHOT_BRAND, { value: true });
332
+ return Object.freeze(snapshot);
333
+ }
334
+ export function bindingFrame(snapshots) {
335
+ return new BindingFrame(snapshots);
336
+ }
337
+ export function bindingFrameFromSnapshots(input) {
338
+ const resolutionsByRequirementId = new Map();
339
+ const snapshotsByRequirementId = new Map();
340
+ input.resolutions.forEach((resolution, index) => {
341
+ if (!isProviderResolution(resolution)) {
342
+ throw new Error(`binding frame assembly: resolution at index ${index} was not created by resolveProviderRequirement()`);
343
+ }
344
+ if (resolutionsByRequirementId.has(resolution.requirementId)) {
345
+ throw new Error(`binding frame assembly: duplicate resolution ${resolution.requirementId}`);
346
+ }
347
+ resolutionsByRequirementId.set(resolution.requirementId, resolution);
348
+ });
349
+ input.snapshots.forEach((snapshot, index) => {
350
+ if (!isBindingSnapshot(snapshot)) {
351
+ throw new Error(`binding frame assembly: snapshot at index ${index} was not created by bindingSnapshot()`);
352
+ }
353
+ if (!resolutionsByRequirementId.has(snapshot.requirementId)) {
354
+ throw new Error(`binding frame assembly: snapshot requirement ${snapshot.requirementId} was not resolved`);
355
+ }
356
+ if (snapshotsByRequirementId.has(snapshot.requirementId)) {
357
+ throw new Error(`binding frame assembly: duplicate snapshot ${snapshot.requirementId}`);
358
+ }
359
+ snapshotsByRequirementId.set(snapshot.requirementId, snapshot);
360
+ });
361
+ const frameSnapshots = [];
362
+ const issues = [];
363
+ const facts = [];
364
+ for (const resolution of resolutionsByRequirementId.values()) {
365
+ facts.push(...resolution.facts);
366
+ if (resolution.status !== 'resolved') {
367
+ issues.push(...resolution.issues);
368
+ continue;
369
+ }
370
+ const snapshot = snapshotsByRequirementId.get(resolution.requirementId);
371
+ if (snapshot === undefined) {
372
+ issues.push({
373
+ severity: 'error',
374
+ code: 'snapshot.missing',
375
+ message: `No snapshot supplied for resolved requirement ${resolution.requirementId}`,
376
+ path: resolution.requirementId,
377
+ });
378
+ continue;
379
+ }
380
+ if (snapshot.providerId !== resolution.providerId) {
381
+ issues.push({
382
+ severity: 'error',
383
+ code: 'snapshot.provider-mismatch',
384
+ message: `Snapshot for requirement ${resolution.requirementId} came from provider ${snapshot.providerId}; expected ${resolution.providerId}`,
385
+ path: resolution.requirementId,
386
+ });
387
+ continue;
388
+ }
389
+ frameSnapshots.push(snapshot);
390
+ facts.push(...snapshot.facts);
391
+ }
392
+ return Object.freeze({
393
+ frame: bindingFrame(frameSnapshots),
394
+ issues: freezeIssues(issues),
395
+ facts: freezeFacts(facts),
396
+ });
397
+ }
398
+ export function commandIntent(id, options = {}) {
399
+ const intent = {
400
+ id: normalizeRequiredText({
401
+ scope: 'command intent',
402
+ field: 'id',
403
+ value: id,
404
+ }),
405
+ label: optionalTrimmedText(options.label),
406
+ description: optionalTrimmedText(options.description),
407
+ facts: freezeFacts(options.facts),
408
+ };
409
+ Object.defineProperty(intent, COMMAND_INTENT_BRAND, { value: true });
410
+ return Object.freeze(intent);
411
+ }
412
+ export function isBindingSnapshot(value) {
413
+ return Boolean(value
414
+ && typeof value === 'object'
415
+ && value[BINDING_SNAPSHOT_BRAND] === true);
416
+ }
417
+ export function isDataProvider(value) {
418
+ return Boolean(value
419
+ && typeof value === 'object'
420
+ && value[DATA_PROVIDER_BRAND] === true);
421
+ }
422
+ export function isProviderScope(value) {
423
+ return Boolean(value
424
+ && typeof value === 'object'
425
+ && value[PROVIDER_SCOPE_BRAND] === true);
426
+ }
427
+ export function isCommandIntent(value) {
428
+ return Boolean(value
429
+ && typeof value === 'object'
430
+ && value[COMMAND_INTENT_BRAND] === true);
431
+ }
432
+ export function isProviderResolution(value) {
433
+ return Boolean(value
434
+ && typeof value === 'object'
435
+ && value[PROVIDER_RESOLUTION_BRAND] === true);
436
+ }
437
+ function isProviderScopeEntry(value) {
438
+ return Boolean(value
439
+ && typeof value === 'object'
440
+ && value[PROVIDER_SCOPE_ENTRY_BRAND] === true);
441
+ }
442
+ function normalizeRequiredText(options) {
443
+ const normalized = options.value.trim();
444
+ if (normalized === '') {
445
+ throw new Error(`${options.scope}: ${options.field} is required`);
446
+ }
447
+ return normalized;
448
+ }
449
+ function optionalTrimmedText(value) {
450
+ if (value === undefined) {
451
+ return undefined;
452
+ }
453
+ const normalized = value.trim();
454
+ return normalized === '' ? undefined : normalized;
455
+ }
456
+ function isBindingStatus(value) {
457
+ return BINDING_STATUSES.includes(value);
458
+ }
459
+ function isBindingIssueSeverity(value) {
460
+ return BINDING_ISSUE_SEVERITIES.includes(value);
461
+ }
462
+ function freezeIssues(issues) {
463
+ if (issues === undefined || issues.length === 0) {
464
+ return EMPTY_BINDING_ISSUES;
465
+ }
466
+ return deepFreeze(issues.map((issue, index) => normalizeIssue(issue, index)));
467
+ }
468
+ function normalizeIssue(issue, index) {
469
+ if (!isBindingIssueSeverity(issue.severity)) {
470
+ throw new Error(`binding issue: unsupported severity ${String(issue.severity)} at index ${index}`);
471
+ }
472
+ return {
473
+ severity: issue.severity,
474
+ code: normalizeRequiredText({
475
+ scope: 'binding issue',
476
+ field: `issues[${index}].code`,
477
+ value: issue.code,
478
+ }),
479
+ message: normalizeRequiredText({
480
+ scope: 'binding issue',
481
+ field: `issues[${index}].message`,
482
+ value: issue.message,
483
+ }),
484
+ path: optionalTrimmedText(issue.path),
485
+ };
486
+ }
487
+ function providerResolution(input) {
488
+ const resolution = {
489
+ requirementId: input.requirementId,
490
+ resource: input.resource,
491
+ optional: input.optional,
492
+ status: input.status,
493
+ scopeId: input.scopeId,
494
+ providerId: input.providerId,
495
+ issues: input.issues,
496
+ facts: input.facts,
497
+ };
498
+ Object.defineProperty(resolution, PROVIDER_RESOLUTION_BRAND, { value: true });
499
+ return Object.freeze(resolution);
500
+ }
501
+ function freezeFacts(facts) {
502
+ if (facts === undefined || facts.length === 0) {
503
+ return EMPTY_BINDING_FACTS;
504
+ }
505
+ return deepFreeze([...facts]);
506
+ }
507
+ function freezeSnapshotData(value) {
508
+ return deepFreeze(cloneSnapshotData(value, 'data'));
509
+ }
510
+ function cloneSnapshotData(value, path, seen = new WeakSet()) {
511
+ if (value === null
512
+ || typeof value === 'string'
513
+ || typeof value === 'number'
514
+ || typeof value === 'boolean') {
515
+ return value;
516
+ }
517
+ if (typeof value === 'bigint' || typeof value === 'symbol' || typeof value === 'function') {
518
+ throw new Error(`binding data: unsupported ${typeof value} at ${path}`);
519
+ }
520
+ if (value === undefined) {
521
+ throw new Error(`binding data: unsupported undefined at ${path}`);
522
+ }
523
+ if (typeof value !== 'object') {
524
+ throw new Error(`binding data: unsupported ${typeof value} at ${path}`);
525
+ }
526
+ const objectValue = value;
527
+ if (seen.has(objectValue)) {
528
+ throw new Error(`binding data: circular reference at ${path}`);
529
+ }
530
+ seen.add(objectValue);
531
+ try {
532
+ if (Array.isArray(value)) {
533
+ return value.map((item, index) => cloneSnapshotData(item, `${path}[${index}]`, seen));
534
+ }
535
+ if (!isPlainObject(value)) {
536
+ throw new Error(`binding data: unsupported ${objectKind(value)} at ${path}`);
537
+ }
538
+ const clone = Object.create(Object.getPrototypeOf(value));
539
+ const descriptors = Object.getOwnPropertyDescriptors(value);
540
+ for (const key of Reflect.ownKeys(descriptors)) {
541
+ if (typeof key === 'symbol') {
542
+ throw new Error(`binding data: unsupported symbol property at ${path}`);
543
+ }
544
+ const propertyPath = `${path}.${key}`;
545
+ const descriptor = descriptors[key];
546
+ if (descriptor === undefined) {
547
+ continue;
548
+ }
549
+ if (!descriptor.enumerable) {
550
+ throw new Error(`binding data: unsupported non-enumerable property at ${propertyPath}`);
551
+ }
552
+ if ('get' in descriptor || 'set' in descriptor) {
553
+ throw new Error(`binding data: unsupported accessor at ${propertyPath}`);
554
+ }
555
+ clone[key] = cloneSnapshotData(descriptor.value, propertyPath, seen);
556
+ }
557
+ return clone;
558
+ }
559
+ finally {
560
+ seen.delete(objectValue);
561
+ }
562
+ }
563
+ function isPlainObject(value) {
564
+ const prototype = Object.getPrototypeOf(value);
565
+ return prototype === Object.prototype || prototype === null;
566
+ }
567
+ function objectKind(value) {
568
+ return Object.prototype.toString.call(value).slice(8, -1);
569
+ }
570
+ function deepFreeze(value, seen = new WeakSet()) {
571
+ if (value === null || typeof value !== 'object') {
572
+ return value;
573
+ }
574
+ const objectValue = value;
575
+ if (seen.has(objectValue)) {
576
+ return value;
577
+ }
578
+ seen.add(objectValue);
579
+ for (const key of Reflect.ownKeys(objectValue)) {
580
+ const descriptor = Object.getOwnPropertyDescriptor(objectValue, key);
581
+ if (descriptor !== undefined && 'value' in descriptor) {
582
+ deepFreeze(descriptor.value, seen);
583
+ }
584
+ }
585
+ return Object.freeze(value);
586
+ }
587
+ //# sourceMappingURL=binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/core/binding.ts"],"names":[],"mappings":"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"}