@orion-js/migrations 4.0.0-alpha.3 → 4.0.0-next.0
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.cjs +6 -6
- package/dist/index.d.ts +2 -610
- package/dist/index.js +6 -6
- package/package.json +8 -8
package/dist/index.cjs
CHANGED
|
@@ -65,7 +65,7 @@ __export(exports_src, {
|
|
|
65
65
|
});
|
|
66
66
|
module.exports = __toCommonJS(exports_src);
|
|
67
67
|
|
|
68
|
-
//
|
|
68
|
+
// node_modules/@orion-js/typed-model/dist/index.js
|
|
69
69
|
var import_node_module = require("node:module");
|
|
70
70
|
var import_crypto = __toESM(require("crypto"));
|
|
71
71
|
var __create2 = Object.create;
|
|
@@ -6760,7 +6760,7 @@ __legacyDecorateClassTS([
|
|
|
6760
6760
|
MigrationSchema = __legacyDecorateClassTS([
|
|
6761
6761
|
TypedSchema()
|
|
6762
6762
|
], MigrationSchema);
|
|
6763
|
-
//
|
|
6763
|
+
// node_modules/@orion-js/mongodb/dist/index.js
|
|
6764
6764
|
var import_node_module2 = require("node:module");
|
|
6765
6765
|
var import_node_module3 = require("node:module");
|
|
6766
6766
|
var import_crypto2 = __toESM(require("crypto"));
|
|
@@ -87783,7 +87783,7 @@ var export_Service = import_typedi2.Service;
|
|
|
87783
87783
|
var export_Inject = import_typedi2.Inject;
|
|
87784
87784
|
var export_Container = import_typedi2.Container;
|
|
87785
87785
|
|
|
87786
|
-
//
|
|
87786
|
+
// node_modules/@orion-js/services/dist/index.js
|
|
87787
87787
|
var __create7 = Object.create;
|
|
87788
87788
|
var __getProtoOf7 = Object.getPrototypeOf;
|
|
87789
87789
|
var __defProp7 = Object.defineProperty;
|
|
@@ -89070,7 +89070,7 @@ class MigrationsRepo {
|
|
|
89070
89070
|
MigrationsRepo = __legacyDecorateClassTS([
|
|
89071
89071
|
export_Service2()
|
|
89072
89072
|
], MigrationsRepo);
|
|
89073
|
-
//
|
|
89073
|
+
// node_modules/@orion-js/dogs/dist/index.js
|
|
89074
89074
|
var import_node_module6 = require("node:module");
|
|
89075
89075
|
var import_node_util2 = __toESM(require("node:util"));
|
|
89076
89076
|
var import_node_module7 = require("node:module");
|
|
@@ -202930,7 +202930,7 @@ function getMigrationsFromServices(services) {
|
|
|
202930
202930
|
});
|
|
202931
202931
|
}
|
|
202932
202932
|
|
|
202933
|
-
//
|
|
202933
|
+
// node_modules/@orion-js/logger/dist/index.js
|
|
202934
202934
|
var import_node_module13 = require("node:module");
|
|
202935
202935
|
var import_node_util4 = __toESM(require("node:util"));
|
|
202936
202936
|
var __create10 = Object.create;
|
|
@@ -219597,7 +219597,7 @@ var improveFileName3 = (path) => {
|
|
|
219597
219597
|
return path;
|
|
219598
219598
|
};
|
|
219599
219599
|
var transports23 = [
|
|
219600
|
-
|
|
219600
|
+
textConsoleTransport3
|
|
219601
219601
|
];
|
|
219602
219602
|
var winstonLogger3 = import_winston23.createLogger({
|
|
219603
219603
|
levels: import_winston23.config.npm.levels,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated by dts-bundle-generator v9.5.1
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import { ExecutionContext } from '@orion-js/dogs';
|
|
4
|
+
import { Collection } from '@orion-js/mongodb';
|
|
5
5
|
|
|
6
6
|
export type MigrationId = `scnmg-${string}`;
|
|
7
7
|
export declare class MigrationSchema {
|
|
@@ -9,530 +9,6 @@ export declare class MigrationSchema {
|
|
|
9
9
|
name: string;
|
|
10
10
|
completedAt: Date;
|
|
11
11
|
}
|
|
12
|
-
// Generated by dts-bundle-generator v9.5.1
|
|
13
|
-
// Generated by dts-bundle-generator v9.5.1
|
|
14
|
-
// Generated by dts-bundle-generator v9.5.1
|
|
15
|
-
export interface StoredCacheData {
|
|
16
|
-
value: any;
|
|
17
|
-
expires?: Date;
|
|
18
|
-
}
|
|
19
|
-
export interface SetCacheOptions {
|
|
20
|
-
ttl?: number;
|
|
21
|
-
}
|
|
22
|
-
export interface GetCacheOptions {
|
|
23
|
-
ttl?: number;
|
|
24
|
-
fallback?(): Promise<any>;
|
|
25
|
-
}
|
|
26
|
-
export interface OrionCache {
|
|
27
|
-
/**
|
|
28
|
-
* Save data in the cache
|
|
29
|
-
*/
|
|
30
|
-
set(key: string, value: any, options?: SetCacheOptions): Promise<void> | void;
|
|
31
|
-
/**
|
|
32
|
-
* Get data from the cache
|
|
33
|
-
*/
|
|
34
|
-
get(key: string, options?: GetCacheOptions): Promise<StoredCacheData>;
|
|
35
|
-
/**
|
|
36
|
-
* Removes data from the cache
|
|
37
|
-
*/
|
|
38
|
-
invalidate(key: string): Promise<void> | void;
|
|
39
|
-
}
|
|
40
|
-
export type Blackbox = {
|
|
41
|
-
[name: string]: any;
|
|
42
|
-
};
|
|
43
|
-
export type ModelResolverResolve = (item: any, params: any, viewer: any, info?: any) => Promise<any>;
|
|
44
|
-
export type GlobalCheckPermissions = (params: any, viewer: any, info?: any) => Promise<string | void>;
|
|
45
|
-
export type ModelCheckPermissions = (parent: any, params: any, viewer: any, info?: any) => Promise<string | void>;
|
|
46
|
-
export type GlobalGetCacheKey = (params: any, viewer: any, info: any) => Promise<any>;
|
|
47
|
-
export type ModelGetCacheKey = (parent: any, params: any, viewer: any, info: any) => Promise<any>;
|
|
48
|
-
export interface ExecuteOptions {
|
|
49
|
-
params: Blackbox;
|
|
50
|
-
viewer: any;
|
|
51
|
-
parent?: any;
|
|
52
|
-
info?: any;
|
|
53
|
-
options: ResolverOptions;
|
|
54
|
-
}
|
|
55
|
-
export type Parameters$1<T> = T extends (...args: infer P) => any ? P : never;
|
|
56
|
-
export type ReturnType$1<T> = T extends (...args: any) => infer R ? R : any;
|
|
57
|
-
export type ResolverParams<Resolve, IsModel> = IsModel extends undefined ? Parameters$1<Resolve>[0] : Parameters$1<Resolve>[1];
|
|
58
|
-
export interface ExecuteParams<Resolve = Function, IsModel = undefined> {
|
|
59
|
-
params?: ResolverParams<Resolve, IsModel>;
|
|
60
|
-
viewer?: any;
|
|
61
|
-
parent?: IsModel extends undefined ? undefined : Parameters$1<Resolve>[0];
|
|
62
|
-
info?: any;
|
|
63
|
-
}
|
|
64
|
-
export type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType$1<Resolve>;
|
|
65
|
-
export interface SharedResolverOptions {
|
|
66
|
-
resolverId?: string;
|
|
67
|
-
params?: any;
|
|
68
|
-
returns?: any;
|
|
69
|
-
mutation?: boolean;
|
|
70
|
-
private?: boolean;
|
|
71
|
-
checkPermission?: GlobalCheckPermissions | ModelCheckPermissions;
|
|
72
|
-
getCacheKey?: GlobalGetCacheKey | ModelGetCacheKey;
|
|
73
|
-
cache?: number;
|
|
74
|
-
cacheProvider?: OrionCache;
|
|
75
|
-
permissionsOptions?: any;
|
|
76
|
-
middlewares?: ResolverMiddleware[];
|
|
77
|
-
}
|
|
78
|
-
export interface ResolverOptions<Resolve = Function> extends SharedResolverOptions {
|
|
79
|
-
resolve: Resolve;
|
|
80
|
-
}
|
|
81
|
-
export type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
82
|
-
export interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
|
|
83
|
-
execute: Execute<Resolve, IsModel>;
|
|
84
|
-
resolve: Resolve;
|
|
85
|
-
modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
|
|
86
|
-
}
|
|
87
|
-
export type ModelResolver<Resolve = Function> = Resolver<Resolve, true>;
|
|
88
|
-
export type ResolverMiddleware = (executeOptions: ExecuteOptions, next: () => Promise<any>) => Promise<any>;
|
|
89
|
-
export interface FieldType {
|
|
90
|
-
name: string;
|
|
91
|
-
validate: ValidateFunction;
|
|
92
|
-
clean: CleanFunction;
|
|
93
|
-
meta?: any;
|
|
94
|
-
toGraphQLType?: (GraphQL: any) => any;
|
|
95
|
-
_isFieldType: boolean;
|
|
96
|
-
}
|
|
97
|
-
export type Constructor<T> = new (...args: any[]) => T;
|
|
98
|
-
export type FieldTypesList = "string" | "date" | "integer" | "number" | "ID" | "boolean" | "email" | "blackbox" | "any";
|
|
99
|
-
export type TypedModelOnSchema = Function;
|
|
100
|
-
export type ConstructorsTypesList = Constructor<String> | Constructor<Number> | Constructor<Boolean> | Constructor<Date>;
|
|
101
|
-
export type SchemaRecursiveNodeTypeExtras = {
|
|
102
|
-
_isFieldType?: boolean;
|
|
103
|
-
__clean?: CleanFunction;
|
|
104
|
-
__validate?: ValidateFunction;
|
|
105
|
-
__skipChildValidation?: (value: any, info: CurrentNodeInfo) => Promise<boolean>;
|
|
106
|
-
};
|
|
107
|
-
export interface Schema {
|
|
108
|
-
[key: string]: SchemaNode | Function;
|
|
109
|
-
}
|
|
110
|
-
export type SchemaRecursiveNodeType = Schema & SchemaRecursiveNodeTypeExtras;
|
|
111
|
-
export type SchemaMetaFieldTypeSingle = FieldTypesList | ConstructorsTypesList | SchemaRecursiveNodeType | FieldType | TypedModelOnSchema;
|
|
112
|
-
export type SchemaMetaFieldType = SchemaMetaFieldTypeSingle | SchemaMetaFieldTypeSingle[];
|
|
113
|
-
export type ValidateFunction = (value: any, info?: Partial<CurrentNodeInfo>, ...args: any[]) => object | string | void | Promise<object | string | void>;
|
|
114
|
-
export type CleanFunction = (value: any, info?: Partial<CurrentNodeInfo>, ...args: any[]) => any | Promise<any>;
|
|
115
|
-
export interface SchemaNode {
|
|
116
|
-
/**
|
|
117
|
-
* The type of the field. Used for type validations. Can also contain a subschema.
|
|
118
|
-
*/
|
|
119
|
-
type: SchemaMetaFieldType;
|
|
120
|
-
/**
|
|
121
|
-
* Defaults to false
|
|
122
|
-
*/
|
|
123
|
-
optional?: boolean;
|
|
124
|
-
allowedValues?: Array<any>;
|
|
125
|
-
defaultValue?: ((info: CurrentNodeInfo, ...args: any[]) => any | Promise<any>) | any;
|
|
126
|
-
/**
|
|
127
|
-
* Function that takes a value and returns an error message if there are any errors. Must return null or undefined otherwise.
|
|
128
|
-
*/
|
|
129
|
-
validate?: ValidateFunction;
|
|
130
|
-
/**
|
|
131
|
-
* Function that preprocesses a value before it is set.
|
|
132
|
-
*/
|
|
133
|
-
clean?: CleanFunction;
|
|
134
|
-
autoValue?: (value: any, info: CurrentNodeInfo, ...args: any[]) => any | Promise<any>;
|
|
135
|
-
/**
|
|
136
|
-
* The minimum value if it's a number, the minimum length if it's a string or array.
|
|
137
|
-
*/
|
|
138
|
-
min?: number;
|
|
139
|
-
/**
|
|
140
|
-
* The maximum value if it's a number, the maximum length if it's a string or array.
|
|
141
|
-
*/
|
|
142
|
-
max?: number;
|
|
143
|
-
/**
|
|
144
|
-
* Internal use only.
|
|
145
|
-
*/
|
|
146
|
-
isBlackboxChild?: boolean;
|
|
147
|
-
/**
|
|
148
|
-
* @deprecated
|
|
149
|
-
*/
|
|
150
|
-
custom?: ValidateFunction;
|
|
151
|
-
/**
|
|
152
|
-
* Used in GraphQL. If true, the field will be omitted from the schema.
|
|
153
|
-
*/
|
|
154
|
-
private?: boolean;
|
|
155
|
-
/**
|
|
156
|
-
* Used in GraphQL. When in GraphQL, this resolver will replace the static field.
|
|
157
|
-
*/
|
|
158
|
-
graphQLResolver?: (...args: any) => any;
|
|
159
|
-
/**
|
|
160
|
-
* Used in GraphQL. Sets the key of the field in the GraphQL schema. You must set this value when building your schema.
|
|
161
|
-
*/
|
|
162
|
-
key?: string;
|
|
163
|
-
/**
|
|
164
|
-
* The name that would be displayed in a front-end form
|
|
165
|
-
*/
|
|
166
|
-
label?: string;
|
|
167
|
-
/**
|
|
168
|
-
* The description that would be displayed in a front-end form
|
|
169
|
-
*/
|
|
170
|
-
description?: string;
|
|
171
|
-
/**
|
|
172
|
-
* The placeholder that would be displayed in a front-end form
|
|
173
|
-
*/
|
|
174
|
-
placeholder?: string;
|
|
175
|
-
/**
|
|
176
|
-
* The field type that would be used in a front-end form
|
|
177
|
-
*/
|
|
178
|
-
fieldType?: string;
|
|
179
|
-
/**
|
|
180
|
-
* The field options that will be passed as props to the front-end field
|
|
181
|
-
*/
|
|
182
|
-
fieldOptions?: any;
|
|
183
|
-
}
|
|
184
|
-
export interface CurrentNodeInfoOptions {
|
|
185
|
-
autoConvert?: boolean;
|
|
186
|
-
filter?: boolean;
|
|
187
|
-
trimStrings?: boolean;
|
|
188
|
-
removeEmptyStrings?: boolean;
|
|
189
|
-
forceDoc?: any;
|
|
190
|
-
omitRequired?: boolean;
|
|
191
|
-
}
|
|
192
|
-
export interface CurrentNodeInfo {
|
|
193
|
-
/**
|
|
194
|
-
* The global schema, prefaced by {type: {...}} to be compatible with subschemas
|
|
195
|
-
* Sometimes it's given without {type: {...}}. TODO: Normalize this.
|
|
196
|
-
*/
|
|
197
|
-
schema?: SchemaNode | Schema;
|
|
198
|
-
/**
|
|
199
|
-
* The current node subschema
|
|
200
|
-
*/
|
|
201
|
-
currentSchema?: Partial<SchemaNode>;
|
|
202
|
-
value: any;
|
|
203
|
-
doc?: any;
|
|
204
|
-
currentDoc?: any;
|
|
205
|
-
options?: CurrentNodeInfoOptions;
|
|
206
|
-
args?: any[];
|
|
207
|
-
type?: SchemaMetaFieldType;
|
|
208
|
-
keys?: string[];
|
|
209
|
-
addError?: (keys: string[], code: string | object) => void;
|
|
210
|
-
}
|
|
211
|
-
export interface ModelResolversMap {
|
|
212
|
-
[key: string]: ModelResolver<ModelResolverResolve>;
|
|
213
|
-
}
|
|
214
|
-
export interface CloneOptions {
|
|
215
|
-
name: string;
|
|
216
|
-
omitFields?: string[];
|
|
217
|
-
pickFields?: string[];
|
|
218
|
-
mapFields?: (field: any, key: string) => any;
|
|
219
|
-
extendSchema?: Schema;
|
|
220
|
-
extendResolvers?: ModelResolversMap;
|
|
221
|
-
}
|
|
222
|
-
export interface Model<TSchema = any> {
|
|
223
|
-
__isModel: boolean;
|
|
224
|
-
/**
|
|
225
|
-
* The name of the model, used for example for GraphQL
|
|
226
|
-
*/
|
|
227
|
-
name: string;
|
|
228
|
-
/**
|
|
229
|
-
* Returns the schema of the model
|
|
230
|
-
*/
|
|
231
|
-
getSchema: () => Schema & {
|
|
232
|
-
__model: Model;
|
|
233
|
-
};
|
|
234
|
-
/**
|
|
235
|
-
* Returns the schema without adding __model to the schema
|
|
236
|
-
*/
|
|
237
|
-
getCleanSchema: () => Schema;
|
|
238
|
-
/**
|
|
239
|
-
* Returns the model resolvers
|
|
240
|
-
*/
|
|
241
|
-
getResolvers: () => ModelResolversMap;
|
|
242
|
-
/**
|
|
243
|
-
* Adds the model resolvers to a item
|
|
244
|
-
*/
|
|
245
|
-
initItem: (item: any) => any;
|
|
246
|
-
/**
|
|
247
|
-
* Validates an item using @orion-js/schema
|
|
248
|
-
*/
|
|
249
|
-
validate: (item: any) => Promise<any>;
|
|
250
|
-
/**
|
|
251
|
-
* Cleans an item using @orion-js/schema
|
|
252
|
-
*/
|
|
253
|
-
clean: (item: any) => Promise<TSchema>;
|
|
254
|
-
/**
|
|
255
|
-
* Cleans and validates an item using @orion-js/schema
|
|
256
|
-
*/
|
|
257
|
-
cleanAndValidate: (item: any) => Promise<TSchema>;
|
|
258
|
-
/**
|
|
259
|
-
* Creates a new model using this one as a base
|
|
260
|
-
*/
|
|
261
|
-
clone: (cloneOptions: CloneOptions) => Model;
|
|
262
|
-
/**
|
|
263
|
-
* The type of the model. Only use this in typescript
|
|
264
|
-
*/
|
|
265
|
-
type: TSchema;
|
|
266
|
-
}
|
|
267
|
-
export interface FieldType$1 {
|
|
268
|
-
name: string;
|
|
269
|
-
validate: ValidateFunction$1;
|
|
270
|
-
clean: CleanFunction$1;
|
|
271
|
-
meta?: any;
|
|
272
|
-
toGraphQLType?: (GraphQL: any) => any;
|
|
273
|
-
_isFieldType: boolean;
|
|
274
|
-
}
|
|
275
|
-
export type Constructor$1<T> = new (...args: any[]) => T;
|
|
276
|
-
export type Blackbox$1 = {
|
|
277
|
-
[name: string]: any;
|
|
278
|
-
};
|
|
279
|
-
export type FieldTypesList$1 = "string" | "date" | "integer" | "number" | "ID" | "boolean" | "email" | "blackbox" | "any";
|
|
280
|
-
export type TypedModelOnSchema$1 = Function;
|
|
281
|
-
export type ConstructorsTypesList$1 = Constructor$1<String> | Constructor$1<Number> | Constructor$1<Boolean> | Constructor$1<Date>;
|
|
282
|
-
export type SchemaRecursiveNodeTypeExtras$1 = {
|
|
283
|
-
_isFieldType?: boolean;
|
|
284
|
-
__clean?: CleanFunction$1;
|
|
285
|
-
__validate?: ValidateFunction$1;
|
|
286
|
-
__skipChildValidation?: (value: any, info: CurrentNodeInfo$1) => Promise<boolean>;
|
|
287
|
-
};
|
|
288
|
-
export interface Schema$1 {
|
|
289
|
-
[key: string]: SchemaNode$1 | Function;
|
|
290
|
-
}
|
|
291
|
-
export type SchemaRecursiveNodeType$1 = Schema$1 & SchemaRecursiveNodeTypeExtras$1;
|
|
292
|
-
export type SchemaMetaFieldTypeSingle$1 = FieldTypesList$1 | ConstructorsTypesList$1 | SchemaRecursiveNodeType$1 | FieldType$1 | TypedModelOnSchema$1;
|
|
293
|
-
export type SchemaMetaFieldType$1 = SchemaMetaFieldTypeSingle$1 | SchemaMetaFieldTypeSingle$1[];
|
|
294
|
-
export type ValidateFunction$1 = (value: any, info?: Partial<CurrentNodeInfo$1>, ...args: any[]) => object | string | void | Promise<object | string | void>;
|
|
295
|
-
export type CleanFunction$1 = (value: any, info?: Partial<CurrentNodeInfo$1>, ...args: any[]) => any | Promise<any>;
|
|
296
|
-
export interface SchemaNode$1 {
|
|
297
|
-
/**
|
|
298
|
-
* The type of the field. Used for type validations. Can also contain a subschema.
|
|
299
|
-
*/
|
|
300
|
-
type: SchemaMetaFieldType$1;
|
|
301
|
-
/**
|
|
302
|
-
* Defaults to false
|
|
303
|
-
*/
|
|
304
|
-
optional?: boolean;
|
|
305
|
-
allowedValues?: Array<any>;
|
|
306
|
-
defaultValue?: ((info: CurrentNodeInfo$1, ...args: any[]) => any | Promise<any>) | any;
|
|
307
|
-
/**
|
|
308
|
-
* Function that takes a value and returns an error message if there are any errors. Must return null or undefined otherwise.
|
|
309
|
-
*/
|
|
310
|
-
validate?: ValidateFunction$1;
|
|
311
|
-
/**
|
|
312
|
-
* Function that preprocesses a value before it is set.
|
|
313
|
-
*/
|
|
314
|
-
clean?: CleanFunction$1;
|
|
315
|
-
autoValue?: (value: any, info: CurrentNodeInfo$1, ...args: any[]) => any | Promise<any>;
|
|
316
|
-
/**
|
|
317
|
-
* The minimum value if it's a number, the minimum length if it's a string or array.
|
|
318
|
-
*/
|
|
319
|
-
min?: number;
|
|
320
|
-
/**
|
|
321
|
-
* The maximum value if it's a number, the maximum length if it's a string or array.
|
|
322
|
-
*/
|
|
323
|
-
max?: number;
|
|
324
|
-
/**
|
|
325
|
-
* Internal use only.
|
|
326
|
-
*/
|
|
327
|
-
isBlackboxChild?: boolean;
|
|
328
|
-
/**
|
|
329
|
-
* @deprecated
|
|
330
|
-
*/
|
|
331
|
-
custom?: ValidateFunction$1;
|
|
332
|
-
/**
|
|
333
|
-
* Used in GraphQL. If true, the field will be omitted from the schema.
|
|
334
|
-
*/
|
|
335
|
-
private?: boolean;
|
|
336
|
-
/**
|
|
337
|
-
* Used in GraphQL. When in GraphQL, this resolver will replace the static field.
|
|
338
|
-
*/
|
|
339
|
-
graphQLResolver?: (...args: any) => any;
|
|
340
|
-
/**
|
|
341
|
-
* Used in GraphQL. Sets the key of the field in the GraphQL schema. You must set this value when building your schema.
|
|
342
|
-
*/
|
|
343
|
-
key?: string;
|
|
344
|
-
/**
|
|
345
|
-
* The name that would be displayed in a front-end form
|
|
346
|
-
*/
|
|
347
|
-
label?: string;
|
|
348
|
-
/**
|
|
349
|
-
* The description that would be displayed in a front-end form
|
|
350
|
-
*/
|
|
351
|
-
description?: string;
|
|
352
|
-
/**
|
|
353
|
-
* The placeholder that would be displayed in a front-end form
|
|
354
|
-
*/
|
|
355
|
-
placeholder?: string;
|
|
356
|
-
/**
|
|
357
|
-
* The field type that would be used in a front-end form
|
|
358
|
-
*/
|
|
359
|
-
fieldType?: string;
|
|
360
|
-
/**
|
|
361
|
-
* The field options that will be passed as props to the front-end field
|
|
362
|
-
*/
|
|
363
|
-
fieldOptions?: any;
|
|
364
|
-
}
|
|
365
|
-
export interface CurrentNodeInfoOptions$1 {
|
|
366
|
-
autoConvert?: boolean;
|
|
367
|
-
filter?: boolean;
|
|
368
|
-
trimStrings?: boolean;
|
|
369
|
-
removeEmptyStrings?: boolean;
|
|
370
|
-
forceDoc?: any;
|
|
371
|
-
omitRequired?: boolean;
|
|
372
|
-
}
|
|
373
|
-
export interface CurrentNodeInfo$1 {
|
|
374
|
-
/**
|
|
375
|
-
* The global schema, prefaced by {type: {...}} to be compatible with subschemas
|
|
376
|
-
* Sometimes it's given without {type: {...}}. TODO: Normalize this.
|
|
377
|
-
*/
|
|
378
|
-
schema?: SchemaNode$1 | Schema$1;
|
|
379
|
-
/**
|
|
380
|
-
* The current node subschema
|
|
381
|
-
*/
|
|
382
|
-
currentSchema?: Partial<SchemaNode$1>;
|
|
383
|
-
value: any;
|
|
384
|
-
doc?: any;
|
|
385
|
-
currentDoc?: any;
|
|
386
|
-
options?: CurrentNodeInfoOptions$1;
|
|
387
|
-
args?: any[];
|
|
388
|
-
type?: SchemaMetaFieldType$1;
|
|
389
|
-
keys?: string[];
|
|
390
|
-
addError?: (keys: string[], code: string | object) => void;
|
|
391
|
-
}
|
|
392
|
-
export interface OrionMongoClient {
|
|
393
|
-
client: MongoClient;
|
|
394
|
-
db: Db;
|
|
395
|
-
uri: string;
|
|
396
|
-
dbName: string;
|
|
397
|
-
connectionPromise: Promise<MongoClient>;
|
|
398
|
-
connectionName: string;
|
|
399
|
-
}
|
|
400
|
-
export type RemoveFunctions<T extends ModelClassBase> = Pick<T, {
|
|
401
|
-
[Key in keyof T]-?: T[Key] extends Function ? never : Key;
|
|
402
|
-
}[keyof T]> & {
|
|
403
|
-
_id: ModelClassBase["_id"];
|
|
404
|
-
};
|
|
405
|
-
export type ModelClassBase = {
|
|
406
|
-
_id: string;
|
|
407
|
-
} & Blackbox$1;
|
|
408
|
-
export type DocumentWithIdOptional<T extends ModelClassBase> = Omit<T, "_id"> & {
|
|
409
|
-
/**
|
|
410
|
-
* The ID of the document
|
|
411
|
-
*/
|
|
412
|
-
_id?: T["_id"];
|
|
413
|
-
};
|
|
414
|
-
export type DocumentWithoutId<T> = Omit<T, "_id">;
|
|
415
|
-
export type ModelToDocumentType<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
416
|
-
export type ModelToDocumentTypeWithoutId<ModelClass extends ModelClassBase> = DocumentWithoutId<ModelToDocumentType<ModelClass>>;
|
|
417
|
-
export type ModelToDocumentTypeWithIdOptional<ModelClass extends ModelClassBase> = DocumentWithIdOptional<ModelToDocumentType<ModelClass>>;
|
|
418
|
-
export type ModelToMongoSelector<ModelClass extends ModelClassBase> = MongoSelector<ModelToDocumentType<ModelClass>>;
|
|
419
|
-
export type ModelToUpdateFilter<ModelClass extends ModelClassBase> = MongoDB.UpdateFilter<ModelToDocumentTypeWithoutId<ModelClass>> | Partial<ModelToDocumentTypeWithoutId<ModelClass>>;
|
|
420
|
-
export interface CollectionIndex {
|
|
421
|
-
keys: MongoDB.IndexSpecification;
|
|
422
|
-
options?: MongoDB.CreateIndexesOptions;
|
|
423
|
-
}
|
|
424
|
-
declare namespace DataLoader {
|
|
425
|
-
interface LoadDataOptionsBase<ModelClass extends ModelClassBase> {
|
|
426
|
-
key: keyof ModelClass;
|
|
427
|
-
match?: MongoFilter<ModelClass>;
|
|
428
|
-
sort?: MongoDB.Sort;
|
|
429
|
-
project?: MongoDB.Document;
|
|
430
|
-
timeout?: number;
|
|
431
|
-
debug?: boolean;
|
|
432
|
-
}
|
|
433
|
-
export interface LoadDataOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
434
|
-
value?: any;
|
|
435
|
-
values?: Array<any>;
|
|
436
|
-
}
|
|
437
|
-
export interface LoadOneOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
438
|
-
value: any;
|
|
439
|
-
}
|
|
440
|
-
export type LoadData<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
441
|
-
export type LoadOne<ModelClass extends ModelClassBase> = (options: LoadOneOptions<ModelClass>) => Promise<ModelClass>;
|
|
442
|
-
export type LoadMany<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
443
|
-
export type LoadById<ModelClass extends ModelClassBase> = (id: ModelClass["_id"]) => Promise<ModelClass>;
|
|
444
|
-
export {};
|
|
445
|
-
}
|
|
446
|
-
export type MongoFilter<ModelClass extends ModelClassBase = ModelClassBase> = MongoDB.Filter<ModelClass> & ({
|
|
447
|
-
_id?: ModelClass["_id"];
|
|
448
|
-
} | {
|
|
449
|
-
_id?: {
|
|
450
|
-
$in: ModelClass["_id"][];
|
|
451
|
-
};
|
|
452
|
-
});
|
|
453
|
-
export type MongoSelector<ModelClass extends ModelClassBase = ModelClassBase> = ModelClass["_id"] | MongoFilter<ModelClass>;
|
|
454
|
-
export interface FindCursor<ModelClass> extends MongoDB.FindCursor {
|
|
455
|
-
toArray: () => Promise<Array<ModelClass>>;
|
|
456
|
-
}
|
|
457
|
-
export interface UpdateOptions {
|
|
458
|
-
clean?: boolean;
|
|
459
|
-
validate?: boolean;
|
|
460
|
-
mongoOptions?: MongoDB.UpdateOptions;
|
|
461
|
-
}
|
|
462
|
-
export interface FindOneAndUpdateUpdateOptions {
|
|
463
|
-
clean?: boolean;
|
|
464
|
-
validate?: boolean;
|
|
465
|
-
mongoOptions?: MongoDB.FindOneAndUpdateOptions;
|
|
466
|
-
}
|
|
467
|
-
export interface InsertOptions {
|
|
468
|
-
clean?: boolean;
|
|
469
|
-
validate?: boolean;
|
|
470
|
-
mongoOptions?: MongoDB.InsertOneOptions;
|
|
471
|
-
}
|
|
472
|
-
export type InitItem<ModelClass extends ModelClassBase> = (doc: any) => ModelClass;
|
|
473
|
-
export type FindOne<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => Promise<ModelClass>;
|
|
474
|
-
export type Find<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => FindCursor<ModelClass>;
|
|
475
|
-
export type FindOneAndUpdate<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
476
|
-
export type UpdateAndFind<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
477
|
-
export type UpdateItem<ModelClass extends ModelClassBase> = (item: ModelClass, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<void>;
|
|
478
|
-
export type InsertOne<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass["_id"]>;
|
|
479
|
-
export type InsertMany<ModelClass extends ModelClassBase> = (doc: Array<ModelToDocumentTypeWithIdOptional<ModelClass>>, options?: InsertOptions) => Promise<Array<ModelClass["_id"]>>;
|
|
480
|
-
export type InsertAndFind<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass>;
|
|
481
|
-
export type DeleteMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
482
|
-
export type DeleteOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
483
|
-
export type UpdateOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
484
|
-
export type UpdateMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult | MongoDB.Document>;
|
|
485
|
-
export type Upsert<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
486
|
-
export type EstimatedDocumentCount<ModelClass extends ModelClassBase> = (options?: MongoDB.EstimatedDocumentCountOptions) => Promise<number>;
|
|
487
|
-
export type CountDocuments<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.CountDocumentsOptions) => Promise<number>;
|
|
488
|
-
declare class Collection<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
489
|
-
name: string;
|
|
490
|
-
connectionName?: string;
|
|
491
|
-
schema?: Schema$1;
|
|
492
|
-
/**
|
|
493
|
-
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
494
|
-
*/
|
|
495
|
-
model?: Model;
|
|
496
|
-
indexes: Array<CollectionIndex>;
|
|
497
|
-
generateId: () => ModelClass["_id"];
|
|
498
|
-
getSchema: () => Schema$1;
|
|
499
|
-
db: MongoDB.Db;
|
|
500
|
-
client: OrionMongoClient;
|
|
501
|
-
rawCollection: MongoDB.Collection<ModelClass>;
|
|
502
|
-
initItem: InitItem<ModelClass>;
|
|
503
|
-
findOne: FindOne<ModelClass>;
|
|
504
|
-
find: Find<ModelClass>;
|
|
505
|
-
insertOne: InsertOne<ModelClass>;
|
|
506
|
-
insertMany: InsertMany<ModelClass>;
|
|
507
|
-
insertAndFind: InsertAndFind<ModelClass>;
|
|
508
|
-
deleteMany: DeleteMany<ModelClass>;
|
|
509
|
-
deleteOne: DeleteOne<ModelClass>;
|
|
510
|
-
updateOne: UpdateOne<ModelClass>;
|
|
511
|
-
updateMany: UpdateMany<ModelClass>;
|
|
512
|
-
upsert: Upsert<ModelClass>;
|
|
513
|
-
findOneAndUpdate: FindOneAndUpdate<ModelClass>;
|
|
514
|
-
/**
|
|
515
|
-
* Updates a document and returns the updated document with the changes
|
|
516
|
-
*/
|
|
517
|
-
updateAndFind: UpdateAndFind<ModelClass>;
|
|
518
|
-
updateItem: UpdateItem<ModelClass>;
|
|
519
|
-
estimatedDocumentCount: EstimatedDocumentCount<ModelClass>;
|
|
520
|
-
countDocuments: CountDocuments<ModelClass>;
|
|
521
|
-
aggregate: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.AggregateOptions) => MongoDB.AggregationCursor<T>;
|
|
522
|
-
watch: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.ChangeStreamOptions) => MongoDB.ChangeStream<T>;
|
|
523
|
-
loadData: DataLoader.LoadData<ModelClass>;
|
|
524
|
-
loadOne: DataLoader.LoadOne<ModelClass>;
|
|
525
|
-
loadMany: DataLoader.LoadMany<ModelClass>;
|
|
526
|
-
loadById: DataLoader.LoadById<ModelClass>;
|
|
527
|
-
/**
|
|
528
|
-
* Use this function if you are using tests and you pass the
|
|
529
|
-
* env var DONT_CREATE_INDEXES_AUTOMATICALLY and you need to
|
|
530
|
-
* create the indexes for this collection
|
|
531
|
-
*/
|
|
532
|
-
createIndexes: () => Promise<string[]>;
|
|
533
|
-
createIndexesPromise: Promise<string[]>;
|
|
534
|
-
connectionPromise: Promise<MongoDB.MongoClient>;
|
|
535
|
-
}
|
|
536
12
|
export declare class MigrationsRepo {
|
|
537
13
|
collection: Collection<MigrationSchema>;
|
|
538
14
|
getCompletedMigrationNames(): Promise<string[]>;
|
|
@@ -543,90 +19,6 @@ export interface Options {
|
|
|
543
19
|
omitJob?: boolean;
|
|
544
20
|
}
|
|
545
21
|
export declare function loadMigrations(migrationServices: any[], options?: Options): MigrationExecutable[];
|
|
546
|
-
type Blackbox$1 = {
|
|
547
|
-
[name: string]: any;
|
|
548
|
-
};
|
|
549
|
-
export type LogFunction = (message: string, metadata?: any) => void;
|
|
550
|
-
export interface OrionLogger {
|
|
551
|
-
debug: LogFunction;
|
|
552
|
-
info: LogFunction;
|
|
553
|
-
warn: LogFunction;
|
|
554
|
-
error: LogFunction;
|
|
555
|
-
addContext: (module: NodeJS.Module) => OrionLogger;
|
|
556
|
-
addMetadata: (metadata: any) => OrionLogger;
|
|
557
|
-
}
|
|
558
|
-
export interface JobToRun {
|
|
559
|
-
jobId: string;
|
|
560
|
-
executionId: string;
|
|
561
|
-
name: string;
|
|
562
|
-
type: "event" | "recurrent";
|
|
563
|
-
params: Blackbox$1;
|
|
564
|
-
tries: number;
|
|
565
|
-
lockTime: number;
|
|
566
|
-
priority: number;
|
|
567
|
-
uniqueIdentifier?: string;
|
|
568
|
-
}
|
|
569
|
-
export interface ExecutionContext {
|
|
570
|
-
record: JobToRun;
|
|
571
|
-
definition: JobDefinition;
|
|
572
|
-
tries: number;
|
|
573
|
-
logger: OrionLogger;
|
|
574
|
-
extendLockTime: (extraTime: number) => Promise<void>;
|
|
575
|
-
clearStaleTimeout: () => void;
|
|
576
|
-
}
|
|
577
|
-
export interface JobRetryResultBase {
|
|
578
|
-
action: "retry" | "dismiss";
|
|
579
|
-
}
|
|
580
|
-
export type JobRetryResultRunIn = JobRetryResultBase & {
|
|
581
|
-
runIn: number;
|
|
582
|
-
};
|
|
583
|
-
export type JobRetryResultRunAt = JobRetryResultBase & {
|
|
584
|
-
runAt: Date;
|
|
585
|
-
};
|
|
586
|
-
export type JobRetryResult = JobRetryResultRunIn | JobRetryResultRunAt | JobRetryResultBase;
|
|
587
|
-
export interface BaseJobDefinition {
|
|
588
|
-
/**
|
|
589
|
-
* The function to execute when the job is executed.
|
|
590
|
-
*/
|
|
591
|
-
resolve: (params: Blackbox$1, context: ExecutionContext) => Promise<Blackbox$1 | void>;
|
|
592
|
-
/**
|
|
593
|
-
* Called if the job fails.
|
|
594
|
-
*/
|
|
595
|
-
onError?: (error: Error, params: Blackbox$1, context: ExecutionContext) => Promise<JobRetryResult>;
|
|
596
|
-
/**
|
|
597
|
-
* Called if the job locktime is expired. The job will be executed again.
|
|
598
|
-
*/
|
|
599
|
-
onStale?: (params: Blackbox$1, context: ExecutionContext) => Promise<void>;
|
|
600
|
-
/**
|
|
601
|
-
* Save the executions of the job time in milliseconds. Default is 1 week. Set to 0 to disable.
|
|
602
|
-
*/
|
|
603
|
-
saveExecutionsFor?: number;
|
|
604
|
-
}
|
|
605
|
-
export interface RecurrentJobDefinition extends BaseJobDefinition {
|
|
606
|
-
/**
|
|
607
|
-
* Type of the job.
|
|
608
|
-
*/
|
|
609
|
-
type: "recurrent";
|
|
610
|
-
/**
|
|
611
|
-
* A function executed after each execution that returns the date of the next run.
|
|
612
|
-
*/
|
|
613
|
-
getNextRun?: () => Date;
|
|
614
|
-
/**
|
|
615
|
-
* Run every x milliseconds. This will be ignored if getNextRun is defined.
|
|
616
|
-
*/
|
|
617
|
-
runEvery?: number;
|
|
618
|
-
/**
|
|
619
|
-
* The priority of the job. Higher is more priority. Default is 100.
|
|
620
|
-
*/
|
|
621
|
-
priority?: number;
|
|
622
|
-
}
|
|
623
|
-
export interface EventJobDefinition extends BaseJobDefinition {
|
|
624
|
-
/**
|
|
625
|
-
* Type of the job.
|
|
626
|
-
*/
|
|
627
|
-
type: "event";
|
|
628
|
-
}
|
|
629
|
-
export type JobDefinition = RecurrentJobDefinition | EventJobDefinition;
|
|
630
22
|
export interface MigrationServiceOptions {
|
|
631
23
|
name: string;
|
|
632
24
|
useMongoTransactions: false;
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var __legacyMetadataTS = (k, v) => {
|
|
|
31
31
|
};
|
|
32
32
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
33
33
|
|
|
34
|
-
//
|
|
34
|
+
// node_modules/@orion-js/typed-model/dist/index.js
|
|
35
35
|
import { createRequire as createRequire2 } from "node:module";
|
|
36
36
|
import crypto2 from "crypto";
|
|
37
37
|
var __create2 = Object.create;
|
|
@@ -6726,7 +6726,7 @@ __legacyDecorateClassTS([
|
|
|
6726
6726
|
MigrationSchema = __legacyDecorateClassTS([
|
|
6727
6727
|
TypedSchema()
|
|
6728
6728
|
], MigrationSchema);
|
|
6729
|
-
//
|
|
6729
|
+
// node_modules/@orion-js/mongodb/dist/index.js
|
|
6730
6730
|
import { createRequire as createRequire3 } from "node:module";
|
|
6731
6731
|
import { createRequire as createRequire22 } from "node:module";
|
|
6732
6732
|
import crypto22 from "crypto";
|
|
@@ -87749,7 +87749,7 @@ var export_Service = import_typedi2.Service;
|
|
|
87749
87749
|
var export_Inject = import_typedi2.Inject;
|
|
87750
87750
|
var export_Container = import_typedi2.Container;
|
|
87751
87751
|
|
|
87752
|
-
//
|
|
87752
|
+
// node_modules/@orion-js/services/dist/index.js
|
|
87753
87753
|
var __create7 = Object.create;
|
|
87754
87754
|
var __getProtoOf7 = Object.getPrototypeOf;
|
|
87755
87755
|
var __defProp7 = Object.defineProperty;
|
|
@@ -89036,7 +89036,7 @@ class MigrationsRepo {
|
|
|
89036
89036
|
MigrationsRepo = __legacyDecorateClassTS([
|
|
89037
89037
|
export_Service2()
|
|
89038
89038
|
], MigrationsRepo);
|
|
89039
|
-
//
|
|
89039
|
+
// node_modules/@orion-js/dogs/dist/index.js
|
|
89040
89040
|
import { createRequire as createRequire23 } from "node:module";
|
|
89041
89041
|
import util2 from "node:util";
|
|
89042
89042
|
import { createRequire as createRequire33 } from "node:module";
|
|
@@ -202896,7 +202896,7 @@ function getMigrationsFromServices(services) {
|
|
|
202896
202896
|
});
|
|
202897
202897
|
}
|
|
202898
202898
|
|
|
202899
|
-
//
|
|
202899
|
+
// node_modules/@orion-js/logger/dist/index.js
|
|
202900
202900
|
import { createRequire as createRequire6 } from "node:module";
|
|
202901
202901
|
import util3 from "node:util";
|
|
202902
202902
|
var __create10 = Object.create;
|
|
@@ -219563,7 +219563,7 @@ var improveFileName3 = (path) => {
|
|
|
219563
219563
|
return path;
|
|
219564
219564
|
};
|
|
219565
219565
|
var transports23 = [
|
|
219566
|
-
|
|
219566
|
+
textConsoleTransport3
|
|
219567
219567
|
];
|
|
219568
219568
|
var winstonLogger3 = import_winston23.createLogger({
|
|
219569
219569
|
levels: import_winston23.config.npm.levels,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/migrations",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-next.0",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
"dev": "bun --watch src/index.ts"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@orion-js/dogs": "^4.0.0-
|
|
22
|
-
"@orion-js/helpers": "^4.0.0-
|
|
23
|
-
"@orion-js/mongodb": "^4.0.0-
|
|
24
|
-
"@orion-js/services": "^4.0.0-
|
|
25
|
-
"@orion-js/typed-model": "^4.0.0-
|
|
21
|
+
"@orion-js/dogs": "^4.0.0-next.0",
|
|
22
|
+
"@orion-js/helpers": "^4.0.0-next.0",
|
|
23
|
+
"@orion-js/mongodb": "^4.0.0-next.0",
|
|
24
|
+
"@orion-js/services": "^4.0.0-next.0",
|
|
25
|
+
"@orion-js/typed-model": "^4.0.0-next.0"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@orion-js/logger": "
|
|
28
|
+
"@orion-js/logger": "4.0.0-next.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@orion-js/logger": "^4.0.0-
|
|
31
|
+
"@orion-js/logger": "^4.0.0-next.0",
|
|
32
32
|
"@types/lodash": "4.14.195",
|
|
33
33
|
"reflect-metadata": "^0.1.13",
|
|
34
34
|
"typescript": "^5.4.5",
|