@flighthq/node 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c

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.
@@ -1,4 +1,5 @@
1
1
  export * from './boundsRectangle';
2
+ export * from './enableNodeGuards';
2
3
  export * from './hasAppearance';
3
4
  export * from './hasBlendMode';
4
5
  export * from './hasBoundsRectangle';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
package/dist/contract.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './boundsRectangle';
2
+ export * from './enableNodeGuards';
2
3
  export * from './hasAppearance';
3
4
  export * from './hasBlendMode';
4
5
  export * from './hasBoundsRectangle';
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function areNodeGuardsEnabled(): boolean;
2
+ export declare function disableNodeGuards(): void;
3
+ export declare function enableNodeGuards(): void;
4
+ //# sourceMappingURL=enableNodeGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableNodeGuards.d.ts","sourceRoot":"","sources":["../src/enableNodeGuards.ts"],"names":[],"mappings":"AAMA,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAKD,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
@@ -0,0 +1,29 @@
1
+ import { logOnce } from '@flighthq/log/contract';
2
+ import { LogLevel } from '@flighthq/types/contract';
3
+ import { setReparentNodeGuard } from './hierarchy';
4
+ export function areNodeGuardsEnabled() {
5
+ return nodeGuardsEnabled;
6
+ }
7
+ export function disableNodeGuards() {
8
+ setReparentNodeGuard(null);
9
+ nodeGuardsEnabled = false;
10
+ }
11
+ // Installs opt-in diagnostics for graph operations that decline rather than invent a result. The core
12
+ // modules stay message-free, so an application that omits this one sheds both the text and
13
+ // @flighthq/log.
14
+ export function enableNodeGuards() {
15
+ setReparentNodeGuard(warnOnDeclinedReparent);
16
+ nodeGuardsEnabled = true;
17
+ }
18
+ // `reparentNode` returning false is a complete no-op, so a caller that ignores the return sees a child
19
+ // that simply did not move — no error, no partial state, and nothing to attribute it to. That silence
20
+ // is the point of the design and the reason it needs a guard.
21
+ function warnOnDeclinedReparent(child, newParent) {
22
+ logOnce(`node:reparent-singular-parent:${newParent.name ?? '<unnamed>'}`, LogLevel.Warn, {
23
+ child: child.name ?? '<unnamed>',
24
+ message: 'reparentNode: the new parent has no invertible world matrix, so no local transform could preserve the child’s world transform — nothing was changed. A zero scale on the parent or an ancestor is the usual cause; use addNodeChild to attach without preserving world position.',
25
+ newParent: newParent.name ?? '<unnamed>',
26
+ });
27
+ }
28
+ let nodeGuardsEnabled = false;
29
+ //# sourceMappingURL=enableNodeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableNodeGuards.js","sourceRoot":"","sources":["../src/enableNodeGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,sGAAsG;AACtG,2FAA2F;AAC3F,iBAAiB;AACjB,MAAM,UAAU,gBAAgB;IAC9B,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAC7C,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,uGAAuG;AACvG,sGAAsG;AACtG,8DAA8D;AAC9D,SAAS,sBAAsB,CAAC,KAAW,EAAE,SAAe;IAC1D,OAAO,CAAC,iCAAiC,SAAS,CAAC,IAAI,IAAI,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE;QACvF,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW;QAChC,OAAO,EACL,kRAAkR;QACpR,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;KACzC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,iBAAiB,GAAG,KAAK,CAAC"}
@@ -89,15 +89,22 @@ export declare function removeNodeChildAt<Traits extends object>(target: Node<Tr
89
89
  **/
90
90
  export declare function removeNodeChildren<Traits extends object>(target: Node<Traits>, beginIndex?: number, endIndex?: number): void;
91
91
  /**
92
- * Moves a child to a new parent while preserving its world-space position.
93
- * The child's local transform fields are recomputed so its effective world transform remains
92
+ * Moves a child to a new parent while preserving its world-space position, and reports whether it
93
+ * did. The child's local transform fields are recomputed so its effective world transform remains
94
94
  * unchanged. Its pivot is preserved; rotation and skew may be reparameterized because a general
95
95
  * affine matrix has multiple equivalent decompositions.
96
96
  *
97
- * To reparent without preserving world position (keeping local TRS unchanged),
98
- * use addNodeChild instead.
97
+ * Returns `false`, having changed NOTHING neither the attachment nor the transform — when
98
+ * `newParent`'s world matrix has no inverse (a zero scale anywhere in its ancestry). This is not a
99
+ * computation that went wrong: under a singular parent there EXISTS no local transform that would
100
+ * preserve the child's world transform, so there is no right answer to write and inventing one is
101
+ * the defect. Declining whole is what keeps the caller out of a half-applied state it would have to
102
+ * untangle without being told which half happened.
103
+ *
104
+ * To reparent without preserving world position (keeping local TRS unchanged), use addNodeChild
105
+ * instead — that is also the composition to reach for when a caller wants the attachment regardless.
99
106
  */
100
- export declare function reparentNode<Traits extends object>(child: Transform2DNode<Traits>, newParent: Transform2DNode<Traits>): NodeOf<Traits>;
107
+ export declare function reparentNode<Traits extends object>(child: Transform2DNode<Traits>, newParent: Transform2DNode<Traits>): boolean;
101
108
  /**
102
109
  * Replaces `oldChild` with `newChild` at the same index position in `target`'s children. If
103
110
  * `oldChild` is not a child of `target`, this is a no-op. If `newChild` is already a child of
@@ -109,6 +116,7 @@ export declare function replaceNodeChild<Traits extends object>(target: Node<Tra
109
116
  * This affects the layering of child objects.
110
117
  **/
111
118
  export declare function setNodeChildIndex<Traits extends object>(target: Node<Traits>, child: Node<Traits>, index: number): void;
119
+ export declare function setReparentNodeGuard(guard: ((child: Node, newParent: Node) => void) | null): void;
112
120
  /**
113
121
  * Recursively stops the timeline execution of all MovieClips rooted at this object.
114
122
  **/
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
package/dist/hierarchy.js CHANGED
@@ -286,22 +286,36 @@ export function removeNodeChildren(target, beginIndex = 0, endIndex) {
286
286
  }
287
287
  }
288
288
  /**
289
- * Moves a child to a new parent while preserving its world-space position.
290
- * The child's local transform fields are recomputed so its effective world transform remains
289
+ * Moves a child to a new parent while preserving its world-space position, and reports whether it
290
+ * did. The child's local transform fields are recomputed so its effective world transform remains
291
291
  * unchanged. Its pivot is preserved; rotation and skew may be reparameterized because a general
292
292
  * affine matrix has multiple equivalent decompositions.
293
293
  *
294
- * To reparent without preserving world position (keeping local TRS unchanged),
295
- * use addNodeChild instead.
294
+ * Returns `false`, having changed NOTHING neither the attachment nor the transform — when
295
+ * `newParent`'s world matrix has no inverse (a zero scale anywhere in its ancestry). This is not a
296
+ * computation that went wrong: under a singular parent there EXISTS no local transform that would
297
+ * preserve the child's world transform, so there is no right answer to write and inventing one is
298
+ * the defect. Declining whole is what keeps the caller out of a half-applied state it would have to
299
+ * untangle without being told which half happened.
300
+ *
301
+ * To reparent without preserving world position (keeping local TRS unchanged), use addNodeChild
302
+ * instead — that is also the composition to reach for when a caller wants the attachment regardless.
296
303
  */
297
304
  export function reparentNode(child, newParent) {
298
305
  ensureNodeWorldMatrix(child);
306
+ ensureNodeWorldMatrix(newParent);
299
307
  const oldWorld = acquireMatrix();
300
308
  const localM = acquireMatrix();
301
309
  try {
302
310
  copyMatrix(oldWorld, getNodeWorldMatrix(child));
311
+ // Inverted BEFORE attaching, which is what makes "no mutation at all" achievable rather than a
312
+ // rollback: the parent's world transform does not depend on the child, so this is the same matrix
313
+ // it would be afterwards.
314
+ if (!inverseMatrix(localM, getNodeWorldMatrix(newParent))) {
315
+ reparentNodeGuard?.(child, newParent);
316
+ return false;
317
+ }
303
318
  addNodeChild(newParent, child);
304
- inverseMatrix(localM, getNodeWorldMatrix(newParent));
305
319
  multiplyMatrix(localM, localM, oldWorld);
306
320
  const pivotX = child.pivotX;
307
321
  const pivotY = child.pivotY;
@@ -316,7 +330,7 @@ export function reparentNode(child, newParent) {
316
330
  releaseMatrix(oldWorld);
317
331
  releaseMatrix(localM);
318
332
  }
319
- return child;
333
+ return true;
320
334
  }
321
335
  /**
322
336
  * Replaces `oldChild` with `newChild` at the same index position in `target`'s children. If
@@ -352,6 +366,11 @@ export function setNodeChildIndex(target, child, index) {
352
366
  }
353
367
  }
354
368
  }
369
+ // The seam the guard layer installs into; `null` keeps this module free of message text and of any
370
+ // dependency on @flighthq/log.
371
+ export function setReparentNodeGuard(guard) {
372
+ reparentNodeGuard = guard;
373
+ }
355
374
  /**
356
375
  * Recursively stops the timeline execution of all MovieClips rooted at this object.
357
376
  **/
@@ -409,4 +428,6 @@ function invalidateNodeChildren(runtime) {
409
428
  function throwOutOfBoundsError() {
410
429
  throw new RangeError('The supplied index is out of bounds.');
411
430
  }
431
+ // Module state for the opt-in guard seam above; see enableNodeGuards.
432
+ let reparentNodeGuard = null;
412
433
  //# sourceMappingURL=hierarchy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, addNodeOrderListEntry, applyNodeOrderList, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, clearNodeOrderList, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createNodeOrderList, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, disposeNodeOrderList, forEachNodeOrderListEntry, getNodeOrderListEntrySortKey, hasNodeOrderListEntry, removeNodeOrderListEntry, setNodeOrderListEntry, setNodeOrderListEntryAbove, setNodeOrderListEntryBelow, setNodeOrderListFromNodeChildren, swapNodeOrderListEntries, } from './contract';
1
+ export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, addNodeOrderListEntry, applyNodeOrderList, areNodeGuardsEnabled, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, clearNodeOrderList, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createNodeOrderList, createViewport, disableNodeGuards, disposeNode, enableNodeGuards, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, disposeNodeOrderList, forEachNodeOrderListEntry, getNodeOrderListEntrySortKey, hasNodeOrderListEntry, removeNodeOrderListEntry, setNodeOrderListEntry, setNodeOrderListEntryAbove, setNodeOrderListEntryBelow, setNodeOrderListFromNodeChildren, swapNodeOrderListEntries, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, addNodeOrderListEntry, applyNodeOrderList, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, clearNodeOrderList, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createNodeOrderList, createViewport, disposeNode, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, disposeNodeOrderList, forEachNodeOrderListEntry, getNodeOrderListEntrySortKey, hasNodeOrderListEntry, removeNodeOrderListEntry, setNodeOrderListEntry, setNodeOrderListEntryAbove, setNodeOrderListEntryBelow, setNodeOrderListFromNodeChildren, swapNodeOrderListEntries, } from './contract';
1
+ export { addNodeChild, addNodeChildAt, addNodeChildren, addNodeColorAdjustment, addNodeOrderListEntry, applyNodeOrderList, areNodeGuardsEnabled, computeNodeBoundsRectangle, computeNodeRootLocalBoundsRectangle, computeScene2DFitAlignX, computeScene2DFitAlignY, computeScene2DFitFillScale, computeScene2DFitScale, computeScene2DFitTransform, clearNodeOrderList, containsNodeChild, convertNodeVector2GlobalToLocal, convertNodeVector2LocalToGlobal, convertNodeVector3GlobalToLocal, convertNodeVector3LocalToGlobal, createNode, createNodeOrderList, createViewport, disableNodeGuards, disposeNode, enableNodeGuards, enableNodeSignals, findNode, findNodeByName, forEachNodeAncestor, forEachNodeChild, forEachNodeDescendant, getNodeAncestors, getNodeAppearanceRevision, getNodeChildAt, getNodeChildByName, getNodeChildCount, getNodeChildIndex, getNodeChildren, getNodeColorAdjustments, getNodeCommonAncestor, getNodeDepth, getNodeHeight, getNodeLocalBoundsRectangle, getNodeLocalBoundsRevision, getNodeLocalContentRevision, getNodeLocalMatrix, getNodeLocalMatrix4, getNodeLocalTransformRevision, getNodeNextSibling, getNodeParent, getNodeParentBoundsRectangle, getNodePreviousSibling, getNodeRoot, getNodeSignals, getNodeTransform2D, getNodeTransform3D, getNodeWidth, getNodeWorldBoundsRectangle, getNodeWorldMatrix, getNodeWorldMatrix4, getNodeWorldTransformRevision, getViewportAspect, invalidateNodeAppearance, invalidateNodeLocalTransform, invalidateNodeRender, isNodeAncestorOf, isNodeLocalMatrix4Detached, removeNodeChild, removeNodeChildAt, removeNodeChildren, reparentNode, replaceNodeChild, setNodeChildIndex, setNodeColorAdjustments, setNodeColorAdjustmentsTint, setNodeEnabled, setNodeHeight, setNodeLocalMatrix, setNodeLocalMatrix4, setNodeTransform2D, setNodeTransform3D, setNodeWidth, swapNodeChildren, swapNodeChildrenAt, walkNodeDescendants, disposeNodeOrderList, forEachNodeOrderListEntry, getNodeOrderListEntrySortKey, hasNodeOrderListEntry, removeNodeOrderListEntry, setNodeOrderListEntry, setNodeOrderListEntryAbove, setNodeOrderListEntryBelow, setNodeOrderListFromNodeChildren, swapNodeOrderListEntries, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,mCAAmC,EACnC,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/node",
3
- "version": "0.3.1-next.975.01aea94",
3
+ "version": "0.4.0-edge.1908.751021c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,13 +38,14 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/adjustments": "0.3.1-next.975.01aea94",
42
- "@flighthq/entity": "0.3.1-next.975.01aea94",
43
- "@flighthq/geometry": "0.3.1-next.975.01aea94",
44
- "@flighthq/materials": "0.3.1-next.975.01aea94",
45
- "@flighthq/math": "0.3.1-next.975.01aea94",
46
- "@flighthq/signals": "0.3.1-next.975.01aea94",
47
- "@flighthq/types": "0.3.1-next.975.01aea94"
41
+ "@flighthq/adjustments": "0.4.0-edge.1908.751021c",
42
+ "@flighthq/entity": "0.4.0-edge.1908.751021c",
43
+ "@flighthq/geometry": "0.4.0-edge.1908.751021c",
44
+ "@flighthq/log": "0.4.0-edge.1908.751021c",
45
+ "@flighthq/materials": "0.4.0-edge.1908.751021c",
46
+ "@flighthq/math": "0.4.0-edge.1908.751021c",
47
+ "@flighthq/signals": "0.4.0-edge.1908.751021c",
48
+ "@flighthq/types": "0.4.0-edge.1908.751021c"
48
49
  },
49
50
  "devDependencies": {
50
51
  "typescript": "^5.3.0"
@@ -0,0 +1,78 @@
1
+ import { getEntityRuntime as getRawEntityRuntime } from '@flighthq/entity/contract';
2
+ import { setLogSink } from '@flighthq/log/contract';
3
+ import type { HasTransform2D, HasTransform2DRuntime, LogEntry, Node } from '@flighthq/types/contract';
4
+ import { afterEach, describe, expect, test } from 'vitest';
5
+
6
+ import { areNodeGuardsEnabled, disableNodeGuards, enableNodeGuards } from './enableNodeGuards';
7
+ import { initTransform2DRuntimeTrait, initTransform2DTrait } from './hasTransform2d';
8
+ import { reparentNode } from './hierarchy';
9
+ import { createNode } from './node';
10
+ import { invalidateNodeLocalTransform } from './revision';
11
+
12
+ describe('areNodeGuardsEnabled', () => {
13
+ test('reports whether the guards are installed', () => {
14
+ expect(areNodeGuardsEnabled()).toBe(false);
15
+ enableNodeGuards();
16
+ expect(areNodeGuardsEnabled()).toBe(true);
17
+ disableNodeGuards();
18
+ expect(areNodeGuardsEnabled()).toBe(false);
19
+ });
20
+ });
21
+
22
+ describe('disableNodeGuards', () => {
23
+ test('leaves the core silent again once removed', () => {
24
+ enableNodeGuards();
25
+ disableNodeGuards();
26
+ expect(captureLog(() => reparentNode(transformNode(), collapsedParent('gone')))).toHaveLength(0);
27
+ });
28
+ });
29
+
30
+ describe('enableNodeGuards', () => {
31
+ // `logOnce` keys on the parent name and has no reset, so each triggering test must use a DISTINCT
32
+ // name — a repeat would be deduplicated away and assert nothing while still looking green.
33
+ test('warns, naming both nodes, when a reparent is declined', () => {
34
+ enableNodeGuards();
35
+ const child = transformNode();
36
+ child.name = 'child';
37
+ const entries = captureLog(() => reparentNode(child, collapsedParent('collapsed-warns')));
38
+ expect(entries).toHaveLength(1);
39
+ expect(entries[0].data).toMatchObject({ child: 'child', newParent: 'collapsed-warns' });
40
+ });
41
+
42
+ test('stays silent when the reparent succeeds', () => {
43
+ enableNodeGuards();
44
+ const healthy = transformNode();
45
+ invalidateNodeLocalTransform(healthy);
46
+ expect(captureLog(() => reparentNode(transformNode(), healthy))).toHaveLength(0);
47
+ });
48
+ });
49
+
50
+ afterEach(() => {
51
+ disableNodeGuards();
52
+ });
53
+
54
+ function captureLog(run: () => void): LogEntry[] {
55
+ const entries: LogEntry[] = [];
56
+ setLogSink((entry) => entries.push(entry));
57
+ try {
58
+ run();
59
+ } finally {
60
+ setLogSink(null);
61
+ }
62
+ return entries;
63
+ }
64
+
65
+ function collapsedParent(name: string): Node<HasTransform2D> & HasTransform2D {
66
+ const parent = transformNode();
67
+ parent.name = name;
68
+ parent.scaleX = 0;
69
+ invalidateNodeLocalTransform(parent);
70
+ return parent;
71
+ }
72
+
73
+ function transformNode(): Node<HasTransform2D> & HasTransform2D {
74
+ const node = createNode('NodeGuardTest') as Node<HasTransform2D> & HasTransform2D;
75
+ initTransform2DTrait(node);
76
+ initTransform2DRuntimeTrait(getRawEntityRuntime(node) as HasTransform2DRuntime);
77
+ return node;
78
+ }
@@ -24,6 +24,7 @@ import {
24
24
  removeNodeChildAt,
25
25
  removeNodeChildren,
26
26
  reparentNode,
27
+ setReparentNodeGuard,
27
28
  replaceNodeChild,
28
29
  setNodeChildIndex,
29
30
  swapNodeChildren,
@@ -721,6 +722,50 @@ describe('reparentNode', () => {
721
722
  return node;
722
723
  }
723
724
 
725
+ // The ruled contract: under a singular new parent, NO local transform exists that would preserve the
726
+ // child's world transform, so the function declines whole rather than inventing one. These assert
727
+ // BOTH halves stay unchanged — a partial success is the state the ruling exists to prevent.
728
+ it('declines whole when the new parent has no invertible world matrix', () => {
729
+ const parentA = createTransformNode();
730
+ const child = createTransformNode();
731
+ child.x = 20;
732
+ child.y = 10;
733
+ invalidateNodeLocalTransform(child);
734
+ addNodeChild(parentA, child);
735
+
736
+ const collapsed = createTransformNode();
737
+ collapsed.scaleX = 0;
738
+ invalidateNodeLocalTransform(collapsed);
739
+
740
+ expect(reparentNode(child, collapsed)).toBe(false);
741
+ // Neither half happened: the attachment is untouched...
742
+ expect(getNodeParent(child)).toBe(parentA);
743
+ expect(getNodeChildCount(collapsed)).toBe(0);
744
+ // ...and so is the transform, with no NaN written into it.
745
+ expect(child.x).toBe(20);
746
+ expect(child.y).toBe(10);
747
+ });
748
+
749
+ it('reports true and still preserves world position for an invertible parent', () => {
750
+ const parentA = createTransformNode();
751
+ const child = createTransformNode();
752
+ child.x = 20;
753
+ child.y = 10;
754
+ invalidateNodeLocalTransform(child);
755
+ addNodeChild(parentA, child);
756
+ const before = cloneMatrix(getNodeWorldMatrix(child));
757
+
758
+ const parentB = createTransformNode();
759
+ parentB.x = 200;
760
+ invalidateNodeLocalTransform(parentB);
761
+
762
+ expect(reparentNode(child, parentB)).toBe(true);
763
+ expect(getNodeParent(child)).toBe(parentB);
764
+ const after = getNodeWorldMatrix(child);
765
+ expect(after.tx).toBeCloseTo(before.tx, 6);
766
+ expect(after.ty).toBeCloseTo(before.ty, 6);
767
+ });
768
+
724
769
  it('preserves world position after reparenting', () => {
725
770
  const parentA = createTransformNode();
726
771
  parentA.x = 100;
@@ -1080,6 +1125,37 @@ describe('setNodeChildIndex', () => {
1080
1125
  });
1081
1126
  });
1082
1127
 
1128
+ describe('setReparentNodeGuard', () => {
1129
+ type TransformNode = Node<HasTransform2D> & HasTransform2D;
1130
+ function createTransformNode(): TransformNode {
1131
+ const node = createNode('TransformTest') as TransformNode;
1132
+ initTransform2DTrait(node);
1133
+ initTransform2DRuntimeTrait(getRawEntityRuntime(node) as HasTransform2DRuntime);
1134
+ return node;
1135
+ }
1136
+
1137
+ it('is notified on the decline and never on success', () => {
1138
+ const seen: string[] = [];
1139
+ setReparentNodeGuard((_child, newParent) => seen.push(newParent.name ?? '<unnamed>'));
1140
+ try {
1141
+ const child = createTransformNode();
1142
+ const collapsed = createTransformNode();
1143
+ collapsed.name = 'collapsed';
1144
+ collapsed.scaleX = 0;
1145
+ invalidateNodeLocalTransform(collapsed);
1146
+ const healthy = createTransformNode();
1147
+ healthy.name = 'healthy';
1148
+ invalidateNodeLocalTransform(healthy);
1149
+
1150
+ reparentNode(child, collapsed);
1151
+ reparentNode(child, healthy);
1152
+ expect(seen).toEqual(['collapsed']);
1153
+ } finally {
1154
+ setReparentNodeGuard(null);
1155
+ }
1156
+ });
1157
+ });
1158
+
1083
1159
  describe('swapNodeChildren', () => {
1084
1160
  it('does not advance the revision when both arguments are the same child', () => {
1085
1161
  addNodeChild(container, childA);