@legendapp/state 0.9.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/configureObservable.d.ts +14 -0
- package/configureObservable.js +14 -0
- package/configureObservable.js.map +1 -0
- package/globals.d.ts +10 -0
- package/globals.js +73 -0
- package/globals.js.map +1 -0
- package/index.d.ts +7 -0
- package/index.js +27 -0
- package/index.js.map +1 -0
- package/observable.d.ts +8 -0
- package/observable.js +311 -0
- package/observable.js.map +1 -0
- package/observableBatcher.d.ts +7 -0
- package/observableBatcher.js +53 -0
- package/observableBatcher.js.map +1 -0
- package/observableComputed.d.ts +2 -0
- package/observableComputed.js +25 -0
- package/observableComputed.js.map +1 -0
- package/observableEvent.d.ts +2 -0
- package/observableEvent.js +22 -0
- package/observableEvent.js.map +1 -0
- package/observableFns.d.ts +34 -0
- package/observableFns.js +206 -0
- package/observableFns.js.map +1 -0
- package/observableListener.d.ts +2 -0
- package/observableListener.js +14 -0
- package/observableListener.js.map +1 -0
- package/observableState.d.ts +28 -0
- package/observableState.js +32 -0
- package/observableState.js.map +1 -0
- package/package.json +53 -0
- package/persist/index.d.ts +1 -0
- package/persist/index.js +6 -0
- package/persist/index.js.map +1 -0
- package/persist/persistObservable.d.ts +3 -0
- package/persist/persistObservable.js +100 -0
- package/persist/persistObservable.js.map +1 -0
- package/persist/react-native-mmkv/index.d.ts +9 -0
- package/persist/react-native-mmkv/index.js +52 -0
- package/persist/react-native-mmkv/index.js.map +1 -0
- package/persist/web/ObservablePersistLocalStorage.d.ts +8 -0
- package/persist/web/ObservablePersistLocalStorage.js +38 -0
- package/persist/web/ObservablePersistLocalStorage.js.map +1 -0
- package/persist/web/index.d.ts +1 -0
- package/persist/web/index.js +18 -0
- package/persist/web/index.js.map +1 -0
- package/primitivePrototypes.d.ts +1 -0
- package/primitivePrototypes.js +22 -0
- package/primitivePrototypes.js.map +1 -0
- package/promiseCallback.d.ts +8 -0
- package/promiseCallback.js +17 -0
- package/promiseCallback.js.map +1 -0
- package/react/index.d.ts +2 -0
- package/react/index.js +19 -0
- package/react/index.js.map +1 -0
- package/react/useNewObservable.d.ts +3 -0
- package/react/useNewObservable.js +23 -0
- package/react/useNewObservable.js.map +1 -0
- package/react/useObservables.d.ts +2 -0
- package/react/useObservables.js +98 -0
- package/react/useObservables.js.map +1 -0
- package/react/usePrimitiveFunctions.d.ts +4 -0
- package/react/usePrimitiveFunctions.js +21 -0
- package/react/usePrimitiveFunctions.js.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.js +18 -0
- package/types/index.js.map +1 -0
- package/types/observableInterfaces.d.ts +150 -0
- package/types/observableInterfaces.js +3 -0
- package/types/observableInterfaces.js.map +1 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ClassConstructor, ObservablePersistLocal, ObservablePersistRemote } from './types/observableInterfaces';
|
|
2
|
+
interface Config {
|
|
3
|
+
extendPrototypes?: boolean;
|
|
4
|
+
persist?: {
|
|
5
|
+
localPersistence?: ClassConstructor<ObservablePersistLocal>;
|
|
6
|
+
remotePersistence?: ClassConstructor<ObservablePersistRemote>;
|
|
7
|
+
saveTimeout?: number;
|
|
8
|
+
dateModifiedKey?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/** @internal **/
|
|
12
|
+
export declare const config: Config;
|
|
13
|
+
export declare function configureObservable(options?: Config): void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureObservable = exports.config = void 0;
|
|
4
|
+
const primitivePrototypes_1 = require("./primitivePrototypes");
|
|
5
|
+
/** @internal **/
|
|
6
|
+
exports.config = { extendPrototypes: true };
|
|
7
|
+
function configureObservable(options) {
|
|
8
|
+
Object.assign(exports.config, options);
|
|
9
|
+
if (exports.config.extendPrototypes) {
|
|
10
|
+
(0, primitivePrototypes_1.extendPrototypes)();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.configureObservable = configureObservable;
|
|
14
|
+
//# sourceMappingURL=configureObservable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureObservable.js","sourceRoot":"","sources":["../../src/configureObservable.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AAazD,iBAAiB;AACJ,QAAA,MAAM,GAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AAEzD,SAAgB,mBAAmB,CAAC,OAAgB;IAChD,MAAM,CAAC,MAAM,CAAC,cAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,cAAM,CAAC,gBAAgB,EAAE;QACzB,IAAA,sCAAgB,GAAE,CAAC;KACtB;AACL,CAAC;AALD,kDAKC"}
|
package/globals.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const symbolDateModified: unique symbol;
|
|
2
|
+
export declare const symbolShallow: unique symbol;
|
|
3
|
+
export declare function removeNullUndefined<T extends Record<string, any>>(a: T): any;
|
|
4
|
+
export declare function replaceKeyInObject(obj: object, keySource: any, keyTarget: any, clone: boolean): Record<any, any>;
|
|
5
|
+
export declare function isPrimitive(val: any): boolean;
|
|
6
|
+
export declare function isCollection(obj: any): boolean;
|
|
7
|
+
export declare function isObjectEmpty(obj: object): boolean;
|
|
8
|
+
export declare function getDateModifiedKey(dateModifiedKey: string): string;
|
|
9
|
+
export declare function jsonEqual(obj1: any, obj2: any): boolean;
|
|
10
|
+
export declare function clone(obj: any): any;
|
package/globals.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clone = exports.jsonEqual = exports.getDateModifiedKey = exports.isObjectEmpty = exports.isCollection = exports.isPrimitive = exports.replaceKeyInObject = exports.removeNullUndefined = exports.symbolShallow = exports.symbolDateModified = void 0;
|
|
4
|
+
const tools_1 = require("@legendapp/tools");
|
|
5
|
+
const configureObservable_1 = require("./configureObservable");
|
|
6
|
+
exports.symbolDateModified = Symbol('__dateModified');
|
|
7
|
+
exports.symbolShallow = Symbol('__shallow');
|
|
8
|
+
function removeNullUndefined(a) {
|
|
9
|
+
if (a === undefined)
|
|
10
|
+
return null;
|
|
11
|
+
Object.keys(a).forEach((key) => {
|
|
12
|
+
const v = a[key];
|
|
13
|
+
if (v === null || v === undefined) {
|
|
14
|
+
delete a[key];
|
|
15
|
+
}
|
|
16
|
+
else if ((0, tools_1.isObject)(v)) {
|
|
17
|
+
removeNullUndefined(v);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports.removeNullUndefined = removeNullUndefined;
|
|
22
|
+
function replaceKeyInObject(obj, keySource, keyTarget, clone) {
|
|
23
|
+
if ((0, tools_1.isObject)(obj)) {
|
|
24
|
+
const target = clone ? {} : obj;
|
|
25
|
+
if (obj[keySource]) {
|
|
26
|
+
target[keyTarget] = obj[keySource];
|
|
27
|
+
delete target[keySource];
|
|
28
|
+
}
|
|
29
|
+
Object.keys(obj).forEach((key) => {
|
|
30
|
+
if (key !== keySource) {
|
|
31
|
+
target[key] = replaceKeyInObject(obj[key], keySource, keyTarget, clone);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return target;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return obj;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.replaceKeyInObject = replaceKeyInObject;
|
|
41
|
+
function isPrimitive(val) {
|
|
42
|
+
return (!(0, tools_1.isObject)(val) &&
|
|
43
|
+
!(0, tools_1.isArray)(val) &&
|
|
44
|
+
!(val instanceof WeakMap) &&
|
|
45
|
+
!(val instanceof WeakSet) &&
|
|
46
|
+
!(val instanceof Error) &&
|
|
47
|
+
!(val instanceof Date) &&
|
|
48
|
+
!(val instanceof String) &&
|
|
49
|
+
!(val instanceof ArrayBuffer));
|
|
50
|
+
}
|
|
51
|
+
exports.isPrimitive = isPrimitive;
|
|
52
|
+
function isCollection(obj) {
|
|
53
|
+
return (0, tools_1.isArray)(obj) || obj instanceof Map || obj instanceof Set || obj instanceof WeakMap || obj instanceof WeakSet;
|
|
54
|
+
}
|
|
55
|
+
exports.isCollection = isCollection;
|
|
56
|
+
function isObjectEmpty(obj) {
|
|
57
|
+
return obj && Object.keys(obj).length === 0;
|
|
58
|
+
}
|
|
59
|
+
exports.isObjectEmpty = isObjectEmpty;
|
|
60
|
+
function getDateModifiedKey(dateModifiedKey) {
|
|
61
|
+
var _a;
|
|
62
|
+
return dateModifiedKey || ((_a = configureObservable_1.config.persist) === null || _a === void 0 ? void 0 : _a.dateModifiedKey) || '@';
|
|
63
|
+
}
|
|
64
|
+
exports.getDateModifiedKey = getDateModifiedKey;
|
|
65
|
+
function jsonEqual(obj1, obj2) {
|
|
66
|
+
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
67
|
+
}
|
|
68
|
+
exports.jsonEqual = jsonEqual;
|
|
69
|
+
function clone(obj) {
|
|
70
|
+
return obj === undefined || obj === null ? obj : JSON.parse(JSON.stringify(obj));
|
|
71
|
+
}
|
|
72
|
+
exports.clone = clone;
|
|
73
|
+
//# sourceMappingURL=globals.js.map
|
package/globals.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/globals.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { configureObservable } from './configureObservable';
|
|
2
|
+
export { observable, setter, getter, assigner } from './observable';
|
|
3
|
+
export { prop, shallow, isObservable, isObservableEvent, merge, listen, unlisten } from './observableFns';
|
|
4
|
+
export { disposeListener } from './observableListener';
|
|
5
|
+
export { observableBatcher } from './observableBatcher';
|
|
6
|
+
export { observableComputed } from './observableComputed';
|
|
7
|
+
export { observableEvent } from './observableEvent';
|
package/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observableEvent = exports.observableComputed = exports.observableBatcher = exports.disposeListener = exports.unlisten = exports.listen = exports.merge = exports.isObservableEvent = exports.isObservable = exports.shallow = exports.prop = exports.assigner = exports.getter = exports.setter = exports.observable = exports.configureObservable = void 0;
|
|
4
|
+
var configureObservable_1 = require("./configureObservable");
|
|
5
|
+
Object.defineProperty(exports, "configureObservable", { enumerable: true, get: function () { return configureObservable_1.configureObservable; } });
|
|
6
|
+
var observable_1 = require("./observable");
|
|
7
|
+
Object.defineProperty(exports, "observable", { enumerable: true, get: function () { return observable_1.observable; } });
|
|
8
|
+
Object.defineProperty(exports, "setter", { enumerable: true, get: function () { return observable_1.setter; } });
|
|
9
|
+
Object.defineProperty(exports, "getter", { enumerable: true, get: function () { return observable_1.getter; } });
|
|
10
|
+
Object.defineProperty(exports, "assigner", { enumerable: true, get: function () { return observable_1.assigner; } });
|
|
11
|
+
var observableFns_1 = require("./observableFns");
|
|
12
|
+
Object.defineProperty(exports, "prop", { enumerable: true, get: function () { return observableFns_1.prop; } });
|
|
13
|
+
Object.defineProperty(exports, "shallow", { enumerable: true, get: function () { return observableFns_1.shallow; } });
|
|
14
|
+
Object.defineProperty(exports, "isObservable", { enumerable: true, get: function () { return observableFns_1.isObservable; } });
|
|
15
|
+
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
|
+
Object.defineProperty(exports, "listen", { enumerable: true, get: function () { return observableFns_1.listen; } });
|
|
18
|
+
Object.defineProperty(exports, "unlisten", { enumerable: true, get: function () { return observableFns_1.unlisten; } });
|
|
19
|
+
var observableListener_1 = require("./observableListener");
|
|
20
|
+
Object.defineProperty(exports, "disposeListener", { enumerable: true, get: function () { return observableListener_1.disposeListener; } });
|
|
21
|
+
var observableBatcher_1 = require("./observableBatcher");
|
|
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; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2CAAoE;AAA3D,wGAAA,UAAU,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAC7C,iDAA0G;AAAjG,qGAAA,IAAI,OAAA;AAAE,wGAAA,OAAO,OAAA;AAAE,6GAAA,YAAY,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAAE,sGAAA,KAAK,OAAA;AAAE,uGAAA,MAAM,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAChF,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
|
package/observable.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable, ObservableChecker, ObservableUnsafe, ValidObservableParam } from './types/observableInterfaces';
|
|
2
|
+
export declare function setter<T>(obs: ObservableChecker<T>): any;
|
|
3
|
+
export declare function getter<T>(obs: ObservableChecker<T>): any;
|
|
4
|
+
export declare function assigner<T>(obs: ObservableChecker<T>): any;
|
|
5
|
+
export declare function deleteFn(obs: ObservableChecker, target: any, prop?: string | number | symbol): ObservableChecker<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 };
|
package/observable.js
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observable = exports.deleteFn = exports.assigner = exports.getter = exports.setter = void 0;
|
|
4
|
+
const tools_1 = require("@legendapp/tools");
|
|
5
|
+
const configureObservable_1 = require("./configureObservable");
|
|
6
|
+
const globals_1 = require("./globals");
|
|
7
|
+
const observableBatcher_1 = require("./observableBatcher");
|
|
8
|
+
const observableFns_1 = require("./observableFns");
|
|
9
|
+
const observableState_1 = require("./observableState");
|
|
10
|
+
const primitivePrototypes_1 = require("./primitivePrototypes");
|
|
11
|
+
const { infos, skipNotifyFor, updateTracking, lastAccessedProxy } = observableState_1.state;
|
|
12
|
+
const MapModifiers = {
|
|
13
|
+
clear: true,
|
|
14
|
+
delete: true,
|
|
15
|
+
set: true,
|
|
16
|
+
};
|
|
17
|
+
const ArrayModifiers = {
|
|
18
|
+
copyWithin: true,
|
|
19
|
+
fill: true,
|
|
20
|
+
from: true,
|
|
21
|
+
pop: true,
|
|
22
|
+
push: true,
|
|
23
|
+
reverse: true,
|
|
24
|
+
shift: true,
|
|
25
|
+
sort: true,
|
|
26
|
+
splice: true,
|
|
27
|
+
unshift: true,
|
|
28
|
+
};
|
|
29
|
+
const SetModifiers = {
|
|
30
|
+
add: true,
|
|
31
|
+
clear: true,
|
|
32
|
+
delete: true,
|
|
33
|
+
};
|
|
34
|
+
const WeakMapModifiers = {
|
|
35
|
+
set: true,
|
|
36
|
+
delete: true,
|
|
37
|
+
};
|
|
38
|
+
const WeakSetModifiers = {
|
|
39
|
+
add: true,
|
|
40
|
+
delete: true,
|
|
41
|
+
};
|
|
42
|
+
function collectionSetter(prop, proxyOwner, ...args) {
|
|
43
|
+
// this = target
|
|
44
|
+
const prevValue = (this instanceof Map && new Map(this)) ||
|
|
45
|
+
(this instanceof Set && new Set(this)) ||
|
|
46
|
+
((0, tools_1.isArray)(this) && this.slice()) ||
|
|
47
|
+
this;
|
|
48
|
+
this[prop].apply(this, args);
|
|
49
|
+
(0, observableFns_1.notifyObservable)(proxyOwner, this, prevValue, []);
|
|
50
|
+
}
|
|
51
|
+
function _get(proxyOwner) {
|
|
52
|
+
const info = infos.get(proxyOwner);
|
|
53
|
+
const target = info.target;
|
|
54
|
+
return info.primitive ? target._value : target;
|
|
55
|
+
}
|
|
56
|
+
function _set(proxyOwner, _, prop, value) {
|
|
57
|
+
var _a;
|
|
58
|
+
observableState_1.state.inSetFn = Math.max(0, observableState_1.state.inSetFn++);
|
|
59
|
+
const info = infos.get(proxyOwner);
|
|
60
|
+
if (!info)
|
|
61
|
+
debugger;
|
|
62
|
+
if (info.readonly) {
|
|
63
|
+
return proxyOwner;
|
|
64
|
+
}
|
|
65
|
+
// Need to keep both target and targetOriginal up to date. targetOriginal may not be
|
|
66
|
+
// an === match but it needs to have the same keys.
|
|
67
|
+
const target = info.target;
|
|
68
|
+
const targetOriginal = info.targetOriginal;
|
|
69
|
+
// There was no prop
|
|
70
|
+
if (arguments.length < 4) {
|
|
71
|
+
value = prop;
|
|
72
|
+
prop = undefined;
|
|
73
|
+
const isValuePrimitive = (0, globals_1.isPrimitive)(value);
|
|
74
|
+
const prevValue = info.primitive ? target._value : Object.assign({}, target);
|
|
75
|
+
// 1. Delete keys that no longer exist
|
|
76
|
+
Object.keys(target).forEach((key) => {
|
|
77
|
+
if (!value || isValuePrimitive !== info.primitive || value[key] === undefined) {
|
|
78
|
+
if (info.proxies) {
|
|
79
|
+
const child = info.proxies.get(key);
|
|
80
|
+
if (child) {
|
|
81
|
+
proxyOwner.delete(key);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
delete target[key];
|
|
85
|
+
delete targetOriginal[key];
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// To avoid notifying multiple times as props are changed, make sure we don't notify for this proxy until the assign is done
|
|
89
|
+
skipNotifyFor.push(proxyOwner);
|
|
90
|
+
if (isValuePrimitive) {
|
|
91
|
+
info.primitive = true;
|
|
92
|
+
target._value = value;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
info.primitive = false;
|
|
96
|
+
// 2. Assign the values onto the target which will update all children proxies, but would leave this
|
|
97
|
+
// as a shallow copy of the the value
|
|
98
|
+
proxyOwner.assign(value);
|
|
99
|
+
Object.assign(targetOriginal, value);
|
|
100
|
+
info.target = value;
|
|
101
|
+
}
|
|
102
|
+
skipNotifyFor.pop();
|
|
103
|
+
// 3. If this has a proxy parent, update the parent's target with this value to fix the shallow copy problem
|
|
104
|
+
if (info.parent) {
|
|
105
|
+
const parentInfo = infos.get(info.parent);
|
|
106
|
+
parentInfo.target[info.prop] = value;
|
|
107
|
+
parentInfo.targetOriginal[info.prop] = value;
|
|
108
|
+
}
|
|
109
|
+
if (!(0, globals_1.jsonEqual)(value, prevValue)) {
|
|
110
|
+
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, []);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (typeof prop === 'symbol') {
|
|
114
|
+
target[prop] = value;
|
|
115
|
+
targetOriginal[prop] = value;
|
|
116
|
+
}
|
|
117
|
+
else if ((0, tools_1.isString)(prop) || (0, tools_1.isNumber)(prop)) {
|
|
118
|
+
const propStr = String(prop);
|
|
119
|
+
const proxy = (_a = info === null || info === void 0 ? void 0 : info.proxies) === null || _a === void 0 ? void 0 : _a.get(propStr);
|
|
120
|
+
if (proxy) {
|
|
121
|
+
// If prop has a proxy, forward the set into the proxy
|
|
122
|
+
_set(proxy, target[prop], value);
|
|
123
|
+
}
|
|
124
|
+
else if ((0, tools_1.isArray)(target)) {
|
|
125
|
+
// Ignore array length changing because that's caused by mutations which already notified.
|
|
126
|
+
if (prop !== 'length' && target[prop] !== value) {
|
|
127
|
+
const prevValue = target.slice();
|
|
128
|
+
target[prop] = targetOriginal[prop] = value;
|
|
129
|
+
// Notify listeners of changes.
|
|
130
|
+
(0, observableFns_1.notifyObservable)(proxyOwner, target, prevValue, []);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const prevValue = target[prop];
|
|
135
|
+
if (!(0, globals_1.jsonEqual)(value, prevValue)) {
|
|
136
|
+
target[prop] = targetOriginal[prop] = value;
|
|
137
|
+
// Notify listeners of changes.
|
|
138
|
+
(0, observableFns_1.notifyObservable)(proxyOwner, value, prevValue, [propStr]);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
observableState_1.state.inSetFn--;
|
|
143
|
+
return prop ? proxyOwner[prop] : proxyOwner;
|
|
144
|
+
}
|
|
145
|
+
function _assign(proxyOwner, _, value) {
|
|
146
|
+
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
|
+
Object.assign(proxyOwner, value);
|
|
150
|
+
observableBatcher_1.observableBatcher.end();
|
|
151
|
+
observableState_1.state.inAssign--;
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
function binder(fn, obs) {
|
|
155
|
+
obs = (0, observableFns_1.prop)(obs);
|
|
156
|
+
return fn.bind(obs, obs, undefined);
|
|
157
|
+
}
|
|
158
|
+
function setter(obs) {
|
|
159
|
+
return binder(_set, obs);
|
|
160
|
+
}
|
|
161
|
+
exports.setter = setter;
|
|
162
|
+
function getter(obs) {
|
|
163
|
+
return binder(_get, obs);
|
|
164
|
+
}
|
|
165
|
+
exports.getter = getter;
|
|
166
|
+
function assigner(obs) {
|
|
167
|
+
return binder(_assign, obs);
|
|
168
|
+
}
|
|
169
|
+
exports.assigner = assigner;
|
|
170
|
+
function deleteFn(obs, target, prop) {
|
|
171
|
+
const info = infos.get(obs);
|
|
172
|
+
if (!info.readonly) {
|
|
173
|
+
if (prop !== undefined) {
|
|
174
|
+
const targetOriginal = info.targetOriginal;
|
|
175
|
+
// First set to undefined
|
|
176
|
+
_set(obs, target, prop, undefined);
|
|
177
|
+
// Then fully delete the keys from the object
|
|
178
|
+
delete target[prop];
|
|
179
|
+
delete targetOriginal[prop];
|
|
180
|
+
// Remove the child proxy from state
|
|
181
|
+
const child = info.proxies.get(prop);
|
|
182
|
+
if (child) {
|
|
183
|
+
info.proxies.delete(prop);
|
|
184
|
+
observableState_1.state.infos.delete(child);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// Delete self forwards into parent
|
|
189
|
+
const parent = info.parent;
|
|
190
|
+
if (parent) {
|
|
191
|
+
const parentInfo = infos.get(info.parent);
|
|
192
|
+
if (parentInfo) {
|
|
193
|
+
deleteFn(parent, parentInfo.target, info.prop);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return obs;
|
|
199
|
+
}
|
|
200
|
+
exports.deleteFn = deleteFn;
|
|
201
|
+
const ProxyFunctions = new Map([
|
|
202
|
+
['get', _get],
|
|
203
|
+
['set', _set],
|
|
204
|
+
['assign', _assign],
|
|
205
|
+
['on', observableFns_1._on],
|
|
206
|
+
['prop', observableFns_1.observableProp],
|
|
207
|
+
['delete', deleteFn],
|
|
208
|
+
]);
|
|
209
|
+
const proxyHandlerUnsafe = {
|
|
210
|
+
get(_, prop, proxyOwner) {
|
|
211
|
+
var _a;
|
|
212
|
+
const info = infos.get(proxyOwner);
|
|
213
|
+
const target = info.target;
|
|
214
|
+
const targetValue = target[prop];
|
|
215
|
+
if ((0, tools_1.isFunction)(targetValue) && (0, globals_1.isCollection)(target)) {
|
|
216
|
+
// If this is a modifying function on a collection, use custom setter which notifies of changes
|
|
217
|
+
// Note: This comes first so we don't overwrite the collection set function
|
|
218
|
+
if ((target instanceof Map && MapModifiers[prop]) ||
|
|
219
|
+
(target instanceof WeakMap && WeakMapModifiers[prop]) ||
|
|
220
|
+
(target instanceof Set && SetModifiers[prop]) ||
|
|
221
|
+
(target instanceof WeakSet && WeakSetModifiers[prop]) ||
|
|
222
|
+
((0, tools_1.isArray)(target) && ArrayModifiers[prop])) {
|
|
223
|
+
return collectionSetter.bind(target, prop, proxyOwner);
|
|
224
|
+
}
|
|
225
|
+
// Non-modifying functions pass straight through
|
|
226
|
+
return targetValue.bind(target);
|
|
227
|
+
}
|
|
228
|
+
else if (ProxyFunctions.has(prop)) {
|
|
229
|
+
updateTracking(proxyOwner, undefined, info, /*shallow*/ false);
|
|
230
|
+
// Calling a proxy function returns a bound function
|
|
231
|
+
return ProxyFunctions.get(prop).bind(proxyOwner, proxyOwner, target);
|
|
232
|
+
}
|
|
233
|
+
else if (prop === globals_1.symbolShallow) {
|
|
234
|
+
updateTracking(proxyOwner, undefined, info, /*shallow*/ true);
|
|
235
|
+
return proxyOwner;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
// Update lastAccessedProxy to support extended prototype functions on primitives
|
|
239
|
+
if (configureObservable_1.config.extendPrototypes) {
|
|
240
|
+
lastAccessedProxy.proxy = proxyOwner;
|
|
241
|
+
lastAccessedProxy.prop = prop;
|
|
242
|
+
}
|
|
243
|
+
updateTracking(proxyOwner, prop, info, /*shallow*/ false);
|
|
244
|
+
if ((observableState_1.state.inProp || targetValue === undefined || targetValue === null || !(0, globals_1.isPrimitive)(targetValue)) &&
|
|
245
|
+
!(targetValue instanceof Promise) &&
|
|
246
|
+
!(0, tools_1.isFunction)(targetValue)) {
|
|
247
|
+
// Get proxy for prop if it's not a primitive or using prop(key)
|
|
248
|
+
observableState_1.state.inProp = false;
|
|
249
|
+
let proxy = (_a = info.proxies) === null || _a === void 0 ? void 0 : _a.get(prop);
|
|
250
|
+
// Getting a property creates a proxy for it
|
|
251
|
+
if (!proxy && target.hasOwnProperty(prop) !== undefined) {
|
|
252
|
+
if (!info.proxies) {
|
|
253
|
+
info.proxies = new Map();
|
|
254
|
+
}
|
|
255
|
+
proxy = _observable(targetValue, info.safe, proxyOwner, prop);
|
|
256
|
+
info.proxies.set(prop, proxy);
|
|
257
|
+
}
|
|
258
|
+
return proxy || targetValue;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
return targetValue;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
set(_, prop, value, proxyOwner) {
|
|
266
|
+
const info = infos.get(proxyOwner);
|
|
267
|
+
const target = info.target;
|
|
268
|
+
if (observableState_1.state.inAssign > 0) {
|
|
269
|
+
_set(proxyOwner, target, prop, value);
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
else if (observableState_1.state.inSetFn > 0) {
|
|
273
|
+
// Set function handles notifying
|
|
274
|
+
Reflect.set(target, prop, value);
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
const info = infos.get(proxyOwner);
|
|
279
|
+
// Only allow setting if this proxy is not safe
|
|
280
|
+
if (!info.safe) {
|
|
281
|
+
_set(proxyOwner, target, prop, value);
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
const proxyHandler = Object.assign({
|
|
289
|
+
deleteProperty() {
|
|
290
|
+
return false;
|
|
291
|
+
},
|
|
292
|
+
defineProperty() {
|
|
293
|
+
return false;
|
|
294
|
+
},
|
|
295
|
+
}, proxyHandlerUnsafe);
|
|
296
|
+
function _observable(value, safe, parent, prop) {
|
|
297
|
+
const primitive = (0, globals_1.isPrimitive)(value);
|
|
298
|
+
const target = primitive ? { _value: value } : value;
|
|
299
|
+
const proxy = new Proxy(target, safe ? proxyHandler : proxyHandlerUnsafe);
|
|
300
|
+
// Save proxy to state so it can be accessed later
|
|
301
|
+
infos.set(proxy, { parent, prop, safe, target, primitive, targetOriginal: target });
|
|
302
|
+
return proxy;
|
|
303
|
+
}
|
|
304
|
+
function observable(value, unsafe) {
|
|
305
|
+
if (!observableState_1.state.didOverride && configureObservable_1.config.extendPrototypes) {
|
|
306
|
+
(0, primitivePrototypes_1.extendPrototypes)();
|
|
307
|
+
}
|
|
308
|
+
return _observable(value, !unsafe);
|
|
309
|
+
}
|
|
310
|
+
exports.observable = observable;
|
|
311
|
+
//# sourceMappingURL=observable.js.map
|
|
@@ -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, ObsListenerInfo } from './types/observableInterfaces';
|
|
2
|
+
export declare namespace observableBatcher {
|
|
3
|
+
function batch(fn: () => void): void;
|
|
4
|
+
function begin(): void;
|
|
5
|
+
function end(force?: boolean): void;
|
|
6
|
+
function notify(cb: ListenerFn<any>, value: any, info: ObsListenerInfo): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observableBatcher = 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
|
+
observableBatcher.end(/*force*/ true);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
var observableBatcher;
|
|
13
|
+
(function (observableBatcher) {
|
|
14
|
+
function batch(fn) {
|
|
15
|
+
begin();
|
|
16
|
+
fn();
|
|
17
|
+
end();
|
|
18
|
+
}
|
|
19
|
+
observableBatcher.batch = batch;
|
|
20
|
+
function begin() {
|
|
21
|
+
numInBatch++;
|
|
22
|
+
(0, tools_1.timeoutOnce)('batch_beginAction', onActionTimeout, 0);
|
|
23
|
+
}
|
|
24
|
+
observableBatcher.begin = begin;
|
|
25
|
+
function end(force) {
|
|
26
|
+
numInBatch--;
|
|
27
|
+
if (numInBatch <= 0 || force) {
|
|
28
|
+
numInBatch = 0;
|
|
29
|
+
_batch.forEach(({ cb, value, info }) => cb(value, info));
|
|
30
|
+
_batch = [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
observableBatcher.end = end;
|
|
34
|
+
function notify(cb, value, info) {
|
|
35
|
+
if (numInBatch > 0) {
|
|
36
|
+
for (let i = 0; i < _batch.length; i++) {
|
|
37
|
+
const n = _batch[i];
|
|
38
|
+
// If this callback already exists, make sure it has the latest value but do not add it
|
|
39
|
+
if (n.cb === cb) {
|
|
40
|
+
n.value = value;
|
|
41
|
+
n.info = info;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
_batch.push({ cb, value, info });
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
cb(value, info);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
observableBatcher.notify = notify;
|
|
52
|
+
})(observableBatcher = exports.observableBatcher || (exports.observableBatcher = {}));
|
|
53
|
+
//# sourceMappingURL=observableBatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observableBatcher.js","sourceRoot":"","sources":["../../src/observableBatcher.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAG/C,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,MAAM,GAAiE,EAAE,CAAC;AAE9E,SAAS,eAAe;IACpB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACzC;AACL,CAAC;AAED,IAAiB,iBAAiB,CAkCjC;AAlCD,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,IAAA,mBAAW,EAAC,mBAAmB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAHe,uBAAK,QAGpB,CAAA;IACD,SAAgB,GAAG,CAAC,KAAe;QAC/B,UAAU,EAAE,CAAC;QACb,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,UAAU,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,EAAE,CAAC;SACf;IACL,CAAC;IAPe,qBAAG,MAOlB,CAAA;IACD,SAAgB,MAAM,CAAC,EAAmB,EAAE,KAAU,EAAE,IAAqB;QACzE,IAAI,UAAU,GAAG,CAAC,EAAE;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,uFAAuF;gBACvF,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;oBACb,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;oBAChB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;oBACd,OAAO;iBACV;aACJ;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACpC;aAAM;YACH,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACnB;IACL,CAAC;IAfe,wBAAM,SAerB,CAAA;AACL,CAAC,EAlCgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAkCjC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observableComputed = void 0;
|
|
4
|
+
const observable_1 = require("./observable");
|
|
5
|
+
const observableState_1 = require("./observableState");
|
|
6
|
+
function onChanged(observable, fn) {
|
|
7
|
+
const info = observableState_1.state.infos.get(observable);
|
|
8
|
+
info.readonly = false;
|
|
9
|
+
observable.set(fn());
|
|
10
|
+
info.readonly = true;
|
|
11
|
+
}
|
|
12
|
+
function observableComputed(fn) {
|
|
13
|
+
observableState_1.state.isTracking = true;
|
|
14
|
+
// Create an observable for this computed variable
|
|
15
|
+
const obs = (0, observable_1.observable)(fn());
|
|
16
|
+
observableState_1.state.infos.get(obs).readonly = true;
|
|
17
|
+
// Listen to all tracked proxies
|
|
18
|
+
observableState_1.state.trackedProxies.forEach(([tracked, prop]) => (prop ? tracked.prop(prop) : tracked).on('change', onChanged.bind(this, obs, fn)));
|
|
19
|
+
// Reset state
|
|
20
|
+
observableState_1.state.isTracking = false;
|
|
21
|
+
observableState_1.state.trackedProxies = [];
|
|
22
|
+
return obs;
|
|
23
|
+
}
|
|
24
|
+
exports.observableComputed = observableComputed;
|
|
25
|
+
//# sourceMappingURL=observableComputed.js.map
|
|
@@ -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;IACzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACtB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,SAAgB,kBAAkB,CAAI,EAAiC;IACnE,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;AAjBD,gDAiBC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observableEvent = void 0;
|
|
4
|
+
const observable_1 = require("./observable");
|
|
5
|
+
function eventNotifier(obs) {
|
|
6
|
+
obs.set(obs.get() + 1);
|
|
7
|
+
}
|
|
8
|
+
function eventOn(obs, arg1, arg2) {
|
|
9
|
+
const fn = (arg2 || arg1);
|
|
10
|
+
if (fn) {
|
|
11
|
+
return obs.on('change', fn);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function observableEvent() {
|
|
15
|
+
const obs = (0, observable_1.observable)(0);
|
|
16
|
+
return {
|
|
17
|
+
fire: eventNotifier.bind(obs, obs),
|
|
18
|
+
on: eventOn.bind(obs, obs),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
exports.observableEvent = observableEvent;
|
|
22
|
+
//# sourceMappingURL=observableEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observableEvent.js","sourceRoot":"","sources":["../../src/observableEvent.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAG1C,SAAS,aAAa,CAAC,GAAuB;IAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,GAAuB,EAAE,IAA8B,EAAE,IAAiB;IACvF,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,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;AAND,0CAMC"}
|