@jbrowse/mobx-state-tree 5.5.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 (99) 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.d.ts +1 -0
  41. package/dist/internal.js +60 -0
  42. package/dist/internal.js.map +1 -1
  43. package/dist/middlewares/create-action-tracking-middleware.js +81 -0
  44. package/dist/middlewares/create-action-tracking-middleware.js.map +1 -1
  45. package/dist/middlewares/createActionTrackingMiddleware2.js +133 -0
  46. package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -1
  47. package/dist/middlewares/on-action.js +215 -0
  48. package/dist/middlewares/on-action.js.map +1 -1
  49. package/dist/mobx-state-tree.js +83 -6750
  50. package/dist/mobx-state-tree.module.js +83 -6672
  51. package/dist/types/complex-types/array.d.ts +1 -1
  52. package/dist/types/complex-types/array.js +352 -0
  53. package/dist/types/complex-types/array.js.map +1 -1
  54. package/dist/types/complex-types/map.d.ts +1 -1
  55. package/dist/types/complex-types/map.js +361 -0
  56. package/dist/types/complex-types/map.js.map +1 -1
  57. package/dist/types/complex-types/model.js +477 -0
  58. package/dist/types/complex-types/model.js.map +1 -1
  59. package/dist/types/index.d.ts +2 -1
  60. package/dist/types/index.js +38 -0
  61. package/dist/types/index.js.map +1 -1
  62. package/dist/types/primitives.js +182 -0
  63. package/dist/types/primitives.js.map +1 -1
  64. package/dist/types/utility-types/custom.js +110 -0
  65. package/dist/types/utility-types/custom.js.map +1 -1
  66. package/dist/types/utility-types/enumeration.js +34 -0
  67. package/dist/types/utility-types/enumeration.js.map +1 -1
  68. package/dist/types/utility-types/frozen.js +97 -0
  69. package/dist/types/utility-types/frozen.js.map +1 -1
  70. package/dist/types/utility-types/identifier.js +129 -0
  71. package/dist/types/utility-types/identifier.js.map +1 -1
  72. package/dist/types/utility-types/late.js +109 -0
  73. package/dist/types/utility-types/late.js.map +1 -1
  74. package/dist/types/utility-types/lazy.js +76 -0
  75. package/dist/types/utility-types/lazy.js.map +1 -1
  76. package/dist/types/utility-types/literal.js +63 -0
  77. package/dist/types/utility-types/literal.js.map +1 -1
  78. package/dist/types/utility-types/maybe.js +30 -0
  79. package/dist/types/utility-types/maybe.js.map +1 -1
  80. package/dist/types/utility-types/optional.js +140 -0
  81. package/dist/types/utility-types/optional.js.map +1 -1
  82. package/dist/types/utility-types/reference.d.ts +2 -2
  83. package/dist/types/utility-types/reference.js +392 -0
  84. package/dist/types/utility-types/reference.js.map +1 -1
  85. package/dist/types/utility-types/refinement.js +85 -0
  86. package/dist/types/utility-types/refinement.js.map +1 -1
  87. package/dist/types/utility-types/resilient.d.ts +18 -0
  88. package/dist/types/utility-types/resilient.js +120 -0
  89. package/dist/types/utility-types/resilient.js.map +1 -0
  90. package/dist/types/utility-types/snapshotProcessor.js +161 -0
  91. package/dist/types/utility-types/snapshotProcessor.js.map +1 -1
  92. package/dist/types/utility-types/union.d.ts +1 -0
  93. package/dist/types/utility-types/union.js +245 -0
  94. package/dist/types/utility-types/union.js.map +1 -1
  95. package/dist/utils.js +483 -0
  96. package/dist/utils.js.map +1 -1
  97. package/package.json +26 -24
  98. package/changelog.md +0 -677
  99. package/dist/mobx-state-tree.umd.js +0 -6756
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resilient = resilient;
4
+ const internal_ts_1 = require("../../internal.js");
5
+ class Resilient extends internal_ts_1.BaseType {
6
+ _subtype;
7
+ _fallbackType;
8
+ _createFallbackSnapshot;
9
+ get flags() {
10
+ return this._subtype.flags;
11
+ }
12
+ constructor(_subtype, _fallbackType, _createFallbackSnapshot) {
13
+ super(`resilient(${_subtype.name})`);
14
+ this._subtype = _subtype;
15
+ this._fallbackType = _fallbackType;
16
+ this._createFallbackSnapshot = _createFallbackSnapshot;
17
+ }
18
+ describe() {
19
+ return `resilient(${this._subtype.describe()})`;
20
+ }
21
+ _instantiateFallback(parent, subpath, environment, originalSnapshot, originalError) {
22
+ let fallbackSnapshot;
23
+ try {
24
+ fallbackSnapshot = this._createFallbackSnapshot(originalError, originalSnapshot);
25
+ }
26
+ catch (e) {
27
+ throw (0, internal_ts_1.fail)(`resilient: createFallbackSnapshot threw while handling error for '${this._subtype.name}': ${originalError}. createFallbackSnapshot error: ${e}`);
28
+ }
29
+ try {
30
+ return this._fallbackType.instantiate(parent, subpath, environment, fallbackSnapshot);
31
+ }
32
+ catch (e) {
33
+ throw (0, internal_ts_1.fail)(`resilient: fallback type '${this._fallbackType.name}' failed to instantiate while handling error for '${this._subtype.name}': ${originalError}. Fallback error: ${e}`);
34
+ }
35
+ }
36
+ instantiate(parent, subpath, environment, initialValue) {
37
+ if ((0, internal_ts_1.isStateTreeNode)(initialValue)) {
38
+ return this._subtype.instantiate(parent, subpath, environment, initialValue);
39
+ }
40
+ try {
41
+ return this._subtype.instantiate(parent, subpath, environment, initialValue);
42
+ }
43
+ catch (e) {
44
+ return this._instantiateFallback(parent, subpath, environment, initialValue, e);
45
+ }
46
+ }
47
+ reconcile(current, newValue, parent, subpath) {
48
+ if ((0, internal_ts_1.isStateTreeNode)(newValue)) {
49
+ return this._subtype.reconcile(current, newValue, parent, subpath);
50
+ }
51
+ if (this._fallbackType.isAssignableFrom(current.type)) {
52
+ try {
53
+ return this._subtype.instantiate(parent, subpath, undefined, newValue);
54
+ }
55
+ catch (e) {
56
+ return this._fallbackType.reconcile(current, this._createFallbackSnapshot(e, newValue), parent, subpath);
57
+ }
58
+ }
59
+ try {
60
+ return this._subtype.reconcile(current, newValue, parent, subpath);
61
+ }
62
+ catch (e) {
63
+ current.die();
64
+ return this._instantiateFallback(parent, subpath, undefined, newValue, e);
65
+ }
66
+ }
67
+ isValidSnapshot(_value, _context) {
68
+ return (0, internal_ts_1.typeCheckSuccess)();
69
+ }
70
+ is(thing) {
71
+ if ((0, internal_ts_1.isType)(thing)) {
72
+ return (this._subtype.isAssignableFrom(thing) ||
73
+ this._fallbackType.isAssignableFrom(thing));
74
+ }
75
+ try {
76
+ if (this._subtype.is(thing)) {
77
+ return true;
78
+ }
79
+ }
80
+ catch (_e) {
81
+ // subtype.is() may throw (e.g. union dispatcher)
82
+ }
83
+ try {
84
+ return this._fallbackType.is(thing);
85
+ }
86
+ catch (_e) {
87
+ return false;
88
+ }
89
+ }
90
+ isAssignableFrom(type) {
91
+ return (this._subtype.isAssignableFrom(type) ||
92
+ this._fallbackType.isAssignableFrom(type));
93
+ }
94
+ getSubTypes() {
95
+ return [this._subtype, this._fallbackType];
96
+ }
97
+ getSnapshot(node) {
98
+ return node.snapshot;
99
+ }
100
+ }
101
+ /**
102
+ * `types.resilient` - Wraps a type so that instantiation errors are caught
103
+ * and a fallback type is used instead. This is useful for loading data that
104
+ * may contain unknown or invalid subtrees (e.g., plugin types that are not
105
+ * installed) without crashing the entire state tree.
106
+ *
107
+ * The `createFallbackSnapshot` callback receives the caught error and the
108
+ * original snapshot, and must return a valid snapshot for the fallback type.
109
+ *
110
+ * @param type The type to wrap.
111
+ * @param fallbackType The fallback type to use when instantiation fails.
112
+ * @param createFallbackSnapshot Callback that produces a fallback snapshot from the error and original snapshot.
113
+ * @returns A resilient type.
114
+ */
115
+ function resilient(type, fallbackType, createFallbackSnapshot) {
116
+ (0, internal_ts_1.assertIsType)(type, 1);
117
+ (0, internal_ts_1.assertIsType)(fallbackType, 2);
118
+ return new Resilient(type, fallbackType, createFallbackSnapshot);
119
+ }
120
+ //# sourceMappingURL=resilient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilient.js","sourceRoot":"","sources":["../../../src/types/utility-types/resilient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snapshotProcessor = snapshotProcessor;
4
+ const internal_ts_1 = require("../../internal.js");
5
+ /** @hidden */
6
+ const $preProcessorFailed = Symbol("$preProcessorFailed");
7
+ class SnapshotProcessor extends internal_ts_1.BaseType {
8
+ _subtype;
9
+ _processors;
10
+ get flags() {
11
+ return this._subtype.flags | internal_ts_1.TypeFlags.SnapshotProcessor;
12
+ }
13
+ constructor(_subtype, _processors, name) {
14
+ super(name || _subtype.name);
15
+ this._subtype = _subtype;
16
+ this._processors = _processors;
17
+ }
18
+ describe() {
19
+ return `snapshotProcessor(${this._subtype.describe()})`;
20
+ }
21
+ preProcessSnapshot(sn) {
22
+ if (this._processors.preProcessor) {
23
+ return this._processors.preProcessor.call(null, sn);
24
+ }
25
+ return sn;
26
+ }
27
+ preProcessSnapshotSafe(sn) {
28
+ try {
29
+ return this.preProcessSnapshot(sn);
30
+ }
31
+ catch (_e) {
32
+ return $preProcessorFailed;
33
+ }
34
+ }
35
+ postProcessSnapshot(sn, node) {
36
+ if (this._processors.postProcessor) {
37
+ return this._processors.postProcessor.call(null, sn, node.storedValue);
38
+ }
39
+ return sn;
40
+ }
41
+ _fixNode(node) {
42
+ // the node has to use these methods rather than the original type ones
43
+ proxyNodeTypeMethods(node.type, this, "create");
44
+ if (node instanceof internal_ts_1.ObjectNode) {
45
+ node.hasSnapshotPostProcessor = !!this._processors.postProcessor;
46
+ }
47
+ const oldGetSnapshot = node.getSnapshot;
48
+ node.getSnapshot = () => this.postProcessSnapshot(oldGetSnapshot.call(node), node);
49
+ if (!(0, internal_ts_1.isUnionType)(this._subtype)) {
50
+ node.getReconciliationType = () => {
51
+ return this;
52
+ };
53
+ }
54
+ }
55
+ instantiate(parent, subpath, environment, initialValue) {
56
+ const processedInitialValue = (0, internal_ts_1.isStateTreeNode)(initialValue)
57
+ ? initialValue
58
+ : this.preProcessSnapshot(initialValue);
59
+ const node = this._subtype.instantiate(parent, subpath, environment, processedInitialValue);
60
+ this._fixNode(node);
61
+ return node;
62
+ }
63
+ reconcile(current, newValue, parent, subpath) {
64
+ const node = this._subtype.reconcile(current, (0, internal_ts_1.isStateTreeNode)(newValue) ? newValue : this.preProcessSnapshot(newValue), parent, subpath);
65
+ if (node !== current) {
66
+ this._fixNode(node);
67
+ }
68
+ return node;
69
+ }
70
+ getSnapshot(node, applyPostProcess = true) {
71
+ const sn = this._subtype.getSnapshot(node);
72
+ return applyPostProcess ? this.postProcessSnapshot(sn, node) : sn;
73
+ }
74
+ isValidSnapshot(value, context) {
75
+ const processedSn = this.preProcessSnapshotSafe(value);
76
+ if (processedSn === $preProcessorFailed) {
77
+ return (0, internal_ts_1.typeCheckFailure)(context, value, "Failed to preprocess value");
78
+ }
79
+ return this._subtype.validate(processedSn, context);
80
+ }
81
+ getSubTypes() {
82
+ return this._subtype;
83
+ }
84
+ is(thing) {
85
+ const value = (0, internal_ts_1.isType)(thing)
86
+ ? this._subtype
87
+ : (0, internal_ts_1.isStateTreeNode)(thing)
88
+ ? (0, internal_ts_1.getSnapshot)(thing, false)
89
+ : this.preProcessSnapshotSafe(thing);
90
+ if (value === $preProcessorFailed) {
91
+ return false;
92
+ }
93
+ return (this._subtype.validate(value, [{ path: "", type: this._subtype }])
94
+ .length === 0);
95
+ }
96
+ isAssignableFrom(type) {
97
+ return this._subtype.isAssignableFrom(type);
98
+ }
99
+ isMatchingSnapshotId(current, snapshot) {
100
+ if (!(this._subtype instanceof internal_ts_1.ComplexType)) {
101
+ return false;
102
+ }
103
+ const processedSn = this.preProcessSnapshot(snapshot);
104
+ return this._subtype.isMatchingSnapshotId(current, processedSn);
105
+ }
106
+ }
107
+ function proxyNodeTypeMethods(nodeType, snapshotProcessorType, ...methods) {
108
+ for (const method of methods) {
109
+ nodeType[method] = snapshotProcessorType[method].bind(snapshotProcessorType);
110
+ }
111
+ }
112
+ /**
113
+ * `types.snapshotProcessor` - Runs a pre/post snapshot processor before/after serializing a given type.
114
+ *
115
+ * Example:
116
+ * ```ts
117
+ * const Todo1 = types.model({ text: types.string })
118
+ * // in the backend the text type must be null when empty
119
+ * interface BackendTodo {
120
+ * text: string | null
121
+ * }
122
+ *
123
+ * const Todo2 = types.snapshotProcessor(Todo1, {
124
+ * // from snapshot to instance
125
+ * preProcessor(snapshot: BackendTodo) {
126
+ * return {
127
+ * text: sn.text || "";
128
+ * }
129
+ * },
130
+ *
131
+ * // from instance to snapshot
132
+ * postProcessor(snapshot, node): BackendTodo {
133
+ * return {
134
+ * text: !sn.text ? null : sn.text
135
+ * }
136
+ * }
137
+ * })
138
+ * ```
139
+ *
140
+ * @param type Type to run the processors over.
141
+ * @param processors Processors to run.
142
+ * @param name Type name, or undefined to inherit the inner type one.
143
+ * @returns
144
+ */
145
+ function snapshotProcessor(type, processors, name) {
146
+ (0, internal_ts_1.assertIsType)(type, 1);
147
+ if ((0, internal_ts_1.devMode)()) {
148
+ if (processors.postProcessor &&
149
+ typeof processors.postProcessor !== "function") {
150
+ // istanbul ignore next
151
+ throw (0, internal_ts_1.fail)("postSnapshotProcessor must be a function");
152
+ }
153
+ if (processors.preProcessor &&
154
+ typeof processors.preProcessor !== "function") {
155
+ // istanbul ignore next
156
+ throw (0, internal_ts_1.fail)("preSnapshotProcessor must be a function");
157
+ }
158
+ }
159
+ return new SnapshotProcessor(type, processors, name);
160
+ }
161
+ //# sourceMappingURL=snapshotProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotProcessor.js","sourceRoot":"","sources":["../../../src/types/utility-types/snapshotProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshotProcessor.js","sourceRoot":"","sources":["../../../src/types/utility-types/snapshotProcessor.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare class Union extends BaseType<any, any, any> {
18
18
  describe(): string;
19
19
  instantiate(parent: AnyObjectNode | null, subpath: string, environment: any, initialValue: this["C"] | this["T"]): this["N"];
20
20
  reconcile(current: this["N"], newValue: this["C"] | this["T"], parent: AnyObjectNode, subpath: string): this["N"];
21
+ private noMatchMessage;
21
22
  determineType(value: this["C"] | this["T"], reconcileCurrentType: IAnyType | undefined): IAnyType | undefined;
22
23
  private tryQuickMatch;
23
24
  private tryMatchPrimitive;
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Union = void 0;
4
+ exports.union = union;
5
+ exports.isUnionType = isUnionType;
6
+ const internal_ts_1 = require("../../internal.js");
7
+ /**
8
+ * @internal
9
+ * @hidden
10
+ */
11
+ class Union extends internal_ts_1.BaseType {
12
+ _types;
13
+ _dispatcher;
14
+ _eager = true;
15
+ get flags() {
16
+ let result = internal_ts_1.TypeFlags.Union;
17
+ this._types.forEach(type => {
18
+ result |= type.flags;
19
+ });
20
+ return result;
21
+ }
22
+ constructor(name, _types, options) {
23
+ super(name);
24
+ this._types = _types;
25
+ options = {
26
+ eager: true,
27
+ dispatcher: undefined,
28
+ ...options
29
+ };
30
+ this._dispatcher = options.dispatcher;
31
+ if (!options.eager) {
32
+ this._eager = false;
33
+ }
34
+ }
35
+ isAssignableFrom(type) {
36
+ return this._types.some(subType => subType.isAssignableFrom(type));
37
+ }
38
+ describe() {
39
+ return ("(" + this._types.map(factory => factory.describe()).join(" | ") + ")");
40
+ }
41
+ instantiate(parent, subpath, environment, initialValue) {
42
+ const type = this.determineType(initialValue, undefined);
43
+ if (!type) {
44
+ throw (0, internal_ts_1.fail)(this.noMatchMessage(initialValue));
45
+ } // can happen in prod builds
46
+ return type.instantiate(parent, subpath, environment, initialValue);
47
+ }
48
+ reconcile(current, newValue, parent, subpath) {
49
+ const type = this.determineType(newValue, current.getReconciliationType());
50
+ if (!type) {
51
+ throw (0, internal_ts_1.fail)(this.noMatchMessage(newValue));
52
+ } // can happen in prod builds
53
+ return type.reconcile(current, newValue, parent, subpath);
54
+ }
55
+ noMatchMessage(value) {
56
+ const discriminator = (0, internal_ts_1.isPlainObject)(value) && typeof value.type === "string"
57
+ ? ` for snapshot with type "${value.type}"`
58
+ : "";
59
+ return `No matching type for union ${this.name}${discriminator}`;
60
+ }
61
+ determineType(value, reconcileCurrentType) {
62
+ // try the dispatcher, if defined
63
+ if (this._dispatcher) {
64
+ return this._dispatcher(value);
65
+ }
66
+ // fast path: when type checking is disabled, try quick structural matching first
67
+ if (!(0, internal_ts_1.isTypeCheckingEnabled)()) {
68
+ const quickMatch = this.tryQuickMatch(value, reconcileCurrentType);
69
+ if (quickMatch) {
70
+ return quickMatch;
71
+ }
72
+ // for plain object snapshots that didn't match via quick path, try all types
73
+ // with quick matching before falling back to full validation
74
+ // (state tree nodes must go through full validation for type identity checks)
75
+ if ((0, internal_ts_1.isPlainObject)(value) && !(0, internal_ts_1.isStateTreeNode)(value)) {
76
+ for (const type of this._types) {
77
+ if (this.snapshotLooksLikeType(value, type)) {
78
+ return type;
79
+ }
80
+ }
81
+ }
82
+ }
83
+ // find the most accomodating type
84
+ // if we are using reconciliation try the current node type first (fix for #1045)
85
+ if (reconcileCurrentType) {
86
+ if (reconcileCurrentType.is(value)) {
87
+ return reconcileCurrentType;
88
+ }
89
+ return this._types
90
+ .filter(t => t !== reconcileCurrentType)
91
+ .find(type => type.is(value));
92
+ }
93
+ else {
94
+ return this._types.find(type => type.is(value));
95
+ }
96
+ }
97
+ tryQuickMatch(value, reconcileCurrentType) {
98
+ // state tree nodes need full type compatibility checking
99
+ // (e.g., A.is(B.create()) must return false even if snapshots are compatible)
100
+ if ((0, internal_ts_1.isStateTreeNode)(value)) {
101
+ return undefined;
102
+ }
103
+ // for non-object values, try primitive matching
104
+ if (!(0, internal_ts_1.isPlainObject)(value)) {
105
+ return this.tryMatchPrimitive(value);
106
+ }
107
+ // for objects, try structural matching against model types
108
+ const typesToCheck = reconcileCurrentType
109
+ ? [
110
+ reconcileCurrentType,
111
+ ...this._types.filter(t => t !== reconcileCurrentType)
112
+ ]
113
+ : this._types;
114
+ for (const type of typesToCheck) {
115
+ if (this.snapshotLooksLikeType(value, type)) {
116
+ return type;
117
+ }
118
+ }
119
+ return undefined;
120
+ }
121
+ tryMatchPrimitive(value) {
122
+ const valueType = typeof value;
123
+ for (const type of this._types) {
124
+ const flags = type.flags;
125
+ if ((valueType === "string" && flags & internal_ts_1.TypeFlags.String) ||
126
+ (valueType === "number" &&
127
+ flags &
128
+ (internal_ts_1.TypeFlags.Number |
129
+ internal_ts_1.TypeFlags.Integer |
130
+ internal_ts_1.TypeFlags.Float |
131
+ internal_ts_1.TypeFlags.Finite)) ||
132
+ (valueType === "boolean" && flags & internal_ts_1.TypeFlags.Boolean) ||
133
+ (value === null && flags & internal_ts_1.TypeFlags.Null) ||
134
+ (value === undefined && flags & internal_ts_1.TypeFlags.Undefined)) {
135
+ return type;
136
+ }
137
+ // for literals, check exact value match
138
+ if (flags & internal_ts_1.TypeFlags.Literal) {
139
+ if (type.is(value)) {
140
+ return type;
141
+ }
142
+ }
143
+ }
144
+ return undefined;
145
+ }
146
+ snapshotLooksLikeType(value, type) {
147
+ // for model types, check if snapshot has all the required property keys
148
+ // and that any literal-typed properties match exactly
149
+ if (type instanceof internal_ts_1.ModelType) {
150
+ const props = type.properties;
151
+ // use cached propertyNames from ModelType instead of Object.keys()
152
+ for (const key of type.propertyNames) {
153
+ const propType = props[key];
154
+ const isOptional = propType.flags & internal_ts_1.TypeFlags.Optional;
155
+ const propValue = value[key];
156
+ // check required properties exist and are not undefined
157
+ // (unless the type accepts undefined, which Optional types do)
158
+ if (!isOptional) {
159
+ if (!(key in value) || propValue === undefined) {
160
+ return false;
161
+ }
162
+ }
163
+ // for literal types, verify the value matches exactly
164
+ // this is critical for discriminated unions
165
+ if (propType.flags & internal_ts_1.TypeFlags.Literal) {
166
+ if (!propType.is(propValue)) {
167
+ return false;
168
+ }
169
+ }
170
+ }
171
+ return true;
172
+ }
173
+ return false;
174
+ }
175
+ isValidSnapshot(value, context) {
176
+ if (this._dispatcher) {
177
+ return this._dispatcher(value).validate(value, context);
178
+ }
179
+ // for plain-object snapshots, prefer union members whose literal-typed
180
+ // discriminator properties match the value (e.g. {type: "MsaView"})
181
+ // so error output is scoped to the intended branch instead of every member
182
+ const candidates = (0, internal_ts_1.isPlainObject)(value) && !(0, internal_ts_1.isStateTreeNode)(value)
183
+ ? this._types.filter(t => this.snapshotLooksLikeType(value, t))
184
+ : [];
185
+ const typesToValidate = candidates.length > 0 ? candidates : this._types;
186
+ const allErrors = [];
187
+ let applicableTypes = 0;
188
+ for (const type of typesToValidate) {
189
+ const errors = type.validate(value, context);
190
+ if (errors.length === 0) {
191
+ if (this._eager) {
192
+ return (0, internal_ts_1.typeCheckSuccess)();
193
+ }
194
+ else {
195
+ applicableTypes++;
196
+ }
197
+ }
198
+ else {
199
+ allErrors.push(errors);
200
+ }
201
+ }
202
+ if (applicableTypes === 1) {
203
+ return (0, internal_ts_1.typeCheckSuccess)();
204
+ }
205
+ return (0, internal_ts_1.typeCheckFailure)(context, value, "No type is applicable for the union").concat((0, internal_ts_1.flattenTypeErrors)(allErrors));
206
+ }
207
+ getSubTypes() {
208
+ return this._types;
209
+ }
210
+ }
211
+ exports.Union = Union;
212
+ /**
213
+ * `types.union` - Create a union of multiple types. If the correct type cannot be inferred unambiguously from a snapshot, provide a dispatcher function of the form `(snapshot) => Type`.
214
+ *
215
+ * @param optionsOrType
216
+ * @param otherTypes
217
+ * @returns
218
+ */
219
+ function union(optionsOrType, ...otherTypes) {
220
+ const options = (0, internal_ts_1.isType)(optionsOrType) ? undefined : optionsOrType;
221
+ const types = (0, internal_ts_1.isType)(optionsOrType)
222
+ ? [optionsOrType, ...otherTypes]
223
+ : otherTypes;
224
+ const name = "(" + types.map(type => type.name).join(" | ") + ")";
225
+ // check all options
226
+ if ((0, internal_ts_1.devMode)()) {
227
+ if (options) {
228
+ (0, internal_ts_1.assertArg)(options, o => (0, internal_ts_1.isPlainObject)(o), "object { eager?: boolean, dispatcher?: Function }", 1);
229
+ }
230
+ types.forEach((type, i) => {
231
+ (0, internal_ts_1.assertIsType)(type, options ? i + 2 : i + 1);
232
+ });
233
+ }
234
+ return new Union(name, types, options);
235
+ }
236
+ /**
237
+ * Returns if a given value represents a union type.
238
+ *
239
+ * @param type
240
+ * @returns
241
+ */
242
+ function isUnionType(type) {
243
+ return (type.flags & internal_ts_1.TypeFlags.Union) > 0;
244
+ }
245
+ //# sourceMappingURL=union.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/types/utility-types/union.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/types/utility-types/union.ts"],"names":[],"mappings":"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"}