wabe 0.5.23 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  <p align="center">
2
- <a href="https://wabe.dev"><img src="https://www.wabe.dev/logo.webp" alt="Wabe logo" height=170></a>
2
+ <a href="https://wabe.dev"><img src="https://wabe.dev/assets/logo.png" alt="Wabe logo" height=170></a>
3
3
  </p>
4
- <h1 align="center">Wabe</h1>
5
4
 
6
5
  <div align="center">
7
6
  <a href="https://wabe.dev">Documentation</a>
package/dist/index.d.ts CHANGED
@@ -55,8 +55,10 @@ declare enum RoleEnum {
55
55
  Client = "Client"
56
56
  }
57
57
  declare enum AuthenticationProvider {
58
+ github = "github",
58
59
  google = "google",
59
- emailPassword = "emailPassword"
60
+ emailPassword = "emailPassword",
61
+ phonePassword = "phonePassword"
60
62
  }
61
63
  declare enum SecondaryFactor {
62
64
  EmailOTP = "EmailOTP"
@@ -65,6 +67,7 @@ export type User = {
65
67
  id: Scalars["ID"]["output"];
66
68
  name?: Scalars["String"]["output"];
67
69
  age?: Scalars["Int"]["output"];
70
+ email?: Scalars["Email"]["output"];
68
71
  acl?: UserACLObject;
69
72
  createdAt?: Scalars["Date"]["output"];
70
73
  updatedAt?: Scalars["Date"]["output"];
@@ -72,7 +75,6 @@ export type User = {
72
75
  authentication?: UserAuthentication;
73
76
  provider?: AuthenticationProvider;
74
77
  isOauth?: Scalars["Boolean"]["output"];
75
- email?: Scalars["Email"]["output"];
76
78
  verifiedEmail?: Scalars["Boolean"]["output"];
77
79
  role?: Role;
78
80
  sessions?: _SessionConnection;
@@ -92,8 +94,14 @@ export type UserACLObjectRolesACL = {
92
94
  write: Scalars["Boolean"]["output"];
93
95
  };
94
96
  export type UserAuthentication = {
97
+ phonePassword?: UserAuthenticationPhonePassword;
95
98
  emailPassword?: UserAuthenticationEmailPassword;
96
99
  google?: UserAuthenticationGoogle;
100
+ github?: UserAuthenticationGithub;
101
+ };
102
+ export type UserAuthenticationPhonePassword = {
103
+ phone: Scalars["Phone"]["output"];
104
+ password: Scalars["String"]["output"];
97
105
  };
98
106
  export type UserAuthenticationEmailPassword = {
99
107
  email: Scalars["Email"]["output"];
@@ -102,7 +110,11 @@ export type UserAuthenticationEmailPassword = {
102
110
  export type UserAuthenticationGoogle = {
103
111
  email: Scalars["Email"]["output"];
104
112
  verifiedEmail: Scalars["Boolean"]["output"];
105
- idToken: Scalars["String"]["output"];
113
+ };
114
+ export type UserAuthenticationGithub = {
115
+ email: Scalars["Email"]["output"];
116
+ avatarUrl: Scalars["String"]["output"];
117
+ username: Scalars["String"]["output"];
106
118
  };
107
119
  export type _SessionConnection = {
108
120
  totalCount?: Scalars["Int"]["output"];
@@ -114,7 +126,6 @@ export type _SessionEdge = {
114
126
  export type Post = {
115
127
  id: Scalars["ID"]["output"];
116
128
  name: Scalars["String"]["output"];
117
- test?: Scalars["File"]["output"];
118
129
  test2?: RoleEnum;
119
130
  acl?: PostACLObject;
120
131
  createdAt?: Scalars["Date"]["output"];
@@ -219,11 +230,17 @@ export type SignInWithInput = {
219
230
  authentication: SignInWithAuthenticationInput;
220
231
  };
221
232
  export type SignInWithAuthenticationInput = {
233
+ phonePassword?: SignInWithAuthenticationPhonePasswordInput;
222
234
  emailPassword?: SignInWithAuthenticationEmailPasswordInput;
223
235
  google?: SignInWithAuthenticationGoogleInput;
236
+ github?: SignInWithAuthenticationGithubInput;
224
237
  otp?: SignInWithAuthenticationOtpInput;
225
238
  secondaryFactor?: SecondaryFactor;
226
239
  };
240
+ export type SignInWithAuthenticationPhonePasswordInput = {
241
+ phone: Scalars["Phone"]["input"];
242
+ password: Scalars["String"]["input"];
243
+ };
227
244
  export type SignInWithAuthenticationEmailPasswordInput = {
228
245
  email: Scalars["Email"]["input"];
229
246
  password: Scalars["String"]["input"];
@@ -232,6 +249,10 @@ export type SignInWithAuthenticationGoogleInput = {
232
249
  authorizationCode: Scalars["String"]["input"];
233
250
  codeVerifier: Scalars["String"]["input"];
234
251
  };
252
+ export type SignInWithAuthenticationGithubInput = {
253
+ authorizationCode: Scalars["String"]["input"];
254
+ codeVerifier: Scalars["String"]["input"];
255
+ };
235
256
  export type SignInWithAuthenticationOtpInput = {
236
257
  code?: Scalars["String"]["input"];
237
258
  };
@@ -239,11 +260,17 @@ export type SignUpWithInput = {
239
260
  authentication: SignUpWithAuthenticationInput;
240
261
  };
241
262
  export type SignUpWithAuthenticationInput = {
263
+ phonePassword?: SignUpWithAuthenticationPhonePasswordInput;
242
264
  emailPassword?: SignUpWithAuthenticationEmailPasswordInput;
243
265
  google?: SignUpWithAuthenticationGoogleInput;
266
+ github?: SignUpWithAuthenticationGithubInput;
244
267
  otp?: SignUpWithAuthenticationOtpInput;
245
268
  secondaryFactor?: SecondaryFactor;
246
269
  };
270
+ export type SignUpWithAuthenticationPhonePasswordInput = {
271
+ phone: Scalars["Phone"]["input"];
272
+ password: Scalars["String"]["input"];
273
+ };
247
274
  export type SignUpWithAuthenticationEmailPasswordInput = {
248
275
  email: Scalars["Email"]["input"];
249
276
  password: Scalars["String"]["input"];
@@ -252,10 +279,14 @@ export type SignUpWithAuthenticationGoogleInput = {
252
279
  authorizationCode: Scalars["String"]["input"];
253
280
  codeVerifier: Scalars["String"]["input"];
254
281
  };
282
+ export type SignUpWithAuthenticationGithubInput = {
283
+ authorizationCode: Scalars["String"]["input"];
284
+ codeVerifier: Scalars["String"]["input"];
285
+ };
255
286
  export type SignUpWithAuthenticationOtpInput = {
256
287
  code?: Scalars["String"]["input"];
257
288
  };
258
- export type WabeSchemaScalars = "Phone";
289
+ export type WabeSchemaScalars = "";
259
290
  export type WabeSchemaEnums = {
260
291
  RoleEnum: RoleEnum;
261
292
  AuthenticationProvider: AuthenticationProvider;
@@ -351,6 +382,7 @@ export interface UpdateObjectOptions<T extends WabeTypes, K extends keyof T["typ
351
382
  data: MutationData<T, K, U>;
352
383
  fields: Array<W | "*">;
353
384
  context: WabeContext<any>;
385
+ skipHooks?: boolean;
354
386
  }
355
387
  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]> {
356
388
  className: K;
@@ -361,6 +393,7 @@ export interface UpdateObjectsOptions<T extends WabeTypes, K extends keyof T["ty
361
393
  offset?: number;
362
394
  first?: number;
363
395
  context: WabeContext<any>;
396
+ skipHooks?: boolean;
364
397
  }
365
398
  export interface DeleteObjectOptions<T extends WabeTypes, K extends keyof T["types"], U extends keyof T["types"][K]> {
366
399
  className: K;
@@ -618,8 +651,8 @@ export declare class DatabaseController<T extends WabeTypes> {
618
651
  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>[]>;
619
652
  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>>;
620
653
  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>[]>;
621
- 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>>;
622
- 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>[]>;
654
+ updateObject<K extends keyof T["types"], U extends keyof T["types"][K], W extends keyof T["types"][K]>({ id, className, context, data, fields, skipHooks, }: UpdateObjectOptions<T, K, U, W>): Promise<OutputType<T, K, W>>;
655
+ 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, skipHooks, }: UpdateObjectsOptions<T, K, U, W, X>): Promise<OutputType<T, K, W>[]>;
623
656
  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>>;
624
657
  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>[]>;
625
658
  }
@@ -658,9 +691,10 @@ export declare const _findHooksByPriority: <T extends unknown>({ className, oper
658
691
  priority: number;
659
692
  config: WabeConfig<any>;
660
693
  }) => Promise<Hook<any, any>[]>;
661
- export declare const initializeHook: <T extends WabeTypes, K extends keyof T["types"]>({ className, newData, context, }: {
694
+ export declare const initializeHook: <T extends WabeTypes, K extends keyof T["types"]>({ className, newData, context, fields, }: {
662
695
  className: K;
663
696
  newData?: MutationData<DevWabeTypes, any, any>;
697
+ fields: string[];
664
698
  context: WabeContext<any>;
665
699
  }) => {
666
700
  runOnSingleObject: (options: {
@@ -695,13 +729,15 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
695
729
  context: WabeContext<T>;
696
730
  object: OutputType<T, K, keyof T["types"][K]>;
697
731
  originalObject: OutputType<T, K, keyof T["types"][K]> | undefined;
698
- constructor({ newData, className, operationType, context, object, originalObject, }: {
732
+ fields: Array<keyof T["types"][K]>;
733
+ constructor({ newData, className, operationType, context, object, originalObject, fields, }: {
699
734
  className: K;
700
735
  newData?: MutationData<T, K, keyof T["types"][K]>;
701
736
  operationType: OperationType;
702
737
  context: WabeContext<T>;
703
738
  object: OutputType<T, K, keyof T["types"][K]>;
704
739
  originalObject?: OutputType<T, K, keyof T["types"][K]>;
740
+ fields: Array<keyof T["types"][K]>;
705
741
  });
706
742
  getUser(): User | null | undefined;
707
743
  isFieldUpdated(field: keyof T["types"][K]): boolean | undefined;
@@ -710,7 +746,7 @@ declare class HookObject<T extends WabeTypes, K extends keyof WabeTypes["types"]
710
746
  fetch(): Promise<OutputType<T, K, keyof T["types"][K]>>;
711
747
  addACL(type: "users" | "roles", options: AddACLOpptions): Promise<void>;
712
748
  }
713
- export type WabePrimaryTypes = "String" | "Int" | "Float" | "Boolean" | "Email" | "Date" | "File";
749
+ export type WabePrimaryTypes = "String" | "Int" | "Float" | "Boolean" | "Email" | "Phone" | "Date" | "File";
714
750
  export type WabeCustomTypes = "Array" | "Object";
715
751
  export type WabeRelationTypes = "Pointer" | "Relation";
716
752
  export type WabeFieldTypes = WabeCustomTypes | WabePrimaryTypes | WabeRelationTypes;
@@ -774,7 +810,7 @@ export type TypeFieldCustomEnums<T extends WabeTypes> = {
774
810
  description?: string;
775
811
  defaultValue?: any;
776
812
  };
777
- export type TypeField<T extends WabeTypes> = TypeFieldBase<string, "String"> | TypeFieldBase<number, "Int"> | TypeFieldBase<number, "Float"> | TypeFieldBase<boolean, "Boolean"> | TypeFieldBase<Date, "Date"> | TypeFieldBase<string, "Email"> | TypeFieldArray<T> | TypeFieldObject<T> | TypeFieldPointer<T> | TypeFieldRelation<T> | TypeFieldFile | TypeFieldCustomScalars<T> | TypeFieldCustomEnums<T>;
813
+ export type TypeField<T extends WabeTypes> = TypeFieldBase<string, "String"> | TypeFieldBase<number, "Int"> | TypeFieldBase<number, "Float"> | TypeFieldBase<boolean, "Boolean"> | TypeFieldBase<Date, "Date"> | TypeFieldBase<string, "Email"> | TypeFieldBase<string, "Phone"> | TypeFieldArray<T> | TypeFieldObject<T> | TypeFieldPointer<T> | TypeFieldRelation<T> | TypeFieldFile | TypeFieldCustomScalars<T> | TypeFieldCustomEnums<T>;
778
814
  export type SchemaFields<T extends WabeTypes> = Record<string, TypeField<T>>;
779
815
  export type ResolverType<T extends WabeTypes> = {
780
816
  required?: boolean;
@@ -877,7 +913,7 @@ export declare class Schema<T extends WabeTypes> {
877
913
  }
878
914
  export declare enum ProviderEnum {
879
915
  google = "google",
880
- x = "x"
916
+ github = "github"
881
917
  }
882
918
  export interface ProviderConfig {
883
919
  clientId: string;
@@ -948,8 +984,10 @@ export interface Provider {
948
984
  refreshToken(options: refreshTokenOptions): Promise<void>;
949
985
  }
950
986
  declare enum AuthenticationProvider$1 {
987
+ GitHub = "github",
951
988
  Google = "google",
952
- EmailPassword = "emailPassword"
989
+ EmailPassword = "emailPassword",
990
+ PhonePassword = "phonePassword"
953
991
  }
954
992
  export interface WabeRoute {
955
993
  method: "GET" | "POST" | "PUT" | "DELETE";
@@ -961,17 +999,39 @@ export declare const generateCodegen: ({ schema, path, graphqlSchema, }: {
961
999
  path: string;
962
1000
  graphqlSchema: GraphQLSchema;
963
1001
  }) => Promise<void>;
964
- /**
965
- * A file adpater that upload a file and returns the url of the file
966
- * @param file: File
967
- * @returns The url of the uploaded file
968
- */
969
- export type WabeFileAdapter = (file: File) => Promise<string>;
1002
+ export declare class FileDevAdapter implements FileAdapter {
1003
+ private basePath;
1004
+ constructor(basePath: string);
1005
+ uploadFile(file: File | Blob): Promise<void>;
1006
+ readFile(fileName: string): Promise<string | null>;
1007
+ deleteFile(fileName: string): Promise<void>;
1008
+ }
970
1009
  /**
971
1010
  * The file config contains the adapter to use to upload file
1011
+ * @param adapter: FileAdapter
1012
+ * @param urlCacheInSeconds: number Number of seconds to cache the url, equal to the number of seconds the url will be valid
972
1013
  */
973
1014
  export interface FileConfig {
974
- adapter: WabeFileAdapter;
1015
+ adapter: FileAdapter;
1016
+ urlCacheInSeconds?: number;
1017
+ }
1018
+ export interface ReadFileOptions {
1019
+ urlExpiresIn?: number;
1020
+ }
1021
+ export interface FileAdapter {
1022
+ /**
1023
+ * Upload a file and returns the url of the file
1024
+ * @param file: File
1025
+ */
1026
+ uploadFile(file: File | Blob): Promise<void>;
1027
+ /**
1028
+ * Read a file and returns the url of the file
1029
+ * @param fileName: string
1030
+ * @param urlExpiresIn: number Number of seconds to expire the url
1031
+ * @returns The url of file or null if the file doesn't exist
1032
+ */
1033
+ readFile(fileName: string, options?: ReadFileOptions): Promise<string | null> | string | null;
1034
+ deleteFile(fileName: string): Promise<void>;
975
1035
  }
976
1036
  export type HtmlTemplates = {
977
1037
  sendOTPCode: (options: {
@@ -1282,6 +1342,13 @@ export interface AIAdapter {
1282
1342
  export interface AIConfig {
1283
1343
  adapter: AIAdapter;
1284
1344
  }
1345
+ declare class FileController implements FileAdapter {
1346
+ adapter: FileAdapter;
1347
+ constructor(adapter: FileAdapter);
1348
+ uploadFile(file: File | Blob): Promise<void>;
1349
+ readFile(fileName: string): string | Promise<string | null> | null;
1350
+ deleteFile(fileName: string): Promise<void>;
1351
+ }
1285
1352
  export type SecurityConfig = {
1286
1353
  corsOptions?: CorsOptions;
1287
1354
  rateLimit?: RateLimitOptions;
@@ -1292,6 +1359,7 @@ export interface WabeConfig<T extends WabeTypes> {
1292
1359
  hostname?: string;
1293
1360
  security?: SecurityConfig;
1294
1361
  schema?: SchemaInterface<T>;
1362
+ graphqlSchema?: GraphQLSchema;
1295
1363
  database: DatabaseConfig;
1296
1364
  codegen?: {
1297
1365
  enabled: true;
@@ -1320,6 +1388,7 @@ export type WabeControllers<T extends WabeTypes> = {
1320
1388
  database: DatabaseController<T>;
1321
1389
  email?: EmailController;
1322
1390
  payment?: PaymentController;
1391
+ file?: FileController;
1323
1392
  };
1324
1393
  export declare class Wabe<T extends WabeTypes> {
1325
1394
  server: Wobe<WobeCustomContext<T>>;