vona-module-a-orm 5.1.40 → 5.1.42
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/index.js +103 -12
- package/dist/index.js.map +1 -1
- package/dist/lib/bean.model/bean.model_cache.d.ts +4 -1
- package/dist/lib/bean.model/bean.model_cache.d.ts.map +1 -1
- package/dist/lib/dto/dtoCreate.d.ts +2 -2
- package/dist/lib/dto/dtoCreate.d.ts.map +1 -1
- package/dist/lib/dto/dtoGet.d.ts.map +1 -1
- package/dist/lib/dto/dtoMutate.d.ts +2 -2
- package/dist/lib/dto/dtoMutate.d.ts.map +1 -1
- package/dist/lib/dto/dtoUpdate.d.ts +2 -2
- package/dist/lib/dto/dtoUpdate.d.ts.map +1 -1
- package/dist/types/dto/dtoMutate.d.ts +28 -11
- package/dist/types/dto/dtoMutate.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/lib/bean.model/bean.model_cache.ts +92 -10
- package/src/lib/dto/dtoCreate.ts +8 -10
- package/src/lib/dto/dtoGet.ts +27 -3
- package/src/lib/dto/dtoMutate.ts +2 -2
- package/src/lib/dto/dtoUpdate.ts +7 -9
- package/src/types/dto/dtoMutate.ts +124 -87
|
@@ -25,8 +25,33 @@ import type {
|
|
|
25
25
|
TypeUtilPrepareColumns,
|
|
26
26
|
} from '../relations.ts';
|
|
27
27
|
|
|
28
|
+
export const SymbolDtoMutateRelations = Symbol('SymbolDtoMutateRelations');
|
|
29
|
+
|
|
28
30
|
export type TypeDtoMutateType = 'create' | 'update' | 'mutate';
|
|
29
31
|
|
|
32
|
+
// Static phantom metadata survives ordinary subclassing without becoming a DTO field.
|
|
33
|
+
// Runtime stores the corresponding resolved relation plans as mapped-class metadata.
|
|
34
|
+
export type TypeDtoMutateClass<
|
|
35
|
+
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
36
|
+
TOptionsRelation,
|
|
37
|
+
TMutateTypeTopLevel extends TypeDtoMutateType,
|
|
38
|
+
TColumnsOmitDefault extends string | string[] | undefined = undefined,
|
|
39
|
+
TTopLevel extends boolean | undefined = undefined,
|
|
40
|
+
> = Constructable<
|
|
41
|
+
TypeDtoMutateResult<
|
|
42
|
+
ModelLike,
|
|
43
|
+
TOptionsRelation,
|
|
44
|
+
TMutateTypeTopLevel,
|
|
45
|
+
TColumnsOmitDefault,
|
|
46
|
+
TTopLevel
|
|
47
|
+
>
|
|
48
|
+
> & {
|
|
49
|
+
[SymbolDtoMutateRelations]?: TypeDtoMutateOwnedRelations<
|
|
50
|
+
TypeModelOfModelLike<ModelLike>,
|
|
51
|
+
TOptionsRelation
|
|
52
|
+
>;
|
|
53
|
+
};
|
|
54
|
+
|
|
30
55
|
export type IDtoMutateParams<ModelLike extends BeanModelMeta | keyof IModelClassRecord> =
|
|
31
56
|
IBuildDtoMutateParams<
|
|
32
57
|
TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity],
|
|
@@ -65,100 +90,112 @@ export type TypeDtoMutateRelationResult<
|
|
|
65
90
|
TTopLevel extends boolean | undefined = undefined,
|
|
66
91
|
TColumns = undefined,
|
|
67
92
|
REFKEY = undefined,
|
|
68
|
-
> =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
TColumnsOmitDefault,
|
|
75
|
-
TTopLevel,
|
|
76
|
-
REFKEY
|
|
77
|
-
>) &
|
|
78
|
-
(TModel extends BeanModelMeta
|
|
79
|
-
? OmitNever<
|
|
80
|
-
TypeDtoMutateRelationResultMergeInclude<
|
|
81
|
-
TMutateTypeTopLevel,
|
|
82
|
-
TypeUtilGetModelOptions<TModel>,
|
|
83
|
-
TypeUtilGetParamsInlcude<TOptionsRelation>
|
|
84
|
-
>
|
|
85
|
-
> &
|
|
86
|
-
OmitNever<
|
|
87
|
-
TypeDtoMutateModelRelationResultMergeWith<
|
|
88
|
-
TMutateTypeTopLevel,
|
|
89
|
-
TypeUtilGetParamsWith<TOptionsRelation>
|
|
90
|
-
>
|
|
91
|
-
>
|
|
92
|
-
: {});
|
|
93
|
-
|
|
94
|
-
type TypeDtoMutateRelationResultMergeInclude<
|
|
95
|
-
TMutateTypeTopLevel extends TypeDtoMutateType,
|
|
96
|
-
TModelOptions extends IDecoratorModelOptions,
|
|
97
|
-
TInclude extends {} | undefined | unknown,
|
|
98
|
-
> = {
|
|
99
|
-
[RelationName in keyof TModelOptions['relations']]: TInclude extends {}
|
|
100
|
-
? TInclude[RelationName] extends {} | boolean
|
|
101
|
-
? TypeDtoMutateRelationResultMergeIncludeWrapper<
|
|
102
|
-
TMutateTypeTopLevel,
|
|
103
|
-
TModelOptions['relations'][RelationName],
|
|
104
|
-
TInclude[RelationName]
|
|
105
|
-
>
|
|
106
|
-
: TypeDtoMutateRelationResultMergeAutoload<
|
|
107
|
-
TMutateTypeTopLevel,
|
|
108
|
-
TModelOptions['relations'][RelationName]
|
|
109
|
-
>
|
|
110
|
-
: TypeDtoMutateRelationResultMergeAutoload<
|
|
93
|
+
> = TypeDtoMutateMergeRelations<
|
|
94
|
+
TOptionsRelation extends { dtoClass: Constructable<infer TDto> }
|
|
95
|
+
? TypeDtoMutateRelationResultDto<TDto, TMutateTypeTopLevel, TTopLevel, REFKEY>
|
|
96
|
+
: TypeDtoMutateRelationResultEntity<
|
|
97
|
+
TRecord,
|
|
98
|
+
TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>,
|
|
111
99
|
TMutateTypeTopLevel,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
100
|
+
TColumnsOmitDefault,
|
|
101
|
+
TTopLevel,
|
|
102
|
+
REFKEY
|
|
103
|
+
>,
|
|
104
|
+
TypeDtoMutateRelationPlans<TModel, TOptionsRelation>,
|
|
105
|
+
TMutateTypeTopLevel
|
|
106
|
+
>;
|
|
115
107
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
108
|
+
// Plans describe only declared relations, never arbitrary object/array schema fields.
|
|
109
|
+
// A fresh include/with/autoload selection replaces the whole retained plan of that name.
|
|
110
|
+
type TypeDtoMutateIncludePlans<TModelOptions extends IDecoratorModelOptions, TInclude> = OmitNever<{
|
|
111
|
+
[Name in keyof TModelOptions['relations']]: TInclude extends {}
|
|
112
|
+
? TInclude[Name] extends false
|
|
113
|
+
? false
|
|
114
|
+
: TInclude[Name] extends true
|
|
115
|
+
? [TModelOptions['relations'][Name], undefined]
|
|
116
|
+
: TInclude[Name] extends {}
|
|
117
|
+
? [TModelOptions['relations'][Name], TInclude[Name]]
|
|
118
|
+
: TypeDtoMutateAutoloadPlan<TModelOptions['relations'][Name]>
|
|
119
|
+
: TypeDtoMutateAutoloadPlan<TModelOptions['relations'][Name]>;
|
|
120
|
+
}>;
|
|
121
|
+
|
|
122
|
+
type TypeDtoMutateAutoloadPlan<Relation> =
|
|
123
|
+
TypeUtilGetRelationOptionsAutoload<Relation> extends true ? [Relation, undefined] : never;
|
|
124
|
+
|
|
125
|
+
type TypeDtoMutateWithPlans<TWith> = TWith extends {}
|
|
126
|
+
? OmitNever<{
|
|
127
|
+
[Name in keyof TWith]: TWith[Name] extends boolean
|
|
128
|
+
? never
|
|
129
|
+
: TWith[Name] extends {}
|
|
130
|
+
? [TWith[Name], TypeUtilGetRelationOptions<TWith[Name]>]
|
|
131
|
+
: never;
|
|
132
|
+
}>
|
|
126
133
|
: {};
|
|
127
134
|
|
|
128
|
-
type
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
> =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
type TypeDtoMutateFreshPlans<
|
|
136
|
+
TModel extends BeanModelMeta | undefined,
|
|
137
|
+
TOptionsRelation,
|
|
138
|
+
TWith = TypeDtoMutateWithPlans<TypeUtilGetParamsWith<TOptionsRelation>>,
|
|
139
|
+
> = Omit<
|
|
140
|
+
TModel extends BeanModelMeta
|
|
141
|
+
? TypeDtoMutateIncludePlans<
|
|
142
|
+
TypeUtilGetModelOptions<TModel>,
|
|
143
|
+
TypeUtilGetParamsInlcude<TOptionsRelation>
|
|
144
|
+
>
|
|
145
|
+
: {},
|
|
146
|
+
keyof TWith
|
|
147
|
+
> &
|
|
148
|
+
TWith;
|
|
139
149
|
|
|
140
|
-
type
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
type TypeDtoMutateRetainedPlans<TOptionsRelation> = TOptionsRelation extends {
|
|
151
|
+
dtoClass: infer TClass extends Constructable<unknown>;
|
|
152
|
+
}
|
|
153
|
+
? typeof SymbolDtoMutateRelations extends keyof TClass
|
|
154
|
+
? Pick<
|
|
155
|
+
NonNullable<TClass[typeof SymbolDtoMutateRelations]>,
|
|
156
|
+
Extract<
|
|
157
|
+
keyof NonNullable<TClass[typeof SymbolDtoMutateRelations]>,
|
|
158
|
+
keyof InstanceType<TClass>
|
|
159
|
+
>
|
|
160
|
+
>
|
|
161
|
+
: {}
|
|
162
|
+
: {};
|
|
163
|
+
|
|
164
|
+
type TypeDtoMutateRelationPlans<
|
|
165
|
+
TModel extends BeanModelMeta | undefined,
|
|
166
|
+
TOptionsRelation,
|
|
167
|
+
TFresh = TypeDtoMutateFreshPlans<TModel, TOptionsRelation>,
|
|
168
|
+
> = Omit<TypeDtoMutateRetainedPlans<TOptionsRelation>, keyof TFresh> & TFresh;
|
|
169
|
+
|
|
170
|
+
type TypeDtoMutateOwnedRelations<
|
|
171
|
+
TModel extends BeanModelMeta | undefined,
|
|
172
|
+
TOptionsRelation,
|
|
173
|
+
TPlans = TypeDtoMutateRelationPlans<TModel, TOptionsRelation>,
|
|
174
|
+
> = OmitNever<{
|
|
175
|
+
[Name in keyof TPlans]: TPlans[Name] extends [infer Relation, unknown]
|
|
176
|
+
? TypeUtilGetRelationType<Relation> extends 'hasOne' | 'hasMany'
|
|
177
|
+
? TPlans[Name]
|
|
178
|
+
: never
|
|
146
179
|
: never;
|
|
180
|
+
}>;
|
|
147
181
|
|
|
148
|
-
type
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
182
|
+
type TypeDtoMutateProjectRelations<TPlans, TMutateType extends TypeDtoMutateType> = OmitNever<{
|
|
183
|
+
[Name in keyof TPlans]: TPlans[Name] extends [infer Relation, infer IncludeWrapper]
|
|
184
|
+
? TypeUtilGetDtoMutateRelationEntityByType<TMutateType, Relation, IncludeWrapper>
|
|
185
|
+
: never;
|
|
186
|
+
}>;
|
|
187
|
+
|
|
188
|
+
type TypeDtoMutateDisabledRelations<TPlans> = {
|
|
189
|
+
[Name in keyof TPlans]: TPlans[Name] extends false ? Name : never;
|
|
190
|
+
}[keyof TPlans];
|
|
191
|
+
|
|
192
|
+
type TypeDtoMutateMergeRelations<
|
|
193
|
+
TBase,
|
|
194
|
+
TPlans,
|
|
195
|
+
TMutateType extends TypeDtoMutateType,
|
|
196
|
+
TRelations = TypeDtoMutateProjectRelations<TPlans, TMutateType>,
|
|
197
|
+
TDisabled extends keyof TBase = Extract<keyof TBase, TypeDtoMutateDisabledRelations<TPlans>>,
|
|
198
|
+
> = Omit<TBase, keyof TRelations | TDisabled> & Partial<Pick<TBase, TDisabled>> & TRelations;
|
|
162
199
|
|
|
163
200
|
// Relation options supply the default dtoClass; an include wrapper may override it.
|
|
164
201
|
type TypeUtilGetDtoMutateRelationParams<Relation, IncludeWrapper> = IncludeWrapper extends {
|