@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,357 @@
1
+ const BINDING_LIFECYCLE_OWNER_BRAND = Symbol('BindingLifecycleOwner');
2
+ const BINDING_LIFECYCLE_RECORD_BRAND = Symbol('BindingLifecycleRecord');
3
+ const BINDING_LIFECYCLE_STATES = [
4
+ 'active',
5
+ 'suspended',
6
+ 'disposed',
7
+ ];
8
+ const BINDING_LIFECYCLE_OWNER_KINDS = [
9
+ 'view',
10
+ 'block',
11
+ 'app-shell',
12
+ 'runtime',
13
+ ];
14
+ const BINDING_INVALIDATION_REASONS = [
15
+ 'provider-update',
16
+ 'owner-suspended',
17
+ 'owner-disposed',
18
+ 'scope-changed',
19
+ 'manual',
20
+ ];
21
+ const BINDING_TRANSITION_REASONS = [
22
+ 'activate',
23
+ 'suspend',
24
+ 'dispose',
25
+ 'invalidate',
26
+ ];
27
+ const EMPTY_BINDING_INVALIDATIONS = Object.freeze([]);
28
+ const EMPTY_BINDING_TRANSITIONS = Object.freeze([]);
29
+ const EMPTY_BINDING_FACTS = Object.freeze([]);
30
+ export function defineBindingLifecycleOwner(input) {
31
+ const kind = normalizeRequiredText({
32
+ scope: 'binding lifecycle owner',
33
+ field: 'kind',
34
+ value: input.kind,
35
+ });
36
+ if (!isBindingLifecycleOwnerKind(kind)) {
37
+ throw new Error(`binding lifecycle owner: unsupported kind ${kind}`);
38
+ }
39
+ const owner = {
40
+ id: normalizeRequiredText({
41
+ scope: 'binding lifecycle owner',
42
+ field: 'id',
43
+ value: input.id,
44
+ }),
45
+ kind,
46
+ label: optionalTrimmedText(input.label),
47
+ };
48
+ Object.defineProperty(owner, BINDING_LIFECYCLE_OWNER_BRAND, { value: true });
49
+ return Object.freeze(owner);
50
+ }
51
+ export function isBindingLifecycleOwner(value) {
52
+ return Boolean(value
53
+ && typeof value === 'object'
54
+ && Object.prototype.hasOwnProperty.call(value, BINDING_LIFECYCLE_OWNER_BRAND)
55
+ && value[BINDING_LIFECYCLE_OWNER_BRAND] === true);
56
+ }
57
+ export function bindingLifecycleRecord(input) {
58
+ if (!isBindingLifecycleOwner(input.owner)) {
59
+ throw new Error('binding lifecycle: owner was not created by defineBindingLifecycleOwner()');
60
+ }
61
+ const state = input.state ?? 'active';
62
+ if (!isBindingLifecycleState(state)) {
63
+ throw new Error(`binding lifecycle: unsupported state ${String(state)}`);
64
+ }
65
+ const version = input.version ?? 1;
66
+ if (!Number.isInteger(version) || version < 1) {
67
+ throw new Error('binding lifecycle: version must be a positive integer');
68
+ }
69
+ const requirementId = normalizeRequiredText({
70
+ scope: 'binding lifecycle',
71
+ field: 'requirementId',
72
+ value: input.requirementId,
73
+ });
74
+ const providerId = optionalRequiredText({
75
+ scope: 'binding lifecycle',
76
+ field: 'providerId',
77
+ value: input.providerId,
78
+ });
79
+ const invalidations = freezeInvalidations(input.invalidations, requirementId);
80
+ const transitions = freezeTransitions(input.transitions, state);
81
+ const record = {
82
+ owner: input.owner,
83
+ requirementId,
84
+ providerId,
85
+ state,
86
+ version,
87
+ invalidations,
88
+ transitions,
89
+ facts: freezeFacts(input.facts),
90
+ };
91
+ Object.defineProperty(record, BINDING_LIFECYCLE_RECORD_BRAND, { value: true });
92
+ return Object.freeze(record);
93
+ }
94
+ export function isBindingLifecycleRecord(value) {
95
+ return Boolean(value
96
+ && typeof value === 'object'
97
+ && Object.prototype.hasOwnProperty.call(value, BINDING_LIFECYCLE_RECORD_BRAND)
98
+ && value[BINDING_LIFECYCLE_RECORD_BRAND] === true);
99
+ }
100
+ export function activateBinding(record) {
101
+ assertLifecycleRecord(record);
102
+ assertNotDisposed(record, 'activate');
103
+ if (record.state === 'active') {
104
+ throw new Error(`binding lifecycle: binding ${record.requirementId} is already active`);
105
+ }
106
+ return transitionRecord(record, 'active', 'activate');
107
+ }
108
+ export function suspendBinding(record) {
109
+ assertLifecycleRecord(record);
110
+ assertNotDisposed(record, 'suspend');
111
+ if (record.state === 'suspended') {
112
+ throw new Error(`binding lifecycle: binding ${record.requirementId} is already suspended`);
113
+ }
114
+ return transitionRecord(record, 'suspended', 'suspend');
115
+ }
116
+ export function disposeBinding(record) {
117
+ assertLifecycleRecord(record);
118
+ if (record.state === 'disposed') {
119
+ throw new Error(`binding lifecycle: binding ${record.requirementId} is already disposed`);
120
+ }
121
+ return transitionRecord(record, 'disposed', 'dispose');
122
+ }
123
+ export function invalidateBinding(record, input) {
124
+ assertLifecycleRecord(record);
125
+ assertNotDisposed(record, 'invalidate');
126
+ if (!isBindingInvalidationReason(input.reason)) {
127
+ throw new Error(`binding invalidation: unsupported reason ${String(input.reason)}`);
128
+ }
129
+ if (input.snapshotVersion !== undefined
130
+ && (!Number.isInteger(input.snapshotVersion) || input.snapshotVersion < 1)) {
131
+ throw new Error('binding invalidation: snapshotVersion must be a positive integer');
132
+ }
133
+ const providerId = optionalRequiredText({
134
+ scope: 'binding invalidation',
135
+ field: 'providerId',
136
+ value: input.providerId,
137
+ }) ?? record.providerId;
138
+ const invalidation = freezeInvalidation({
139
+ requirementId: record.requirementId,
140
+ providerId,
141
+ reason: input.reason,
142
+ snapshotVersion: input.snapshotVersion,
143
+ });
144
+ return bindingLifecycleRecord({
145
+ owner: record.owner,
146
+ requirementId: record.requirementId,
147
+ providerId: record.providerId,
148
+ state: record.state,
149
+ version: record.version + 1,
150
+ invalidations: [...record.invalidations, invalidation],
151
+ transitions: [
152
+ ...record.transitions,
153
+ freezeTransition({
154
+ from: record.state,
155
+ to: record.state,
156
+ reason: 'invalidate',
157
+ }),
158
+ ],
159
+ facts: record.facts,
160
+ });
161
+ }
162
+ function transitionRecord(record, to, reason) {
163
+ return bindingLifecycleRecord({
164
+ owner: record.owner,
165
+ requirementId: record.requirementId,
166
+ providerId: record.providerId,
167
+ state: to,
168
+ version: record.version + 1,
169
+ invalidations: record.invalidations,
170
+ transitions: [
171
+ ...record.transitions,
172
+ freezeTransition({
173
+ from: record.state,
174
+ to,
175
+ reason,
176
+ }),
177
+ ],
178
+ facts: record.facts,
179
+ });
180
+ }
181
+ function assertLifecycleRecord(record) {
182
+ if (!isBindingLifecycleRecord(record)) {
183
+ throw new Error('binding lifecycle: record was not created by bindingLifecycleRecord()');
184
+ }
185
+ }
186
+ function assertNotDisposed(record, action) {
187
+ if (record.state === 'disposed') {
188
+ throw new Error(`binding lifecycle: disposed binding ${record.requirementId} cannot ${action}`);
189
+ }
190
+ }
191
+ function freezeInvalidations(invalidations, expectedRequirementId) {
192
+ if (invalidations === undefined || invalidations.length === 0) {
193
+ return EMPTY_BINDING_INVALIDATIONS;
194
+ }
195
+ return Object.freeze(invalidations.map((invalidation) => {
196
+ const frozen = freezeInvalidation(invalidation);
197
+ if (frozen.requirementId !== expectedRequirementId) {
198
+ throw new Error(`binding lifecycle: invalidation requirement ${frozen.requirementId} `
199
+ + `does not match record requirement ${expectedRequirementId}`);
200
+ }
201
+ return frozen;
202
+ }));
203
+ }
204
+ function freezeInvalidation(invalidation) {
205
+ const reason = invalidation.reason;
206
+ if (!isBindingInvalidationReason(reason)) {
207
+ throw new Error(`binding invalidation: unsupported reason ${String(reason)}`);
208
+ }
209
+ if (invalidation.snapshotVersion !== undefined
210
+ && (!Number.isInteger(invalidation.snapshotVersion) || invalidation.snapshotVersion < 1)) {
211
+ throw new Error('binding invalidation: snapshotVersion must be a positive integer');
212
+ }
213
+ return Object.freeze({
214
+ requirementId: normalizeRequiredText({
215
+ scope: 'binding invalidation',
216
+ field: 'requirementId',
217
+ value: invalidation.requirementId,
218
+ }),
219
+ providerId: optionalRequiredText({
220
+ scope: 'binding invalidation',
221
+ field: 'providerId',
222
+ value: invalidation.providerId,
223
+ }),
224
+ reason,
225
+ snapshotVersion: invalidation.snapshotVersion,
226
+ });
227
+ }
228
+ function freezeTransitions(transitions, expectedState) {
229
+ if (transitions === undefined || transitions.length === 0) {
230
+ return EMPTY_BINDING_TRANSITIONS;
231
+ }
232
+ const frozenTransitions = transitions.map(freezeTransition);
233
+ for (let index = 1; index < frozenTransitions.length; index += 1) {
234
+ const previous = frozenTransitions[index - 1];
235
+ const current = frozenTransitions[index];
236
+ if (previous === undefined || current === undefined) {
237
+ throw new Error(`binding lifecycle: missing transition at index ${index}`);
238
+ }
239
+ if (previous.to !== current.from) {
240
+ throw new Error(`binding lifecycle: transition chain is discontinuous at index ${index}`);
241
+ }
242
+ }
243
+ const finalTransition = frozenTransitions.at(-1);
244
+ if (finalTransition !== undefined && finalTransition.to !== expectedState) {
245
+ throw new Error(`binding lifecycle: final transition state ${finalTransition.to} `
246
+ + `does not match record state ${expectedState}`);
247
+ }
248
+ return Object.freeze(frozenTransitions);
249
+ }
250
+ function freezeTransition(transition) {
251
+ if (!isBindingLifecycleState(transition.from)) {
252
+ throw new Error(`binding transition: unsupported from state ${String(transition.from)}`);
253
+ }
254
+ if (!isBindingLifecycleState(transition.to)) {
255
+ throw new Error(`binding transition: unsupported to state ${String(transition.to)}`);
256
+ }
257
+ if (!isBindingTransitionReason(transition.reason)) {
258
+ throw new Error(`binding transition: unsupported reason ${String(transition.reason)}`);
259
+ }
260
+ assertAllowedTransition(transition);
261
+ return Object.freeze({
262
+ from: transition.from,
263
+ to: transition.to,
264
+ reason: transition.reason,
265
+ });
266
+ }
267
+ function assertAllowedTransition(transition) {
268
+ if (transition.from === 'disposed') {
269
+ throw new Error(`binding transition: disposed bindings cannot transition to ${transition.to}`);
270
+ }
271
+ const expectedReason = expectedTransitionReason(transition.from, transition.to);
272
+ if (expectedReason === undefined) {
273
+ throw new Error(`binding transition: unsupported ${transition.from} -> ${transition.to}`);
274
+ }
275
+ if (transition.reason !== expectedReason) {
276
+ throw new Error(`binding transition: reason ${transition.reason} does not match `
277
+ + `${transition.from} -> ${transition.to}`);
278
+ }
279
+ }
280
+ function expectedTransitionReason(from, to) {
281
+ if (from === 'active' && to === 'suspended') {
282
+ return 'suspend';
283
+ }
284
+ if (from === 'active' && to === 'disposed') {
285
+ return 'dispose';
286
+ }
287
+ if (from === 'suspended' && to === 'active') {
288
+ return 'activate';
289
+ }
290
+ if (from === 'suspended' && to === 'disposed') {
291
+ return 'dispose';
292
+ }
293
+ if ((from === 'active' || from === 'suspended') && from === to) {
294
+ return 'invalidate';
295
+ }
296
+ return undefined;
297
+ }
298
+ function freezeFacts(facts) {
299
+ if (facts === undefined || facts.length === 0) {
300
+ return EMPTY_BINDING_FACTS;
301
+ }
302
+ return deepFreeze([...facts]);
303
+ }
304
+ function normalizeRequiredText(options) {
305
+ const normalized = options.value.trim();
306
+ if (normalized === '') {
307
+ throw new Error(`${options.scope}: ${options.field} is required`);
308
+ }
309
+ return normalized;
310
+ }
311
+ function optionalRequiredText(options) {
312
+ if (options.value === undefined) {
313
+ return undefined;
314
+ }
315
+ return normalizeRequiredText({
316
+ scope: options.scope,
317
+ field: options.field,
318
+ value: options.value,
319
+ });
320
+ }
321
+ function optionalTrimmedText(value) {
322
+ if (value === undefined) {
323
+ return undefined;
324
+ }
325
+ const normalized = value.trim();
326
+ return normalized === '' ? undefined : normalized;
327
+ }
328
+ function isBindingLifecycleState(value) {
329
+ return BINDING_LIFECYCLE_STATES.includes(value);
330
+ }
331
+ function isBindingLifecycleOwnerKind(value) {
332
+ return BINDING_LIFECYCLE_OWNER_KINDS.includes(value);
333
+ }
334
+ function isBindingInvalidationReason(value) {
335
+ return BINDING_INVALIDATION_REASONS.includes(value);
336
+ }
337
+ function isBindingTransitionReason(value) {
338
+ return BINDING_TRANSITION_REASONS.includes(value);
339
+ }
340
+ function deepFreeze(value, seen = new WeakSet()) {
341
+ if (value === null || typeof value !== 'object') {
342
+ return value;
343
+ }
344
+ const objectValue = value;
345
+ if (seen.has(objectValue)) {
346
+ return value;
347
+ }
348
+ seen.add(objectValue);
349
+ for (const key of Reflect.ownKeys(objectValue)) {
350
+ const descriptor = Object.getOwnPropertyDescriptor(objectValue, key);
351
+ if (descriptor !== undefined && 'value' in descriptor) {
352
+ deepFreeze(descriptor.value, seen);
353
+ }
354
+ }
355
+ return Object.freeze(value);
356
+ }
357
+ //# sourceMappingURL=binding-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-lifecycle.js","sourceRoot":"","sources":["../../src/core/binding-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ import type { ModeLoweringFact } from './mode-lowering.js';
2
+ declare const DATA_REQUIREMENT_BRAND: unique symbol;
3
+ declare const DATA_PROVIDER_BRAND: unique symbol;
4
+ declare const VIEW_DATA_CONTRACT_BRAND: unique symbol;
5
+ declare const BINDING_SNAPSHOT_BRAND: unique symbol;
6
+ declare const PROVIDER_SCOPE_ENTRY_BRAND: unique symbol;
7
+ declare const PROVIDER_SCOPE_BRAND: unique symbol;
8
+ declare const PROVIDER_RESOLUTION_BRAND: unique symbol;
9
+ declare const COMMAND_INTENT_BRAND: unique symbol;
10
+ declare const COMMAND_INTENT_PAYLOAD: unique symbol;
11
+ export type ProviderId = string;
12
+ export type RequirementId = string;
13
+ export type CommandIntentId = string;
14
+ export type BindingStatus = 'ready' | 'loading' | 'empty' | 'stale' | 'error';
15
+ export type BindingIssueSeverity = 'info' | 'warning' | 'error';
16
+ export type ProviderResolutionStatus = 'resolved' | 'missing-optional' | 'missing-required';
17
+ export type BindingFact = ModeLoweringFact;
18
+ export type DeepReadonly<T> = T extends readonly (infer Item)[] ? readonly DeepReadonly<Item>[] : T extends object ? {
19
+ readonly [Key in keyof T]: DeepReadonly<T[Key]>;
20
+ } : T;
21
+ export interface BindingIssue {
22
+ readonly severity: BindingIssueSeverity;
23
+ readonly code: string;
24
+ readonly message: string;
25
+ readonly path?: string;
26
+ }
27
+ export interface DataRequirementInput {
28
+ readonly id: string;
29
+ readonly resource: string;
30
+ readonly label?: string;
31
+ readonly description?: string;
32
+ readonly optional?: boolean;
33
+ readonly facts?: readonly BindingFact[];
34
+ }
35
+ export interface DataRequirement {
36
+ readonly [DATA_REQUIREMENT_BRAND]: true;
37
+ readonly id: RequirementId;
38
+ readonly resource: string;
39
+ readonly label?: string;
40
+ readonly description?: string;
41
+ readonly optional?: boolean;
42
+ readonly facts: readonly BindingFact[];
43
+ }
44
+ export interface DataProviderInput {
45
+ readonly id: string;
46
+ readonly resource: string;
47
+ readonly label?: string;
48
+ readonly description?: string;
49
+ readonly facts?: readonly BindingFact[];
50
+ }
51
+ export interface DataProvider {
52
+ readonly [DATA_PROVIDER_BRAND]: true;
53
+ readonly id: ProviderId;
54
+ readonly resource: string;
55
+ readonly label?: string;
56
+ readonly description?: string;
57
+ readonly facts: readonly BindingFact[];
58
+ }
59
+ export interface ViewDataRequirementEntry {
60
+ readonly name: string;
61
+ readonly requirement: DataRequirement;
62
+ }
63
+ export interface ViewDataInput {
64
+ readonly id?: string;
65
+ readonly label?: string;
66
+ readonly description?: string;
67
+ readonly requirements: readonly ViewDataRequirementEntry[];
68
+ readonly facts?: readonly BindingFact[];
69
+ }
70
+ export interface ProviderScopeEntry {
71
+ readonly [PROVIDER_SCOPE_ENTRY_BRAND]: true;
72
+ readonly resource: string;
73
+ readonly provider: DataProvider;
74
+ }
75
+ export interface ProviderScopeOptions {
76
+ readonly id?: string;
77
+ readonly label?: string;
78
+ readonly description?: string;
79
+ readonly facts?: readonly BindingFact[];
80
+ }
81
+ export interface ProviderResolution {
82
+ readonly [PROVIDER_RESOLUTION_BRAND]: true;
83
+ readonly requirementId: RequirementId;
84
+ readonly resource: string;
85
+ readonly optional: boolean;
86
+ readonly status: ProviderResolutionStatus;
87
+ readonly scopeId?: string;
88
+ readonly providerId?: ProviderId;
89
+ readonly issues: readonly BindingIssue[];
90
+ readonly facts: readonly BindingFact[];
91
+ }
92
+ export interface BindingSnapshotInput<Data = unknown> {
93
+ readonly providerId: string;
94
+ readonly requirementId: string;
95
+ readonly version: number;
96
+ readonly status: BindingStatus;
97
+ readonly data?: Data;
98
+ readonly issues?: readonly BindingIssue[];
99
+ readonly facts?: readonly BindingFact[];
100
+ }
101
+ export interface BindingSnapshot<Data = unknown> {
102
+ readonly [BINDING_SNAPSHOT_BRAND]: true;
103
+ readonly providerId: ProviderId;
104
+ readonly requirementId: RequirementId;
105
+ readonly version: number;
106
+ readonly status: BindingStatus;
107
+ readonly data?: DeepReadonly<Data>;
108
+ readonly issues: readonly BindingIssue[];
109
+ readonly facts: readonly BindingFact[];
110
+ }
111
+ export interface BindingFrameFromSnapshotsInput {
112
+ readonly resolutions: readonly ProviderResolution[];
113
+ readonly snapshots: readonly BindingSnapshot[];
114
+ }
115
+ export interface BindingFrameAssembly {
116
+ readonly frame: BindingFrame;
117
+ readonly issues: readonly BindingIssue[];
118
+ readonly facts: readonly BindingFact[];
119
+ }
120
+ export interface CommandIntentOptions {
121
+ readonly label?: string;
122
+ readonly description?: string;
123
+ readonly facts?: readonly BindingFact[];
124
+ }
125
+ export interface CommandIntent<Payload = unknown> {
126
+ readonly [COMMAND_INTENT_BRAND]: true;
127
+ readonly [COMMAND_INTENT_PAYLOAD]?: Payload;
128
+ readonly id: CommandIntentId;
129
+ readonly label?: string;
130
+ readonly description?: string;
131
+ readonly facts: readonly BindingFact[];
132
+ }
133
+ export declare class ViewDataContract {
134
+ #private;
135
+ readonly [VIEW_DATA_CONTRACT_BRAND] = true;
136
+ readonly id?: string;
137
+ readonly label?: string;
138
+ readonly description?: string;
139
+ readonly facts: readonly BindingFact[];
140
+ constructor(input: ViewDataInput);
141
+ names(): readonly string[];
142
+ requirementIds(): readonly RequirementId[];
143
+ entries(): readonly ViewDataRequirementEntry[];
144
+ requirements(): readonly DataRequirement[];
145
+ entry(name: string): ViewDataRequirementEntry | undefined;
146
+ requirement(name: string): DataRequirement | undefined;
147
+ }
148
+ export declare class ProviderScope {
149
+ #private;
150
+ readonly [PROVIDER_SCOPE_BRAND] = true;
151
+ readonly id?: string;
152
+ readonly label?: string;
153
+ readonly description?: string;
154
+ readonly facts: readonly BindingFact[];
155
+ constructor(entries: readonly ProviderScopeEntry[], options?: ProviderScopeOptions);
156
+ resources(): readonly string[];
157
+ providers(): readonly DataProvider[];
158
+ providerIds(): readonly ProviderId[];
159
+ has(resource: string): boolean;
160
+ get(resource: string): DataProvider | undefined;
161
+ }
162
+ export declare class BindingFrame {
163
+ #private;
164
+ constructor(snapshots: readonly BindingSnapshot[]);
165
+ ids(): readonly RequirementId[];
166
+ snapshot<Data = unknown>(requirementId: RequirementId): BindingSnapshot<Data> | undefined;
167
+ get<Data = unknown>(requirementId: RequirementId): DeepReadonly<Data> | undefined;
168
+ require<Data = unknown>(requirementId: RequirementId): DeepReadonly<Data>;
169
+ status(requirementId: RequirementId): BindingStatus | undefined;
170
+ issues(requirementId: RequirementId): readonly BindingIssue[];
171
+ facts(requirementId: RequirementId): readonly BindingFact[];
172
+ }
173
+ export declare function defineDataRequirement(input: DataRequirementInput): DataRequirement;
174
+ export declare function isDataRequirement(value: unknown): value is DataRequirement;
175
+ export declare function defineViewData(input: ViewDataInput): ViewDataContract;
176
+ export declare function isViewDataContract(value: unknown): value is ViewDataContract;
177
+ export declare function defineDataProvider(input: DataProviderInput): DataProvider;
178
+ export declare function provide(provider: DataProvider): ProviderScopeEntry;
179
+ export declare function providerScope(entries: readonly ProviderScopeEntry[], options?: ProviderScopeOptions): ProviderScope;
180
+ export declare function resolveProviderRequirement(requirement: DataRequirement, scope: ProviderScope): ProviderResolution;
181
+ export declare function resolveProviderRequirements(requirements: readonly DataRequirement[], scope: ProviderScope): readonly ProviderResolution[];
182
+ export declare function bindingSnapshot<Data = unknown>(input: BindingSnapshotInput<Data>): BindingSnapshot<Data>;
183
+ export declare function bindingFrame(snapshots: readonly BindingSnapshot[]): BindingFrame;
184
+ export declare function bindingFrameFromSnapshots(input: BindingFrameFromSnapshotsInput): BindingFrameAssembly;
185
+ export declare function commandIntent<Payload = unknown>(id: string, options?: CommandIntentOptions): CommandIntent<Payload>;
186
+ export declare function isBindingSnapshot(value: unknown): value is BindingSnapshot;
187
+ export declare function isDataProvider(value: unknown): value is DataProvider;
188
+ export declare function isProviderScope(value: unknown): value is ProviderScope;
189
+ export declare function isCommandIntent(value: unknown): value is CommandIntent;
190
+ export declare function isProviderResolution(value: unknown): value is ProviderResolution;
191
+ export {};
192
+ //# sourceMappingURL=binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/core/binding.ts"],"names":[],"mappings":"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"}