@hatiolab/figure-model 0.6.4 → 0.6.6

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 (66) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/asset-types.d.ts +142 -2
  3. package/dist/asset-types.d.ts.map +1 -1
  4. package/dist/asset.d.ts.map +1 -1
  5. package/dist/asset.js +5 -1
  6. package/dist/asset.js.map +1 -1
  7. package/dist/authoring-actions.d.ts.map +1 -1
  8. package/dist/authoring-actions.js +2 -2
  9. package/dist/authoring-actions.js.map +1 -1
  10. package/dist/clip-keeping.d.ts +9 -0
  11. package/dist/clip-keeping.d.ts.map +1 -1
  12. package/dist/clip-keeping.js +34 -0
  13. package/dist/clip-keeping.js.map +1 -1
  14. package/dist/contract.d.ts +97 -0
  15. package/dist/contract.d.ts.map +1 -1
  16. package/dist/contract.js.map +1 -1
  17. package/dist/data-interface.d.ts +81 -0
  18. package/dist/data-interface.d.ts.map +1 -0
  19. package/dist/data-interface.js +723 -0
  20. package/dist/data-interface.js.map +1 -0
  21. package/dist/driver.d.ts +3 -0
  22. package/dist/driver.d.ts.map +1 -1
  23. package/dist/driver.js +22 -6
  24. package/dist/driver.js.map +1 -1
  25. package/dist/graph.d.ts +5 -1
  26. package/dist/graph.d.ts.map +1 -1
  27. package/dist/graph.js +6 -0
  28. package/dist/graph.js.map +1 -1
  29. package/dist/index.d.ts +5 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -2
  32. package/dist/index.js.map +1 -1
  33. package/dist/item-seats.d.ts +50 -0
  34. package/dist/item-seats.d.ts.map +1 -0
  35. package/dist/item-seats.js +92 -0
  36. package/dist/item-seats.js.map +1 -0
  37. package/dist/joint-part-edits.d.ts.map +1 -1
  38. package/dist/joint-part-edits.js +3 -0
  39. package/dist/joint-part-edits.js.map +1 -1
  40. package/dist/kernel-version.d.ts +1 -1
  41. package/dist/kernel-version.js +1 -1
  42. package/dist/motion-groups.d.ts +74 -0
  43. package/dist/motion-groups.d.ts.map +1 -0
  44. package/dist/motion-groups.js +241 -0
  45. package/dist/motion-groups.js.map +1 -0
  46. package/dist/part-edit.d.ts +66 -7
  47. package/dist/part-edit.d.ts.map +1 -1
  48. package/dist/part-edit.js +154 -12
  49. package/dist/part-edit.js.map +1 -1
  50. package/dist/proposal.d.ts +2 -2
  51. package/dist/proposal.d.ts.map +1 -1
  52. package/dist/proposal.js +40 -4
  53. package/dist/proposal.js.map +1 -1
  54. package/dist/release-contract.d.ts +1 -1
  55. package/dist/release-contract.d.ts.map +1 -1
  56. package/dist/release-contract.js +83 -0
  57. package/dist/release-contract.js.map +1 -1
  58. package/dist/robots.d.ts +46 -0
  59. package/dist/robots.d.ts.map +1 -1
  60. package/dist/robots.js +137 -0
  61. package/dist/robots.js.map +1 -1
  62. package/dist/room.d.ts.map +1 -1
  63. package/dist/room.js +1 -0
  64. package/dist/room.js.map +1 -1
  65. package/docs/motion-contract.md +30 -2
  66. package/package.json +1 -1
@@ -4,6 +4,8 @@ import type { FigureFaceMappingNeed } from './shape-edit.ts';
4
4
  import type { Axis } from './words.ts';
5
5
  import type { LayoutIssue } from './slot-layout.ts';
6
6
  import type { FigureClipLoss } from './clip-keeping.ts';
7
+ import type { FigureDataBehavior } from './asset-types.ts';
8
+ import type { FigureDataValueIssue } from './data-interface.ts';
7
9
  /**
8
10
  * The values a refusal was said from, for a screen to say it in its own words (ADR-0127). The shape is set by the code
9
11
  * and the `reason`; the English sentence is said from the same values and stays for logs, tests and readers of the
@@ -167,6 +169,101 @@ export type FigureRefusalDetails = {
167
169
  | {
168
170
  reason: 'clips-dropped';
169
171
  clips: FigureClipLoss[];
172
+ } | {
173
+ reason: 'data-id-invalid';
174
+ list: 'bindings' | 'ports' | 'motion-groups';
175
+ id: string;
176
+ } | {
177
+ reason: 'data-id-duplicate';
178
+ list: 'bindings' | 'ports' | 'motion-groups';
179
+ id: string;
180
+ }
181
+ /** A schema field that does not hold: its place in the schema and what of it. */
182
+ | {
183
+ reason: 'data-field-invalid';
184
+ field: string;
185
+ what: string;
186
+ } | {
187
+ reason: 'data-field-duplicate';
188
+ field: string;
189
+ name: string;
190
+ }
191
+ /** An accessor that does not go down the schema to what its behavior reads. */
192
+ | {
193
+ reason: 'data-accessor-invalid';
194
+ binding: string;
195
+ accessor: string;
196
+ why: 'syntax' | 'absent' | 'not-a-list' | 'not-a-value' | 'list-needs-index' | 'item-id-required';
197
+ } | {
198
+ reason: 'data-behavior-absent';
199
+ binding: string;
200
+ behavior: FigureDataBehavior['kind'];
201
+ id: string;
202
+ } | {
203
+ reason: 'data-behavior-duplicate';
204
+ bindings: [string, string];
205
+ behavior: FigureDataBehavior['kind'];
206
+ id: string;
207
+ }
208
+ /** What a rule cannot carry over the whole of a value's domain; the numbers it found, when a range. */
209
+ | {
210
+ reason: 'data-rule-domain';
211
+ binding: string;
212
+ why: 'kind' | 'unit' | 'range' | 'cases' | 'output' | 'default';
213
+ from?: string;
214
+ to?: string;
215
+ min?: number;
216
+ max?: number;
217
+ within?: [number, number];
218
+ value?: unknown;
219
+ } | {
220
+ reason: 'data-port-invalid';
221
+ port: string;
222
+ what: 'label' | 'token' | 'part' | 'group';
223
+ id?: string;
224
+ }
225
+ /** A status port still read by a binding, named when an edit would take it away. */
226
+ | {
227
+ reason: 'data-port-bound';
228
+ port: string;
229
+ bindings: string[];
230
+ } | {
231
+ reason: 'motion-clip-absent';
232
+ group: string;
233
+ clip: string;
234
+ } | {
235
+ reason: 'motion-clip-shared';
236
+ clip: string;
237
+ groups: [string, string];
238
+ } | {
239
+ reason: 'driver-writers';
240
+ state: string;
241
+ clips: string[];
242
+ } | {
243
+ reason: 'driver-clip-required';
244
+ state: string;
245
+ clips: string[];
246
+ } | {
247
+ reason: 'motion-setting';
248
+ why: 'group-unknown' | 'clip-not-in-group' | 'speed-out-of-range' | 'group-selection-required';
249
+ group: string;
250
+ clip?: string;
251
+ speed?: number;
252
+ } | {
253
+ reason: 'item-snapshot-shape';
254
+ } | {
255
+ reason: 'item-duplicate';
256
+ item: string;
257
+ } | {
258
+ reason: 'item-stack-index';
259
+ slot: string;
260
+ heights: number[];
261
+ } | {
262
+ reason: 'item-invalid-dimensions';
263
+ item: string;
264
+ } | {
265
+ reason: 'data-values-refused';
266
+ issues: FigureDataValueIssue[];
170
267
  };
171
268
  /** Shared error boundary for the experimental runtime. */
172
269
  export declare class FigureContractError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAyEA,0DAA0D;AAC1D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACrB,uFAAuF;IAC9E,OAAO,CAAuB;IAEvC,YAAY,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,OAA8B;QACpF,KAAK,CAAC,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAoHA,0DAA0D;AAC1D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACrB,uFAAuF;IAC9E,OAAO,CAAuB;IAEvC,YAAY,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,OAA8B;QACpF,KAAK,CAAC,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACnD,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ import type { FigureAsset, FigureDataBinding, FigureDataField, FigureDataInterface, FigureDataNode, FigureStatusPort } from './asset-types.ts';
2
+ /** The fastest a motion group plays: three times its authored speed. 0 stops it. */
3
+ export declare const FIGURE_MOTION_SPEED_MAX = 3;
4
+ /** One step of an accessor: a field of an object, or an element of a list by its index. */
5
+ export type FigureAccessorStep = {
6
+ field: string;
7
+ } | {
8
+ index: number;
9
+ };
10
+ /**
11
+ * An accessor read as steps, or null when it is not one this contract takes: field names joined by `.`, each followed
12
+ * by at most one `[n]`. The board's accessor (JSONata) reads these the same way; nothing richer is taken, because a
13
+ * richer expression cannot be followed down the schema.
14
+ */
15
+ export declare function parseFigureAccessor(accessor: string): FigureAccessorStep[] | null;
16
+ /** An accessor written back from its steps. */
17
+ export declare const figureAccessorOf: (steps: readonly FigureAccessorStep[]) => string;
18
+ /**
19
+ * Refuses a data interface the contract does not allow (`DATA_INTERFACE`, or `ASSET_SCHEMA` for its shape). Called by
20
+ * `compileFigureAsset`, after the drivers and motion groups, whose clips a binding may name.
21
+ */
22
+ export declare function validateFigureDataInterface(asset: FigureAsset): void;
23
+ /**
24
+ * A place of the data that cannot be taken, and why -- the shape of the issues a consumer reports when it refuses data
25
+ * (`DATA_VALUE`). The reading and the check are the consumer's (things-scene's figure input, with the board's accessor
26
+ * and evaluator); this module never walks data.
27
+ */
28
+ export interface FigureDataValueIssue {
29
+ reason: 'not-a-record' | 'not-a-list' | 'type-mismatch' | 'out-of-range' | 'value-unknown' | 'json-unreadable' | 'item-id-missing';
30
+ path: string;
31
+ value?: unknown;
32
+ }
33
+ /** One binding made ready: what the schema has at its accessor (the node its value is checked against). */
34
+ export interface FigureDataReadyBinding {
35
+ readonly binding: FigureDataBinding;
36
+ readonly node: FigureDataNode;
37
+ /** For an items binding from a list: what the schema has at each element field, by the field's role. */
38
+ readonly itemNodes?: Readonly<Partial<Record<'id' | 'type' | 'place' | 'stack' | 'status', FigureDataNode>>>;
39
+ }
40
+ /** A figure's data interface checked against its asset. Made once per asset, not per frame. */
41
+ export interface FigureDataPlan {
42
+ readonly schema: readonly FigureDataField[];
43
+ readonly ports: readonly FigureStatusPort[];
44
+ readonly bindings: readonly FigureDataReadyBinding[];
45
+ /** The accessors of the fields that may come as JSON text, as the board's accessor writes them (`[]` for a list's elements). */
46
+ readonly jsonFields: readonly string[];
47
+ }
48
+ /** The data interface of an asset, checked, with what the schema has at each binding; null when the figure declares none. */
49
+ export declare function compileFigureDataInterface(asset: FigureAsset): FigureDataPlan | null;
50
+ /** One line of the schema as a person reads it: where, what, and what reads it. */
51
+ export interface FigureDataRow {
52
+ /** The data's path, `[]` for every element of a list. */
53
+ path: string;
54
+ depth: number;
55
+ name: string;
56
+ label?: string;
57
+ node: FigureDataNode;
58
+ json: boolean;
59
+ /** The bindings that read this place, by id. */
60
+ bindings: string[];
61
+ }
62
+ /** The schema as lines, parents before their fields, with the bindings that read each place. */
63
+ export declare function figureDataRows(di: FigureDataInterface): FigureDataRow[];
64
+ /** Data with every field of the schema, each at its default or a value it takes: what a person copies and changes. */
65
+ export declare function figureDataExample(di: FigureDataInterface): Record<string, unknown>;
66
+ /**
67
+ * A schema guessed from one piece of a site's data: each field's kind as it came, a JSON text read as what it holds.
68
+ * Units, ranges and fixed values are not guessed -- a person says them. A field name the accessor cannot read bare is
69
+ * left out.
70
+ */
71
+ export declare function inferFigureDataSchema(sample: unknown): FigureDataField[];
72
+ /** The interface after a part was renamed: a state input the part owned (`<part>.…`) and a status port's part follow it. */
73
+ export declare function renameDataInterface(asset: FigureAsset, from: string, to: string): void;
74
+ /** The interface after a clip was renamed: every map that selects it in a motion group selects it by its new name. */
75
+ export declare function renameDataInterfaceClip(asset: FigureAsset, group: string, from: string, to: string): void;
76
+ /**
77
+ * The interface after a field was renamed: the field, and every accessor that goes through it, including an items
78
+ * binding's element fields. `accessor` names the field by its field names (no list indices); `to` is its new name.
79
+ */
80
+ export declare function renameDataField(di: FigureDataInterface, accessor: string, to: string): FigureDataInterface;
81
+ //# sourceMappingURL=data-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-interface.d.ts","sourceRoot":"","sources":["../src/data-interface.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAsB,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAmB,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAInL,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAkBxC,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAUjF;AAED,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,kBAAkB,EAAE,KAAG,MACqB,CAAA;AAyT7F;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAmCpE;AAID;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IAClI,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,2GAA2G;AAC3G,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,wGAAwG;IACxG,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAC7G;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAA;IACpD,gIAAgI;IAChI,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAED,6HAA6H;AAC7H,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAiCpF;AAID,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,gDAAgD;IAChD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,gGAAgG;AAChG,wBAAgB,cAAc,CAAC,EAAE,EAAE,mBAAmB,GAAG,aAAa,EAAE,CAyBvE;AAWD,sHAAsH;AACtH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElF;AAoCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,EAAE,CAGxE;AAID,4HAA4H;AAC5H,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAQtF;AAED,sHAAsH;AACtH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAUzG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CA+C1G"}