@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.
- package/.README.md.~undo-tree~ +4 -0
- package/.package.json.~undo-tree~ +30 -0
- package/.tsconfig.cjs.json.~undo-tree~ +8 -0
- package/.tsconfig.json.~undo-tree~ +14 -0
- package/README.md +355 -0
- package/README.md~ +355 -0
- package/dist/cjs/array-proxy.d.ts +56 -0
- package/dist/cjs/array-proxy.d.ts.map +1 -0
- package/dist/cjs/array-proxy.js +72 -0
- package/dist/cjs/array-proxy.js.map +1 -0
- package/dist/cjs/common/array.d.ts +11 -0
- package/dist/cjs/common/array.d.ts.map +1 -0
- package/dist/cjs/common/array.js +57 -0
- package/dist/cjs/common/array.js.map +1 -0
- package/dist/cjs/common/compare.d.ts +2 -0
- package/dist/cjs/common/compare.d.ts.map +1 -0
- package/dist/cjs/common/compare.js +8 -0
- package/dist/cjs/common/compare.js.map +1 -0
- package/dist/cjs/common/diff.d.ts +9 -0
- package/dist/cjs/common/diff.d.ts.map +1 -0
- package/dist/cjs/common/diff.js +63 -0
- package/dist/cjs/common/diff.js.map +1 -0
- package/dist/cjs/common/has.d.ts +4 -0
- package/dist/cjs/common/has.d.ts.map +1 -0
- package/dist/cjs/common/has.js +11 -0
- package/dist/cjs/common/has.js.map +1 -0
- package/dist/cjs/common/index.d.ts +12 -0
- package/dist/cjs/common/index.d.ts.map +1 -0
- package/dist/cjs/common/index.js +28 -0
- package/dist/cjs/common/index.js.map +1 -0
- package/dist/cjs/common/is.d.ts +5 -0
- package/dist/cjs/common/is.d.ts.map +1 -0
- package/dist/cjs/common/is.js +18 -0
- package/dist/cjs/common/is.js.map +1 -0
- package/dist/cjs/common/match.d.ts +23 -0
- package/dist/cjs/common/match.d.ts.map +1 -0
- package/dist/cjs/common/match.js +49 -0
- package/dist/cjs/common/match.js.map +1 -0
- package/dist/cjs/common/patch.d.ts +3 -0
- package/dist/cjs/common/patch.d.ts.map +1 -0
- package/dist/cjs/common/patch.js +44 -0
- package/dist/cjs/common/patch.js.map +1 -0
- package/dist/cjs/common/stack.d.ts +8 -0
- package/dist/cjs/common/stack.d.ts.map +1 -0
- package/dist/cjs/common/stack.js +24 -0
- package/dist/cjs/common/stack.js.map +1 -0
- package/dist/cjs/common/string.d.ts +2 -0
- package/dist/cjs/common/string.d.ts.map +1 -0
- package/dist/cjs/common/string.js +36 -0
- package/dist/cjs/common/string.js.map +1 -0
- package/dist/cjs/common/types.d.ts +27 -0
- package/dist/cjs/common/types.d.ts.map +1 -0
- package/dist/cjs/common/types.js +3 -0
- package/dist/cjs/common/types.js.map +1 -0
- package/dist/cjs/common/unique-array.d.ts +17 -0
- package/dist/cjs/common/unique-array.d.ts.map +1 -0
- package/dist/cjs/common/unique-array.js +73 -0
- package/dist/cjs/common/unique-array.js.map +1 -0
- package/dist/cjs/context.d.ts +15 -0
- package/dist/cjs/context.d.ts.map +1 -0
- package/dist/cjs/context.js +33 -0
- package/dist/cjs/context.js.map +1 -0
- package/dist/cjs/derived.d.ts +11 -0
- package/dist/cjs/derived.d.ts.map +1 -0
- package/dist/cjs/derived.js +26 -0
- package/dist/cjs/derived.js.map +1 -0
- package/dist/cjs/effect.d.ts +7 -0
- package/dist/cjs/effect.d.ts.map +1 -0
- package/dist/cjs/effect.js +7 -0
- package/dist/cjs/effect.js.map +1 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/observable.d.ts +12 -0
- package/dist/cjs/observable.d.ts.map +1 -0
- package/dist/cjs/observable.js +24 -0
- package/dist/cjs/observable.js.map +1 -0
- package/dist/cjs/pubsub.d.ts +11 -0
- package/dist/cjs/pubsub.d.ts.map +1 -0
- package/dist/cjs/pubsub.js +50 -0
- package/dist/cjs/pubsub.js.map +1 -0
- package/dist/cjs/reference.d.ts +15 -0
- package/dist/cjs/reference.d.ts.map +1 -0
- package/dist/cjs/reference.js +49 -0
- package/dist/cjs/reference.js.map +1 -0
- package/dist/cjs/utils/findRefs.d.ts +3 -0
- package/dist/cjs/utils/findRefs.d.ts.map +1 -0
- package/dist/cjs/utils/findRefs.js +23 -0
- package/dist/cjs/utils/findRefs.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +2 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +18 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/esm/array-proxy.d.ts +56 -0
- package/dist/esm/array-proxy.d.ts.map +1 -0
- package/dist/esm/array-proxy.js +68 -0
- package/dist/esm/array-proxy.js.map +1 -0
- package/dist/esm/common/array.d.ts +11 -0
- package/dist/esm/common/array.d.ts.map +1 -0
- package/dist/esm/common/array.js +48 -0
- package/dist/esm/common/array.js.map +1 -0
- package/dist/esm/common/compare.d.ts +2 -0
- package/dist/esm/common/compare.d.ts.map +1 -0
- package/dist/esm/common/compare.js +4 -0
- package/dist/esm/common/compare.js.map +1 -0
- package/dist/esm/common/diff.d.ts +9 -0
- package/dist/esm/common/diff.d.ts.map +1 -0
- package/dist/esm/common/diff.js +59 -0
- package/dist/esm/common/diff.js.map +1 -0
- package/dist/esm/common/has.d.ts +4 -0
- package/dist/esm/common/has.d.ts.map +1 -0
- package/dist/esm/common/has.js +8 -0
- package/dist/esm/common/has.js.map +1 -0
- package/dist/esm/common/index.d.ts +12 -0
- package/dist/esm/common/index.d.ts.map +1 -0
- package/dist/esm/common/index.js +12 -0
- package/dist/esm/common/index.js.map +1 -0
- package/dist/esm/common/is.d.ts +5 -0
- package/dist/esm/common/is.d.ts.map +1 -0
- package/dist/esm/common/is.js +13 -0
- package/dist/esm/common/is.js.map +1 -0
- package/dist/esm/common/match.d.ts +23 -0
- package/dist/esm/common/match.d.ts.map +1 -0
- package/dist/esm/common/match.js +46 -0
- package/dist/esm/common/match.js.map +1 -0
- package/dist/esm/common/patch.d.ts +3 -0
- package/dist/esm/common/patch.d.ts.map +1 -0
- package/dist/esm/common/patch.js +40 -0
- package/dist/esm/common/patch.js.map +1 -0
- package/dist/esm/common/stack.d.ts +8 -0
- package/dist/esm/common/stack.d.ts.map +1 -0
- package/dist/esm/common/stack.js +20 -0
- package/dist/esm/common/stack.js.map +1 -0
- package/dist/esm/common/string.d.ts +2 -0
- package/dist/esm/common/string.d.ts.map +1 -0
- package/dist/esm/common/string.js +32 -0
- package/dist/esm/common/string.js.map +1 -0
- package/dist/esm/common/types.d.ts +27 -0
- package/dist/esm/common/types.d.ts.map +1 -0
- package/dist/esm/common/types.js +2 -0
- package/dist/esm/common/types.js.map +1 -0
- package/dist/esm/common/unique-array.d.ts +17 -0
- package/dist/esm/common/unique-array.d.ts.map +1 -0
- package/dist/esm/common/unique-array.js +69 -0
- package/dist/esm/common/unique-array.js.map +1 -0
- package/dist/esm/context.d.ts +15 -0
- package/dist/esm/context.d.ts.map +1 -0
- package/dist/esm/context.js +28 -0
- package/dist/esm/context.js.map +1 -0
- package/dist/esm/derived.d.ts +11 -0
- package/dist/esm/derived.d.ts.map +1 -0
- package/dist/esm/derived.js +21 -0
- package/dist/esm/derived.js.map +1 -0
- package/dist/esm/effect.d.ts +7 -0
- package/dist/esm/effect.d.ts.map +1 -0
- package/dist/esm/effect.js +3 -0
- package/dist/esm/effect.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/observable.d.ts +12 -0
- package/dist/esm/observable.d.ts.map +1 -0
- package/dist/esm/observable.js +19 -0
- package/dist/esm/observable.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/pubsub.d.ts +11 -0
- package/dist/esm/pubsub.d.ts.map +1 -0
- package/dist/esm/pubsub.js +47 -0
- package/dist/esm/pubsub.js.map +1 -0
- package/dist/esm/reference.d.ts +15 -0
- package/dist/esm/reference.d.ts.map +1 -0
- package/dist/esm/reference.js +44 -0
- package/dist/esm/reference.js.map +1 -0
- package/dist/esm/utils/findRefs.d.ts +3 -0
- package/dist/esm/utils/findRefs.d.ts.map +1 -0
- package/dist/esm/utils/findRefs.js +19 -0
- package/dist/esm/utils/findRefs.js.map +1 -0
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/package.json +41 -0
- package/package.json~ +42 -0
- package/src/array-proxy.ts +94 -0
- package/src/common/array.ts +72 -0
- package/src/common/compare.ts +3 -0
- package/src/common/diff.test.ts +114 -0
- package/src/common/diff.ts +85 -0
- package/src/common/has.ts +7 -0
- package/src/common/index.ts +11 -0
- package/src/common/is.ts +14 -0
- package/src/common/match.ts +90 -0
- package/src/common/patch.test.ts +118 -0
- package/src/common/patch.ts +47 -0
- package/src/common/stack.ts +22 -0
- package/src/common/string.test.ts +46 -0
- package/src/common/string.ts +35 -0
- package/src/common/types.ts +61 -0
- package/src/common/unique-array.ts +80 -0
- package/src/context.ts +36 -0
- package/src/derived.test.ts +45 -0
- package/src/derived.ts +35 -0
- package/src/effect.ts +9 -0
- package/src/index.ts +7 -0
- package/src/observable.ts +40 -0
- package/src/pubsub.test.ts +29 -0
- package/src/pubsub.ts +71 -0
- package/src/reference.test.ts +32 -0
- package/src/reference.ts +63 -0
- package/src/utils/findRefs.ts +22 -0
- package/src/utils/index.ts +1 -0
- package/tsconfig.cjs.json +8 -0
- package/tsconfig.cjs.json~ +0 -0
- package/tsconfig.json +24 -0
- package/tsconfig.json~ +24 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|