@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.
- package/README.md +18 -0
- package/dist/core/action.d.ts +1 -1
- package/dist/core/action.js +228 -0
- package/dist/core/action.js.map +1 -1
- package/dist/core/actionContext.js +42 -0
- package/dist/core/actionContext.js.map +1 -1
- package/dist/core/flow.d.ts +1 -1
- package/dist/core/flow.js +180 -0
- package/dist/core/flow.js.map +1 -1
- package/dist/core/json-patch.js +133 -0
- package/dist/core/json-patch.js.map +1 -1
- package/dist/core/mst-operations.js +885 -0
- package/dist/core/mst-operations.js.map +1 -1
- package/dist/core/node/BaseNode.js +152 -0
- package/dist/core/node/BaseNode.js.map +1 -1
- package/dist/core/node/Hook.js +15 -0
- package/dist/core/node/Hook.js.map +1 -1
- package/dist/core/node/create-node.js +41 -0
- package/dist/core/node/create-node.js.map +1 -1
- package/dist/core/node/identifier-cache.js +115 -0
- package/dist/core/node/identifier-cache.js.map +1 -1
- package/dist/core/node/livelinessChecking.js +38 -0
- package/dist/core/node/livelinessChecking.js.map +1 -1
- package/dist/core/node/node-utils.js +165 -0
- package/dist/core/node/node-utils.js.map +1 -1
- package/dist/core/node/object-node.js +545 -0
- package/dist/core/node/object-node.js.map +1 -1
- package/dist/core/node/scalar-node.js +89 -0
- package/dist/core/node/scalar-node.js.map +1 -1
- package/dist/core/process.d.ts +1 -1
- package/dist/core/process.js +39 -0
- package/dist/core/process.js.map +1 -1
- package/dist/core/type/type-checker.js +154 -0
- package/dist/core/type/type-checker.js.map +1 -1
- package/dist/core/type/type.d.ts +1 -1
- package/dist/core/type/type.js +251 -0
- package/dist/core/type/type.js.map +1 -1
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.js +60 -0
- package/dist/internal.js.map +1 -1
- package/dist/middlewares/create-action-tracking-middleware.js +81 -0
- package/dist/middlewares/create-action-tracking-middleware.js.map +1 -1
- package/dist/middlewares/createActionTrackingMiddleware2.js +133 -0
- package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -1
- package/dist/middlewares/on-action.js +215 -0
- package/dist/middlewares/on-action.js.map +1 -1
- package/dist/mobx-state-tree.js +83 -6867
- package/dist/mobx-state-tree.module.js +83 -6789
- package/dist/types/complex-types/array.d.ts +1 -1
- package/dist/types/complex-types/array.js +352 -0
- package/dist/types/complex-types/array.js.map +1 -1
- package/dist/types/complex-types/map.d.ts +1 -1
- package/dist/types/complex-types/map.js +361 -0
- package/dist/types/complex-types/map.js.map +1 -1
- package/dist/types/complex-types/model.js +477 -0
- package/dist/types/complex-types/model.js.map +1 -1
- package/dist/types/index.js +38 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/primitives.js +182 -0
- package/dist/types/primitives.js.map +1 -1
- package/dist/types/utility-types/custom.js +110 -0
- package/dist/types/utility-types/custom.js.map +1 -1
- package/dist/types/utility-types/enumeration.js +34 -0
- package/dist/types/utility-types/enumeration.js.map +1 -1
- package/dist/types/utility-types/frozen.js +97 -0
- package/dist/types/utility-types/frozen.js.map +1 -1
- package/dist/types/utility-types/identifier.js +129 -0
- package/dist/types/utility-types/identifier.js.map +1 -1
- package/dist/types/utility-types/late.js +109 -0
- package/dist/types/utility-types/late.js.map +1 -1
- package/dist/types/utility-types/lazy.js +76 -0
- package/dist/types/utility-types/lazy.js.map +1 -1
- package/dist/types/utility-types/literal.js +63 -0
- package/dist/types/utility-types/literal.js.map +1 -1
- package/dist/types/utility-types/maybe.js +30 -0
- package/dist/types/utility-types/maybe.js.map +1 -1
- package/dist/types/utility-types/optional.js +140 -0
- package/dist/types/utility-types/optional.js.map +1 -1
- package/dist/types/utility-types/reference.d.ts +2 -2
- package/dist/types/utility-types/reference.js +392 -0
- package/dist/types/utility-types/reference.js.map +1 -1
- package/dist/types/utility-types/refinement.js +85 -0
- package/dist/types/utility-types/refinement.js.map +1 -1
- package/dist/types/utility-types/resilient.js +120 -0
- package/dist/types/utility-types/resilient.js.map +1 -1
- package/dist/types/utility-types/snapshotProcessor.js +161 -0
- package/dist/types/utility-types/snapshotProcessor.js.map +1 -1
- package/dist/types/utility-types/union.d.ts +1 -0
- package/dist/types/utility-types/union.js +245 -0
- package/dist/types/utility-types/union.js.map +1 -1
- package/dist/utils.js +483 -0
- package/dist/utils.js.map +1 -1
- package/package.json +25 -24
- package/changelog.md +0 -677
- package/dist/mobx-state-tree.umd.js +0 -6873
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilient.js","sourceRoot":"","sources":["../../../src/types/utility-types/resilient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resilient.js","sourceRoot":"","sources":["../../../src/types/utility-types/resilient.ts"],"names":[],"mappings":";;AAuNA,8BAQC;AA/ND,mDAa0B;AAE1B,MAAM,SAAoD,SAAQ,sBAKjE;IAMoB;IACA;IACA;IAPnB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED,YACmB,QAAY,EACZ,aAAiB,EACjB,uBAGM;QAEvB,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA;QAPnB,aAAQ,GAAR,QAAQ,CAAI;QACZ,kBAAa,GAAb,aAAa,CAAI;QACjB,4BAAuB,GAAvB,uBAAuB,CAGjB;IAGzB,CAAC;IAED,QAAQ;QACN,OAAO,aAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;IACjD,CAAC;IAEO,oBAAoB,CAC1B,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,gBAAqB,EACrB,aAAsB;QAEtB,IAAI,gBAAoC,CAAA;QACxC,IAAI,CAAC;YACH,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAC7C,aAAa,EACb,gBAAgB,CACjB,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAA,kBAAI,EACR,qEAAqE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,aAAa,mCAAmC,CAAC,EAAE,CACjJ,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CACnC,MAAM,EACN,OAAO,EACP,WAAW,EACX,gBAAgB,CACJ,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAA,kBAAI,EACR,6BAA6B,IAAI,CAAC,aAAa,CAAC,IAAI,qDAAqD,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,aAAa,qBAAqB,CAAC,EAAE,CACvK,CAAA;QACH,CAAC;IACH,CAAC;IAED,WAAW,CACT,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAmC;QAEnC,IAAI,IAAA,6BAAe,EAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,CACA,CAAA;QAChB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,CACA,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,oBAAoB,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,EACZ,CAAC,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,SAAS,CACP,OAAkB,EAClB,QAA+B,EAC/B,MAAqB,EACrB,OAAe;QAEf,IAAI,IAAA,6BAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,CACK,CAAA;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,CACI,CAAA;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CACjC,OAAO,EACP,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,QAAQ,CAAC,EACzC,MAAM,EACN,OAAO,CACK,CAAA;YAChB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,CACK,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED,eAAe,CACb,MAAiB,EACjB,QAA4B;QAE5B,OAAO,IAAA,8BAAgB,GAAE,CAAA;IAC3B,CAAC;IAED,EAAE,CAAC,KAAU;QACX,IAAI,IAAA,oBAAM,EAAC,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC3C,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,iDAAiD;QACnD,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAc;QAC7B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAC1C,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,IAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF;AAWD;;;;;;;;;;;;;GAaG;AACH,SAAgB,SAAS,CACvB,IAAQ,EACR,YAAgB,EAChB,sBAA6E;IAE7E,IAAA,0BAAY,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACrB,IAAA,0BAAY,EAAC,YAAY,EAAE,CAAC,CAAC,CAAA;IAC7B,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"snapshotProcessor.js","sourceRoot":"","sources":["../../../src/types/utility-types/snapshotProcessor.ts"],"names":[],"mappings":";;AA2QA,8CA4BC;AAvSD,mDAoB0B;AAK1B,cAAc;AACd,MAAM,mBAAmB,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAaxE,MAAM,iBAAyD,SAAQ,sBAKtE;IAMoB;IACA;IANnB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAS,CAAC,iBAAiB,CAAA;IAC1D,CAAC;IAED,YACmB,QAAY,EACZ,WAAsD,EACvE,IAAa;QAEb,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAJX,aAAQ,GAAR,QAAQ,CAAI;QACZ,gBAAW,GAAX,WAAW,CAA2C;IAIzE,CAAC;IAED,QAAQ;QACN,OAAO,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;IACzD,CAAC;IAEO,kBAAkB,CAAC,EAAa;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,EAAS,CAAA;IAClB,CAAC;IAEO,sBAAsB,CAC5B,EAAa;QAEb,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,mBAAmB,CAAA;QAC5B,CAAC;IACH,CAAC;IAEO,mBAAmB,CACzB,EAAsB,EACtB,IAAe;QAEf,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,IAAI,CACzC,IAAI,EACJ,EAAE,EACF,IAAI,CAAC,WAAW,CACV,CAAA;QACV,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,QAAQ,CAAC,IAAe;QAC9B,uEAAuE;QACvE,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE/C,IAAI,IAAI,YAAY,wBAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAA;QAClE,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,CACtB,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAQ,CAAA;QAClE,IAAI,CAAC,IAAA,yBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,GAAG,GAAG,EAAE;gBAChC,OAAO,IAAI,CAAA;YACb,CAAC,CAAA;QACH,CAAC;IACH,CAAC;IAED,WAAW,CACT,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAmC;QAEnC,MAAM,qBAAqB,GAAG,IAAA,6BAAe,EAAC,YAAY,CAAC;YACzD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CACpC,MAAM,EACN,OAAO,EACP,WAAW,EACX,qBAAqB,CACf,CAAA;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CACP,OAAkB,EAClB,QAA+B,EAC/B,MAAqB,EACrB,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAClC,OAAO,EACP,IAAA,6BAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EACxE,MAAM,EACN,OAAO,CACD,CAAA;QACR,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,IAAe,EAAE,mBAA4B,IAAI;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,CAAC;IAED,eAAe,CACb,KAAgB,EAChB,OAA2B;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACtD,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;YACxC,OAAO,IAAA,8BAAgB,EAAC,OAAO,EAAE,KAAK,EAAE,4BAA4B,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,EAAE,CAAC,KAAU;QACX,MAAM,KAAK,GAAG,IAAA,oBAAM,EAAC,KAAK,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,CAAC,CAAC,IAAA,6BAAe,EAAC,KAAK,CAAC;gBACtB,CAAC,CAAC,IAAA,yBAAW,EAAC,KAAK,EAAE,KAAK,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC/D,MAAM,KAAK,CAAC,CAChB,CAAA;IACH,CAAC;IAED,gBAAgB,CAAC,IAAc;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,oBAAoB,CAAC,OAAkB,EAAE,QAAmB;QAC1D,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,YAAY,yBAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAc,EAAE,WAAW,CAAC,CAAA;IACxE,CAAC;CACF;AAED,SAAS,oBAAoB,CAC3B,QAAa,EACb,qBAA0B,EAC1B,GAAG,OAAmD;IAEtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,iBAAiB,CAK/B,IAAQ,EACR,UAAqD,EACrD,IAAa;IAEb,IAAA,0BAAY,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACrB,IAAI,IAAA,qBAAO,GAAE,EAAE,CAAC;QACd,IACE,UAAU,CAAC,aAAa;YACxB,OAAO,UAAU,CAAC,aAAa,KAAK,UAAU,EAC9C,CAAC;YACD,uBAAuB;YACvB,MAAM,IAAA,kBAAI,EAAC,0CAA0C,CAAC,CAAA;QACxD,CAAC;QACD,IACE,UAAU,CAAC,YAAY;YACvB,OAAO,UAAU,CAAC,YAAY,KAAK,UAAU,EAC7C,CAAC;YACD,uBAAuB;YACvB,MAAM,IAAA,kBAAI,EAAC,yCAAyC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/types/utility-types/union.ts"],"names":[],"mappings":"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"}
|