mobx-keystone 0.69.2 → 0.69.3
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/CHANGELOG.md +4 -0
- package/dist/mobx-keystone.esm.mjs +1 -1
- package/dist/mobx-keystone.umd.js +1 -1
- package/dist/types/dataModel/BaseDataModel.d.ts +3 -3
- package/dist/types/dataModel/DataModel.d.ts +3 -3
- package/dist/types/model/BaseModel.d.ts +2 -2
- package/dist/types/model/Model.d.ts +2 -2
- package/dist/types/modelShared/BaseModelShared.d.ts +9 -9
- package/dist/types/modelShared/prop.d.ts +2 -2
- package/dist/types/types/objectBased/typesDataModelData.d.ts +2 -2
- package/package.json +3 -3
- package/src/dataModel/BaseDataModel.ts +7 -5
- package/src/dataModel/DataModel.ts +5 -5
- package/src/dataModel/newDataModel.ts +2 -2
- package/src/model/BaseModel.ts +2 -2
- package/src/model/Model.ts +2 -2
- package/src/model/newModel.ts +2 -2
- package/src/modelShared/BaseModelShared.ts +10 -11
- package/src/modelShared/prop.ts +2 -2
- package/src/types/objectBased/typesDataModelData.ts +11 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { propsTypeSymbol } from "../modelShared/BaseModelShared";
|
|
2
|
-
import { ModelProps,
|
|
2
|
+
import { ModelProps, ModelPropsToTransformedCreationData, ModelPropsToUntransformedCreationData, ModelPropsToUntransformedData } from "../modelShared/prop";
|
|
3
3
|
import type { TypeCheckError } from "../types/TypeCheckError";
|
|
4
4
|
/**
|
|
5
5
|
* Base abstract class for data models. Use `DataModel` instead when extending.
|
|
@@ -19,7 +19,7 @@ export declare abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
19
19
|
* Use it if one of the data properties matches one of the model properties/functions.
|
|
20
20
|
* This also allows access to the backed values of transformed properties.
|
|
21
21
|
*/
|
|
22
|
-
readonly $:
|
|
22
|
+
readonly $: ModelPropsToUntransformedData<TProps>;
|
|
23
23
|
/**
|
|
24
24
|
* Performs a type check over the model instance.
|
|
25
25
|
* For this to work a data type has to be declared as part of the model properties.
|
|
@@ -30,7 +30,7 @@ export declare abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
30
30
|
/**
|
|
31
31
|
* Creates an instance of a data model.
|
|
32
32
|
*/
|
|
33
|
-
constructor(data:
|
|
33
|
+
constructor(data: ModelPropsToUntransformedCreationData<TProps> | ModelPropsToTransformedCreationData<TProps>);
|
|
34
34
|
toString(options?: {
|
|
35
35
|
withData?: boolean;
|
|
36
36
|
}): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AbstractModelClass, ModelCreationData,
|
|
2
|
-
import type { ModelProps,
|
|
1
|
+
import type { AbstractModelClass, ModelCreationData, ModelUntransformedCreationData } from "../modelShared/BaseModelShared";
|
|
2
|
+
import type { ModelProps, ModelPropsToSetter, ModelPropsToTransformedCreationData, ModelPropsToTransformedData, ModelPropsToUntransformedCreationData } from "../modelShared/prop";
|
|
3
3
|
import type { AnyDataModel, BaseDataModel, BaseDataModelKeys } from "./BaseDataModel";
|
|
4
|
-
export declare type _ComposedData<SuperModel, TProps extends ModelProps> = SuperModel extends AnyDataModel ? (
|
|
4
|
+
export declare type _ComposedData<SuperModel, TProps extends ModelProps> = SuperModel extends AnyDataModel ? (ModelPropsToUntransformedCreationData<TProps> & ModelUntransformedCreationData<SuperModel>) | (ModelPropsToTransformedCreationData<TProps> & ModelCreationData<SuperModel>) : ModelPropsToUntransformedCreationData<TProps> | ModelPropsToTransformedCreationData<TProps>;
|
|
5
5
|
export interface _DataModel<SuperModel, TProps extends ModelProps> {
|
|
6
6
|
new (data: _ComposedData<SuperModel, TProps>): SuperModel & BaseDataModel<TProps> & Omit<ModelPropsToTransformedData<TProps>, BaseDataModelKeys> & ModelPropsToSetter<TProps>;
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromSnapshotOverrideTypeSymbol, ModelClass, propsTypeSymbol, toSnapshotOverrideTypeSymbol } from "../modelShared/BaseModelShared";
|
|
2
|
-
import type { ModelProps,
|
|
2
|
+
import type { ModelProps, ModelPropsToTransformedCreationData, ModelPropsToUntransformedData } from "../modelShared/prop";
|
|
3
3
|
import type { SnapshotInOfModel, SnapshotOutOfModel } from "../snapshot/SnapshotOf";
|
|
4
4
|
import type { TypeCheckError } from "../types/TypeCheckError";
|
|
5
5
|
import { modelIdKey, modelTypeKey } from "./metadata";
|
|
@@ -44,7 +44,7 @@ export declare abstract class BaseModel<TProps extends ModelProps, FromSnapshotO
|
|
|
44
44
|
* Data part of the model, which is observable and will be serialized in snapshots.
|
|
45
45
|
* Use it if one of the data properties matches one of the model properties/functions.
|
|
46
46
|
*/
|
|
47
|
-
readonly $:
|
|
47
|
+
readonly $: ModelPropsToUntransformedData<TProps>;
|
|
48
48
|
/**
|
|
49
49
|
* Optional hook that will run once this model instance is attached to the tree of a model marked as
|
|
50
50
|
* root store via `registerRootStore`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AbstractModelClass,
|
|
1
|
+
import type { AbstractModelClass, ModelCreationData } from "../modelShared/BaseModelShared";
|
|
2
2
|
import type { ModelProps, ModelPropsToSetter, ModelPropsToSnapshotCreationData, ModelPropsToSnapshotData, ModelPropsToTransformedCreationData, ModelPropsToTransformedData } from "../modelShared/prop";
|
|
3
3
|
import type { AnyModel, BaseModel, BaseModelKeys, ModelIdPropertyName } from "./BaseModel";
|
|
4
|
-
export declare type _ComposedCreationData<SuperModel, TProps extends ModelProps> = SuperModel extends AnyModel ? ModelPropsToTransformedCreationData<TProps> &
|
|
4
|
+
export declare type _ComposedCreationData<SuperModel, TProps extends ModelProps> = SuperModel extends AnyModel ? ModelPropsToTransformedCreationData<TProps> & ModelCreationData<SuperModel> : ModelPropsToTransformedCreationData<TProps>;
|
|
5
5
|
/**
|
|
6
6
|
* The default type used by fromSnapshot before processors are applied.
|
|
7
7
|
*/
|
|
@@ -2,7 +2,7 @@ import type { AnyDataModel } from "../dataModel/BaseDataModel";
|
|
|
2
2
|
import type { AnyModel } from "../model/BaseModel";
|
|
3
3
|
import type { modelTypeKey } from "../model/metadata";
|
|
4
4
|
import type { Flatten, IsNeverType } from "../utils/types";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ModelPropsToSnapshotCreationData, ModelPropsToSnapshotData, ModelPropsToTransformedCreationData, ModelPropsToTransformedData, ModelPropsToUntransformedCreationData } from "./prop";
|
|
6
6
|
/**
|
|
7
7
|
* @ignore
|
|
8
8
|
*/
|
|
@@ -32,21 +32,21 @@ export declare type AbstractModelClass<M extends AnyModel | AnyDataModel> = abst
|
|
|
32
32
|
*/
|
|
33
33
|
export declare type ModelPropsOf<M extends AnyModel | AnyDataModel> = M[typeof propsTypeSymbol];
|
|
34
34
|
/**
|
|
35
|
-
* The data type of a model.
|
|
35
|
+
* The data type of a model, without transformations applied.
|
|
36
36
|
*/
|
|
37
|
-
export declare type
|
|
37
|
+
export declare type ModelUntransformedData<M extends AnyModel | AnyDataModel> = Flatten<M["$"]>;
|
|
38
38
|
/**
|
|
39
|
-
* The creation data type of a model.
|
|
39
|
+
* The creation data type of a model, without transformations applied.
|
|
40
40
|
*/
|
|
41
|
-
export declare type
|
|
41
|
+
export declare type ModelUntransformedCreationData<M extends AnyModel | AnyDataModel> = ModelPropsToUntransformedCreationData<ModelPropsOf<M>>;
|
|
42
42
|
/**
|
|
43
|
-
* The
|
|
43
|
+
* The data type of a model, with transformations applied.
|
|
44
44
|
*/
|
|
45
|
-
export declare type
|
|
45
|
+
export declare type ModelData<M extends AnyModel | AnyDataModel> = ModelPropsToTransformedData<ModelPropsOf<M>>;
|
|
46
46
|
/**
|
|
47
|
-
* The
|
|
47
|
+
* The creation data type of a model, with transformations applied.
|
|
48
48
|
*/
|
|
49
|
-
export declare type
|
|
49
|
+
export declare type ModelCreationData<M extends AnyModel | AnyDataModel> = ModelPropsToTransformedCreationData<ModelPropsOf<M>>;
|
|
50
50
|
/**
|
|
51
51
|
* The from snapshot type of a model.
|
|
52
52
|
*
|
|
@@ -84,13 +84,13 @@ export interface ModelProps {
|
|
|
84
84
|
export declare type RequiredModelProps<MP extends ModelProps> = {
|
|
85
85
|
[K in keyof MP]: MP[K]["_internal"]["$isRequired"] & K;
|
|
86
86
|
}[keyof MP];
|
|
87
|
-
export declare type
|
|
87
|
+
export declare type ModelPropsToUntransformedData<MP extends ModelProps> = Flatten<{
|
|
88
88
|
[k in keyof MP]: MP[k]["_internal"]["$valueType"];
|
|
89
89
|
}>;
|
|
90
90
|
export declare type ModelPropsToSnapshotData<MP extends ModelProps> = Flatten<{
|
|
91
91
|
[k in keyof MP]: ModelPropToSnapshot<MP[k]> extends infer R ? R : never;
|
|
92
92
|
}>;
|
|
93
|
-
export declare type
|
|
93
|
+
export declare type ModelPropsToUntransformedCreationData<MP extends ModelProps> = {
|
|
94
94
|
[k in keyof MP]?: MP[k]["_internal"]["$creationValueType"];
|
|
95
95
|
} & {
|
|
96
96
|
[k in RequiredModelProps<MP>]: MP[k]["_internal"]["$creationValueType"];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AnyDataModel } from "../../dataModel/BaseDataModel";
|
|
2
|
-
import type { ModelClass, ModelData } from "../../modelShared/BaseModelShared";
|
|
2
|
+
import type { ModelClass, ModelData, ModelUntransformedData } from "../../modelShared/BaseModelShared";
|
|
3
3
|
import type { AnyStandardType, IdentityType } from "../schemas";
|
|
4
4
|
import { TypeInfo } from "../TypeChecker";
|
|
5
5
|
declare type _Class<T> = abstract new (...args: any[]) => T;
|
|
@@ -19,7 +19,7 @@ declare type _ClassOrObject<M, K> = K extends M ? object : _Class<K> | (() => _C
|
|
|
19
19
|
* @param modelClass Model class.
|
|
20
20
|
* @returns
|
|
21
21
|
*/
|
|
22
|
-
export declare function typesDataModelData<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<ModelData<K extends M ? (M extends AnyDataModel ? M : never) : K extends AnyDataModel ? K : never>>;
|
|
22
|
+
export declare function typesDataModelData<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<ModelUntransformedData<K extends M ? (M extends AnyDataModel ? M : never) : K extends AnyDataModel ? K : never> | ModelData<K extends M ? (M extends AnyDataModel ? M : never) : K extends AnyDataModel ? K : never>>;
|
|
23
23
|
/**
|
|
24
24
|
* `types.dataModelData` type info for a model props.
|
|
25
25
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobx-keystone",
|
|
3
|
-
"version": "0.69.
|
|
3
|
+
"version": "0.69.3",
|
|
4
4
|
"description": "A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mobx",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@babel/plugin-proposal-decorators": "^7.18.6",
|
|
71
71
|
"@babel/preset-env": "^7.18.6",
|
|
72
72
|
"@babel/preset-typescript": "^7.18.6",
|
|
73
|
-
"@swc/core": "^1.2.
|
|
73
|
+
"@swc/core": "^1.2.212",
|
|
74
74
|
"@swc/jest": "^0.2.21",
|
|
75
75
|
"@types/jest": "^28.1.4",
|
|
76
76
|
"@types/node": "^18.0.3",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"spec.ts": "^1.1.3",
|
|
85
85
|
"ts-jest": "^28.0.5",
|
|
86
86
|
"ts-node": "^10.8.2",
|
|
87
|
-
"typedoc": "^0.23.
|
|
87
|
+
"typedoc": "^0.23.7",
|
|
88
88
|
"typescript": "^4.7.4",
|
|
89
89
|
"vite": "^2.9.14"
|
|
90
90
|
},
|
|
@@ -3,9 +3,9 @@ import { modelInfoByClass } from "../modelShared/modelInfo"
|
|
|
3
3
|
import { getInternalModelClassPropsInfo } from "../modelShared/modelPropsInfo"
|
|
4
4
|
import {
|
|
5
5
|
ModelProps,
|
|
6
|
-
ModelPropsToCreationData,
|
|
7
|
-
ModelPropsToData,
|
|
8
6
|
ModelPropsToTransformedCreationData,
|
|
7
|
+
ModelPropsToUntransformedCreationData,
|
|
8
|
+
ModelPropsToUntransformedData,
|
|
9
9
|
noDefaultValue,
|
|
10
10
|
} from "../modelShared/prop"
|
|
11
11
|
import { getSnapshot } from "../snapshot/getSnapshot"
|
|
@@ -42,7 +42,7 @@ export abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
42
42
|
* Use it if one of the data properties matches one of the model properties/functions.
|
|
43
43
|
* This also allows access to the backed values of transformed properties.
|
|
44
44
|
*/
|
|
45
|
-
readonly $!:
|
|
45
|
+
readonly $!: ModelPropsToUntransformedData<TProps>
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* Performs a type check over the model instance.
|
|
@@ -59,7 +59,9 @@ export abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
59
59
|
* Creates an instance of a data model.
|
|
60
60
|
*/
|
|
61
61
|
constructor(
|
|
62
|
-
data:
|
|
62
|
+
data:
|
|
63
|
+
| ModelPropsToUntransformedCreationData<TProps>
|
|
64
|
+
| ModelPropsToTransformedCreationData<TProps>
|
|
63
65
|
) {
|
|
64
66
|
if (!isObject(data)) {
|
|
65
67
|
throw failure("data models can only work over data objects")
|
|
@@ -68,7 +70,7 @@ export abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
68
70
|
const { modelClass: _modelClass }: DataModelConstructorOptions = arguments[1] as any
|
|
69
71
|
const modelClass = _modelClass!
|
|
70
72
|
|
|
71
|
-
type Data =
|
|
73
|
+
type Data = ModelPropsToUntransformedData<TProps>
|
|
72
74
|
let tweakedData: Data
|
|
73
75
|
if (isTreeNode(data)) {
|
|
74
76
|
// in theory already initialized
|
|
@@ -2,14 +2,14 @@ import type {
|
|
|
2
2
|
AbstractModelClass,
|
|
3
3
|
ModelClass,
|
|
4
4
|
ModelCreationData,
|
|
5
|
-
|
|
5
|
+
ModelUntransformedCreationData,
|
|
6
6
|
} from "../modelShared/BaseModelShared"
|
|
7
7
|
import type {
|
|
8
8
|
ModelProps,
|
|
9
|
-
ModelPropsToCreationData,
|
|
10
9
|
ModelPropsToSetter,
|
|
11
10
|
ModelPropsToTransformedCreationData,
|
|
12
11
|
ModelPropsToTransformedData,
|
|
12
|
+
ModelPropsToUntransformedCreationData,
|
|
13
13
|
} from "../modelShared/prop"
|
|
14
14
|
import { sharedInternalModel } from "../modelShared/sharedInternalModel"
|
|
15
15
|
import type { AnyDataModel, BaseDataModel, BaseDataModelKeys } from "./BaseDataModel"
|
|
@@ -17,9 +17,9 @@ import { assertIsDataModelClass, isDataModelClass } from "./utils"
|
|
|
17
17
|
|
|
18
18
|
export type _ComposedData<SuperModel, TProps extends ModelProps> = SuperModel extends AnyDataModel
|
|
19
19
|
?
|
|
20
|
-
| (
|
|
21
|
-
| (ModelPropsToTransformedCreationData<TProps> &
|
|
22
|
-
:
|
|
20
|
+
| (ModelPropsToUntransformedCreationData<TProps> & ModelUntransformedCreationData<SuperModel>)
|
|
21
|
+
| (ModelPropsToTransformedCreationData<TProps> & ModelCreationData<SuperModel>)
|
|
22
|
+
: ModelPropsToUntransformedCreationData<TProps> | ModelPropsToTransformedCreationData<TProps>
|
|
23
23
|
|
|
24
24
|
export interface _DataModel<SuperModel, TProps extends ModelProps> {
|
|
25
25
|
new (data: _ComposedData<SuperModel, TProps>): SuperModel &
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { action } from "mobx"
|
|
2
2
|
import type { O } from "ts-toolbelt"
|
|
3
3
|
import { isModelAutoTypeCheckingEnabled } from "../globalConfig/globalConfig"
|
|
4
|
-
import type {
|
|
4
|
+
import type { ModelUntransformedData } from "../modelShared/BaseModelShared"
|
|
5
5
|
import { modelInfoByClass } from "../modelShared/modelInfo"
|
|
6
6
|
import { applyModelInitializers } from "../modelShared/newModel"
|
|
7
7
|
import { failure, inDevMode, makePropReadonly } from "../utils"
|
|
@@ -17,7 +17,7 @@ export const internalNewDataModel = action(
|
|
|
17
17
|
"newModel",
|
|
18
18
|
<M extends AnyDataModel>(
|
|
19
19
|
origModelObj: M,
|
|
20
|
-
tweakedData:
|
|
20
|
+
tweakedData: ModelUntransformedData<M>,
|
|
21
21
|
options: Pick<DataModelConstructorOptions, "modelClass">
|
|
22
22
|
): M => {
|
|
23
23
|
const { modelClass: _modelClass } = options
|
package/src/model/BaseModel.ts
CHANGED
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
import { modelInfoByClass } from "../modelShared/modelInfo"
|
|
9
9
|
import type {
|
|
10
10
|
ModelProps,
|
|
11
|
-
ModelPropsToData,
|
|
12
11
|
ModelPropsToTransformedCreationData,
|
|
12
|
+
ModelPropsToUntransformedData,
|
|
13
13
|
} from "../modelShared/prop"
|
|
14
14
|
import { getSnapshot } from "../snapshot/getSnapshot"
|
|
15
15
|
import type { SnapshotInOfModel, SnapshotOutOfModel } from "../snapshot/SnapshotOf"
|
|
@@ -88,7 +88,7 @@ export abstract class BaseModel<
|
|
|
88
88
|
* Data part of the model, which is observable and will be serialized in snapshots.
|
|
89
89
|
* Use it if one of the data properties matches one of the model properties/functions.
|
|
90
90
|
*/
|
|
91
|
-
readonly $!:
|
|
91
|
+
readonly $!: ModelPropsToUntransformedData<TProps>
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* Optional hook that will run once this model instance is attached to the tree of a model marked as
|
package/src/model/Model.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
AbstractModelClass,
|
|
3
3
|
ModelClass,
|
|
4
|
-
|
|
4
|
+
ModelCreationData,
|
|
5
5
|
} from "../modelShared/BaseModelShared"
|
|
6
6
|
import type {
|
|
7
7
|
ModelProps,
|
|
@@ -19,7 +19,7 @@ export type _ComposedCreationData<
|
|
|
19
19
|
SuperModel,
|
|
20
20
|
TProps extends ModelProps
|
|
21
21
|
> = SuperModel extends AnyModel
|
|
22
|
-
? ModelPropsToTransformedCreationData<TProps> &
|
|
22
|
+
? ModelPropsToTransformedCreationData<TProps> & ModelCreationData<SuperModel>
|
|
23
23
|
: ModelPropsToTransformedCreationData<TProps>
|
|
24
24
|
|
|
25
25
|
/**
|
package/src/model/newModel.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { action, set } from "mobx"
|
|
2
2
|
import type { O } from "ts-toolbelt"
|
|
3
3
|
import { isModelAutoTypeCheckingEnabled } from "../globalConfig/globalConfig"
|
|
4
|
-
import type {
|
|
4
|
+
import type { ModelCreationData } from "../modelShared/BaseModelShared"
|
|
5
5
|
import { modelInfoByClass } from "../modelShared/modelInfo"
|
|
6
6
|
import { getInternalModelClassPropsInfo } from "../modelShared/modelPropsInfo"
|
|
7
7
|
import { applyModelInitializers } from "../modelShared/newModel"
|
|
@@ -22,7 +22,7 @@ export const internalNewModel = action(
|
|
|
22
22
|
"newModel",
|
|
23
23
|
<M extends AnyModel>(
|
|
24
24
|
origModelObj: M,
|
|
25
|
-
initialData:
|
|
25
|
+
initialData: ModelCreationData<M> | undefined,
|
|
26
26
|
options: Pick<ModelConstructorOptions, "modelClass" | "snapshotInitialData" | "generateNewIds">
|
|
27
27
|
): M => {
|
|
28
28
|
const mode = initialData ? "new" : "fromSnapshot"
|
|
@@ -3,11 +3,11 @@ import type { AnyModel } from "../model/BaseModel"
|
|
|
3
3
|
import type { modelTypeKey } from "../model/metadata"
|
|
4
4
|
import type { Flatten, IsNeverType } from "../utils/types"
|
|
5
5
|
import type {
|
|
6
|
-
ModelPropsToCreationData,
|
|
7
6
|
ModelPropsToSnapshotCreationData,
|
|
8
7
|
ModelPropsToSnapshotData,
|
|
9
8
|
ModelPropsToTransformedCreationData,
|
|
10
9
|
ModelPropsToTransformedData,
|
|
10
|
+
ModelPropsToUntransformedCreationData,
|
|
11
11
|
} from "./prop"
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -53,28 +53,27 @@ export type AbstractModelClass<M extends AnyModel | AnyDataModel> = abstract new
|
|
|
53
53
|
export type ModelPropsOf<M extends AnyModel | AnyDataModel> = M[typeof propsTypeSymbol]
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
|
-
* The data type of a model.
|
|
56
|
+
* The data type of a model, without transformations applied.
|
|
57
57
|
*/
|
|
58
|
-
export type
|
|
58
|
+
export type ModelUntransformedData<M extends AnyModel | AnyDataModel> = Flatten<M["$"]>
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
|
-
* The creation data type of a model.
|
|
61
|
+
* The creation data type of a model, without transformations applied.
|
|
62
62
|
*/
|
|
63
|
-
export type
|
|
64
|
-
ModelPropsOf<M
|
|
65
|
-
>
|
|
63
|
+
export type ModelUntransformedCreationData<M extends AnyModel | AnyDataModel> =
|
|
64
|
+
ModelPropsToUntransformedCreationData<ModelPropsOf<M>>
|
|
66
65
|
|
|
67
66
|
/**
|
|
68
|
-
* The
|
|
67
|
+
* The data type of a model, with transformations applied.
|
|
69
68
|
*/
|
|
70
|
-
export type
|
|
69
|
+
export type ModelData<M extends AnyModel | AnyDataModel> = ModelPropsToTransformedData<
|
|
71
70
|
ModelPropsOf<M>
|
|
72
71
|
>
|
|
73
72
|
|
|
74
73
|
/**
|
|
75
|
-
* The
|
|
74
|
+
* The creation data type of a model, with transformations applied.
|
|
76
75
|
*/
|
|
77
|
-
export type
|
|
76
|
+
export type ModelCreationData<M extends AnyModel | AnyDataModel> =
|
|
78
77
|
ModelPropsToTransformedCreationData<ModelPropsOf<M>>
|
|
79
78
|
|
|
80
79
|
/**
|
package/src/modelShared/prop.ts
CHANGED
|
@@ -169,7 +169,7 @@ export type RequiredModelProps<MP extends ModelProps> = {
|
|
|
169
169
|
[K in keyof MP]: MP[K]["_internal"]["$isRequired"] & K
|
|
170
170
|
}[keyof MP]
|
|
171
171
|
|
|
172
|
-
export type
|
|
172
|
+
export type ModelPropsToUntransformedData<MP extends ModelProps> = Flatten<{
|
|
173
173
|
[k in keyof MP]: MP[k]["_internal"]["$valueType"]
|
|
174
174
|
}>
|
|
175
175
|
|
|
@@ -181,7 +181,7 @@ export type ModelPropsToSnapshotData<MP extends ModelProps> = Flatten<{
|
|
|
181
181
|
// also if we use pick over the optional props we will loose the ability
|
|
182
182
|
// to infer generics
|
|
183
183
|
// we also don't use Flatten because if we do some generics won't work
|
|
184
|
-
export type
|
|
184
|
+
export type ModelPropsToUntransformedCreationData<MP extends ModelProps> = {
|
|
185
185
|
[k in keyof MP]?: MP[k]["_internal"]["$creationValueType"]
|
|
186
186
|
} & {
|
|
187
187
|
[k in RequiredModelProps<MP>]: MP[k]["_internal"]["$creationValueType"]
|
|
@@ -2,7 +2,11 @@ import type { O } from "ts-toolbelt"
|
|
|
2
2
|
import type { AnyDataModel } from "../../dataModel/BaseDataModel"
|
|
3
3
|
import { getDataModelMetadata } from "../../dataModel/getDataModelMetadata"
|
|
4
4
|
import { isDataModelClass } from "../../dataModel/utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
ModelClass,
|
|
7
|
+
ModelData,
|
|
8
|
+
ModelUntransformedData,
|
|
9
|
+
} from "../../modelShared/BaseModelShared"
|
|
6
10
|
import { modelInfoByClass } from "../../modelShared/modelInfo"
|
|
7
11
|
import { getInternalModelClassPropsInfo } from "../../modelShared/modelPropsInfo"
|
|
8
12
|
import { noDefaultValue } from "../../modelShared/prop"
|
|
@@ -41,7 +45,12 @@ type _ClassOrObject<M, K> = K extends M ? object : _Class<K> | (() => _Class<K>)
|
|
|
41
45
|
export function typesDataModelData<M = never, K = M>(
|
|
42
46
|
modelClass: _ClassOrObject<M, K>
|
|
43
47
|
): IdentityType<
|
|
44
|
-
|
|
48
|
+
| ModelUntransformedData<
|
|
49
|
+
K extends M ? (M extends AnyDataModel ? M : never) : K extends AnyDataModel ? K : never
|
|
50
|
+
>
|
|
51
|
+
| ModelData<
|
|
52
|
+
K extends M ? (M extends AnyDataModel ? M : never) : K extends AnyDataModel ? K : never
|
|
53
|
+
>
|
|
45
54
|
> {
|
|
46
55
|
// if we type it any stronger then recursive defs and so on stop working
|
|
47
56
|
|