@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,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.refinement = refinement;
|
|
4
|
+
exports.isRefinementType = isRefinementType;
|
|
5
|
+
const internal_ts_1 = require("../../internal.js");
|
|
6
|
+
const utils_ts_1 = require("../../utils.js");
|
|
7
|
+
class Refinement extends internal_ts_1.BaseType {
|
|
8
|
+
_subtype;
|
|
9
|
+
_predicate;
|
|
10
|
+
_message;
|
|
11
|
+
get flags() {
|
|
12
|
+
return this._subtype.flags | internal_ts_1.TypeFlags.Refinement;
|
|
13
|
+
}
|
|
14
|
+
constructor(name, _subtype, _predicate, _message) {
|
|
15
|
+
super(name);
|
|
16
|
+
this._subtype = _subtype;
|
|
17
|
+
this._predicate = _predicate;
|
|
18
|
+
this._message = _message;
|
|
19
|
+
}
|
|
20
|
+
describe() {
|
|
21
|
+
return this.name;
|
|
22
|
+
}
|
|
23
|
+
instantiate(parent, subpath, environment, initialValue) {
|
|
24
|
+
// create the child type
|
|
25
|
+
return this._subtype.instantiate(parent, subpath, environment, initialValue);
|
|
26
|
+
}
|
|
27
|
+
isAssignableFrom(type) {
|
|
28
|
+
return this._subtype.isAssignableFrom(type);
|
|
29
|
+
}
|
|
30
|
+
isValidSnapshot(value, context) {
|
|
31
|
+
const subtypeErrors = this._subtype.validate(value, context);
|
|
32
|
+
if (subtypeErrors.length > 0) {
|
|
33
|
+
return subtypeErrors;
|
|
34
|
+
}
|
|
35
|
+
const snapshot = (0, internal_ts_1.isStateTreeNode)(value)
|
|
36
|
+
? (0, internal_ts_1.getStateTreeNode)(value).snapshot
|
|
37
|
+
: value;
|
|
38
|
+
if (!this._predicate(snapshot)) {
|
|
39
|
+
return (0, internal_ts_1.typeCheckFailure)(context, value, this._message(value));
|
|
40
|
+
}
|
|
41
|
+
return (0, internal_ts_1.typeCheckSuccess)();
|
|
42
|
+
}
|
|
43
|
+
reconcile(current, newValue, parent, subpath) {
|
|
44
|
+
return this._subtype.reconcile(current, newValue, parent, subpath);
|
|
45
|
+
}
|
|
46
|
+
getSubTypes() {
|
|
47
|
+
return this._subtype;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* `types.refinement` - Creates a type that is more specific than the base type, e.g. `types.refinement(types.string, value => value.length > 5)` to create a type of strings that can only be longer then 5.
|
|
52
|
+
*
|
|
53
|
+
* @param name
|
|
54
|
+
* @param type
|
|
55
|
+
* @param predicate
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
function refinement(...args) {
|
|
59
|
+
const name = typeof args[0] === "string"
|
|
60
|
+
? args.shift()
|
|
61
|
+
: (0, internal_ts_1.isType)(args[0])
|
|
62
|
+
? args[0].name
|
|
63
|
+
: null;
|
|
64
|
+
const type = args[0];
|
|
65
|
+
const predicate = args[1];
|
|
66
|
+
const message = args[2]
|
|
67
|
+
? args[2]
|
|
68
|
+
: (_v) => "Value does not respect the refinement predicate";
|
|
69
|
+
// ensures all parameters are correct
|
|
70
|
+
(0, internal_ts_1.assertIsType)(type, [1, 2]);
|
|
71
|
+
(0, utils_ts_1.assertIsString)(name, 1);
|
|
72
|
+
(0, utils_ts_1.assertIsFunction)(predicate, [2, 3]);
|
|
73
|
+
(0, utils_ts_1.assertIsFunction)(message, [3, 4]);
|
|
74
|
+
return new Refinement(name, type, predicate, message);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns if a given value is a refinement type.
|
|
78
|
+
*
|
|
79
|
+
* @param type
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
function isRefinementType(type) {
|
|
83
|
+
return (type.flags & internal_ts_1.TypeFlags.Refinement) > 0;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=refinement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refinement.js","sourceRoot":"","sources":["../../../src/types/utility-types/refinement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type IAnyType, type IType } from "../../internal.ts";
|
|
2
|
+
export interface IResilientType<IT extends IAnyType, FT extends IAnyType> extends IType<IT["CreationType"] | FT["CreationType"], IT["SnapshotType"] | FT["SnapshotType"], IT["TypeWithoutSTN"] | FT["TypeWithoutSTN"]> {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* `types.resilient` - Wraps a type so that instantiation errors are caught
|
|
6
|
+
* and a fallback type is used instead. This is useful for loading data that
|
|
7
|
+
* may contain unknown or invalid subtrees (e.g., plugin types that are not
|
|
8
|
+
* installed) without crashing the entire state tree.
|
|
9
|
+
*
|
|
10
|
+
* The `createFallbackSnapshot` callback receives the caught error and the
|
|
11
|
+
* original snapshot, and must return a valid snapshot for the fallback type.
|
|
12
|
+
*
|
|
13
|
+
* @param type The type to wrap.
|
|
14
|
+
* @param fallbackType The fallback type to use when instantiation fails.
|
|
15
|
+
* @param createFallbackSnapshot Callback that produces a fallback snapshot from the error and original snapshot.
|
|
16
|
+
* @returns A resilient type.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resilient<IT extends IAnyType, FT extends IAnyType>(type: IT, fallbackType: FT, createFallbackSnapshot: (error: unknown, snapshot: any) => FT["CreationType"]): IResilientType<IT, FT>;
|
|
@@ -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,63 @@
|
|
|
1
|
+
import { type IAnyType, type Instance, type IType } from "../../internal.ts";
|
|
2
|
+
/** @hidden */
|
|
3
|
+
declare const $mstNotCustomized: unique symbol;
|
|
4
|
+
/** @hidden */
|
|
5
|
+
export interface _NotCustomized {
|
|
6
|
+
readonly [$mstNotCustomized]: undefined;
|
|
7
|
+
}
|
|
8
|
+
/** @hidden */
|
|
9
|
+
export type _CustomOrOther<Custom, Other> = Custom extends _NotCustomized ? Other : Custom;
|
|
10
|
+
/**
|
|
11
|
+
* A type that has its snapshots processed.
|
|
12
|
+
*/
|
|
13
|
+
export interface ISnapshotProcessor<IT extends IAnyType, CustomC, CustomS> extends IType<_CustomOrOther<CustomC, IT["CreationType"]>, _CustomOrOther<CustomS, IT["SnapshotType"]>, IT["TypeWithoutSTN"]> {
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Snapshot processors.
|
|
17
|
+
*/
|
|
18
|
+
export interface ISnapshotProcessors<IT extends IAnyType, CustomC, CustomS> {
|
|
19
|
+
/**
|
|
20
|
+
* Function that transforms an input snapshot.
|
|
21
|
+
*/
|
|
22
|
+
preProcessor?(snapshot: CustomC): IT["CreationType"];
|
|
23
|
+
/**
|
|
24
|
+
* Function that transforms an output snapshot.
|
|
25
|
+
* @param snapshot
|
|
26
|
+
*/
|
|
27
|
+
postProcessor?(snapshot: IT["SnapshotType"], node: Instance<IT>): CustomS;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* `types.snapshotProcessor` - Runs a pre/post snapshot processor before/after serializing a given type.
|
|
31
|
+
*
|
|
32
|
+
* Example:
|
|
33
|
+
* ```ts
|
|
34
|
+
* const Todo1 = types.model({ text: types.string })
|
|
35
|
+
* // in the backend the text type must be null when empty
|
|
36
|
+
* interface BackendTodo {
|
|
37
|
+
* text: string | null
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* const Todo2 = types.snapshotProcessor(Todo1, {
|
|
41
|
+
* // from snapshot to instance
|
|
42
|
+
* preProcessor(snapshot: BackendTodo) {
|
|
43
|
+
* return {
|
|
44
|
+
* text: sn.text || "";
|
|
45
|
+
* }
|
|
46
|
+
* },
|
|
47
|
+
*
|
|
48
|
+
* // from instance to snapshot
|
|
49
|
+
* postProcessor(snapshot, node): BackendTodo {
|
|
50
|
+
* return {
|
|
51
|
+
* text: !sn.text ? null : sn.text
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* })
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @param type Type to run the processors over.
|
|
58
|
+
* @param processors Processors to run.
|
|
59
|
+
* @param name Type name, or undefined to inherit the inner type one.
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
export declare function snapshotProcessor<IT extends IAnyType, CustomC = _NotCustomized, CustomS = _NotCustomized>(type: IT, processors: ISnapshotProcessors<IT, CustomC, CustomS>, name?: string): ISnapshotProcessor<IT, CustomC, CustomS>;
|
|
63
|
+
export {};
|
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshotProcessor.js","sourceRoot":"","sources":["../../../src/types/utility-types/snapshotProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type AnyObjectNode, BaseType, type IAnyType, type IModelType, type IType, type IValidationContext, type IValidationResult, type ModelCreationType2, type ModelInstanceType, type ModelProperties, type ModelSnapshotType2, TypeFlags, type _NotCustomized } from "../../internal.ts";
|
|
2
|
+
export type ITypeDispatcher = (snapshot: any) => IAnyType;
|
|
3
|
+
export interface UnionOptions {
|
|
4
|
+
eager?: boolean;
|
|
5
|
+
dispatcher?: ITypeDispatcher;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
* @hidden
|
|
10
|
+
*/
|
|
11
|
+
export declare class Union extends BaseType<any, any, any> {
|
|
12
|
+
private readonly _types;
|
|
13
|
+
private readonly _dispatcher?;
|
|
14
|
+
private readonly _eager;
|
|
15
|
+
get flags(): TypeFlags.Union;
|
|
16
|
+
constructor(name: string, _types: IAnyType[], options?: UnionOptions);
|
|
17
|
+
isAssignableFrom(type: IAnyType): boolean;
|
|
18
|
+
describe(): string;
|
|
19
|
+
instantiate(parent: AnyObjectNode | null, subpath: string, environment: any, initialValue: this["C"] | this["T"]): this["N"];
|
|
20
|
+
reconcile(current: this["N"], newValue: this["C"] | this["T"], parent: AnyObjectNode, subpath: string): this["N"];
|
|
21
|
+
private noMatchMessage;
|
|
22
|
+
determineType(value: this["C"] | this["T"], reconcileCurrentType: IAnyType | undefined): IAnyType | undefined;
|
|
23
|
+
private tryQuickMatch;
|
|
24
|
+
private tryMatchPrimitive;
|
|
25
|
+
private snapshotLooksLikeType;
|
|
26
|
+
isValidSnapshot(value: this["C"], context: IValidationContext): IValidationResult;
|
|
27
|
+
getSubTypes(): IAnyType[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Transform _NotCustomized | _NotCustomized... to _NotCustomized, _NotCustomized | A | B to A | B
|
|
31
|
+
* @hidden
|
|
32
|
+
*/
|
|
33
|
+
export type _CustomCSProcessor<T> = Exclude<T, _NotCustomized> extends never ? _NotCustomized : Exclude<T, _NotCustomized>;
|
|
34
|
+
/** @hidden */
|
|
35
|
+
export interface ITypeUnion<C, S, T> extends IType<_CustomCSProcessor<C>, _CustomCSProcessor<S>, T> {
|
|
36
|
+
}
|
|
37
|
+
export declare function union<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB>(A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB>>;
|
|
38
|
+
export declare function union<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB>(options: UnionOptions, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB>>;
|
|
39
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC>>;
|
|
40
|
+
export declare function union<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC>(options: UnionOptions, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC>>;
|
|
41
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD>>;
|
|
42
|
+
export declare function union<PA extends ModelProperties, OA, FCA, FSA, PB extends ModelProperties, OB, FCB, FSB, PC extends ModelProperties, OC, FCC, FSC, PD extends ModelProperties, OD, FCD, FSD>(options: UnionOptions, A: IModelType<PA, OA, FCA, FSA>, B: IModelType<PB, OB, FCB, FSB>, C: IModelType<PC, OC, FCC, FSC>, D: IModelType<PD, OD, FCD, FSD>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD>>;
|
|
43
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE>>;
|
|
44
|
+
export declare function union<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>(options: UnionOptions, 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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE>>;
|
|
45
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF>>;
|
|
46
|
+
export declare function union<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>(options: UnionOptions, 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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF>>;
|
|
47
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG>>;
|
|
48
|
+
export declare function union<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>(options: UnionOptions, 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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG>>;
|
|
49
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG> | ModelCreationType2<PH, FCH>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG> | ModelSnapshotType2<PH, FSH>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG> | ModelInstanceType<PH, OH>>;
|
|
50
|
+
export declare function union<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>(options: UnionOptions, 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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG> | ModelCreationType2<PH, FCH>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG> | ModelSnapshotType2<PH, FSH>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG> | ModelInstanceType<PH, OH>>;
|
|
51
|
+
export declare function union<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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG> | ModelCreationType2<PH, FCH> | ModelCreationType2<PI, FCI>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG> | ModelSnapshotType2<PH, FSH> | ModelSnapshotType2<PI, FSI>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG> | ModelInstanceType<PH, OH> | ModelInstanceType<PI, OI>>;
|
|
52
|
+
export declare function union<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>(options: UnionOptions, 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>): ITypeUnion<ModelCreationType2<PA, FCA> | ModelCreationType2<PB, FCB> | ModelCreationType2<PC, FCC> | ModelCreationType2<PD, FCD> | ModelCreationType2<PE, FCE> | ModelCreationType2<PF, FCF> | ModelCreationType2<PG, FCG> | ModelCreationType2<PH, FCH> | ModelCreationType2<PI, FCI>, ModelSnapshotType2<PA, FSA> | ModelSnapshotType2<PB, FSB> | ModelSnapshotType2<PC, FSC> | ModelSnapshotType2<PD, FSD> | ModelSnapshotType2<PE, FSE> | ModelSnapshotType2<PF, FSF> | ModelSnapshotType2<PG, FSG> | ModelSnapshotType2<PH, FSH> | ModelSnapshotType2<PI, FSI>, ModelInstanceType<PA, OA> | ModelInstanceType<PB, OB> | ModelInstanceType<PC, OC> | ModelInstanceType<PD, OD> | ModelInstanceType<PE, OE> | ModelInstanceType<PF, OF> | ModelInstanceType<PG, OG> | ModelInstanceType<PH, OH> | ModelInstanceType<PI, OI>>;
|
|
53
|
+
export declare function union<CA, SA, TA, CB, SB, TB>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>): ITypeUnion<CA | CB, SA | SB, TA | TB>;
|
|
54
|
+
export declare function union<CA, SA, TA, CB, SB, TB>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>): ITypeUnion<CA | CB, SA | SB, TA | TB>;
|
|
55
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>): ITypeUnion<CA | CB | CC, SA | SB | SC, TA | TB | TC>;
|
|
56
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>): ITypeUnion<CA | CB | CC, SA | SB | SC, TA | TB | TC>;
|
|
57
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>): ITypeUnion<CA | CB | CC | CD, SA | SB | SC | SD, TA | TB | TC | TD>;
|
|
58
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>): ITypeUnion<CA | CB | CC | CD, SA | SB | SC | SD, TA | TB | TC | TD>;
|
|
59
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>): ITypeUnion<CA | CB | CC | CD | CE, SA | SB | SC | SD | SE, TA | TB | TC | TD | TE>;
|
|
60
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>): ITypeUnion<CA | CB | CC | CD | CE, SA | SB | SC | SD | SE, TA | TB | TC | TD | TE>;
|
|
61
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>): ITypeUnion<CA | CB | CC | CD | CE | CF, SA | SB | SC | SD | SE | SF, TA | TB | TC | TD | TE | TF>;
|
|
62
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>): ITypeUnion<CA | CB | CC | CD | CE | CF, SA | SB | SC | SD | SE | SF, TA | TB | TC | TD | TE | TF>;
|
|
63
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG, SA | SB | SC | SD | SE | SF | SG, TA | TB | TC | TD | TE | TF | TG>;
|
|
64
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG, SA | SB | SC | SD | SE | SF | SG, TA | TB | TC | TD | TE | TF | TG>;
|
|
65
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG, CH, SH, TH>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>, H: IType<CH, SH, TH>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG | CH, SA | SB | SC | SD | SE | SF | SG | SH, TA | TB | TC | TD | TE | TF | TG | TH>;
|
|
66
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG, CH, SH, TH>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>, H: IType<CH, SH, TH>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG | CH, SA | SB | SC | SD | SE | SF | SG | SH, TA | TB | TC | TD | TE | TF | TG | TH>;
|
|
67
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG, CH, SH, TH, CI, SI, TI>(A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>, H: IType<CH, SH, TH>, I: IType<CI, SI, TI>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG | CH | CI, SA | SB | SC | SD | SE | SF | SG | SH | SI, TA | TB | TC | TD | TE | TF | TG | TH | TI>;
|
|
68
|
+
export declare function union<CA, SA, TA, CB, SB, TB, CC, SC, TC, CD, SD, TD, CE, SE, TE, CF, SF, TF, CG, SG, TG, CH, SH, TH, CI, SI, TI>(options: UnionOptions, A: IType<CA, SA, TA>, B: IType<CB, SB, TB>, C: IType<CC, SC, TC>, D: IType<CD, SD, TD>, E: IType<CE, SE, TE>, F: IType<CF, SF, TF>, G: IType<CG, SG, TG>, H: IType<CH, SH, TH>, I: IType<CI, SI, TI>): ITypeUnion<CA | CB | CC | CD | CE | CF | CG | CH | CI, SA | SB | SC | SD | SE | SF | SG | SH | SI, TA | TB | TC | TD | TE | TF | TG | TH | TI>;
|
|
69
|
+
export declare function union(...types: IAnyType[]): IAnyType;
|
|
70
|
+
export declare function union(dispatchOrType: UnionOptions | IAnyType, ...otherTypes: IAnyType[]): IAnyType;
|
|
71
|
+
/**
|
|
72
|
+
* Returns if a given value represents a union type.
|
|
73
|
+
*
|
|
74
|
+
* @param type
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
export declare function isUnionType<IT extends IAnyType>(type: IT): type is IT;
|