@jbrowse/mobx-state-tree 5.6.3 → 5.6.9
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/dist/core/action.d.ts +87 -0
- package/dist/core/action.js +228 -0
- package/dist/core/action.js.map +1 -0
- package/dist/core/actionContext.d.ts +27 -0
- package/dist/core/actionContext.js +42 -0
- package/dist/core/actionContext.js.map +1 -0
- package/dist/core/flow.d.ts +69 -0
- package/dist/core/flow.js +180 -0
- package/dist/core/flow.js.map +1 -0
- package/dist/core/json-patch.d.ts +46 -0
- package/dist/core/json-patch.js +133 -0
- package/dist/core/json-patch.js.map +1 -0
- package/dist/core/mst-operations.d.ts +459 -0
- package/dist/core/mst-operations.js +885 -0
- package/dist/core/mst-operations.js.map +1 -0
- package/dist/core/node/BaseNode.d.ts +62 -0
- package/dist/core/node/BaseNode.js +152 -0
- package/dist/core/node/BaseNode.js.map +1 -0
- package/dist/core/node/Hook.d.ts +17 -0
- package/dist/core/node/Hook.js +15 -0
- package/dist/core/node/Hook.js.map +1 -0
- package/dist/core/node/create-node.d.ts +16 -0
- package/dist/core/node/create-node.js +41 -0
- package/dist/core/node/create-node.js.map +1 -0
- package/dist/core/node/identifier-cache.d.ts +19 -0
- package/dist/core/node/identifier-cache.js +115 -0
- package/dist/core/node/identifier-cache.js.map +1 -0
- package/dist/core/node/livelinessChecking.d.ts +37 -0
- package/dist/core/node/livelinessChecking.js +38 -0
- package/dist/core/node/livelinessChecking.js.map +1 -0
- package/dist/core/node/node-utils.d.ts +83 -0
- package/dist/core/node/node-utils.js +165 -0
- package/dist/core/node/node-utils.js.map +1 -0
- package/dist/core/node/object-node.d.ts +99 -0
- package/dist/core/node/object-node.js +545 -0
- package/dist/core/node/object-node.js.map +1 -0
- package/dist/core/node/scalar-node.d.ts +19 -0
- package/dist/core/node/scalar-node.js +89 -0
- package/dist/core/node/scalar-node.js.map +1 -0
- package/dist/core/process.d.ts +50 -0
- package/dist/core/process.js +39 -0
- package/dist/core/process.js.map +1 -0
- package/dist/core/type/type-checker.d.ts +69 -0
- package/dist/core/type/type-checker.js +154 -0
- package/dist/core/type/type-checker.js.map +1 -0
- package/dist/core/type/type.d.ts +317 -0
- package/dist/core/type/type.js +251 -0
- package/dist/core/type/type.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +39 -0
- package/dist/internal.js +60 -0
- package/dist/internal.js.map +1 -0
- package/dist/middlewares/create-action-tracking-middleware.d.ts +24 -0
- package/dist/middlewares/create-action-tracking-middleware.js +81 -0
- package/dist/middlewares/create-action-tracking-middleware.js.map +1 -0
- package/dist/middlewares/createActionTrackingMiddleware2.d.ts +34 -0
- package/dist/middlewares/createActionTrackingMiddleware2.js +133 -0
- package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -0
- package/dist/middlewares/on-action.d.ts +87 -0
- package/dist/middlewares/on-action.js +215 -0
- package/dist/middlewares/on-action.js.map +1 -0
- package/dist/mobx-state-tree.js +85 -0
- package/dist/mobx-state-tree.module.js +83 -0
- package/dist/types/complex-types/array.d.ts +80 -0
- package/dist/types/complex-types/array.js +352 -0
- package/dist/types/complex-types/array.js.map +1 -0
- package/dist/types/complex-types/map.d.ts +110 -0
- package/dist/types/complex-types/map.js +361 -0
- package/dist/types/complex-types/map.js.map +1 -0
- package/dist/types/complex-types/model.d.ts +192 -0
- package/dist/types/complex-types/model.js +477 -0
- package/dist/types/complex-types/model.js.map +1 -0
- package/dist/types/index.d.ts +33 -0
- package/dist/types/index.js +38 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/primitives.d.ts +124 -0
- package/dist/types/primitives.js +182 -0
- package/dist/types/primitives.js.map +1 -0
- package/dist/types/utility-types/custom.d.ts +74 -0
- package/dist/types/utility-types/custom.js +110 -0
- package/dist/types/utility-types/custom.js.map +1 -0
- package/dist/types/utility-types/enumeration.d.ts +5 -0
- package/dist/types/utility-types/enumeration.js +34 -0
- package/dist/types/utility-types/enumeration.js.map +1 -0
- package/dist/types/utility-types/frozen.d.ts +23 -0
- package/dist/types/utility-types/frozen.js +97 -0
- package/dist/types/utility-types/frozen.js.map +1 -0
- package/dist/types/utility-types/identifier.d.ts +86 -0
- package/dist/types/utility-types/identifier.js +129 -0
- package/dist/types/utility-types/identifier.js.map +1 -0
- package/dist/types/utility-types/late.d.ts +10 -0
- package/dist/types/utility-types/late.js +109 -0
- package/dist/types/utility-types/late.js.map +1 -0
- package/dist/types/utility-types/lazy.d.ts +22 -0
- package/dist/types/utility-types/lazy.js +76 -0
- package/dist/types/utility-types/lazy.js.map +1 -0
- package/dist/types/utility-types/literal.d.ts +37 -0
- package/dist/types/utility-types/literal.js +63 -0
- package/dist/types/utility-types/literal.js.map +1 -0
- package/dist/types/utility-types/maybe.d.ts +26 -0
- package/dist/types/utility-types/maybe.js +30 -0
- package/dist/types/utility-types/maybe.js.map +1 -0
- package/dist/types/utility-types/optional.d.ts +41 -0
- package/dist/types/utility-types/optional.js +140 -0
- package/dist/types/utility-types/optional.js.map +1 -0
- package/dist/types/utility-types/reference.d.ts +89 -0
- package/dist/types/utility-types/reference.js +392 -0
- package/dist/types/utility-types/reference.js.map +1 -0
- package/dist/types/utility-types/refinement.d.ts +10 -0
- package/dist/types/utility-types/refinement.js +85 -0
- package/dist/types/utility-types/refinement.js.map +1 -0
- package/dist/types/utility-types/resilient.d.ts +18 -0
- package/dist/types/utility-types/resilient.js +120 -0
- package/dist/types/utility-types/resilient.js.map +1 -0
- package/dist/types/utility-types/snapshotProcessor.d.ts +63 -0
- package/dist/types/utility-types/snapshotProcessor.js +161 -0
- package/dist/types/utility-types/snapshotProcessor.js.map +1 -0
- package/dist/types/utility-types/union.d.ts +77 -0
- package/dist/types/utility-types/union.js +245 -0
- package/dist/types/utility-types/union.js.map +1 -0
- package/dist/utils.d.ts +230 -0
- package/dist/utils.js +483 -0
- package/dist/utils.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapType = exports.MapIdentifierMode = void 0;
|
|
4
|
+
exports.map = map;
|
|
5
|
+
exports.isMapType = isMapType;
|
|
6
|
+
const mobx_1 = require("mobx");
|
|
7
|
+
const internal_ts_1 = require("../../internal.js");
|
|
8
|
+
const needsIdentifierError = `Map.put can only be used to store complex values that have an identifier type attribute`;
|
|
9
|
+
function tryCollectModelTypes(type, modelTypes) {
|
|
10
|
+
const subtypes = type.getSubTypes();
|
|
11
|
+
if (subtypes === internal_ts_1.cannotDetermineSubtype) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (subtypes) {
|
|
15
|
+
const subtypesArray = (0, internal_ts_1.asArray)(subtypes);
|
|
16
|
+
for (const subtype of subtypesArray) {
|
|
17
|
+
if (!tryCollectModelTypes(subtype, modelTypes)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (type instanceof internal_ts_1.ModelType) {
|
|
23
|
+
modelTypes.push(type);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
* @hidden
|
|
30
|
+
*/
|
|
31
|
+
var MapIdentifierMode;
|
|
32
|
+
(function (MapIdentifierMode) {
|
|
33
|
+
MapIdentifierMode[MapIdentifierMode["UNKNOWN"] = 0] = "UNKNOWN";
|
|
34
|
+
MapIdentifierMode[MapIdentifierMode["YES"] = 1] = "YES";
|
|
35
|
+
MapIdentifierMode[MapIdentifierMode["NO"] = 2] = "NO";
|
|
36
|
+
})(MapIdentifierMode || (exports.MapIdentifierMode = MapIdentifierMode = {}));
|
|
37
|
+
class MSTMap extends mobx_1.ObservableMap {
|
|
38
|
+
constructor(initialData, name) {
|
|
39
|
+
super(initialData, mobx_1.observable.ref.enhancer, name);
|
|
40
|
+
}
|
|
41
|
+
get(key) {
|
|
42
|
+
// maybe this is over-enthousiastic? normalize numeric keys to strings
|
|
43
|
+
return super.get("" + key);
|
|
44
|
+
}
|
|
45
|
+
has(key) {
|
|
46
|
+
return super.has("" + key);
|
|
47
|
+
}
|
|
48
|
+
delete(key) {
|
|
49
|
+
return super.delete("" + key);
|
|
50
|
+
}
|
|
51
|
+
set(key, value) {
|
|
52
|
+
return super.set("" + key, value);
|
|
53
|
+
}
|
|
54
|
+
put(value) {
|
|
55
|
+
if (!value) {
|
|
56
|
+
throw (0, internal_ts_1.fail)(`Map.put cannot be used to set empty values`);
|
|
57
|
+
}
|
|
58
|
+
if ((0, internal_ts_1.isStateTreeNode)(value)) {
|
|
59
|
+
const node = (0, internal_ts_1.getStateTreeNode)(value);
|
|
60
|
+
if ((0, internal_ts_1.devMode)()) {
|
|
61
|
+
if (!node.identifierAttribute) {
|
|
62
|
+
throw (0, internal_ts_1.fail)(needsIdentifierError);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (node.identifier === null) {
|
|
66
|
+
throw (0, internal_ts_1.fail)(needsIdentifierError);
|
|
67
|
+
}
|
|
68
|
+
this.set(node.identifier, value);
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
else if (!(0, internal_ts_1.isMutable)(value)) {
|
|
72
|
+
throw (0, internal_ts_1.fail)(`Map.put can only be used to store complex values`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const mapNode = (0, internal_ts_1.getStateTreeNode)(this);
|
|
76
|
+
const mapType = mapNode.type;
|
|
77
|
+
if (mapType.identifierMode !== MapIdentifierMode.YES) {
|
|
78
|
+
throw (0, internal_ts_1.fail)(needsIdentifierError);
|
|
79
|
+
}
|
|
80
|
+
const idAttr = mapType.mapIdentifierAttribute;
|
|
81
|
+
const id = value[idAttr];
|
|
82
|
+
if (!(0, internal_ts_1.isValidIdentifier)(id)) {
|
|
83
|
+
// try again but this time after creating a node for the value
|
|
84
|
+
// since it might be an optional identifier
|
|
85
|
+
const newNode = this.put(mapType.getChildType().create(value, mapNode.environment));
|
|
86
|
+
return this.put((0, internal_ts_1.getSnapshot)(newNode));
|
|
87
|
+
}
|
|
88
|
+
const key = (0, internal_ts_1.normalizeIdentifier)(id);
|
|
89
|
+
this.set(key, value);
|
|
90
|
+
return this.get(key);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @internal
|
|
96
|
+
* @hidden
|
|
97
|
+
*/
|
|
98
|
+
class MapType extends internal_ts_1.ComplexType {
|
|
99
|
+
_subType;
|
|
100
|
+
identifierMode = MapIdentifierMode.UNKNOWN;
|
|
101
|
+
mapIdentifierAttribute = undefined;
|
|
102
|
+
flags = internal_ts_1.TypeFlags.Map;
|
|
103
|
+
hookInitializers = [];
|
|
104
|
+
constructor(name, _subType, hookInitializers = []) {
|
|
105
|
+
super(name);
|
|
106
|
+
this._subType = _subType;
|
|
107
|
+
this._determineIdentifierMode();
|
|
108
|
+
this.hookInitializers = hookInitializers;
|
|
109
|
+
}
|
|
110
|
+
hooks(hooks) {
|
|
111
|
+
const hookInitializers = this.hookInitializers.length > 0
|
|
112
|
+
? this.hookInitializers.concat(hooks)
|
|
113
|
+
: [hooks];
|
|
114
|
+
return new MapType(this.name, this._subType, hookInitializers);
|
|
115
|
+
}
|
|
116
|
+
instantiate(parent, subpath, environment, initialValue) {
|
|
117
|
+
this._determineIdentifierMode();
|
|
118
|
+
return (0, internal_ts_1.createObjectNode)(this, parent, subpath, environment, initialValue);
|
|
119
|
+
}
|
|
120
|
+
_determineIdentifierMode() {
|
|
121
|
+
if (this.identifierMode !== MapIdentifierMode.UNKNOWN) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const modelTypes = [];
|
|
125
|
+
if (tryCollectModelTypes(this._subType, modelTypes)) {
|
|
126
|
+
const identifierAttribute = modelTypes.reduce((current, type) => {
|
|
127
|
+
if (!type.identifierAttribute) {
|
|
128
|
+
return current;
|
|
129
|
+
}
|
|
130
|
+
if (current && current !== type.identifierAttribute) {
|
|
131
|
+
throw (0, internal_ts_1.fail)(`The objects in a map should all have the same identifier attribute, expected '${current}', but child of type '${type.name}' declared attribute '${type.identifierAttribute}' as identifier`);
|
|
132
|
+
}
|
|
133
|
+
return type.identifierAttribute;
|
|
134
|
+
}, undefined);
|
|
135
|
+
if (identifierAttribute) {
|
|
136
|
+
this.identifierMode = MapIdentifierMode.YES;
|
|
137
|
+
this.mapIdentifierAttribute = identifierAttribute;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
this.identifierMode = MapIdentifierMode.NO;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
initializeChildNodes(objNode, initialSnapshot = {}) {
|
|
145
|
+
const subType = objNode.type._subType;
|
|
146
|
+
const result = {};
|
|
147
|
+
Object.keys(initialSnapshot).forEach(name => {
|
|
148
|
+
result[name] = subType.instantiate(objNode, name, undefined, initialSnapshot[name]);
|
|
149
|
+
});
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
createNewInstance(childNodes) {
|
|
153
|
+
return new MSTMap(childNodes, this.name);
|
|
154
|
+
}
|
|
155
|
+
finalizeNewInstance(node, instance) {
|
|
156
|
+
(0, mobx_1._interceptReads)(instance, node.unbox);
|
|
157
|
+
const type = node.type;
|
|
158
|
+
type.hookInitializers.forEach(initializer => {
|
|
159
|
+
const hooks = initializer(instance);
|
|
160
|
+
Object.keys(hooks).forEach(name => {
|
|
161
|
+
const hook = hooks[name];
|
|
162
|
+
const actionInvoker = (0, internal_ts_1.createActionInvoker)(instance, name, hook);
|
|
163
|
+
(!(0, internal_ts_1.devMode)() ? internal_ts_1.addHiddenFinalProp : internal_ts_1.addHiddenWritableProp)(instance, name, actionInvoker);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
(0, mobx_1.intercept)(instance, this.willChange);
|
|
167
|
+
(0, mobx_1.observe)(instance, this.didChange);
|
|
168
|
+
}
|
|
169
|
+
describe() {
|
|
170
|
+
return this.name;
|
|
171
|
+
}
|
|
172
|
+
getChildren(node) {
|
|
173
|
+
// return (node.storedValue as ObservableMap<any>).values()
|
|
174
|
+
return (0, mobx_1.values)(node.storedValue);
|
|
175
|
+
}
|
|
176
|
+
getChildNode(node, key) {
|
|
177
|
+
const childNode = node.storedValue.get("" + key);
|
|
178
|
+
if (!childNode) {
|
|
179
|
+
throw (0, internal_ts_1.fail)("Not a child " + key);
|
|
180
|
+
}
|
|
181
|
+
return childNode;
|
|
182
|
+
}
|
|
183
|
+
willChange(change) {
|
|
184
|
+
const node = (0, internal_ts_1.getStateTreeNode)(change.object);
|
|
185
|
+
const key = change.name;
|
|
186
|
+
node.assertWritable({ subpath: key });
|
|
187
|
+
const mapType = node.type;
|
|
188
|
+
const subType = mapType._subType;
|
|
189
|
+
switch (change.type) {
|
|
190
|
+
case "update":
|
|
191
|
+
{
|
|
192
|
+
const { newValue } = change;
|
|
193
|
+
const oldValue = change.object.get(key);
|
|
194
|
+
if (newValue === oldValue) {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
(0, internal_ts_1.typecheckInternal)(subType, newValue);
|
|
198
|
+
change.newValue = subType.reconcile(node.getChildNode(key), change.newValue, node, key);
|
|
199
|
+
mapType.processIdentifier(key, change.newValue);
|
|
200
|
+
}
|
|
201
|
+
break;
|
|
202
|
+
case "add":
|
|
203
|
+
{
|
|
204
|
+
(0, internal_ts_1.typecheckInternal)(subType, change.newValue);
|
|
205
|
+
change.newValue = subType.instantiate(node, key, undefined, change.newValue);
|
|
206
|
+
mapType.processIdentifier(key, change.newValue);
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
return change;
|
|
211
|
+
}
|
|
212
|
+
processIdentifier(expected, node) {
|
|
213
|
+
if (this.identifierMode === MapIdentifierMode.YES &&
|
|
214
|
+
node instanceof internal_ts_1.ObjectNode) {
|
|
215
|
+
const identifier = node.identifier;
|
|
216
|
+
if (identifier !== expected) {
|
|
217
|
+
throw (0, internal_ts_1.fail)(`A map of objects containing an identifier should always store the object under their own identifier. Trying to store key '${identifier}', but expected: '${expected}'`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
getSnapshot(node) {
|
|
222
|
+
const res = {};
|
|
223
|
+
node.getChildren().forEach(childNode => {
|
|
224
|
+
res[childNode.subpath] = childNode.snapshot;
|
|
225
|
+
});
|
|
226
|
+
return res;
|
|
227
|
+
}
|
|
228
|
+
processInitialSnapshot(childNodes) {
|
|
229
|
+
const processed = {};
|
|
230
|
+
Object.keys(childNodes).forEach(key => {
|
|
231
|
+
processed[key] = childNodes[key].getSnapshot();
|
|
232
|
+
});
|
|
233
|
+
return processed;
|
|
234
|
+
}
|
|
235
|
+
didChange(change) {
|
|
236
|
+
const node = (0, internal_ts_1.getStateTreeNode)(change.object);
|
|
237
|
+
switch (change.type) {
|
|
238
|
+
case "update":
|
|
239
|
+
return void node.emitPatch({
|
|
240
|
+
op: "replace",
|
|
241
|
+
path: (0, internal_ts_1.escapeJsonPath)(change.name),
|
|
242
|
+
value: change.newValue.snapshot,
|
|
243
|
+
oldValue: change.oldValue ? change.oldValue.snapshot : undefined
|
|
244
|
+
}, node);
|
|
245
|
+
case "add":
|
|
246
|
+
return void node.emitPatch({
|
|
247
|
+
op: "add",
|
|
248
|
+
path: (0, internal_ts_1.escapeJsonPath)(change.name),
|
|
249
|
+
value: change.newValue.snapshot,
|
|
250
|
+
oldValue: undefined
|
|
251
|
+
}, node);
|
|
252
|
+
case "delete":
|
|
253
|
+
// a node got deleted, get the old snapshot and make the node die
|
|
254
|
+
const oldSnapshot = change.oldValue.snapshot;
|
|
255
|
+
change.oldValue.die();
|
|
256
|
+
// emit the patch
|
|
257
|
+
return void node.emitPatch({
|
|
258
|
+
op: "remove",
|
|
259
|
+
path: (0, internal_ts_1.escapeJsonPath)(change.name),
|
|
260
|
+
oldValue: oldSnapshot
|
|
261
|
+
}, node);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
applyPatchLocally(node, subpath, patch) {
|
|
265
|
+
const target = node.storedValue;
|
|
266
|
+
switch (patch.op) {
|
|
267
|
+
case "add":
|
|
268
|
+
case "replace":
|
|
269
|
+
target.set(subpath, patch.value);
|
|
270
|
+
break;
|
|
271
|
+
case "remove":
|
|
272
|
+
target.delete(subpath);
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
applySnapshot(node, snapshot) {
|
|
277
|
+
(0, internal_ts_1.typecheckInternal)(this, snapshot);
|
|
278
|
+
const target = node.storedValue;
|
|
279
|
+
const currentKeys = {};
|
|
280
|
+
Array.from(target.keys()).forEach(key => {
|
|
281
|
+
currentKeys[key] = false;
|
|
282
|
+
});
|
|
283
|
+
if (snapshot) {
|
|
284
|
+
// Don't use target.replace, as it will throw away all existing items first
|
|
285
|
+
for (const key in snapshot) {
|
|
286
|
+
target.set(key, snapshot[key]);
|
|
287
|
+
currentKeys["" + key] = true;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
Object.keys(currentKeys).forEach(key => {
|
|
291
|
+
if (currentKeys[key] === false) {
|
|
292
|
+
target.delete(key);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
getChildType() {
|
|
297
|
+
return this._subType;
|
|
298
|
+
}
|
|
299
|
+
isValidSnapshot(value, context) {
|
|
300
|
+
if (!(0, internal_ts_1.isPlainObject)(value)) {
|
|
301
|
+
return (0, internal_ts_1.typeCheckFailure)(context, value, "Value is not a plain object");
|
|
302
|
+
}
|
|
303
|
+
for (const key of Object.keys(value)) {
|
|
304
|
+
(0, internal_ts_1.getContextForPath)(context, key, this._subType);
|
|
305
|
+
const errors = this._subType.validate(value[key], context);
|
|
306
|
+
(0, internal_ts_1.popContext)(context);
|
|
307
|
+
if (errors.length > 0) {
|
|
308
|
+
return errors;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return (0, internal_ts_1.typeCheckSuccess)();
|
|
312
|
+
}
|
|
313
|
+
getDefaultSnapshot() {
|
|
314
|
+
return internal_ts_1.EMPTY_OBJECT;
|
|
315
|
+
}
|
|
316
|
+
removeChild(node, subpath) {
|
|
317
|
+
node.storedValue.delete(subpath);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
exports.MapType = MapType;
|
|
321
|
+
MapType.prototype.applySnapshot = (0, mobx_1.action)(MapType.prototype.applySnapshot);
|
|
322
|
+
/**
|
|
323
|
+
* `types.map` - Creates a key based collection type who's children are all of a uniform declared type.
|
|
324
|
+
* If the type stored in a map has an identifier, it is mandatory to store the child under that identifier in the map.
|
|
325
|
+
*
|
|
326
|
+
* This type will always produce [observable maps](https://mobx.js.org/api.html#observablemap)
|
|
327
|
+
*
|
|
328
|
+
* Example:
|
|
329
|
+
* ```ts
|
|
330
|
+
* const Todo = types.model({
|
|
331
|
+
* id: types.identifier,
|
|
332
|
+
* task: types.string
|
|
333
|
+
* })
|
|
334
|
+
*
|
|
335
|
+
* const TodoStore = types.model({
|
|
336
|
+
* todos: types.map(Todo)
|
|
337
|
+
* })
|
|
338
|
+
*
|
|
339
|
+
* const s = TodoStore.create({ todos: {} })
|
|
340
|
+
* unprotect(s)
|
|
341
|
+
* s.todos.set(17, { task: "Grab coffee", id: 17 })
|
|
342
|
+
* s.todos.put({ task: "Grab cookie", id: 18 }) // put will infer key from the identifier
|
|
343
|
+
* console.log(s.todos.get(17).task) // prints: "Grab coffee"
|
|
344
|
+
* ```
|
|
345
|
+
*
|
|
346
|
+
* @param subtype
|
|
347
|
+
* @returns
|
|
348
|
+
*/
|
|
349
|
+
function map(subtype) {
|
|
350
|
+
return new MapType(`Map<string, ${subtype.name}>`, subtype);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Returns if a given value represents a map type.
|
|
354
|
+
*
|
|
355
|
+
* @param type
|
|
356
|
+
* @returns `true` if it is a map type.
|
|
357
|
+
*/
|
|
358
|
+
function isMapType(type) {
|
|
359
|
+
return (0, internal_ts_1.isType)(type) && (type.flags & internal_ts_1.TypeFlags.Map) > 0;
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/types/complex-types/map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { type AnyNode, type AnyObjectNode, ComplexType, type FunctionWithFlag, type IAnyType, type IChildNodesMap, type IJsonPatch, type IStateTreeNode, type IType, type IValidationContext, type IValidationResult, type Instance, TypeFlags, type _CustomOrOther, type _NotCustomized } from "../../internal.ts";
|
|
2
|
+
/** @hidden */
|
|
3
|
+
export interface ModelProperties {
|
|
4
|
+
[key: string]: IAnyType;
|
|
5
|
+
}
|
|
6
|
+
/** @hidden */
|
|
7
|
+
export type ModelPrimitive = string | number | boolean | Date;
|
|
8
|
+
/** @hidden */
|
|
9
|
+
export interface ModelPropertiesDeclaration {
|
|
10
|
+
[key: string]: ModelPrimitive | IAnyType;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Unmaps syntax property declarations to a map of { propName: IType }
|
|
14
|
+
*
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
17
|
+
export type ModelPropertiesDeclarationToProperties<T extends ModelPropertiesDeclaration> = T extends {
|
|
18
|
+
[k: string]: IAnyType;
|
|
19
|
+
} ? T : {
|
|
20
|
+
[K in keyof T]: T[K] extends IAnyType ? T[K] : T[K] extends string ? IType<string | undefined, string, string> : T[K] extends number ? IType<number | undefined, number, number> : T[K] extends boolean ? IType<boolean | undefined, boolean, boolean> : T[K] extends Date ? IType<number | Date | undefined, number, Date> : never;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a value is optional (undefined, any or unknown).
|
|
24
|
+
* @hidden
|
|
25
|
+
*
|
|
26
|
+
* Examples:
|
|
27
|
+
* - string = false
|
|
28
|
+
* - undefined = true
|
|
29
|
+
* - string | undefined = true
|
|
30
|
+
* - string & undefined = false, but we don't care
|
|
31
|
+
* - any = true
|
|
32
|
+
* - unknown = true
|
|
33
|
+
*/
|
|
34
|
+
type IsOptionalValue<C, TV, FV> = undefined extends C ? TV : FV;
|
|
35
|
+
/**
|
|
36
|
+
* Name of the properties of an object that can't be set to undefined, any or unknown
|
|
37
|
+
* @hidden
|
|
38
|
+
*/
|
|
39
|
+
type DefinablePropsNames<T> = {
|
|
40
|
+
[K in keyof T]: IsOptionalValue<T[K], never, K>;
|
|
41
|
+
}[keyof T];
|
|
42
|
+
/** @hidden */
|
|
43
|
+
export declare const $nonEmptyObject: unique symbol;
|
|
44
|
+
/** @hidden */
|
|
45
|
+
export interface NonEmptyObject {
|
|
46
|
+
[$nonEmptyObject]?: any;
|
|
47
|
+
}
|
|
48
|
+
/** @hidden */
|
|
49
|
+
export type ExtractCFromProps<P extends ModelProperties> = {
|
|
50
|
+
[k in keyof P]: P[k]["CreationType"];
|
|
51
|
+
};
|
|
52
|
+
/** @hidden */
|
|
53
|
+
export type ModelCreationType<PC> = {
|
|
54
|
+
[P in DefinablePropsNames<PC>]: PC[P];
|
|
55
|
+
} & Partial<PC> & NonEmptyObject;
|
|
56
|
+
/** @hidden */
|
|
57
|
+
export type ModelCreationType2<P extends ModelProperties, CustomC> = keyof P extends never ? IStateTreeNode : _CustomOrOther<CustomC, ModelCreationType<ExtractCFromProps<P>>>;
|
|
58
|
+
/** @hidden */
|
|
59
|
+
export type ModelSnapshotType<P extends ModelProperties> = {
|
|
60
|
+
[K in keyof P]: P[K]["SnapshotType"];
|
|
61
|
+
} & NonEmptyObject;
|
|
62
|
+
/** @hidden */
|
|
63
|
+
export type ModelSnapshotType2<P extends ModelProperties, CustomS> = _CustomOrOther<CustomS, ModelSnapshotType<P>>;
|
|
64
|
+
/**
|
|
65
|
+
* @hidden
|
|
66
|
+
* we keep this separate from ModelInstanceType to shorten model instance types generated declarations
|
|
67
|
+
*/
|
|
68
|
+
export type ModelInstanceTypeProps<P extends ModelProperties> = {
|
|
69
|
+
[K in keyof P]: P[K]["Type"];
|
|
70
|
+
} & NonEmptyObject;
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
* do not transform this to an interface or model instance type generated declarations will be longer
|
|
74
|
+
*/
|
|
75
|
+
export type ModelInstanceType<P extends ModelProperties, O> = ModelInstanceTypeProps<P> & O;
|
|
76
|
+
/** @hidden */
|
|
77
|
+
export interface ModelActions {
|
|
78
|
+
[key: string]: FunctionWithFlag;
|
|
79
|
+
}
|
|
80
|
+
export interface IModelType<PROPS extends ModelProperties, OTHERS, CustomC = _NotCustomized, CustomS = _NotCustomized> extends IType<ModelCreationType2<PROPS, CustomC>, ModelSnapshotType2<PROPS, CustomS>, ModelInstanceType<PROPS, OTHERS>> {
|
|
81
|
+
readonly properties: PROPS;
|
|
82
|
+
named(newName: string): IModelType<PROPS, OTHERS, CustomC, CustomS>;
|
|
83
|
+
props<PROPS2 extends ModelPropertiesDeclaration>(props: PROPS2): IModelType<PROPS & ModelPropertiesDeclarationToProperties<PROPS2>, OTHERS, CustomC, CustomS>;
|
|
84
|
+
views<V extends object>(fn: (self: Instance<this>) => V): IModelType<PROPS, OTHERS & V, CustomC, CustomS>;
|
|
85
|
+
actions<A extends ModelActions>(fn: (self: Instance<this>) => A): IModelType<PROPS, OTHERS & A, CustomC, CustomS>;
|
|
86
|
+
volatile<TP extends object>(fn: (self: Instance<this>) => TP): IModelType<PROPS, OTHERS & TP, CustomC, CustomS>;
|
|
87
|
+
extend<A extends ModelActions = {}, V extends object = {}, VS extends object = {}>(fn: (self: Instance<this>) => {
|
|
88
|
+
actions?: A;
|
|
89
|
+
views?: V;
|
|
90
|
+
state?: VS;
|
|
91
|
+
}): IModelType<PROPS, OTHERS & A & V & VS, CustomC, CustomS>;
|
|
92
|
+
preProcessSnapshot<NewC = ModelCreationType2<PROPS, CustomC>>(fn: (snapshot: NewC) => ModelCreationType2<PROPS, CustomC>): IModelType<PROPS, OTHERS, NewC, CustomS>;
|
|
93
|
+
postProcessSnapshot<NewS = ModelSnapshotType2<PROPS, CustomS>>(fn: (snapshot: ModelSnapshotType2<PROPS, CustomS>) => NewS): IModelType<PROPS, OTHERS, CustomC, NewS>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Any model type.
|
|
97
|
+
*/
|
|
98
|
+
export interface IAnyModelType extends IModelType<any, any, any, any> {
|
|
99
|
+
}
|
|
100
|
+
/** @hidden */
|
|
101
|
+
export type ExtractProps<T extends IAnyModelType> = T extends IModelType<infer P, any, any, any> ? P : never;
|
|
102
|
+
/** @hidden */
|
|
103
|
+
export type ExtractOthers<T extends IAnyModelType> = T extends IModelType<any, infer O, any, any> ? O : never;
|
|
104
|
+
/**
|
|
105
|
+
* @internal
|
|
106
|
+
* @hidden
|
|
107
|
+
*/
|
|
108
|
+
export interface ModelTypeConfig {
|
|
109
|
+
name?: string;
|
|
110
|
+
properties?: ModelPropertiesDeclaration;
|
|
111
|
+
initializers?: ReadonlyArray<(instance: any) => any>;
|
|
112
|
+
preProcessor?: (snapshot: any) => any;
|
|
113
|
+
postProcessor?: (snapshot: any) => any;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* @internal
|
|
117
|
+
* @hidden
|
|
118
|
+
*/
|
|
119
|
+
export declare class ModelType<PROPS extends ModelProperties, OTHERS, CustomC, CustomS, MT extends IModelType<PROPS, OTHERS, CustomC, CustomS>> extends ComplexType<ModelCreationType2<PROPS, CustomC>, ModelSnapshotType2<PROPS, CustomS>, ModelInstanceType<PROPS, OTHERS>> implements IModelType<PROPS, OTHERS, CustomC, CustomS> {
|
|
120
|
+
readonly flags = TypeFlags.Object;
|
|
121
|
+
readonly initializers: ((instance: any) => any)[];
|
|
122
|
+
readonly properties: PROPS;
|
|
123
|
+
private preProcessor;
|
|
124
|
+
private postProcessor;
|
|
125
|
+
readonly propertyNames: string[];
|
|
126
|
+
constructor(opts: ModelTypeConfig);
|
|
127
|
+
private _getIdentifierAttribute;
|
|
128
|
+
cloneAndEnhance(opts: ModelTypeConfig): IAnyModelType;
|
|
129
|
+
actions<A extends ModelActions>(fn: (self: Instance<this>) => A): IAnyModelType;
|
|
130
|
+
private instantiateActions;
|
|
131
|
+
named: MT["named"];
|
|
132
|
+
props: MT["props"];
|
|
133
|
+
volatile<TP extends object>(fn: (self: Instance<this>) => TP): IAnyModelType;
|
|
134
|
+
private instantiateVolatileState;
|
|
135
|
+
extend<A extends ModelActions = {}, V extends object = {}, VS extends object = {}>(fn: (self: Instance<this>) => {
|
|
136
|
+
actions?: A;
|
|
137
|
+
views?: V;
|
|
138
|
+
state?: VS;
|
|
139
|
+
}): IAnyModelType;
|
|
140
|
+
views<V extends object>(fn: (self: Instance<this>) => V): IAnyModelType;
|
|
141
|
+
private instantiateViews;
|
|
142
|
+
preProcessSnapshot: MT["preProcessSnapshot"];
|
|
143
|
+
postProcessSnapshot: MT["postProcessSnapshot"];
|
|
144
|
+
instantiate(parent: AnyObjectNode | null, subpath: string, environment: any, initialValue: this["C"] | this["T"]): this["N"];
|
|
145
|
+
initializeChildNodes(objNode: this["N"], initialSnapshot?: any): IChildNodesMap;
|
|
146
|
+
createNewInstance(childNodes: IChildNodesMap): this["T"];
|
|
147
|
+
finalizeNewInstance(node: this["N"], instance: this["T"]): void;
|
|
148
|
+
private willChange;
|
|
149
|
+
private didChange;
|
|
150
|
+
getChildren(node: this["N"]): ReadonlyArray<AnyNode>;
|
|
151
|
+
getChildNode(node: this["N"], key: string): AnyNode;
|
|
152
|
+
getSnapshot(node: this["N"], applyPostProcess?: boolean): this["S"];
|
|
153
|
+
processInitialSnapshot(childNodes: IChildNodesMap): this["S"];
|
|
154
|
+
applyPatchLocally(node: this["N"], subpath: string, patch: IJsonPatch): void;
|
|
155
|
+
applySnapshot(node: this["N"], snapshot: this["C"]): void;
|
|
156
|
+
applySnapshotPreProcessor(snapshot: any): any;
|
|
157
|
+
applySnapshotPostProcessor(snapshot: any): any;
|
|
158
|
+
getChildType(propertyName: string): IAnyType;
|
|
159
|
+
isValidSnapshot(value: this["C"], context: IValidationContext): IValidationResult;
|
|
160
|
+
private forAllProps;
|
|
161
|
+
describe(): string;
|
|
162
|
+
getDefaultSnapshot(): this["C"];
|
|
163
|
+
removeChild(node: this["N"], subpath: string): void;
|
|
164
|
+
}
|
|
165
|
+
export declare function model<P extends ModelPropertiesDeclaration = {}>(name: string, properties?: P): IModelType<ModelPropertiesDeclarationToProperties<P>, {}>;
|
|
166
|
+
export declare function model<P extends ModelPropertiesDeclaration = {}>(properties?: P): IModelType<ModelPropertiesDeclarationToProperties<P>, {}>;
|
|
167
|
+
/** @hidden */
|
|
168
|
+
export type _CustomJoin<A, B> = A extends _NotCustomized ? B : A & B;
|
|
169
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>): IModelType<PA & PB, OA & OB, _CustomJoin<FCA, FCB>, _CustomJoin<FSA, FSB>>;
|
|
170
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>): IModelType<PA & PB, OA & OB, _CustomJoin<FCA, FCB>, _CustomJoin<FSA, FSB>>;
|
|
171
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>): IModelType<PA & PB & PC, OA & OB & OC, _CustomJoin<FCA, _CustomJoin<FCB, FCC>>, _CustomJoin<FSA, _CustomJoin<FSB, FSC>>>;
|
|
172
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>): IModelType<PA & PB & PC, OA & OB & OC, _CustomJoin<FCA, _CustomJoin<FCB, FCC>>, _CustomJoin<FSA, _CustomJoin<FSB, FSC>>>;
|
|
173
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>): IModelType<PA & PB & PC & PD, OA & OB & OC & OD, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, FCD>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, FSD>>>>;
|
|
174
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>): IModelType<PA & PB & PC & PD, OA & OB & OC & OD, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, FCD>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, FSD>>>>;
|
|
175
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>): IModelType<PA & PB & PC & PD & PE, OA & OB & OC & OD & OE, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, FCE>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, FSE>>>>>;
|
|
176
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>): IModelType<PA & PB & PC & PD & PE, OA & OB & OC & OD & OE, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, FCE>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, FSE>>>>>;
|
|
177
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>): IModelType<PA & PB & PC & PD & PE & PF, OA & OB & OC & OD & OE & OF, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, FCF>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, FSF>>>>>>;
|
|
178
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>): IModelType<PA & PB & PC & PD & PE & PF, OA & OB & OC & OD & OE & OF, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, FCF>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, FSF>>>>>>;
|
|
179
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>): IModelType<PA & PB & PC & PD & PE & PF & PG, OA & OB & OC & OD & OE & OF & OG, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, FCG>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, FSG>>>>>>>;
|
|
180
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>): IModelType<PA & PB & PC & PD & PE & PF & PG, OA & OB & OC & OD & OE & OF & OG, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, FCG>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, FSG>>>>>>>;
|
|
181
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG, PH extends ModelProperties, OH, FCH, FSH>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>, H: IModelType<PH, OH, FCH, FSH>): IModelType<PA & PB & PC & PD & PE & PF & PG & PH, OA & OB & OC & OD & OE & OF & OG & OH, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, _CustomJoin<FCG, FCH>>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, _CustomJoin<FSG, FSH>>>>>>>>;
|
|
182
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG, PH extends ModelProperties, OH, FCH, FSH>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>, H: IModelType<PH, OH, FCH, FSH>): IModelType<PA & PB & PC & PD & PE & PF & PG & PH, OA & OB & OC & OD & OE & OF & OG & OH, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, _CustomJoin<FCG, FCH>>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, _CustomJoin<FSG, FSH>>>>>>>>;
|
|
183
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG, PH extends ModelProperties, OH, FCH, FSH, PI extends ModelProperties, OI, FCI, FSI>(name: string, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>, H: IModelType<PH, OH, FCH, FSH>, I: IModelType<PI, OI, FCI, FSI>): IModelType<PA & PB & PC & PD & PE & PF & PG & PH & PI, OA & OB & OC & OD & OE & OF & OG & OH & OI, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, _CustomJoin<FCG, _CustomJoin<FCH, FCI>>>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, _CustomJoin<FSG, _CustomJoin<FSH, FSI>>>>>>>>>;
|
|
184
|
+
export declare function compose<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD, PE extends ModelProperties, OE, FCE, FSE, PF extends ModelProperties, OF, FCF, FSF, PG extends ModelProperties, OG, FCG, FSG, PH extends ModelProperties, OH, FCH, FSH, PI extends ModelProperties, OI, FCI, FSI>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>, E: IModelType<PE, OE, FCE, FSE>, F: IModelType<PF, OF, FCF, FSF>, G: IModelType<PG, OG, FCG, FSG>, H: IModelType<PH, OH, FCH, FSH>, I: IModelType<PI, OI, FCI, FSI>): IModelType<PA & PB & PC & PD & PE & PF & PG & PH & PI, OA & OB & OC & OD & OE & OF & OG & OH & OI, _CustomJoin<FCA, _CustomJoin<FCB, _CustomJoin<FCC, _CustomJoin<FCD, _CustomJoin<FCE, _CustomJoin<FCF, _CustomJoin<FCG, _CustomJoin<FCH, FCI>>>>>>>>, _CustomJoin<FSA, _CustomJoin<FSB, _CustomJoin<FSC, _CustomJoin<FSD, _CustomJoin<FSE, _CustomJoin<FSF, _CustomJoin<FSG, _CustomJoin<FSH, FSI>>>>>>>>>;
|
|
185
|
+
/**
|
|
186
|
+
* Returns if a given value represents a model type.
|
|
187
|
+
*
|
|
188
|
+
* @param type
|
|
189
|
+
* @returns
|
|
190
|
+
*/
|
|
191
|
+
export declare function isModelType<IT extends IAnyModelType = IAnyModelType>(type: IAnyType): type is IT;
|
|
192
|
+
export {};
|