wabe 0.5.2 → 0.5.4
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/README.md +2 -0
- package/dist/index.d.ts +261 -99
- package/dist/index.js +3502 -3024
- package/generated/schema.graphql +348 -9
- package/generated/wabe.ts +405 -9
- package/package.json +2 -2
- package/dist/generated/wabe.d.ts +0 -1352
package/README.md
CHANGED
|
@@ -52,6 +52,8 @@ await run();
|
|
|
52
52
|
- **Database**: A powerful, scalable database to store and manage you data.
|
|
53
53
|
- **GraphQL API**: A flexible and powerful GraphQL API (following GraphQL Relay standard) to interact with your data.
|
|
54
54
|
- **Hooks**: Powerful hooks system to execute custom actions before or after database requests.
|
|
55
|
+
- **Email**: Send emails with your favorite provider with very simple integration.
|
|
56
|
+
- **Payment**: Accept payments with Stripe or create your own payment provider adapter.
|
|
55
57
|
|
|
56
58
|
## Contributing
|
|
57
59
|
|
package/dist/index.d.ts
CHANGED
|
@@ -60,11 +60,16 @@ export type Scalars = {
|
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
62
|
declare enum AuthenticationProvider {
|
|
63
|
-
Google = "
|
|
63
|
+
Google = "google",
|
|
64
|
+
EmailPassword = "emailPassword"
|
|
64
65
|
}
|
|
65
66
|
declare enum SecondaryFactor {
|
|
66
67
|
EmailOtp = "EmailOTP"
|
|
67
68
|
}
|
|
69
|
+
declare enum Currency {
|
|
70
|
+
Eur = "eur",
|
|
71
|
+
Usd = "usd"
|
|
72
|
+
}
|
|
68
73
|
/** User class */
|
|
69
74
|
export type User = {
|
|
70
75
|
__typename?: "User";
|
|
@@ -218,6 +223,34 @@ export type RoleAclObjectRolesAcl = {
|
|
|
218
223
|
read: Scalars["Boolean"]["output"];
|
|
219
224
|
write: Scalars["Boolean"]["output"];
|
|
220
225
|
};
|
|
226
|
+
export type Payment = {
|
|
227
|
+
__typename?: "Payment";
|
|
228
|
+
id: Scalars["ID"]["output"];
|
|
229
|
+
user?: Maybe<User>;
|
|
230
|
+
amount: Scalars["Int"]["output"];
|
|
231
|
+
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";
|
|
244
|
+
userId: Scalars["String"]["output"];
|
|
245
|
+
read: Scalars["Boolean"]["output"];
|
|
246
|
+
write: Scalars["Boolean"]["output"];
|
|
247
|
+
};
|
|
248
|
+
export type PaymentAclObjectRolesAcl = {
|
|
249
|
+
__typename?: "PaymentACLObjectRolesACL";
|
|
250
|
+
roleId: Scalars["String"]["output"];
|
|
251
|
+
read: Scalars["Boolean"]["output"];
|
|
252
|
+
write: Scalars["Boolean"]["output"];
|
|
253
|
+
};
|
|
221
254
|
export type SignInWithInput = {
|
|
222
255
|
authentication?: InputMaybe<SignInWithAuthenticationInput>;
|
|
223
256
|
};
|
|
@@ -259,12 +292,13 @@ export type SignUpWithAuthenticationOtpInput = {
|
|
|
259
292
|
code?: InputMaybe<Scalars["String"]["input"]>;
|
|
260
293
|
};
|
|
261
294
|
export type WabeSchemaScalars = "Phone";
|
|
262
|
-
export type WabeSchemaEnums = "AuthenticationProvider" | "SecondaryFactor" | "PaymentMode" | "PaymentReccuringInterval" | "Currency";
|
|
295
|
+
export type WabeSchemaEnums = "RoleEnum" | "AuthenticationProvider" | "SecondaryFactor" | "PaymentMode" | "PaymentReccuringInterval" | "Currency";
|
|
263
296
|
export type WabeSchemaTypes = {
|
|
264
297
|
User: User;
|
|
265
298
|
Post: Post;
|
|
266
299
|
_Session: _Session;
|
|
267
300
|
Role: Role;
|
|
301
|
+
Payment: Payment;
|
|
268
302
|
};
|
|
269
303
|
export interface WabeContext<T extends WabeTypes> {
|
|
270
304
|
response?: WobeResponse;
|
|
@@ -290,11 +324,12 @@ export type WhereConditional<T extends keyof WabeTypes["types"], K extends keyof
|
|
|
290
324
|
AND?: Array<WhereType<T, K>>;
|
|
291
325
|
};
|
|
292
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">;
|
|
293
328
|
export interface AdapterOptions {
|
|
294
329
|
databaseUrl: string;
|
|
295
330
|
databaseName: string;
|
|
296
331
|
}
|
|
297
|
-
export type MutationData<T extends keyof WabeTypes["types"]
|
|
332
|
+
export type MutationData<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> = Record<K, any>;
|
|
298
333
|
export interface CountOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]> {
|
|
299
334
|
className: T;
|
|
300
335
|
where?: WhereType<T, K>;
|
|
@@ -308,9 +343,10 @@ export interface GetObjectOptions<T extends keyof WabeTypes["types"], K extends
|
|
|
308
343
|
context: WabeContext<any>;
|
|
309
344
|
skipHooks?: boolean;
|
|
310
345
|
}
|
|
311
|
-
export interface GetObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
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]> {
|
|
312
347
|
className: T;
|
|
313
348
|
where?: WhereType<T, W>;
|
|
349
|
+
order?: OrderType<T, X>;
|
|
314
350
|
fields: Array<K | "*">;
|
|
315
351
|
offset?: number;
|
|
316
352
|
first?: number;
|
|
@@ -319,30 +355,32 @@ export interface GetObjectsOptions<T extends keyof WabeTypes["types"], K extends
|
|
|
319
355
|
}
|
|
320
356
|
export interface CreateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
321
357
|
className: T;
|
|
322
|
-
data: MutationData<W>;
|
|
358
|
+
data: MutationData<T, W>;
|
|
323
359
|
fields: Array<K | "*">;
|
|
324
360
|
context: WabeContext<any>;
|
|
325
361
|
}
|
|
326
|
-
export interface CreateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
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]> {
|
|
327
363
|
className: T;
|
|
328
|
-
data: Array<MutationData<W>>;
|
|
364
|
+
data: Array<MutationData<T, W>>;
|
|
329
365
|
fields: Array<K | "*">;
|
|
330
366
|
offset?: number;
|
|
331
367
|
first?: number;
|
|
368
|
+
order?: OrderType<T, X>;
|
|
332
369
|
context: WabeContext<any>;
|
|
333
370
|
}
|
|
334
371
|
export interface UpdateObjectOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
335
372
|
className: T;
|
|
336
373
|
id: string;
|
|
337
374
|
where?: WhereType<T, W>;
|
|
338
|
-
data: MutationData<W>;
|
|
375
|
+
data: MutationData<T, W>;
|
|
339
376
|
fields: Array<K | "*">;
|
|
340
377
|
context: WabeContext<any>;
|
|
341
378
|
}
|
|
342
|
-
export interface UpdateObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
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]> {
|
|
343
380
|
className: T;
|
|
344
381
|
where: WhereType<T, W>;
|
|
345
|
-
|
|
382
|
+
order?: OrderType<T, X>;
|
|
383
|
+
data: MutationData<T, W>;
|
|
346
384
|
fields: Array<K | "*">;
|
|
347
385
|
offset?: number;
|
|
348
386
|
first?: number;
|
|
@@ -355,9 +393,10 @@ export interface DeleteObjectOptions<T extends keyof WabeTypes["types"], K exten
|
|
|
355
393
|
fields: Array<K | "*">;
|
|
356
394
|
context: WabeContext<any>;
|
|
357
395
|
}
|
|
358
|
-
export interface DeleteObjectsOptions<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]> {
|
|
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]> {
|
|
359
397
|
className: T;
|
|
360
398
|
where: WhereType<T, W>;
|
|
399
|
+
order?: OrderType<T, X>;
|
|
361
400
|
fields: Array<K | "*">;
|
|
362
401
|
offset?: number;
|
|
363
402
|
first?: number;
|
|
@@ -373,14 +412,15 @@ export interface DatabaseAdapter {
|
|
|
373
412
|
clearDatabase(): Promise<void>;
|
|
374
413
|
count<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: CountOptions<T, K>): Promise<number>;
|
|
375
414
|
getObject<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T]>(params: GetObjectOptions<T, K>): Promise<OutputType<T, K>>;
|
|
376
|
-
getObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: GetObjectsOptions<T, K, W>): 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>[]>;
|
|
377
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>>;
|
|
378
|
-
createObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: CreateObjectsOptions<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>[]>;
|
|
379
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>>;
|
|
380
|
-
updateObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: UpdateObjectsOptions<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>[]>;
|
|
381
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>;
|
|
382
|
-
deleteObjects<T extends keyof WabeTypes["types"], K extends keyof WabeTypes["types"][T], W extends keyof WabeTypes["types"][T]>(params: DeleteObjectsOptions<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>;
|
|
383
422
|
}
|
|
423
|
+
export declare const buildMongoOrderQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(order?: OrderType<T, K>) => Record<string, any>;
|
|
384
424
|
export declare const buildMongoWhereQuery: <T extends unknown, K extends keyof Record<any, any>[T]>(where?: WhereType<T, K>) => Record<string, any>;
|
|
385
425
|
export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapter {
|
|
386
426
|
options: AdapterOptions;
|
|
@@ -393,13 +433,13 @@ export declare class MongoAdapter<T extends WabeTypes> implements DatabaseAdapte
|
|
|
393
433
|
count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
|
|
394
434
|
clearDatabase(): Promise<void>;
|
|
395
435
|
getObject<U extends keyof T["types"], K extends keyof T["types"][U]>(params: GetObjectOptions<U, K>): Promise<OutputType<U, K>>;
|
|
396
|
-
getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: GetObjectsOptions<U, K, W>): 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>[]>;
|
|
397
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>>;
|
|
398
|
-
createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: CreateObjectsOptions<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>[]>;
|
|
399
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>>;
|
|
400
|
-
updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: UpdateObjectsOptions<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>[]>;
|
|
401
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>;
|
|
402
|
-
deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>(params: DeleteObjectsOptions<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>;
|
|
403
443
|
}
|
|
404
444
|
export interface InMemoryCacheOptions {
|
|
405
445
|
/**
|
|
@@ -459,13 +499,13 @@ export declare class DatabaseController<T extends WabeTypes> {
|
|
|
459
499
|
count<U extends keyof T["types"], K extends keyof T["types"][U]>(params: CountOptions<U, K>): Promise<number>;
|
|
460
500
|
clearDatabase(): Promise<void>;
|
|
461
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>>;
|
|
462
|
-
getObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, fields, context, where, skipHooks, first, offset, }: GetObjectsOptions<U, K, W>): 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>[]>;
|
|
463
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>>;
|
|
464
|
-
createObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ data, fields, className, context, first, offset, }: CreateObjectsOptions<U, K, W>): Promise<OutputType<
|
|
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>[]>;
|
|
465
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>>;
|
|
466
|
-
updateObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, where, context, fields, data, first, offset, }: UpdateObjectsOptions<U, K, W>): Promise<OutputType<
|
|
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>[]>;
|
|
467
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>>;
|
|
468
|
-
deleteObjects<U extends keyof T["types"], K extends keyof T["types"][U], W extends keyof T["types"][U]>({ className, context, fields, where, first, offset, }: DeleteObjectsOptions<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>[]>;
|
|
469
509
|
}
|
|
470
510
|
export declare enum DatabaseEnum {
|
|
471
511
|
Mongo = "mongo"
|
|
@@ -475,6 +515,75 @@ export interface DatabaseConfig {
|
|
|
475
515
|
url: string;
|
|
476
516
|
name: string;
|
|
477
517
|
}
|
|
518
|
+
export declare enum OperationType {
|
|
519
|
+
AfterCreate = "AfterCreate",
|
|
520
|
+
AfterUpdate = "afterUpdate",
|
|
521
|
+
AfterDelete = "afterDelete",
|
|
522
|
+
AfterRead = "afterRead",
|
|
523
|
+
BeforeCreate = "beforeInsert",
|
|
524
|
+
BeforeUpdate = "beforeUpdate",
|
|
525
|
+
BeforeDelete = "beforeDelete",
|
|
526
|
+
BeforeRead = "beforeRead"
|
|
527
|
+
}
|
|
528
|
+
export type Hook<T extends WabeTypes, K extends keyof WabeTypes["types"]> = {
|
|
529
|
+
operationType: OperationType;
|
|
530
|
+
className?: K;
|
|
531
|
+
priority: number;
|
|
532
|
+
callback: (hookObject: HookObject<T, K>) => Promise<void> | void;
|
|
533
|
+
};
|
|
534
|
+
export declare const _findHooksByPriority: <T extends unknown>({ className, operationType, priority, config, }: {
|
|
535
|
+
operationType: OperationType;
|
|
536
|
+
className: T;
|
|
537
|
+
priority: number;
|
|
538
|
+
config: WabeConfig<any>;
|
|
539
|
+
}) => Promise<Hook<any, any>[]>;
|
|
540
|
+
export declare const initializeHook: <T extends unknown>({ className, newData, context, }: {
|
|
541
|
+
className: T;
|
|
542
|
+
newData?: MutationData<any, any> | undefined;
|
|
543
|
+
context: WabeContext<any>;
|
|
544
|
+
}) => {
|
|
545
|
+
runOnSingleObject: ({ operationType, id, object: inputObject, }: {
|
|
546
|
+
operationType: OperationType;
|
|
547
|
+
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
|
+
}>;
|
|
556
|
+
runOnMultipleObjects: ({ operationType, where, objects: inputObjects, }: {
|
|
557
|
+
operationType: OperationType;
|
|
558
|
+
where?: WhereType<any, any> | undefined;
|
|
559
|
+
objects?: OutputType<any, any>[] | undefined;
|
|
560
|
+
}) => Promise<{
|
|
561
|
+
objects: never[];
|
|
562
|
+
newData: MutationData<any, any>[];
|
|
563
|
+
} | {
|
|
564
|
+
objects: OutputType<any, any>[];
|
|
565
|
+
newData: Awaited<MutationData<T, keyof WabeSchemaTypes[T]>>[];
|
|
566
|
+
}>;
|
|
567
|
+
};
|
|
568
|
+
export declare const getDefaultHooks: () => Hook<any, any>[];
|
|
569
|
+
declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]> {
|
|
570
|
+
className: K;
|
|
571
|
+
private newData;
|
|
572
|
+
private operationType;
|
|
573
|
+
context: WabeContext<T>;
|
|
574
|
+
object: Partial<Record<keyof T["types"][K], any>>;
|
|
575
|
+
constructor({ newData, className, operationType, context, object, }: {
|
|
576
|
+
className: K;
|
|
577
|
+
newData?: MutationData<K, keyof T["types"][K]>;
|
|
578
|
+
operationType: OperationType;
|
|
579
|
+
context: WabeContext<T>;
|
|
580
|
+
object: Partial<Record<keyof T["types"][K], any>>;
|
|
581
|
+
});
|
|
582
|
+
getUser(): User | null | undefined;
|
|
583
|
+
isFieldUpdate(field: keyof T["types"][K]): boolean | undefined;
|
|
584
|
+
upsertNewData(field: keyof T["types"][K], value: any): void;
|
|
585
|
+
getNewData(): MutationData<K, keyof T["types"][K]>;
|
|
586
|
+
}
|
|
478
587
|
export type WabePrimaryTypes = "String" | "Int" | "Float" | "Boolean" | "Email" | "Date" | "File";
|
|
479
588
|
export type WabeCustomTypes = "Array" | "Object";
|
|
480
589
|
export type WabeRelationTypes = "Pointer" | "Relation";
|
|
@@ -546,7 +655,7 @@ export type ResolverType<T extends WabeTypes> = {
|
|
|
546
655
|
description?: string;
|
|
547
656
|
resolve: (...args: any) => any;
|
|
548
657
|
} & ({
|
|
549
|
-
type: WabePrimaryTypes;
|
|
658
|
+
type: WabePrimaryTypes | T["enums"] | T["scalars"];
|
|
550
659
|
} | {
|
|
551
660
|
type: "Object";
|
|
552
661
|
outputObject: ClassInterface<T>;
|
|
@@ -584,7 +693,34 @@ export interface PermissionProperties {
|
|
|
584
693
|
*/
|
|
585
694
|
authorizedRoles?: Array<string>;
|
|
586
695
|
}
|
|
587
|
-
|
|
696
|
+
/**
|
|
697
|
+
* ACL properties
|
|
698
|
+
* Automatically create ACL object before insert of the object in the database
|
|
699
|
+
* Allow you to specify which user can read or write the object
|
|
700
|
+
* You can specify "self" to allow only the user that created the object to read or write it
|
|
701
|
+
* You can specify "all" to allow all users to read or write the object
|
|
702
|
+
* For some custom use cases, you can specify a callback function that will be called before
|
|
703
|
+
* inserting the object in the database.
|
|
704
|
+
* Authorized roles is more restristive that at the class level. You can have a role access on all the class
|
|
705
|
+
* except one object.
|
|
706
|
+
* If the array of authorized users is empty, no user is authorized
|
|
707
|
+
* If the array of authorized users is undefined, everyone is authorized
|
|
708
|
+
*/
|
|
709
|
+
export type ACLProperties = {
|
|
710
|
+
authorizedUsers: {
|
|
711
|
+
read: Array<"self">;
|
|
712
|
+
write: Array<"self">;
|
|
713
|
+
};
|
|
714
|
+
authorizedRoles: {
|
|
715
|
+
read: Array<string>;
|
|
716
|
+
write: Array<string>;
|
|
717
|
+
};
|
|
718
|
+
} | {
|
|
719
|
+
callback?: (hookObject: HookObject<any, any>) => void | Promise<void>;
|
|
720
|
+
};
|
|
721
|
+
export type ClassPermissions = Partial<Record<PermissionsOperations, PermissionProperties> & {
|
|
722
|
+
acl: ACLProperties;
|
|
723
|
+
}>;
|
|
588
724
|
export type SearchableFields = Array<string>;
|
|
589
725
|
export type ClassIndexes = Array<{
|
|
590
726
|
field: string;
|
|
@@ -625,6 +761,7 @@ export declare class Schema<T extends WabeTypes> {
|
|
|
625
761
|
mergeResolvers(defaultResolvers: TypeResolver<T>): TypeResolver<T>;
|
|
626
762
|
defaultResolvers(): TypeResolver<T>;
|
|
627
763
|
sessionClass(): ClassInterface<T>;
|
|
764
|
+
paymentClass(): ClassInterface<T>;
|
|
628
765
|
roleClass(): ClassInterface<T>;
|
|
629
766
|
userClass(): ClassInterface<T>;
|
|
630
767
|
defaultFields(): SchemaFields<T>;
|
|
@@ -702,80 +839,14 @@ export interface Provider {
|
|
|
702
839
|
refreshToken(options: refreshTokenOptions): Promise<void>;
|
|
703
840
|
}
|
|
704
841
|
declare enum AuthenticationProvider$1 {
|
|
705
|
-
Google = "
|
|
842
|
+
Google = "google",
|
|
843
|
+
EmailPassword = "emailPassword"
|
|
706
844
|
}
|
|
707
845
|
export interface WabeRoute {
|
|
708
846
|
method: "GET" | "POST" | "PUT" | "DELETE";
|
|
709
847
|
path: string;
|
|
710
848
|
handler: WobeHandler<WobeCustomContext<any>>;
|
|
711
849
|
}
|
|
712
|
-
declare class HookObject<T extends WabeTypes, K = keyof T["types"]> {
|
|
713
|
-
className: string;
|
|
714
|
-
private newData;
|
|
715
|
-
private operationType;
|
|
716
|
-
context: WabeContext<T>;
|
|
717
|
-
object: Record<keyof WabeTypes["types"][T], any>;
|
|
718
|
-
constructor({ newData, className, operationType, context, object, }: {
|
|
719
|
-
className: K;
|
|
720
|
-
newData?: MutationData<T>;
|
|
721
|
-
operationType: OperationType;
|
|
722
|
-
context: WabeContext<T>;
|
|
723
|
-
object: Record<keyof WabeTypes["types"][T], any>;
|
|
724
|
-
});
|
|
725
|
-
getUser(): User | null | undefined;
|
|
726
|
-
isFieldUpdate(field: keyof WabeTypes["types"][T]): boolean | undefined;
|
|
727
|
-
upsertNewData(field: keyof WabeTypes["types"][T], value: any): void;
|
|
728
|
-
getNewData(): MutationData<T>;
|
|
729
|
-
}
|
|
730
|
-
export declare enum OperationType {
|
|
731
|
-
AfterCreate = "AfterCreate",
|
|
732
|
-
AfterUpdate = "afterUpdate",
|
|
733
|
-
AfterDelete = "afterDelete",
|
|
734
|
-
AfterRead = "afterRead",
|
|
735
|
-
BeforeCreate = "beforeInsert",
|
|
736
|
-
BeforeUpdate = "beforeUpdate",
|
|
737
|
-
BeforeDelete = "beforeDelete",
|
|
738
|
-
BeforeRead = "beforeRead"
|
|
739
|
-
}
|
|
740
|
-
export type Hook<T extends WabeTypes> = {
|
|
741
|
-
operationType: OperationType;
|
|
742
|
-
className?: T;
|
|
743
|
-
priority: number;
|
|
744
|
-
callback: (hookObject: HookObject<T>) => Promise<void> | void;
|
|
745
|
-
};
|
|
746
|
-
export type TypedNewData<T extends keyof WabeTypes["types"]> = Record<keyof WabeTypes["types"][T], any>;
|
|
747
|
-
export declare const _findHooksByPriority: <T extends unknown>({ className, operationType, priority, config, }: {
|
|
748
|
-
operationType: OperationType;
|
|
749
|
-
className: T;
|
|
750
|
-
priority: number;
|
|
751
|
-
config: WabeConfig<any>;
|
|
752
|
-
}) => Promise<Hook<any>[]>;
|
|
753
|
-
export declare const initializeHook: <T extends unknown>({ className, newData, context, }: {
|
|
754
|
-
className: T;
|
|
755
|
-
newData?: TypedNewData<any> | undefined;
|
|
756
|
-
context: WabeContext<any>;
|
|
757
|
-
}) => {
|
|
758
|
-
runOnSingleObject: ({ operationType, id, object: inputObject, }: {
|
|
759
|
-
operationType: OperationType;
|
|
760
|
-
id?: string | undefined;
|
|
761
|
-
object?: OutputType<any, any> | undefined;
|
|
762
|
-
}) => Promise<{
|
|
763
|
-
object: undefined;
|
|
764
|
-
newData: {};
|
|
765
|
-
} | {
|
|
766
|
-
object: OutputType<any, any>;
|
|
767
|
-
newData: MutationData<any>;
|
|
768
|
-
}>;
|
|
769
|
-
runOnMultipleObjects: ({ operationType, where, objects: inputObjects, }: {
|
|
770
|
-
operationType: OperationType;
|
|
771
|
-
where?: WhereType<any, any> | undefined;
|
|
772
|
-
objects?: OutputType<any, any>[] | undefined;
|
|
773
|
-
}) => Promise<{
|
|
774
|
-
objects: OutputType<any, any>[];
|
|
775
|
-
newData: MutationData<any>[];
|
|
776
|
-
}>;
|
|
777
|
-
};
|
|
778
|
-
export declare const getDefaultHooks: () => Hook<any>[];
|
|
779
850
|
export type DevWabeTypes = {
|
|
780
851
|
types: WabeSchemaTypes;
|
|
781
852
|
scalars: WabeSchemaScalars;
|
|
@@ -822,7 +893,7 @@ declare class EmailController implements EmailAdapter {
|
|
|
822
893
|
constructor(adapter: EmailAdapter);
|
|
823
894
|
send(options: EmailSendOptions): Promise<string>;
|
|
824
895
|
}
|
|
825
|
-
|
|
896
|
+
declare enum Currency$1 {
|
|
826
897
|
EUR = "eur",
|
|
827
898
|
USD = "usd"
|
|
828
899
|
}
|
|
@@ -848,20 +919,55 @@ export type Product = {
|
|
|
848
919
|
unitAmount: number;
|
|
849
920
|
quantity: number;
|
|
850
921
|
};
|
|
922
|
+
export interface OnPaymentSucceedOptions {
|
|
923
|
+
created: string;
|
|
924
|
+
amount: number;
|
|
925
|
+
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
|
+
currency: string;
|
|
939
|
+
paymentMethodTypes: Array<string>;
|
|
940
|
+
}
|
|
941
|
+
export interface OnPaymentFailedOptions {
|
|
942
|
+
created: string;
|
|
943
|
+
amount: number;
|
|
944
|
+
messageError: string;
|
|
945
|
+
paymentMethodTypes: Array<string>;
|
|
946
|
+
}
|
|
851
947
|
export interface PaymentConfig {
|
|
852
948
|
adapter: PaymentAdapter;
|
|
853
949
|
supportedPaymentMethods: Array<PaymentMethod>;
|
|
854
|
-
currency: Currency;
|
|
950
|
+
currency: Currency$1;
|
|
951
|
+
onPaymentSucceed?: (options: OnPaymentSucceedOptions) => Promise<void>;
|
|
952
|
+
onPaymentFailed?: (options: OnPaymentFailedOptions) => Promise<void>;
|
|
855
953
|
}
|
|
856
954
|
export type Invoice = {
|
|
857
955
|
amountDue: number;
|
|
858
956
|
amountPaid: number;
|
|
859
|
-
currency: Currency;
|
|
957
|
+
currency: Currency$1;
|
|
860
958
|
id: string;
|
|
861
959
|
created: number;
|
|
862
960
|
invoiceUrl: string;
|
|
863
961
|
isPaid: boolean;
|
|
864
962
|
};
|
|
963
|
+
export type Transaction = {
|
|
964
|
+
customerEmail: string;
|
|
965
|
+
amount: number;
|
|
966
|
+
currency: Currency$1;
|
|
967
|
+
created: number;
|
|
968
|
+
isSubscription: boolean;
|
|
969
|
+
reccuringInterval?: "month" | "year";
|
|
970
|
+
};
|
|
865
971
|
export type CreateCustomerOptions = {
|
|
866
972
|
customerName?: string;
|
|
867
973
|
customerEmail: string;
|
|
@@ -870,7 +976,7 @@ export type CreateCustomerOptions = {
|
|
|
870
976
|
paymentMethod: PaymentMethod;
|
|
871
977
|
};
|
|
872
978
|
export type CreatePaymentOptions = {
|
|
873
|
-
currency: Currency;
|
|
979
|
+
currency: Currency$1;
|
|
874
980
|
customerEmail: string;
|
|
875
981
|
products: Array<Product>;
|
|
876
982
|
paymentMethod: Array<PaymentMethod>;
|
|
@@ -880,13 +986,37 @@ export type CreatePaymentOptions = {
|
|
|
880
986
|
automaticTax?: boolean;
|
|
881
987
|
recurringInterval?: "month" | "year";
|
|
882
988
|
};
|
|
989
|
+
export type InitWebhookOptions = {
|
|
990
|
+
webhookUrl: string;
|
|
991
|
+
};
|
|
883
992
|
export type CancelSubscriptionOptions = {
|
|
884
993
|
email: string;
|
|
885
994
|
};
|
|
886
995
|
export type GetInvoicesOptions = {
|
|
887
996
|
email: string;
|
|
888
997
|
};
|
|
998
|
+
export type GetTotalRevenueOptions = {
|
|
999
|
+
startRangeTimestamp?: number;
|
|
1000
|
+
endRangeTimestamp?: number;
|
|
1001
|
+
charge: "net" | "gross";
|
|
1002
|
+
};
|
|
1003
|
+
export type GetAllTransactionsOptions = {
|
|
1004
|
+
startRangeTimestamp?: number;
|
|
1005
|
+
endRangeTimestamp?: number;
|
|
1006
|
+
first?: number;
|
|
1007
|
+
};
|
|
1008
|
+
export type GetCustomerByIdOptions = {
|
|
1009
|
+
id: string;
|
|
1010
|
+
};
|
|
889
1011
|
export interface PaymentAdapter {
|
|
1012
|
+
/**
|
|
1013
|
+
* Get a customer by id
|
|
1014
|
+
* @param id The customer id
|
|
1015
|
+
* @returns The customer
|
|
1016
|
+
*/
|
|
1017
|
+
getCustomerById: (options: GetCustomerByIdOptions) => Promise<{
|
|
1018
|
+
email: string | null;
|
|
1019
|
+
}>;
|
|
890
1020
|
/**
|
|
891
1021
|
* Create a customer
|
|
892
1022
|
* @param options CreateCustomerOptions
|
|
@@ -910,18 +1040,48 @@ export interface PaymentAdapter {
|
|
|
910
1040
|
* @returns The invoices of a customer
|
|
911
1041
|
*/
|
|
912
1042
|
getInvoices: (options: GetInvoicesOptions) => Promise<Invoice[]>;
|
|
1043
|
+
/**
|
|
1044
|
+
* Get total revenue
|
|
1045
|
+
* @param options The type of charge (net or gross) and the start and end range timestamps to get the total revenue
|
|
1046
|
+
* @returns The total amount
|
|
1047
|
+
*/
|
|
1048
|
+
getTotalRevenue: (options: GetTotalRevenueOptions) => Promise<number>;
|
|
1049
|
+
/**
|
|
1050
|
+
* Get the list of all transactions
|
|
1051
|
+
* @param options The start and end range timestamps to get the transactions
|
|
1052
|
+
* @returns The list of transactions
|
|
1053
|
+
*/
|
|
1054
|
+
getAllTransactions: (options: GetAllTransactionsOptions) => Promise<Transaction[]>;
|
|
1055
|
+
/**
|
|
1056
|
+
* Get the hypothetical revenue of subscriptions
|
|
1057
|
+
* @returns The hypothetical revenue of subscriptions
|
|
1058
|
+
*/
|
|
1059
|
+
getHypotheticalSubscriptionRevenue: () => Promise<number>;
|
|
1060
|
+
/**
|
|
1061
|
+
* Init the webhook for succeed and failed payments
|
|
1062
|
+
* @param options The webhook url
|
|
1063
|
+
*/
|
|
1064
|
+
initWebhook: (options: InitWebhookOptions) => Promise<void>;
|
|
913
1065
|
}
|
|
914
1066
|
declare class PaymentController implements PaymentAdapter {
|
|
915
1067
|
private adapter;
|
|
916
1068
|
private config;
|
|
917
1069
|
constructor(paymentConfig: PaymentConfig);
|
|
1070
|
+
getCustomerById(options: GetCustomerByIdOptions): Promise<{
|
|
1071
|
+
email: string | null;
|
|
1072
|
+
}>;
|
|
1073
|
+
initWebhook({ webhookUrl }: InitWebhookOptions): Promise<void>;
|
|
918
1074
|
createCustomer(options: CreateCustomerOptions): Promise<string>;
|
|
919
1075
|
createPayment(options: Omit<CreatePaymentOptions, "currency" | "paymentMethod">): Promise<string>;
|
|
920
1076
|
cancelSubscription(options: CancelSubscriptionOptions): Promise<void>;
|
|
921
1077
|
getInvoices(options: GetInvoicesOptions): Promise<Invoice[]>;
|
|
1078
|
+
getTotalRevenue(options: GetTotalRevenueOptions): Promise<number>;
|
|
1079
|
+
getAllTransactions(options: GetAllTransactionsOptions): Promise<Transaction[]>;
|
|
1080
|
+
getHypotheticalSubscriptionRevenue(): Promise<number>;
|
|
922
1081
|
}
|
|
923
1082
|
export interface WabeConfig<T extends WabeTypes> {
|
|
924
1083
|
port: number;
|
|
1084
|
+
publicUrl?: string;
|
|
925
1085
|
schema?: SchemaInterface<T>;
|
|
926
1086
|
database: DatabaseConfig;
|
|
927
1087
|
codegen?: {
|
|
@@ -933,7 +1093,7 @@ export interface WabeConfig<T extends WabeTypes> {
|
|
|
933
1093
|
authentication?: AuthenticationConfig<T>;
|
|
934
1094
|
routes?: WabeRoute[];
|
|
935
1095
|
rootKey: string;
|
|
936
|
-
hooks?: Hook<any>[];
|
|
1096
|
+
hooks?: Hook<T, any>[];
|
|
937
1097
|
email?: EmailConfig;
|
|
938
1098
|
payment?: PaymentConfig;
|
|
939
1099
|
file?: FileConfig;
|
|
@@ -955,7 +1115,8 @@ export declare class Wabe<T extends WabeTypes> {
|
|
|
955
1115
|
server: Wobe<WobeCustomContext<T>>;
|
|
956
1116
|
config: WabeConfig<T>;
|
|
957
1117
|
controllers: WabeControllers<T>;
|
|
958
|
-
constructor({ port, schema, database, authentication, rootKey, codegen, hooks, file, email, payment, routes, }: WabeConfig<T>);
|
|
1118
|
+
constructor({ port, schema, database, authentication, rootKey, codegen, hooks, file, email, payment, routes, publicUrl, }: WabeConfig<T>);
|
|
1119
|
+
loadRoleEnum(): void;
|
|
959
1120
|
loadAuthenticationMethods(): void;
|
|
960
1121
|
loadHooks(): void;
|
|
961
1122
|
loadDefaultRoutes(): void;
|
|
@@ -1042,6 +1203,7 @@ export declare class Google implements OAuth2ProviderWithPKCE {
|
|
|
1042
1203
|
|
|
1043
1204
|
export {
|
|
1044
1205
|
AuthenticationProvider$1 as AuthenticationProvider,
|
|
1206
|
+
Currency$1 as Currency,
|
|
1045
1207
|
};
|
|
1046
1208
|
|
|
1047
1209
|
export {};
|