@jbrowse/mobx-state-tree 5.6.0 → 5.6.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 (96) hide show
  1. package/README.md +18 -0
  2. package/dist/core/action.d.ts +1 -1
  3. package/dist/core/action.js +228 -0
  4. package/dist/core/action.js.map +1 -1
  5. package/dist/core/actionContext.js +42 -0
  6. package/dist/core/actionContext.js.map +1 -1
  7. package/dist/core/flow.d.ts +1 -1
  8. package/dist/core/flow.js +180 -0
  9. package/dist/core/flow.js.map +1 -1
  10. package/dist/core/json-patch.js +133 -0
  11. package/dist/core/json-patch.js.map +1 -1
  12. package/dist/core/mst-operations.js +885 -0
  13. package/dist/core/mst-operations.js.map +1 -1
  14. package/dist/core/node/BaseNode.js +152 -0
  15. package/dist/core/node/BaseNode.js.map +1 -1
  16. package/dist/core/node/Hook.js +15 -0
  17. package/dist/core/node/Hook.js.map +1 -1
  18. package/dist/core/node/create-node.js +41 -0
  19. package/dist/core/node/create-node.js.map +1 -1
  20. package/dist/core/node/identifier-cache.js +115 -0
  21. package/dist/core/node/identifier-cache.js.map +1 -1
  22. package/dist/core/node/livelinessChecking.js +38 -0
  23. package/dist/core/node/livelinessChecking.js.map +1 -1
  24. package/dist/core/node/node-utils.js +165 -0
  25. package/dist/core/node/node-utils.js.map +1 -1
  26. package/dist/core/node/object-node.js +545 -0
  27. package/dist/core/node/object-node.js.map +1 -1
  28. package/dist/core/node/scalar-node.js +89 -0
  29. package/dist/core/node/scalar-node.js.map +1 -1
  30. package/dist/core/process.d.ts +1 -1
  31. package/dist/core/process.js +39 -0
  32. package/dist/core/process.js.map +1 -1
  33. package/dist/core/type/type-checker.js +154 -0
  34. package/dist/core/type/type-checker.js.map +1 -1
  35. package/dist/core/type/type.d.ts +1 -1
  36. package/dist/core/type/type.js +251 -0
  37. package/dist/core/type/type.js.map +1 -1
  38. package/dist/index.js +85 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/internal.js +60 -0
  41. package/dist/internal.js.map +1 -1
  42. package/dist/middlewares/create-action-tracking-middleware.js +81 -0
  43. package/dist/middlewares/create-action-tracking-middleware.js.map +1 -1
  44. package/dist/middlewares/createActionTrackingMiddleware2.js +133 -0
  45. package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -1
  46. package/dist/middlewares/on-action.js +215 -0
  47. package/dist/middlewares/on-action.js.map +1 -1
  48. package/dist/mobx-state-tree.js +83 -6867
  49. package/dist/mobx-state-tree.module.js +83 -6789
  50. package/dist/types/complex-types/array.d.ts +1 -1
  51. package/dist/types/complex-types/array.js +352 -0
  52. package/dist/types/complex-types/array.js.map +1 -1
  53. package/dist/types/complex-types/map.d.ts +1 -1
  54. package/dist/types/complex-types/map.js +361 -0
  55. package/dist/types/complex-types/map.js.map +1 -1
  56. package/dist/types/complex-types/model.js +477 -0
  57. package/dist/types/complex-types/model.js.map +1 -1
  58. package/dist/types/index.js +38 -0
  59. package/dist/types/index.js.map +1 -1
  60. package/dist/types/primitives.js +182 -0
  61. package/dist/types/primitives.js.map +1 -1
  62. package/dist/types/utility-types/custom.js +110 -0
  63. package/dist/types/utility-types/custom.js.map +1 -1
  64. package/dist/types/utility-types/enumeration.js +34 -0
  65. package/dist/types/utility-types/enumeration.js.map +1 -1
  66. package/dist/types/utility-types/frozen.js +97 -0
  67. package/dist/types/utility-types/frozen.js.map +1 -1
  68. package/dist/types/utility-types/identifier.js +129 -0
  69. package/dist/types/utility-types/identifier.js.map +1 -1
  70. package/dist/types/utility-types/late.js +109 -0
  71. package/dist/types/utility-types/late.js.map +1 -1
  72. package/dist/types/utility-types/lazy.js +76 -0
  73. package/dist/types/utility-types/lazy.js.map +1 -1
  74. package/dist/types/utility-types/literal.js +63 -0
  75. package/dist/types/utility-types/literal.js.map +1 -1
  76. package/dist/types/utility-types/maybe.js +30 -0
  77. package/dist/types/utility-types/maybe.js.map +1 -1
  78. package/dist/types/utility-types/optional.js +140 -0
  79. package/dist/types/utility-types/optional.js.map +1 -1
  80. package/dist/types/utility-types/reference.d.ts +2 -2
  81. package/dist/types/utility-types/reference.js +392 -0
  82. package/dist/types/utility-types/reference.js.map +1 -1
  83. package/dist/types/utility-types/refinement.js +85 -0
  84. package/dist/types/utility-types/refinement.js.map +1 -1
  85. package/dist/types/utility-types/resilient.js +120 -0
  86. package/dist/types/utility-types/resilient.js.map +1 -1
  87. package/dist/types/utility-types/snapshotProcessor.js +161 -0
  88. package/dist/types/utility-types/snapshotProcessor.js.map +1 -1
  89. package/dist/types/utility-types/union.d.ts +1 -0
  90. package/dist/types/utility-types/union.js +245 -0
  91. package/dist/types/utility-types/union.js.map +1 -1
  92. package/dist/utils.js +483 -0
  93. package/dist/utils.js.map +1 -1
  94. package/package.json +25 -24
  95. package/changelog.md +0 -677
  96. package/dist/mobx-state-tree.umd.js +0 -6873
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.late = late;
4
+ exports.isLateType = isLateType;
5
+ const internal_ts_1 = require("../../internal.js");
6
+ class Late extends internal_ts_1.BaseType {
7
+ _definition;
8
+ _subType;
9
+ get flags() {
10
+ return (this._subType ? this._subType.flags : 0) | internal_ts_1.TypeFlags.Late;
11
+ }
12
+ getSubType(mustSucceed) {
13
+ if (!this._subType) {
14
+ let t = undefined;
15
+ try {
16
+ t = this._definition();
17
+ }
18
+ catch (e) {
19
+ if (e instanceof ReferenceError) // can happen in strict ES5 code when a definition is self refering
20
+ {
21
+ t = undefined;
22
+ }
23
+ else {
24
+ throw e;
25
+ }
26
+ }
27
+ if (mustSucceed && t === undefined) {
28
+ throw (0, internal_ts_1.fail)("Late type seems to be used too early, the definition (still) returns undefined");
29
+ }
30
+ if (t) {
31
+ if ((0, internal_ts_1.devMode)() && !(0, internal_ts_1.isType)(t)) {
32
+ throw (0, internal_ts_1.fail)("Failed to determine subtype, make sure types.late returns a type definition.");
33
+ }
34
+ this._subType = t;
35
+ }
36
+ }
37
+ return this._subType;
38
+ }
39
+ constructor(name, _definition) {
40
+ super(name);
41
+ this._definition = _definition;
42
+ }
43
+ instantiate(parent, subpath, environment, initialValue) {
44
+ return this.getSubType(true).instantiate(parent, subpath, environment, initialValue);
45
+ }
46
+ reconcile(current, newValue, parent, subpath) {
47
+ return this.getSubType(true).reconcile(current, newValue, parent, subpath);
48
+ }
49
+ describe() {
50
+ const t = this.getSubType(false);
51
+ return t ? t.name : "<uknown late type>";
52
+ }
53
+ isValidSnapshot(value, context) {
54
+ const t = this.getSubType(false);
55
+ if (!t) {
56
+ // See #916; the variable the definition closure is pointing to wasn't defined yet, so can't be evaluted yet here
57
+ return (0, internal_ts_1.typeCheckSuccess)();
58
+ }
59
+ return t.validate(value, context);
60
+ }
61
+ isAssignableFrom(type) {
62
+ const t = this.getSubType(false);
63
+ return t ? t.isAssignableFrom(type) : false;
64
+ }
65
+ getSubTypes() {
66
+ const subtype = this.getSubType(false);
67
+ return subtype ? subtype : internal_ts_1.cannotDetermineSubtype;
68
+ }
69
+ }
70
+ /**
71
+ * `types.late` - Defines a type that gets implemented later. This is useful when you have to deal with circular dependencies.
72
+ * Please notice that when defining circular dependencies TypeScript isn't smart enough to inference them.
73
+ *
74
+ * Example:
75
+ * ```ts
76
+ * // TypeScript isn't smart enough to infer self referencing types.
77
+ * const Node = types.model({
78
+ * children: types.array(types.late((): IAnyModelType => Node)) // then typecast each array element to Instance<typeof Node>
79
+ * })
80
+ * ```
81
+ *
82
+ * @param name The name to use for the type that will be returned.
83
+ * @param type A function that returns the type that will be defined.
84
+ * @returns
85
+ */
86
+ function late(nameOrType, maybeType) {
87
+ const name = typeof nameOrType === "string"
88
+ ? nameOrType
89
+ : `late(${nameOrType.toString()})`;
90
+ const type = typeof nameOrType === "string" ? maybeType : nameOrType;
91
+ // checks that the type is actually a late type
92
+ if ((0, internal_ts_1.devMode)()) {
93
+ if (!(typeof type === "function" && type.length === 0)) {
94
+ throw (0, internal_ts_1.fail)("Invalid late type, expected a function with zero arguments that returns a type, got: " +
95
+ type);
96
+ }
97
+ }
98
+ return new Late(name, type);
99
+ }
100
+ /**
101
+ * Returns if a given value represents a late type.
102
+ *
103
+ * @param type
104
+ * @returns
105
+ */
106
+ function isLateType(type) {
107
+ return (0, internal_ts_1.isType)(type) && (type.flags & internal_ts_1.TypeFlags.Late) > 0;
108
+ }
109
+ //# sourceMappingURL=late.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"late.js","sourceRoot":"","sources":["../../../src/types/utility-types/late.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"late.js","sourceRoot":"","sources":["../../../src/types/utility-types/late.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lazy = void 0;
4
+ exports.lazy = lazy;
5
+ const mobx_1 = require("mobx");
6
+ const internal_ts_1 = require("../../internal.js");
7
+ function lazy(name, options) {
8
+ // TODO: fix this unknown casting to be stricter
9
+ return new Lazy(name, options);
10
+ }
11
+ /**
12
+ * @internal
13
+ * @hidden
14
+ */
15
+ class Lazy extends internal_ts_1.SimpleType {
16
+ options;
17
+ flags = internal_ts_1.TypeFlags.Lazy;
18
+ loadedType = null;
19
+ pendingNodeList = mobx_1.observable.array();
20
+ constructor(name, options) {
21
+ super(name);
22
+ this.options = options;
23
+ (0, mobx_1.when)(() => this.pendingNodeList.length > 0 &&
24
+ this.pendingNodeList.some(node => node.isAlive &&
25
+ this.options.shouldLoadPredicate(node.parent ? node.parent.value : null)), () => {
26
+ this.options.loadType().then((0, mobx_1.action)((type) => {
27
+ this.loadedType = type;
28
+ this.pendingNodeList.forEach(node => {
29
+ if (!node.parent) {
30
+ return;
31
+ }
32
+ if (!this.loadedType) {
33
+ return;
34
+ }
35
+ node.parent.applyPatches([
36
+ {
37
+ op: "replace",
38
+ path: `/${node.subpath}`,
39
+ value: node.snapshot
40
+ }
41
+ ]);
42
+ });
43
+ }));
44
+ });
45
+ }
46
+ describe() {
47
+ return `<lazy ${this.name}>`;
48
+ }
49
+ instantiate(parent, subpath, environment, value) {
50
+ if (this.loadedType) {
51
+ return this.loadedType.instantiate(parent, subpath, environment, value);
52
+ }
53
+ const node = (0, internal_ts_1.createScalarNode)(this, parent, subpath, environment, (0, internal_ts_1.deepFreeze)(value));
54
+ this.pendingNodeList.push(node);
55
+ (0, mobx_1.when)(() => !node.isAlive, () => this.pendingNodeList.splice(this.pendingNodeList.indexOf(node), 1));
56
+ return node;
57
+ }
58
+ isValidSnapshot(value, context) {
59
+ if (this.loadedType) {
60
+ return this.loadedType.validate(value, context);
61
+ }
62
+ if (!(0, internal_ts_1.isSerializable)(value)) {
63
+ return (0, internal_ts_1.typeCheckFailure)(context, value, "Value is not serializable and cannot be lazy");
64
+ }
65
+ return (0, internal_ts_1.typeCheckSuccess)();
66
+ }
67
+ reconcile(current, value, parent, subpath) {
68
+ if (this.loadedType) {
69
+ current.die();
70
+ return this.loadedType.instantiate(parent, subpath, parent.environment, value);
71
+ }
72
+ return super.reconcile(current, value, parent, subpath);
73
+ }
74
+ }
75
+ exports.Lazy = Lazy;
76
+ //# sourceMappingURL=lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/types/utility-types/lazy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/types/utility-types/lazy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Literal = void 0;
4
+ exports.literal = literal;
5
+ exports.isLiteralType = isLiteralType;
6
+ const internal_ts_1 = require("../../internal.js");
7
+ const utils_ts_1 = require("../../utils.js");
8
+ /**
9
+ * @internal
10
+ * @hidden
11
+ */
12
+ class Literal extends internal_ts_1.SimpleType {
13
+ value;
14
+ flags = internal_ts_1.TypeFlags.Literal;
15
+ constructor(value) {
16
+ super(JSON.stringify(value));
17
+ this.value = value;
18
+ }
19
+ instantiate(parent, subpath, environment, initialValue) {
20
+ return (0, internal_ts_1.createScalarNode)(this, parent, subpath, environment, initialValue);
21
+ }
22
+ describe() {
23
+ return JSON.stringify(this.value);
24
+ }
25
+ isValidSnapshot(value, context) {
26
+ if ((0, internal_ts_1.isPrimitive)(value) && value === this.value) {
27
+ return (0, internal_ts_1.typeCheckSuccess)();
28
+ }
29
+ return (0, internal_ts_1.typeCheckFailure)(context, value, `Value is not a literal ${JSON.stringify(this.value)}`);
30
+ }
31
+ }
32
+ exports.Literal = Literal;
33
+ /**
34
+ * `types.literal` - The literal type will return a type that will match only the exact given type.
35
+ * The given value must be a primitive, in order to be serialized to a snapshot correctly.
36
+ * You can use literal to match exact strings for example the exact male or female string.
37
+ *
38
+ * Example:
39
+ * ```ts
40
+ * const Person = types.model({
41
+ * name: types.string,
42
+ * gender: types.union(types.literal('male'), types.literal('female'))
43
+ * })
44
+ * ```
45
+ *
46
+ * @param value The value to use in the strict equal check
47
+ * @returns
48
+ */
49
+ function literal(value) {
50
+ // check that the given value is a primitive
51
+ (0, utils_ts_1.assertArg)(value, internal_ts_1.isPrimitive, "primitive", 1);
52
+ return new Literal(value);
53
+ }
54
+ /**
55
+ * Returns if a given value represents a literal type.
56
+ *
57
+ * @param type
58
+ * @returns
59
+ */
60
+ function isLiteralType(type) {
61
+ return (0, internal_ts_1.isType)(type) && (type.flags & internal_ts_1.TypeFlags.Literal) > 0;
62
+ }
63
+ //# sourceMappingURL=literal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/types/utility-types/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C;;;GAGG;AACH,MAAM,OAAO,OAAW,SAAQ,UAAmB;IACxC,KAAK,CAAG;IACR,KAAK,GAAG,SAAS,CAAC,OAAO,CAAA;IAElC,YAAY,KAAQ;QAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,WAAW,CACT,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAuB;QAEvB,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,eAAe,CACb,KAAgB,EAChB,OAA2B;QAE3B,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,gBAAgB,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO,gBAAgB,CACrB,OAAO,EACP,KAAK,EACL,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACvD,CAAA;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CAAuB,KAAQ;IACpD,4CAA4C;IAC5C,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;IAE7C,OAAO,IAAI,OAAO,CAAI,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAQ;IAER,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/types/utility-types/literal.ts"],"names":[],"mappings":";;;AAyEA,0BAKC;AAQD,sCAIC;AA1FD,mDAa0B;AAC1B,6CAA0C;AAE1C;;;GAGG;AACH,MAAa,OAAW,SAAQ,wBAAmB;IACxC,KAAK,CAAG;IACR,KAAK,GAAG,uBAAS,CAAC,OAAO,CAAA;IAElC,YAAY,KAAQ;QAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,WAAW,CACT,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAuB;QAEvB,OAAO,IAAA,8BAAgB,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,eAAe,CACb,KAAgB,EAChB,OAA2B;QAE3B,IAAI,IAAA,yBAAW,EAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,IAAA,8BAAgB,GAAE,CAAA;QAC3B,CAAC;QACD,OAAO,IAAA,8BAAgB,EACrB,OAAO,EACP,KAAK,EACL,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACvD,CAAA;IACH,CAAC;CACF;AAnCD,0BAmCC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,OAAO,CAAuB,KAAQ;IACpD,4CAA4C;IAC5C,IAAA,oBAAS,EAAC,KAAK,EAAE,yBAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;IAE7C,OAAO,IAAI,OAAO,CAAI,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,IAAQ;IAER,OAAO,IAAA,oBAAM,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,uBAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC7D,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maybe = maybe;
4
+ exports.maybeNull = maybeNull;
5
+ const internal_ts_1 = require("../../internal.js");
6
+ const optionalUndefinedType = (0, internal_ts_1.optional)(internal_ts_1.undefinedType, undefined);
7
+ const optionalNullType = (0, internal_ts_1.optional)(internal_ts_1.nullType, null);
8
+ /**
9
+ * `types.maybe` - Maybe will make a type nullable, and also optional.
10
+ * The value `undefined` will be used to represent nullability.
11
+ *
12
+ * @param type
13
+ * @returns
14
+ */
15
+ function maybe(type) {
16
+ (0, internal_ts_1.assertIsType)(type, 1);
17
+ return (0, internal_ts_1.union)(type, optionalUndefinedType);
18
+ }
19
+ /**
20
+ * `types.maybeNull` - Maybe will make a type nullable, and also optional.
21
+ * The value `null` will be used to represent no value.
22
+ *
23
+ * @param type
24
+ * @returns
25
+ */
26
+ function maybeNull(type) {
27
+ (0, internal_ts_1.assertIsType)(type, 1);
28
+ return (0, internal_ts_1.union)(type, optionalNullType);
29
+ }
30
+ //# sourceMappingURL=maybe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"maybe.js","sourceRoot":"","sources":["../../../src/types/utility-types/maybe.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACN,MAAM,mBAAmB,CAAA;AAE1B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AAChE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAuBjD;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAsB,IAAQ;IACjD,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAErB,OAAO,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAsB,IAAQ;IACrD,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAErB,OAAO,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AACtC,CAAC"}
1
+ {"version":3,"file":"maybe.js","sourceRoot":"","sources":["../../../src/types/utility-types/maybe.ts"],"names":[],"mappings":";;AAyCA,sBAIC;AASD,8BAIC;AA1DD,mDAQ0B;AAE1B,MAAM,qBAAqB,GAAG,IAAA,sBAAQ,EAAC,2BAAa,EAAE,SAAS,CAAC,CAAA;AAChE,MAAM,gBAAgB,GAAG,IAAA,sBAAQ,EAAC,sBAAQ,EAAE,IAAI,CAAC,CAAA;AAuBjD;;;;;;GAMG;AACH,SAAgB,KAAK,CAAsB,IAAQ;IACjD,IAAA,0BAAY,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAErB,OAAO,IAAA,mBAAK,EAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAsB,IAAQ;IACrD,IAAA,0BAAY,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAErB,OAAO,IAAA,mBAAK,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AACtC,CAAC"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OptionalValue = void 0;
4
+ exports.optional = optional;
5
+ exports.isOptionalType = isOptionalType;
6
+ const internal_ts_1 = require("../../internal.js");
7
+ /**
8
+ * @hidden
9
+ * @internal
10
+ */
11
+ class OptionalValue extends internal_ts_1.BaseType {
12
+ _subtype;
13
+ _defaultValue;
14
+ optionalValues;
15
+ get flags() {
16
+ return this._subtype.flags | internal_ts_1.TypeFlags.Optional;
17
+ }
18
+ constructor(_subtype, _defaultValue, optionalValues) {
19
+ super(_subtype.name);
20
+ this._subtype = _subtype;
21
+ this._defaultValue = _defaultValue;
22
+ this.optionalValues = optionalValues;
23
+ }
24
+ describe() {
25
+ return this._subtype.describe() + "?";
26
+ }
27
+ instantiate(parent, subpath, environment, initialValue) {
28
+ if (this.optionalValues.indexOf(initialValue) >= 0) {
29
+ const defaultInstanceOrSnapshot = this.getDefaultInstanceOrSnapshot();
30
+ return this._subtype.instantiate(parent, subpath, environment, defaultInstanceOrSnapshot);
31
+ }
32
+ return this._subtype.instantiate(parent, subpath, environment, initialValue);
33
+ }
34
+ reconcile(current, newValue, parent, subpath) {
35
+ return this._subtype.reconcile(current, this.optionalValues.indexOf(newValue) < 0 && this._subtype.is(newValue)
36
+ ? newValue
37
+ : this.getDefaultInstanceOrSnapshot(), parent, subpath);
38
+ }
39
+ getDefaultInstanceOrSnapshot() {
40
+ const defaultInstanceOrSnapshot = typeof this._defaultValue === "function"
41
+ ? this._defaultValue()
42
+ : this._defaultValue;
43
+ // while static values are already snapshots and checked on types.optional
44
+ // generator functions must always be rechecked just in case
45
+ if (typeof this._defaultValue === "function") {
46
+ (0, internal_ts_1.typecheckInternal)(this, defaultInstanceOrSnapshot);
47
+ }
48
+ return defaultInstanceOrSnapshot;
49
+ }
50
+ isValidSnapshot(value, context) {
51
+ // defaulted values can be skipped
52
+ if (this.optionalValues.indexOf(value) >= 0) {
53
+ return (0, internal_ts_1.typeCheckSuccess)();
54
+ }
55
+ // bounce validation to the sub-type
56
+ return this._subtype.validate(value, context);
57
+ }
58
+ isAssignableFrom(type) {
59
+ return this._subtype.isAssignableFrom(type);
60
+ }
61
+ getSubTypes() {
62
+ return this._subtype;
63
+ }
64
+ }
65
+ exports.OptionalValue = OptionalValue;
66
+ function checkOptionalPreconditions(type, defaultValueOrFunction) {
67
+ // make sure we never pass direct instances
68
+ if (typeof defaultValueOrFunction !== "function" &&
69
+ (0, internal_ts_1.isStateTreeNode)(defaultValueOrFunction)) {
70
+ throw (0, internal_ts_1.fail)("default value cannot be an instance, pass a snapshot or a function that creates an instance/snapshot instead");
71
+ }
72
+ (0, internal_ts_1.assertIsType)(type, 1);
73
+ if ((0, internal_ts_1.devMode)()) {
74
+ // we only check default values if they are passed directly
75
+ // if they are generator functions they will be checked once they are generated
76
+ // we don't check generator function results here to avoid generating a node just for type-checking purposes
77
+ // which might generate side-effects
78
+ if (typeof defaultValueOrFunction !== "function") {
79
+ (0, internal_ts_1.typecheckInternal)(type, defaultValueOrFunction);
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * `types.optional` - Can be used to create a property with a default value.
85
+ *
86
+ * Depending on the third argument (`optionalValues`) there are two ways of operation:
87
+ * - If the argument is not provided, then if a value is not provided in the snapshot (`undefined` or missing),
88
+ * it will default to the provided `defaultValue`
89
+ * - If the argument is provided, then if the value in the snapshot matches one of the optional values inside the array then it will
90
+ * default to the provided `defaultValue`. Additionally, if one of the optional values inside the array is `undefined` then a missing
91
+ * property is also valid.
92
+ *
93
+ * Note that it is also possible to include values of the same type as the intended subtype as optional values,
94
+ * in this case the optional value will be transformed into the `defaultValue` (e.g. `types.optional(types.string, "unnamed", [undefined, ""])`
95
+ * will transform the snapshot values `undefined` (and therefore missing) and empty strings into the string `"unnamed"` when it gets
96
+ * instantiated).
97
+ *
98
+ * If `defaultValue` is a function, the function will be invoked for every new instance.
99
+ * Applying a snapshot in which the optional value is one of the optional values (or `undefined`/_not_ present if none are provided) causes the
100
+ * value to be reset.
101
+ *
102
+ * Example:
103
+ * ```ts
104
+ * const Todo = types.model({
105
+ * title: types.string,
106
+ * subtitle1: types.optional(types.string, "", [null]),
107
+ * subtitle2: types.optional(types.string, "", [null, undefined]),
108
+ * done: types.optional(types.boolean, false),
109
+ * created: types.optional(types.Date, () => new Date()),
110
+ * })
111
+ *
112
+ * // if done is missing / undefined it will become false
113
+ * // if created is missing / undefined it will get a freshly generated timestamp
114
+ * // if subtitle1 is null it will default to "", but it cannot be missing or undefined
115
+ * // if subtitle2 is null or undefined it will default to ""; since it can be undefined it can also be missing
116
+ * const todo = Todo.create({ title: "Get coffee", subtitle1: null })
117
+ * ```
118
+ *
119
+ * @param type
120
+ * @param defaultValueOrFunction
121
+ * @param optionalValues an optional array with zero or more primitive values (string, number, boolean, null or undefined)
122
+ * that will be converted into the default. `[ undefined ]` is assumed when none is provided
123
+ * @returns
124
+ */
125
+ function optional(type, defaultValueOrFunction, optionalValues) {
126
+ checkOptionalPreconditions(type, defaultValueOrFunction);
127
+ return new OptionalValue(type, defaultValueOrFunction, optionalValues ? optionalValues : undefinedAsOptionalValues);
128
+ }
129
+ const undefinedAsOptionalValues = [undefined];
130
+ /**
131
+ * Returns if a value represents an optional type.
132
+ *
133
+ * @template IT
134
+ * @param type
135
+ * @returns
136
+ */
137
+ function isOptionalType(type) {
138
+ return (0, internal_ts_1.isType)(type) && (type.flags & internal_ts_1.TypeFlags.Optional) > 0;
139
+ }
140
+ //# sourceMappingURL=optional.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../src/types/utility-types/optional.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../src/types/utility-types/optional.ts"],"names":[],"mappings":"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"}
@@ -79,11 +79,11 @@ export declare function reference<IT extends IAnyComplexType>(subType: IT, optio
79
79
  * @returns
80
80
  */
81
81
  export declare function isReferenceType<IT extends IReferenceType<any>>(type: IT): type is IT;
82
- export declare function safeReference<IT extends IAnyComplexType>(subType: IT, options: (ReferenceOptionsGetSet<IT> | {}) & {
82
+ export declare function safeReference<IT extends IAnyComplexType>(subType: IT, options: (ReferenceOptionsGetSet<IT> | object) & {
83
83
  acceptsUndefined: false;
84
84
  onInvalidated?: OnReferenceInvalidated<ReferenceT<IT>>;
85
85
  }): IReferenceType<IT>;
86
- export declare function safeReference<IT extends IAnyComplexType>(subType: IT, options?: (ReferenceOptionsGetSet<IT> | {}) & {
86
+ export declare function safeReference<IT extends IAnyComplexType>(subType: IT, options?: (ReferenceOptionsGetSet<IT> | object) & {
87
87
  acceptsUndefined?: boolean;
88
88
  onInvalidated?: OnReferenceInvalidated<ReferenceT<IT>>;
89
89
  }): IMaybe<IReferenceType<IT>>;