@legendapp/state 0.9.1-alpha.7 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +8 -7
- package/index.js +33 -17
- package/index.js.map +1 -1
- package/internal.d.ts +3 -0
- package/{internal/index.js → internal.js} +4 -4
- package/internal.js.map +1 -0
- package/local-storage.d.ts +1 -0
- package/{persist/web/index.js → local-storage.js} +2 -2
- package/local-storage.js.map +1 -0
- package/mmkv.d.ts +1 -0
- package/{types/index.js → mmkv.js} +2 -2
- package/mmkv.js.map +1 -0
- package/package.json +6 -8
- package/react.d.ts +2 -0
- package/{react/index.js → react.js} +3 -3
- package/react.js.map +1 -0
- package/{configureObservable.d.ts → src/configureObservable.d.ts} +1 -1
- package/{configureObservable.js → src/configureObservable.js} +0 -0
- package/{configureObservable.js.map → src/configureObservable.js.map} +0 -0
- package/{globals.d.ts → src/globals.d.ts} +1 -1
- package/{globals.js → src/globals.js} +2 -5
- package/src/globals.js.map +1 -0
- package/src/observable.d.ts +8 -0
- package/{observable.js → src/observable.js} +47 -26
- package/src/observable.js.map +1 -0
- package/src/observableBatcher.d.ts +7 -0
- package/src/observableBatcher.js +61 -0
- package/src/observableBatcher.js.map +1 -0
- package/{observableComputed.d.ts → src/observableComputed.d.ts} +1 -1
- package/{observableComputed.js → src/observableComputed.js} +4 -1
- package/src/observableComputed.js.map +1 -0
- package/src/observableEvent.d.ts +2 -0
- package/{observableEvent.js → src/observableEvent.js} +6 -0
- package/src/observableEvent.js.map +1 -0
- package/{observableFns.d.ts → src/observableFns.d.ts} +3 -2
- package/{observableFns.js → src/observableFns.js} +26 -11
- package/src/observableFns.js.map +1 -0
- package/{types → src}/observableInterfaces.d.ts +21 -13
- package/{types → src}/observableInterfaces.js +0 -0
- package/src/observableInterfaces.js.map +1 -0
- package/{observableState.d.ts → src/observableState.d.ts} +3 -2
- package/{observableState.js → src/observableState.js} +0 -0
- package/{observableState.js.map → src/observableState.js.map} +0 -0
- package/{persist/web/ObservablePersistLocalStorage.d.ts → src/persist/local-storage.d.ts} +2 -2
- package/{persist/web/ObservablePersistLocalStorage.js → src/persist/local-storage.js} +2 -2
- package/src/persist/local-storage.js.map +1 -0
- package/{persist/react-native-mmkv/index.d.ts → src/persist/mmkv.d.ts} +3 -2
- package/{persist/react-native-mmkv/index.js → src/persist/mmkv.js} +8 -9
- package/src/persist/mmkv.js.map +1 -0
- package/{persist → src}/persistObservable.d.ts +1 -1
- package/src/persistObservable.js +120 -0
- package/src/persistObservable.js.map +1 -0
- package/{primitivePrototypes.d.ts → src/primitivePrototypes.d.ts} +0 -0
- package/{primitivePrototypes.js → src/primitivePrototypes.js} +0 -0
- package/{primitivePrototypes.js.map → src/primitivePrototypes.js.map} +0 -0
- package/src/react/useNewObservable.d.ts +12 -0
- package/{react → src/react}/useNewObservable.js +12 -2
- package/src/react/useNewObservable.js.map +1 -0
- package/src/react/useObservables.d.ts +9 -0
- package/{react → src/react}/useObservables.js +29 -13
- package/src/react/useObservables.js.map +1 -0
- package/{react → src/react}/usePrimitiveFunctions.d.ts +1 -1
- package/{react → src/react}/usePrimitiveFunctions.js +0 -0
- package/{react → src/react}/usePrimitiveFunctions.js.map +0 -0
- package/globals.js.map +0 -1
- package/internal/index.d.ts +0 -3
- package/internal/index.js.map +0 -1
- package/observable.d.ts +0 -8
- package/observable.js.map +0 -1
- package/observableBatcher.d.ts +0 -7
- package/observableBatcher.js +0 -53
- package/observableBatcher.js.map +0 -1
- package/observableComputed.js.map +0 -1
- package/observableEvent.d.ts +0 -2
- package/observableEvent.js.map +0 -1
- package/observableFns.js.map +0 -1
- package/observableListener.d.ts +0 -2
- package/observableListener.js +0 -14
- package/observableListener.js.map +0 -1
- package/persist/index.d.ts +0 -1
- package/persist/index.js +0 -6
- package/persist/index.js.map +0 -1
- package/persist/persistObservable.js +0 -99
- package/persist/persistObservable.js.map +0 -1
- package/persist/react-native-mmkv/index.js.map +0 -1
- package/persist/web/ObservablePersistLocalStorage.js.map +0 -1
- package/persist/web/index.d.ts +0 -1
- package/persist/web/index.js.map +0 -1
- package/promiseCallback.d.ts +0 -8
- package/promiseCallback.js +0 -17
- package/promiseCallback.js.map +0 -1
- package/react/index.d.ts +0 -2
- package/react/index.js.map +0 -1
- package/react/useNewObservable.d.ts +0 -3
- package/react/useNewObservable.js.map +0 -1
- package/react/useObservables.d.ts +0 -2
- package/react/useObservables.js.map +0 -1
- package/types/index.d.ts +0 -1
- package/types/index.js.map +0 -1
- package/types/observableInterfaces.js.map +0 -1
package/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { configureObservable } from './configureObservable';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export
|
|
1
|
+
export { configureObservable } from './src/configureObservable';
|
|
2
|
+
export { assigner, getter, observable, setter } from './src/observable';
|
|
3
|
+
export { observableBatcher } from './src/observableBatcher';
|
|
4
|
+
export { observableComputed } from './src/observableComputed';
|
|
5
|
+
export { observableEvent } from './src/observableEvent';
|
|
6
|
+
export { disposeListener, isObservable, isObservableEvent, listen, mergeIntoObservable, prop, shallow, unlisten, } from './src/observableFns';
|
|
7
|
+
export * from './src/observableInterfaces';
|
|
8
|
+
export { persistObservable } from './src/persistObservable';
|
package/index.js
CHANGED
|
@@ -1,27 +1,43 @@
|
|
|
1
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
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var configureObservable_1 = require("./configureObservable");
|
|
17
|
+
exports.persistObservable = exports.unlisten = exports.shallow = exports.prop = exports.mergeIntoObservable = exports.listen = exports.isObservableEvent = exports.isObservable = exports.disposeListener = exports.observableEvent = exports.observableComputed = exports.observableBatcher = exports.setter = exports.observable = exports.getter = exports.assigner = exports.configureObservable = void 0;
|
|
18
|
+
var configureObservable_1 = require("./src/configureObservable");
|
|
5
19
|
Object.defineProperty(exports, "configureObservable", { enumerable: true, get: function () { return configureObservable_1.configureObservable; } });
|
|
6
|
-
var observable_1 = require("./observable");
|
|
20
|
+
var observable_1 = require("./src/observable");
|
|
21
|
+
Object.defineProperty(exports, "assigner", { enumerable: true, get: function () { return observable_1.assigner; } });
|
|
22
|
+
Object.defineProperty(exports, "getter", { enumerable: true, get: function () { return observable_1.getter; } });
|
|
7
23
|
Object.defineProperty(exports, "observable", { enumerable: true, get: function () { return observable_1.observable; } });
|
|
8
24
|
Object.defineProperty(exports, "setter", { enumerable: true, get: function () { return observable_1.setter; } });
|
|
9
|
-
|
|
10
|
-
Object.defineProperty(exports, "
|
|
11
|
-
var
|
|
12
|
-
Object.defineProperty(exports, "
|
|
13
|
-
|
|
25
|
+
var observableBatcher_1 = require("./src/observableBatcher");
|
|
26
|
+
Object.defineProperty(exports, "observableBatcher", { enumerable: true, get: function () { return observableBatcher_1.observableBatcher; } });
|
|
27
|
+
var observableComputed_1 = require("./src/observableComputed");
|
|
28
|
+
Object.defineProperty(exports, "observableComputed", { enumerable: true, get: function () { return observableComputed_1.observableComputed; } });
|
|
29
|
+
var observableEvent_1 = require("./src/observableEvent");
|
|
30
|
+
Object.defineProperty(exports, "observableEvent", { enumerable: true, get: function () { return observableEvent_1.observableEvent; } });
|
|
31
|
+
var observableFns_1 = require("./src/observableFns");
|
|
32
|
+
Object.defineProperty(exports, "disposeListener", { enumerable: true, get: function () { return observableFns_1.disposeListener; } });
|
|
14
33
|
Object.defineProperty(exports, "isObservable", { enumerable: true, get: function () { return observableFns_1.isObservable; } });
|
|
15
34
|
Object.defineProperty(exports, "isObservableEvent", { enumerable: true, get: function () { return observableFns_1.isObservableEvent; } });
|
|
16
|
-
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return observableFns_1.merge; } });
|
|
17
35
|
Object.defineProperty(exports, "listen", { enumerable: true, get: function () { return observableFns_1.listen; } });
|
|
36
|
+
Object.defineProperty(exports, "mergeIntoObservable", { enumerable: true, get: function () { return observableFns_1.mergeIntoObservable; } });
|
|
37
|
+
Object.defineProperty(exports, "prop", { enumerable: true, get: function () { return observableFns_1.prop; } });
|
|
38
|
+
Object.defineProperty(exports, "shallow", { enumerable: true, get: function () { return observableFns_1.shallow; } });
|
|
18
39
|
Object.defineProperty(exports, "unlisten", { enumerable: true, get: function () { return observableFns_1.unlisten; } });
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Object.defineProperty(exports, "observableBatcher", { enumerable: true, get: function () { return observableBatcher_1.observableBatcher; } });
|
|
23
|
-
var observableComputed_1 = require("./observableComputed");
|
|
24
|
-
Object.defineProperty(exports, "observableComputed", { enumerable: true, get: function () { return observableComputed_1.observableComputed; } });
|
|
25
|
-
var observableEvent_1 = require("./observableEvent");
|
|
26
|
-
Object.defineProperty(exports, "observableEvent", { enumerable: true, get: function () { return observableEvent_1.observableEvent; } });
|
|
40
|
+
__exportStar(require("./src/observableInterfaces"), exports);
|
|
41
|
+
var persistObservable_1 = require("./src/persistObservable");
|
|
42
|
+
Object.defineProperty(exports, "persistObservable", { enumerable: true, get: function () { return persistObservable_1.persistObservable; } });
|
|
27
43
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAgE;AAAvD,0HAAA,mBAAmB,OAAA;AAC5B,+CAAwE;AAA/D,sGAAA,QAAQ,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,oGAAA,MAAM,OAAA;AAC7C,6DAA4D;AAAnD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,wHAAA,kBAAkB,OAAA;AAC3B,yDAAwD;AAA/C,kHAAA,eAAe,OAAA;AACxB,qDAS6B;AARzB,gHAAA,eAAe,OAAA;AACf,6GAAA,YAAY,OAAA;AACZ,kHAAA,iBAAiB,OAAA;AACjB,uGAAA,MAAM,OAAA;AACN,oHAAA,mBAAmB,OAAA;AACnB,qGAAA,IAAI,OAAA;AACJ,wGAAA,OAAO,OAAA;AACP,yGAAA,QAAQ,OAAA;AAEZ,6DAA2C;AAC3C,6DAA4D;AAAnD,sHAAA,iBAAiB,OAAA"}
|
package/internal.d.ts
ADDED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDateModifiedKey = exports.symbolShallow = exports.symbolDateModified = exports.state = exports.observableConfiguration = void 0;
|
|
4
|
-
var configureObservable_1 = require("
|
|
4
|
+
var configureObservable_1 = require("./src/configureObservable");
|
|
5
5
|
Object.defineProperty(exports, "observableConfiguration", { enumerable: true, get: function () { return configureObservable_1.observableConfiguration; } });
|
|
6
|
-
var observableState_1 = require("
|
|
6
|
+
var observableState_1 = require("./src/observableState");
|
|
7
7
|
Object.defineProperty(exports, "state", { enumerable: true, get: function () { return observableState_1.state; } });
|
|
8
|
-
var globals_1 = require("
|
|
8
|
+
var globals_1 = require("./src/globals");
|
|
9
9
|
Object.defineProperty(exports, "symbolDateModified", { enumerable: true, get: function () { return globals_1.symbolDateModified; } });
|
|
10
10
|
Object.defineProperty(exports, "symbolShallow", { enumerable: true, get: function () { return globals_1.symbolShallow; } });
|
|
11
11
|
Object.defineProperty(exports, "getDateModifiedKey", { enumerable: true, get: function () { return globals_1.getDateModifiedKey; } });
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=internal.js.map
|
package/internal.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../internal.ts"],"names":[],"mappings":";;;AAAA,iEAAoE;AAA3D,8HAAA,uBAAuB,OAAA;AAChC,yDAA8C;AAArC,wGAAA,KAAK,OAAA;AACd,yCAAsF;AAA7E,6GAAA,kBAAkB,OAAA;AAAE,wGAAA,aAAa,OAAA;AAAE,6GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/persist/local-storage';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
//# sourceMappingURL=
|
|
17
|
+
__exportStar(require("./src/persist/local-storage"), exports);
|
|
18
|
+
//# sourceMappingURL=local-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../local-storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
|
package/mmkv.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/persist/mmkv';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
//# sourceMappingURL=
|
|
17
|
+
__exportStar(require("./src/persist/mmkv"), exports);
|
|
18
|
+
//# sourceMappingURL=mmkv.js.map
|
package/mmkv.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mmkv.js","sourceRoot":"","sources":["../mmkv.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@legendapp/state",
|
|
3
|
-
"version": "0.9.1
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "legend-state",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"private": false,
|
|
@@ -11,15 +11,13 @@
|
|
|
11
11
|
],
|
|
12
12
|
"exports": {
|
|
13
13
|
".": "./index.js",
|
|
14
|
-
"./internal": "./internal
|
|
15
|
-
"./
|
|
16
|
-
"./
|
|
17
|
-
"./
|
|
18
|
-
"./persist/mobile": "./persist/mobile/index.js",
|
|
19
|
-
"./types": "./types/index.d.ts"
|
|
14
|
+
"./internal": "./internal.js",
|
|
15
|
+
"./local-storage": "./local-storage.js",
|
|
16
|
+
"./mmkv": "./mmkv.js",
|
|
17
|
+
"./react": "./react.js"
|
|
20
18
|
},
|
|
21
19
|
"dependencies": {
|
|
22
|
-
"@legendapp/tools": "
|
|
20
|
+
"@legendapp/tools": "2.0.0"
|
|
23
21
|
},
|
|
24
22
|
"peerDependencies": {
|
|
25
23
|
"react": ">=16.8",
|
package/react.d.ts
ADDED
|
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./useNewObservable"), exports);
|
|
18
|
-
__exportStar(require("./useObservables"), exports);
|
|
19
|
-
//# sourceMappingURL=
|
|
17
|
+
__exportStar(require("./src/react/useNewObservable"), exports);
|
|
18
|
+
__exportStar(require("./src/react/useObservables"), exports);
|
|
19
|
+
//# sourceMappingURL=react.js.map
|
package/react.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../react.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,6DAA2C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClassConstructor, ObservablePersistLocal, ObservablePersistRemote } from './
|
|
1
|
+
import { ClassConstructor, ObservablePersistLocal, ObservablePersistRemote } from './observableInterfaces';
|
|
2
2
|
interface Config {
|
|
3
3
|
extendPrototypes?: boolean;
|
|
4
4
|
persistLocal?: ClassConstructor<ObservablePersistLocal>;
|
|
File without changes
|
|
File without changes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare const symbolDateModified: unique symbol;
|
|
2
2
|
export declare const symbolShallow: unique symbol;
|
|
3
|
+
export declare const symbolValue: unique symbol;
|
|
3
4
|
export declare function removeNullUndefined<T extends Record<string, any>>(a: T): any;
|
|
4
5
|
export declare function replaceKeyInObject(obj: object, keySource: any, keyTarget: any, clone: boolean): Record<any, any>;
|
|
5
6
|
export declare function isPrimitive(val: any): boolean;
|
|
6
7
|
export declare function isCollection(obj: any): boolean;
|
|
7
8
|
export declare function getDateModifiedKey(dateModifiedKey: string): string;
|
|
8
|
-
export declare function jsonEqual(obj1: any, obj2: any): boolean;
|
|
9
9
|
export declare function clone(obj: any): any;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.clone = exports.
|
|
3
|
+
exports.clone = exports.getDateModifiedKey = exports.isCollection = exports.isPrimitive = exports.replaceKeyInObject = exports.removeNullUndefined = exports.symbolValue = exports.symbolShallow = exports.symbolDateModified = void 0;
|
|
4
4
|
const tools_1 = require("@legendapp/tools");
|
|
5
5
|
const configureObservable_1 = require("./configureObservable");
|
|
6
6
|
exports.symbolDateModified = Symbol('__dateModified');
|
|
7
7
|
exports.symbolShallow = Symbol('__shallow');
|
|
8
|
+
exports.symbolValue = Symbol('__value');
|
|
8
9
|
function removeNullUndefined(a) {
|
|
9
10
|
if (a === undefined)
|
|
10
11
|
return null;
|
|
@@ -57,10 +58,6 @@ function getDateModifiedKey(dateModifiedKey) {
|
|
|
57
58
|
return dateModifiedKey || configureObservable_1.observableConfiguration.dateModifiedKey || '@';
|
|
58
59
|
}
|
|
59
60
|
exports.getDateModifiedKey = getDateModifiedKey;
|
|
60
|
-
function jsonEqual(obj1, obj2) {
|
|
61
|
-
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
62
|
-
}
|
|
63
|
-
exports.jsonEqual = jsonEqual;
|
|
64
61
|
function clone(obj) {
|
|
65
62
|
return obj === undefined || obj === null ? obj : JSON.parse(JSON.stringify(obj));
|
|
66
63
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/globals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable, ObservableChecker, ObservableCheckerWriteable, ObservableUnsafe, ValidObservableParam } from './observableInterfaces';
|
|
2
|
+
export declare function setter<T>(obs: ObservableCheckerWriteable<T>): any;
|
|
3
|
+
export declare function getter<T>(obs: ObservableChecker<T>): any;
|
|
4
|
+
export declare function assigner<T>(obs: ObservableCheckerWriteable<T>): any;
|
|
5
|
+
export declare function deleteFn(obs: ObservableCheckerWriteable, target: any, prop?: string | number | symbol): ObservableCheckerWriteable<any>;
|
|
6
|
+
declare function observable<T>(value?: ValidObservableParam<T>): Observable<T>;
|
|
7
|
+
declare function observable<T>(value: ValidObservableParam<T>, unsafe: true): ObservableUnsafe<T>;
|
|
8
|
+
export { observable };
|
|
@@ -51,14 +51,12 @@ function collectionSetter(prop, proxyOwner, ...args) {
|
|
|
51
51
|
function _get(proxyOwner) {
|
|
52
52
|
const info = infos.get(proxyOwner);
|
|
53
53
|
const target = info.target;
|
|
54
|
-
return info.primitive ? target.
|
|
54
|
+
return info.primitive ? target[globals_1.symbolValue] : target;
|
|
55
55
|
}
|
|
56
56
|
function _set(proxyOwner, _, prop, value) {
|
|
57
57
|
var _a;
|
|
58
58
|
observableState_1.state.inSetFn = Math.max(0, observableState_1.state.inSetFn++);
|
|
59
59
|
const info = infos.get(proxyOwner);
|
|
60
|
-
if (!info)
|
|
61
|
-
debugger;
|
|
62
60
|
if (info.readonly) {
|
|
63
61
|
return proxyOwner;
|
|
64
62
|
}
|
|
@@ -71,14 +69,14 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
71
69
|
value = prop;
|
|
72
70
|
prop = undefined;
|
|
73
71
|
const isValuePrimitive = (0, globals_1.isPrimitive)(value);
|
|
74
|
-
const prevValue = info.primitive ? target.
|
|
72
|
+
const prevValue = info.primitive ? target[globals_1.symbolValue] : (0, globals_1.clone)(target);
|
|
75
73
|
// 1. Delete keys that no longer exist
|
|
76
74
|
Object.keys(target).forEach((key) => {
|
|
77
75
|
if (!value || isValuePrimitive !== info.primitive || value[key] === undefined) {
|
|
78
76
|
if (info.proxies) {
|
|
79
77
|
const child = info.proxies.get(key);
|
|
80
78
|
if (child) {
|
|
81
|
-
|
|
79
|
+
child.set(undefined);
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
82
|
delete target[key];
|
|
@@ -89,13 +87,15 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
89
87
|
skipNotifyFor.push(proxyOwner);
|
|
90
88
|
if (isValuePrimitive) {
|
|
91
89
|
info.primitive = true;
|
|
92
|
-
target.
|
|
90
|
+
target[globals_1.symbolValue] = value;
|
|
93
91
|
}
|
|
94
92
|
else {
|
|
95
93
|
info.primitive = false;
|
|
94
|
+
delete target[globals_1.symbolValue];
|
|
95
|
+
delete targetOriginal[globals_1.symbolValue];
|
|
96
96
|
// 2. Assign the values onto the target which will update all children proxies, but would leave this
|
|
97
97
|
// as a shallow copy of the the value
|
|
98
|
-
proxyOwner
|
|
98
|
+
_assign(proxyOwner, target, value);
|
|
99
99
|
Object.assign(targetOriginal, value);
|
|
100
100
|
info.target = value;
|
|
101
101
|
}
|
|
@@ -106,7 +106,7 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
106
106
|
parentInfo.target[info.prop] = value;
|
|
107
107
|
parentInfo.targetOriginal[info.prop] = value;
|
|
108
108
|
}
|
|
109
|
-
if (
|
|
109
|
+
if (value !== prevValue) {
|
|
110
110
|
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, []);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -131,9 +131,12 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
else {
|
|
134
|
-
const prevValue = target[prop];
|
|
135
|
-
if (
|
|
134
|
+
const prevValue = (0, globals_1.clone)(target[prop]);
|
|
135
|
+
if (value !== prevValue) {
|
|
136
136
|
target[prop] = targetOriginal[prop] = value;
|
|
137
|
+
info.primitive = false;
|
|
138
|
+
delete target[globals_1.symbolValue];
|
|
139
|
+
delete targetOriginal[globals_1.symbolValue];
|
|
137
140
|
// Notify listeners of changes.
|
|
138
141
|
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, [propStr]);
|
|
139
142
|
}
|
|
@@ -144,13 +147,24 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
144
147
|
}
|
|
145
148
|
function _assign(proxyOwner, _, value) {
|
|
146
149
|
observableState_1.state.inAssign = Math.max(0, observableState_1.state.inAssign + 1);
|
|
147
|
-
// Batch all the changes while assigning
|
|
148
|
-
observableBatcher_1.observableBatcher.begin();
|
|
149
150
|
Object.assign(proxyOwner, value);
|
|
150
|
-
observableBatcher_1.observableBatcher.end();
|
|
151
151
|
observableState_1.state.inAssign--;
|
|
152
152
|
return this;
|
|
153
153
|
}
|
|
154
|
+
function __assign(proxyOwner, _, value) {
|
|
155
|
+
// Batch all the changes while assigning
|
|
156
|
+
observableBatcher_1.observableBatcher.begin();
|
|
157
|
+
const ret = _assign(proxyOwner, _, value);
|
|
158
|
+
observableBatcher_1.observableBatcher.end();
|
|
159
|
+
return ret;
|
|
160
|
+
}
|
|
161
|
+
function __set(proxyOwner) {
|
|
162
|
+
// Batch all the changes while assigning
|
|
163
|
+
observableBatcher_1.observableBatcher.begin();
|
|
164
|
+
const ret = _set.apply(proxyOwner, arguments);
|
|
165
|
+
observableBatcher_1.observableBatcher.end();
|
|
166
|
+
return ret;
|
|
167
|
+
}
|
|
154
168
|
function binder(fn, obs) {
|
|
155
169
|
obs = (0, observableFns_1.prop)(obs);
|
|
156
170
|
return fn.bind(obs, obs, undefined);
|
|
@@ -177,12 +191,8 @@ function deleteFn(obs, target, prop) {
|
|
|
177
191
|
// Then fully delete the keys from the object
|
|
178
192
|
delete target[prop];
|
|
179
193
|
delete targetOriginal[prop];
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
if (child) {
|
|
183
|
-
info.proxies.delete(prop);
|
|
184
|
-
observableState_1.state.infos.delete(child);
|
|
185
|
-
}
|
|
194
|
+
// TODO Should find a way to remove from state.infos or there will be a memory leak if deleting
|
|
195
|
+
// unique keys often. Re-addeding the same prop will reuse the same proxy.
|
|
186
196
|
}
|
|
187
197
|
else {
|
|
188
198
|
// Delete self forwards into parent
|
|
@@ -200,8 +210,8 @@ function deleteFn(obs, target, prop) {
|
|
|
200
210
|
exports.deleteFn = deleteFn;
|
|
201
211
|
const ProxyFunctions = new Map([
|
|
202
212
|
['get', _get],
|
|
203
|
-
['set',
|
|
204
|
-
['assign',
|
|
213
|
+
['set', __set],
|
|
214
|
+
['assign', __assign],
|
|
205
215
|
['on', observableFns_1._on],
|
|
206
216
|
['prop', observableFns_1.observableProp],
|
|
207
217
|
['delete', deleteFn],
|
|
@@ -244,10 +254,10 @@ const proxyHandlerUnsafe = {
|
|
|
244
254
|
if ((observableState_1.state.inProp || targetValue === undefined || targetValue === null || !(0, globals_1.isPrimitive)(targetValue)) &&
|
|
245
255
|
!(targetValue instanceof Promise) &&
|
|
246
256
|
!(0, tools_1.isFunction)(targetValue)) {
|
|
247
|
-
// Get proxy for prop if it's not a primitive or using prop
|
|
257
|
+
// Get proxy for prop if it's not a primitive or if using `prop` function
|
|
248
258
|
observableState_1.state.inProp = false;
|
|
249
259
|
let proxy = (_a = info.proxies) === null || _a === void 0 ? void 0 : _a.get(prop);
|
|
250
|
-
// Getting a property creates
|
|
260
|
+
// Getting a property creates an observable proxy for it
|
|
251
261
|
if (!proxy && target.hasOwnProperty(prop) !== undefined) {
|
|
252
262
|
if (!info.proxies) {
|
|
253
263
|
info.proxies = new Map();
|
|
@@ -270,32 +280,43 @@ const proxyHandlerUnsafe = {
|
|
|
270
280
|
return true;
|
|
271
281
|
}
|
|
272
282
|
else if (observableState_1.state.inSetFn > 0) {
|
|
273
|
-
//
|
|
283
|
+
// If this assignment comes from within a set function it's allowed.
|
|
284
|
+
// Notifying listeners will be handled elsewhere
|
|
274
285
|
Reflect.set(target, prop, value);
|
|
275
286
|
return true;
|
|
276
287
|
}
|
|
277
288
|
else {
|
|
278
289
|
const info = infos.get(proxyOwner);
|
|
279
|
-
// Only allow setting if this proxy is
|
|
290
|
+
// Only allow setting directly if this proxy is unsafe
|
|
280
291
|
if (!info.safe) {
|
|
281
292
|
_set(proxyOwner, target, prop, value);
|
|
282
293
|
return true;
|
|
283
294
|
}
|
|
295
|
+
if (process.env.NODE_ENV === 'development') {
|
|
296
|
+
throw new Error('Cannot directly assign to an observable. Use observable.set(...) or observable.assign(...) instead. See https://www.legendapp.com/dev/state/safety/');
|
|
297
|
+
}
|
|
284
298
|
return false;
|
|
285
299
|
}
|
|
286
300
|
},
|
|
287
301
|
};
|
|
302
|
+
// Safe observables also don't allow defining or deleting properties
|
|
288
303
|
const proxyHandler = Object.assign({
|
|
289
304
|
deleteProperty() {
|
|
305
|
+
if (process.env.NODE_ENV === 'development') {
|
|
306
|
+
throw new Error('Cannot directly delete an observable. Use observable.delete() instead. See https://www.legendapp.com/dev/state/safety/');
|
|
307
|
+
}
|
|
290
308
|
return false;
|
|
291
309
|
},
|
|
292
310
|
defineProperty() {
|
|
311
|
+
if (process.env.NODE_ENV === 'development') {
|
|
312
|
+
throw new Error('Cannot defineProperty on an observable. See https://www.legendapp.com/dev/state/safety/');
|
|
313
|
+
}
|
|
293
314
|
return false;
|
|
294
315
|
},
|
|
295
316
|
}, proxyHandlerUnsafe);
|
|
296
317
|
function _observable(value, safe, parent, prop) {
|
|
297
318
|
const primitive = (0, globals_1.isPrimitive)(value);
|
|
298
|
-
const target = primitive ? {
|
|
319
|
+
const target = primitive ? { [globals_1.symbolValue]: value } : value;
|
|
299
320
|
const proxy = new Proxy(target, safe ? proxyHandler : proxyHandlerUnsafe);
|
|
300
321
|
// Save proxy to state so it can be accessed later
|
|
301
322
|
infos.set(proxy, { parent, prop, safe, target, primitive, targetOriginal: target });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../../src/observable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ListenerFn, ObservableListenerInfo } from './observableInterfaces';
|
|
2
|
+
export declare function observableBatcherNotify(cb: ListenerFn<any>, value: any, info: ObservableListenerInfo): void;
|
|
3
|
+
export declare namespace observableBatcher {
|
|
4
|
+
function batch(fn: () => void): void;
|
|
5
|
+
function begin(): void;
|
|
6
|
+
function end(force?: boolean): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observableBatcher = exports.observableBatcherNotify = void 0;
|
|
4
|
+
const tools_1 = require("@legendapp/tools");
|
|
5
|
+
let numInBatch = 0;
|
|
6
|
+
let _batch = [];
|
|
7
|
+
function onActionTimeout() {
|
|
8
|
+
if (_batch.length > 0) {
|
|
9
|
+
if (process.env.NODE_ENV === 'development') {
|
|
10
|
+
console.error('Forcibly completing observableBatcher because end() was never called. This may be due to an uncaught error between begin() and end().');
|
|
11
|
+
}
|
|
12
|
+
observableBatcher.end(/*force*/ true);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function observableBatcherNotify(cb, value, info) {
|
|
16
|
+
if (numInBatch > 0) {
|
|
17
|
+
for (let i = 0; i < _batch.length; i++) {
|
|
18
|
+
const n = _batch[i];
|
|
19
|
+
// If this callback already exists, make sure it has the latest value but do not add it
|
|
20
|
+
if (n.cb === cb) {
|
|
21
|
+
n.value = value;
|
|
22
|
+
n.info = info;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
_batch.push({ cb, value, info });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
cb(value, info);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.observableBatcherNotify = observableBatcherNotify;
|
|
33
|
+
var observableBatcher;
|
|
34
|
+
(function (observableBatcher) {
|
|
35
|
+
function batch(fn) {
|
|
36
|
+
begin();
|
|
37
|
+
fn();
|
|
38
|
+
end();
|
|
39
|
+
}
|
|
40
|
+
observableBatcher.batch = batch;
|
|
41
|
+
function begin() {
|
|
42
|
+
numInBatch++;
|
|
43
|
+
// Set a timeout to call end() in case end() is never called or there's an uncaught error
|
|
44
|
+
(0, tools_1.timeoutOnce)('batch_beginAction', onActionTimeout, 0);
|
|
45
|
+
}
|
|
46
|
+
observableBatcher.begin = begin;
|
|
47
|
+
function end(force) {
|
|
48
|
+
numInBatch--;
|
|
49
|
+
if (numInBatch <= 0 || force) {
|
|
50
|
+
(0, tools_1.clearTimeoutOnce)('batch_beginAction');
|
|
51
|
+
numInBatch = 0;
|
|
52
|
+
// Save batch locally and reset _batch first because a new batch could begin while looping over callbacks.
|
|
53
|
+
// This can happen with observableComputed for example.
|
|
54
|
+
const batch = _batch;
|
|
55
|
+
_batch = [];
|
|
56
|
+
batch.forEach(({ cb, value, info }) => cb(value, info));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
observableBatcher.end = end;
|
|
60
|
+
})(observableBatcher = exports.observableBatcher || (exports.observableBatcher = {}));
|
|
61
|
+
//# sourceMappingURL=observableBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observableBatcher.js","sourceRoot":"","sources":["../../src/observableBatcher.ts"],"names":[],"mappings":";;;AAAA,4CAAiE;AAGjE,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,MAAM,GAAwE,EAAE,CAAC;AAErF,SAAS,eAAe;IACpB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;YACxC,OAAO,CAAC,KAAK,CACT,uIAAuI,CAC1I,CAAC;SACL;QACD,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACzC;AACL,CAAC;AAED,SAAgB,uBAAuB,CAAC,EAAmB,EAAE,KAAU,EAAE,IAA4B;IACjG,IAAI,UAAU,GAAG,CAAC,EAAE;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,uFAAuF;YACvF,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACb,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACd,OAAO;aACV;SACJ;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;SAAM;QACH,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACnB;AACL,CAAC;AAfD,0DAeC;AAED,IAAiB,iBAAiB,CAuBjC;AAvBD,WAAiB,iBAAiB;IAC9B,SAAgB,KAAK,CAAC,EAAc;QAChC,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,CAAC;QACL,GAAG,EAAE,CAAC;IACV,CAAC;IAJe,uBAAK,QAIpB,CAAA;IACD,SAAgB,KAAK;QACjB,UAAU,EAAE,CAAC;QACb,yFAAyF;QACzF,IAAA,mBAAW,EAAC,mBAAmB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAJe,uBAAK,QAIpB,CAAA;IACD,SAAgB,GAAG,CAAC,KAAe;QAC/B,UAAU,EAAE,CAAC;QACb,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,IAAA,wBAAgB,EAAC,mBAAmB,CAAC,CAAC;YACtC,UAAU,GAAG,CAAC,CAAC;YACf,0GAA0G;YAC1G,uDAAuD;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;SAC3D;IACL,CAAC;IAXe,qBAAG,MAWlB,CAAA;AACL,CAAC,EAvBgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAuBjC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ObservableComputed, ValidObservableParam } from './
|
|
1
|
+
import type { ObservableComputed, ValidObservableParam } from './observableInterfaces';
|
|
2
2
|
export declare function observableComputed<T>(fn: () => ValidObservableParam<T>): ObservableComputed<T>;
|
|
@@ -5,11 +5,14 @@ const observable_1 = require("./observable");
|
|
|
5
5
|
const observableState_1 = require("./observableState");
|
|
6
6
|
function onChanged(observable, fn) {
|
|
7
7
|
const info = observableState_1.state.infos.get(observable);
|
|
8
|
+
const value = fn();
|
|
9
|
+
// Temporarily disable readonly to set the new value
|
|
8
10
|
info.readonly = false;
|
|
9
|
-
observable.set(
|
|
11
|
+
observable.set(value);
|
|
10
12
|
info.readonly = true;
|
|
11
13
|
}
|
|
12
14
|
function observableComputed(fn) {
|
|
15
|
+
// Set isTracking so that the proxy `get` function will track accessed proxies
|
|
13
16
|
observableState_1.state.isTracking = true;
|
|
14
17
|
// Create an observable for this computed variable
|
|
15
18
|
const obs = (0, observable_1.observable)(fn());
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observableComputed.js","sourceRoot":"","sources":["../../src/observableComputed.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,uDAA0C;AAE1C,SAAS,SAAS,CAAI,UAAsB,EAAE,EAAW;IACrD,MAAM,IAAI,GAAG,uBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;IAEnB,oDAAoD;IACpD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,SAAgB,kBAAkB,CAAI,EAAiC;IACnE,8EAA8E;IAC9E,uBAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IAExB,kDAAkD;IAClD,MAAM,GAAG,GAAG,IAAA,uBAAU,EAAI,EAAE,EAAE,CAAC,CAAC;IAChC,uBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;IAErC,gCAAgC;IAChC,uBAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAC7C,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CACpF,CAAC;IAEF,cAAc;IACd,uBAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,uBAAK,CAAC,cAAc,GAAG,EAAE,CAAC;IAE1B,OAAO,GAAG,CAAC;AACf,CAAC;AAlBD,gDAkBC"}
|
|
@@ -3,15 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.observableEvent = void 0;
|
|
4
4
|
const observable_1 = require("./observable");
|
|
5
5
|
function eventNotifier(obs) {
|
|
6
|
+
// Notify increments the value so that the observable changes
|
|
6
7
|
obs.set(obs.get() + 1);
|
|
7
8
|
}
|
|
8
9
|
function eventOn(obs, arg1, arg2) {
|
|
10
|
+
// Pass the on function through to the underlying observable's on function
|
|
11
|
+
// This extra step is just a convenience to allow observableEvent's on function to
|
|
12
|
+
// make the 'change' parameter optional.
|
|
9
13
|
const fn = (arg2 || arg1);
|
|
10
14
|
if (fn) {
|
|
11
15
|
return obs.on('change', fn);
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
18
|
function observableEvent() {
|
|
19
|
+
// observableEvent simply wraps around a number observable which increments its value
|
|
20
|
+
// to fire change events
|
|
15
21
|
const obs = (0, observable_1.observable)(0);
|
|
16
22
|
return {
|
|
17
23
|
fire: eventNotifier.bind(obs, obs),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observableEvent.js","sourceRoot":"","sources":["../../src/observableEvent.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAG1C,SAAS,aAAa,CAAC,GAAuB;IAC1C,6DAA6D;IAC7D,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,GAAuB,EAAE,IAA8B,EAAE,IAAiB;IACvF,0EAA0E;IAC1E,kFAAkF;IAClF,wCAAwC;IACxC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAe,CAAC;IACxC,IAAI,EAAE,EAAE;QACJ,OAAO,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC/B;AACL,CAAC;AAED,SAAgB,eAAe;IAC3B,qFAAqF;IACrF,wBAAwB;IACxB,MAAM,GAAG,GAAG,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC;IAC1B,OAAO;QACH,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;QAClC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;KAC7B,CAAC;AACN,CAAC;AARD,0CAQC"}
|