@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.
Files changed (90) hide show
  1. package/index.d.ts +8 -9
  2. package/index.js +18 -19
  3. package/index.js.map +1 -1
  4. package/internal.d.ts +3 -0
  5. package/{internal/index.js → internal.js} +4 -4
  6. package/internal.js.map +1 -0
  7. package/local-storage.d.ts +1 -0
  8. package/{react/index.js → local-storage.js} +2 -3
  9. package/local-storage.js.map +1 -0
  10. package/mmkv.d.ts +1 -0
  11. package/mmkv.js +18 -0
  12. package/mmkv.js.map +1 -0
  13. package/package.json +6 -6
  14. package/react.d.ts +2 -0
  15. package/react.js +19 -0
  16. package/react.js.map +1 -0
  17. package/{configureObservable.d.ts → src/configureObservable.d.ts} +0 -0
  18. package/{configureObservable.js → src/configureObservable.js} +0 -0
  19. package/{configureObservable.js.map → src/configureObservable.js.map} +0 -0
  20. package/{globals.d.ts → src/globals.d.ts} +1 -1
  21. package/{globals.js → src/globals.js} +2 -5
  22. package/src/globals.js.map +1 -0
  23. package/src/observable.d.ts +8 -0
  24. package/{observable.js → src/observable.js} +70 -36
  25. package/src/observable.js.map +1 -0
  26. package/{observableBatcher.d.ts → src/observableBatcher.d.ts} +1 -1
  27. package/src/observableBatcher.js +61 -0
  28. package/src/observableBatcher.js.map +1 -0
  29. package/{observableComputed.d.ts → src/observableComputed.d.ts} +1 -1
  30. package/{observableComputed.js → src/observableComputed.js} +4 -1
  31. package/src/observableComputed.js.map +1 -0
  32. package/{observableEvent.d.ts → src/observableEvent.d.ts} +0 -0
  33. package/{observableEvent.js → src/observableEvent.js} +6 -0
  34. package/src/observableEvent.js.map +1 -0
  35. package/{observableFns.d.ts → src/observableFns.d.ts} +4 -2
  36. package/{observableFns.js → src/observableFns.js} +35 -10
  37. package/src/observableFns.js.map +1 -0
  38. package/{observableInterfaces.d.ts → src/observableInterfaces.d.ts} +21 -13
  39. package/{observableInterfaces.js → src/observableInterfaces.js} +0 -0
  40. package/{observableInterfaces.js.map → src/observableInterfaces.js.map} +0 -0
  41. package/{observableState.d.ts → src/observableState.d.ts} +2 -1
  42. package/{observableState.js → src/observableState.js} +0 -0
  43. package/{observableState.js.map → src/observableState.js.map} +0 -0
  44. package/{local-storage/index.d.ts → src/persist/local-storage.d.ts} +1 -1
  45. package/{local-storage/index.js → src/persist/local-storage.js} +2 -2
  46. package/src/persist/local-storage.js.map +1 -0
  47. package/{mmkv/index.d.ts → src/persist/mmkv.d.ts} +2 -1
  48. package/{mmkv/index.js → src/persist/mmkv.js} +8 -9
  49. package/src/persist/mmkv.js.map +1 -0
  50. package/{persistObservable.d.ts → src/persistObservable.d.ts} +0 -0
  51. package/src/persistObservable.js +120 -0
  52. package/src/persistObservable.js.map +1 -0
  53. package/{primitivePrototypes.d.ts → src/primitivePrototypes.d.ts} +0 -0
  54. package/{primitivePrototypes.js → src/primitivePrototypes.js} +0 -0
  55. package/{primitivePrototypes.js.map → src/primitivePrototypes.js.map} +0 -0
  56. package/src/react/useNewObservable.d.ts +12 -0
  57. package/{react → src/react}/useNewObservable.js +10 -0
  58. package/src/react/useNewObservable.js.map +1 -0
  59. package/src/react/useObservables.d.ts +9 -0
  60. package/{react → src/react}/useObservables.js +29 -13
  61. package/src/react/useObservables.js.map +1 -0
  62. package/{react → src/react}/usePrimitiveFunctions.d.ts +0 -0
  63. package/{react → src/react}/usePrimitiveFunctions.js +0 -0
  64. package/{react → src/react}/usePrimitiveFunctions.js.map +0 -0
  65. package/globals.js.map +0 -1
  66. package/internal/index.d.ts +0 -3
  67. package/internal/index.js.map +0 -1
  68. package/local-storage/index.js.map +0 -1
  69. package/mmkv/index.js.map +0 -1
  70. package/observable.d.ts +0 -8
  71. package/observable.js.map +0 -1
  72. package/observableBatcher.js +0 -53
  73. package/observableBatcher.js.map +0 -1
  74. package/observableComputed.js.map +0 -1
  75. package/observableEvent.js.map +0 -1
  76. package/observableFns.js.map +0 -1
  77. package/observableListener.d.ts +0 -2
  78. package/observableListener.js +0 -14
  79. package/observableListener.js.map +0 -1
  80. package/persistObservable.js +0 -99
  81. package/persistObservable.js.map +0 -1
  82. package/promiseCallback.d.ts +0 -8
  83. package/promiseCallback.js +0 -17
  84. package/promiseCallback.js.map +0 -1
  85. package/react/index.d.ts +0 -2
  86. package/react/index.js.map +0 -1
  87. package/react/useNewObservable.d.ts +0 -3
  88. package/react/useNewObservable.js.map +0 -1
  89. package/react/useObservables.d.ts +0 -2
  90. package/react/useObservables.js.map +0 -1
package/index.d.ts CHANGED
@@ -1,9 +1,8 @@
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';
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.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;
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
- Object.defineProperty(exports, "getter", { enumerable: true, get: function () { return observable_1.getter; } });
24
- Object.defineProperty(exports, "assigner", { enumerable: true, get: function () { return observable_1.assigner; } });
25
- var observableFns_1 = require("./observableFns");
26
- Object.defineProperty(exports, "prop", { enumerable: true, get: function () { return observableFns_1.prop; } });
27
- Object.defineProperty(exports, "shallow", { enumerable: true, get: function () { return observableFns_1.shallow; } });
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
- var observableListener_1 = require("./observableListener");
34
- Object.defineProperty(exports, "disposeListener", { enumerable: true, get: function () { return observableListener_1.disposeListener; } });
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":["../../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;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAuC"}
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
@@ -0,0 +1,3 @@
1
+ export { observableConfiguration } from './src/configureObservable';
2
+ export { state } from './src/observableState';
3
+ export { symbolDateModified, symbolShallow, getDateModifiedKey } from './src/globals';
@@ -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("../configureObservable");
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("../observableState");
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("../globals");
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=index.js.map
12
+ //# sourceMappingURL=internal.js.map
@@ -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("./useNewObservable"), exports);
18
- __exportStar(require("./useObservables"), exports);
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.1-alpha.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/index.js",
15
- "./local-storage": "./local-storage/index.js",
16
- "./mmkv": "./mmkv/index.js",
17
- "./react": "./react/index.js"
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": "^2.0.0-alpha.7"
20
+ "@legendapp/tools": "2.0.0"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "react": ">=16.8",
package/react.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './src/react/useNewObservable';
2
+ export * from './src/react/useObservables';
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"}
@@ -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.jsonEqual = exports.getDateModifiedKey = exports.isCollection = exports.isPrimitive = exports.replaceKeyInObject = exports.removeNullUndefined = exports.symbolShallow = exports.symbolDateModified = void 0;
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._value : 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._value : Object.assign({}, 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 (!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
- }
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._value = value;
90
+ info.target = { [globals_1.symbolValue]: value };
93
91
  }
94
92
  else {
95
93
  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);
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 (!(0, globals_1.jsonEqual)(value, prevValue)) {
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 (!(0, globals_1.jsonEqual)(value, prevValue)) {
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
- // 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
- }
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', _set],
204
- ['assign', _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(key)
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 a proxy for it
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
- // Set function handles notifying
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 not safe
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 ? { _value: value } : value;
299
- const proxy = new Proxy(target, safe ? proxyHandler : proxyHandlerUnsafe);
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(fn());
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"}