vestjs-runtime 1.1.0 → 1.2.1

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 (43) hide show
  1. package/dist/cjs/IsolateSerializer.development.js +114 -26
  2. package/dist/cjs/IsolateSerializer.development.js.map +1 -1
  3. package/dist/cjs/IsolateSerializer.production.js +1 -1
  4. package/dist/cjs/IsolateSerializer.production.js.map +1 -1
  5. package/dist/cjs/test-utils.development.js +22 -6
  6. package/dist/cjs/test-utils.development.js.map +1 -1
  7. package/dist/cjs/test-utils.production.js +1 -1
  8. package/dist/cjs/test-utils.production.js.map +1 -1
  9. package/dist/cjs/vestjs-runtime.development.js +114 -27
  10. package/dist/cjs/vestjs-runtime.development.js.map +1 -1
  11. package/dist/cjs/vestjs-runtime.production.js +1 -1
  12. package/dist/cjs/vestjs-runtime.production.js.map +1 -1
  13. package/dist/es/IsolateSerializer.development.js +115 -28
  14. package/dist/es/IsolateSerializer.development.js.map +1 -1
  15. package/dist/es/IsolateSerializer.production.js +1 -1
  16. package/dist/es/IsolateSerializer.production.js.map +1 -1
  17. package/dist/es/test-utils.development.js +22 -6
  18. package/dist/es/test-utils.development.js.map +1 -1
  19. package/dist/es/test-utils.production.js +1 -1
  20. package/dist/es/test-utils.production.js.map +1 -1
  21. package/dist/es/vestjs-runtime.development.js +115 -28
  22. package/dist/es/vestjs-runtime.development.js.map +1 -1
  23. package/dist/es/vestjs-runtime.production.js +1 -1
  24. package/dist/es/vestjs-runtime.production.js.map +1 -1
  25. package/dist/umd/IsolateSerializer.development.js +117 -30
  26. package/dist/umd/IsolateSerializer.development.js.map +1 -1
  27. package/dist/umd/IsolateSerializer.production.js +1 -1
  28. package/dist/umd/IsolateSerializer.production.js.map +1 -1
  29. package/dist/umd/test-utils.development.js +24 -10
  30. package/dist/umd/test-utils.development.js.map +1 -1
  31. package/dist/umd/test-utils.production.js +1 -1
  32. package/dist/umd/test-utils.production.js.map +1 -1
  33. package/dist/umd/vestjs-runtime.development.js +117 -31
  34. package/dist/umd/vestjs-runtime.development.js.map +1 -1
  35. package/dist/umd/vestjs-runtime.production.js +1 -1
  36. package/dist/umd/vestjs-runtime.production.js.map +1 -1
  37. package/package.json +3 -3
  38. package/types/IsolateSerializer.d.ts +22 -7
  39. package/types/IsolateSerializer.d.ts.map +1 -1
  40. package/types/test-utils.d.ts +5 -1
  41. package/types/test-utils.d.ts.map +1 -1
  42. package/types/vestjs-runtime.d.ts +51 -21
  43. package/types/vestjs-runtime.d.ts.map +1 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vest-utils'), require('context')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'vest-utils', 'context'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["vestjs-runtime"] = {}, global["vest-utils"], global.context));
5
- })(this, (function (exports, vestUtils, context) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vest-utils'), require('context'), require('lodash')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'vest-utils', 'context', 'lodash'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["vestjs-runtime"] = {}, global["vest-utils"], global.context, global.lodash));
5
+ })(this, (function (exports, vestUtils, context, lodash) { 'use strict';
6
6
 
7
7
  const RuntimeEvents = {
8
8
  ISOLATE_ENTER: 'ISOLATE_ENTER',
@@ -131,6 +131,12 @@
131
131
  static setData(isolate, data) {
132
132
  isolate.data = data;
133
133
  }
134
+ static abort(isolate, reason) {
135
+ if (vestUtils.isNullish(isolate.abortController)) {
136
+ return;
137
+ }
138
+ isolate.abortController.abort(reason);
139
+ }
134
140
  }
135
141
 
136
142
  const PersistedContext = context.createCascade((stateRef, parentContext) => {
@@ -309,16 +315,19 @@
309
315
  IsolateKeys["Data"] = "data";
310
316
  IsolateKeys["AllowReorder"] = "allowReorder";
311
317
  IsolateKeys["Status"] = "status";
318
+ IsolateKeys["AbortController"] = "abortController";
319
+ IsolateKeys["Children"] = "children";
312
320
  })(IsolateKeys || (IsolateKeys = {}));
313
321
  var MinifiedKeys;
314
322
  (function (MinifiedKeys) {
315
323
  MinifiedKeys["Type"] = "$";
316
- MinifiedKeys["Keys"] = "K";
317
- MinifiedKeys["Key"] = "k";
324
+ MinifiedKeys["Keys"] = "Ks";
325
+ MinifiedKeys["Key"] = "ky";
318
326
  MinifiedKeys["Parent"] = "P";
319
327
  MinifiedKeys["Data"] = "D";
320
- MinifiedKeys["AllowReorder"] = "aR";
328
+ MinifiedKeys["AllowReorder"] = "AR";
321
329
  MinifiedKeys["Status"] = "S";
330
+ MinifiedKeys["Children"] = "C";
322
331
  })(MinifiedKeys || (MinifiedKeys = {}));
323
332
  const KeyToMinified = {
324
333
  [IsolateKeys.Type]: MinifiedKeys.Type,
@@ -328,6 +337,7 @@
328
337
  [IsolateKeys.Key]: MinifiedKeys.Key,
329
338
  [IsolateKeys.AllowReorder]: MinifiedKeys.AllowReorder,
330
339
  [IsolateKeys.Status]: MinifiedKeys.Status,
340
+ [IsolateKeys.Children]: MinifiedKeys.Children,
331
341
  };
332
342
  // This const is an object that looks like this:
333
343
  // {
@@ -336,9 +346,19 @@
336
346
  // 'P': 'parent',
337
347
  // ...
338
348
  // }
339
- const MinifiedToKey = Object.entries(KeyToMinified).reduce((acc, [key, minified]) => Object.assign(acc, {
340
- [minified]: key,
341
- }), {});
349
+ const MinifiedToKey = invertKeyMap(KeyToMinified);
350
+ function invertKeyMap(miniMap = {}) {
351
+ return Object.entries(miniMap).reduce((acc, [key, minified]) => lodash.assign(acc, {
352
+ [minified]: key,
353
+ }), {});
354
+ }
355
+ const ExcludedFromDump = [
356
+ IsolateKeys.AbortController,
357
+ IsolateKeys.Parent,
358
+ IsolateKeys.Keys,
359
+ IsolateKeys.Children,
360
+ IsolateKeys.Data,
361
+ ];
342
362
 
343
363
  function isIsolateType(node, type) {
344
364
  return (node === null || node === void 0 ? void 0 : node[IsolateKeys.Type]) === type;
@@ -480,7 +500,7 @@
480
500
  }
481
501
  function baseIsolate(type, payload = undefined, key = null) {
482
502
  const _a = payload !== null && payload !== void 0 ? payload : {}, { allowReorder, status } = _a, data = __rest(_a, ["allowReorder", "status"]);
483
- return Object.assign(Object.assign({ [IsolateKeys.AllowReorder]: allowReorder, [IsolateKeys.Keys]: null, [IsolateKeys.Parent]: null, [IsolateKeys.Type]: type, [IsolateKeys.Data]: data }, (status && { [IsolateKeys.Status]: status })), { children: null, key, output: null });
503
+ return Object.assign(Object.assign({ [IsolateKeys.AllowReorder]: allowReorder, [IsolateKeys.AbortController]: new AbortController(), [IsolateKeys.Keys]: null, [IsolateKeys.Parent]: null, [IsolateKeys.Type]: type, [IsolateKeys.Data]: data }, (status && { [IsolateKeys.Status]: status })), { children: null, key, output: null });
484
504
  }
485
505
 
486
506
  // eslint-disable-next-line
@@ -615,8 +635,9 @@
615
635
  });
616
636
 
617
637
  class IsolateSerializer {
618
- // eslint-disable-next-line max-statements, complexity
619
- static deserialize(node) {
638
+ // eslint-disable-next-line max-statements, complexity, max-lines-per-function
639
+ static deserialize(node, miniMaps) {
640
+ var _a;
620
641
  // the assumption is that the tree is built correctly,
621
642
  // but the children are missing the parent property to
622
643
  // avoid circular references during serialization.
@@ -624,29 +645,52 @@
624
645
  // to avoid circular references during serialization.
625
646
  // we need to rebuild the tree and add back the parent property to the children
626
647
  // and the keys property to the parents.
648
+ const inverseMinimap = deeplyInvertKeyMap(miniMaps);
649
+ // Validate the root object
627
650
  const root = vestUtils.isStringValue(node)
628
651
  ? JSON.parse(node)
629
652
  : Object.assign({}, node);
630
653
  IsolateSerializer.validateIsolate(root);
631
654
  const queue = [root];
655
+ // Iterate over the queue until it's empty
632
656
  while (queue.length) {
657
+ // Get the next item from the queue
633
658
  const current = queue.shift();
634
- const children = IsolateSerializer.getChildren(current);
659
+ // Get the children of the current item
660
+ const children = IsolateSerializer.expandChildren(current);
661
+ // Iterate over the minified keys
635
662
  for (const key in MinifiedToKey) {
663
+ // Get the value for the current key
636
664
  const value = current[key];
665
+ // If the value is not null or undefined
637
666
  if (vestUtils.isNotNullish(value)) {
638
- current[MinifiedToKey[key]] = value;
667
+ // Get the key to use
668
+ const keyToUse = MinifiedToKey[key];
669
+ // If the key is data, then we may need to transform the keys
670
+ // eslint-disable-next-line max-depth
671
+ if (keyToUse === IsolateKeys.Data) {
672
+ // Transform the keys
673
+ current[keyToUse] = transformKeys(value, (_a = inverseMinimap === null || inverseMinimap === void 0 ? void 0 : inverseMinimap.keys) === null || _a === void 0 ? void 0 : _a.data);
674
+ }
675
+ else {
676
+ // Otherwise, just set the key
677
+ current[keyToUse] = transformValueByKey(keyToUse, value, inverseMinimap);
678
+ }
679
+ // Remove the old key
639
680
  delete current[key];
640
681
  }
641
682
  }
683
+ // If there are no children, nothing to do.
642
684
  if (!children) {
643
685
  continue;
644
686
  }
687
+ // Copy the children and set their parent to the current node.
645
688
  current.children = children.map(child => {
646
689
  var _a;
647
690
  const nextChild = Object.assign({}, child);
648
691
  IsolateMutator.setParent(nextChild, current);
649
692
  queue.push(nextChild);
693
+ // If the child has a key, add it to the parent's keys.
650
694
  const key = nextChild.key;
651
695
  if (key) {
652
696
  current.keys = (_a = current.keys) !== null && _a !== void 0 ? _a : {};
@@ -657,14 +701,16 @@
657
701
  }
658
702
  return root;
659
703
  }
660
- static serialize(isolate) {
704
+ static serialize(isolate, miniMaps) {
661
705
  if (vestUtils.isNullish(isolate)) {
662
706
  return '';
663
707
  }
664
- return JSON.stringify(transformIsolate(isolate));
708
+ return JSON.stringify(transformIsolate(isolate, miniMaps));
665
709
  }
666
- static getChildren(node) {
667
- return node.children ? [...node.children] : null;
710
+ static expandChildren(node) {
711
+ return node[MinifiedKeys.Children]
712
+ ? [...node[MinifiedKeys.Children]]
713
+ : null;
668
714
  }
669
715
  static validateIsolate(node) {
670
716
  vestUtils.invariant(vestUtils.hasOwnProperty(node, IsolateKeys.Type) ||
@@ -672,15 +718,20 @@
672
718
  }
673
719
  }
674
720
  // eslint-disable-next-line max-statements, complexity
675
- function transformIsolate(isolate) {
721
+ function transformIsolate(isolate, miniMaps) {
722
+ var _a;
676
723
  const next = {};
677
724
  if (isolate.children) {
678
- next.children = isolate.children.map(transformIsolate);
725
+ next[MinifiedKeys.Children] = isolate.children.map(isolate => transformIsolate(isolate, miniMaps));
726
+ }
727
+ if (!vestUtils.isEmpty(isolate.data)) {
728
+ next[MinifiedKeys.Data] = transformKeys(isolate.data, (_a = miniMaps === null || miniMaps === void 0 ? void 0 : miniMaps.keys) === null || _a === void 0 ? void 0 : _a.data);
679
729
  }
680
730
  for (const key in isolate) {
681
- if (key === 'children') {
682
- continue;
683
- }
731
+ // Skip keys that should be excluded from the dump.
732
+ // While we're excluding children from the dump, they'll actually remain there
733
+ // due to the fact that we've already transformed them recursively beforehand
734
+ // thus renaming them to the minified key.
684
735
  if (isKeyExcluededFromDump(key)) {
685
736
  continue;
686
737
  }
@@ -688,17 +739,52 @@
688
739
  if (vestUtils.isNullish(value)) {
689
740
  continue;
690
741
  }
691
- if (vestUtils.hasOwnProperty(KeyToMinified, key)) {
692
- next[KeyToMinified[key]] = value;
693
- }
694
- else {
695
- next[key] = value;
696
- }
742
+ const keyToUse = minifyKey(key);
743
+ next[keyToUse] = transformValueByKey(key, value, miniMaps);
697
744
  }
698
745
  return next;
699
746
  }
700
747
  function isKeyExcluededFromDump(key) {
701
- return [IsolateKeys.Parent, IsolateKeys.Keys].includes(key);
748
+ return ExcludedFromDump.includes(key);
749
+ }
750
+ function minifyKey(key) {
751
+ var _a;
752
+ return (_a = KeyToMinified[key]) !== null && _a !== void 0 ? _a : key;
753
+ }
754
+ function transformValueByKey(key, value, miniMaps) {
755
+ var _a, _b;
756
+ if (vestUtils.isNullish(value)) {
757
+ return value;
758
+ }
759
+ const keyMap = (_a = miniMaps === null || miniMaps === void 0 ? void 0 : miniMaps.values) === null || _a === void 0 ? void 0 : _a[key];
760
+ return keyMap ? (_b = keyMap[value]) !== null && _b !== void 0 ? _b : value : value;
761
+ }
762
+ function transformKeys(data, keyMap) {
763
+ var _a;
764
+ const next = {};
765
+ // Loop over each key in the data.
766
+ for (const key in data) {
767
+ // Find the key to use for the next object.
768
+ // If there is no key map, use the original key.
769
+ // If there is a key map, use the key map entry for the current key.
770
+ const keyToUse = (_a = (keyMap ? keyMap[key] : key)) !== null && _a !== void 0 ? _a : key;
771
+ // Add the key and value to the next object.
772
+ next[keyToUse] = data[key];
773
+ }
774
+ // Return the next object.
775
+ return next;
776
+ }
777
+ function deeplyInvertKeyMap(miniMaps = {}) {
778
+ return Object.entries(miniMaps).reduce((acc, [key, value]) => {
779
+ if (typeof value === 'object') {
780
+ return vestUtils.assign(acc, {
781
+ [key]: deeplyInvertKeyMap(value),
782
+ });
783
+ }
784
+ return vestUtils.assign(acc, {
785
+ [value]: key,
786
+ });
787
+ }, {});
702
788
  }
703
789
 
704
790
  exports.Bus = Bus;
@@ -1 +1 @@
1
- {"version":3,"file":"vestjs-runtime.development.js","sources":["../../src/RuntimeEvents.ts","../../src/errors/ErrorStrings.ts","../../src/Isolate/IsolateInspector.ts","../../src/Isolate/IsolateMutator.ts","../../src/VestRuntime.ts","../../src/Bus.ts","../../src/Isolate/IsolateKeys.ts","../../src/Isolate/IsolateSelectors.ts","../../src/Reconciler.ts","../../src/Isolate/Isolate.ts","../../src/IsolateWalker.ts","../../src/exports/IsolateSerializer.ts"],"sourcesContent":["export const RuntimeEvents = {\n ISOLATE_ENTER: 'ISOLATE_ENTER',\n ISOLATE_PENDING: 'ISOLATE_PENDING',\n ISOLATE_DONE: 'ISOLATE_DONE',\n};\n","export enum ErrorStrings {\n NO_ACTIVE_ISOLATE = 'Not within an active isolate',\n UNABLE_TO_PICK_NEXT_ISOLATE = 'Unable to pick next isolate. This is a bug, please report it to the Vest maintainers.',\n ENCOUNTERED_THE_SAME_KEY_TWICE = `Encountered the same key \"{key}\" twice. This may lead to inconsistent or overriding of results.`,\n INVALID_ISOLATE_CANNOT_PARSE = `Invalid isolate was passed to IsolateSerializer. Cannot proceed.`,\n}\n","import { Nullable, isNotNullish, isNullish } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\n\nexport class IsolateInspector {\n static at(isolate: Nullable<TIsolate>, at: number): Nullable<TIsolate> {\n if (isNullish(isolate)) {\n return null;\n }\n return isolate.children?.[at] ?? null;\n }\n\n static cursor(isolate: Nullable<TIsolate>): number {\n if (isNullish(isolate)) {\n return 0;\n }\n return isolate.children?.length ?? 0;\n }\n\n static canReorder<I extends TIsolate>(isolate: Nullable<I>): boolean {\n if (isNullish(isolate)) {\n return false;\n }\n\n return IsolateInspector.allowsReorder(isolate.parent);\n }\n\n static allowsReorder<I extends Record<any, any>>(\n isolate: Nullable<I>\n ): boolean {\n return isolate?.allowReorder === true;\n }\n\n static usesKey(isolate: Nullable<TIsolate>): boolean {\n if (isNullish(isolate)) {\n return false;\n }\n return isNotNullish(isolate.key);\n }\n\n static getChildByKey(\n isolate: Nullable<TIsolate>,\n key: string\n ): Nullable<TIsolate> {\n if (isNullish(isolate)) {\n return null;\n }\n return isolate.keys?.[key] ?? null;\n }\n}\n","import { Nullable, invariant, isNullish } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\n\nexport class IsolateMutator {\n static setParent(isolate: TIsolate, parent: Nullable<TIsolate>): TIsolate {\n isolate.parent = parent;\n return isolate;\n }\n\n static saveOutput(isolate: TIsolate, output: any): TIsolate {\n isolate.output = output;\n return isolate;\n }\n\n static setKey(isolate: TIsolate, key: Nullable<string>): TIsolate {\n isolate.key = key;\n return isolate;\n }\n\n static addChild(isolate: TIsolate, child: TIsolate): void {\n invariant(isolate);\n\n isolate.children = isolate.children ?? [];\n\n isolate.children.push(child);\n IsolateMutator.setParent(child, isolate);\n }\n\n static removeChild(isolate: TIsolate, node: TIsolate): void {\n isolate.children =\n isolate.children?.filter(child => child !== node) ?? null;\n }\n\n static addChildKey(isolate: TIsolate, key: string, node: TIsolate): void {\n invariant(isolate);\n\n isolate.keys = isolate.keys ?? {};\n\n isolate.keys[key] = node;\n }\n\n static slice(isolate: TIsolate, at: number): void {\n if (isNullish(isolate.children)) {\n return;\n }\n isolate.children.length = at;\n }\n\n static setData(isolate: TIsolate, data: any): void {\n isolate.data = data;\n }\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport { createCascade } from 'context';\nimport {\n invariant,\n deferThrow,\n isNullish,\n assign,\n TinyState,\n text,\n optionalFunctionValue,\n tinyState,\n BusType,\n bus,\n Nullable,\n DynamicValue,\n} from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport { IsolateInspector } from 'IsolateInspector';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { IRecociler } from 'Reconciler';\n\ntype CTXType = StateRefType & {\n historyNode: Nullable<TIsolate>;\n runtimeNode: Nullable<TIsolate>;\n runtimeRoot: Nullable<TIsolate>;\n stateRef: StateRefType;\n};\n\nexport type StateRefType = {\n Bus: BusType;\n appData: Record<string, any>;\n historyRoot: TinyState<Nullable<TIsolate>>;\n Reconciler: IRecociler;\n};\n\nconst PersistedContext = createCascade<CTXType>((stateRef, parentContext) => {\n if (parentContext) {\n return null;\n }\n\n invariant(stateRef.historyRoot);\n\n const [historyRootNode] = stateRef.historyRoot();\n\n const ctxRef = {} as CTXType;\n\n assign(ctxRef, {\n historyNode: historyRootNode,\n runtimeNode: null,\n runtimeRoot: null,\n stateRef,\n });\n\n return ctxRef;\n});\n\nexport const Run = PersistedContext.run;\n\nexport const RuntimeApi = {\n Run,\n addNodeToHistory,\n createRef,\n persist,\n reset,\n useAvailableRoot,\n useCurrentCursor,\n useHistoryRoot,\n useLoadRootNode,\n useXAppData,\n};\n\nexport function useXAppData<T = object>() {\n return useX().stateRef.appData as T;\n}\n\nexport function createRef(\n Reconciler: IRecociler,\n setter: DynamicValue<Record<string, any>>\n): StateRefType {\n return Object.freeze({\n Bus: bus.createBus(),\n Reconciler,\n appData: optionalFunctionValue(setter),\n historyRoot: tinyState.createTinyState<Nullable<TIsolate>>(null),\n });\n}\n\nexport function useReconciler() {\n return useX().stateRef.Reconciler;\n}\n\nexport function persist<T extends (...args: any[]) => any>(cb: T): T {\n const prev = PersistedContext.useX();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const ctxToUse = PersistedContext.use() ?? prev;\n return PersistedContext.run(ctxToUse.stateRef, () => cb(...args));\n }) as T;\n}\nexport function useX<T = object>(): CTXType & T {\n return PersistedContext.useX() as CTXType & T;\n}\n\nexport function useHistoryRoot() {\n return useX().stateRef.historyRoot();\n}\nexport function useHistoryIsolate() {\n return useX().historyNode;\n}\n\n/**\n * Returns the history isolate at the current position.\n * If there is a parent isolate, it returns the history node from the parent's children.\n * Otherwise, it returns the history node.\n * @returns {Nullable<TIsolate>} The history isolate at the current position.\n */\nexport function useHistoryIsolateAtCurrentPosition() {\n const parent = useIsolate();\n\n // This is most likely the historic counterpart of the parent node\n\n const historyNode = useHistoryIsolate();\n\n if (parent) {\n // If we have a parent, we need to get the history node from the parent's children\n // We take the history node from the cursor of the active node's children\n return IsolateInspector.at(historyNode, IsolateInspector.cursor(parent));\n }\n\n return historyNode;\n}\n\nexport function addNodeToHistory(node: TIsolate): void {\n const parent = useIsolate();\n if (parent) {\n useSetNextIsolateChild(node);\n } else {\n useSetHistory(node);\n }\n\n IsolateMutator.setParent(node, parent);\n}\n\nexport function useSetHistory(history: TIsolate) {\n const [, setHistoryRoot] = useHistoryRoot();\n setHistoryRoot(history);\n}\nexport function useHistoryKey(key?: Nullable<string>): Nullable<TIsolate> {\n if (isNullish(key)) {\n return null;\n }\n\n const historyNode = useX().historyNode;\n\n return IsolateInspector.getChildByKey(historyNode, key);\n}\n\nexport function useIsolate() {\n return useX().runtimeNode ?? null;\n}\nexport function useCurrentCursor() {\n const isolate = useIsolate();\n return isolate ? IsolateInspector.cursor(isolate) : 0;\n}\nexport function useRuntimeRoot() {\n return useX().runtimeRoot;\n}\nexport function useSetNextIsolateChild(child: TIsolate): void {\n const currentIsolate = useIsolate();\n\n invariant(currentIsolate, ErrorStrings.NO_ACTIVE_ISOLATE);\n\n IsolateMutator.addChild(currentIsolate, child);\n}\nexport function useSetIsolateKey(key: Nullable<string>, node: TIsolate): void {\n if (!key) {\n return;\n }\n\n const currentIsolate = useIsolate();\n\n invariant(currentIsolate, ErrorStrings.NO_ACTIVE_ISOLATE);\n\n if (isNullish(IsolateInspector.getChildByKey(currentIsolate, key))) {\n IsolateMutator.addChildKey(currentIsolate, key, node);\n\n return;\n }\n\n deferThrow(text(ErrorStrings.ENCOUNTERED_THE_SAME_KEY_TWICE, { key }));\n}\nexport function useAvailableRoot<I extends TIsolate = TIsolate>(): I {\n const root = useRuntimeRoot();\n\n if (root) {\n return root as I;\n }\n\n const [historyRoot] = useHistoryRoot();\n\n return historyRoot as I;\n}\n\nexport function reset() {\n const [, , resetHistoryRoot] = useHistoryRoot();\n\n resetHistoryRoot();\n}\n\nexport function useLoadRootNode(root: TIsolate): void {\n useSetHistory(root);\n}\n","import { isNullish } from 'vest-utils';\n\nimport { persist, useX } from 'VestRuntime';\n\nexport function useBus() {\n return useX().stateRef.Bus;\n}\n\n/*\n Returns an emitter, but it also has a shortcut for emitting an event immediately\n by passing an event name.\n*/\nexport function useEmit(event?: string, data?: any) {\n const emit = useBus().emit;\n\n if (!isNullish(event)) {\n emit(event, data);\n }\n\n return persist(emit);\n}\n\nexport function usePrepareEmitter<T = void>(event: string): (arg: T) => void {\n const emit = useEmit();\n\n return (arg: T) => emit(event, arg);\n}\n","export enum IsolateKeys {\n Type = '$type',\n Keys = 'keys',\n Key = 'key',\n Parent = 'parent',\n Data = 'data',\n AllowReorder = 'allowReorder',\n Status = 'status',\n}\n\nenum MinifiedKeys {\n Type = '$',\n Keys = 'K',\n Key = 'k',\n Parent = 'P',\n Data = 'D',\n AllowReorder = 'aR',\n Status = 'S',\n}\n\nexport const KeyToMinified = {\n [IsolateKeys.Type]: MinifiedKeys.Type,\n [IsolateKeys.Keys]: MinifiedKeys.Keys,\n [IsolateKeys.Parent]: MinifiedKeys.Parent,\n [IsolateKeys.Data]: MinifiedKeys.Data,\n [IsolateKeys.Key]: MinifiedKeys.Key,\n [IsolateKeys.AllowReorder]: MinifiedKeys.AllowReorder,\n [IsolateKeys.Status]: MinifiedKeys.Status,\n};\n\n// This const is an object that looks like this:\n// {\n// '$': '$type',\n// 'K': 'keys',\n// 'P': 'parent',\n// ...\n// }\nexport const MinifiedToKey = Object.entries(KeyToMinified).reduce(\n (acc, [key, minified]) =>\n Object.assign(acc, {\n [minified]: key,\n }),\n {} as Record<string, IsolateKeys>\n);\n","import { Maybe } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport { IsolateKeys } from 'IsolateKeys';\n\nexport function isIsolateType<I extends TIsolate>(\n node: Maybe<TIsolate>,\n type: string\n): node is I {\n return node?.[IsolateKeys.Type] === type;\n}\n\nexport function isSameIsolateType<A extends TIsolate, B extends TIsolate>(\n a: A,\n b: B\n): boolean {\n return isIsolateType(a, b[IsolateKeys.Type]);\n}\n\nexport function isSameIsolateIdentity<A extends TIsolate, B extends TIsolate>(\n a: A,\n b: B\n): boolean {\n return Object.is(a, b) || (isSameIsolateType(a, b) && a.key === b.key);\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport { Maybe, Nullable, invariant, isNullish } from 'vest-utils';\n\nimport { type TIsolate } from 'Isolate';\nimport { IsolateInspector } from 'IsolateInspector';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { isSameIsolateType } from 'IsolateSelectors';\nimport * as VestRuntime from 'VestRuntime';\n// import { isSameIsolateType } from 'IsolateSelectors';\n\n// I would rather not use `any` here, but instead use `Isolate`.\n// The problem is that it breaks the actual implementation of `Isolate` in `IsolateTest`\n// As it is not properly extending `Isolate`.\nexport interface IRecociler<I = any> {\n (currentNode: I, historyNode: I): Nullable<I>;\n}\n\nfunction BaseReconciler(\n currentNode: TIsolate,\n historyNode: TIsolate\n): TIsolate {\n if (isNullish(historyNode)) {\n return currentNode;\n }\n return currentNode;\n}\n\nexport class Reconciler {\n /**\n * Reconciles the current isolate with the history isolate.\n * If the current isolate is of a different type than the history isolate,\n * the current isolate is returned.\n * Otherwise, the reconciler function is called to determine the next isolate.\n * If the reconciler function returns null or undefined, the base reconciler is used.\n * If no history isolate exists, the current isolate is returned.\n * @param node The current isolate to reconcile.\n * @returns The next isolate after reconciliation.\n */\n static reconcile(node: TIsolate): TIsolate {\n const localHistoryNode = VestRuntime.useHistoryIsolateAtCurrentPosition();\n\n const nextNodeResult = pickNextNode(node, localHistoryNode);\n\n invariant(nextNodeResult, ErrorStrings.UNABLE_TO_PICK_NEXT_ISOLATE);\n\n return nextNodeResult;\n }\n\n static dropNextNodesOnReorder<I extends TIsolate>(\n reorderLogic: (newNode: I, prevNode: Maybe<TIsolate>) => boolean,\n newNode: I,\n prevNode: Maybe<TIsolate>\n ): boolean {\n const didReorder = reorderLogic(newNode, prevNode);\n\n if (didReorder) {\n removeAllNextNodesInIsolate();\n }\n\n return didReorder;\n }\n\n static handleIsolateNodeWithKey(node: TIsolate): TIsolate {\n invariant(IsolateInspector.usesKey(node));\n\n const prevNodeByKey = VestRuntime.useHistoryKey(node.key);\n\n let nextNode = node;\n\n if (!isNullish(prevNodeByKey)) {\n nextNode = prevNodeByKey;\n }\n\n VestRuntime.useSetIsolateKey(node.key, node);\n\n return nextNode;\n }\n}\n\nfunction pickNextNode(\n currentNode: TIsolate,\n historyNode: Nullable<TIsolate>\n): TIsolate {\n if (isNullish(historyNode)) {\n return handleNoHistoryNode(currentNode);\n }\n\n if (!isSameIsolateType(currentNode, historyNode)) {\n return currentNode;\n }\n\n const reconciler = VestRuntime.useReconciler();\n\n return (\n reconciler(currentNode, historyNode) ??\n BaseReconciler(currentNode, historyNode)\n );\n}\n\nfunction handleNoHistoryNode<I extends TIsolate>(newNode: I): I {\n if (IsolateInspector.usesKey(newNode)) {\n return Reconciler.handleIsolateNodeWithKey(newNode) as I;\n }\n\n return newNode;\n}\n\nfunction removeAllNextNodesInIsolate() {\n const currentNode = VestRuntime.useIsolate();\n const historyNode = VestRuntime.useHistoryIsolate();\n\n if (!historyNode || !currentNode) {\n // This is probably unreachable, but TS is not convinced.\n // Let's play it safe.\n /* istanbul ignore next */\n return;\n }\n\n IsolateMutator.slice(historyNode, IsolateInspector.cursor(currentNode));\n}\n","import { CB, Maybe, Nullable, isNotNullish, isPromise } from 'vest-utils';\n\nimport { useEmit } from 'Bus';\nimport { IsolateKeys } from 'IsolateKeys';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { Reconciler } from 'Reconciler';\nimport { RuntimeEvents } from 'RuntimeEvents';\nimport * as VestRuntime from 'VestRuntime';\n\nexport type IsolateKey = Nullable<string>;\n\nexport type TIsolate<P extends IsolatePayload = IsolatePayload> = {\n [IsolateKeys.AllowReorder]?: boolean;\n [IsolateKeys.Parent]: Nullable<TIsolate>;\n [IsolateKeys.Type]: string;\n [IsolateKeys.Keys]: Nullable<Record<string, TIsolate>>;\n [IsolateKeys.Data]: DataOnly<P>;\n [IsolateKeys.Status]?: string;\n children: Nullable<TIsolate[]>;\n key: IsolateKey;\n output: any;\n} & UsedFeaturesOnly<P>;\n\ntype DataOnly<P extends IsolatePayload> = Omit<P, keyof IsolateFeatures>;\ntype UsedFeaturesOnly<P extends IsolatePayload> = Pick<\n P,\n keyof IsolateFeatures\n>;\n\nexport class Isolate {\n static create<Payload extends IsolatePayload>(\n type: string,\n callback: CB,\n payload: Maybe<Payload> = undefined,\n key?: IsolateKey\n ): TIsolate<Payload> {\n const parent = VestRuntime.useIsolate();\n\n const newCreatedNode = IsolateMutator.setParent(\n baseIsolate(type, payload, key),\n parent\n );\n\n const nextIsolateChild = Reconciler.reconcile(newCreatedNode);\n\n const localHistoryNode = VestRuntime.useHistoryIsolateAtCurrentPosition();\n\n const output = Object.is(nextIsolateChild, newCreatedNode)\n ? useRunAsNew(localHistoryNode, newCreatedNode, callback)\n : nextIsolateChild.output;\n\n IsolateMutator.setParent(nextIsolateChild, parent);\n IsolateMutator.saveOutput(nextIsolateChild, output);\n VestRuntime.addNodeToHistory(nextIsolateChild);\n\n return nextIsolateChild as TIsolate<Payload>;\n }\n\n static isIsolate(node: any): node is TIsolate {\n return isNotNullish(node) && node[IsolateKeys.Type];\n }\n}\n\n/**\n * Creates a new child isolate context where the local history node is the current history node, thus advancing the history cursor.\n * Runs the callback function and returns its output.\n * @param localHistoryNode The local history node.\n * @param current The current isolate.\n * @param callback The callback function to execute.\n * @returns The output of the callback function.\n */\nfunction useRunAsNew<Callback extends CB = CB>(\n localHistoryNode: Nullable<TIsolate>,\n current: TIsolate,\n callback: CB\n): ReturnType<Callback> {\n const runtimeRoot = VestRuntime.useRuntimeRoot();\n const emit = useEmit();\n\n // We're creating a new child isolate context where the local history node\n // is the current history node, thus advancing the history cursor.\n const output = VestRuntime.Run(\n {\n historyNode: localHistoryNode,\n runtimeNode: current,\n ...(!runtimeRoot && { runtimeRoot: current }),\n },\n () => {\n emit(RuntimeEvents.ISOLATE_ENTER, current);\n const output = callback(current);\n\n if (isPromise(output)) {\n emit(RuntimeEvents.ISOLATE_PENDING, current);\n output.then(iso => {\n if (Isolate.isIsolate(iso)) {\n IsolateMutator.addChild(current, iso);\n }\n\n emit(RuntimeEvents.ISOLATE_DONE, current);\n });\n } else {\n emit(RuntimeEvents.ISOLATE_DONE, current);\n }\n\n return output;\n }\n );\n\n current.output = output;\n return output;\n}\n\nfunction baseIsolate(\n type: string,\n payload: Maybe<IsolatePayload> = undefined,\n key: IsolateKey = null\n): TIsolate {\n const { allowReorder, status, ...data } = payload ?? {};\n return {\n [IsolateKeys.AllowReorder]: allowReorder,\n [IsolateKeys.Keys]: null,\n [IsolateKeys.Parent]: null,\n [IsolateKeys.Type]: type,\n [IsolateKeys.Data]: data as IsolateData,\n ...(status && { [IsolateKeys.Status]: status }),\n children: null,\n key,\n output: null,\n };\n}\n\ntype IsolateData = Record<string, any>;\ntype IsolatePayload = IsolateData & IsolateFeatures;\ntype IsolateFeatures = {\n [IsolateKeys.AllowReorder]?: boolean;\n [IsolateKeys.Status]?: string;\n};\n","import { CB, Nullable, isNullish, optionalFunctionValue } from 'vest-utils';\n\nimport { type TIsolate } from 'Isolate';\nimport { IsolateMutator } from 'IsolateMutator';\n\ntype VisitOnlyPredicate = (isolate: TIsolate) => boolean;\n\n// eslint-disable-next-line\nexport function walk(\n startNode: TIsolate,\n callback: (isolate: TIsolate, breakout: CB<void>) => void,\n visitOnly?: VisitOnlyPredicate\n): void {\n // If the startNode has no children, there is nothing to walk.\n if (isNullish(startNode.children)) {\n return;\n }\n\n let broke = false;\n\n // For each child Isolate object, call the callback function.\n for (const isolate of startNode.children) {\n if (broke) {\n return;\n }\n\n // If visitOnly is not provided or the predicate is satisfied, call the callback function.\n if (isNullish(visitOnly) || optionalFunctionValue(visitOnly, isolate)) {\n callback(isolate, breakout);\n }\n\n // If the breakout function has been called, stop the walk.\n if (broke) {\n return;\n }\n\n // Recursively walk through the child Isolate object.\n walk(\n isolate,\n (child, innerBreakout) => {\n callback(child, () => {\n innerBreakout();\n breakout();\n });\n },\n visitOnly\n );\n }\n\n function breakout() {\n broke = true;\n }\n}\n\n// This function returns true if the given predicate function returns true for any Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function some(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): boolean {\n let hasMatch = false;\n\n // Call the walk function with a callback function that sets hasMatch to true if the predicate is satisfied.\n walk(\n startNode,\n (node, breakout) => {\n if (predicate(node)) {\n breakout();\n hasMatch = true;\n }\n },\n visitOnly\n );\n\n return hasMatch;\n}\n\n// This function returns true if the given predicate function returns true for any Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function has(startNode: TIsolate, match: VisitOnlyPredicate): boolean {\n return some(startNode, () => true, match);\n}\n\n// traverses up to a parent node that satisfies the predicate\n// and returns the first direct descendant that satisfies the predicate\nexport function findClosest<I extends TIsolate = TIsolate>(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): Nullable<I> {\n let found: Nullable<TIsolate> = null;\n let current: Nullable<TIsolate> = startNode;\n\n while (current) {\n found = current.children?.find(predicate) ?? null;\n\n if (found) {\n break;\n }\n\n current = current.parent;\n }\n\n return found as Nullable<I>;\n}\n\n// This function returns the first Isolate object in the tree that satisfies the given predicate function.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function find(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): Nullable<TIsolate> {\n let found = null;\n\n // Call the walk function with a callback function that sets found to the current node if the predicate is satisfied.\n walk(\n startNode,\n (node, breakout) => {\n if (predicate(node)) {\n breakout();\n found = node;\n }\n },\n visitOnly\n );\n\n return found;\n}\n\n// This function returns true if the given predicate function returns true for every Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function every(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): boolean {\n let hasMatch = true;\n walk(\n startNode,\n (node, breakout) => {\n if (!predicate(node)) {\n breakout();\n hasMatch = false;\n }\n },\n visitOnly\n );\n\n return hasMatch;\n}\n\n// This function removes all Isolate objects in the tree that\n// satisfy the given predicate function and have a parent.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function pluck(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): void {\n walk(\n startNode,\n node => {\n if (predicate(node) && node.parent) {\n IsolateMutator.removeChild(node.parent, node);\n }\n },\n visitOnly\n );\n}\n\n// Returns the closest ancestor Isolate object of the given\n//startNode that satisfies the given predicate function.\nexport function closest(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): Nullable<TIsolate> {\n let current: Nullable<TIsolate> = startNode;\n do {\n if (predicate(current)) {\n return current;\n }\n current = current.parent;\n } while (current);\n return null;\n}\n\n// This function returns true if the closest ancestor Isolates of the\n// given startNode that satisfies the given predicate function exists.\nexport function closestExists(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): boolean {\n return !!closest(startNode, predicate);\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport {\n Nullable,\n hasOwnProperty,\n invariant,\n isNotNullish,\n isNullish,\n isStringValue,\n text,\n} from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport { IsolateKeys, KeyToMinified, MinifiedToKey } from 'IsolateKeys';\nimport { IsolateMutator } from 'IsolateMutator';\n\nexport class IsolateSerializer {\n // eslint-disable-next-line max-statements, complexity\n static deserialize(node: Record<string, any> | TIsolate | string): TIsolate {\n // the assumption is that the tree is built correctly,\n // but the children are missing the parent property to\n // avoid circular references during serialization.\n // in the same way, the parents are missing the `keys` property\n // to avoid circular references during serialization.\n // we need to rebuild the tree and add back the parent property to the children\n // and the keys property to the parents.\n\n const root = isStringValue(node)\n ? JSON.parse(node)\n : ({ ...node } as TIsolate);\n\n IsolateSerializer.validateIsolate(root);\n\n const queue = [root];\n\n while (queue.length) {\n const current = queue.shift();\n\n const children = IsolateSerializer.getChildren(current);\n\n for (const key in MinifiedToKey) {\n const value = current[key];\n if (isNotNullish(value)) {\n current[MinifiedToKey[key]] = value;\n delete current[key];\n }\n }\n\n if (!children) {\n continue;\n }\n\n current.children = children.map(child => {\n const nextChild = { ...child };\n\n IsolateMutator.setParent(nextChild, current);\n queue.push(nextChild);\n\n const key = nextChild.key;\n\n if (key) {\n current.keys = current.keys ?? {};\n current.keys[key] = nextChild;\n }\n\n return nextChild;\n });\n }\n\n return root as TIsolate;\n }\n\n static serialize(isolate: Nullable<TIsolate>): string {\n if (isNullish(isolate)) {\n return '';\n }\n\n return JSON.stringify(transformIsolate(isolate));\n }\n\n static getChildren(node: TIsolate): Nullable<TIsolate[]> {\n return node.children ? [...node.children] : null;\n }\n\n static validateIsolate(node: Record<string, any> | TIsolate): void {\n invariant(\n hasOwnProperty(node, IsolateKeys.Type) ||\n hasOwnProperty(node, KeyToMinified[IsolateKeys.Type]),\n text(ErrorStrings.INVALID_ISOLATE_CANNOT_PARSE)\n );\n }\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction transformIsolate(isolate: TIsolate): Record<string, any> {\n const next: Record<string, any> = {};\n\n if (isolate.children) {\n next.children = isolate.children.map(transformIsolate);\n }\n\n for (const key in isolate) {\n if (key === 'children') {\n continue;\n }\n\n if (isKeyExcluededFromDump(key)) {\n continue;\n }\n const value = isolate[key as keyof TIsolate];\n\n if (isNullish(value)) {\n continue;\n }\n\n if (hasOwnProperty(KeyToMinified, key)) {\n next[KeyToMinified[key]] = value;\n } else {\n next[key] = value;\n }\n }\n\n return next;\n}\n\nfunction isKeyExcluededFromDump(key: string): boolean {\n return [IsolateKeys.Parent, IsolateKeys.Keys].includes(key as IsolateKeys);\n}\n"],"names":["isNullish","isNotNullish","invariant","createCascade","assign","bus","optionalFunctionValue","tinyState","deferThrow","text","VestRuntime.useHistoryIsolateAtCurrentPosition","VestRuntime.useHistoryKey","VestRuntime.useSetIsolateKey","VestRuntime.useReconciler","VestRuntime.useIsolate","VestRuntime.useHistoryIsolate","VestRuntime.addNodeToHistory","VestRuntime.useRuntimeRoot","VestRuntime.Run","isPromise","isStringValue","hasOwnProperty"],"mappings":"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"}
1
+ {"version":3,"file":"vestjs-runtime.development.js","sources":["../../src/RuntimeEvents.ts","../../src/errors/ErrorStrings.ts","../../src/Isolate/IsolateInspector.ts","../../src/Isolate/IsolateMutator.ts","../../src/VestRuntime.ts","../../src/Bus.ts","../../src/Isolate/IsolateKeys.ts","../../src/Isolate/IsolateSelectors.ts","../../src/Reconciler.ts","../../src/Isolate/Isolate.ts","../../src/IsolateWalker.ts","../../src/exports/IsolateSerializer.ts"],"sourcesContent":["export const RuntimeEvents = {\n ISOLATE_ENTER: 'ISOLATE_ENTER',\n ISOLATE_PENDING: 'ISOLATE_PENDING',\n ISOLATE_DONE: 'ISOLATE_DONE',\n};\n","export enum ErrorStrings {\n NO_ACTIVE_ISOLATE = 'Not within an active isolate',\n UNABLE_TO_PICK_NEXT_ISOLATE = 'Unable to pick next isolate. This is a bug, please report it to the Vest maintainers.',\n ENCOUNTERED_THE_SAME_KEY_TWICE = `Encountered the same key \"{key}\" twice. This may lead to inconsistent or overriding of results.`,\n INVALID_ISOLATE_CANNOT_PARSE = `Invalid isolate was passed to IsolateSerializer. Cannot proceed.`,\n}\n","import { Nullable, isNotNullish, isNullish } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\n\nexport class IsolateInspector {\n static at(isolate: Nullable<TIsolate>, at: number): Nullable<TIsolate> {\n if (isNullish(isolate)) {\n return null;\n }\n return isolate.children?.[at] ?? null;\n }\n\n static cursor(isolate: Nullable<TIsolate>): number {\n if (isNullish(isolate)) {\n return 0;\n }\n return isolate.children?.length ?? 0;\n }\n\n static canReorder<I extends TIsolate>(isolate: Nullable<I>): boolean {\n if (isNullish(isolate)) {\n return false;\n }\n\n return IsolateInspector.allowsReorder(isolate.parent);\n }\n\n static allowsReorder<I extends Record<any, any>>(\n isolate: Nullable<I>\n ): boolean {\n return isolate?.allowReorder === true;\n }\n\n static usesKey(isolate: Nullable<TIsolate>): boolean {\n if (isNullish(isolate)) {\n return false;\n }\n return isNotNullish(isolate.key);\n }\n\n static getChildByKey(\n isolate: Nullable<TIsolate>,\n key: string\n ): Nullable<TIsolate> {\n if (isNullish(isolate)) {\n return null;\n }\n return isolate.keys?.[key] ?? null;\n }\n}\n","import { Nullable, invariant, isNullish } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\n\nexport class IsolateMutator {\n static setParent(isolate: TIsolate, parent: Nullable<TIsolate>): TIsolate {\n isolate.parent = parent;\n return isolate;\n }\n\n static saveOutput(isolate: TIsolate, output: any): TIsolate {\n isolate.output = output;\n return isolate;\n }\n\n static setKey(isolate: TIsolate, key: Nullable<string>): TIsolate {\n isolate.key = key;\n return isolate;\n }\n\n static addChild(isolate: TIsolate, child: TIsolate): void {\n invariant(isolate);\n\n isolate.children = isolate.children ?? [];\n\n isolate.children.push(child);\n IsolateMutator.setParent(child, isolate);\n }\n\n static removeChild(isolate: TIsolate, node: TIsolate): void {\n isolate.children =\n isolate.children?.filter(child => child !== node) ?? null;\n }\n\n static addChildKey(isolate: TIsolate, key: string, node: TIsolate): void {\n invariant(isolate);\n\n isolate.keys = isolate.keys ?? {};\n\n isolate.keys[key] = node;\n }\n\n static slice(isolate: TIsolate, at: number): void {\n if (isNullish(isolate.children)) {\n return;\n }\n isolate.children.length = at;\n }\n\n static setData(isolate: TIsolate, data: any): void {\n isolate.data = data;\n }\n\n static abort(isolate: TIsolate, reason?: string): void {\n if (isNullish(isolate.abortController)) {\n return;\n }\n isolate.abortController.abort(reason);\n }\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport { createCascade } from 'context';\nimport {\n invariant,\n deferThrow,\n isNullish,\n assign,\n TinyState,\n text,\n optionalFunctionValue,\n tinyState,\n BusType,\n bus,\n Nullable,\n DynamicValue,\n} from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport { IsolateInspector } from 'IsolateInspector';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { IRecociler } from 'Reconciler';\n\ntype CTXType = StateRefType & {\n historyNode: Nullable<TIsolate>;\n runtimeNode: Nullable<TIsolate>;\n runtimeRoot: Nullable<TIsolate>;\n stateRef: StateRefType;\n};\n\nexport type StateRefType = {\n Bus: BusType;\n appData: Record<string, any>;\n historyRoot: TinyState<Nullable<TIsolate>>;\n Reconciler: IRecociler;\n};\n\nconst PersistedContext = createCascade<CTXType>((stateRef, parentContext) => {\n if (parentContext) {\n return null;\n }\n\n invariant(stateRef.historyRoot);\n\n const [historyRootNode] = stateRef.historyRoot();\n\n const ctxRef = {} as CTXType;\n\n assign(ctxRef, {\n historyNode: historyRootNode,\n runtimeNode: null,\n runtimeRoot: null,\n stateRef,\n });\n\n return ctxRef;\n});\n\nexport const Run = PersistedContext.run;\n\nexport const RuntimeApi = {\n Run,\n addNodeToHistory,\n createRef,\n persist,\n reset,\n useAvailableRoot,\n useCurrentCursor,\n useHistoryRoot,\n useLoadRootNode,\n useXAppData,\n};\n\nexport function useXAppData<T = object>() {\n return useX().stateRef.appData as T;\n}\n\nexport function createRef(\n Reconciler: IRecociler,\n setter: DynamicValue<Record<string, any>>\n): StateRefType {\n return Object.freeze({\n Bus: bus.createBus(),\n Reconciler,\n appData: optionalFunctionValue(setter),\n historyRoot: tinyState.createTinyState<Nullable<TIsolate>>(null),\n });\n}\n\nexport function useReconciler() {\n return useX().stateRef.Reconciler;\n}\n\nexport function persist<T extends (...args: any[]) => any>(cb: T): T {\n const prev = PersistedContext.useX();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const ctxToUse = PersistedContext.use() ?? prev;\n return PersistedContext.run(ctxToUse.stateRef, () => cb(...args));\n }) as T;\n}\nexport function useX<T = object>(): CTXType & T {\n return PersistedContext.useX() as CTXType & T;\n}\n\nexport function useHistoryRoot() {\n return useX().stateRef.historyRoot();\n}\nexport function useHistoryIsolate() {\n return useX().historyNode;\n}\n\n/**\n * Returns the history isolate at the current position.\n * If there is a parent isolate, it returns the history node from the parent's children.\n * Otherwise, it returns the history node.\n * @returns {Nullable<TIsolate>} The history isolate at the current position.\n */\nexport function useHistoryIsolateAtCurrentPosition() {\n const parent = useIsolate();\n\n // This is most likely the historic counterpart of the parent node\n\n const historyNode = useHistoryIsolate();\n\n if (parent) {\n // If we have a parent, we need to get the history node from the parent's children\n // We take the history node from the cursor of the active node's children\n return IsolateInspector.at(historyNode, IsolateInspector.cursor(parent));\n }\n\n return historyNode;\n}\n\nexport function addNodeToHistory(node: TIsolate): void {\n const parent = useIsolate();\n if (parent) {\n useSetNextIsolateChild(node);\n } else {\n useSetHistory(node);\n }\n\n IsolateMutator.setParent(node, parent);\n}\n\nexport function useSetHistory(history: TIsolate) {\n const [, setHistoryRoot] = useHistoryRoot();\n setHistoryRoot(history);\n}\nexport function useHistoryKey(key?: Nullable<string>): Nullable<TIsolate> {\n if (isNullish(key)) {\n return null;\n }\n\n const historyNode = useX().historyNode;\n\n return IsolateInspector.getChildByKey(historyNode, key);\n}\n\nexport function useIsolate() {\n return useX().runtimeNode ?? null;\n}\nexport function useCurrentCursor() {\n const isolate = useIsolate();\n return isolate ? IsolateInspector.cursor(isolate) : 0;\n}\nexport function useRuntimeRoot() {\n return useX().runtimeRoot;\n}\nexport function useSetNextIsolateChild(child: TIsolate): void {\n const currentIsolate = useIsolate();\n\n invariant(currentIsolate, ErrorStrings.NO_ACTIVE_ISOLATE);\n\n IsolateMutator.addChild(currentIsolate, child);\n}\nexport function useSetIsolateKey(key: Nullable<string>, node: TIsolate): void {\n if (!key) {\n return;\n }\n\n const currentIsolate = useIsolate();\n\n invariant(currentIsolate, ErrorStrings.NO_ACTIVE_ISOLATE);\n\n if (isNullish(IsolateInspector.getChildByKey(currentIsolate, key))) {\n IsolateMutator.addChildKey(currentIsolate, key, node);\n\n return;\n }\n\n deferThrow(text(ErrorStrings.ENCOUNTERED_THE_SAME_KEY_TWICE, { key }));\n}\nexport function useAvailableRoot<I extends TIsolate = TIsolate>(): I {\n const root = useRuntimeRoot();\n\n if (root) {\n return root as I;\n }\n\n const [historyRoot] = useHistoryRoot();\n\n return historyRoot as I;\n}\n\nexport function reset() {\n const [, , resetHistoryRoot] = useHistoryRoot();\n\n resetHistoryRoot();\n}\n\nexport function useLoadRootNode(root: TIsolate): void {\n useSetHistory(root);\n}\n","import { isNullish } from 'vest-utils';\n\nimport { persist, useX } from 'VestRuntime';\n\nexport function useBus() {\n return useX().stateRef.Bus;\n}\n\n/*\n Returns an emitter, but it also has a shortcut for emitting an event immediately\n by passing an event name.\n*/\nexport function useEmit(event?: string, data?: any) {\n const emit = useBus().emit;\n\n if (!isNullish(event)) {\n emit(event, data);\n }\n\n return persist(emit);\n}\n\nexport function usePrepareEmitter<T = void>(event: string): (arg: T) => void {\n const emit = useEmit();\n\n return (arg: T) => emit(event, arg);\n}\n","import { assign } from 'lodash';\n\nexport enum IsolateKeys {\n Type = '$type',\n Keys = 'keys',\n Key = 'key',\n Parent = 'parent',\n Data = 'data',\n AllowReorder = 'allowReorder',\n Status = 'status',\n AbortController = 'abortController',\n Children = 'children',\n}\n\nexport enum MinifiedKeys {\n Type = '$',\n Keys = 'Ks',\n Key = 'ky',\n Parent = 'P',\n Data = 'D',\n AllowReorder = 'AR',\n Status = 'S',\n Children = 'C',\n}\n\nexport const KeyToMinified = {\n [IsolateKeys.Type]: MinifiedKeys.Type,\n [IsolateKeys.Keys]: MinifiedKeys.Keys,\n [IsolateKeys.Parent]: MinifiedKeys.Parent,\n [IsolateKeys.Data]: MinifiedKeys.Data,\n [IsolateKeys.Key]: MinifiedKeys.Key,\n [IsolateKeys.AllowReorder]: MinifiedKeys.AllowReorder,\n [IsolateKeys.Status]: MinifiedKeys.Status,\n [IsolateKeys.Children]: MinifiedKeys.Children,\n};\n\n// This const is an object that looks like this:\n// {\n// '$': '$type',\n// 'K': 'keys',\n// 'P': 'parent',\n// ...\n// }\nexport const MinifiedToKey = invertKeyMap(KeyToMinified);\n\nexport function invertKeyMap(miniMap: Record<string, string> = {}) {\n return Object.entries(miniMap).reduce(\n (acc, [key, minified]) =>\n assign(acc, {\n [minified]: key,\n }),\n {} as Record<string, string>\n );\n}\n\nexport const ExcludedFromDump = [\n IsolateKeys.AbortController,\n IsolateKeys.Parent,\n IsolateKeys.Keys,\n IsolateKeys.Children,\n IsolateKeys.Data,\n];\n","import { Maybe } from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport { IsolateKeys } from 'IsolateKeys';\n\nexport function isIsolateType<I extends TIsolate>(\n node: Maybe<TIsolate>,\n type: string\n): node is I {\n return node?.[IsolateKeys.Type] === type;\n}\n\nexport function isSameIsolateType<A extends TIsolate, B extends TIsolate>(\n a: A,\n b: B\n): boolean {\n return isIsolateType(a, b[IsolateKeys.Type]);\n}\n\nexport function isSameIsolateIdentity<A extends TIsolate, B extends TIsolate>(\n a: A,\n b: B\n): boolean {\n return Object.is(a, b) || (isSameIsolateType(a, b) && a.key === b.key);\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport { Maybe, Nullable, invariant, isNullish } from 'vest-utils';\n\nimport { type TIsolate } from 'Isolate';\nimport { IsolateInspector } from 'IsolateInspector';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { isSameIsolateType } from 'IsolateSelectors';\nimport * as VestRuntime from 'VestRuntime';\n// import { isSameIsolateType } from 'IsolateSelectors';\n\n// I would rather not use `any` here, but instead use `Isolate`.\n// The problem is that it breaks the actual implementation of `Isolate` in `IsolateTest`\n// As it is not properly extending `Isolate`.\nexport interface IRecociler<I = any> {\n (currentNode: I, historyNode: I): Nullable<I>;\n}\n\nfunction BaseReconciler(\n currentNode: TIsolate,\n historyNode: TIsolate\n): TIsolate {\n if (isNullish(historyNode)) {\n return currentNode;\n }\n return currentNode;\n}\n\nexport class Reconciler {\n /**\n * Reconciles the current isolate with the history isolate.\n * If the current isolate is of a different type than the history isolate,\n * the current isolate is returned.\n * Otherwise, the reconciler function is called to determine the next isolate.\n * If the reconciler function returns null or undefined, the base reconciler is used.\n * If no history isolate exists, the current isolate is returned.\n * @param node The current isolate to reconcile.\n * @returns The next isolate after reconciliation.\n */\n static reconcile(node: TIsolate): TIsolate {\n const localHistoryNode = VestRuntime.useHistoryIsolateAtCurrentPosition();\n\n const nextNodeResult = pickNextNode(node, localHistoryNode);\n\n invariant(nextNodeResult, ErrorStrings.UNABLE_TO_PICK_NEXT_ISOLATE);\n\n return nextNodeResult;\n }\n\n static dropNextNodesOnReorder<I extends TIsolate>(\n reorderLogic: (newNode: I, prevNode: Maybe<TIsolate>) => boolean,\n newNode: I,\n prevNode: Maybe<TIsolate>\n ): boolean {\n const didReorder = reorderLogic(newNode, prevNode);\n\n if (didReorder) {\n removeAllNextNodesInIsolate();\n }\n\n return didReorder;\n }\n\n static handleIsolateNodeWithKey(node: TIsolate): TIsolate {\n invariant(IsolateInspector.usesKey(node));\n\n const prevNodeByKey = VestRuntime.useHistoryKey(node.key);\n\n let nextNode = node;\n\n if (!isNullish(prevNodeByKey)) {\n nextNode = prevNodeByKey;\n }\n\n VestRuntime.useSetIsolateKey(node.key, node);\n\n return nextNode;\n }\n}\n\nfunction pickNextNode(\n currentNode: TIsolate,\n historyNode: Nullable<TIsolate>\n): TIsolate {\n if (isNullish(historyNode)) {\n return handleNoHistoryNode(currentNode);\n }\n\n if (!isSameIsolateType(currentNode, historyNode)) {\n return currentNode;\n }\n\n const reconciler = VestRuntime.useReconciler();\n\n return (\n reconciler(currentNode, historyNode) ??\n BaseReconciler(currentNode, historyNode)\n );\n}\n\nfunction handleNoHistoryNode<I extends TIsolate>(newNode: I): I {\n if (IsolateInspector.usesKey(newNode)) {\n return Reconciler.handleIsolateNodeWithKey(newNode) as I;\n }\n\n return newNode;\n}\n\nfunction removeAllNextNodesInIsolate() {\n const currentNode = VestRuntime.useIsolate();\n const historyNode = VestRuntime.useHistoryIsolate();\n\n if (!historyNode || !currentNode) {\n // This is probably unreachable, but TS is not convinced.\n // Let's play it safe.\n /* istanbul ignore next */\n return;\n }\n\n IsolateMutator.slice(historyNode, IsolateInspector.cursor(currentNode));\n}\n","import { CB, Maybe, Nullable, isNotNullish, isPromise } from 'vest-utils';\n\nimport { useEmit } from 'Bus';\nimport { IsolateKeys } from 'IsolateKeys';\nimport { IsolateMutator } from 'IsolateMutator';\nimport { Reconciler } from 'Reconciler';\nimport { RuntimeEvents } from 'RuntimeEvents';\nimport * as VestRuntime from 'VestRuntime';\n\nexport type IsolateKey = Nullable<string>;\n\nexport type TIsolate<P extends IsolatePayload = IsolatePayload> = {\n [IsolateKeys.AllowReorder]?: boolean;\n [IsolateKeys.Parent]: Nullable<TIsolate>;\n [IsolateKeys.Type]: string;\n [IsolateKeys.Keys]: Nullable<Record<string, TIsolate>>;\n [IsolateKeys.Data]: DataOnly<P>;\n [IsolateKeys.Status]?: string;\n [IsolateKeys.AbortController]: AbortController;\n children: Nullable<TIsolate[]>;\n key: IsolateKey;\n output: any;\n} & UsedFeaturesOnly<P>;\n\ntype DataOnly<P extends IsolatePayload> = Omit<P, keyof IsolateFeatures>;\ntype UsedFeaturesOnly<P extends IsolatePayload> = Pick<\n P,\n keyof IsolateFeatures\n>;\n\nexport class Isolate {\n static create<Payload extends IsolatePayload>(\n type: string,\n callback: CB,\n payload: Maybe<Payload> = undefined,\n key?: IsolateKey\n ): TIsolate<Payload> {\n const parent = VestRuntime.useIsolate();\n\n const newCreatedNode = IsolateMutator.setParent(\n baseIsolate(type, payload, key),\n parent\n );\n\n const nextIsolateChild = Reconciler.reconcile(newCreatedNode);\n\n const localHistoryNode = VestRuntime.useHistoryIsolateAtCurrentPosition();\n\n const output = Object.is(nextIsolateChild, newCreatedNode)\n ? useRunAsNew(localHistoryNode, newCreatedNode, callback)\n : nextIsolateChild.output;\n\n IsolateMutator.setParent(nextIsolateChild, parent);\n IsolateMutator.saveOutput(nextIsolateChild, output);\n VestRuntime.addNodeToHistory(nextIsolateChild);\n\n return nextIsolateChild as TIsolate<Payload>;\n }\n\n static isIsolate(node: any): node is TIsolate {\n return isNotNullish(node) && node[IsolateKeys.Type];\n }\n}\n\n/**\n * Creates a new child isolate context where the local history node is the current history node, thus advancing the history cursor.\n * Runs the callback function and returns its output.\n * @param localHistoryNode The local history node.\n * @param current The current isolate.\n * @param callback The callback function to execute.\n * @returns The output of the callback function.\n */\nfunction useRunAsNew<Callback extends CB = CB>(\n localHistoryNode: Nullable<TIsolate>,\n current: TIsolate,\n callback: CB\n): ReturnType<Callback> {\n const runtimeRoot = VestRuntime.useRuntimeRoot();\n const emit = useEmit();\n\n // We're creating a new child isolate context where the local history node\n // is the current history node, thus advancing the history cursor.\n const output = VestRuntime.Run(\n {\n historyNode: localHistoryNode,\n runtimeNode: current,\n ...(!runtimeRoot && { runtimeRoot: current }),\n },\n () => {\n emit(RuntimeEvents.ISOLATE_ENTER, current);\n const output = callback(current);\n\n if (isPromise(output)) {\n emit(RuntimeEvents.ISOLATE_PENDING, current);\n output.then(iso => {\n if (Isolate.isIsolate(iso)) {\n IsolateMutator.addChild(current, iso);\n }\n\n emit(RuntimeEvents.ISOLATE_DONE, current);\n });\n } else {\n emit(RuntimeEvents.ISOLATE_DONE, current);\n }\n\n return output;\n }\n );\n\n current.output = output;\n return output;\n}\n\nfunction baseIsolate(\n type: string,\n payload: Maybe<IsolatePayload> = undefined,\n key: IsolateKey = null\n): TIsolate {\n const { allowReorder, status, ...data } = payload ?? {};\n return {\n [IsolateKeys.AllowReorder]: allowReorder,\n [IsolateKeys.AbortController]: new AbortController(),\n [IsolateKeys.Keys]: null,\n [IsolateKeys.Parent]: null,\n [IsolateKeys.Type]: type,\n [IsolateKeys.Data]: data as IsolateData,\n ...(status && { [IsolateKeys.Status]: status }),\n children: null,\n key,\n output: null,\n };\n}\n\ntype IsolateData = Record<string, any>;\ntype IsolatePayload = IsolateData & IsolateFeatures;\ntype IsolateFeatures = {\n [IsolateKeys.AllowReorder]?: boolean;\n [IsolateKeys.Status]?: string;\n};\n","import { CB, Nullable, isNullish, optionalFunctionValue } from 'vest-utils';\n\nimport { type TIsolate } from 'Isolate';\nimport { IsolateMutator } from 'IsolateMutator';\n\ntype VisitOnlyPredicate = (isolate: TIsolate) => boolean;\n\n// eslint-disable-next-line\nexport function walk(\n startNode: TIsolate,\n callback: (isolate: TIsolate, breakout: CB<void>) => void,\n visitOnly?: VisitOnlyPredicate\n): void {\n // If the startNode has no children, there is nothing to walk.\n if (isNullish(startNode.children)) {\n return;\n }\n\n let broke = false;\n\n // For each child Isolate object, call the callback function.\n for (const isolate of startNode.children) {\n if (broke) {\n return;\n }\n\n // If visitOnly is not provided or the predicate is satisfied, call the callback function.\n if (isNullish(visitOnly) || optionalFunctionValue(visitOnly, isolate)) {\n callback(isolate, breakout);\n }\n\n // If the breakout function has been called, stop the walk.\n if (broke) {\n return;\n }\n\n // Recursively walk through the child Isolate object.\n walk(\n isolate,\n (child, innerBreakout) => {\n callback(child, () => {\n innerBreakout();\n breakout();\n });\n },\n visitOnly\n );\n }\n\n function breakout() {\n broke = true;\n }\n}\n\n// This function returns true if the given predicate function returns true for any Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function some(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): boolean {\n let hasMatch = false;\n\n // Call the walk function with a callback function that sets hasMatch to true if the predicate is satisfied.\n walk(\n startNode,\n (node, breakout) => {\n if (predicate(node)) {\n breakout();\n hasMatch = true;\n }\n },\n visitOnly\n );\n\n return hasMatch;\n}\n\n// This function returns true if the given predicate function returns true for any Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function has(startNode: TIsolate, match: VisitOnlyPredicate): boolean {\n return some(startNode, () => true, match);\n}\n\n// traverses up to a parent node that satisfies the predicate\n// and returns the first direct descendant that satisfies the predicate\nexport function findClosest<I extends TIsolate = TIsolate>(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): Nullable<I> {\n let found: Nullable<TIsolate> = null;\n let current: Nullable<TIsolate> = startNode;\n\n while (current) {\n found = current.children?.find(predicate) ?? null;\n\n if (found) {\n break;\n }\n\n current = current.parent;\n }\n\n return found as Nullable<I>;\n}\n\n// This function returns the first Isolate object in the tree that satisfies the given predicate function.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function find(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): Nullable<TIsolate> {\n let found = null;\n\n // Call the walk function with a callback function that sets found to the current node if the predicate is satisfied.\n walk(\n startNode,\n (node, breakout) => {\n if (predicate(node)) {\n breakout();\n found = node;\n }\n },\n visitOnly\n );\n\n return found;\n}\n\n// This function returns true if the given predicate function returns true for every Isolate object in the tree.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function every(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): boolean {\n let hasMatch = true;\n walk(\n startNode,\n (node, breakout) => {\n if (!predicate(node)) {\n breakout();\n hasMatch = false;\n }\n },\n visitOnly\n );\n\n return hasMatch;\n}\n\n// This function removes all Isolate objects in the tree that\n// satisfy the given predicate function and have a parent.\n// If visitOnly is provided, only Isolate objects that satisfy the predicate are visited.\nexport function pluck(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean,\n visitOnly?: VisitOnlyPredicate\n): void {\n walk(\n startNode,\n node => {\n if (predicate(node) && node.parent) {\n IsolateMutator.removeChild(node.parent, node);\n }\n },\n visitOnly\n );\n}\n\n// Returns the closest ancestor Isolate object of the given\n//startNode that satisfies the given predicate function.\nexport function closest(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): Nullable<TIsolate> {\n let current: Nullable<TIsolate> = startNode;\n do {\n if (predicate(current)) {\n return current;\n }\n current = current.parent;\n } while (current);\n return null;\n}\n\n// This function returns true if the closest ancestor Isolates of the\n// given startNode that satisfies the given predicate function exists.\nexport function closestExists(\n startNode: TIsolate,\n predicate: (node: TIsolate) => boolean\n): boolean {\n return !!closest(startNode, predicate);\n}\n","import { ErrorStrings } from 'ErrorStrings';\nimport {\n Maybe,\n Nullable,\n assign,\n hasOwnProperty,\n invariant,\n isEmpty,\n isNotNullish,\n isNullish,\n isStringValue,\n text,\n} from 'vest-utils';\n\nimport { TIsolate } from 'Isolate';\nimport {\n ExcludedFromDump,\n IsolateKeys,\n KeyToMinified,\n MinifiedKeys,\n MinifiedToKey,\n} from 'IsolateKeys';\nimport { IsolateMutator } from 'IsolateMutator';\n\nexport class IsolateSerializer {\n // eslint-disable-next-line max-statements, complexity, max-lines-per-function\n static deserialize(\n node: Record<string, any> | TIsolate | string,\n miniMaps: Maybe<MiniMaps>\n ): TIsolate {\n // the assumption is that the tree is built correctly,\n // but the children are missing the parent property to\n // avoid circular references during serialization.\n // in the same way, the parents are missing the `keys` property\n // to avoid circular references during serialization.\n // we need to rebuild the tree and add back the parent property to the children\n // and the keys property to the parents.\n const inverseMinimap = deeplyInvertKeyMap(miniMaps);\n\n // Validate the root object\n const root = isStringValue(node)\n ? JSON.parse(node)\n : ({ ...node } as TIsolate);\n\n IsolateSerializer.validateIsolate(root);\n\n const queue = [root];\n\n // Iterate over the queue until it's empty\n while (queue.length) {\n // Get the next item from the queue\n const current = queue.shift();\n\n // Get the children of the current item\n const children = IsolateSerializer.expandChildren(current);\n\n // Iterate over the minified keys\n for (const key in MinifiedToKey) {\n // Get the value for the current key\n const value = current[key];\n\n // If the value is not null or undefined\n if (isNotNullish(value)) {\n // Get the key to use\n const keyToUse = MinifiedToKey[key];\n\n // If the key is data, then we may need to transform the keys\n // eslint-disable-next-line max-depth\n if (keyToUse === IsolateKeys.Data) {\n // Transform the keys\n current[keyToUse] = transformKeys(\n value,\n inverseMinimap?.keys?.data\n );\n } else {\n // Otherwise, just set the key\n current[keyToUse] = transformValueByKey(\n keyToUse,\n value,\n inverseMinimap\n );\n }\n\n // Remove the old key\n delete current[key];\n }\n }\n\n // If there are no children, nothing to do.\n if (!children) {\n continue;\n }\n\n // Copy the children and set their parent to the current node.\n current.children = children.map(child => {\n const nextChild = { ...child };\n\n IsolateMutator.setParent(nextChild, current);\n queue.push(nextChild);\n\n // If the child has a key, add it to the parent's keys.\n const key = nextChild.key;\n\n if (key) {\n current.keys = current.keys ?? {};\n current.keys[key] = nextChild;\n }\n\n return nextChild;\n });\n }\n\n return root as TIsolate;\n }\n\n static serialize(\n isolate: Nullable<TIsolate>,\n miniMaps: Maybe<MiniMaps>\n ): string {\n if (isNullish(isolate)) {\n return '';\n }\n\n return JSON.stringify(transformIsolate(isolate, miniMaps));\n }\n\n static expandChildren(node: Record<string, any>): Nullable<TIsolate[]> {\n return node[MinifiedKeys.Children]\n ? [...node[MinifiedKeys.Children]]\n : null;\n }\n\n static validateIsolate(node: Record<string, any> | TIsolate): void {\n invariant(\n hasOwnProperty(node, IsolateKeys.Type) ||\n hasOwnProperty(node, KeyToMinified[IsolateKeys.Type]),\n text(ErrorStrings.INVALID_ISOLATE_CANNOT_PARSE)\n );\n }\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction transformIsolate(\n isolate: TIsolate,\n miniMaps: Maybe<MiniMaps>\n): Record<string, any> {\n const next: Record<string, any> = {};\n\n if (isolate.children) {\n next[MinifiedKeys.Children] = isolate.children.map(isolate =>\n transformIsolate(isolate, miniMaps)\n );\n }\n\n if (!isEmpty(isolate.data)) {\n next[MinifiedKeys.Data] = transformKeys(isolate.data, miniMaps?.keys?.data);\n }\n\n for (const key in isolate) {\n // Skip keys that should be excluded from the dump.\n // While we're excluding children from the dump, they'll actually remain there\n // due to the fact that we've already transformed them recursively beforehand\n // thus renaming them to the minified key.\n if (isKeyExcluededFromDump(key)) {\n continue;\n }\n const value = isolate[key as keyof TIsolate];\n\n if (isNullish(value)) {\n continue;\n }\n\n const keyToUse = minifyKey(key);\n next[keyToUse] = transformValueByKey(key, value, miniMaps);\n }\n\n return next;\n}\n\nfunction isKeyExcluededFromDump(key: string): boolean {\n return ExcludedFromDump.includes(key as IsolateKeys);\n}\n\nfunction minifyKey(key: string): string {\n return KeyToMinified[key as keyof typeof KeyToMinified] ?? key;\n}\n\nfunction transformValueByKey(\n key: string,\n value: any,\n miniMaps: Maybe<MiniMaps>\n): any {\n if (isNullish(value)) {\n return value;\n }\n\n const keyMap = miniMaps?.values?.[key as keyof MiniMaps['values']];\n\n return keyMap ? keyMap[value] ?? value : value;\n}\n\nfunction transformKeys(\n data: Record<string, any>,\n keyMap: Maybe<MiniMap>\n): Record<string, any> {\n const next: Record<string, any> = {};\n\n // Loop over each key in the data.\n for (const key in data) {\n // Find the key to use for the next object.\n // If there is no key map, use the original key.\n // If there is a key map, use the key map entry for the current key.\n const keyToUse = (keyMap ? keyMap[key] : key) ?? key;\n\n // Add the key and value to the next object.\n next[keyToUse] = data[key];\n }\n\n // Return the next object.\n return next;\n}\n\ntype MiniMap = Record<string, string>;\n\ntype MiniMaps = Partial<{\n keys: Partial<{\n [IsolateKeys.Data]: MiniMap;\n }>;\n values: Partial<{\n [IsolateKeys.Status]: MiniMap;\n [IsolateKeys.Type]: MiniMap;\n }>;\n}>;\n\nexport function deeplyInvertKeyMap(miniMaps: Maybe<MiniMaps> = {}): MiniMaps {\n return Object.entries(miniMaps).reduce((acc, [key, value]) => {\n if (typeof value === 'object') {\n return assign(acc, {\n [key]: deeplyInvertKeyMap(value as MiniMaps),\n });\n }\n return assign(acc, {\n [value]: key,\n });\n }, {} as MiniMaps);\n}\n"],"names":["isNullish","isNotNullish","invariant","createCascade","assign","bus","optionalFunctionValue","tinyState","deferThrow","text","VestRuntime.useHistoryIsolateAtCurrentPosition","VestRuntime.useHistoryKey","VestRuntime.useSetIsolateKey","VestRuntime.useReconciler","VestRuntime.useIsolate","VestRuntime.useHistoryIsolate","VestRuntime.addNodeToHistory","VestRuntime.useRuntimeRoot","VestRuntime.Run","isPromise","isStringValue","hasOwnProperty","isEmpty"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vest-utils"),require("context")):"function"==typeof define&&define.amd?define(["exports","vest-utils","context"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["vestjs-runtime"]={},t["vest-utils"],t.context)}(this,(function(t,e,n){"use strict";const r={ISOLATE_ENTER:"ISOLATE_ENTER",ISOLATE_PENDING:"ISOLATE_PENDING",ISOLATE_DONE:"ISOLATE_DONE"};var i;"function"==typeof SuppressedError&&SuppressedError,function(t){t.NO_ACTIVE_ISOLATE="Not within an active isolate",t.UNABLE_TO_PICK_NEXT_ISOLATE="Unable to pick next isolate. This is a bug, please report it to the Vest maintainers.",t.ENCOUNTERED_THE_SAME_KEY_TWICE='Encountered the same key "{key}" twice. This may lead to inconsistent or overriding of results.',t.INVALID_ISOLATE_CANNOT_PARSE="Invalid isolate was passed to IsolateSerializer. Cannot proceed."}(i||(i={}));class s{static at(t,n){var r,i;return e.isNullish(t)?null:null!==(i=null===(r=t.children)||void 0===r?void 0:r[n])&&void 0!==i?i:null}static cursor(t){var n,r;return e.isNullish(t)?0:null!==(r=null===(n=t.children)||void 0===n?void 0:n.length)&&void 0!==r?r:0}static canReorder(t){return!e.isNullish(t)&&s.allowsReorder(t.parent)}static allowsReorder(t){return!0===(null==t?void 0:t.allowReorder)}static usesKey(t){return!e.isNullish(t)&&e.isNotNullish(t.key)}static getChildByKey(t,n){var r,i;return e.isNullish(t)?null:null!==(i=null===(r=t.keys)||void 0===r?void 0:r[n])&&void 0!==i?i:null}}class o{static setParent(t,e){return t.parent=e,t}static saveOutput(t,e){return t.output=e,t}static setKey(t,e){return t.key=e,t}static addChild(t,n){var r;e.invariant(t),t.children=null!==(r=t.children)&&void 0!==r?r:[],t.children.push(n),o.setParent(n,t)}static removeChild(t,e){var n,r;t.children=null!==(r=null===(n=t.children)||void 0===n?void 0:n.filter((t=>t!==e)))&&void 0!==r?r:null}static addChildKey(t,n,r){var i;e.invariant(t),t.keys=null!==(i=t.keys)&&void 0!==i?i:{},t.keys[n]=r}static slice(t,n){e.isNullish(t.children)||(t.children.length=n)}static setData(t,e){t.data=e}}const l=n.createCascade(((t,n)=>{if(n)return null;e.invariant(t.historyRoot);const[r]=t.historyRoot(),i={};return e.assign(i,{historyNode:r,runtimeNode:null,runtimeRoot:null,stateRef:t}),i})),u=l.run,a={Run:u,addNodeToHistory:p,createRef:function(t,n){return Object.freeze({Bus:e.bus.createBus(),Reconciler:t,appData:e.optionalFunctionValue(n),historyRoot:e.tinyState.createTinyState(null)})},persist:c,reset:function(){const[,,t]=f();t()},useAvailableRoot:function(){const t=E();if(t)return t;const[e]=f();return e},useCurrentCursor:function(){const t=v();return t?s.cursor(t):0},useHistoryRoot:f,useLoadRootNode:function(t){N(t)},useXAppData:function(){return d().stateRef.appData}};function c(t){const e=l.useX();return(...n)=>{var r;const i=null!==(r=l.use())&&void 0!==r?r:e;return l.run(i.stateRef,(()=>t(...n)))}}function d(){return l.useX()}function f(){return d().stateRef.historyRoot()}function y(){return d().historyNode}function h(){const t=v(),e=y();return t?s.at(e,s.cursor(t)):e}function p(t){const n=v();n?function(t){const n=v();e.invariant(n,i.NO_ACTIVE_ISOLATE),o.addChild(n,t)}(t):N(t),o.setParent(t,n)}function N(t){const[,e]=f();e(t)}function v(){var t;return null!==(t=d().runtimeNode)&&void 0!==t?t:null}function E(){return d().runtimeRoot}function O(){return d().stateRef.Bus}function T(t,n){const r=O().emit;return e.isNullish(t)||r(t,n),c(r)}var I,_,R=Object.freeze({__proto__:null,useBus:O,useEmit:T,usePrepareEmitter:function(t){const e=T();return n=>e(t,n)}});!function(t){t.Type="$type",t.Keys="keys",t.Key="key",t.Parent="parent",t.Data="data",t.AllowReorder="allowReorder",t.Status="status"}(I||(I={})),function(t){t.Type="$",t.Keys="K",t.Key="k",t.Parent="P",t.Data="D",t.AllowReorder="aR",t.Status="S"}(_||(_={}));const S={[I.Type]:_.Type,[I.Keys]:_.Keys,[I.Parent]:_.Parent,[I.Data]:_.Data,[I.Key]:_.Key,[I.AllowReorder]:_.AllowReorder,[I.Status]:_.Status},A=Object.entries(S).reduce(((t,[e,n])=>Object.assign(t,{[n]:e})),{});function m(t,e){return(null==t?void 0:t[I.Type])===e}function C(t,e){return m(t,e[I.Type])}var P=Object.freeze({__proto__:null,isIsolateType:m,isSameIsolateIdentity:function(t,e){return Object.is(t,e)||C(t,e)&&t.key===e.key},isSameIsolateType:C});class b{static reconcile(t){const n=function(t,n){var r;if(e.isNullish(n))return function(t){if(s.usesKey(t))return b.handleIsolateNodeWithKey(t);return t}(t);if(!C(t,n))return t;const i=d().stateRef.Reconciler;return null!==(r=i(t,n))&&void 0!==r?r:function(t,n){return e.isNullish(n),t}(t,n)}(t,h());return e.invariant(n,i.UNABLE_TO_PICK_NEXT_ISOLATE),n}static dropNextNodesOnReorder(t,e,n){const r=t(e,n);return r&&function(){const t=v(),e=y();if(!e||!t)return;o.slice(e,s.cursor(t))}(),r}static handleIsolateNodeWithKey(t){e.invariant(s.usesKey(t));const n=function(t){if(e.isNullish(t))return null;const n=d().historyNode;return s.getChildByKey(n,t)}(t.key);let r=t;return e.isNullish(n)||(r=n),function(t,n){if(!t)return;const r=v();e.invariant(r,i.NO_ACTIVE_ISOLATE),e.isNullish(s.getChildByKey(r,t))?o.addChildKey(r,t,n):e.deferThrow(e.text(i.ENCOUNTERED_THE_SAME_KEY_TWICE,{key:t}))}(t.key,t),r}}class K{static create(t,n,i,s){const l=v(),a=o.setParent(function(t,e,n=null){const r=null!=e?e:{},{allowReorder:i,status:s}=r,o=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]])}return n}(r,["allowReorder","status"]);return Object.assign(Object.assign({[I.AllowReorder]:i,[I.Keys]:null,[I.Parent]:null,[I.Type]:t,[I.Data]:o},s&&{[I.Status]:s}),{children:null,key:n,output:null})}(t,i,s),l),c=b.reconcile(a),d=h(),f=Object.is(c,a)?function(t,n,i){const s=E(),l=T(),a=u(Object.assign({historyNode:t,runtimeNode:n},!s&&{runtimeRoot:n}),(()=>{l(r.ISOLATE_ENTER,n);const t=i(n);return e.isPromise(t)?(l(r.ISOLATE_PENDING,n),t.then((t=>{K.isIsolate(t)&&o.addChild(n,t),l(r.ISOLATE_DONE,n)}))):l(r.ISOLATE_DONE,n),t}));return n.output=a,a}(d,a,n):c.output;return o.setParent(c,l),o.saveOutput(c,f),p(c),c}static isIsolate(t){return e.isNotNullish(t)&&t[I.Type]}}function k(t,n,r){if(e.isNullish(t.children))return;let i=!1;for(const o of t.children){if(i)return;if((e.isNullish(r)||e.optionalFunctionValue(r,o))&&n(o,s),i)return;k(o,((t,e)=>{n(t,(()=>{e(),s()}))}),r)}function s(){i=!0}}function g(t,e,n){let r=!1;return k(t,((t,n)=>{e(t)&&(n(),r=!0)}),n),r}function w(t,e){let n=t;do{if(e(n))return n;n=n.parent}while(n);return null}var L=Object.freeze({__proto__:null,closest:w,closestExists:function(t,e){return!!w(t,e)},every:function(t,e,n){let r=!0;return k(t,((t,n)=>{e(t)||(n(),r=!1)}),n),r},find:function(t,e,n){let r=null;return k(t,((t,n)=>{e(t)&&(n(),r=t)}),n),r},findClosest:function(t,e){var n,r;let i=null,s=t;for(;s&&(i=null!==(r=null===(n=s.children)||void 0===n?void 0:n.find(e))&&void 0!==r?r:null,!i);)s=s.parent;return i},has:function(t,e){return g(t,(()=>!0),e)},pluck:function(t,e,n){k(t,(t=>{e(t)&&t.parent&&o.removeChild(t.parent,t)}),n)},some:g,walk:k});class D{static deserialize(t){const n=e.isStringValue(t)?JSON.parse(t):Object.assign({},t);D.validateIsolate(n);const r=[n];for(;r.length;){const t=r.shift(),n=D.getChildren(t);for(const n in A){const r=t[n];e.isNotNullish(r)&&(t[A[n]]=r,delete t[n])}n&&(t.children=n.map((e=>{var n;const i=Object.assign({},e);o.setParent(i,t),r.push(i);const s=i.key;return s&&(t.keys=null!==(n=t.keys)&&void 0!==n?n:{},t.keys[s]=i),i})))}return n}static serialize(t){return e.isNullish(t)?"":JSON.stringify(j(t))}static getChildren(t){return t.children?[...t.children]:null}static validateIsolate(t){e.invariant(e.hasOwnProperty(t,I.Type)||e.hasOwnProperty(t,S[I.Type]),e.text(i.INVALID_ISOLATE_CANNOT_PARSE))}}function j(t){const n={};t.children&&(n.children=t.children.map(j));for(const r in t){if("children"===r)continue;if(x(r))continue;const i=t[r];e.isNullish(i)||(e.hasOwnProperty(S,r)?n[S[r]]=i:n[r]=i)}return n}function x(t){return[I.Parent,I.Keys].includes(t)}t.Bus=R,t.Isolate=K,t.IsolateInspector=s,t.IsolateMutator=o,t.IsolateSelectors=P,t.IsolateSerializer=D,t.Reconciler=b,t.RuntimeEvents=r,t.VestRuntime=a,t.Walker=L}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vest-utils"),require("context"),require("lodash")):"function"==typeof define&&define.amd?define(["exports","vest-utils","context","lodash"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["vestjs-runtime"]={},t["vest-utils"],t.context,t.lodash)}(this,(function(t,e,n,r){"use strict";const i={ISOLATE_ENTER:"ISOLATE_ENTER",ISOLATE_PENDING:"ISOLATE_PENDING",ISOLATE_DONE:"ISOLATE_DONE"};var o;"function"==typeof SuppressedError&&SuppressedError,function(t){t.NO_ACTIVE_ISOLATE="Not within an active isolate",t.UNABLE_TO_PICK_NEXT_ISOLATE="Unable to pick next isolate. This is a bug, please report it to the Vest maintainers.",t.ENCOUNTERED_THE_SAME_KEY_TWICE='Encountered the same key "{key}" twice. This may lead to inconsistent or overriding of results.',t.INVALID_ISOLATE_CANNOT_PARSE="Invalid isolate was passed to IsolateSerializer. Cannot proceed."}(o||(o={}));class s{static at(t,n){var r,i;return e.isNullish(t)?null:null!==(i=null===(r=t.children)||void 0===r?void 0:r[n])&&void 0!==i?i:null}static cursor(t){var n,r;return e.isNullish(t)?0:null!==(r=null===(n=t.children)||void 0===n?void 0:n.length)&&void 0!==r?r:0}static canReorder(t){return!e.isNullish(t)&&s.allowsReorder(t.parent)}static allowsReorder(t){return!0===(null==t?void 0:t.allowReorder)}static usesKey(t){return!e.isNullish(t)&&e.isNotNullish(t.key)}static getChildByKey(t,n){var r,i;return e.isNullish(t)?null:null!==(i=null===(r=t.keys)||void 0===r?void 0:r[n])&&void 0!==i?i:null}}class l{static setParent(t,e){return t.parent=e,t}static saveOutput(t,e){return t.output=e,t}static setKey(t,e){return t.key=e,t}static addChild(t,n){var r;e.invariant(t),t.children=null!==(r=t.children)&&void 0!==r?r:[],t.children.push(n),l.setParent(n,t)}static removeChild(t,e){var n,r;t.children=null!==(r=null===(n=t.children)||void 0===n?void 0:n.filter((t=>t!==e)))&&void 0!==r?r:null}static addChildKey(t,n,r){var i;e.invariant(t),t.keys=null!==(i=t.keys)&&void 0!==i?i:{},t.keys[n]=r}static slice(t,n){e.isNullish(t.children)||(t.children.length=n)}static setData(t,e){t.data=e}static abort(t,n){e.isNullish(t.abortController)||t.abortController.abort(n)}}const u=n.createCascade(((t,n)=>{if(n)return null;e.invariant(t.historyRoot);const[r]=t.historyRoot(),i={};return e.assign(i,{historyNode:r,runtimeNode:null,runtimeRoot:null,stateRef:t}),i})),a=u.run,c={Run:a,addNodeToHistory:p,createRef:function(t,n){return Object.freeze({Bus:e.bus.createBus(),Reconciler:t,appData:e.optionalFunctionValue(n),historyRoot:e.tinyState.createTinyState(null)})},persist:d,reset:function(){const[,,t]=h();t()},useAvailableRoot:function(){const t=O();if(t)return t;const[e]=h();return e},useCurrentCursor:function(){const t=E();return t?s.cursor(t):0},useHistoryRoot:h,useLoadRootNode:function(t){N(t)},useXAppData:function(){return f().stateRef.appData}};function d(t){const e=u.useX();return(...n)=>{var r;const i=null!==(r=u.use())&&void 0!==r?r:e;return u.run(i.stateRef,(()=>t(...n)))}}function f(){return u.useX()}function h(){return f().stateRef.historyRoot()}function y(){return f().historyNode}function v(){const t=E(),e=y();return t?s.at(e,s.cursor(t)):e}function p(t){const n=E();n?function(t){const n=E();e.invariant(n,o.NO_ACTIVE_ISOLATE),l.addChild(n,t)}(t):N(t),l.setParent(t,n)}function N(t){const[,e]=h();e(t)}function E(){var t;return null!==(t=f().runtimeNode)&&void 0!==t?t:null}function O(){return f().runtimeRoot}function T(){return f().stateRef.Bus}function I(t,n){const r=T().emit;return e.isNullish(t)||r(t,n),d(r)}var _,C,R=Object.freeze({__proto__:null,useBus:T,useEmit:I,usePrepareEmitter:function(t){const e=I();return n=>e(t,n)}});!function(t){t.Type="$type",t.Keys="keys",t.Key="key",t.Parent="parent",t.Data="data",t.AllowReorder="allowReorder",t.Status="status",t.AbortController="abortController",t.Children="children"}(_||(_={})),function(t){t.Type="$",t.Keys="Ks",t.Key="ky",t.Parent="P",t.Data="D",t.AllowReorder="AR",t.Status="S",t.Children="C"}(C||(C={}));const A={[_.Type]:C.Type,[_.Keys]:C.Keys,[_.Parent]:C.Parent,[_.Data]:C.Data,[_.Key]:C.Key,[_.AllowReorder]:C.AllowReorder,[_.Status]:C.Status,[_.Children]:C.Children},S=function(t={}){return Object.entries(t).reduce(((t,[e,n])=>r.assign(t,{[n]:e})),{})}(A);const b=[_.AbortController,_.Parent,_.Keys,_.Children,_.Data];function m(t,e){return(null==t?void 0:t[_.Type])===e}function k(t,e){return m(t,e[_.Type])}var P=Object.freeze({__proto__:null,isIsolateType:m,isSameIsolateIdentity:function(t,e){return Object.is(t,e)||k(t,e)&&t.key===e.key},isSameIsolateType:k});class K{static reconcile(t){const n=function(t,n){var r;if(e.isNullish(n))return function(t){if(s.usesKey(t))return K.handleIsolateNodeWithKey(t);return t}(t);if(!k(t,n))return t;const i=f().stateRef.Reconciler;return null!==(r=i(t,n))&&void 0!==r?r:function(t,n){return e.isNullish(n),t}(t,n)}(t,v());return e.invariant(n,o.UNABLE_TO_PICK_NEXT_ISOLATE),n}static dropNextNodesOnReorder(t,e,n){const r=t(e,n);return r&&function(){const t=E(),e=y();if(!e||!t)return;l.slice(e,s.cursor(t))}(),r}static handleIsolateNodeWithKey(t){e.invariant(s.usesKey(t));const n=function(t){if(e.isNullish(t))return null;const n=f().historyNode;return s.getChildByKey(n,t)}(t.key);let r=t;return e.isNullish(n)||(r=n),function(t,n){if(!t)return;const r=E();e.invariant(r,o.NO_ACTIVE_ISOLATE),e.isNullish(s.getChildByKey(r,t))?l.addChildKey(r,t,n):e.deferThrow(e.text(o.ENCOUNTERED_THE_SAME_KEY_TWICE,{key:t}))}(t.key,t),r}}class g{static create(t,n,r,o){const s=E(),u=l.setParent(function(t,e,n=null){const r=null!=e?e:{},{allowReorder:i,status:o}=r,s=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(t,r[i])&&(n[r[i]]=t[r[i]])}return n}(r,["allowReorder","status"]);return Object.assign(Object.assign({[_.AllowReorder]:i,[_.AbortController]:new AbortController,[_.Keys]:null,[_.Parent]:null,[_.Type]:t,[_.Data]:s},o&&{[_.Status]:o}),{children:null,key:n,output:null})}(t,r,o),s),c=K.reconcile(u),d=v(),f=Object.is(c,u)?function(t,n,r){const o=O(),s=I(),u=a(Object.assign({historyNode:t,runtimeNode:n},!o&&{runtimeRoot:n}),(()=>{s(i.ISOLATE_ENTER,n);const t=r(n);return e.isPromise(t)?(s(i.ISOLATE_PENDING,n),t.then((t=>{g.isIsolate(t)&&l.addChild(n,t),s(i.ISOLATE_DONE,n)}))):s(i.ISOLATE_DONE,n),t}));return n.output=u,u}(d,u,n):c.output;return l.setParent(c,s),l.saveOutput(c,f),p(c),c}static isIsolate(t){return e.isNotNullish(t)&&t[_.Type]}}function D(t,n,r){if(e.isNullish(t.children))return;let i=!1;for(const s of t.children){if(i)return;if((e.isNullish(r)||e.optionalFunctionValue(r,s))&&n(s,o),i)return;D(s,((t,e)=>{n(t,(()=>{e(),o()}))}),r)}function o(){i=!0}}function w(t,e,n){let r=!1;return D(t,((t,n)=>{e(t)&&(n(),r=!0)}),n),r}function L(t,e){let n=t;do{if(e(n))return n;n=n.parent}while(n);return null}var j=Object.freeze({__proto__:null,closest:L,closestExists:function(t,e){return!!L(t,e)},every:function(t,e,n){let r=!0;return D(t,((t,n)=>{e(t)||(n(),r=!1)}),n),r},find:function(t,e,n){let r=null;return D(t,((t,n)=>{e(t)&&(n(),r=t)}),n),r},findClosest:function(t,e){var n,r;let i=null,o=t;for(;o&&(i=null!==(r=null===(n=o.children)||void 0===n?void 0:n.find(e))&&void 0!==r?r:null,!i);)o=o.parent;return i},has:function(t,e){return w(t,(()=>!0),e)},pluck:function(t,e,n){D(t,(t=>{e(t)&&t.parent&&l.removeChild(t.parent,t)}),n)},some:w,walk:D});class x{static deserialize(t,n){var r;const i=X(n),o=e.isStringValue(t)?JSON.parse(t):Object.assign({},t);x.validateIsolate(o);const s=[o];for(;s.length;){const t=s.shift(),n=x.expandChildren(t);for(const n in S){const o=t[n];if(e.isNotNullish(o)){const e=S[n];e===_.Data?t[e]=W(o,null===(r=null==i?void 0:i.keys)||void 0===r?void 0:r.data):t[e]=U(e,o,i),delete t[n]}}n&&(t.children=n.map((e=>{var n;const r=Object.assign({},e);l.setParent(r,t),s.push(r);const i=r.key;return i&&(t.keys=null!==(n=t.keys)&&void 0!==n?n:{},t.keys[i]=r),r})))}return o}static serialize(t,n){return e.isNullish(t)?"":JSON.stringify(B(t,n))}static expandChildren(t){return t[C.Children]?[...t[C.Children]]:null}static validateIsolate(t){e.invariant(e.hasOwnProperty(t,_.Type)||e.hasOwnProperty(t,A[_.Type]),e.text(o.INVALID_ISOLATE_CANNOT_PARSE))}}function B(t,n){var r;const i={};t.children&&(i[C.Children]=t.children.map((t=>B(t,n)))),e.isEmpty(t.data)||(i[C.Data]=W(t.data,null===(r=null==n?void 0:n.keys)||void 0===r?void 0:r.data));for(const r in t){if(V(r))continue;const o=t[r];if(e.isNullish(o))continue;i[z(r)]=U(r,o,n)}return i}function V(t){return b.includes(t)}function z(t){var e;return null!==(e=A[t])&&void 0!==e?e:t}function U(t,n,r){var i,o;if(e.isNullish(n))return n;const s=null===(i=null==r?void 0:r.values)||void 0===i?void 0:i[t];return s&&null!==(o=s[n])&&void 0!==o?o:n}function W(t,e){var n;const r={};for(const i in t){r[null!==(n=e?e[i]:i)&&void 0!==n?n:i]=t[i]}return r}function X(t={}){return Object.entries(t).reduce(((t,[n,r])=>"object"==typeof r?e.assign(t,{[n]:X(r)}):e.assign(t,{[r]:n})),{})}t.Bus=R,t.Isolate=g,t.IsolateInspector=s,t.IsolateMutator=l,t.IsolateSelectors=P,t.IsolateSerializer=x,t.Reconciler=K,t.RuntimeEvents=i,t.VestRuntime=c,t.Walker=j}));
2
2
  //# sourceMappingURL=vestjs-runtime.production.js.map