@legendapp/state 0.9.1-alpha.7 → 0.9.1

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