@derivesome/core 1.0.0 → 1.0.2

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 (131) hide show
  1. package/.package.json.~undo-tree~ +9 -2
  2. package/dist/cjs/array-proxy.d.ts.map +1 -1
  3. package/dist/cjs/array-proxy.js +7 -1
  4. package/dist/cjs/array-proxy.js.map +1 -1
  5. package/dist/cjs/common/array.d.ts.map +1 -1
  6. package/dist/cjs/common/array.js.map +1 -1
  7. package/dist/cjs/common/diff.d.ts +1 -1
  8. package/dist/cjs/common/diff.js +5 -5
  9. package/dist/cjs/common/diff.js.map +1 -1
  10. package/dist/cjs/common/has.d.ts +2 -2
  11. package/dist/cjs/common/has.d.ts.map +1 -1
  12. package/dist/cjs/common/has.js +2 -2
  13. package/dist/cjs/common/has.js.map +1 -1
  14. package/dist/cjs/common/index.d.ts +11 -11
  15. package/dist/cjs/common/match.d.ts +3 -10
  16. package/dist/cjs/common/match.d.ts.map +1 -1
  17. package/dist/cjs/common/match.js +29 -29
  18. package/dist/cjs/common/match.js.map +1 -1
  19. package/dist/cjs/common/patch.d.ts +1 -1
  20. package/dist/cjs/common/patch.js +5 -5
  21. package/dist/cjs/common/types.d.ts +3 -5
  22. package/dist/cjs/common/types.d.ts.map +1 -1
  23. package/dist/cjs/common/unique-array.js +1 -1
  24. package/dist/cjs/common/unique-array.js.map +1 -1
  25. package/dist/cjs/context.d.ts +2 -1
  26. package/dist/cjs/context.d.ts.map +1 -1
  27. package/dist/cjs/context.js +14 -0
  28. package/dist/cjs/context.js.map +1 -1
  29. package/dist/cjs/derived.d.ts.map +1 -1
  30. package/dist/cjs/derived.js +1 -1
  31. package/dist/cjs/effect.d.ts +2 -2
  32. package/dist/cjs/effect.d.ts.map +1 -1
  33. package/dist/cjs/index.d.ts +7 -7
  34. package/dist/cjs/pubsub.d.ts +3 -2
  35. package/dist/cjs/pubsub.d.ts.map +1 -1
  36. package/dist/cjs/pubsub.js +9 -0
  37. package/dist/cjs/pubsub.js.map +1 -1
  38. package/dist/cjs/utils/findRefs.d.ts.map +1 -1
  39. package/dist/cjs/utils/findRefs.js +3 -3
  40. package/dist/cjs/utils/findRefs.js.map +1 -1
  41. package/dist/cjs/utils/index.d.ts +2 -1
  42. package/dist/cjs/utils/index.d.ts.map +1 -1
  43. package/dist/cjs/utils/index.js +1 -0
  44. package/dist/cjs/utils/index.js.map +1 -1
  45. package/dist/cjs/utils/nextTick.d.ts +2 -0
  46. package/dist/cjs/utils/nextTick.d.ts.map +1 -0
  47. package/dist/cjs/utils/nextTick.js +13 -0
  48. package/dist/cjs/utils/nextTick.js.map +1 -0
  49. package/dist/esm/array-proxy.d.ts.map +1 -1
  50. package/dist/esm/array-proxy.js +7 -1
  51. package/dist/esm/array-proxy.js.map +1 -1
  52. package/dist/esm/common/array.d.ts.map +1 -1
  53. package/dist/esm/common/array.js.map +1 -1
  54. package/dist/esm/common/diff.d.ts +1 -1
  55. package/dist/esm/common/diff.js +6 -6
  56. package/dist/esm/common/diff.js.map +1 -1
  57. package/dist/esm/common/has.d.ts +2 -2
  58. package/dist/esm/common/has.d.ts.map +1 -1
  59. package/dist/esm/common/has.js +2 -2
  60. package/dist/esm/common/has.js.map +1 -1
  61. package/dist/esm/common/index.d.ts +11 -11
  62. package/dist/esm/common/index.js +11 -11
  63. package/dist/esm/common/match.d.ts +3 -10
  64. package/dist/esm/common/match.d.ts.map +1 -1
  65. package/dist/esm/common/match.js +29 -29
  66. package/dist/esm/common/match.js.map +1 -1
  67. package/dist/esm/common/patch.d.ts +1 -1
  68. package/dist/esm/common/patch.js +5 -5
  69. package/dist/esm/common/types.d.ts +3 -5
  70. package/dist/esm/common/types.d.ts.map +1 -1
  71. package/dist/esm/common/unique-array.js +1 -1
  72. package/dist/esm/common/unique-array.js.map +1 -1
  73. package/dist/esm/context.d.ts +2 -1
  74. package/dist/esm/context.d.ts.map +1 -1
  75. package/dist/esm/context.js +14 -0
  76. package/dist/esm/context.js.map +1 -1
  77. package/dist/esm/derived.d.ts.map +1 -1
  78. package/dist/esm/derived.js +1 -1
  79. package/dist/esm/effect.d.ts +2 -2
  80. package/dist/esm/effect.d.ts.map +1 -1
  81. package/dist/esm/index.d.ts +7 -7
  82. package/dist/esm/index.js +7 -7
  83. package/dist/esm/pubsub.d.ts +3 -2
  84. package/dist/esm/pubsub.d.ts.map +1 -1
  85. package/dist/esm/pubsub.js +9 -0
  86. package/dist/esm/pubsub.js.map +1 -1
  87. package/dist/esm/utils/findRefs.d.ts.map +1 -1
  88. package/dist/esm/utils/findRefs.js +3 -3
  89. package/dist/esm/utils/findRefs.js.map +1 -1
  90. package/dist/esm/utils/index.d.ts +2 -1
  91. package/dist/esm/utils/index.d.ts.map +1 -1
  92. package/dist/esm/utils/index.js +2 -1
  93. package/dist/esm/utils/index.js.map +1 -1
  94. package/dist/esm/utils/nextTick.d.ts +2 -0
  95. package/dist/esm/utils/nextTick.d.ts.map +1 -0
  96. package/dist/esm/utils/nextTick.js +9 -0
  97. package/dist/esm/utils/nextTick.js.map +1 -0
  98. package/package.json +13 -11
  99. package/package.json~ +2 -2
  100. package/src/.context.ts.~undo-tree~ +12 -0
  101. package/src/.effect.ts.~undo-tree~ +8 -0
  102. package/src/.pubsub.ts.~undo-tree~ +33 -0
  103. package/src/array-proxy.ts +18 -3
  104. package/src/common/.types.ts.~undo-tree~ +5 -0
  105. package/src/common/array.ts +6 -5
  106. package/src/common/diff.test.ts +40 -43
  107. package/src/common/diff.ts +13 -8
  108. package/src/common/has.ts +15 -5
  109. package/src/common/index.ts +11 -11
  110. package/src/common/match.ts +58 -47
  111. package/src/common/patch.test.ts +26 -24
  112. package/src/common/patch.ts +6 -6
  113. package/src/common/string.test.ts +13 -13
  114. package/src/common/types.ts +32 -34
  115. package/src/common/types.ts~ +61 -0
  116. package/src/common/unique-array.ts +1 -1
  117. package/src/context.ts +18 -2
  118. package/src/context.ts~ +36 -0
  119. package/src/derived.ts +2 -2
  120. package/src/effect.ts +2 -2
  121. package/src/effect.ts~ +9 -0
  122. package/src/index.ts +7 -7
  123. package/src/pubsub.ts +20 -5
  124. package/src/pubsub.ts~ +82 -0
  125. package/src/utils/.index.ts.~undo-tree~ +7 -0
  126. package/src/utils/.nextTick.ts.~undo-tree~ +6 -0
  127. package/src/utils/findRefs.ts +5 -7
  128. package/src/utils/index.ts +2 -1
  129. package/src/utils/index.ts~ +2 -0
  130. package/src/utils/nextTick.ts +7 -0
  131. package/src/utils/nextTick.ts~ +7 -0
@@ -10,6 +10,20 @@ export class Context {
10
10
  static get scope() {
11
11
  return this.scopes.current;
12
12
  }
13
+ static async runEffectAsync(effect) {
14
+ if (isFunction(effect)) {
15
+ const prev = this.scope.current.effect;
16
+ this.scope.current.effect = { run: effect };
17
+ await effect();
18
+ this.scope.current.effect = prev;
19
+ }
20
+ else {
21
+ const prev = this.scope.current.effect;
22
+ this.scope.current.effect = effect;
23
+ await effect.run();
24
+ this.scope.current.effect = prev;
25
+ }
26
+ }
13
27
  static runEffect(effect) {
14
28
  if (isFunction(effect)) {
15
29
  const prev = this.scope.current.effect;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAQvC,MAAM,OAAO,KAAK;IAChB,OAAO,GAAc;QACnB,MAAM,EAAE,IAAI;KACb,CAAC;CACH;AAED,MAAM,OAAO,OAAO;IAClB,MAAM,CAAC,MAAM,GAAiB,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IAEvD,MAAM,KAAK,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAA6B;QAC5C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAQvC,MAAM,OAAO,KAAK;IAChB,OAAO,GAAc;QACnB,MAAM,EAAE,IAAI;KACb,CAAC;CACH;AAED,MAAM,OAAO,OAAO;IAClB,MAAM,CAAC,MAAM,GAAiB,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IAEvD,MAAM,KAAK,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,MAAwC;QAExC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAC5C,MAAM,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAA6B;QAC5C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACnC,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../src/derived.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,OAAO,eAAoB,CAAC;AACzC,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC;AAErC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,OAAO,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAChB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAc7D;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../src/derived.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,OAAO,eAAoB,CAAC;AACzC,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC;AAErC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,OAAO,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAc7D;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { compare } from "./common/compare";
2
2
  import { has } from "./common/has";
3
3
  import { Context } from "./context";
4
4
  import { ref } from "./reference";
5
- export const DERIVED = Symbol('Derived');
5
+ export const DERIVED = Symbol("Derived");
6
6
  export function derived(fn) {
7
7
  const state = ref(null);
8
8
  const compute = () => {
@@ -1,7 +1,7 @@
1
1
  import { VoidSyncOrAsyncFunction } from "./common/types";
2
2
  export interface Effect {
3
- run: () => void;
4
- cleanup?: () => void;
3
+ run: () => void | Promise<void>;
4
+ cleanup?: () => void | Promise<void>;
5
5
  }
6
6
  export declare const effect: (fn: VoidSyncOrAsyncFunction) => void;
7
7
  //# sourceMappingURL=effect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../../src/effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,MAAM,GAAI,IAAI,uBAAuB,SAA0B,CAAC"}
1
+ {"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../../src/effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,MAAM,GAAI,IAAI,uBAAuB,SAA0B,CAAC"}
@@ -1,8 +1,8 @@
1
- export * from './common';
2
- export * from './context';
3
- export * from './effect';
4
- export * from './pubsub';
5
- export * from './reference';
6
- export * from './derived';
7
- export * from './utils';
1
+ export * from "./common";
2
+ export * from "./context";
3
+ export * from "./effect";
4
+ export * from "./pubsub";
5
+ export * from "./reference";
6
+ export * from "./derived";
7
+ export * from "./utils";
8
8
  //# sourceMappingURL=index.d.ts.map
package/dist/esm/index.js CHANGED
@@ -1,8 +1,8 @@
1
- export * from './common';
2
- export * from './context';
3
- export * from './effect';
4
- export * from './pubsub';
5
- export * from './reference';
6
- export * from './derived';
7
- export * from './utils';
1
+ export * from "./common";
2
+ export * from "./context";
3
+ export * from "./effect";
4
+ export * from "./pubsub";
5
+ export * from "./reference";
6
+ export * from "./derived";
7
+ export * from "./utils";
8
8
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,9 @@
1
- import { Subscription, VoidFunction } from "./common/types";
1
+ import { Subscription, VoidFunction, VoidSyncOrAsyncFunction } from "./common/types";
2
2
  export interface PubSub<T> {
3
3
  subscribers: Set<Subscription<T>>;
4
- effects: Set<VoidFunction>;
4
+ effects: Set<VoidSyncOrAsyncFunction>;
5
5
  publish: (value: T) => void;
6
+ publishAsync: (value: T) => Promise<void>;
6
7
  subscribe: (fn: Subscription<T>, cleanup?: VoidFunction) => VoidFunction;
7
8
  addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
8
9
  dispose: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG5D,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,SAAS,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;IACzE,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;IAC1E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CA0DrC"}
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;IACzE,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;IAC1E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAoErC"}
@@ -15,6 +15,14 @@ export function pubsub() {
15
15
  sub(value);
16
16
  });
17
17
  };
18
+ const publishAsync = async (value) => {
19
+ for (const effect of effects) {
20
+ await Context.runEffectAsync(effect);
21
+ }
22
+ for (const sub of subscribers) {
23
+ await sub(value);
24
+ }
25
+ };
18
26
  const addEffect = (effect, cleanup) => {
19
27
  effects.add(effect);
20
28
  return addTrash(() => {
@@ -39,6 +47,7 @@ export function pubsub() {
39
47
  subscribers,
40
48
  effects,
41
49
  publish,
50
+ publishAsync,
42
51
  subscribe,
43
52
  addEffect,
44
53
  dispose,
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,UAAU,MAAM;IACpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,MAAM,QAAQ,GAAG,CAAC,EAAgB,EAAgB,EAAE;QAClD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAQ,EAAQ,EAAE;QACjC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,GAAG,CAAC,KAAK,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAChB,MAAoB,EACpB,OAAsB,EACR,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAChB,EAAmB,EACnB,OAAsB,EACR,EAAE;QAChB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEpB,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,OAAO;QACP,OAAO;QACP,SAAS;QACT,SAAS;QACT,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,UAAU,MAAM;IACpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEjD,MAAM,QAAQ,GAAG,CAAC,EAA2B,EAAgB,EAAE;QAC7D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,KAAQ,EAAQ,EAAE;QACjC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,GAAG,CAAC,KAAK,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,KAAQ,EAAiB,EAAE;QACrD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAChB,MAAoB,EACpB,OAAsB,EACR,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAChB,EAAmB,EACnB,OAAsB,EACR,EAAE;QAChB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEpB,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,OAAO;QACP,OAAO;QACP,YAAY;QACZ,SAAS;QACT,SAAS;QACT,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findRefs.d.ts","sourceRoot":"","sources":["../../../src/utils/findRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,SAAS,CAAC,OAAO,CAAC,EAmBvD,CAAA"}
1
+ {"version":3,"file":"findRefs.d.ts","sourceRoot":"","sources":["../../../src/utils/findRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,SAAS,CAAC,OAAO,CAAC,EAiBvD,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { isReference } from "../reference";
2
2
  export const findRefs = (x) => {
3
- if (typeof x === 'undefined' || x === null)
3
+ if (typeof x === "undefined" || x === null)
4
4
  return [];
5
5
  if (isReference(x))
6
6
  return [x];
7
7
  if (Array.isArray(x)) {
8
- return x.map(it => findRefs(it)).flat();
8
+ return x.map((it) => findRefs(it)).flat();
9
9
  }
10
- if (typeof x === 'object' && x !== null) {
10
+ if (typeof x === "object" && x !== null) {
11
11
  const refs = [];
12
12
  for (const [_k, v] of Object.entries(x)) {
13
13
  refs.push(...findRefs(v));
@@ -1 +1 @@
1
- {"version":3,"file":"findRefs.js","sourceRoot":"","sources":["../../../src/utils/findRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAwB,EAAE;IAE3D,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAG/B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"findRefs.js","sourceRoot":"","sources":["../../../src/utils/findRefs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAa,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAwB,EAAE;IAC3D,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,WAAW,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
- export * from './findRefs';
1
+ export * from "./findRefs";
2
+ export * from "./nextTick";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,2 +1,3 @@
1
- export * from './findRefs';
1
+ export * from "./findRefs";
2
+ export * from "./nextTick";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const onNextTick: (fn: () => (void | Promise<void>)) => void;
2
+ //# sourceMappingURL=nextTick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextTick.d.ts","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAM1D,CAAA"}
@@ -0,0 +1,9 @@
1
+ export const onNextTick = (fn) => {
2
+ if (typeof queueMicrotask !== 'undefined') {
3
+ queueMicrotask(fn);
4
+ }
5
+ else {
6
+ setTimeout(fn, 1);
7
+ }
8
+ };
9
+ //# sourceMappingURL=nextTick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextTick.js","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAgC,EAAE,EAAE;IAC7D,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,21 +1,17 @@
1
1
  {
2
2
  "name": "@derivesome/core",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",
7
7
  "typings": "./dist/cjs/index.d.ts",
8
- "scripts": {
9
- "test": "vitest",
10
- "build": "tsc -p tsconfig.json && echo '{\"type\":\"module\"}' > dist/esm/package.json && tsc -p tsconfig.cjs.json",
11
- "format": "prettier ./src --write",
12
- "check": "tsc -p ./tsconfig.json --noEmit"
13
- },
14
8
  "keywords": [],
15
9
  "author": "",
16
10
  "license": "ISC",
17
- "packageManager": "pnpm@10.28.2",
18
- "exports": {
11
+ "files": [
12
+ "*"
13
+ ],
14
+ "exports": {
19
15
  ".": {
20
16
  "import": {
21
17
  "types": "./dist/esm/index.d.ts",
@@ -30,12 +26,18 @@
30
26
  "default": "./dist/cjs/index.js"
31
27
  }
32
28
  }
33
- },
29
+ },
34
30
  "devDependencies": {
35
31
  "@types/node": "^25.2.1",
36
32
  "prettier": "^3.8.1",
37
33
  "tsx": "^4.21.0",
38
34
  "typescript": "^5.9.3",
39
35
  "vitest": "^4.0.18"
36
+ },
37
+ "scripts": {
38
+ "test": "vitest",
39
+ "build": "tsc -p tsconfig.json && echo '{\"type\":\"module\"}' > dist/esm/package.json && tsc -p tsconfig.cjs.json",
40
+ "format": "prettier ./src --write",
41
+ "check": "tsc -p ./tsconfig.json --noEmit"
40
42
  }
41
- }
43
+ }
package/package.json~ CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@derivesome/core",
3
- "version": "1.0.0",
4
- "private": true,
3
+ "version": "1.0.1",
5
4
  "description": "",
6
5
  "main": "./dist/cjs/index.js",
7
6
  "types": "./dist/cjs/index.d.ts",
@@ -15,6 +14,7 @@
15
14
  "keywords": [],
16
15
  "author": "",
17
16
  "license": "ISC",
17
+ "files": ["*"],
18
18
  "packageManager": "pnpm@10.28.2",
19
19
  "exports": {
20
20
  ".": {
@@ -0,0 +1,12 @@
1
+ (undo-tree-save-format-version . 1)
2
+ "feae8b820eeee4ab74cb61545e95f1b7e2d91143"
3
+ [nil nil nil nil (27032 63331 774277 629000) 0 nil]
4
+ ([nil nil ((442 . 444) (#(" " 0 2 (part-side typescript)) . 441) (undo-tree-id8 . -2) (440 . 444) (t 27022 26469 975131 717000)) nil (27032 63331 774276 861000) 0 nil])
5
+ ([nil nil ((nil rear-nonsticky nil 846 . 847) (nil part-side typescript 808 . 847) (nil part-side typescript 804 . 808) (nil face web-mode-constant-face 804 . 808) (nil part-side typescript 794 . 804) (nil part-side typescript 791 . 794) (nil face web-mode-function-call-face 791 . 794) (nil part-side typescript 746 . 791) (nil part-side typescript 742 . 746) (nil face web-mode-constant-face 742 . 746) (nil part-side typescript 713 . 742) (nil part-side typescript 709 . 713) (nil face web-mode-constant-face 709 . 713) (nil part-side typescript 706 . 709) (nil part-side typescript 702 . 706) (nil face web-mode-variable-name-face 702 . 706) (nil part-side typescript 701 . 702) (nil part-side typescript 696 . 701) (nil face web-mode-keyword-face 696 . 701) (nil part-side typescript 687 . 696) (nil part-side typescript 683 . 687) (nil face web-mode-keyword-face 683 . 687) (nil part-side typescript 647 . 683) (nil part-side typescript 643 . 647) (nil face web-mode-constant-face 643 . 647) (nil part-side typescript 633 . 643) (nil part-side typescript 627 . 633) (nil face web-mode-function-call-face 627 . 633) (nil part-side typescript 609 . 627) (nil part-side typescript 606 . 609) (nil face web-mode-variable-name-face 606 . 609) (nil part-side typescript 580 . 606) (nil part-side typescript 576 . 580) (nil face web-mode-constant-face 576 . 580) (nil part-side typescript 547 . 576) (nil part-side typescript 543 . 547) (nil face web-mode-constant-face 543 . 547) (nil part-side typescript 540 . 543) (nil part-side typescript 536 . 540) (nil face web-mode-variable-name-face 536 . 540) (nil part-side typescript 535 . 536) (nil part-side typescript 530 . 535) (nil face web-mode-keyword-face 530 . 535) (nil part-side typescript 512 . 530) (nil part-side typescript 502 . 512) (nil face web-mode-function-call-face 502 . 512) (nil part-side typescript 500 . 502) (nil part-side typescript 498 . 500) (nil face web-mode-keyword-face 498 . 500) (nil part-side typescript 467 . 498) (nil part-side typescript 461 . 467) (nil face web-mode-variable-name-face 461 . 467) (nil part-side typescript 460 . 461) (nil part-side typescript 451 . 460) (nil face web-mode-function-name-face 451 . 460) (nil part-side typescript 450 . 451) (nil part-side typescript 444 . 450) (nil face web-mode-keyword-face 444 . 450) (444 . 847) 443) nil (27032 63331 774275 472000) 0 nil])
6
+ ([nil nil ((461 . 465) (#("y" 0 1 (face web-mode-function-name-face part-side typescript)) . -461) (undo-tree-id7 . -1) 462 (460 . 462)) nil (27032 63331 774269 692000) 0 nil])
7
+ ([nil nil ((#("VoidFunction" 0 12 (part-side typescript)) . 474) (undo-tree-id4 . -11) (undo-tree-id5 . -11) (undo-tree-id6 . -11)) nil (27032 63331 774268 750000) 0 nil])
8
+ ([nil nil ((104 . 128) (474 . 474) (474 . 497) (#("Void" 0 4 (part-side typescript)) . 474) (474 . 478) (#("VoidSyncOrAsyncFunction" 0 23 (part-side typescript)) . -474) (474 . 497) (#("VoidO" 0 5 (part-side typescript)) . -474) (undo-tree-id0 . -5) (undo-tree-id1 . -5) (undo-tree-id2 . -5) (undo-tree-id3 . -5) 479 (474 . 479)) nil (27032 63331 774266 837000) 0 nil])
9
+ ([nil nil ((475 . 481)) nil (27032 63331 774251 389000) 0 nil])
10
+ ([nil nil ((688 . 694) (959 . 965) (547 . 551) (537 . 548)) nil (27032 63331 774250 730000) 0 nil])
11
+ ([nil current ((851 . 857)) nil (27032 63331 774247 771000) 0 nil])
12
+ nil
@@ -0,0 +1,8 @@
1
+ (undo-tree-save-format-version . 1)
2
+ "23b2cad2cda7c8a5f5d689d86fea530fc181bbaa"
3
+ [nil nil nil nil (27032 63326 710525 29000) 0 nil]
4
+ ([nil nil ((#("void" 0 4 (face web-mode-keyword-face part-side typescript)) . 136) (undo-tree-id0 . -4) (undo-tree-id1 . -4) (undo-tree-id2 . -4) (undo-tree-id3 . -4) (undo-tree-id4 . -4) (undo-tree-id5 . -4) (undo-tree-id6 . -4) (undo-tree-id7 . -4) (undo-tree-id8 . -4) (undo-tree-id9 . -4) (undo-tree-id10 . -4) (undo-tree-id11 . -4) (undo-tree-id12 . -4) (undo-tree-id13 . -4) (undo-tree-id14 . -4) (undo-tree-id15 . -4) (undo-tree-id16 . -4) (undo-tree-id17 . -4) (undo-tree-id18 . -4) (undo-tree-id19 . -4) (undo-tree-id20 . -3) (undo-tree-id21 . -3) (undo-tree-id22 . -3) (undo-tree-id23 . -3) (undo-tree-id24 . -3) (undo-tree-id25 . -3) (undo-tree-id26 . -3) (undo-tree-id27 . -3) (undo-tree-id28 . -3) (undo-tree-id29 . -3) (undo-tree-id30 . -3) (undo-tree-id31 . -3) (undo-tree-id32 . -3) (undo-tree-id33 . -3) (undo-tree-id34 . -3) (undo-tree-id35 . -3) (undo-tree-id36 . -3) (undo-tree-id37 . -3) (undo-tree-id38 . -3) (undo-tree-id39 . -3) (undo-tree-id40 . -3) (undo-tree-id41 . -3) (undo-tree-id42 . -3) (undo-tree-id43 . -3) (undo-tree-id44 . -3) (undo-tree-id45 . -3) (undo-tree-id46 . -3) (undo-tree-id47 . -3) (undo-tree-id48 . -3) (undo-tree-id49 . -3) (undo-tree-id50 . -3) (undo-tree-id51 . -3) (undo-tree-id52 . -3) (undo-tree-id53 . -3) (undo-tree-id54 . -4) (undo-tree-id55 . -4) (undo-tree-id56 . -3) (t 27022 26469 975131 717000)) nil (27032 63326 710522 791000) 0 nil])
5
+ ([nil nil ((152 . 156) (137 . 153) (136 . 138)) nil (27032 63326 710455 286000) 0 nil])
6
+ ([nil nil ((#("void" 0 4 (face web-mode-keyword-face part-side typescript)) . 178) (undo-tree-id57 . -3) (undo-tree-id58 . -3) (undo-tree-id59 . -3) (undo-tree-id60 . -4) (undo-tree-id61 . -4) (undo-tree-id62 . -4) (undo-tree-id63 . -4) (undo-tree-id64 . -4) (undo-tree-id65 . -4) (undo-tree-id66 . -4) (undo-tree-id67 . -4) (undo-tree-id68 . -4) (undo-tree-id69 . -4) (undo-tree-id70 . -4) (undo-tree-id71 . -4) (undo-tree-id72 . -4) (undo-tree-id73 . -4) (undo-tree-id74 . -4) (undo-tree-id75 . -4) (undo-tree-id76 . -4) (undo-tree-id77 . -4) (undo-tree-id78 . -4) (undo-tree-id79 . -4) (undo-tree-id80 . -3) (undo-tree-id81 . -3) (undo-tree-id82 . -3) (undo-tree-id83 . -3) (undo-tree-id84 . -3) (undo-tree-id85 . -3) (undo-tree-id86 . -3) (undo-tree-id87 . -3) (undo-tree-id88 . -3) (undo-tree-id89 . -3) (undo-tree-id90 . -3) (undo-tree-id91 . -3) (undo-tree-id92 . -3) (undo-tree-id93 . -3) (undo-tree-id94 . -3) (undo-tree-id95 . -3) (undo-tree-id96 . -3) (undo-tree-id97 . -3) (undo-tree-id98 . -3) (undo-tree-id99 . -3) (undo-tree-id100 . -3) (undo-tree-id101 . -3) (undo-tree-id102 . -3) (undo-tree-id103 . -3) (undo-tree-id104 . -3) (undo-tree-id105 . -3) (undo-tree-id106 . -3) (undo-tree-id107 . -3) (undo-tree-id108 . -3) (undo-tree-id109 . -3) (undo-tree-id110 . -3) (undo-tree-id111 . -3) (undo-tree-id112 . -3) (undo-tree-id113 . -3) (undo-tree-id114 . -3) (undo-tree-id115 . -3) (undo-tree-id116 . -3) (undo-tree-id117 . -4) (undo-tree-id118 . -4) (t 27032 63326 707108 319000)) nil (27032 63414 176831 661000) 0 nil])
7
+ ([nil current ((194 . 198) (179 . 195) (178 . 180)) nil (27032 63414 176462 450000) 0 nil])
8
+ nil
@@ -0,0 +1,33 @@
1
+ (undo-tree-save-format-version . 1)
2
+ "c094f9cf66b0aed85e6800f8afb65d8e71152386"
3
+ [nil nil nil nil (27032 63368 864498 611000) 0 nil]
4
+ ([nil nil ((nil rear-nonsticky nil 228 . 229) (#("
5
+ " 0 1 (part-side typescript)) . -257) (226 . 258) 196 (t 27022 26469 975131 717000)) nil (27032 63368 864497 781000) 0 nil])
6
+ ([nil nil ((266 . 269) (#("p" 0 1 (face web-mode-type-face part-side typescript)) . -266) (undo-tree-id97 . -1) (#("o" 0 1 (face web-mode-type-face part-side typescript)) . -267) (undo-tree-id98 . -1) (#("i" 0 1 (face web-mode-type-face part-side typescript)) . -268) (undo-tree-id99 . -1) (#("d" 0 1 (face web-mode-type-face part-side typescript)) . -269) (undo-tree-id100 . -1) 270 (265 . 270) (257 . 266) (#("v" 0 1 (part-side typescript)) . -257) (undo-tree-id101 . -1) (#("o" 0 1 (part-side typescript)) . -258) (undo-tree-id102 . -1) (#("i" 0 1 (part-side typescript)) . -259) (undo-tree-id103 . -1) (#("d" 0 1 (face web-mode-keyword-face part-side typescript)) . -260) (undo-tree-id104 . -1) 261 (236 . 241)) nil (27032 63368 864496 779000) 0 nil])
7
+ ([nil nil ((603 . 626) (#("VoidO" 0 5 (face web-mode-type-face part-side typescript)) . 603) (603 . 608) (#("VoidSyncOrAsyncFunction" 0 23 (face web-mode-type-face part-side typescript)) . -603) (603 . 626) (#("VoidOr" 0 6 (face web-mode-type-face part-side typescript)) . -603) (undo-tree-id73 . -6) (undo-tree-id74 . -6) (undo-tree-id75 . -6) (undo-tree-id76 . -6) 609 (607 . 609) (#("F" 0 1 (face web-mode-type-face part-side typescript)) . -607) (undo-tree-id77 . -1) (#("u" 0 1 (face web-mode-type-face part-side typescript)) . -608) (undo-tree-id78 . -1) (#("n" 0 1 (face web-mode-type-face part-side typescript)) . -609) (undo-tree-id79 . -1) (#("c" 0 1 (face web-mode-type-face part-side typescript)) . -610) (undo-tree-id80 . -1) (#("t" 0 1 (face web-mode-type-face part-side typescript)) . -611) (undo-tree-id81 . -1) (#("i" 0 1 (face web-mode-type-face part-side typescript)) . -612) (undo-tree-id82 . -1) (#("o" 0 1 (face web-mode-type-face part-side typescript)) . -613) (undo-tree-id83 . -1) (#("n" 0 1 (face web-mode-type-face part-side typescript)) . -614) (undo-tree-id84 . -1) 615 (36 . 60) (181 . 181) (181 . 204) (#("VoidO" 0 5 (face web-mode-type-face part-side typescript)) . 181) (181 . 186) (#("VoidSyncOrAsyncFunction" 0 23 (face web-mode-type-face part-side typescript)) . -181) (181 . 204) (#("VoidO" 0 5 (face web-mode-type-face part-side typescript)) . -181) (undo-tree-id85 . -5) (undo-tree-id86 . -5) (undo-tree-id87 . -5) (undo-tree-id88 . -5) 186 (185 . 186) (#("F" 0 1 (face web-mode-type-face part-side typescript)) . -185) (undo-tree-id89 . -1) (#("u" 0 1 (face web-mode-type-face part-side typescript)) . -186) (undo-tree-id90 . -1) (#("n" 0 1 (face web-mode-type-face part-side typescript)) . -187) (undo-tree-id91 . -1) (#("c" 0 1 (face web-mode-type-face part-side typescript)) . -188) (undo-tree-id92 . -1) (#("t" 0 1 (face web-mode-type-face part-side typescript)) . -189) (undo-tree-id93 . -1) (#("i" 0 1 (face web-mode-type-face part-side typescript)) . -190) (undo-tree-id94 . -1) (#("o" 0 1 (face web-mode-type-face part-side typescript)) . -191) (undo-tree-id95 . -1) (#("n" 0 1 (face web-mode-type-face part-side typescript)) . -192) (undo-tree-id96 . -1) 193) nil (27032 63368 864491 569000) 0 nil])
8
+ ([nil nil ((944 . 946) (#(" " 0 2 (part-side typescript)) . 943) (undo-tree-id72 . -2) (942 . 946)) nil (27032 63368 864305 568000) 0 nil])
9
+ ([nil nil ((nil rear-nonsticky nil 1115 . 1116) (nil part-side typescript 1095 . 1116) (nil part-side typescript 1092 . 1095) (nil face web-mode-function-call-face 1092 . 1095) (nil part-side typescript 1074 . 1092) (nil part-side typescript 1067 . 1074) (nil face web-mode-function-call-face 1067 . 1074) (nil part-side typescript 1037 . 1067) (nil part-side typescript 1028 . 1037) (nil face web-mode-function-call-face 1028 . 1037) (nil part-side typescript 1003 . 1028) (nil part-side typescript 996 . 1003) (nil face web-mode-function-call-face 996 . 1003) (nil part-side typescript 978 . 996) (nil part-side typescript 974 . 978) (nil face web-mode-keyword-face 974 . 978) (nil part-side typescript 968 . 974) (nil part-side typescript 963 . 968) (nil face web-mode-variable-name-face 963 . 968) (nil part-side typescript 959 . 963) (nil part-side typescript 952 . 959) (nil face web-mode-variable-name-face 952 . 959) (nil part-side typescript 951 . 952) (nil part-side typescript 946 . 951) (nil face web-mode-keyword-face 946 . 951) (946 . 1116) 945) nil (27032 63368 864304 428000) 0 nil])
10
+ ([nil nil ((993 . 997) (985 . 994) (#("v" 0 1 (face web-mode-variable-name-face part-side typescript)) . -985) (undo-tree-id65 . -1) (#("o" 0 1 (face web-mode-variable-name-face part-side typescript)) . -986) (undo-tree-id66 . -1) (#("i" 0 1 (face web-mode-variable-name-face part-side typescript)) . -987) (undo-tree-id67 . -1) (#("d" 0 1 (face web-mode-keyword-face part-side typescript)) . -988) (undo-tree-id68 . -1) 989 (967 . 973) (962 . 964) (#("c" 0 1 (face web-mode-variable-name-face part-side typescript)) . -962) (undo-tree-id69 . -1) (#("n" 0 1 (face web-mode-variable-name-face part-side typescript)) . -963) (undo-tree-id70 . -1) (#("c" 0 1 (face web-mode-variable-name-face part-side typescript)) . -964) (undo-tree-id71 . -1) 965 (959 . 965)) nil (27032 63368 864301 663000) 0 nil])
11
+ ([nil nil ((1040 . 1046) (1041 . 1045) (#(" " 0 6 (part-side typescript)) . 1040) (1040 . 1046) (1039 . 1041) (#("}" 0 1 (part-side typescript)) . -1039) (1039 . 1040) (#("}" 0 1 (part-side typescript)) . -1039) (1039 . 1040) (1037 . 1040) (1027 . 1036) (1013 . 1027) (1008 . 1014) (1003 . 1008)) nil (27032 63368 864297 498000) 0 nil])
12
+ ([nil nil ((1082 . 1083) (1075 . 1081) (1074 . 1076) (1060 . 1074) (#("runEffectAsync" 0 14 (part-side typescript)) . -1060) (1060 . 1074) (#("run" 0 3 (part-side typescript)) . -1060) (undo-tree-id61 . -3) (undo-tree-id62 . -3) (undo-tree-id63 . -3) (undo-tree-id64 . -3) 1063 (1046 . 1063)) nil (27032 63368 864295 913000) 0 nil])
13
+ ([nil nil ((1149 . 1150) (1143 . 1148) (1140 . 1144) (#("b" 0 1 (part-side typescript)) . -1140) (undo-tree-id56 . -1) (undo-tree-id57 . -1) (undo-tree-id58 . -1) (undo-tree-id59 . -1) 1141 (1133 . 1141) (1127 . 1133) (1128 . 1132) (#(" " 0 6 (part-side typescript)) . 1127) (1127 . 1133) (1126 . 1128) (#("}" 0 1 (part-side typescript)) . -1126) (1126 . 1127) (#("}" 0 1 (part-side typescript)) . -1126) (1126 . 1127) (1124 . 1127) (1122 . 1123) (#("t" 0 1 (part-side typescript)) . -1122) (undo-tree-id60 . -1) 1123 (1122 . 1123) (1115 . 1122) (1099 . 1115) (1094 . 1100) (1089 . 1094)) nil (27032 63368 864293 158000) 0 nil])
14
+ ([nil nil ((#(" effects.forEach((fx) => {
15
+ " 0 12 (part-side typescript) 12 19 (face web-mode-function-call-face part-side typescript) 19 30 (part-side typescript)) . 1157) (undo-tree-id54 . -29) (undo-tree-id55 . -22) 1179) nil (27032 63368 864288 402000) 0 nil])
16
+ ([nil nil ((#(" Context.runEffect(fx);
17
+ " 0 14 (part-side typescript) 14 23 (face web-mode-function-call-face part-side typescript) 23 29 (part-side typescript)) . 1157) (undo-tree-id48 . -28) (undo-tree-id49 . -21) (undo-tree-id50 . -21) (undo-tree-id51 . -21) (undo-tree-id52 . -21) (undo-tree-id53 . -22) 1179) nil (27032 63368 864287 248000) 0 nil])
18
+ ([nil nil ((#(" });
19
+ " 0 8 (part-side typescript)) . 1157) (undo-tree-id46 . -7) (undo-tree-id47 . -6) 1163) nil (27032 63368 864284 962000) 0 nil])
20
+ ([nil nil ((#(" subscribers.forEach((sub) => {
21
+ " 0 16 (part-side typescript) 16 23 (face web-mode-function-call-face part-side typescript) 23 35 (part-side typescript)) . 1157) (undo-tree-id44 . -34) (undo-tree-id45 . -6) 1163) nil (27032 63368 864283 300000) 0 nil])
22
+ ([nil nil ((#(" sub(value);
23
+ " 0 6 (part-side typescript) 6 9 (face web-mode-function-call-face part-side typescript) 9 18 (part-side typescript)) . 1157) (undo-tree-id33 . -17) (undo-tree-id34 . -6) (undo-tree-id35 . -6) (undo-tree-id36 . -6) (undo-tree-id37 . -6) (undo-tree-id38 . -6) (undo-tree-id39 . -6) (undo-tree-id40 . -6) (undo-tree-id41 . -6) (undo-tree-id42 . -6) (undo-tree-id43 . -18) 1163) nil (27032 63368 864281 606000) 0 nil])
24
+ ([nil nil ((#(" });
25
+ " 0 8 (part-side typescript)) . 1157) (undo-tree-id0 . -7) (undo-tree-id1 . -6) (undo-tree-id2 . -6) (undo-tree-id3 . -6) (undo-tree-id4 . -6) (undo-tree-id5 . -6) (undo-tree-id6 . -6) (undo-tree-id7 . -6) (undo-tree-id8 . -6) (undo-tree-id9 . -6) (undo-tree-id10 . -6) (undo-tree-id11 . -6) (undo-tree-id12 . -6) (undo-tree-id13 . -6) (undo-tree-id14 . -6) (undo-tree-id15 . -6) (undo-tree-id16 . -6) (undo-tree-id17 . -6) (undo-tree-id18 . -6) (undo-tree-id19 . -6) (undo-tree-id20 . -6) (undo-tree-id21 . -6) (undo-tree-id22 . -6) (undo-tree-id23 . -6) (undo-tree-id24 . -6) (undo-tree-id25 . -6) (undo-tree-id26 . -6) (undo-tree-id27 . -6) (undo-tree-id28 . -6) (undo-tree-id29 . -6) (undo-tree-id30 . -6) (undo-tree-id31 . -6) (undo-tree-id32 . -8) 1163) nil (27032 63368 864277 651000) 0 nil])
26
+ ([nil nil ((nil rear-nonsticky nil 1787 . 1788) (#("
27
+ " 0 1 (part-side typescript)) . -1796) (1783 . 1797) 1782) nil (27032 63368 864048 123000) 0 nil])
28
+ ([nil nil ((1795 . 1800)) nil (27032 63368 864045 414000) 0 nil])
29
+ ([nil nil ((#("VoidFunction" 0 12 (face web-mode-type-face part-side typescript)) . 655) (undo-tree-id175 . -11) (undo-tree-id176 . -11) (undo-tree-id177 . -11) (t 27032 63370 546558 484000)) nil (27032 63457 825628 650000) 0 nil])
30
+ ([nil nil ((655 . 678) (#("V" 0 1 (face web-mode-type-face part-side typescript)) . 655) (655 . 656) (#("VoidSyncOrAsyncFunction" 0 23 (face web-mode-type-face part-side typescript)) . -655) (655 . 678) (#("VoidSy" 0 6 (face web-mode-type-face part-side typescript)) . -655) (undo-tree-id171 . -6) (undo-tree-id172 . -6) (undo-tree-id173 . -6) (undo-tree-id174 . -6) 661 (655 . 661)) nil (27032 63457 825627 62000) 0 nil])
31
+ ([nil nil ((#("VoidFunction" 0 12 (part-side typescript)) . 708) (undo-tree-id109 . -11) (undo-tree-id110 . -11) (undo-tree-id111 . -11) (undo-tree-id112 . -12) (undo-tree-id113 . -12) (undo-tree-id114 . -12) (undo-tree-id115 . -12) (undo-tree-id116 . -12) (undo-tree-id117 . -12) (undo-tree-id118 . -12) (undo-tree-id119 . -12) (undo-tree-id120 . -12) (undo-tree-id121 . -12) (undo-tree-id122 . -12) (undo-tree-id123 . -12) (undo-tree-id124 . -12) (undo-tree-id125 . -12) (undo-tree-id126 . -12) (undo-tree-id127 . -11) (undo-tree-id128 . -11) (undo-tree-id129 . -11) (undo-tree-id130 . -11) (undo-tree-id131 . -11) (undo-tree-id132 . -11) (undo-tree-id133 . -11) (undo-tree-id134 . -11) (undo-tree-id135 . -11) (undo-tree-id136 . -11) (undo-tree-id137 . -11) (undo-tree-id138 . -11) (undo-tree-id139 . -11) (undo-tree-id140 . -11) (undo-tree-id141 . -11) (undo-tree-id142 . -11) (undo-tree-id143 . -11) (undo-tree-id144 . -11) (undo-tree-id145 . -11) (undo-tree-id146 . -11) (undo-tree-id147 . -11) (undo-tree-id148 . -11) (undo-tree-id149 . -11) (undo-tree-id150 . -11) (undo-tree-id151 . -11) (undo-tree-id152 . -11) (undo-tree-id153 . -11) (undo-tree-id154 . -11) (undo-tree-id155 . -11) (undo-tree-id156 . -11) (undo-tree-id157 . -11) (undo-tree-id158 . -11) (undo-tree-id159 . -11) (undo-tree-id160 . -11) (undo-tree-id161 . -11) (undo-tree-id162 . -11) (undo-tree-id163 . -11) (undo-tree-id164 . -11) (undo-tree-id165 . -11) (undo-tree-id166 . -11) (undo-tree-id167 . -11) (undo-tree-id168 . -11) (undo-tree-id169 . -12) (undo-tree-id170 . -12)) nil (27032 63457 825623 797000) 0 nil])
32
+ ([nil current ((708 . 731) (#("V" 0 1 (part-side typescript)) . 708) (708 . 709) (#("VoidSyncOrAsyncFunction" 0 23 (part-side typescript)) . -708) (708 . 731) (#("VoidS" 0 5 (part-side typescript)) . -708) (undo-tree-id105 . -5) (undo-tree-id106 . -5) (undo-tree-id107 . -5) (undo-tree-id108 . -5) 713 (708 . 713)) nil (27032 63457 825604 179000) 0 nil])
33
+ nil
@@ -6,7 +6,13 @@ export type ArrayMutation<T> =
6
6
  | { type: "pop"; removed: T | undefined }
7
7
  | { type: "shift"; removed: T | undefined }
8
8
  | { type: "unshift"; items: T[] }
9
- | { type: "splice"; start: number; deleteCount: number; removed: T[]; added: T[] }
9
+ | {
10
+ type: "splice";
11
+ start: number;
12
+ deleteCount: number;
13
+ removed: T[];
14
+ added: T[];
15
+ }
10
16
  | { type: "sort" }
11
17
  | { type: "reverse" }
12
18
  | { type: "fill"; value: T; start: number; end: number }
@@ -21,7 +27,10 @@ export class ArrayProxy<T> extends Array<T> {
21
27
  this.ps = pubsub<ArrayMutation<T>>();
22
28
  }
23
29
 
24
- subscribe(fn: (mutation: ArrayMutation<T>) => void, cleanup?: VoidFunction): VoidFunction {
30
+ subscribe(
31
+ fn: (mutation: ArrayMutation<T>) => void,
32
+ cleanup?: VoidFunction,
33
+ ): VoidFunction {
25
34
  return this.ps.subscribe(fn, cleanup);
26
35
  }
27
36
 
@@ -52,7 +61,13 @@ export class ArrayProxy<T> extends Array<T> {
52
61
  override splice(start: number, deleteCount?: number, ...items: T[]): T[] {
53
62
  const dc = deleteCount ?? this.length - start;
54
63
  const removed = super.splice(start, dc, ...items);
55
- this.ps.publish({ type: "splice", start, deleteCount: dc, removed, added: items });
64
+ this.ps.publish({
65
+ type: "splice",
66
+ start,
67
+ deleteCount: dc,
68
+ removed,
69
+ added: items,
70
+ });
56
71
  return removed;
57
72
  }
58
73
 
@@ -0,0 +1,5 @@
1
+ (undo-tree-save-format-version . 1)
2
+ "43e543cc2b42fbd760f0afa27a0c00d59c3006cd"
3
+ [nil nil nil nil (27032 63195 525431 16000) 0 nil]
4
+ ([nil current ((123 . 127) (112 . 124) (107 . 108) (111 . 112) (#(")" 0 1 (part-side typescript)) . -111) (111 . 112) (t 27022 26469 975131 717000)) nil (27032 63195 525428 210000) 0 nil])
5
+ nil
@@ -10,7 +10,10 @@ export const zipMin = <A, B>(a: A[], b: B[]): Array<[A, B]> => {
10
10
  return range(length).map((i) => [a[i]!, b[i]!]);
11
11
  };
12
12
 
13
- export const zipMax = <A, B>(a: A[], b: B[]): Array<[A | undefined, B | undefined]> => {
13
+ export const zipMax = <A, B>(
14
+ a: A[],
15
+ b: B[],
16
+ ): Array<[A | undefined, B | undefined]> => {
14
17
  const length = Math.max(a.length, b.length);
15
18
  return range(length).map((i) => [a[i], b[i]]);
16
19
  };
@@ -19,7 +22,7 @@ export const zipByKey = <A, B>(
19
22
  a: A[],
20
23
  b: B[],
21
24
  getKey: <T extends A | B>(item: T) => PropertyKey | null,
22
- ): { pairs: Array<[A, B]>, restA: A[], restB: B[] } => {
25
+ ): { pairs: Array<[A, B]>; restA: A[]; restB: B[] } => {
23
26
  const keys = Array.from(
24
27
  new Set(
25
28
  [...a.map((x) => getKey(x)), ...b.map((x) => getKey(x))].filter(
@@ -62,11 +65,9 @@ export const zipByKey = <A, B>(
62
65
  }
63
66
  }
64
67
 
65
-
66
68
  return { pairs: z, restA, restB };
67
69
  };
68
70
 
69
-
70
71
  export const unique = <T>(arr: T[]): T[] => {
71
72
  return Array.from(new Set<T>(arr));
72
- }
73
+ };
@@ -1,114 +1,111 @@
1
- import { describe, it, assert } from 'vitest';
2
- import { diff } from './diff';
1
+ import { describe, it, assert } from "vitest";
2
+ import { diff } from "./diff";
3
3
 
4
- describe('diff', () => {
5
- it('should return empty array for identical primitives', () => {
4
+ describe("diff", () => {
5
+ it("should return empty array for identical primitives", () => {
6
6
  assert.deepEqual(diff(1, 1), []);
7
- assert.deepEqual(diff('hello', 'hello'), []);
7
+ assert.deepEqual(diff("hello", "hello"), []);
8
8
  assert.deepEqual(diff(true, true), []);
9
9
  });
10
10
 
11
- it('should detect changed primitives', () => {
11
+ it("should detect changed primitives", () => {
12
12
  const result = diff(1, 2);
13
13
  assert.deepEqual(result, [
14
- { type: 'changed', path: [], oldValue: 1, newValue: 2 },
14
+ { type: "changed", path: [], oldValue: 1, newValue: 2 },
15
15
  ]);
16
16
  });
17
17
 
18
- it('should return empty array for identical objects', () => {
18
+ it("should return empty array for identical objects", () => {
19
19
  assert.deepEqual(diff({ a: 1, b: 2 }, { a: 1, b: 2 }), []);
20
20
  });
21
21
 
22
- it('should detect changed properties', () => {
22
+ it("should detect changed properties", () => {
23
23
  const result = diff({ a: 1 }, { a: 2 });
24
24
  assert.deepEqual(result, [
25
- { type: 'changed', path: ['a'], oldValue: 1, newValue: 2 },
25
+ { type: "changed", path: ["a"], oldValue: 1, newValue: 2 },
26
26
  ]);
27
27
  });
28
28
 
29
- it('should detect added properties', () => {
29
+ it("should detect added properties", () => {
30
30
  const result = diff({ a: 1 } as any, { a: 1, b: 2 } as any);
31
- assert.deepEqual(result, [
32
- { type: 'added', path: ['b'], newValue: 2 },
33
- ]);
31
+ assert.deepEqual(result, [{ type: "added", path: ["b"], newValue: 2 }]);
34
32
  });
35
33
 
36
- it('should detect removed properties', () => {
34
+ it("should detect removed properties", () => {
37
35
  const result = diff({ a: 1, b: 2 } as any, { a: 1 } as any);
38
- assert.deepEqual(result, [
39
- { type: 'removed', path: ['b'], oldValue: 2 },
40
- ]);
36
+ assert.deepEqual(result, [{ type: "removed", path: ["b"], oldValue: 2 }]);
41
37
  });
42
38
 
43
- it('should handle nested object diffs', () => {
39
+ it("should handle nested object diffs", () => {
44
40
  const a = { x: { y: { z: 1 } } };
45
41
  const b = { x: { y: { z: 2 } } };
46
42
  const result = diff(a, b);
47
43
  assert.deepEqual(result, [
48
- { type: 'changed', path: ['x', 'y', 'z'], oldValue: 1, newValue: 2 },
44
+ { type: "changed", path: ["x", "y", "z"], oldValue: 1, newValue: 2 },
49
45
  ]);
50
46
  });
51
47
 
52
- it('should handle array element changes', () => {
48
+ it("should handle array element changes", () => {
53
49
  const result = diff([1, 2, 3], [1, 9, 3]);
54
50
  assert.deepEqual(result, [
55
- { type: 'changed', path: [1], oldValue: 2, newValue: 9 },
51
+ { type: "changed", path: [1], oldValue: 2, newValue: 9 },
56
52
  ]);
57
53
  });
58
54
 
59
- it('should detect added array elements', () => {
55
+ it("should detect added array elements", () => {
60
56
  const result = diff([1, 2], [1, 2, 3]);
61
- assert.deepEqual(result, [
62
- { type: 'added', path: [2], newValue: 3 },
63
- ]);
57
+ assert.deepEqual(result, [{ type: "added", path: [2], newValue: 3 }]);
64
58
  });
65
59
 
66
- it('should detect removed array elements', () => {
60
+ it("should detect removed array elements", () => {
67
61
  const result = diff([1, 2, 3], [1, 2]);
68
- assert.deepEqual(result, [
69
- { type: 'removed', path: [2], oldValue: 3 },
70
- ]);
62
+ assert.deepEqual(result, [{ type: "removed", path: [2], oldValue: 3 }]);
71
63
  });
72
64
 
73
- it('should handle nested arrays inside objects', () => {
65
+ it("should handle nested arrays inside objects", () => {
74
66
  const a = { items: [1, 2] };
75
67
  const b = { items: [1, 3] };
76
68
  const result = diff(a, b);
77
69
  assert.deepEqual(result, [
78
- { type: 'changed', path: ['items', 1], oldValue: 2, newValue: 3 },
70
+ { type: "changed", path: ["items", 1], oldValue: 2, newValue: 3 },
79
71
  ]);
80
72
  });
81
73
 
82
- it('should detect type change from object to primitive', () => {
74
+ it("should detect type change from object to primitive", () => {
83
75
  const result = diff({ a: { b: 1 } } as any, { a: 42 } as any);
84
76
  assert.deepEqual(result, [
85
- { type: 'changed', path: ['a'], oldValue: { b: 1 }, newValue: 42 },
77
+ { type: "changed", path: ["a"], oldValue: { b: 1 }, newValue: 42 },
86
78
  ]);
87
79
  });
88
80
 
89
- it('should detect type change from array to object', () => {
81
+ it("should detect type change from array to object", () => {
90
82
  const result = diff({ a: [1, 2] } as any, { a: { x: 1 } } as any);
91
83
  assert.deepEqual(result, [
92
- { type: 'changed', path: ['a'], oldValue: [1, 2], newValue: { x: 1 } },
84
+ { type: "changed", path: ["a"], oldValue: [1, 2], newValue: { x: 1 } },
93
85
  ]);
94
86
  });
95
87
 
96
- it('should handle symbol keys', () => {
97
- const sym = Symbol('test');
88
+ it("should handle symbol keys", () => {
89
+ const sym = Symbol("test");
98
90
  const a = { [sym]: 1 };
99
91
  const b = { [sym]: 2 };
100
92
  const result = diff(a, b);
101
93
  assert.deepEqual(result, [
102
- { type: 'changed', path: [sym], oldValue: 1, newValue: 2 },
94
+ { type: "changed", path: [sym], oldValue: 1, newValue: 2 },
103
95
  ]);
104
96
  });
105
97
 
106
- it('should handle deeply nested mixed structures', () => {
107
- const a = { users: [{ name: 'Alice', scores: [10, 20] }] };
108
- const b = { users: [{ name: 'Alice', scores: [10, 30] }] };
98
+ it("should handle deeply nested mixed structures", () => {
99
+ const a = { users: [{ name: "Alice", scores: [10, 20] }] };
100
+ const b = { users: [{ name: "Alice", scores: [10, 30] }] };
109
101
  const result = diff(a, b);
110
102
  assert.deepEqual(result, [
111
- { type: 'changed', path: ['users', 0, 'scores', 1], oldValue: 20, newValue: 30 },
103
+ {
104
+ type: "changed",
105
+ path: ["users", 0, "scores", 1],
106
+ oldValue: 20,
107
+ newValue: 30,
108
+ },
112
109
  ]);
113
110
  });
114
111
  });