wabe 0.5.5 → 0.5.7

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 (4) hide show
  1. package/dist/index.d.ts +446 -311
  2. package/dist/index.js +17030 -33823
  3. package/generated/wabe.ts +1012 -1198
  4. package/package.json +5 -9
package/dist/index.d.ts CHANGED
@@ -2,11 +2,8 @@
2
2
 
3
3
  /// <reference types="react" />
4
4
 
5
- import { Wobe, WobeHandler, WobeResponse } from 'wobe';
5
+ import { Context, Wobe, WobeHandler, WobeResponse } from 'wobe';
6
6
 
7
- export type Maybe<T> = T | null;
8
- export type InputMaybe<T> = Maybe<T>;
9
- /** All built-in and custom scalars, mapped to their actual values */
10
7
  export type Scalars = {
11
8
  ID: {
12
9
  input: string;
@@ -28,265 +25,227 @@ export type Scalars = {
28
25
  input: number;
29
26
  output: number;
30
27
  };
31
- /** Phone custom scalar type */
28
+ Email: {
29
+ input: string;
30
+ output: string;
31
+ };
32
32
  Phone: {
33
- input: any;
34
- output: any;
33
+ input: string;
34
+ output: string;
35
35
  };
36
- /** Date scalar type */
37
36
  Date: {
38
- input: any;
39
- output: any;
40
- };
41
- /** Email scalar type */
42
- Email: {
43
- input: any;
44
- output: any;
37
+ input: Date;
38
+ output: string;
45
39
  };
46
- /** File scalar type */
47
- File: {
40
+ Search: {
48
41
  input: any;
49
42
  output: any;
50
43
  };
51
- /** Search scalar to tokenize and search for all searchable fields */
52
- Search: {
44
+ Any: {
53
45
  input: any;
54
46
  output: any;
55
47
  };
56
- /** The Any scalar type is used in operations and types that involve any type of value. */
57
- Any: {
48
+ File: {
58
49
  input: any;
59
50
  output: any;
60
51
  };
61
52
  };
62
53
  declare enum AuthenticationProvider {
63
- Google = "google",
64
- EmailPassword = "emailPassword"
54
+ google = "google",
55
+ emailPassword = "emailPassword"
65
56
  }
66
57
  declare enum SecondaryFactor {
67
- EmailOtp = "EmailOTP"
58
+ EmailOTP = "EmailOTP"
68
59
  }
69
60
  declare enum Currency {
70
- Eur = "eur",
71
- Usd = "usd"
61
+ eur = "eur",
62
+ usd = "usd"
72
63
  }
73
- /** User class */
74
64
  export type User = {
75
- __typename?: "User";
76
65
  id: Scalars["ID"]["output"];
77
- name?: Maybe<Scalars["String"]["output"]>;
78
- age?: Maybe<Scalars["Int"]["output"]>;
79
- acl?: Maybe<UserAclObject>;
80
- createdAt?: Maybe<Scalars["Date"]["output"]>;
81
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
82
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
83
- authentication?: Maybe<UserAuthentication>;
84
- provider?: Maybe<AuthenticationProvider>;
85
- isOauth?: Maybe<Scalars["Boolean"]["output"]>;
86
- email?: Maybe<Scalars["Email"]["output"]>;
87
- verifiedEmail?: Maybe<Scalars["Boolean"]["output"]>;
88
- role?: Maybe<Role>;
89
- sessions?: Maybe<_SessionConnection>;
90
- };
91
- export type UserAclObject = {
92
- __typename?: "UserACLObject";
93
- users?: Maybe<Array<Maybe<UserAclObjectUsersAcl>>>;
94
- roles?: Maybe<Array<Maybe<UserAclObjectRolesAcl>>>;
95
- };
96
- export type UserAclObjectUsersAcl = {
97
- __typename?: "UserACLObjectUsersACL";
66
+ name?: Scalars["String"]["output"];
67
+ age?: Scalars["Int"]["output"];
68
+ acl?: UserACLObject;
69
+ createdAt?: Scalars["Date"]["output"];
70
+ updatedAt?: Scalars["Date"]["output"];
71
+ search?: Scalars["String"]["output"][];
72
+ authentication?: UserAuthentication;
73
+ provider?: AuthenticationProvider;
74
+ isOauth?: Scalars["Boolean"]["output"];
75
+ email?: Scalars["Email"]["output"];
76
+ verifiedEmail?: Scalars["Boolean"]["output"];
77
+ role?: Role;
78
+ sessions?: _SessionConnection;
79
+ };
80
+ export type UserACLObject = {
81
+ users?: UserACLObjectUsersACL[];
82
+ roles?: UserACLObjectRolesACL[];
83
+ };
84
+ export type UserACLObjectUsersACL = {
98
85
  userId: Scalars["String"]["output"];
99
86
  read: Scalars["Boolean"]["output"];
100
87
  write: Scalars["Boolean"]["output"];
101
88
  };
102
- export type UserAclObjectRolesAcl = {
103
- __typename?: "UserACLObjectRolesACL";
89
+ export type UserACLObjectRolesACL = {
104
90
  roleId: Scalars["String"]["output"];
105
91
  read: Scalars["Boolean"]["output"];
106
92
  write: Scalars["Boolean"]["output"];
107
93
  };
108
94
  export type UserAuthentication = {
109
- __typename?: "UserAuthentication";
110
- emailPassword?: Maybe<UserAuthenticationEmailPassword>;
111
- google?: Maybe<UserAuthenticationGoogle>;
95
+ emailPassword?: UserAuthenticationEmailPassword;
96
+ google?: UserAuthenticationGoogle;
112
97
  };
113
98
  export type UserAuthenticationEmailPassword = {
114
- __typename?: "UserAuthenticationEmailPassword";
115
99
  email: Scalars["Email"]["output"];
116
100
  password: Scalars["String"]["output"];
117
101
  };
118
102
  export type UserAuthenticationGoogle = {
119
- __typename?: "UserAuthenticationGoogle";
120
103
  email: Scalars["Email"]["output"];
121
104
  verifiedEmail: Scalars["Boolean"]["output"];
122
105
  idToken: Scalars["String"]["output"];
123
106
  };
124
107
  export type _SessionConnection = {
125
- __typename?: "_SessionConnection";
126
- totalCount?: Maybe<Scalars["Int"]["output"]>;
127
- edges?: Maybe<Array<Maybe<_SessionEdge>>>;
108
+ totalCount?: Scalars["Int"]["output"];
109
+ edges?: _SessionEdge[];
128
110
  };
129
111
  export type _SessionEdge = {
130
- __typename?: "_SessionEdge";
131
112
  node: _Session;
132
113
  };
133
114
  export type Post = {
134
- __typename?: "Post";
135
115
  id: Scalars["ID"]["output"];
136
116
  name: Scalars["String"]["output"];
137
- test?: Maybe<Scalars["File"]["output"]>;
138
- acl?: Maybe<PostAclObject>;
139
- createdAt?: Maybe<Scalars["Date"]["output"]>;
140
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
141
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
142
- };
143
- export type PostAclObject = {
144
- __typename?: "PostACLObject";
145
- users?: Maybe<Array<Maybe<PostAclObjectUsersAcl>>>;
146
- roles?: Maybe<Array<Maybe<PostAclObjectRolesAcl>>>;
147
- };
148
- export type PostAclObjectUsersAcl = {
149
- __typename?: "PostACLObjectUsersACL";
117
+ test?: Scalars["File"]["output"];
118
+ acl?: PostACLObject;
119
+ createdAt?: Scalars["Date"]["output"];
120
+ updatedAt?: Scalars["Date"]["output"];
121
+ search?: Scalars["String"]["output"][];
122
+ };
123
+ export type PostACLObject = {
124
+ users?: PostACLObjectUsersACL[];
125
+ roles?: PostACLObjectRolesACL[];
126
+ };
127
+ export type PostACLObjectUsersACL = {
150
128
  userId: Scalars["String"]["output"];
151
129
  read: Scalars["Boolean"]["output"];
152
130
  write: Scalars["Boolean"]["output"];
153
131
  };
154
- export type PostAclObjectRolesAcl = {
155
- __typename?: "PostACLObjectRolesACL";
132
+ export type PostACLObjectRolesACL = {
156
133
  roleId: Scalars["String"]["output"];
157
134
  read: Scalars["Boolean"]["output"];
158
135
  write: Scalars["Boolean"]["output"];
159
136
  };
160
137
  export type _Session = {
161
- __typename?: "_Session";
162
138
  id: Scalars["ID"]["output"];
163
- user?: Maybe<User>;
139
+ user?: User;
164
140
  accessToken: Scalars["String"]["output"];
165
141
  accessTokenExpiresAt: Scalars["Date"]["output"];
166
- refreshToken?: Maybe<Scalars["String"]["output"]>;
142
+ refreshToken?: Scalars["String"]["output"];
167
143
  refreshTokenExpiresAt: Scalars["Date"]["output"];
168
- acl?: Maybe<_SessionAclObject>;
169
- createdAt?: Maybe<Scalars["Date"]["output"]>;
170
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
171
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
172
- };
173
- export type _SessionAclObject = {
174
- __typename?: "_SessionACLObject";
175
- users?: Maybe<Array<Maybe<_SessionAclObjectUsersAcl>>>;
176
- roles?: Maybe<Array<Maybe<_SessionAclObjectRolesAcl>>>;
177
- };
178
- export type _SessionAclObjectUsersAcl = {
179
- __typename?: "_SessionACLObjectUsersACL";
144
+ acl?: _SessionACLObject;
145
+ createdAt?: Scalars["Date"]["output"];
146
+ updatedAt?: Scalars["Date"]["output"];
147
+ search?: Scalars["String"]["output"][];
148
+ };
149
+ export type _SessionACLObject = {
150
+ users?: _SessionACLObjectUsersACL[];
151
+ roles?: _SessionACLObjectRolesACL[];
152
+ };
153
+ export type _SessionACLObjectUsersACL = {
180
154
  userId: Scalars["String"]["output"];
181
155
  read: Scalars["Boolean"]["output"];
182
156
  write: Scalars["Boolean"]["output"];
183
157
  };
184
- export type _SessionAclObjectRolesAcl = {
185
- __typename?: "_SessionACLObjectRolesACL";
158
+ export type _SessionACLObjectRolesACL = {
186
159
  roleId: Scalars["String"]["output"];
187
160
  read: Scalars["Boolean"]["output"];
188
161
  write: Scalars["Boolean"]["output"];
189
162
  };
190
163
  export type Role = {
191
- __typename?: "Role";
192
164
  id: Scalars["ID"]["output"];
193
165
  name: Scalars["String"]["output"];
194
- users?: Maybe<UserConnection>;
195
- acl?: Maybe<RoleAclObject>;
196
- createdAt?: Maybe<Scalars["Date"]["output"]>;
197
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
198
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
166
+ users?: UserConnection;
167
+ acl?: RoleACLObject;
168
+ createdAt?: Scalars["Date"]["output"];
169
+ updatedAt?: Scalars["Date"]["output"];
170
+ search?: Scalars["String"]["output"][];
199
171
  };
200
172
  export type UserConnection = {
201
- __typename?: "UserConnection";
202
- totalCount?: Maybe<Scalars["Int"]["output"]>;
203
- edges?: Maybe<Array<Maybe<UserEdge>>>;
173
+ totalCount?: Scalars["Int"]["output"];
174
+ edges?: UserEdge[];
204
175
  };
205
176
  export type UserEdge = {
206
- __typename?: "UserEdge";
207
177
  node: User;
208
178
  };
209
- export type RoleAclObject = {
210
- __typename?: "RoleACLObject";
211
- users?: Maybe<Array<Maybe<RoleAclObjectUsersAcl>>>;
212
- roles?: Maybe<Array<Maybe<RoleAclObjectRolesAcl>>>;
179
+ export type RoleACLObject = {
180
+ users?: RoleACLObjectUsersACL[];
181
+ roles?: RoleACLObjectRolesACL[];
213
182
  };
214
- export type RoleAclObjectUsersAcl = {
215
- __typename?: "RoleACLObjectUsersACL";
183
+ export type RoleACLObjectUsersACL = {
216
184
  userId: Scalars["String"]["output"];
217
185
  read: Scalars["Boolean"]["output"];
218
186
  write: Scalars["Boolean"]["output"];
219
187
  };
220
- export type RoleAclObjectRolesAcl = {
221
- __typename?: "RoleACLObjectRolesACL";
188
+ export type RoleACLObjectRolesACL = {
222
189
  roleId: Scalars["String"]["output"];
223
190
  read: Scalars["Boolean"]["output"];
224
191
  write: Scalars["Boolean"]["output"];
225
192
  };
226
193
  export type Payment = {
227
- __typename?: "Payment";
228
194
  id: Scalars["ID"]["output"];
229
- user?: Maybe<User>;
195
+ user?: User;
230
196
  amount: Scalars["Int"]["output"];
231
197
  currency: Currency;
232
- acl?: Maybe<PaymentAclObject>;
233
- createdAt?: Maybe<Scalars["Date"]["output"]>;
234
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
235
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
236
- };
237
- export type PaymentAclObject = {
238
- __typename?: "PaymentACLObject";
239
- users?: Maybe<Array<Maybe<PaymentAclObjectUsersAcl>>>;
240
- roles?: Maybe<Array<Maybe<PaymentAclObjectRolesAcl>>>;
241
- };
242
- export type PaymentAclObjectUsersAcl = {
243
- __typename?: "PaymentACLObjectUsersACL";
198
+ acl?: PaymentACLObject;
199
+ createdAt?: Scalars["Date"]["output"];
200
+ updatedAt?: Scalars["Date"]["output"];
201
+ search?: Scalars["String"]["output"][];
202
+ };
203
+ export type PaymentACLObject = {
204
+ users?: PaymentACLObjectUsersACL[];
205
+ roles?: PaymentACLObjectRolesACL[];
206
+ };
207
+ export type PaymentACLObjectUsersACL = {
244
208
  userId: Scalars["String"]["output"];
245
209
  read: Scalars["Boolean"]["output"];
246
210
  write: Scalars["Boolean"]["output"];
247
211
  };
248
- export type PaymentAclObjectRolesAcl = {
249
- __typename?: "PaymentACLObjectRolesACL";
212
+ export type PaymentACLObjectRolesACL = {
250
213
  roleId: Scalars["String"]["output"];
251
214
  read: Scalars["Boolean"]["output"];
252
215
  write: Scalars["Boolean"]["output"];
253
216
  };
254
217
  export type _InternalConfig = {
255
- __typename?: "_InternalConfig";
256
218
  id: Scalars["ID"]["output"];
257
219
  configKey: Scalars["String"]["output"];
258
220
  configValue: Scalars["String"]["output"];
259
- description?: Maybe<Scalars["String"]["output"]>;
260
- acl?: Maybe<_InternalConfigAclObject>;
261
- createdAt?: Maybe<Scalars["Date"]["output"]>;
262
- updatedAt?: Maybe<Scalars["Date"]["output"]>;
263
- search?: Maybe<Array<Maybe<Scalars["String"]["output"]>>>;
264
- };
265
- export type _InternalConfigAclObject = {
266
- __typename?: "_InternalConfigACLObject";
267
- users?: Maybe<Array<Maybe<_InternalConfigAclObjectUsersAcl>>>;
268
- roles?: Maybe<Array<Maybe<_InternalConfigAclObjectRolesAcl>>>;
269
- };
270
- export type _InternalConfigAclObjectUsersAcl = {
271
- __typename?: "_InternalConfigACLObjectUsersACL";
221
+ description?: Scalars["String"]["output"];
222
+ acl?: _InternalConfigACLObject;
223
+ createdAt?: Scalars["Date"]["output"];
224
+ updatedAt?: Scalars["Date"]["output"];
225
+ search?: Scalars["String"]["output"][];
226
+ };
227
+ export type _InternalConfigACLObject = {
228
+ users?: _InternalConfigACLObjectUsersACL[];
229
+ roles?: _InternalConfigACLObjectRolesACL[];
230
+ };
231
+ export type _InternalConfigACLObjectUsersACL = {
272
232
  userId: Scalars["String"]["output"];
273
233
  read: Scalars["Boolean"]["output"];
274
234
  write: Scalars["Boolean"]["output"];
275
235
  };
276
- export type _InternalConfigAclObjectRolesAcl = {
277
- __typename?: "_InternalConfigACLObjectRolesACL";
236
+ export type _InternalConfigACLObjectRolesACL = {
278
237
  roleId: Scalars["String"]["output"];
279
238
  read: Scalars["Boolean"]["output"];
280
239
  write: Scalars["Boolean"]["output"];
281
240
  };
282
241
  export type SignInWithInput = {
283
- authentication?: InputMaybe<SignInWithAuthenticationInput>;
242
+ authentication?: SignInWithAuthenticationInput;
284
243
  };
285
244
  export type SignInWithAuthenticationInput = {
286
- emailPassword?: InputMaybe<SignInWithAuthenticationEmailPasswordInput>;
287
- google?: InputMaybe<SignInWithAuthenticationGoogleInput>;
288
- otp?: InputMaybe<SignInWithAuthenticationOtpInput>;
289
- secondaryFactor?: InputMaybe<SecondaryFactor>;
245
+ emailPassword?: SignInWithAuthenticationEmailPasswordInput;
246
+ google?: SignInWithAuthenticationGoogleInput;
247
+ otp?: SignInWithAuthenticationOtpInput;
248
+ secondaryFactor?: SecondaryFactor;
290
249
  };
291
250
  export type SignInWithAuthenticationEmailPasswordInput = {
292
251
  email: Scalars["Email"]["input"];
@@ -297,16 +256,16 @@ export type SignInWithAuthenticationGoogleInput = {
297
256
  codeVerifier: Scalars["String"]["input"];
298
257
  };
299
258
  export type SignInWithAuthenticationOtpInput = {
300
- code?: InputMaybe<Scalars["String"]["input"]>;
259
+ code?: Scalars["String"]["input"];
301
260
  };
302
261
  export type SignUpWithInput = {
303
- authentication?: InputMaybe<SignUpWithAuthenticationInput>;
262
+ authentication?: SignUpWithAuthenticationInput;
304
263
  };
305
264
  export type SignUpWithAuthenticationInput = {
306
- emailPassword?: InputMaybe<SignUpWithAuthenticationEmailPasswordInput>;
307
- google?: InputMaybe<SignUpWithAuthenticationGoogleInput>;
308
- otp?: InputMaybe<SignUpWithAuthenticationOtpInput>;
309
- secondaryFactor?: InputMaybe<SecondaryFactor>;
265
+ emailPassword?: SignUpWithAuthenticationEmailPasswordInput;
266
+ google?: SignUpWithAuthenticationGoogleInput;
267
+ otp?: SignUpWithAuthenticationOtpInput;
268
+ secondaryFactor?: SecondaryFactor;
310
269
  };
311
270
  export type SignUpWithAuthenticationEmailPasswordInput = {
312
271
  email: Scalars["Email"]["input"];
@@ -317,7 +276,7 @@ export type SignUpWithAuthenticationGoogleInput = {
317
276
  codeVerifier: Scalars["String"]["input"];
318
277
  };
319
278
  export type SignUpWithAuthenticationOtpInput = {
320
- code?: InputMaybe<Scalars["String"]["input"]>;
279
+ code?: Scalars["String"]["input"];
321
280
  };
322
281
  export type WabeSchemaScalars = "Phone";
323
282
  export type WabeSchemaEnums = "RoleEnum" | "AuthenticationProvider" | "SecondaryFactor" | "PaymentMode" | "PaymentReccuringInterval" | "Currency";
@@ -336,122 +295,130 @@ export interface WabeContext<T extends WabeTypes> {
336
295
  isRoot: boolean;
337
296
  wabe: Wabe<T>;
338
297
  }
339
- export type WhereAggregation<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K | "id", {
340
- equalTo?: any;
341
- notEqualTo?: any;
342
- greaterThan?: any;
343
- lessThan?: any;
344
- greaterThanOrEqualTo?: any;
345
- lessThanOrEqualTo?: any;
346
- in?: any[];
347
- notIn?: any[];
348
- contains?: any;
349
- notContains?: any;
350
- }>;
351
- export type WhereConditional<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = {
298
+ export type IsScalar<T> = T extends Scalars["String"]["output"] | Scalars["Int"]["output"] | Scalars["Boolean"]["output"] | Scalars["Date"]["output"] ? true : false;
299
+ export type ExtractType<T extends WabeTypes, ClassName extends keyof T["types"], FieldName extends keyof T["types"][ClassName]> = T["types"][ClassName][FieldName];
300
+ export type WhereScalar<T> = {
301
+ equalTo?: T;
302
+ notEqualTo?: T;
303
+ greaterThan?: T;
304
+ lessThan?: T;
305
+ greaterThanOrEqualTo?: T;
306
+ lessThanOrEqualTo?: T;
307
+ in?: T[];
308
+ notIn?: T[];
309
+ contains?: T;
310
+ notContains?: T;
311
+ };
312
+ export type WhereObject<T> = {
313
+ [P in keyof T]: IsScalar<T[P]> extends false ? WhereObject<Partial<T[P]>> : WhereScalar<T[P]>;
314
+ };
315
+ export type WhereAggregation<T extends WabeTypes, K extends keyof T["types"]> = {
316
+ [P in keyof T["types"][K]]: IsScalar<ExtractType<T, K, P>> extends false ? WhereObject<Partial<ExtractType<T, K, P>>> : WhereScalar<ExtractType<T, K, P>>;
317
+ };
318
+ export type WhereConditional<T extends WabeTypes, K extends keyof T["types"]> = {
352
319
  OR?: Array<WhereType<T, K>>;
353
320
  AND?: Array<WhereType<T, K>>;
354
321
  };
355
- export type WhereType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Partial<WhereAggregation<T, K>> & WhereConditional<T, K>;
356
- export type OrderType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K, "ASC" | "DESC">;
322
+ export type WhereType<T extends WabeTypes, K extends keyof T["types"]> = Partial<WhereAggregation<T, K>> & WhereConditional<T, K>;
323
+ export type OrderType<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> = Record<U, "ASC" | "DESC">;
357
324
  export interface AdapterOptions {
358
325
  databaseUrl: string;
359
326
  databaseName: string;
360
327
  }
361
- export type MutationData<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K, any>;
362
- export interface CountOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> {
363
- className: T;
328
+ export type MutationData<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> = Record<U, any>;
329
+ export interface CountOptions<T extends WabeTypes, K extends keyof T["types"]> {
330
+ className: K;
364
331
  where?: WhereType<T, K>;
365
332
  context: WabeContext<any>;
366
333
  }
367
- export interface GetObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> {
368
- className: T;
334
+ export interface GetObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> {
335
+ className: K;
369
336
  id: string;
370
337
  where?: WhereType<T, K>;
371
- fields: Array<K | "*">;
338
+ fields: Array<U | "*">;
372
339
  context: WabeContext<any>;
373
340
  skipHooks?: boolean;
374
341
  }
375
- export interface GetObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
376
- className: T;
377
- where?: WhereType<T, W>;
378
- order?: OrderType<T, X>;
379
- fields: Array<K | "*">;
342
+ export interface GetObjectsOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]> {
343
+ className: K;
344
+ where?: WhereType<T, K>;
345
+ order?: OrderType<T, K, U>;
346
+ fields: Array<W | "*">;
380
347
  offset?: number;
381
348
  first?: number;
382
349
  context: WabeContext<any>;
383
350
  skipHooks?: boolean;
384
351
  }
385
- export interface CreateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
386
- className: T;
387
- data: MutationData<T, W>;
388
- fields: Array<K | "*">;
352
+ export interface CreateObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]> {
353
+ className: K;
354
+ data: MutationData<T, K, U>;
355
+ fields: Array<W | "*">;
389
356
  context: WabeContext<any>;
390
357
  }
391
- export interface CreateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
392
- className: T;
393
- data: Array<MutationData<T, W>>;
394
- fields: Array<K | "*">;
358
+ export interface CreateObjectsOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]> {
359
+ className: K;
360
+ data: Array<MutationData<T, K, U>>;
361
+ fields: Array<W | "*">;
395
362
  offset?: number;
396
363
  first?: number;
397
- order?: OrderType<T, X>;
364
+ order?: OrderType<T, U, X>;
398
365
  context: WabeContext<any>;
399
366
  }
400
- export interface UpdateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
401
- className: T;
367
+ export interface UpdateObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]> {
368
+ className: K;
402
369
  id: string;
403
- where?: WhereType<T, W>;
404
- data: MutationData<T, W>;
405
- fields: Array<K | "*">;
370
+ where?: WhereType<T, K>;
371
+ data: MutationData<T, K, U>;
372
+ fields: Array<W | "*">;
406
373
  context: WabeContext<any>;
407
374
  }
408
- export interface UpdateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
409
- className: T;
410
- where: WhereType<T, W>;
411
- order?: OrderType<T, X>;
412
- data: MutationData<T, W>;
413
- fields: Array<K | "*">;
375
+ export interface UpdateObjectsOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]> {
376
+ className: K;
377
+ where: WhereType<T, K>;
378
+ order?: OrderType<T, K, X>;
379
+ data: MutationData<T, K, U>;
380
+ fields: Array<W | "*">;
414
381
  offset?: number;
415
382
  first?: number;
416
383
  context: WabeContext<any>;
417
384
  }
418
- export interface DeleteObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
419
- className: T;
385
+ export interface DeleteObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> {
386
+ className: K;
420
387
  id: string;
421
- where?: WhereType<T, W>;
422
- fields: Array<K | "*">;
388
+ where?: WhereType<T, K>;
389
+ fields: Array<U | "*">;
423
390
  context: WabeContext<any>;
424
391
  }
425
- export interface DeleteObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]> {
426
- className: T;
427
- where: WhereType<T, W>;
428
- order?: OrderType<T, X>;
429
- fields: Array<K | "*">;
392
+ export interface DeleteObjectsOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]> {
393
+ className: K;
394
+ where: WhereType<T, K>;
395
+ order?: OrderType<T, K, U>;
396
+ fields: Array<W | "*">;
430
397
  offset?: number;
431
398
  first?: number;
432
399
  context: WabeContext<any>;
433
400
  }
434
- export type OutputType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Pick<WabeTypes["types"][T], K> & {
401
+ export type OutputType<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> = Pick<T["types"][K], U> & {
435
402
  id: string;
436
403
  };
437
- export interface DatabaseAdapter {
404
+ export interface DatabaseAdapter<T extends WabeTypes> {
438
405
  connect(): Promise<any>;
439
406
  close(): Promise<any>;
440
407
  createClassIfNotExist(className: string, context: WabeContext<any>): Promise<any>;
441
408
  clearDatabase(): Promise<void>;
442
- count<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: CountOptions<T, K>): Promise<number>;
443
- getObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: GetObjectOptions<T, K>): Promise<OutputType<T, K>>;
444
- getObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: GetObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
445
- createObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: CreateObjectOptions<T, K, W>): Promise<OutputType<T, K>>;
446
- createObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: CreateObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
447
- updateObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: UpdateObjectOptions<T, K, W>): Promise<OutputType<T, K>>;
448
- updateObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: UpdateObjectsOptions<T, K, W, X>): Promise<OutputType<T, K>[]>;
449
- deleteObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: DeleteObjectOptions<T, K, W>): Promise<void>;
450
- deleteObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T], X extends keyof WabeTypes["types"][T]>(params: DeleteObjectsOptions<T, K, W, X>): Promise<void>;
409
+ count<T extends WabeTypes, K extends keyof T["types"]>(params: CountOptions<T, K>): Promise<number>;
410
+ getObject<K extends keyof T["types"], U extends keyof T["types"][K]>(params: GetObjectOptions<T, K, U>): Promise<OutputType<T, K, U>>;
411
+ getObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: GetObjectsOptions<T, K, U, W>): Promise<OutputType<T, K, W>[]>;
412
+ createObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: CreateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
413
+ createObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>(params: CreateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
414
+ updateObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: UpdateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
415
+ updateObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>(params: UpdateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
416
+ deleteObject<K extends keyof T["types"], U extends keyof T["types"][K]>(params: DeleteObjectOptions<T, K, U>): Promise<void>;
417
+ deleteObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: DeleteObjectsOptions<T, K, U, W>): Promise<void>;
451
418
  }
452
- export declare const buildMongoOrderQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(order?: OrderType<T, K>) => Record<string, any>;
453
- export declare const buildMongoWhereQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(where?: WhereType<T, K>) => Record<string, any>;
454
- export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapter {
419
+ export declare const buildMongoOrderQuery: <T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]>(order?: OrderType<T, K, U>) => Record<string, any>;
420
+ export declare const buildMongoWhereQuery: <T extends WabeTypes, K extends keyof T["types"]>(where?: WhereType<T, K>) => Record<string, any>;
421
+ export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapter<T> {
455
422
  options: AdapterOptions;
456
423
  database?: Db;
457
424
  private client;
@@ -459,16 +426,16 @@ export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapte
459
426
  connect(): Promise<MongoClient>;
460
427
  close(): Promise<void>;
461
428
  createClassIfNotExist(className: keyof T["types"], context: WabeContext<T>): Promise<import("mongodb").Collection<import("bson").Document>>;
462
- count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
429
+ count<K extends keyof T["types"]>(params: CountOptions<T, K>): Promise<number>;
463
430
  clearDatabase(): Promise<void>;
464
- getObject<U extends keyof T["types"], K extends keyof T["types"][U]>(params: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
465
- getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: GetObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
466
- createObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: CreateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
467
- createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: CreateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
468
- updateObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: UpdateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
469
- updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: UpdateObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
470
- deleteObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: DeleteObjectOptions<U, K, W>): Promise<void>;
471
- deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>(params: DeleteObjectsOptions<U, K, W, X>): Promise<void>;
431
+ getObject<K extends keyof T["types"], U extends keyof T["types"][K]>(params: GetObjectOptions<T, K, U>): Promise<OutputType<T, K, U>>;
432
+ getObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: GetObjectsOptions<T, K, U, W>): Promise<OutputType<T, K, W>[]>;
433
+ createObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: CreateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
434
+ createObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>(params: CreateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
435
+ updateObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>(params: UpdateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
436
+ updateObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>(params: UpdateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
437
+ deleteObject<K extends keyof T["types"], U extends keyof T["types"][K]>(params: DeleteObjectOptions<T, K, U>): Promise<void>;
438
+ deleteObjects<K extends keyof T["types"], U extends keyof T["types"][U], W extends keyof T["types"][U]>(params: DeleteObjectsOptions<T, K, U, W>): Promise<void>;
472
439
  }
473
440
  export interface InMemoryCacheOptions {
474
441
  /**
@@ -496,45 +463,188 @@ export interface PointerFields {
496
463
  pointers: PointerObject;
497
464
  }
498
465
  export declare class DatabaseController<T extends WabeTypes> {
499
- adapter: DatabaseAdapter;
500
- inMemoryCache: InMemoryCache<OutputType<any, any> | undefined>;
501
- constructor(adapter: DatabaseAdapter);
466
+ adapter: DatabaseAdapter<T>;
467
+ inMemoryCache: InMemoryCache<OutputType<T, any, any> | undefined>;
468
+ constructor(adapter: DatabaseAdapter<T>);
502
469
  connect(): Promise<any>;
503
470
  close(): Promise<any>;
504
471
  createClassIfNotExist(className: string, context: WabeContext<T>): Promise<any>;
505
472
  _getPointerObject(className: keyof T["types"], fields: string[], context: WabeContext<T>): PointerFields;
506
- _isRelationField<U extends keyof T["types"]>(originClassName: U, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
507
- _isPointerField<U extends keyof T["types"]>(originClassName: U, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
508
- _getFinalObjectWithPointer<U extends keyof T["types"], K extends keyof T["types"][U]>(objectData: OutputType<U, K> | null, pointersObject: PointerObject, originClassName: U, context: WabeContext<T>): Promise<Record<any, any>>;
509
- _getWhereObjectWithPointerOrRelation<U extends keyof T["types"], K extends keyof T["types"][U]>(className: U, where: WhereType<U, K>, context: WabeContext<T>): Promise<Partial<{
510
- [P in "id" | K]: {
511
- equalTo?: any;
512
- notEqualTo?: any;
513
- greaterThan?: any;
514
- lessThan?: any;
515
- greaterThanOrEqualTo?: any;
516
- lessThanOrEqualTo?: any;
517
- in?: any[] | undefined;
518
- notIn?: any[] | undefined;
519
- contains?: any;
520
- notContains?: any;
473
+ _isRelationField<K extends keyof T["types"]>(originClassName: K, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
474
+ _isPointerField<K extends keyof T["types"]>(originClassName: K, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
475
+ _getFinalObjectWithPointer<K extends keyof T["types"], U extends keyof T["types"][K]>(objectData: OutputType<T, K, U> | null, pointersObject: PointerObject, originClassName: K, context: WabeContext<T>): Promise<Record<any, any>>;
476
+ _getWhereObjectWithPointerOrRelation<U extends keyof T["types"]>(className: U, where: WhereType<T, U>, context: WabeContext<T>): Promise<Partial<{
477
+ [P in keyof T["types"][U]]: (T["types"][U][P] extends infer T_1 ? T_1 extends T["types"][U][P] ? T_1 extends string | number | boolean ? true : false : never : never) extends false ? Partial<T["types"][U][P]> extends infer T_2 ? {
478
+ [P_1 in keyof T_2]: (Partial<T["types"][U][P]>[P_1] extends infer T_3 ? T_3 extends Partial<T["types"][U][P]>[P_1] ? T_3 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<T["types"][U][P]>[P_1]> extends infer T_4 ? {
479
+ [P_2 in keyof T_4]: (Partial<Partial<T["types"][U][P]>[P_1]>[P_2] extends infer T_5 ? T_5 extends Partial<Partial<T["types"][U][P]>[P_1]>[P_2] ? T_5 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]> extends infer T_6 ? {
480
+ [P_3 in keyof T_6]: (Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] extends infer T_7 ? T_7 extends Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] ? T_7 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]> extends infer T_8 ? {
481
+ [P_4 in keyof T_8]: (Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] extends infer T_9 ? T_9 extends Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] ? T_9 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]> extends infer T_10 ? {
482
+ [P_5 in keyof T_10]: (Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] extends infer T_11 ? T_11 extends Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] ? T_11 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]> extends infer T_12 ? {
483
+ [P_6 in keyof T_12]: (Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] extends infer T_13 ? T_13 extends Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] ? T_13 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]> extends infer T_14 ? {
484
+ [P_7 in keyof T_14]: (Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] extends infer T_15 ? T_15 extends Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] ? T_15 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]> extends infer T_16 ? {
485
+ [P_8 in keyof T_16]: (Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] extends infer T_17 ? T_17 extends Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] ? T_17 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]> extends infer T_18 ? {
486
+ [P_9 in keyof T_18]: (Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] extends infer T_19 ? T_19 extends Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] ? T_19 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]> extends infer T_20 ? {
487
+ [P_10 in keyof T_20]: (Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] extends infer T_21 ? T_21 extends Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] ? T_21 extends string | number | boolean ? true : false : never : never) extends false ? Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]> extends infer T_22 ? {
488
+ [P_11 in keyof T_22]: (Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] extends infer T_23 ? T_23 extends Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] ? T_23 extends string | number | boolean ? true : false : never : never) extends false ? any : {
489
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
490
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
491
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
492
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
493
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
494
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
495
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11][] | undefined;
496
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11][] | undefined;
497
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
498
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10]>[P_11] | undefined;
499
+ };
500
+ } : never : {
501
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
502
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
503
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
504
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
505
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
506
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
507
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10][] | undefined;
508
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10][] | undefined;
509
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
510
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9]>[P_10] | undefined;
511
+ };
512
+ } : never : {
513
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
514
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
515
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
516
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
517
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
518
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
519
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9][] | undefined;
520
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9][] | undefined;
521
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
522
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8]>[P_9] | undefined;
523
+ };
524
+ } : never : {
525
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
526
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
527
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
528
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
529
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
530
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
531
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8][] | undefined;
532
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8][] | undefined;
533
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
534
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7]>[P_8] | undefined;
535
+ };
536
+ } : never : {
537
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
538
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
539
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
540
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
541
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
542
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
543
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7][] | undefined;
544
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7][] | undefined;
545
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
546
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6]>[P_7] | undefined;
547
+ };
548
+ } : never : {
549
+ equalTo?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
550
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
551
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
552
+ lessThan?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
553
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
554
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
555
+ in?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6][] | undefined;
556
+ notIn?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6][] | undefined;
557
+ contains?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
558
+ notContains?: Partial<Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5]>[P_6] | undefined;
559
+ };
560
+ } : never : {
561
+ equalTo?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
562
+ notEqualTo?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
563
+ greaterThan?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
564
+ lessThan?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
565
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
566
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
567
+ in?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5][] | undefined;
568
+ notIn?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5][] | undefined;
569
+ contains?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
570
+ notContains?: Partial<Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4]>[P_5] | undefined;
571
+ };
572
+ } : never : {
573
+ equalTo?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
574
+ notEqualTo?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
575
+ greaterThan?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
576
+ lessThan?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
577
+ greaterThanOrEqualTo?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
578
+ lessThanOrEqualTo?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
579
+ in?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4][] | undefined;
580
+ notIn?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4][] | undefined;
581
+ contains?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
582
+ notContains?: Partial<Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3]>[P_4] | undefined;
583
+ };
584
+ } : never : {
585
+ equalTo?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
586
+ notEqualTo?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
587
+ greaterThan?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
588
+ lessThan?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
589
+ greaterThanOrEqualTo?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
590
+ lessThanOrEqualTo?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
591
+ in?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3][] | undefined;
592
+ notIn?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3][] | undefined;
593
+ contains?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
594
+ notContains?: Partial<Partial<Partial<T["types"][U][P]>[P_1]>[P_2]>[P_3] | undefined;
595
+ };
596
+ } : never : {
597
+ equalTo?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
598
+ notEqualTo?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
599
+ greaterThan?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
600
+ lessThan?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
601
+ greaterThanOrEqualTo?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
602
+ lessThanOrEqualTo?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
603
+ in?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2][] | undefined;
604
+ notIn?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2][] | undefined;
605
+ contains?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
606
+ notContains?: Partial<Partial<T["types"][U][P]>[P_1]>[P_2] | undefined;
607
+ };
608
+ } : never : {
609
+ equalTo?: Partial<T["types"][U][P]>[P_1] | undefined;
610
+ notEqualTo?: Partial<T["types"][U][P]>[P_1] | undefined;
611
+ greaterThan?: Partial<T["types"][U][P]>[P_1] | undefined;
612
+ lessThan?: Partial<T["types"][U][P]>[P_1] | undefined;
613
+ greaterThanOrEqualTo?: Partial<T["types"][U][P]>[P_1] | undefined;
614
+ lessThanOrEqualTo?: Partial<T["types"][U][P]>[P_1] | undefined;
615
+ in?: Partial<T["types"][U][P]>[P_1][] | undefined;
616
+ notIn?: Partial<T["types"][U][P]>[P_1][] | undefined;
617
+ contains?: Partial<T["types"][U][P]>[P_1] | undefined;
618
+ notContains?: Partial<T["types"][U][P]>[P_1] | undefined;
619
+ };
620
+ } : never : {
621
+ equalTo?: T["types"][U][P] | undefined;
622
+ notEqualTo?: T["types"][U][P] | undefined;
623
+ greaterThan?: T["types"][U][P] | undefined;
624
+ lessThan?: T["types"][U][P] | undefined;
625
+ greaterThanOrEqualTo?: T["types"][U][P] | undefined;
626
+ lessThanOrEqualTo?: T["types"][U][P] | undefined;
627
+ in?: T["types"][U][P][] | undefined;
628
+ notIn?: T["types"][U][P][] | undefined;
629
+ contains?: T["types"][U][P] | undefined;
630
+ notContains?: T["types"][U][P] | undefined;
521
631
  };
522
632
  }> & {
523
- OR?: WhereType<U, K>[] | undefined;
524
- AND?: WhereType<U, K>[] | undefined;
633
+ OR?: WhereType<T, U>[] | undefined;
634
+ AND?: WhereType<T, U>[] | undefined;
525
635
  }>;
526
- _buildWhereWithACL<U extends keyof T["types"], K extends keyof T["types"][U]>(where: WhereType<U, K>, context: WabeContext<T>, operation: "write" | "read"): WhereType<U, K>;
527
- _buildCacheKey<U extends keyof T["types"]>(className: U, id: string, fields: Array<string>): string;
528
- count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
636
+ _buildWhereWithACL<K extends keyof T["types"]>(where: WhereType<T, K>, context: WabeContext<T>, operation: "write" | "read"): WhereType<T, K>;
637
+ _buildCacheKey<K extends keyof T["types"]>(className: K, id: string, fields: Array<string>): string;
638
+ count<K extends keyof T["types"]>(params: CountOptions<T, K>): Promise<number>;
529
639
  clearDatabase(): Promise<void>;
530
- getObject<U extends keyof T["types"], K extends keyof T["types"][U]>({ fields, className, context, skipHooks, id, where, }: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
531
- getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, fields, context, where, skipHooks, first, offset, order, }: GetObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
532
- createObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, context, data, fields }: CreateObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
533
- createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ data, fields, className, context, first, offset, order, }: CreateObjectsOptions<U, K, W, X>): Promise<OutputType<any, K>[]>;
534
- updateObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ id, className, context, data, fields }: UpdateObjectOptions<U, K, W>): Promise<OutputType<keyof T["types"], K>>;
535
- updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, where, context, fields, data, first, offset, order, }: UpdateObjectsOptions<U, K, W, X>): Promise<OutputType<any, K>[]>;
536
- deleteObject<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ context, className, id, fields }: DeleteObjectOptions<U, K, W>): Promise<OutputType<U, K>>;
537
- deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U], X extends keyof T["types"][U]>({ className, context, fields, where, first, offset, order, }: DeleteObjectsOptions<U, K, W, X>): Promise<OutputType<U, K>[]>;
640
+ getObject<K extends keyof T["types"], U extends keyof T["types"][K]>({ fields, className, context, skipHooks, id, where, }: GetObjectOptions<T, K, U>): Promise<OutputType<T, K, U>>;
641
+ getObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>({ className, fields, context, where, skipHooks, first, offset, order, }: GetObjectsOptions<T, K, U, W>): Promise<OutputType<T, K, W>[]>;
642
+ createObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>({ className, context, data, fields, }: CreateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
643
+ createObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>({ data, fields, className, context, first, offset, order, }: CreateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
644
+ updateObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>({ id, className, context, data, fields, }: UpdateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
645
+ updateObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K], X extends keyof T["types"][K]>({ className, where, context, fields, data, first, offset, order, }: UpdateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
646
+ deleteObject<K extends keyof T["types"], U extends keyof T["types"][K]>({ context, className, id, fields, }: DeleteObjectOptions<T, K, U>): Promise<OutputType<T, K, U>>;
647
+ deleteObjects<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>({ className, context, fields, where, first, offset, order, }: DeleteObjectsOptions<T, K, U, W>): Promise<OutputType<T, K, W>[]>;
538
648
  }
539
649
  export declare enum DatabaseEnum {
540
650
  Mongo = "mongo"
@@ -544,6 +654,11 @@ export interface DatabaseConfig {
544
654
  url: string;
545
655
  name: string;
546
656
  }
657
+ export interface DevWabeTypes extends WabeTypes {
658
+ types: WabeSchemaTypes;
659
+ scalars: WabeSchemaScalars;
660
+ enums: WabeSchemaEnums;
661
+ }
547
662
  export declare enum OperationType {
548
663
  AfterCreate = "afterCreate",
549
664
  AfterUpdate = "afterUpdate",
@@ -566,32 +681,26 @@ export declare const _findHooksByPriority: <T extends unknown>({ className, oper
566
681
  priority: number;
567
682
  config: WabeConfig<any>;
568
683
  }) => Promise<Hook<any, any>[]>;
569
- export declare const initializeHook: <T extends unknown>({ className, newData, context, }: {
570
- className: T;
571
- newData?: MutationData<any, any> | undefined;
684
+ export declare const initializeHook: <T extends WabeTypes, K extends keyof T["types"]>({ className, newData, context, }: {
685
+ className: K;
686
+ newData?: MutationData<DevWabeTypes, any, any> | undefined;
572
687
  context: WabeContext<any>;
573
688
  }) => {
574
689
  runOnSingleObject: ({ operationType, id, object: inputObject, }: {
575
690
  operationType: OperationType;
576
691
  id?: string | undefined;
577
- object?: OutputType<any, any> | undefined;
578
- }) => Promise<{
579
- object: undefined;
580
- newData: {};
581
- } | {
582
- object: OutputType<any, any>;
583
- newData: MutationData<T, keyof WabeSchemaTypes[T]>;
584
- }>;
692
+ object?: OutputType<DevWabeTypes, any, any> | undefined;
693
+ }) => Promise<MutationData<T, K, any>>;
585
694
  runOnMultipleObjects: ({ operationType, where, objects: inputObjects, }: {
586
695
  operationType: OperationType;
587
696
  where?: WhereType<any, any> | undefined;
588
- objects?: OutputType<any, any>[] | undefined;
697
+ objects?: OutputType<DevWabeTypes, any, any>[] | undefined;
589
698
  }) => Promise<{
590
699
  objects: never[];
591
- newData: MutationData<any, any>[];
700
+ newData: MutationData<DevWabeTypes, any, any>[];
592
701
  } | {
593
- objects: OutputType<any, any>[];
594
- newData: Awaited<MutationData<T, keyof WabeSchemaTypes[T]>>[];
702
+ objects: OutputType<DevWabeTypes, any, any>[];
703
+ newData: Awaited<MutationData<DevWabeTypes, K, keyof WabeSchemaTypes[K]>>[];
595
704
  }>;
596
705
  };
597
706
  export declare const getDefaultHooks: () => Hook<any, any>[];
@@ -603,7 +712,7 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
603
712
  object: Partial<Record<keyof T["types"][K], any>>;
604
713
  constructor({ newData, className, operationType, context, object, }: {
605
714
  className: K;
606
- newData?: MutationData<K, keyof T["types"][K]>;
715
+ newData?: MutationData<T, K, keyof T["types"][K]>;
607
716
  operationType: OperationType;
608
717
  context: WabeContext<T>;
609
718
  object: Partial<Record<keyof T["types"][K], any>>;
@@ -611,7 +720,7 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
611
720
  getUser(): User | null | undefined;
612
721
  isFieldUpdate(field: keyof T["types"][K]): boolean | undefined;
613
722
  upsertNewData(field: keyof T["types"][K], value: any): void;
614
- getNewData(): MutationData<K, keyof T["types"][K]>;
723
+ getNewData(): MutationData<T, K, keyof T["types"][K]>;
615
724
  }
616
725
  export type WabePrimaryTypes = "String" | "Int" | "Float" | "Boolean" | "Email" | "Date" | "File";
617
726
  export type WabeCustomTypes = "Array" | "Object";
@@ -883,11 +992,6 @@ export interface WabeRoute {
883
992
  path: string;
884
993
  handler: WobeHandler<WobeCustomContext<any>>;
885
994
  }
886
- export type DevWabeTypes = {
887
- types: WabeSchemaTypes;
888
- scalars: WabeSchemaScalars;
889
- enums: WabeSchemaEnums;
890
- };
891
995
  export declare const generateCodegen: ({ schema, path, graphqlSchema, }: {
892
996
  schema: SchemaInterface<any>;
893
997
  path: string;
@@ -954,8 +1058,8 @@ export type Address = {
954
1058
  state: string;
955
1059
  };
956
1060
  export declare enum PaymentMode {
957
- Payment = "payment",
958
- Subscription = "subscription"
1061
+ payment = "payment",
1062
+ subscription = "subscription"
959
1063
  }
960
1064
  export type PaymentMethod = "card" | "paypal" | "link" | "sepa_debit" | "revolut_pay" | "us_bank_account";
961
1065
  export declare enum PaymentReccuringInterval {
@@ -968,36 +1072,27 @@ export type Product = {
968
1072
  quantity: number;
969
1073
  };
970
1074
  export interface OnPaymentSucceedOptions {
971
- created: string;
1075
+ createdAt: number;
972
1076
  amount: number;
973
1077
  customerEmail: string | null;
974
- billingDetails: {
975
- address: {
976
- city: string | null;
977
- country: string | null;
978
- line1: string | null;
979
- line2: string | null;
980
- postalCode: string | null;
981
- state: string | null;
982
- };
983
- name: string | null;
984
- phone: string | null;
985
- };
986
1078
  currency: string;
987
1079
  paymentMethodTypes: Array<string>;
988
1080
  }
989
1081
  export interface OnPaymentFailedOptions {
990
- created: string;
1082
+ createdAt: number;
991
1083
  amount: number;
992
- messageError: string;
993
1084
  paymentMethodTypes: Array<string>;
994
1085
  }
1086
+ /**
1087
+ * PaymentConfig
1088
+ * @property adapter - The payment adapter
1089
+ * @property supportedPaymentMethods - The supported payment methods
1090
+ * @property currency - The currency
1091
+ */
995
1092
  export interface PaymentConfig {
996
1093
  adapter: PaymentAdapter;
997
1094
  supportedPaymentMethods: Array<PaymentMethod>;
998
1095
  currency: Currency$1;
999
- onPaymentSucceed?: (options: OnPaymentSucceedOptions) => Promise<void>;
1000
- onPaymentFailed?: (options: OnPaymentFailedOptions) => Promise<void>;
1001
1096
  }
1002
1097
  export type Invoice = {
1003
1098
  amountDue: number;
@@ -1056,6 +1151,36 @@ export type GetAllTransactionsOptions = {
1056
1151
  export type GetCustomerByIdOptions = {
1057
1152
  id: string;
1058
1153
  };
1154
+ export type ValidateWebhookOptions = {
1155
+ ctx: Context;
1156
+ endpointSecret: string;
1157
+ };
1158
+ /**
1159
+ * ValidateWebhookOutput
1160
+ * @property valid - Whether the webhook is valid or not
1161
+ * @property payload - The payload of the webhook
1162
+ * @property type - The type of the webhook
1163
+ * @property customerId - The customer id
1164
+ * @property createdAt - The created at timestamp in seconds
1165
+ * @property currency - The currency
1166
+ * @property amount - The amount
1167
+ * @property paymentMethod - The payment method
1168
+ */
1169
+ export type ValidateWebhookOutput = {
1170
+ isValid: boolean;
1171
+ payload: {
1172
+ type: string;
1173
+ customerId?: string;
1174
+ createdAt?: number;
1175
+ currency?: string;
1176
+ amount?: number;
1177
+ paymentMethod?: Array<string>;
1178
+ };
1179
+ };
1180
+ export type InitWebhookOutput = {
1181
+ webhookId: string;
1182
+ endpointSecret: string;
1183
+ };
1059
1184
  export interface PaymentAdapter {
1060
1185
  /**
1061
1186
  * Get a customer by id
@@ -1106,10 +1231,11 @@ export interface PaymentAdapter {
1106
1231
  */
1107
1232
  getHypotheticalSubscriptionRevenue: () => Promise<number>;
1108
1233
  /**
1109
- * Init the webhook for succeed and failed payments
1110
- * @param options The webhook url
1234
+ * Check if the request on webhook is from a valid provier
1235
+ * @param ctx The Wobe context of the request
1236
+ * @returns True if the request is from a valid provider, false otherwise
1111
1237
  */
1112
- initWebhook: (options: InitWebhookOptions) => Promise<void>;
1238
+ validateWebhook: (options: ValidateWebhookOptions) => Promise<ValidateWebhookOutput>;
1113
1239
  }
1114
1240
  declare class PaymentController implements PaymentAdapter {
1115
1241
  private adapter;
@@ -1118,7 +1244,7 @@ declare class PaymentController implements PaymentAdapter {
1118
1244
  getCustomerById(options: GetCustomerByIdOptions): Promise<{
1119
1245
  email: string | null;
1120
1246
  }>;
1121
- initWebhook({ webhookUrl }: InitWebhookOptions): Promise<void>;
1247
+ validateWebhook(ctx: any): Promise<ValidateWebhookOutput>;
1122
1248
  createCustomer(options: CreateCustomerOptions): Promise<string>;
1123
1249
  createPayment(options: Omit<CreatePaymentOptions, "currency" | "paymentMethod">): Promise<string>;
1124
1250
  cancelSubscription(options: CancelSubscriptionOptions): Promise<void>;
@@ -1167,7 +1293,7 @@ export declare class Wabe<T extends WabeTypes> {
1167
1293
  loadRoleEnum(): void;
1168
1294
  loadAuthenticationMethods(): void;
1169
1295
  loadHooks(): void;
1170
- loadDefaultRoutes(): void;
1296
+ loadRoutes(): void;
1171
1297
  start(): Promise<void>;
1172
1298
  close(): Promise<void>;
1173
1299
  }
@@ -1206,7 +1332,7 @@ export declare class OAuth2Client {
1206
1332
  state?: string;
1207
1333
  codeVerifier?: string;
1208
1334
  scopes?: string[];
1209
- }): Promise<URL>;
1335
+ }): URL;
1210
1336
  validateAuthorizationCode<_TokenResponseBody extends TokenResponseBody>(authorizationCode: string, options?: {
1211
1337
  codeVerifier?: string;
1212
1338
  credentials?: string;
@@ -1248,6 +1374,15 @@ export declare class Google implements OAuth2ProviderWithPKCE {
1248
1374
  verifiedEmail: any;
1249
1375
  }>;
1250
1376
  }
1377
+ export declare class PaymentDevAdapter implements PaymentAdapter {
1378
+ getCustomerById(): Promise<{
1379
+ email: string;
1380
+ }>;
1381
+ validateWebhook(): Promise<{
1382
+ isValid: boolean;
1383
+ payload: {};
1384
+ }>;
1385
+ }
1251
1386
 
1252
1387
  export {
1253
1388
  AuthenticationProvider$1 as AuthenticationProvider,