@hatiolab/figure-model 0.1.42 → 0.1.44

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.
@@ -0,0 +1,71 @@
1
+ import type { V3Asset } from './v3-asset-types.ts';
2
+ type Axis = 'x' | 'y' | 'z';
3
+ /** The instance-size inputs, in mm. */
4
+ export declare const V3_INSTANCE_SIZE_INPUTS: Readonly<Record<Axis, string>>;
5
+ /**
6
+ * The default range: from 1 mm to ten times the authored size. The converter's range since 2026-09-22; the
7
+ * modeller prefills the same. Changing it changes every conversion, which then reports it as a range change.
8
+ */
9
+ export declare const V3_INSTANCE_SIZE_DEFAULT: Readonly<{
10
+ min: 1;
11
+ times: 10;
12
+ }>;
13
+ /**
14
+ * The step above a spanned length's room at which the evaluated length is still positive in double precision at the
15
+ * sizes figures have (mm, up to 10⁵). A numerical stability bound, not a minimum part size (designer's ruling 2).
16
+ */
17
+ export declare const V3_SIZE_POSITIVE_STEP = 0.000001;
18
+ export type V3SizeRange = Record<Axis, {
19
+ min: number;
20
+ max: number;
21
+ }>;
22
+ /** One edge a figure's size cannot cross, and on which axis. `part` names who sets it, when known. */
23
+ export type V3SizeLimit = {
24
+ axis: Axis;
25
+ part?: string;
26
+ } & (
27
+ /** A length that is `size − room`: positive only above the room. */
28
+ {
29
+ kind: 'span';
30
+ room: number;
31
+ }
32
+ /** A spreading repeat: at least one pitch (the V2 reading), at most `cap` before the copy limit. */
33
+ | {
34
+ kind: 'repeat';
35
+ pitch: number;
36
+ cap: number;
37
+ }
38
+ /** Anything else that fails above a size, measured. */
39
+ | {
40
+ kind: 'cap';
41
+ max: number;
42
+ });
43
+ /** A bound the fold moved, with the range as it stood right after — what a report needs to say it. */
44
+ export interface V3SizeRangeMove {
45
+ limit: V3SizeLimit;
46
+ bound: 'min' | 'max';
47
+ range: {
48
+ min: number;
49
+ max: number;
50
+ };
51
+ }
52
+ /** The default range around an authored size. */
53
+ export declare function defaultInstanceSizeRange(size: Record<Axis, number>): V3SizeRange;
54
+ /**
55
+ * The range left once every limit is applied, in the order given, and each bound that moved. A repeat's floor at
56
+ * one pitch is applied without a move: it is the V2 reading of "at least one copy", not a narrowing the V2 figure
57
+ * did not already have.
58
+ */
59
+ export declare function foldInstanceSizeRange(start: V3SizeRange, limits: readonly V3SizeLimit[]): {
60
+ range: V3SizeRange;
61
+ moves: V3SizeRangeMove[];
62
+ };
63
+ /**
64
+ * The edges of this asset's declared instance size, measured with the kernel: for each axis, the size below which
65
+ * and above which the graph no longer evaluates, the other axes at their authored size and every state at its
66
+ * default. Only searched when the end of `within` fails, so a figure that holds over its range costs six
67
+ * evaluations. `part` is read from the node the kernel refused.
68
+ */
69
+ export declare function v3InstanceSizeLimitsOf(asset: V3Asset, within: V3SizeRange): V3SizeLimit[];
70
+ export {};
71
+ //# sourceMappingURL=v3-instance-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-instance-size.d.ts","sourceRoot":"","sources":["../src/v3-instance-size.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAoBlD,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAG3B,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4D,CAAA;AAE/H;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;EAAuC,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAO,CAAA;AAEzC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEpE,sGAAsG;AACtG,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;AACxD,oEAAoE;AAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAChC,oGAAoG;GAClG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAChD,uDAAuD;GACrD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAC/B,CAAA;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,KAAK,GAAG,KAAK,CAAA;IACpB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,WAAW,CAIhF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CAwB1I;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAyDzF"}
@@ -0,0 +1,122 @@
1
+ import { compileV3Graph } from "./v3-graph.js";
2
+ const AXES = ['x', 'y', 'z'];
3
+ /** The instance-size inputs, in mm. */
4
+ export const V3_INSTANCE_SIZE_INPUTS = Object.freeze({ x: 'size.x', y: 'size.y', z: 'size.z' });
5
+ /**
6
+ * The default range: from 1 mm to ten times the authored size. The converter's range since 2026-09-22; the
7
+ * modeller prefills the same. Changing it changes every conversion, which then reports it as a range change.
8
+ */
9
+ export const V3_INSTANCE_SIZE_DEFAULT = Object.freeze({ min: 1, times: 10 });
10
+ /**
11
+ * The step above a spanned length's room at which the evaluated length is still positive in double precision at the
12
+ * sizes figures have (mm, up to 10⁵). A numerical stability bound, not a minimum part size (designer's ruling 2).
13
+ */
14
+ export const V3_SIZE_POSITIVE_STEP = 1e-6;
15
+ /** The default range around an authored size. */
16
+ export function defaultInstanceSizeRange(size) {
17
+ const out = {};
18
+ for (const a of AXES)
19
+ out[a] = { min: V3_INSTANCE_SIZE_DEFAULT.min, max: size[a] * V3_INSTANCE_SIZE_DEFAULT.times };
20
+ return out;
21
+ }
22
+ /**
23
+ * The range left once every limit is applied, in the order given, and each bound that moved. A repeat's floor at
24
+ * one pitch is applied without a move: it is the V2 reading of "at least one copy", not a narrowing the V2 figure
25
+ * did not already have.
26
+ */
27
+ export function foldInstanceSizeRange(start, limits) {
28
+ const range = {};
29
+ for (const a of AXES)
30
+ range[a] = { ...start[a] };
31
+ const moves = [];
32
+ for (const limit of limits) {
33
+ const r = range[limit.axis];
34
+ if (limit.kind === 'span') {
35
+ const floor = limit.room + V3_SIZE_POSITIVE_STEP;
36
+ if (floor > r.min) {
37
+ r.min = floor;
38
+ moves.push({ limit, bound: 'min', range: { ...r } });
39
+ }
40
+ }
41
+ else if (limit.kind === 'repeat') {
42
+ r.min = Math.max(r.min, limit.pitch);
43
+ if (r.max > limit.cap) {
44
+ r.max = limit.cap;
45
+ moves.push({ limit, bound: 'max', range: { ...r } });
46
+ }
47
+ }
48
+ else if (r.max > limit.max) {
49
+ r.max = limit.max;
50
+ moves.push({ limit, bound: 'max', range: { ...r } });
51
+ }
52
+ }
53
+ return { range, moves };
54
+ }
55
+ /**
56
+ * The edges of this asset's declared instance size, measured with the kernel: for each axis, the size below which
57
+ * and above which the graph no longer evaluates, the other axes at their authored size and every state at its
58
+ * default. Only searched when the end of `within` fails, so a figure that holds over its range costs six
59
+ * evaluations. `part` is read from the node the kernel refused.
60
+ */
61
+ export function v3InstanceSizeLimitsOf(asset, within) {
62
+ const model = structuredClone(asset.document.model);
63
+ const ids = new Set(Object.values(V3_INSTANCE_SIZE_INPUTS));
64
+ for (const input of model.inputs)
65
+ if (ids.has(input.id))
66
+ Object.assign(input, { min: Number.MIN_VALUE, max: Number.MAX_VALUE });
67
+ const graph = compileV3Graph(model);
68
+ const base = { ...asset.designInputs, ...asset.stateDefaults };
69
+ const limits = [];
70
+ for (const axis of AXES) {
71
+ const id = V3_INSTANCE_SIZE_INPUTS[axis];
72
+ const authored = asset.designInputs[id];
73
+ if (typeof authored !== 'number')
74
+ continue;
75
+ const refusal = (s) => {
76
+ try {
77
+ graph.evaluate({ ...base, [id]: s });
78
+ return null;
79
+ }
80
+ catch (e) {
81
+ return String(e.path ?? '');
82
+ }
83
+ };
84
+ const partOf = (path) => (path ? path.split('.')[0] || undefined : undefined);
85
+ const low = refusal(within[axis].min);
86
+ if (low !== null) {
87
+ let lo = Math.min(within[axis].min, authored);
88
+ let hi = authored;
89
+ let at = low;
90
+ for (let i = 0; i < 80 && hi - lo > V3_SIZE_POSITIVE_STEP / 4; i++) {
91
+ const mid = (lo + hi) / 2;
92
+ const r = refusal(mid);
93
+ if (r === null)
94
+ hi = mid;
95
+ else {
96
+ lo = mid;
97
+ at = r;
98
+ }
99
+ }
100
+ limits.push({ axis, kind: 'span', room: lo, part: partOf(at) });
101
+ }
102
+ const high = refusal(within[axis].max);
103
+ if (high !== null) {
104
+ let lo = authored;
105
+ let hi = Math.max(within[axis].max, authored);
106
+ let at = high;
107
+ for (let i = 0; i < 80 && hi - lo > V3_SIZE_POSITIVE_STEP / 4; i++) {
108
+ const mid = (lo + hi) / 2;
109
+ const r = refusal(mid);
110
+ if (r === null)
111
+ lo = mid;
112
+ else {
113
+ hi = mid;
114
+ at = r;
115
+ }
116
+ }
117
+ limits.push({ axis, kind: 'cap', max: lo, part: partOf(at) });
118
+ }
119
+ }
120
+ return limits;
121
+ }
122
+ //# sourceMappingURL=v3-instance-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-instance-size.js","sourceRoot":"","sources":["../src/v3-instance-size.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
5
5
  * and by `v3-kernel-version.test.ts`.
6
6
  */
7
- export declare const V3_KERNEL_VERSION = "0.1.42";
7
+ export declare const V3_KERNEL_VERSION = "0.1.44";
8
8
  //# sourceMappingURL=v3-kernel-version.d.ts.map
@@ -7,5 +7,5 @@
7
7
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
8
8
  * and by `v3-kernel-version.test.ts`.
9
9
  */
10
- export const V3_KERNEL_VERSION = '0.1.42';
10
+ export const V3_KERNEL_VERSION = '0.1.44';
11
11
  //# sourceMappingURL=v3-kernel-version.js.map
@@ -46,6 +46,16 @@ export type V3PartEdit =
46
46
  kind: 'move-part';
47
47
  target: string;
48
48
  to: number;
49
+ }
50
+ /**
51
+ * The part's name, and with it the name of every value it owns (`<part>.…`), everywhere they are referred to — so
52
+ * a part fastened to it, or a size following it, keeps doing so. A name already used, or a part whose values another
53
+ * part's name falls among, is refused rather than half renamed.
54
+ */
55
+ | {
56
+ kind: 'rename-part';
57
+ target: string;
58
+ name: string;
49
59
  };
50
60
  /** Pure, validated structural edit. References are never silently retargeted or cascaded. */
51
61
  export declare function editV3Part(source: V3Asset, edit: V3PartEdit): V3Asset;
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAI9D,MAAM,MAAM,UAAU;AACpB;;;;GAIG;AACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAClG,oHAAoH;GAClH;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzC,gIAAgI;GAC9H;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAC/C,iHAAiH;GAC/G;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5E;;;;GAIG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC5C,6GAA6G;GAC3G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAwHrE"}
1
+ {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAI9D,MAAM,MAAM,UAAU;AACpB;;;;GAIG;AACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAClG,oHAAoH;GAClH;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzC,gIAAgI;GAC9H;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAC/C,iHAAiH;GAC/G;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5E;;;;GAIG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC5C,6GAA6G;GAC3G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACnD;;;;GAIG;GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CA6HrE"}
@@ -51,6 +51,11 @@ export function editV3Part(source, edit) {
51
51
  compileV3Asset(asset);
52
52
  return asset;
53
53
  }
54
+ if (edit.kind === 'rename-part') {
55
+ renamePart(asset, edit.target, typeof edit.name === 'string' ? edit.name.trim() : '');
56
+ compileV3Asset(asset);
57
+ return asset;
58
+ }
54
59
  if (edit.kind === 'move-part') {
55
60
  if (!Number.isInteger(edit.to) || edit.to < 0 || edit.to >= asset.appearance.length)
56
61
  throw new V3ContractError('EDIT_TARGET', edit.target, `to must be a position in the list, 0 to ${asset.appearance.length - 1}`);
@@ -185,4 +190,43 @@ function duplicatePart(asset, target) {
185
190
  asset.appearance.splice(asset.appearance.indexOf(look) + 1, 0, renameDeep(structuredClone(look)));
186
191
  return copy;
187
192
  }
193
+ function renamePart(asset, target, name) {
194
+ const model = asset.document.model;
195
+ const placement = model.nodes.find(n => n.id === target);
196
+ if (!placement || placement.op !== 'place@1')
197
+ throw new V3ContractError('EDIT_TARGET', target, 'rename an explicit placement');
198
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name))
199
+ throw new V3ContractError('PART_ID', target, 'a part name starts with a letter and uses letters, digits, - and _');
200
+ if (name === target)
201
+ return;
202
+ const within = (id, root) => id === root || id.startsWith(`${root}.`);
203
+ const ids = [...model.nodes.map(n => n.id), ...model.inputs.map(i => i.id), ...model.constants.map(c => c.id), ...model.nodes.flatMap(n => Object.values(n.outputs))];
204
+ if (ids.some(id => within(id, name)))
205
+ throw new V3ContractError('PART_ID', name, 'already used in this figure');
206
+ /* Another placement named inside this part's namespace (`body.lid`) would be swept along with it. */
207
+ const nested = model.nodes.find(n => n.op === 'place@1' && n.id !== target && n.id.startsWith(`${target}.`));
208
+ if (nested)
209
+ throw new V3ContractError('PART_ID', target, `${nested.id} is named under it; rename that part first`);
210
+ const rename = (id) => (id === target ? name : id.startsWith(`${target}.`) ? name + id.slice(target.length) : id);
211
+ const values = (value) => typeof value === 'string'
212
+ ? rename(value)
213
+ : Array.isArray(value)
214
+ ? value.map(values)
215
+ : value && typeof value === 'object'
216
+ ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, values(v)]))
217
+ : value;
218
+ /* Maps keyed by id: the keys are names too. */
219
+ const keyed = (map) => map && Object.fromEntries(Object.entries(map).map(([k, v]) => [rename(k), values(v)]));
220
+ const out = asset;
221
+ out.document = values(asset.document);
222
+ out.appearance = values(asset.appearance);
223
+ if (asset.occupancy)
224
+ out.occupancy = values(asset.occupancy);
225
+ if (asset.drivers)
226
+ out.drivers = values(asset.drivers);
227
+ out.designInputs = keyed(asset.designInputs);
228
+ out.stateDefaults = keyed(asset.stateDefaults);
229
+ if (asset.stateInputs)
230
+ out.stateInputs = keyed(asset.stateInputs);
231
+ }
188
232
  //# sourceMappingURL=v3-part-edit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { V3Asset } from './v3-asset-types.ts';
2
+ export type V3ContractChangeCode = 'placement-changed' | 'size-inputs-gone' | 'size-inputs-added' | 'size-range-narrowed' | 'authored-size-changed' | 'state-input-gone' | 'state-unit-changed' | 'state-range-narrowed' | 'state-input-added' | 'clip-gone' | 'clip-added' | 'binding-gone' | 'binding-role-changed' | 'binding-capacity-reduced' | 'binding-accepts-narrowed' | 'binding-added' | 'capability-gone' | 'capability-added';
3
+ export interface V3ContractChange {
4
+ code: V3ContractChangeCode;
5
+ /** True refuses the release. */
6
+ blocking: boolean;
7
+ /** The input id, clip name, binding id or capability name. Absent for the figure as a whole. */
8
+ subject?: string;
9
+ /** What was measured, for the sentence the service makes. */
10
+ values: Record<string, string | number>;
11
+ /** English, for logs and as the fallback sentence. */
12
+ detail: string;
13
+ }
14
+ /**
15
+ * The previous release against this one. Both must be assets that parse; the caller checks the new one first and
16
+ * the previous one passed when it was released. An empty list means placed instances are untouched.
17
+ */
18
+ export declare function v3ContractChanges(before: V3Asset, after: V3Asset): V3ContractChange[];
19
+ //# sourceMappingURL=v3-release-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-release-contract.d.ts","sourceRoot":"","sources":["../src/v3-release-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAwB,MAAM,qBAAqB,CAAA;AAgCxE,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,sBAAsB,GACtB,0BAA0B,GAC1B,0BAA0B,GAC1B,eAAe,GACf,iBAAiB,GACjB,kBAAkB,CAAA;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;CACf;AAuBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAqJrF"}
@@ -0,0 +1,179 @@
1
+ import { V3_SIZE_INPUTS } from "./v3-from-v2.js";
2
+ const stateInputs = (asset) => new Map(asset.document.model.inputs.filter(i => i.role === 'state').map(i => [i.id, i]));
3
+ const sizeInputs = (asset) => {
4
+ const ids = Object.values(V3_SIZE_INPUTS);
5
+ const found = asset.document.model.inputs.filter(i => ids.includes(i.id));
6
+ const allStored = ids.every(id => typeof asset.designInputs[id] === 'number');
7
+ return found.length === ids.length && allStored ? new Map(found.map(i => [i.id, i])) : null;
8
+ };
9
+ const clipsOf = (asset) => new Set((asset.drivers ?? []).map(d => d.clip));
10
+ const bindingsOf = (asset) => new Map(asset.document.capabilities.bindings.map(b => [b.id, b]));
11
+ const capabilitiesOf = (asset) => new Set(asset.document.capabilities.names ?? []);
12
+ /** Whether the new range leaves out part of the old one, on either side. */
13
+ function narrowed(was, now) {
14
+ return now.min > was.min || now.max < was.max;
15
+ }
16
+ const range = (i) => `${i.min}…${i.max} ${i.unit}`;
17
+ /**
18
+ * The previous release against this one. Both must be assets that parse; the caller checks the new one first and
19
+ * the previous one passed when it was released. An empty list means placed instances are untouched.
20
+ */
21
+ export function v3ContractChanges(before, after) {
22
+ const changes = [];
23
+ const push = (change) => changes.push(change);
24
+ /* ── placement ─────────────────────────────────────────────────────────── */
25
+ const wasPlacement = before.occupancy?.placement ?? 'floor';
26
+ const nowPlacement = after.occupancy?.placement ?? 'floor';
27
+ if (wasPlacement !== nowPlacement) {
28
+ push({
29
+ code: 'placement-changed',
30
+ blocking: true,
31
+ values: { before: wasPlacement, after: nowPlacement },
32
+ detail: `placement changed: ${wasPlacement} → ${nowPlacement}`
33
+ });
34
+ }
35
+ /* ── instance size ─────────────────────────────────────────────────────── */
36
+ const wasSize = sizeInputs(before);
37
+ const nowSize = sizeInputs(after);
38
+ if (wasSize && !nowSize) {
39
+ push({
40
+ code: 'size-inputs-gone',
41
+ blocking: true,
42
+ values: {},
43
+ detail: 'the figure no longer takes its size from the instance'
44
+ });
45
+ }
46
+ else if (!wasSize && nowSize) {
47
+ push({ code: 'size-inputs-added', blocking: false, values: {}, detail: 'the figure now takes its size from the instance' });
48
+ }
49
+ else if (wasSize && nowSize) {
50
+ for (const [id, was] of wasSize) {
51
+ const now = nowSize.get(id);
52
+ if (narrowed(was, now)) {
53
+ push({
54
+ code: 'size-range-narrowed',
55
+ blocking: false,
56
+ subject: id,
57
+ values: { before: range(was), after: range(now) },
58
+ detail: `${id} range narrowed: ${range(was)} → ${range(now)}`
59
+ });
60
+ }
61
+ }
62
+ const authored = (a) => Object.values(V3_SIZE_INPUTS).map(id => a.designInputs[id]);
63
+ const [bx, by, bz] = authored(before);
64
+ const [ax, ay, az] = authored(after);
65
+ if (bx !== ax || by !== ay || bz !== az) {
66
+ push({
67
+ code: 'authored-size-changed',
68
+ blocking: false,
69
+ values: { before: `${bx}×${by}×${bz}`, after: `${ax}×${ay}×${az}` },
70
+ detail: `authored size changed: ${bx}×${by}×${bz} → ${ax}×${ay}×${az}`
71
+ });
72
+ }
73
+ }
74
+ /* ── state inputs ──────────────────────────────────────────────────────── */
75
+ const wasState = stateInputs(before);
76
+ const nowState = stateInputs(after);
77
+ for (const [id, was] of wasState) {
78
+ const now = nowState.get(id);
79
+ if (!now) {
80
+ push({ code: 'state-input-gone', blocking: true, subject: id, values: { id }, detail: `state input ${id} is gone` });
81
+ continue;
82
+ }
83
+ if (was.unit !== now.unit) {
84
+ push({
85
+ code: 'state-unit-changed',
86
+ blocking: true,
87
+ subject: id,
88
+ values: { id, before: was.unit, after: now.unit },
89
+ detail: `state input ${id} unit changed: ${was.unit} → ${now.unit}`
90
+ });
91
+ }
92
+ else if (narrowed(was, now)) {
93
+ push({
94
+ code: 'state-range-narrowed',
95
+ blocking: false,
96
+ subject: id,
97
+ values: { id, before: range(was), after: range(now) },
98
+ detail: `state input ${id} range narrowed: ${range(was)} → ${range(now)}`
99
+ });
100
+ }
101
+ }
102
+ for (const id of nowState.keys()) {
103
+ if (!wasState.has(id))
104
+ push({ code: 'state-input-added', blocking: false, subject: id, values: { id }, detail: `state input ${id} is new` });
105
+ }
106
+ /* ── clips ─────────────────────────────────────────────────────────────── */
107
+ const wasClips = clipsOf(before);
108
+ const nowClips = clipsOf(after);
109
+ for (const clip of wasClips) {
110
+ if (!nowClips.has(clip))
111
+ push({ code: 'clip-gone', blocking: true, subject: clip, values: { clip }, detail: `clip ${clip} is gone` });
112
+ }
113
+ for (const clip of nowClips) {
114
+ if (!wasClips.has(clip))
115
+ push({ code: 'clip-added', blocking: false, subject: clip, values: { clip }, detail: `clip ${clip} is new` });
116
+ }
117
+ /* ── bindings ──────────────────────────────────────────────────────────── */
118
+ const wasBindings = bindingsOf(before);
119
+ const nowBindings = bindingsOf(after);
120
+ for (const [id, was] of wasBindings) {
121
+ const now = nowBindings.get(id);
122
+ const label = was.label || id;
123
+ if (!now) {
124
+ push({ code: 'binding-gone', blocking: true, subject: id, values: { binding: label }, detail: `binding ${id} is gone` });
125
+ continue;
126
+ }
127
+ if (was.role !== now.role) {
128
+ push({
129
+ code: 'binding-role-changed',
130
+ blocking: true,
131
+ subject: id,
132
+ values: { binding: label, before: was.role, after: now.role },
133
+ detail: `binding ${id} role changed: ${was.role} → ${now.role}`
134
+ });
135
+ }
136
+ if (now.capacity < was.capacity) {
137
+ push({
138
+ code: 'binding-capacity-reduced',
139
+ blocking: true,
140
+ subject: id,
141
+ values: { binding: label, before: was.capacity, after: now.capacity },
142
+ detail: `binding ${id} capacity reduced: ${was.capacity} → ${now.capacity}`
143
+ });
144
+ }
145
+ const dropped = acceptsDropped(was, now);
146
+ if (dropped.length) {
147
+ push({
148
+ code: 'binding-accepts-narrowed',
149
+ blocking: false,
150
+ subject: id,
151
+ values: { binding: label, types: dropped.join(', ') },
152
+ detail: `binding ${id} no longer accepts ${dropped.join(', ')}`
153
+ });
154
+ }
155
+ }
156
+ for (const [id, now] of nowBindings) {
157
+ if (!wasBindings.has(id))
158
+ push({ code: 'binding-added', blocking: false, subject: id, values: { binding: now.label || id }, detail: `binding ${id} is new` });
159
+ }
160
+ /* ── capability names ──────────────────────────────────────────────────── */
161
+ const wasNames = capabilitiesOf(before);
162
+ const nowNames = capabilitiesOf(after);
163
+ for (const name of wasNames) {
164
+ if (!nowNames.has(name))
165
+ push({ code: 'capability-gone', blocking: true, subject: name, values: { name }, detail: `capability ${name} is gone` });
166
+ }
167
+ for (const name of nowNames) {
168
+ if (!wasNames.has(name))
169
+ push({ code: 'capability-added', blocking: false, subject: name, values: { name }, detail: `capability ${name} is new` });
170
+ }
171
+ return changes;
172
+ }
173
+ /** Types a binding accepted before and does not now. An empty list afterwards means "anything", which is wider. */
174
+ function acceptsDropped(was, now) {
175
+ if (!was.accepts.length || !now.accepts.length)
176
+ return [];
177
+ return was.accepts.filter(type => !now.accepts.includes(type));
178
+ }
179
+ //# sourceMappingURL=v3-release-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-release-contract.js","sourceRoot":"","sources":["../src/v3-release-contract.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hatiolab/figure-model",
3
- "version": "0.1.42",
3
+ "version": "0.1.44",
4
4
  "description": "Figure 저작 결과의 정본 형식과 검증 — 재질별로 병합되고 이름이 붙은 부품 그래프. 3D 로 저작한 형상 하나가 씬 컴포넌트로 서는 데 필요한 것을 담는다.",
5
5
  "keywords": [
6
6
  "figure",