@derivesome/core 1.0.0

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 (217) hide show
  1. package/.README.md.~undo-tree~ +4 -0
  2. package/.package.json.~undo-tree~ +30 -0
  3. package/.tsconfig.cjs.json.~undo-tree~ +8 -0
  4. package/.tsconfig.json.~undo-tree~ +14 -0
  5. package/README.md +355 -0
  6. package/README.md~ +355 -0
  7. package/dist/cjs/array-proxy.d.ts +56 -0
  8. package/dist/cjs/array-proxy.d.ts.map +1 -0
  9. package/dist/cjs/array-proxy.js +72 -0
  10. package/dist/cjs/array-proxy.js.map +1 -0
  11. package/dist/cjs/common/array.d.ts +11 -0
  12. package/dist/cjs/common/array.d.ts.map +1 -0
  13. package/dist/cjs/common/array.js +57 -0
  14. package/dist/cjs/common/array.js.map +1 -0
  15. package/dist/cjs/common/compare.d.ts +2 -0
  16. package/dist/cjs/common/compare.d.ts.map +1 -0
  17. package/dist/cjs/common/compare.js +8 -0
  18. package/dist/cjs/common/compare.js.map +1 -0
  19. package/dist/cjs/common/diff.d.ts +9 -0
  20. package/dist/cjs/common/diff.d.ts.map +1 -0
  21. package/dist/cjs/common/diff.js +63 -0
  22. package/dist/cjs/common/diff.js.map +1 -0
  23. package/dist/cjs/common/has.d.ts +4 -0
  24. package/dist/cjs/common/has.d.ts.map +1 -0
  25. package/dist/cjs/common/has.js +11 -0
  26. package/dist/cjs/common/has.js.map +1 -0
  27. package/dist/cjs/common/index.d.ts +12 -0
  28. package/dist/cjs/common/index.d.ts.map +1 -0
  29. package/dist/cjs/common/index.js +28 -0
  30. package/dist/cjs/common/index.js.map +1 -0
  31. package/dist/cjs/common/is.d.ts +5 -0
  32. package/dist/cjs/common/is.d.ts.map +1 -0
  33. package/dist/cjs/common/is.js +18 -0
  34. package/dist/cjs/common/is.js.map +1 -0
  35. package/dist/cjs/common/match.d.ts +23 -0
  36. package/dist/cjs/common/match.d.ts.map +1 -0
  37. package/dist/cjs/common/match.js +49 -0
  38. package/dist/cjs/common/match.js.map +1 -0
  39. package/dist/cjs/common/patch.d.ts +3 -0
  40. package/dist/cjs/common/patch.d.ts.map +1 -0
  41. package/dist/cjs/common/patch.js +44 -0
  42. package/dist/cjs/common/patch.js.map +1 -0
  43. package/dist/cjs/common/stack.d.ts +8 -0
  44. package/dist/cjs/common/stack.d.ts.map +1 -0
  45. package/dist/cjs/common/stack.js +24 -0
  46. package/dist/cjs/common/stack.js.map +1 -0
  47. package/dist/cjs/common/string.d.ts +2 -0
  48. package/dist/cjs/common/string.d.ts.map +1 -0
  49. package/dist/cjs/common/string.js +36 -0
  50. package/dist/cjs/common/string.js.map +1 -0
  51. package/dist/cjs/common/types.d.ts +27 -0
  52. package/dist/cjs/common/types.d.ts.map +1 -0
  53. package/dist/cjs/common/types.js +3 -0
  54. package/dist/cjs/common/types.js.map +1 -0
  55. package/dist/cjs/common/unique-array.d.ts +17 -0
  56. package/dist/cjs/common/unique-array.d.ts.map +1 -0
  57. package/dist/cjs/common/unique-array.js +73 -0
  58. package/dist/cjs/common/unique-array.js.map +1 -0
  59. package/dist/cjs/context.d.ts +15 -0
  60. package/dist/cjs/context.d.ts.map +1 -0
  61. package/dist/cjs/context.js +33 -0
  62. package/dist/cjs/context.js.map +1 -0
  63. package/dist/cjs/derived.d.ts +11 -0
  64. package/dist/cjs/derived.d.ts.map +1 -0
  65. package/dist/cjs/derived.js +26 -0
  66. package/dist/cjs/derived.js.map +1 -0
  67. package/dist/cjs/effect.d.ts +7 -0
  68. package/dist/cjs/effect.d.ts.map +1 -0
  69. package/dist/cjs/effect.js +7 -0
  70. package/dist/cjs/effect.js.map +1 -0
  71. package/dist/cjs/index.d.ts +8 -0
  72. package/dist/cjs/index.d.ts.map +1 -0
  73. package/dist/cjs/index.js +24 -0
  74. package/dist/cjs/index.js.map +1 -0
  75. package/dist/cjs/observable.d.ts +12 -0
  76. package/dist/cjs/observable.d.ts.map +1 -0
  77. package/dist/cjs/observable.js +24 -0
  78. package/dist/cjs/observable.js.map +1 -0
  79. package/dist/cjs/pubsub.d.ts +11 -0
  80. package/dist/cjs/pubsub.d.ts.map +1 -0
  81. package/dist/cjs/pubsub.js +50 -0
  82. package/dist/cjs/pubsub.js.map +1 -0
  83. package/dist/cjs/reference.d.ts +15 -0
  84. package/dist/cjs/reference.d.ts.map +1 -0
  85. package/dist/cjs/reference.js +49 -0
  86. package/dist/cjs/reference.js.map +1 -0
  87. package/dist/cjs/utils/findRefs.d.ts +3 -0
  88. package/dist/cjs/utils/findRefs.d.ts.map +1 -0
  89. package/dist/cjs/utils/findRefs.js +23 -0
  90. package/dist/cjs/utils/findRefs.js.map +1 -0
  91. package/dist/cjs/utils/index.d.ts +2 -0
  92. package/dist/cjs/utils/index.d.ts.map +1 -0
  93. package/dist/cjs/utils/index.js +18 -0
  94. package/dist/cjs/utils/index.js.map +1 -0
  95. package/dist/esm/array-proxy.d.ts +56 -0
  96. package/dist/esm/array-proxy.d.ts.map +1 -0
  97. package/dist/esm/array-proxy.js +68 -0
  98. package/dist/esm/array-proxy.js.map +1 -0
  99. package/dist/esm/common/array.d.ts +11 -0
  100. package/dist/esm/common/array.d.ts.map +1 -0
  101. package/dist/esm/common/array.js +48 -0
  102. package/dist/esm/common/array.js.map +1 -0
  103. package/dist/esm/common/compare.d.ts +2 -0
  104. package/dist/esm/common/compare.d.ts.map +1 -0
  105. package/dist/esm/common/compare.js +4 -0
  106. package/dist/esm/common/compare.js.map +1 -0
  107. package/dist/esm/common/diff.d.ts +9 -0
  108. package/dist/esm/common/diff.d.ts.map +1 -0
  109. package/dist/esm/common/diff.js +59 -0
  110. package/dist/esm/common/diff.js.map +1 -0
  111. package/dist/esm/common/has.d.ts +4 -0
  112. package/dist/esm/common/has.d.ts.map +1 -0
  113. package/dist/esm/common/has.js +8 -0
  114. package/dist/esm/common/has.js.map +1 -0
  115. package/dist/esm/common/index.d.ts +12 -0
  116. package/dist/esm/common/index.d.ts.map +1 -0
  117. package/dist/esm/common/index.js +12 -0
  118. package/dist/esm/common/index.js.map +1 -0
  119. package/dist/esm/common/is.d.ts +5 -0
  120. package/dist/esm/common/is.d.ts.map +1 -0
  121. package/dist/esm/common/is.js +13 -0
  122. package/dist/esm/common/is.js.map +1 -0
  123. package/dist/esm/common/match.d.ts +23 -0
  124. package/dist/esm/common/match.d.ts.map +1 -0
  125. package/dist/esm/common/match.js +46 -0
  126. package/dist/esm/common/match.js.map +1 -0
  127. package/dist/esm/common/patch.d.ts +3 -0
  128. package/dist/esm/common/patch.d.ts.map +1 -0
  129. package/dist/esm/common/patch.js +40 -0
  130. package/dist/esm/common/patch.js.map +1 -0
  131. package/dist/esm/common/stack.d.ts +8 -0
  132. package/dist/esm/common/stack.d.ts.map +1 -0
  133. package/dist/esm/common/stack.js +20 -0
  134. package/dist/esm/common/stack.js.map +1 -0
  135. package/dist/esm/common/string.d.ts +2 -0
  136. package/dist/esm/common/string.d.ts.map +1 -0
  137. package/dist/esm/common/string.js +32 -0
  138. package/dist/esm/common/string.js.map +1 -0
  139. package/dist/esm/common/types.d.ts +27 -0
  140. package/dist/esm/common/types.d.ts.map +1 -0
  141. package/dist/esm/common/types.js +2 -0
  142. package/dist/esm/common/types.js.map +1 -0
  143. package/dist/esm/common/unique-array.d.ts +17 -0
  144. package/dist/esm/common/unique-array.d.ts.map +1 -0
  145. package/dist/esm/common/unique-array.js +69 -0
  146. package/dist/esm/common/unique-array.js.map +1 -0
  147. package/dist/esm/context.d.ts +15 -0
  148. package/dist/esm/context.d.ts.map +1 -0
  149. package/dist/esm/context.js +28 -0
  150. package/dist/esm/context.js.map +1 -0
  151. package/dist/esm/derived.d.ts +11 -0
  152. package/dist/esm/derived.d.ts.map +1 -0
  153. package/dist/esm/derived.js +21 -0
  154. package/dist/esm/derived.js.map +1 -0
  155. package/dist/esm/effect.d.ts +7 -0
  156. package/dist/esm/effect.d.ts.map +1 -0
  157. package/dist/esm/effect.js +3 -0
  158. package/dist/esm/effect.js.map +1 -0
  159. package/dist/esm/index.d.ts +8 -0
  160. package/dist/esm/index.d.ts.map +1 -0
  161. package/dist/esm/index.js +8 -0
  162. package/dist/esm/index.js.map +1 -0
  163. package/dist/esm/observable.d.ts +12 -0
  164. package/dist/esm/observable.d.ts.map +1 -0
  165. package/dist/esm/observable.js +19 -0
  166. package/dist/esm/observable.js.map +1 -0
  167. package/dist/esm/package.json +1 -0
  168. package/dist/esm/pubsub.d.ts +11 -0
  169. package/dist/esm/pubsub.d.ts.map +1 -0
  170. package/dist/esm/pubsub.js +47 -0
  171. package/dist/esm/pubsub.js.map +1 -0
  172. package/dist/esm/reference.d.ts +15 -0
  173. package/dist/esm/reference.d.ts.map +1 -0
  174. package/dist/esm/reference.js +44 -0
  175. package/dist/esm/reference.js.map +1 -0
  176. package/dist/esm/utils/findRefs.d.ts +3 -0
  177. package/dist/esm/utils/findRefs.d.ts.map +1 -0
  178. package/dist/esm/utils/findRefs.js +19 -0
  179. package/dist/esm/utils/findRefs.js.map +1 -0
  180. package/dist/esm/utils/index.d.ts +2 -0
  181. package/dist/esm/utils/index.d.ts.map +1 -0
  182. package/dist/esm/utils/index.js +2 -0
  183. package/dist/esm/utils/index.js.map +1 -0
  184. package/package.json +41 -0
  185. package/package.json~ +42 -0
  186. package/src/array-proxy.ts +94 -0
  187. package/src/common/array.ts +72 -0
  188. package/src/common/compare.ts +3 -0
  189. package/src/common/diff.test.ts +114 -0
  190. package/src/common/diff.ts +85 -0
  191. package/src/common/has.ts +7 -0
  192. package/src/common/index.ts +11 -0
  193. package/src/common/is.ts +14 -0
  194. package/src/common/match.ts +90 -0
  195. package/src/common/patch.test.ts +118 -0
  196. package/src/common/patch.ts +47 -0
  197. package/src/common/stack.ts +22 -0
  198. package/src/common/string.test.ts +46 -0
  199. package/src/common/string.ts +35 -0
  200. package/src/common/types.ts +61 -0
  201. package/src/common/unique-array.ts +80 -0
  202. package/src/context.ts +36 -0
  203. package/src/derived.test.ts +45 -0
  204. package/src/derived.ts +35 -0
  205. package/src/effect.ts +9 -0
  206. package/src/index.ts +7 -0
  207. package/src/observable.ts +40 -0
  208. package/src/pubsub.test.ts +29 -0
  209. package/src/pubsub.ts +71 -0
  210. package/src/reference.test.ts +32 -0
  211. package/src/reference.ts +63 -0
  212. package/src/utils/findRefs.ts +22 -0
  213. package/src/utils/index.ts +1 -0
  214. package/tsconfig.cjs.json +8 -0
  215. package/tsconfig.cjs.json~ +0 -0
  216. package/tsconfig.json +24 -0
  217. package/tsconfig.json~ +24 -0
@@ -0,0 +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';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common"), exports);
18
+ __exportStar(require("./context"), exports);
19
+ __exportStar(require("./effect"), exports);
20
+ __exportStar(require("./pubsub"), exports);
21
+ __exportStar(require("./reference"), exports);
22
+ __exportStar(require("./derived"), exports);
23
+ __exportStar(require("./utils"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,0CAAwB"}
@@ -0,0 +1,12 @@
1
+ import { Boxed, SubscribeOptions, Subscription, VoidFunction } from "./common/types";
2
+ import { PubSub } from "./pubsub";
3
+ export declare const OBSERVABLE: unique symbol;
4
+ export type OBSERVABLE = typeof OBSERVABLE;
5
+ export interface Observable<T> extends PubSub<T> {
6
+ [OBSERVABLE]: true;
7
+ observe: (fn: Subscription<T>, options?: SubscribeOptions) => VoidFunction;
8
+ }
9
+ export declare function observable<T>(state: Boxed<T>, ps: PubSub<T>): Observable<T>;
10
+ export declare function isObservable<X extends Observable<unknown>>(x: X): x is X;
11
+ export declare function isObservable(x: unknown): x is Observable<unknown>;
12
+ //# sourceMappingURL=observable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,eAAO,MAAM,UAAU,eAAuB,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAE3C,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IACnB,OAAO,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,YAAY,CAAC;CAC5E;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAgB3E;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1E,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OBSERVABLE = void 0;
4
+ exports.observable = observable;
5
+ exports.isObservable = isObservable;
6
+ const common_1 = require("./common");
7
+ exports.OBSERVABLE = Symbol("Observable");
8
+ function observable(state, ps) {
9
+ const observe = (fn, options = {}) => {
10
+ if (options.immediate) {
11
+ fn(state.value);
12
+ }
13
+ return ps.subscribe(fn, options.cleanup);
14
+ };
15
+ return {
16
+ [exports.OBSERVABLE]: true,
17
+ ...ps,
18
+ observe,
19
+ };
20
+ }
21
+ function isObservable(x) {
22
+ return (0, common_1.has)(x, exports.OBSERVABLE);
23
+ }
24
+ //# sourceMappingURL=observable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.js","sourceRoot":"","sources":["../../src/observable.ts"],"names":[],"mappings":";;;AAiBA,gCAgBC;AAID,oCAEC;AAvCD,qCAA+B;AASlB,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAQ/C,SAAgB,UAAU,CAAI,KAAe,EAAE,EAAa;IAC1D,MAAM,OAAO,GAAG,CACd,EAAmB,EACnB,UAA4B,EAAE,EAChB,EAAE;QAChB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,kBAAU,CAAC,EAAE,IAAI;QAClB,GAAG,EAAE;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAID,SAAgB,YAAY,CAAC,CAAU;IACrC,OAAO,IAAA,YAAG,EAAC,CAAC,EAAE,kBAAU,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Subscription, VoidFunction } from "./common/types";
2
+ export interface PubSub<T> {
3
+ subscribers: Set<Subscription<T>>;
4
+ effects: Set<VoidFunction>;
5
+ publish: (value: T) => void;
6
+ subscribe: (fn: Subscription<T>, cleanup?: VoidFunction) => VoidFunction;
7
+ addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
8
+ dispose: () => void;
9
+ }
10
+ export declare function pubsub<T>(): PubSub<T>;
11
+ //# sourceMappingURL=pubsub.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pubsub = pubsub;
4
+ const context_1 = require("./context");
5
+ function pubsub() {
6
+ const subscribers = new Set();
7
+ const effects = new Set();
8
+ const trash = new Set();
9
+ const addTrash = (fn) => {
10
+ trash.add(fn);
11
+ return fn;
12
+ };
13
+ const publish = (value) => {
14
+ effects.forEach((fx) => {
15
+ context_1.Context.runEffect(fx);
16
+ });
17
+ subscribers.forEach((sub) => {
18
+ sub(value);
19
+ });
20
+ };
21
+ const addEffect = (effect, cleanup) => {
22
+ effects.add(effect);
23
+ return addTrash(() => {
24
+ effects.delete(effect);
25
+ cleanup?.();
26
+ });
27
+ };
28
+ const subscribe = (fn, cleanup) => {
29
+ subscribers.add(fn);
30
+ return addTrash(() => {
31
+ subscribers.delete(fn);
32
+ cleanup?.();
33
+ });
34
+ };
35
+ const dispose = () => {
36
+ trash.forEach((fn) => fn());
37
+ trash.clear();
38
+ subscribers.clear();
39
+ effects.clear();
40
+ };
41
+ return {
42
+ subscribers,
43
+ effects,
44
+ publish,
45
+ subscribe,
46
+ addEffect,
47
+ dispose,
48
+ };
49
+ }
50
+ //# sourceMappingURL=pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":";;AAYA,wBA0DC;AArED,uCAAoC;AAWpC,SAAgB,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,iBAAO,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"}
@@ -0,0 +1,15 @@
1
+ import { Dispatch, Loose, SetStateAction } from "./common/types";
2
+ import { Observable } from "./observable";
3
+ export declare const REFERENCE: unique symbol;
4
+ export type REFERENCE = typeof REFERENCE;
5
+ export interface Reference<T> extends Observable<T> {
6
+ [REFERENCE]: true;
7
+ get: () => T;
8
+ set: Dispatch<SetStateAction<T>>;
9
+ peek: () => T;
10
+ }
11
+ export declare function ref<T>(value: T): Reference<T>;
12
+ export declare function isReference(x: Loose): x is Reference<Loose>;
13
+ export declare function isReference(x: unknown): x is Reference<unknown>;
14
+ export declare function isReference<X extends Reference<unknown>>(x: X): x is X;
15
+ //# sourceMappingURL=reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,eAAO,MAAM,SAAS,eAAsB,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,CAAC;CACf;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAoC7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7D,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACjE,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REFERENCE = void 0;
4
+ exports.ref = ref;
5
+ exports.isReference = isReference;
6
+ const common_1 = require("./common");
7
+ const compare_1 = require("./common/compare");
8
+ const is_1 = require("./common/is");
9
+ const context_1 = require("./context");
10
+ const observable_1 = require("./observable");
11
+ const pubsub_1 = require("./pubsub");
12
+ exports.REFERENCE = Symbol("Reference");
13
+ function ref(value) {
14
+ const ps = (0, pubsub_1.pubsub)();
15
+ const state = { value };
16
+ const obs = (0, observable_1.observable)(state, ps);
17
+ const addEffectDependency = (fx) => {
18
+ ps.addEffect(fx.run, fx.cleanup);
19
+ };
20
+ const get = () => {
21
+ const fx = context_1.Context.scope.current.effect;
22
+ if (fx)
23
+ addEffectDependency(fx);
24
+ return state.value;
25
+ };
26
+ const set = (fn) => {
27
+ const prev = state.value;
28
+ const next = (0, is_1.isFunction)(fn) ? fn(state.value) : fn;
29
+ if (!(0, compare_1.compare)(next, prev)) {
30
+ state.value = next;
31
+ ps.publish(state.value);
32
+ }
33
+ };
34
+ const peek = () => {
35
+ return state.value;
36
+ };
37
+ return {
38
+ [exports.REFERENCE]: true,
39
+ ...ps,
40
+ ...obs,
41
+ get,
42
+ set,
43
+ peek,
44
+ };
45
+ }
46
+ function isReference(x) {
47
+ return (0, common_1.has)(x, exports.REFERENCE);
48
+ }
49
+ //# sourceMappingURL=reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":";;;AAmBA,kBAoCC;AAKD,kCAEC;AA9DD,qCAA+B;AAC/B,8CAA2C;AAC3C,oCAAyC;AAEzC,uCAAoC;AAEpC,6CAAsD;AACtD,qCAAkC;AAErB,QAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAU7C,SAAgB,GAAG,CAAI,KAAQ;IAC7B,MAAM,EAAE,GAAG,IAAA,eAAM,GAAK,CAAC;IACvB,MAAM,KAAK,GAAa,EAAE,KAAK,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,IAAA,uBAAU,EAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,EAAE;QACzC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,GAAM,EAAE;QAClB,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAgC,CAAC,EAAE,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,IAAA,eAAU,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,IAAA,iBAAO,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAM,EAAE;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,iBAAS,CAAC,EAAE,IAAI;QACjB,GAAG,EAAE;QACL,GAAG,GAAG;QACN,GAAG;QACH,GAAG;QACH,IAAI;KACL,CAAC;AACJ,CAAC;AAKD,SAAgB,WAAW,CAAC,CAAU;IACpC,OAAO,IAAA,YAAG,EAAC,CAAC,EAAE,iBAAS,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Reference } from "../reference";
2
+ export declare const findRefs: (x: unknown) => Reference<unknown>[];
3
+ //# sourceMappingURL=findRefs.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findRefs = void 0;
4
+ const reference_1 = require("../reference");
5
+ const findRefs = (x) => {
6
+ if (typeof x === 'undefined' || x === null)
7
+ return [];
8
+ if ((0, reference_1.isReference)(x))
9
+ return [x];
10
+ if (Array.isArray(x)) {
11
+ return x.map(it => (0, exports.findRefs)(it)).flat();
12
+ }
13
+ if (typeof x === 'object' && x !== null) {
14
+ const refs = [];
15
+ for (const [_k, v] of Object.entries(x)) {
16
+ refs.push(...(0, exports.findRefs)(v));
17
+ }
18
+ return refs;
19
+ }
20
+ return [];
21
+ };
22
+ exports.findRefs = findRefs;
23
+ //# sourceMappingURL=findRefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findRefs.js","sourceRoot":"","sources":["../../../src/utils/findRefs.ts"],"names":[],"mappings":";;;AAAA,4CAAsD;AAE/C,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAwB,EAAE;IAE3D,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACtD,IAAI,IAAA,uBAAW,EAAC,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,IAAA,gBAAQ,EAAC,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,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB"}
@@ -0,0 +1,2 @@
1
+ export * from './findRefs';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./findRefs"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B"}
@@ -0,0 +1,56 @@
1
+ import { PubSub } from "./pubsub";
2
+ import { VoidFunction } from "./common/types";
3
+ export type ArrayMutation<T> = {
4
+ type: "push";
5
+ items: T[];
6
+ } | {
7
+ type: "pop";
8
+ removed: T | undefined;
9
+ } | {
10
+ type: "shift";
11
+ removed: T | undefined;
12
+ } | {
13
+ type: "unshift";
14
+ items: T[];
15
+ } | {
16
+ type: "splice";
17
+ start: number;
18
+ deleteCount: number;
19
+ removed: T[];
20
+ added: T[];
21
+ } | {
22
+ type: "sort";
23
+ } | {
24
+ type: "reverse";
25
+ } | {
26
+ type: "fill";
27
+ value: T;
28
+ start: number;
29
+ end: number;
30
+ } | {
31
+ type: "copyWithin";
32
+ target: number;
33
+ start: number;
34
+ end: number;
35
+ } | {
36
+ type: "set";
37
+ index: number;
38
+ value: T;
39
+ };
40
+ export declare class ArrayProxy<T> extends Array<T> {
41
+ readonly ps: PubSub<ArrayMutation<T>>;
42
+ constructor(...items: T[]);
43
+ subscribe(fn: (mutation: ArrayMutation<T>) => void, cleanup?: VoidFunction): VoidFunction;
44
+ push(...items: T[]): number;
45
+ pop(): T | undefined;
46
+ shift(): T | undefined;
47
+ unshift(...items: T[]): number;
48
+ splice(start: number, deleteCount?: number, ...items: T[]): T[];
49
+ sort(compareFn?: (a: T, b: T) => number): this;
50
+ reverse(): this;
51
+ fill(value: T, start?: number, end?: number): this;
52
+ copyWithin(target: number, start: number, end?: number): this;
53
+ set(index: number, value: T): void;
54
+ dispose(): void;
55
+ }
56
+ //# sourceMappingURL=array-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-proxy.d.ts","sourceRoot":"","sources":["../../src/array-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,MAAM,aAAa,CAAC,CAAC,IACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7C,qBAAa,UAAU,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE1B,GAAG,KAAK,EAAE,CAAC,EAAE;IAKzB,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY;IAIhF,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM;IAM3B,GAAG,IAAI,CAAC,GAAG,SAAS;IAMpB,KAAK,IAAI,CAAC,GAAG,SAAS;IAMtB,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM;IAM9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAO/D,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI;IAM9C,OAAO,IAAI,IAAI;IAMf,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAOtE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKlC,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,68 @@
1
+ import { pubsub } from "./pubsub";
2
+ export class ArrayProxy extends Array {
3
+ ps;
4
+ constructor(...items) {
5
+ super(...items);
6
+ this.ps = pubsub();
7
+ }
8
+ subscribe(fn, cleanup) {
9
+ return this.ps.subscribe(fn, cleanup);
10
+ }
11
+ push(...items) {
12
+ const result = super.push(...items);
13
+ this.ps.publish({ type: "push", items });
14
+ return result;
15
+ }
16
+ pop() {
17
+ const removed = super.pop();
18
+ this.ps.publish({ type: "pop", removed });
19
+ return removed;
20
+ }
21
+ shift() {
22
+ const removed = super.shift();
23
+ this.ps.publish({ type: "shift", removed });
24
+ return removed;
25
+ }
26
+ unshift(...items) {
27
+ const result = super.unshift(...items);
28
+ this.ps.publish({ type: "unshift", items });
29
+ return result;
30
+ }
31
+ splice(start, deleteCount, ...items) {
32
+ const dc = deleteCount ?? this.length - start;
33
+ const removed = super.splice(start, dc, ...items);
34
+ this.ps.publish({ type: "splice", start, deleteCount: dc, removed, added: items });
35
+ return removed;
36
+ }
37
+ sort(compareFn) {
38
+ super.sort(compareFn);
39
+ this.ps.publish({ type: "sort" });
40
+ return this;
41
+ }
42
+ reverse() {
43
+ super.reverse();
44
+ this.ps.publish({ type: "reverse" });
45
+ return this;
46
+ }
47
+ fill(value, start, end) {
48
+ const s = start ?? 0;
49
+ const e = end ?? this.length;
50
+ super.fill(value, s, e);
51
+ this.ps.publish({ type: "fill", value, start: s, end: e });
52
+ return this;
53
+ }
54
+ copyWithin(target, start, end) {
55
+ const e = end ?? this.length;
56
+ super.copyWithin(target, start, e);
57
+ this.ps.publish({ type: "copyWithin", target, start, end: e });
58
+ return this;
59
+ }
60
+ set(index, value) {
61
+ this[index] = value;
62
+ this.ps.publish({ type: "set", index, value });
63
+ }
64
+ dispose() {
65
+ this.ps.dispose();
66
+ }
67
+ }
68
+ //# sourceMappingURL=array-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-proxy.js","sourceRoot":"","sources":["../../src/array-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const range: (n: number) => Array<number>;
2
+ export declare const enumerate: <T>(arr: T[]) => Array<[number, T]>;
3
+ export declare const zipMin: <A, B>(a: A[], b: B[]) => Array<[A, B]>;
4
+ export declare const zipMax: <A, B>(a: A[], b: B[]) => Array<[A | undefined, B | undefined]>;
5
+ export declare const zipByKey: <A, B>(a: A[], b: B[], getKey: <T extends A | B>(item: T) => PropertyKey | null) => {
6
+ pairs: Array<[A, B]>;
7
+ restA: A[];
8
+ restB: B[];
9
+ };
10
+ export declare const unique: <T>(arr: T[]) => T[];
11
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/common/array.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,KAAG,KAAK,CAAC,MAAM,CACS,CAAC;AAExD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAExD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAGzD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAGjF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAC3B,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,EAAE,EACN,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,WAAW,GAAG,IAAI,KACvD;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CA6ChD,CAAC;AAGF,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAG,CAAC,EAErC,CAAA"}
@@ -0,0 +1,48 @@
1
+ export const range = (n) => n <= 0 ? [] : Array.from(Array(Math.floor(n)).keys());
2
+ export const enumerate = (arr) => {
3
+ return arr.map((v, i) => [i, v]);
4
+ };
5
+ export const zipMin = (a, b) => {
6
+ const length = Math.min(a.length, b.length);
7
+ return range(length).map((i) => [a[i], b[i]]);
8
+ };
9
+ export const zipMax = (a, b) => {
10
+ const length = Math.max(a.length, b.length);
11
+ return range(length).map((i) => [a[i], b[i]]);
12
+ };
13
+ export const zipByKey = (a, b, getKey) => {
14
+ const keys = Array.from(new Set([...a.map((x) => getKey(x)), ...b.map((x) => getKey(x))].filter((x) => x !== null)));
15
+ const ma = new Map(a
16
+ .map((x) => [getKey(x), x])
17
+ .filter(([k, _]) => k !== null));
18
+ const mb = new Map(b
19
+ .map((x) => [getKey(x), x])
20
+ .filter(([k, _]) => k !== null));
21
+ const z = [];
22
+ const restA = [];
23
+ const restB = [];
24
+ const seenA = new Set();
25
+ const seenB = new Set();
26
+ for (const k of keys) {
27
+ const va = ma.get(k) ?? null;
28
+ const vb = mb.get(k) ?? null;
29
+ if (va !== null && vb === null) {
30
+ restA.push(va);
31
+ seenA.add(va);
32
+ }
33
+ else if (va === null && vb !== null) {
34
+ restB.push(vb);
35
+ seenB.add(vb);
36
+ }
37
+ else if (va !== null && vb !== null) {
38
+ z.push([va, vb]);
39
+ seenA.add(va);
40
+ seenB.add(vb);
41
+ }
42
+ }
43
+ return { pairs: z, restA, restB };
44
+ };
45
+ export const unique = (arr) => {
46
+ return Array.from(new Set(arr));
47
+ };
48
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/common/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const compare: (a: unknown, b: unknown) => boolean;
2
+ //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/common/compare.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,OAEhD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const compare = (a, b) => {
2
+ return a === b;
3
+ };
4
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/common/compare.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,CAAU,EAAW,EAAE;IACzD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type DiffType = 'added' | 'removed' | 'changed';
2
+ export type Diff = {
3
+ type: DiffType;
4
+ path: PropertyKey[];
5
+ oldValue?: unknown;
6
+ newValue?: unknown;
7
+ };
8
+ export declare const diff: <T>(a: T, b: T) => Diff[];
9
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/common/diff.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,IAAI,EAIxC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { isPlainObject } from './is';
2
+ export const diff = (a, b) => {
3
+ const diffs = [];
4
+ diffRecursive(a, b, [], diffs);
5
+ return diffs;
6
+ };
7
+ const diffRecursive = (a, b, path, diffs) => {
8
+ if (a === b)
9
+ return;
10
+ const aIsArray = Array.isArray(a);
11
+ const bIsArray = Array.isArray(b);
12
+ if (aIsArray && bIsArray) {
13
+ diffArrays(a, b, path, diffs);
14
+ return;
15
+ }
16
+ const aIsObject = isPlainObject(a);
17
+ const bIsObject = isPlainObject(b);
18
+ if (aIsObject && bIsObject) {
19
+ diffObjects(a, b, path, diffs);
20
+ return;
21
+ }
22
+ diffs.push({ type: 'changed', path, oldValue: a, newValue: b });
23
+ };
24
+ const diffObjects = (a, b, path, diffs) => {
25
+ const aKeys = Reflect.ownKeys(a);
26
+ const bKeys = Reflect.ownKeys(b);
27
+ const bKeySet = new Set(bKeys);
28
+ for (const key of aKeys) {
29
+ const childPath = [...path, key];
30
+ if (!bKeySet.has(key)) {
31
+ diffs.push({ type: 'removed', path: childPath, oldValue: a[key] });
32
+ }
33
+ else {
34
+ diffRecursive(a[key], b[key], childPath, diffs);
35
+ }
36
+ }
37
+ const aKeySet = new Set(aKeys);
38
+ for (const key of bKeys) {
39
+ if (!aKeySet.has(key)) {
40
+ diffs.push({ type: 'added', path: [...path, key], newValue: b[key] });
41
+ }
42
+ }
43
+ };
44
+ const diffArrays = (a, b, path, diffs) => {
45
+ const maxLen = Math.max(a.length, b.length);
46
+ for (let i = 0; i < maxLen; i++) {
47
+ const childPath = [...path, i];
48
+ if (i >= a.length) {
49
+ diffs.push({ type: 'added', path: childPath, newValue: b[i] });
50
+ }
51
+ else if (i >= b.length) {
52
+ diffs.push({ type: 'removed', path: childPath, oldValue: a[i] });
53
+ }
54
+ else {
55
+ diffRecursive(a[i], b[i], childPath, diffs);
56
+ }
57
+ }
58
+ };
59
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/common/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function has<Keys extends [...PropertyKey[]]>(x: unknown, ...keys: Keys): x is ({
2
+ [Prop in keyof Keys as [Keys[Prop]] extends [string] ? Keys[Prop] : never]: unknown;
3
+ });
4
+ //# sourceMappingURL=has.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has.d.ts","sourceRoot":"","sources":["../../../src/common/has.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC;KACpF,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,OAAO;CACpF,CAAC,CAID"}