@jbrowse/mobx-state-tree 5.6.3 → 5.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/core/action.d.ts +87 -0
  2. package/dist/core/action.js +228 -0
  3. package/dist/core/action.js.map +1 -0
  4. package/dist/core/actionContext.d.ts +27 -0
  5. package/dist/core/actionContext.js +42 -0
  6. package/dist/core/actionContext.js.map +1 -0
  7. package/dist/core/flow.d.ts +69 -0
  8. package/dist/core/flow.js +180 -0
  9. package/dist/core/flow.js.map +1 -0
  10. package/dist/core/json-patch.d.ts +46 -0
  11. package/dist/core/json-patch.js +133 -0
  12. package/dist/core/json-patch.js.map +1 -0
  13. package/dist/core/mst-operations.d.ts +459 -0
  14. package/dist/core/mst-operations.js +885 -0
  15. package/dist/core/mst-operations.js.map +1 -0
  16. package/dist/core/node/BaseNode.d.ts +62 -0
  17. package/dist/core/node/BaseNode.js +152 -0
  18. package/dist/core/node/BaseNode.js.map +1 -0
  19. package/dist/core/node/Hook.d.ts +17 -0
  20. package/dist/core/node/Hook.js +15 -0
  21. package/dist/core/node/Hook.js.map +1 -0
  22. package/dist/core/node/create-node.d.ts +16 -0
  23. package/dist/core/node/create-node.js +41 -0
  24. package/dist/core/node/create-node.js.map +1 -0
  25. package/dist/core/node/identifier-cache.d.ts +19 -0
  26. package/dist/core/node/identifier-cache.js +115 -0
  27. package/dist/core/node/identifier-cache.js.map +1 -0
  28. package/dist/core/node/livelinessChecking.d.ts +37 -0
  29. package/dist/core/node/livelinessChecking.js +38 -0
  30. package/dist/core/node/livelinessChecking.js.map +1 -0
  31. package/dist/core/node/node-utils.d.ts +83 -0
  32. package/dist/core/node/node-utils.js +165 -0
  33. package/dist/core/node/node-utils.js.map +1 -0
  34. package/dist/core/node/object-node.d.ts +99 -0
  35. package/dist/core/node/object-node.js +545 -0
  36. package/dist/core/node/object-node.js.map +1 -0
  37. package/dist/core/node/scalar-node.d.ts +19 -0
  38. package/dist/core/node/scalar-node.js +89 -0
  39. package/dist/core/node/scalar-node.js.map +1 -0
  40. package/dist/core/process.d.ts +50 -0
  41. package/dist/core/process.js +39 -0
  42. package/dist/core/process.js.map +1 -0
  43. package/dist/core/type/type-checker.d.ts +69 -0
  44. package/dist/core/type/type-checker.js +154 -0
  45. package/dist/core/type/type-checker.js.map +1 -0
  46. package/dist/core/type/type.d.ts +317 -0
  47. package/dist/core/type/type.js +251 -0
  48. package/dist/core/type/type.js.map +1 -0
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.js +85 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/internal.d.ts +39 -0
  53. package/dist/internal.js +60 -0
  54. package/dist/internal.js.map +1 -0
  55. package/dist/middlewares/create-action-tracking-middleware.d.ts +24 -0
  56. package/dist/middlewares/create-action-tracking-middleware.js +81 -0
  57. package/dist/middlewares/create-action-tracking-middleware.js.map +1 -0
  58. package/dist/middlewares/createActionTrackingMiddleware2.d.ts +34 -0
  59. package/dist/middlewares/createActionTrackingMiddleware2.js +133 -0
  60. package/dist/middlewares/createActionTrackingMiddleware2.js.map +1 -0
  61. package/dist/middlewares/on-action.d.ts +87 -0
  62. package/dist/middlewares/on-action.js +215 -0
  63. package/dist/middlewares/on-action.js.map +1 -0
  64. package/dist/mobx-state-tree.js +85 -0
  65. package/dist/mobx-state-tree.module.js +83 -0
  66. package/dist/types/complex-types/array.d.ts +80 -0
  67. package/dist/types/complex-types/array.js +352 -0
  68. package/dist/types/complex-types/array.js.map +1 -0
  69. package/dist/types/complex-types/map.d.ts +110 -0
  70. package/dist/types/complex-types/map.js +361 -0
  71. package/dist/types/complex-types/map.js.map +1 -0
  72. package/dist/types/complex-types/model.d.ts +192 -0
  73. package/dist/types/complex-types/model.js +477 -0
  74. package/dist/types/complex-types/model.js.map +1 -0
  75. package/dist/types/index.d.ts +33 -0
  76. package/dist/types/index.js +38 -0
  77. package/dist/types/index.js.map +1 -0
  78. package/dist/types/primitives.d.ts +124 -0
  79. package/dist/types/primitives.js +182 -0
  80. package/dist/types/primitives.js.map +1 -0
  81. package/dist/types/utility-types/custom.d.ts +74 -0
  82. package/dist/types/utility-types/custom.js +110 -0
  83. package/dist/types/utility-types/custom.js.map +1 -0
  84. package/dist/types/utility-types/enumeration.d.ts +5 -0
  85. package/dist/types/utility-types/enumeration.js +34 -0
  86. package/dist/types/utility-types/enumeration.js.map +1 -0
  87. package/dist/types/utility-types/frozen.d.ts +23 -0
  88. package/dist/types/utility-types/frozen.js +97 -0
  89. package/dist/types/utility-types/frozen.js.map +1 -0
  90. package/dist/types/utility-types/identifier.d.ts +86 -0
  91. package/dist/types/utility-types/identifier.js +129 -0
  92. package/dist/types/utility-types/identifier.js.map +1 -0
  93. package/dist/types/utility-types/late.d.ts +10 -0
  94. package/dist/types/utility-types/late.js +109 -0
  95. package/dist/types/utility-types/late.js.map +1 -0
  96. package/dist/types/utility-types/lazy.d.ts +22 -0
  97. package/dist/types/utility-types/lazy.js +76 -0
  98. package/dist/types/utility-types/lazy.js.map +1 -0
  99. package/dist/types/utility-types/literal.d.ts +37 -0
  100. package/dist/types/utility-types/literal.js +63 -0
  101. package/dist/types/utility-types/literal.js.map +1 -0
  102. package/dist/types/utility-types/maybe.d.ts +26 -0
  103. package/dist/types/utility-types/maybe.js +30 -0
  104. package/dist/types/utility-types/maybe.js.map +1 -0
  105. package/dist/types/utility-types/optional.d.ts +41 -0
  106. package/dist/types/utility-types/optional.js +140 -0
  107. package/dist/types/utility-types/optional.js.map +1 -0
  108. package/dist/types/utility-types/reference.d.ts +89 -0
  109. package/dist/types/utility-types/reference.js +392 -0
  110. package/dist/types/utility-types/reference.js.map +1 -0
  111. package/dist/types/utility-types/refinement.d.ts +10 -0
  112. package/dist/types/utility-types/refinement.js +85 -0
  113. package/dist/types/utility-types/refinement.js.map +1 -0
  114. package/dist/types/utility-types/resilient.d.ts +18 -0
  115. package/dist/types/utility-types/resilient.js +120 -0
  116. package/dist/types/utility-types/resilient.js.map +1 -0
  117. package/dist/types/utility-types/snapshotProcessor.d.ts +63 -0
  118. package/dist/types/utility-types/snapshotProcessor.js +161 -0
  119. package/dist/types/utility-types/snapshotProcessor.js.map +1 -0
  120. package/dist/types/utility-types/union.d.ts +77 -0
  121. package/dist/types/utility-types/union.js +245 -0
  122. package/dist/types/utility-types/union.js.map +1 -0
  123. package/dist/utils.d.ts +230 -0
  124. package/dist/utils.js +483 -0
  125. package/dist/utils.js.map +1 -0
  126. package/package.json +1 -1
@@ -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":";;AAuNA,8BAQC;AA/ND,mDAa0B;AAE1B,MAAM,SAAoD,SAAQ,sBAKjE;IAMoB;IACA;IACA;IAPnB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED,YACmB,QAAY,EACZ,aAAiB,EACjB,uBAGM;QAEvB,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA;QAPnB,aAAQ,GAAR,QAAQ,CAAI;QACZ,kBAAa,GAAb,aAAa,CAAI;QACjB,4BAAuB,GAAvB,uBAAuB,CAGjB;IAGzB,CAAC;IAED,QAAQ;QACN,OAAO,aAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;IACjD,CAAC;IAEO,oBAAoB,CAC1B,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,gBAAqB,EACrB,aAAsB;QAEtB,IAAI,gBAAoC,CAAA;QACxC,IAAI,CAAC;YACH,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAC7C,aAAa,EACb,gBAAgB,CACjB,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAA,kBAAI,EACR,qEAAqE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,aAAa,mCAAmC,CAAC,EAAE,CACjJ,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CACnC,MAAM,EACN,OAAO,EACP,WAAW,EACX,gBAAgB,CACJ,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAA,kBAAI,EACR,6BAA6B,IAAI,CAAC,aAAa,CAAC,IAAI,qDAAqD,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,aAAa,qBAAqB,CAAC,EAAE,CACvK,CAAA;QACH,CAAC;IACH,CAAC;IAED,WAAW,CACT,MAA4B,EAC5B,OAAe,EACf,WAAgB,EAChB,YAAmC;QAEnC,IAAI,IAAA,6BAAe,EAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,CACA,CAAA;QAChB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,CACA,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,oBAAoB,CAC9B,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,EACZ,CAAC,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,SAAS,CACP,OAAkB,EAClB,QAA+B,EAC/B,MAAqB,EACrB,OAAe;QAEf,IAAI,IAAA,6BAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,CACK,CAAA;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,CACI,CAAA;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CACjC,OAAO,EACP,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,QAAQ,CAAC,EACzC,MAAM,EACN,OAAO,CACK,CAAA;YAChB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,CACK,CAAA;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED,eAAe,CACb,MAAiB,EACjB,QAA4B;QAE5B,OAAO,IAAA,8BAAgB,GAAE,CAAA;IAC3B,CAAC;IAED,EAAE,CAAC,KAAU;QACX,IAAI,IAAA,oBAAM,EAAC,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC3C,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,iDAAiD;QACnD,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAc;QAC7B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAC1C,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,IAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF;AAWD;;;;;;;;;;;;;GAaG;AACH,SAAgB,SAAS,CACvB,IAAQ,EACR,YAAgB,EAChB,sBAA6E;IAE7E,IAAA,0BAAY,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACrB,IAAA,0BAAY,EAAC,YAAY,EAAE,CAAC,CAAC,CAAA;IAC7B,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAA;AAClE,CAAC"}
@@ -0,0 +1,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;