wabe 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,237 +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 = {
213
+ roleId: Scalars["String"]["output"];
214
+ read: Scalars["Boolean"]["output"];
215
+ write: Scalars["Boolean"]["output"];
216
+ };
217
+ export type _InternalConfig = {
218
+ id: Scalars["ID"]["output"];
219
+ configKey: Scalars["String"]["output"];
220
+ configValue: Scalars["String"]["output"];
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 = {
232
+ userId: Scalars["String"]["output"];
233
+ read: Scalars["Boolean"]["output"];
234
+ write: Scalars["Boolean"]["output"];
235
+ };
236
+ export type _InternalConfigACLObjectRolesACL = {
250
237
  roleId: Scalars["String"]["output"];
251
238
  read: Scalars["Boolean"]["output"];
252
239
  write: Scalars["Boolean"]["output"];
253
240
  };
254
241
  export type SignInWithInput = {
255
- authentication?: InputMaybe<SignInWithAuthenticationInput>;
242
+ authentication?: SignInWithAuthenticationInput;
256
243
  };
257
244
  export type SignInWithAuthenticationInput = {
258
- emailPassword?: InputMaybe<SignInWithAuthenticationEmailPasswordInput>;
259
- google?: InputMaybe<SignInWithAuthenticationGoogleInput>;
260
- otp?: InputMaybe<SignInWithAuthenticationOtpInput>;
261
- secondaryFactor?: InputMaybe<SecondaryFactor>;
245
+ emailPassword?: SignInWithAuthenticationEmailPasswordInput;
246
+ google?: SignInWithAuthenticationGoogleInput;
247
+ otp?: SignInWithAuthenticationOtpInput;
248
+ secondaryFactor?: SecondaryFactor;
262
249
  };
263
250
  export type SignInWithAuthenticationEmailPasswordInput = {
264
251
  email: Scalars["Email"]["input"];
@@ -269,16 +256,16 @@ export type SignInWithAuthenticationGoogleInput = {
269
256
  codeVerifier: Scalars["String"]["input"];
270
257
  };
271
258
  export type SignInWithAuthenticationOtpInput = {
272
- code?: InputMaybe<Scalars["String"]["input"]>;
259
+ code?: Scalars["String"]["input"];
273
260
  };
274
261
  export type SignUpWithInput = {
275
- authentication?: InputMaybe<SignUpWithAuthenticationInput>;
262
+ authentication?: SignUpWithAuthenticationInput;
276
263
  };
277
264
  export type SignUpWithAuthenticationInput = {
278
- emailPassword?: InputMaybe<SignUpWithAuthenticationEmailPasswordInput>;
279
- google?: InputMaybe<SignUpWithAuthenticationGoogleInput>;
280
- otp?: InputMaybe<SignUpWithAuthenticationOtpInput>;
281
- secondaryFactor?: InputMaybe<SecondaryFactor>;
265
+ emailPassword?: SignUpWithAuthenticationEmailPasswordInput;
266
+ google?: SignUpWithAuthenticationGoogleInput;
267
+ otp?: SignUpWithAuthenticationOtpInput;
268
+ secondaryFactor?: SecondaryFactor;
282
269
  };
283
270
  export type SignUpWithAuthenticationEmailPasswordInput = {
284
271
  email: Scalars["Email"]["input"];
@@ -289,7 +276,7 @@ export type SignUpWithAuthenticationGoogleInput = {
289
276
  codeVerifier: Scalars["String"]["input"];
290
277
  };
291
278
  export type SignUpWithAuthenticationOtpInput = {
292
- code?: InputMaybe<Scalars["String"]["input"]>;
279
+ code?: Scalars["String"]["input"];
293
280
  };
294
281
  export type WabeSchemaScalars = "Phone";
295
282
  export type WabeSchemaEnums = "RoleEnum" | "AuthenticationProvider" | "SecondaryFactor" | "PaymentMode" | "PaymentReccuringInterval" | "Currency";
@@ -299,130 +286,139 @@ export type WabeSchemaTypes = {
299
286
  _Session: _Session;
300
287
  Role: Role;
301
288
  Payment: Payment;
289
+ _InternalConfig: _InternalConfig;
302
290
  };
303
291
  export interface WabeContext<T extends WabeTypes> {
304
292
  response?: WobeResponse;
305
293
  user?: User | null;
306
- sessionId?: string;
294
+ sessionId?: string | null;
307
295
  isRoot: boolean;
308
296
  wabe: Wabe<T>;
309
297
  }
310
- export type WhereAggregation<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K | "id", {
311
- equalTo?: any;
312
- notEqualTo?: any;
313
- greaterThan?: any;
314
- lessThan?: any;
315
- greaterThanOrEqualTo?: any;
316
- lessThanOrEqualTo?: any;
317
- in?: any[];
318
- notIn?: any[];
319
- contains?: any;
320
- notContains?: any;
321
- }>;
322
- 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"]> = {
323
319
  OR?: Array<WhereType<T, K>>;
324
320
  AND?: Array<WhereType<T, K>>;
325
321
  };
326
- export type WhereType<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Partial<WhereAggregation<T, K>> & WhereConditional<T, K>;
327
- 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">;
328
324
  export interface AdapterOptions {
329
325
  databaseUrl: string;
330
326
  databaseName: string;
331
327
  }
332
- export type MutationData<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K, any>;
333
- export interface CountOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> {
334
- 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;
335
331
  where?: WhereType<T, K>;
336
332
  context: WabeContext<any>;
337
333
  }
338
- export interface GetObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> {
339
- className: T;
334
+ export interface GetObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> {
335
+ className: K;
340
336
  id: string;
341
337
  where?: WhereType<T, K>;
342
- fields: Array<K | "*">;
338
+ fields: Array<U | "*">;
343
339
  context: WabeContext<any>;
344
340
  skipHooks?: boolean;
345
341
  }
346
- 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]> {
347
- className: T;
348
- where?: WhereType<T, W>;
349
- order?: OrderType<T, X>;
350
- 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 | "*">;
351
347
  offset?: number;
352
348
  first?: number;
353
349
  context: WabeContext<any>;
354
350
  skipHooks?: boolean;
355
351
  }
356
- export interface CreateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
357
- className: T;
358
- data: MutationData<T, W>;
359
- 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 | "*">;
360
356
  context: WabeContext<any>;
361
357
  }
362
- 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]> {
363
- className: T;
364
- data: Array<MutationData<T, W>>;
365
- 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 | "*">;
366
362
  offset?: number;
367
363
  first?: number;
368
- order?: OrderType<T, X>;
364
+ order?: OrderType<T, U, X>;
369
365
  context: WabeContext<any>;
370
366
  }
371
- export interface UpdateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
372
- 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;
373
369
  id: string;
374
- where?: WhereType<T, W>;
375
- data: MutationData<T, W>;
376
- fields: Array<K | "*">;
370
+ where?: WhereType<T, K>;
371
+ data: MutationData<T, K, U>;
372
+ fields: Array<W | "*">;
377
373
  context: WabeContext<any>;
378
374
  }
379
- 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]> {
380
- className: T;
381
- where: WhereType<T, W>;
382
- order?: OrderType<T, X>;
383
- data: MutationData<T, W>;
384
- 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 | "*">;
385
381
  offset?: number;
386
382
  first?: number;
387
383
  context: WabeContext<any>;
388
384
  }
389
- export interface DeleteObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
390
- className: T;
385
+ export interface DeleteObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> {
386
+ className: K;
391
387
  id: string;
392
- where?: WhereType<T, W>;
393
- fields: Array<K | "*">;
388
+ where?: WhereType<T, K>;
389
+ fields: Array<U | "*">;
394
390
  context: WabeContext<any>;
395
391
  }
396
- 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]> {
397
- className: T;
398
- where: WhereType<T, W>;
399
- order?: OrderType<T, X>;
400
- 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 | "*">;
401
397
  offset?: number;
402
398
  first?: number;
403
399
  context: WabeContext<any>;
404
400
  }
405
- 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> & {
406
402
  id: string;
407
403
  };
408
- export interface DatabaseAdapter {
404
+ export interface DatabaseAdapter<T extends WabeTypes> {
409
405
  connect(): Promise<any>;
410
406
  close(): Promise<any>;
411
407
  createClassIfNotExist(className: string, context: WabeContext<any>): Promise<any>;
412
408
  clearDatabase(): Promise<void>;
413
- count<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: CountOptions<T, K>): Promise<number>;
414
- getObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: GetObjectOptions<T, K>): Promise<OutputType<T, K>>;
415
- 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>[]>;
416
- 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>>;
417
- 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>[]>;
418
- 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>>;
419
- 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>[]>;
420
- 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>;
421
- 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>;
422
418
  }
423
- export declare const buildMongoOrderQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(order?: OrderType<T, K>) => Record<string, any>;
424
- export declare const buildMongoWhereQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(where?: WhereType<T, K>) => Record<string, any>;
425
- 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> {
426
422
  options: AdapterOptions;
427
423
  database?: Db;
428
424
  private client;
@@ -430,16 +426,16 @@ export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapte
430
426
  connect(): Promise<MongoClient>;
431
427
  close(): Promise<void>;
432
428
  createClassIfNotExist(className: keyof T["types"], context: WabeContext<T>): Promise<import("mongodb").Collection<import("bson").Document>>;
433
- 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>;
434
430
  clearDatabase(): Promise<void>;
435
- getObject<U extends keyof T["types"], K extends keyof T["types"][U]>(params: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
436
- 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>[]>;
437
- 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>>;
438
- 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>[]>;
439
- 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>>;
440
- 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>[]>;
441
- 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>;
442
- 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>;
443
439
  }
444
440
  export interface InMemoryCacheOptions {
445
441
  /**
@@ -467,45 +463,188 @@ export interface PointerFields {
467
463
  pointers: PointerObject;
468
464
  }
469
465
  export declare class DatabaseController<T extends WabeTypes> {
470
- adapter: DatabaseAdapter;
471
- inMemoryCache: InMemoryCache<OutputType<any, any> | undefined>;
472
- constructor(adapter: DatabaseAdapter);
466
+ adapter: DatabaseAdapter<T>;
467
+ inMemoryCache: InMemoryCache<OutputType<T, any, any> | undefined>;
468
+ constructor(adapter: DatabaseAdapter<T>);
473
469
  connect(): Promise<any>;
474
470
  close(): Promise<any>;
475
471
  createClassIfNotExist(className: string, context: WabeContext<T>): Promise<any>;
476
472
  _getPointerObject(className: keyof T["types"], fields: string[], context: WabeContext<T>): PointerFields;
477
- _isRelationField<U extends keyof T["types"]>(originClassName: U, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
478
- _isPointerField<U extends keyof T["types"]>(originClassName: U, context: WabeContext<T>, pointerClassName?: string): boolean | undefined;
479
- _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>>;
480
- _getWhereObjectWithPointerOrRelation<U extends keyof T["types"], K extends keyof T["types"][U]>(className: U, where: WhereType<U, K>, context: WabeContext<T>): Promise<Partial<{
481
- [P in "id" | K]: {
482
- equalTo?: any;
483
- notEqualTo?: any;
484
- greaterThan?: any;
485
- lessThan?: any;
486
- greaterThanOrEqualTo?: any;
487
- lessThanOrEqualTo?: any;
488
- in?: any[] | undefined;
489
- notIn?: any[] | undefined;
490
- contains?: any;
491
- 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;
492
631
  };
493
632
  }> & {
494
- OR?: WhereType<U, K>[] | undefined;
495
- AND?: WhereType<U, K>[] | undefined;
633
+ OR?: WhereType<T, U>[] | undefined;
634
+ AND?: WhereType<T, U>[] | undefined;
496
635
  }>;
497
- _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>;
498
- _buildCacheKey<U extends keyof T["types"]>(className: U, id: string, fields: Array<string>): string;
499
- 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>;
500
639
  clearDatabase(): Promise<void>;
501
- 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>>;
502
- 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>[]>;
503
- 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>>;
504
- 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>[]>;
505
- 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>>;
506
- 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>[]>;
507
- 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>>;
508
- 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>[]>;
509
648
  }
510
649
  export declare enum DatabaseEnum {
511
650
  Mongo = "mongo"
@@ -515,12 +654,17 @@ export interface DatabaseConfig {
515
654
  url: string;
516
655
  name: string;
517
656
  }
657
+ export interface DevWabeTypes extends WabeTypes {
658
+ types: WabeSchemaTypes;
659
+ scalars: WabeSchemaScalars;
660
+ enums: WabeSchemaEnums;
661
+ }
518
662
  export declare enum OperationType {
519
- AfterCreate = "AfterCreate",
663
+ AfterCreate = "afterCreate",
520
664
  AfterUpdate = "afterUpdate",
521
665
  AfterDelete = "afterDelete",
522
666
  AfterRead = "afterRead",
523
- BeforeCreate = "beforeInsert",
667
+ BeforeCreate = "beforeCreate",
524
668
  BeforeUpdate = "beforeUpdate",
525
669
  BeforeDelete = "beforeDelete",
526
670
  BeforeRead = "beforeRead"
@@ -537,32 +681,26 @@ export declare const _findHooksByPriority: <T extends unknown>({ className, oper
537
681
  priority: number;
538
682
  config: WabeConfig<any>;
539
683
  }) => Promise<Hook<any, any>[]>;
540
- export declare const initializeHook: <T extends unknown>({ className, newData, context, }: {
541
- className: T;
542
- 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;
543
687
  context: WabeContext<any>;
544
688
  }) => {
545
689
  runOnSingleObject: ({ operationType, id, object: inputObject, }: {
546
690
  operationType: OperationType;
547
691
  id?: string | undefined;
548
- object?: OutputType<any, any> | undefined;
549
- }) => Promise<{
550
- object: undefined;
551
- newData: {};
552
- } | {
553
- object: OutputType<any, any>;
554
- newData: MutationData<T, keyof WabeSchemaTypes[T]>;
555
- }>;
692
+ object?: OutputType<DevWabeTypes, any, any> | undefined;
693
+ }) => Promise<MutationData<T, K, any>>;
556
694
  runOnMultipleObjects: ({ operationType, where, objects: inputObjects, }: {
557
695
  operationType: OperationType;
558
696
  where?: WhereType<any, any> | undefined;
559
- objects?: OutputType<any, any>[] | undefined;
697
+ objects?: OutputType<DevWabeTypes, any, any>[] | undefined;
560
698
  }) => Promise<{
561
699
  objects: never[];
562
- newData: MutationData<any, any>[];
700
+ newData: MutationData<DevWabeTypes, any, any>[];
563
701
  } | {
564
- objects: OutputType<any, any>[];
565
- newData: Awaited<MutationData<T, keyof WabeSchemaTypes[T]>>[];
702
+ objects: OutputType<DevWabeTypes, any, any>[];
703
+ newData: Awaited<MutationData<DevWabeTypes, K, keyof WabeSchemaTypes[K]>>[];
566
704
  }>;
567
705
  };
568
706
  export declare const getDefaultHooks: () => Hook<any, any>[];
@@ -574,7 +712,7 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
574
712
  object: Partial<Record<keyof T["types"][K], any>>;
575
713
  constructor({ newData, className, operationType, context, object, }: {
576
714
  className: K;
577
- newData?: MutationData<K, keyof T["types"][K]>;
715
+ newData?: MutationData<T, K, keyof T["types"][K]>;
578
716
  operationType: OperationType;
579
717
  context: WabeContext<T>;
580
718
  object: Partial<Record<keyof T["types"][K], any>>;
@@ -582,7 +720,7 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
582
720
  getUser(): User | null | undefined;
583
721
  isFieldUpdate(field: keyof T["types"][K]): boolean | undefined;
584
722
  upsertNewData(field: keyof T["types"][K], value: any): void;
585
- getNewData(): MutationData<K, keyof T["types"][K]>;
723
+ getNewData(): MutationData<T, K, keyof T["types"][K]>;
586
724
  }
587
725
  export type WabePrimaryTypes = "String" | "Int" | "Float" | "Boolean" | "Email" | "Date" | "File";
588
726
  export type WabeCustomTypes = "Array" | "Object";
@@ -763,6 +901,7 @@ export declare class Schema<T extends WabeTypes> {
763
901
  sessionClass(): ClassInterface<T>;
764
902
  paymentClass(): ClassInterface<T>;
765
903
  roleClass(): ClassInterface<T>;
904
+ internalConfigClass(): ClassInterface<T>;
766
905
  userClass(): ClassInterface<T>;
767
906
  defaultFields(): SchemaFields<T>;
768
907
  mergeClass(newClass: ClassInterface<T>[]): ClassInterface<T>[];
@@ -780,6 +919,9 @@ export type AuthenticationEventsOptions<T> = {
780
919
  input: T;
781
920
  context: WabeContext<any>;
782
921
  };
922
+ export type AuthenticationEventsOptionsWithUserId<T> = AuthenticationEventsOptions<T> & {
923
+ userId: string;
924
+ };
783
925
  export type ProviderInterface<T = any> = {
784
926
  onSignIn: (options: AuthenticationEventsOptions<T>) => Promise<{
785
927
  user: Partial<User>;
@@ -793,6 +935,9 @@ export type ProviderInterface<T = any> = {
793
935
  onSignUp: (options: AuthenticationEventsOptions<T>) => Promise<{
794
936
  authenticationDataToSave: any;
795
937
  }>;
938
+ onUpdateAuthenticationData?: (options: AuthenticationEventsOptionsWithUserId<T>) => Promise<{
939
+ authenticationDataToSave: any;
940
+ }>;
796
941
  };
797
942
  export type SecondaryProviderInterface<T = any> = {
798
943
  onSendChallenge: () => Promise<void>;
@@ -847,11 +992,6 @@ export interface WabeRoute {
847
992
  path: string;
848
993
  handler: WobeHandler<WobeCustomContext<any>>;
849
994
  }
850
- export type DevWabeTypes = {
851
- types: WabeSchemaTypes;
852
- scalars: WabeSchemaScalars;
853
- enums: WabeSchemaEnums;
854
- };
855
995
  export declare const generateCodegen: ({ schema, path, graphqlSchema, }: {
856
996
  schema: SchemaInterface<any>;
857
997
  path: string;
@@ -869,6 +1009,7 @@ export type WabeFileAdapter = (file: File) => Promise<string>;
869
1009
  export interface FileConfig {
870
1010
  adapter: WabeFileAdapter;
871
1011
  }
1012
+ export type Templates = "sendOTPCode";
872
1013
  export interface EmailSendOptions {
873
1014
  from: string;
874
1015
  to: Array<string>;
@@ -885,8 +1026,19 @@ export interface EmailAdapter {
885
1026
  */
886
1027
  send(options: EmailSendOptions): Promise<string>;
887
1028
  }
1029
+ /**
1030
+ * Configuration for the email in Wabe
1031
+ * @property adapter The adapter to use to send emails
1032
+ * @property mainEmail The email to use as sender for emails sent by Wabe
1033
+ * @property templates The html templates to use for a specific email. If not provided, Wabe will use the default templates
1034
+ */
888
1035
  export interface EmailConfig {
889
1036
  adapter: EmailAdapter;
1037
+ mainEmail?: string;
1038
+ htmlTemplates?: Record<Templates, (payload: any) => string>;
1039
+ }
1040
+ export declare class EmailDevAdapter implements EmailAdapter {
1041
+ send(): Promise<string>;
890
1042
  }
891
1043
  declare class EmailController implements EmailAdapter {
892
1044
  adapter: EmailAdapter;
@@ -906,8 +1058,8 @@ export type Address = {
906
1058
  state: string;
907
1059
  };
908
1060
  export declare enum PaymentMode {
909
- Payment = "payment",
910
- Subscription = "subscription"
1061
+ payment = "payment",
1062
+ subscription = "subscription"
911
1063
  }
912
1064
  export type PaymentMethod = "card" | "paypal" | "link" | "sepa_debit" | "revolut_pay" | "us_bank_account";
913
1065
  export declare enum PaymentReccuringInterval {
@@ -920,36 +1072,27 @@ export type Product = {
920
1072
  quantity: number;
921
1073
  };
922
1074
  export interface OnPaymentSucceedOptions {
923
- created: string;
1075
+ createdAt: number;
924
1076
  amount: number;
925
1077
  customerEmail: string | null;
926
- billingDetails: {
927
- address: {
928
- city: string | null;
929
- country: string | null;
930
- line1: string | null;
931
- line2: string | null;
932
- postalCode: string | null;
933
- state: string | null;
934
- };
935
- name: string | null;
936
- phone: string | null;
937
- };
938
1078
  currency: string;
939
1079
  paymentMethodTypes: Array<string>;
940
1080
  }
941
1081
  export interface OnPaymentFailedOptions {
942
- created: string;
1082
+ createdAt: number;
943
1083
  amount: number;
944
- messageError: string;
945
1084
  paymentMethodTypes: Array<string>;
946
1085
  }
1086
+ /**
1087
+ * PaymentConfig
1088
+ * @property adapter - The payment adapter
1089
+ * @property supportedPaymentMethods - The supported payment methods
1090
+ * @property currency - The currency
1091
+ */
947
1092
  export interface PaymentConfig {
948
1093
  adapter: PaymentAdapter;
949
1094
  supportedPaymentMethods: Array<PaymentMethod>;
950
1095
  currency: Currency$1;
951
- onPaymentSucceed?: (options: OnPaymentSucceedOptions) => Promise<void>;
952
- onPaymentFailed?: (options: OnPaymentFailedOptions) => Promise<void>;
953
1096
  }
954
1097
  export type Invoice = {
955
1098
  amountDue: number;
@@ -1008,6 +1151,36 @@ export type GetAllTransactionsOptions = {
1008
1151
  export type GetCustomerByIdOptions = {
1009
1152
  id: string;
1010
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
+ };
1011
1184
  export interface PaymentAdapter {
1012
1185
  /**
1013
1186
  * Get a customer by id
@@ -1058,10 +1231,11 @@ export interface PaymentAdapter {
1058
1231
  */
1059
1232
  getHypotheticalSubscriptionRevenue: () => Promise<number>;
1060
1233
  /**
1061
- * Init the webhook for succeed and failed payments
1062
- * @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
1063
1237
  */
1064
- initWebhook: (options: InitWebhookOptions) => Promise<void>;
1238
+ validateWebhook: (options: ValidateWebhookOptions) => Promise<ValidateWebhookOutput>;
1065
1239
  }
1066
1240
  declare class PaymentController implements PaymentAdapter {
1067
1241
  private adapter;
@@ -1070,7 +1244,7 @@ declare class PaymentController implements PaymentAdapter {
1070
1244
  getCustomerById(options: GetCustomerByIdOptions): Promise<{
1071
1245
  email: string | null;
1072
1246
  }>;
1073
- initWebhook({ webhookUrl }: InitWebhookOptions): Promise<void>;
1247
+ validateWebhook(ctx: any): Promise<ValidateWebhookOutput>;
1074
1248
  createCustomer(options: CreateCustomerOptions): Promise<string>;
1075
1249
  createPayment(options: Omit<CreatePaymentOptions, "currency" | "paymentMethod">): Promise<string>;
1076
1250
  cancelSubscription(options: CancelSubscriptionOptions): Promise<void>;
@@ -1119,7 +1293,7 @@ export declare class Wabe<T extends WabeTypes> {
1119
1293
  loadRoleEnum(): void;
1120
1294
  loadAuthenticationMethods(): void;
1121
1295
  loadHooks(): void;
1122
- loadDefaultRoutes(): void;
1296
+ loadRoutes(): void;
1123
1297
  start(): Promise<void>;
1124
1298
  close(): Promise<void>;
1125
1299
  }
@@ -1158,7 +1332,7 @@ export declare class OAuth2Client {
1158
1332
  state?: string;
1159
1333
  codeVerifier?: string;
1160
1334
  scopes?: string[];
1161
- }): Promise<URL>;
1335
+ }): URL;
1162
1336
  validateAuthorizationCode<_TokenResponseBody extends TokenResponseBody>(authorizationCode: string, options?: {
1163
1337
  codeVerifier?: string;
1164
1338
  credentials?: string;
@@ -1200,6 +1374,15 @@ export declare class Google implements OAuth2ProviderWithPKCE {
1200
1374
  verifiedEmail: any;
1201
1375
  }>;
1202
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
+ }
1203
1386
 
1204
1387
  export {
1205
1388
  AuthenticationProvider$1 as AuthenticationProvider,