@legendapp/state 0.9.1-alpha.9 → 0.9.2-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +8 -9
- package/index.js +18 -19
- 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/{react/index.js → local-storage.js} +2 -3
- package/local-storage.js.map +1 -0
- package/mmkv.d.ts +1 -0
- package/mmkv.js +18 -0
- package/mmkv.js.map +1 -0
- package/package.json +6 -6
- package/react.d.ts +2 -0
- package/react.js +19 -0
- package/react.js.map +1 -0
- package/{configureObservable.d.ts → src/configureObservable.d.ts} +0 -0
- 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} +70 -36
- package/src/observable.js.map +1 -0
- package/{observableBatcher.d.ts → src/observableBatcher.d.ts} +1 -1
- 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/{observableEvent.d.ts → src/observableEvent.d.ts} +0 -0
- package/{observableEvent.js → src/observableEvent.js} +6 -0
- package/src/observableEvent.js.map +1 -0
- package/{observableFns.d.ts → src/observableFns.d.ts} +4 -2
- package/{observableFns.js → src/observableFns.js} +35 -10
- package/src/observableFns.js.map +1 -0
- package/{observableInterfaces.d.ts → src/observableInterfaces.d.ts} +21 -13
- package/{observableInterfaces.js → src/observableInterfaces.js} +0 -0
- package/{observableInterfaces.js.map → src/observableInterfaces.js.map} +0 -0
- package/{observableState.d.ts → src/observableState.d.ts} +2 -1
- package/{observableState.js → src/observableState.js} +0 -0
- package/{observableState.js.map → src/observableState.js.map} +0 -0
- package/{local-storage/index.d.ts → src/persist/local-storage.d.ts} +1 -1
- package/{local-storage/index.js → src/persist/local-storage.js} +2 -2
- package/src/persist/local-storage.js.map +1 -0
- package/{mmkv/index.d.ts → src/persist/mmkv.d.ts} +2 -1
- package/{mmkv/index.js → src/persist/mmkv.js} +8 -9
- package/src/persist/mmkv.js.map +1 -0
- package/{persistObservable.d.ts → src/persistObservable.d.ts} +0 -0
- 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 +10 -0
- 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 +0 -0
- 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/local-storage/index.js.map +0 -1
- package/mmkv/index.js.map +0 -1
- package/observable.d.ts +0 -8
- package/observable.js.map +0 -1
- package/observableBatcher.js +0 -53
- package/observableBatcher.js.map +0 -1
- package/observableComputed.js.map +0 -1
- 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/persistObservable.js +0 -99
- package/persistObservable.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/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export { configureObservable } from './configureObservable';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export
|
|
8
|
-
export { persistObservable } from './persistObservable';
|
|
9
|
-
export * from './observableInterfaces';
|
|
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
|
@@ -14,31 +14,30 @@ 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
|
-
exports.persistObservable = exports.
|
|
18
|
-
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");
|
|
19
19
|
Object.defineProperty(exports, "configureObservable", { enumerable: true, get: function () { return configureObservable_1.configureObservable; } });
|
|
20
|
-
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; } });
|
|
21
23
|
Object.defineProperty(exports, "observable", { enumerable: true, get: function () { return observable_1.observable; } });
|
|
22
24
|
Object.defineProperty(exports, "setter", { enumerable: true, get: function () { return observable_1.setter; } });
|
|
23
|
-
|
|
24
|
-
Object.defineProperty(exports, "
|
|
25
|
-
var
|
|
26
|
-
Object.defineProperty(exports, "
|
|
27
|
-
|
|
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; } });
|
|
28
33
|
Object.defineProperty(exports, "isObservable", { enumerable: true, get: function () { return observableFns_1.isObservable; } });
|
|
29
34
|
Object.defineProperty(exports, "isObservableEvent", { enumerable: true, get: function () { return observableFns_1.isObservableEvent; } });
|
|
30
|
-
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return observableFns_1.merge; } });
|
|
31
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; } });
|
|
32
39
|
Object.defineProperty(exports, "unlisten", { enumerable: true, get: function () { return observableFns_1.unlisten; } });
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var observableBatcher_1 = require("./observableBatcher");
|
|
36
|
-
Object.defineProperty(exports, "observableBatcher", { enumerable: true, get: function () { return observableBatcher_1.observableBatcher; } });
|
|
37
|
-
var observableComputed_1 = require("./observableComputed");
|
|
38
|
-
Object.defineProperty(exports, "observableComputed", { enumerable: true, get: function () { return observableComputed_1.observableComputed; } });
|
|
39
|
-
var observableEvent_1 = require("./observableEvent");
|
|
40
|
-
Object.defineProperty(exports, "observableEvent", { enumerable: true, get: function () { return observableEvent_1.observableEvent; } });
|
|
41
|
-
var persistObservable_1 = require("./persistObservable");
|
|
40
|
+
__exportStar(require("./src/observableInterfaces"), exports);
|
|
41
|
+
var persistObservable_1 = require("./src/persistObservable");
|
|
42
42
|
Object.defineProperty(exports, "persistObservable", { enumerable: true, get: function () { return persistObservable_1.persistObservable; } });
|
|
43
|
-
__exportStar(require("./observableInterfaces"), exports);
|
|
44
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,6 +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
|
-
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
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';
|
package/mmkv.js
ADDED
|
@@ -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("./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.
|
|
3
|
+
"version": "0.9.2-alpha.2",
|
|
4
4
|
"description": "legend-state",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"private": false,
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
],
|
|
12
12
|
"exports": {
|
|
13
13
|
".": "./index.js",
|
|
14
|
-
"./internal": "./internal
|
|
15
|
-
"./local-storage": "./local-storage
|
|
16
|
-
"./mmkv": "./mmkv
|
|
17
|
-
"./react": "./react
|
|
14
|
+
"./internal": "./internal.js",
|
|
15
|
+
"./local-storage": "./local-storage.js",
|
|
16
|
+
"./mmkv": "./mmkv.js",
|
|
17
|
+
"./react": "./react.js"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@legendapp/tools": "
|
|
20
|
+
"@legendapp/tools": "2.0.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"react": ">=16.8",
|
package/react.d.ts
ADDED
package/react.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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("./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"}
|
|
File without changes
|
|
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,31 +69,34 @@ 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] : target;
|
|
73
|
+
const needsNotifyUndefined = !value || isValuePrimitive !== info.primitive;
|
|
75
74
|
// 1. Delete keys that no longer exist
|
|
76
75
|
Object.keys(target).forEach((key) => {
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
76
|
+
if (info.proxies && (needsNotifyUndefined || value[key] === undefined)) {
|
|
77
|
+
const child = info.proxies.get(key);
|
|
78
|
+
if (child) {
|
|
79
|
+
(0, observableFns_1.notifyChildrenDeleted)(child);
|
|
80
|
+
info.proxies.delete(key);
|
|
83
81
|
}
|
|
84
|
-
delete target[key];
|
|
85
|
-
delete targetOriginal[key];
|
|
86
82
|
}
|
|
83
|
+
// Delete key on original
|
|
84
|
+
delete targetOriginal[key];
|
|
87
85
|
});
|
|
88
86
|
// To avoid notifying multiple times as props are changed, make sure we don't notify for this proxy until the assign is done
|
|
89
87
|
skipNotifyFor.push(proxyOwner);
|
|
90
88
|
if (isValuePrimitive) {
|
|
91
89
|
info.primitive = true;
|
|
92
|
-
target
|
|
90
|
+
info.target = { [globals_1.symbolValue]: value };
|
|
93
91
|
}
|
|
94
92
|
else {
|
|
95
93
|
info.primitive = false;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
if (info.proxies) {
|
|
95
|
+
// 2. Assign the values onto the target which will update all children proxies, but would leave this
|
|
96
|
+
// as a shallow copy of the the value
|
|
97
|
+
_assign(proxyOwner, target, value);
|
|
98
|
+
}
|
|
99
|
+
// Make sure keys are set on original
|
|
99
100
|
Object.assign(targetOriginal, value);
|
|
100
101
|
info.target = value;
|
|
101
102
|
}
|
|
@@ -106,7 +107,7 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
106
107
|
parentInfo.target[info.prop] = value;
|
|
107
108
|
parentInfo.targetOriginal[info.prop] = value;
|
|
108
109
|
}
|
|
109
|
-
if (
|
|
110
|
+
if (value !== prevValue) {
|
|
110
111
|
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, []);
|
|
111
112
|
}
|
|
112
113
|
}
|
|
@@ -131,9 +132,12 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
else {
|
|
134
|
-
const prevValue = target[prop];
|
|
135
|
-
if (
|
|
135
|
+
const prevValue = (0, globals_1.clone)(target[prop]);
|
|
136
|
+
if (value !== prevValue) {
|
|
136
137
|
target[prop] = targetOriginal[prop] = value;
|
|
138
|
+
info.primitive = false;
|
|
139
|
+
delete target[globals_1.symbolValue];
|
|
140
|
+
delete targetOriginal[globals_1.symbolValue];
|
|
137
141
|
// Notify listeners of changes.
|
|
138
142
|
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, [propStr]);
|
|
139
143
|
}
|
|
@@ -144,13 +148,24 @@ function _set(proxyOwner, _, prop, value) {
|
|
|
144
148
|
}
|
|
145
149
|
function _assign(proxyOwner, _, value) {
|
|
146
150
|
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
151
|
Object.assign(proxyOwner, value);
|
|
150
|
-
observableBatcher_1.observableBatcher.end();
|
|
151
152
|
observableState_1.state.inAssign--;
|
|
152
153
|
return this;
|
|
153
154
|
}
|
|
155
|
+
function __assign(proxyOwner, _, value) {
|
|
156
|
+
// Batch all the changes while assigning
|
|
157
|
+
observableBatcher_1.observableBatcher.begin();
|
|
158
|
+
const ret = _assign(proxyOwner, _, value);
|
|
159
|
+
observableBatcher_1.observableBatcher.end();
|
|
160
|
+
return ret;
|
|
161
|
+
}
|
|
162
|
+
function __set(proxyOwner) {
|
|
163
|
+
// Batch all the changes while assigning
|
|
164
|
+
observableBatcher_1.observableBatcher.begin();
|
|
165
|
+
const ret = _set.apply(proxyOwner, arguments);
|
|
166
|
+
observableBatcher_1.observableBatcher.end();
|
|
167
|
+
return ret;
|
|
168
|
+
}
|
|
154
169
|
function binder(fn, obs) {
|
|
155
170
|
obs = (0, observableFns_1.prop)(obs);
|
|
156
171
|
return fn.bind(obs, obs, undefined);
|
|
@@ -177,12 +192,10 @@ function deleteFn(obs, target, prop) {
|
|
|
177
192
|
// Then fully delete the keys from the object
|
|
178
193
|
delete target[prop];
|
|
179
194
|
delete targetOriginal[prop];
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
if
|
|
183
|
-
|
|
184
|
-
observableState_1.state.infos.delete(child);
|
|
185
|
-
}
|
|
195
|
+
// if (info.target[prop]) debugger;
|
|
196
|
+
// if (Reflect.ownKeys(info.target).length > 0) debugger;
|
|
197
|
+
// TODO Should find a way to remove from state.infos or there will be a memory leak if deleting
|
|
198
|
+
// unique keys often. Re-addeding the same prop will reuse the same proxy.
|
|
186
199
|
}
|
|
187
200
|
else {
|
|
188
201
|
// Delete self forwards into parent
|
|
@@ -200,8 +213,8 @@ function deleteFn(obs, target, prop) {
|
|
|
200
213
|
exports.deleteFn = deleteFn;
|
|
201
214
|
const ProxyFunctions = new Map([
|
|
202
215
|
['get', _get],
|
|
203
|
-
['set',
|
|
204
|
-
['assign',
|
|
216
|
+
['set', __set],
|
|
217
|
+
['assign', __assign],
|
|
205
218
|
['on', observableFns_1._on],
|
|
206
219
|
['prop', observableFns_1.observableProp],
|
|
207
220
|
['delete', deleteFn],
|
|
@@ -244,10 +257,10 @@ const proxyHandlerUnsafe = {
|
|
|
244
257
|
if ((observableState_1.state.inProp || targetValue === undefined || targetValue === null || !(0, globals_1.isPrimitive)(targetValue)) &&
|
|
245
258
|
!(targetValue instanceof Promise) &&
|
|
246
259
|
!(0, tools_1.isFunction)(targetValue)) {
|
|
247
|
-
// Get proxy for prop if it's not a primitive or using prop
|
|
260
|
+
// Get proxy for prop if it's not a primitive or if using `prop` function
|
|
248
261
|
observableState_1.state.inProp = false;
|
|
249
262
|
let proxy = (_a = info.proxies) === null || _a === void 0 ? void 0 : _a.get(prop);
|
|
250
|
-
// Getting a property creates
|
|
263
|
+
// Getting a property creates an observable proxy for it
|
|
251
264
|
if (!proxy && target.hasOwnProperty(prop) !== undefined) {
|
|
252
265
|
if (!info.proxies) {
|
|
253
266
|
info.proxies = new Map();
|
|
@@ -270,33 +283,54 @@ const proxyHandlerUnsafe = {
|
|
|
270
283
|
return true;
|
|
271
284
|
}
|
|
272
285
|
else if (observableState_1.state.inSetFn > 0) {
|
|
273
|
-
//
|
|
286
|
+
// If this assignment comes from within a set function it's allowed.
|
|
287
|
+
// Notifying listeners will be handled elsewhere
|
|
274
288
|
Reflect.set(target, prop, value);
|
|
275
289
|
return true;
|
|
276
290
|
}
|
|
277
291
|
else {
|
|
278
292
|
const info = infos.get(proxyOwner);
|
|
279
|
-
// Only allow setting if this proxy is
|
|
293
|
+
// Only allow setting directly if this proxy is unsafe
|
|
280
294
|
if (!info.safe) {
|
|
281
295
|
_set(proxyOwner, target, prop, value);
|
|
282
296
|
return true;
|
|
283
297
|
}
|
|
298
|
+
if (process.env.NODE_ENV === 'development') {
|
|
299
|
+
throw new Error('Cannot directly assign to an observable. Use observable.set(...) or observable.assign(...) instead. See https://www.legendapp.com/dev/state/safety/');
|
|
300
|
+
}
|
|
284
301
|
return false;
|
|
285
302
|
}
|
|
286
303
|
},
|
|
304
|
+
// ownKeys(target) {
|
|
305
|
+
// // this is bound to proxyOwner
|
|
306
|
+
// const info = infos.get(this);
|
|
307
|
+
// // debugger;
|
|
308
|
+
// // if (Reflect.ownKeys(info.target).length !== Reflect.ownKeys(target).length) debugger;
|
|
309
|
+
// // return Reflect.ownKeys(info ? info.target : target);
|
|
310
|
+
// return Reflect.ownKeys(target);
|
|
311
|
+
// },
|
|
287
312
|
};
|
|
313
|
+
// Safe observables also don't allow defining or deleting properties
|
|
288
314
|
const proxyHandler = Object.assign({
|
|
289
315
|
deleteProperty() {
|
|
316
|
+
if (process.env.NODE_ENV === 'development') {
|
|
317
|
+
throw new Error('Cannot directly delete an observable. Use observable.delete() instead. See https://www.legendapp.com/dev/state/safety/');
|
|
318
|
+
}
|
|
290
319
|
return false;
|
|
291
320
|
},
|
|
292
321
|
defineProperty() {
|
|
322
|
+
if (process.env.NODE_ENV === 'development') {
|
|
323
|
+
throw new Error('Cannot defineProperty on an observable. See https://www.legendapp.com/dev/state/safety/');
|
|
324
|
+
}
|
|
293
325
|
return false;
|
|
294
326
|
},
|
|
295
327
|
}, proxyHandlerUnsafe);
|
|
296
328
|
function _observable(value, safe, parent, prop) {
|
|
297
329
|
const primitive = (0, globals_1.isPrimitive)(value);
|
|
298
|
-
const target = primitive ? {
|
|
299
|
-
const
|
|
330
|
+
const target = primitive ? { [globals_1.symbolValue]: value } : value;
|
|
331
|
+
const handler = safe ? proxyHandler : proxyHandlerUnsafe;
|
|
332
|
+
const proxy = new Proxy(target, handler);
|
|
333
|
+
// handler.ownKeys = handler.ownKeys.bind(proxy);
|
|
300
334
|
// Save proxy to state so it can be accessed later
|
|
301
335
|
infos.set(proxy, { parent, prop, safe, target, primitive, targetOriginal: target });
|
|
302
336
|
return proxy;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../../src/observable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ListenerFn, ObservableListenerInfo } from './observableInterfaces';
|
|
2
|
+
export declare function observableBatcherNotify(cb: ListenerFn<any>, value: any, info: ObservableListenerInfo): void;
|
|
2
3
|
export declare namespace observableBatcher {
|
|
3
4
|
function batch(fn: () => void): void;
|
|
4
5
|
function begin(): void;
|
|
5
6
|
function end(force?: boolean): void;
|
|
6
|
-
function notify(cb: ListenerFn<any>, value: any, info: ObservableListenerInfo): void;
|
|
7
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 './observableInterfaces';
|
|
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"}
|
|
File without changes
|