@scefira/dfw 1.3.0-alpha.2 → 1.3.0-alpha.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.
Files changed (60) hide show
  1. package/dist/cjs/index.d.ts.map +1 -1
  2. package/dist/cjs/types/APIListener.d.ts +67 -0
  3. package/dist/cjs/types/APIListener.d.ts.map +1 -0
  4. package/dist/cjs/types/APIListener.js +3 -0
  5. package/dist/cjs/types/APIListener.js.map +1 -0
  6. package/dist/cjs/types/DFWConfig.d.ts +53 -0
  7. package/dist/cjs/types/DFWConfig.d.ts.map +1 -0
  8. package/dist/cjs/types/DFWConfig.js +3 -0
  9. package/dist/cjs/types/DFWConfig.js.map +1 -0
  10. package/dist/cjs/types/DFWDatabase.d.ts +4 -0
  11. package/dist/cjs/types/DFWDatabase.d.ts.map +1 -0
  12. package/dist/cjs/types/DFWDatabase.js +3 -0
  13. package/dist/cjs/types/DFWDatabase.js.map +1 -0
  14. package/dist/cjs/types/DFWModule.d.ts +8 -0
  15. package/dist/cjs/types/DFWModule.d.ts.map +1 -0
  16. package/dist/cjs/types/DFWModule.js +3 -0
  17. package/dist/cjs/types/DFWModule.js.map +1 -0
  18. package/dist/cjs/types/DFWRequest.d.ts +27 -0
  19. package/dist/cjs/types/DFWRequest.d.ts.map +1 -0
  20. package/dist/cjs/types/DFWRequest.js +3 -0
  21. package/dist/cjs/types/DFWRequest.js.map +1 -0
  22. package/dist/cjs/types/DFWService.d.ts +7 -0
  23. package/dist/cjs/types/DFWService.d.ts.map +1 -0
  24. package/dist/cjs/types/DFWService.js +3 -0
  25. package/dist/cjs/types/DFWService.js.map +1 -0
  26. package/dist/cjs/types/index.d.ts +6 -0
  27. package/dist/cjs/types/index.d.ts.map +1 -0
  28. package/dist/cjs/types/index.js +3 -0
  29. package/dist/cjs/types/index.js.map +1 -0
  30. package/dist/esm/index.d.ts.map +1 -1
  31. package/dist/esm/package.json +6 -1
  32. package/dist/esm/types/APIListener.d.ts +67 -0
  33. package/dist/esm/types/APIListener.d.ts.map +1 -0
  34. package/dist/esm/types/APIListener.js +2 -0
  35. package/dist/esm/types/APIListener.js.map +1 -0
  36. package/dist/esm/types/DFWConfig.d.ts +53 -0
  37. package/dist/esm/types/DFWConfig.d.ts.map +1 -0
  38. package/dist/esm/types/DFWConfig.js +2 -0
  39. package/dist/esm/types/DFWConfig.js.map +1 -0
  40. package/dist/esm/types/DFWDatabase.d.ts +4 -0
  41. package/dist/esm/types/DFWDatabase.d.ts.map +1 -0
  42. package/dist/esm/types/DFWDatabase.js +2 -0
  43. package/dist/esm/types/DFWDatabase.js.map +1 -0
  44. package/dist/esm/types/DFWModule.d.ts +8 -0
  45. package/dist/esm/types/DFWModule.d.ts.map +1 -0
  46. package/dist/esm/types/DFWModule.js +2 -0
  47. package/dist/esm/types/DFWModule.js.map +1 -0
  48. package/dist/esm/types/DFWRequest.d.ts +27 -0
  49. package/dist/esm/types/DFWRequest.d.ts.map +1 -0
  50. package/dist/esm/types/DFWRequest.js +2 -0
  51. package/dist/esm/types/DFWRequest.js.map +1 -0
  52. package/dist/esm/types/DFWService.d.ts +7 -0
  53. package/dist/esm/types/DFWService.d.ts.map +1 -0
  54. package/dist/esm/types/DFWService.js +2 -0
  55. package/dist/esm/types/DFWService.js.map +1 -0
  56. package/dist/esm/types/index.d.ts +6 -0
  57. package/dist/esm/types/index.d.ts.map +1 -0
  58. package/dist/esm/types/index.js +2 -0
  59. package/dist/esm/types/index.js.map +1 -0
  60. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAC;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,67 @@
1
+ import type { Handler } from "express";
2
+ import type { ZodSchema } from "zod";
3
+ import type { DFWServiceConstructor } from "#types/DFWService";
4
+ import type { DFWRequestSchema, DFWRequest, DFWResponse } from "#types/DFWRequest";
5
+ import type fileUpload from "express-fileupload";
6
+ export type DFWRegisterItem = APIListener | {
7
+ [key: string]: DFWRegisterItem;
8
+ } | DFWRegisterItem[];
9
+ export type APIMethod = 'get' | 'post' | 'put' | 'delete' | 'options' | 'patch' | 'use';
10
+ export type ListenerFn<TServices extends readonly DFWServiceConstructor[] = []> = (dfw: DFWRequestSchema<TServices>, req: DFWRequest<TServices>, res: DFWResponse) => Promise<any | void> | any | void;
11
+ export type APIListener = {
12
+ /**
13
+ * REST API Method
14
+ */
15
+ method?: APIMethod;
16
+ /**
17
+ * Main function to be called
18
+ */
19
+ fn?: ListenerFn;
20
+ /**
21
+ * Express middleware (compatible with raw listeners)
22
+ */
23
+ middleware?: Handler | Handler[];
24
+ /**
25
+ * zod validations
26
+ */
27
+ validate?: {
28
+ /**
29
+ * Validate the request body
30
+ */
31
+ body?: ZodSchema;
32
+ /**
33
+ * Validate the request query
34
+ */
35
+ query?: ZodSchema;
36
+ };
37
+ /**
38
+ *
39
+ */
40
+ services?: DFWServiceConstructor[];
41
+ /**
42
+ * File Upload middleware enabled receive a fileUpload.Options
43
+ */
44
+ upload?: fileUpload.Options | boolean;
45
+ /**
46
+ * Disable the autosend system, you must specify what send to the clien and when
47
+ */
48
+ disableAutoSend?: boolean;
49
+ /**
50
+ * Disable body parser (body parser is installed only on post methods)
51
+ */
52
+ disableBodyParser?: boolean;
53
+ /**
54
+ * Callback function after the server responses to the client (after the connection was closed)
55
+ * @param req
56
+ * @param listenerRes
57
+ * @returns
58
+ */
59
+ callback?: (req: DFWRequest, listenerRes: any) => Promise<void>;
60
+ };
61
+ export type APIListenerWithoutFn = Omit<APIListener, 'listener'>;
62
+ export type APIListenerWithoutMethod = Omit<APIListener, 'method'>;
63
+ export type APIListenerFunction = {
64
+ (fn: ListenerFn): APIListener;
65
+ (params: APIListenerWithoutFn, fn: ListenerFn): APIListener;
66
+ };
67
+ //# sourceMappingURL=APIListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIListener.d.ts","sourceRoot":"","sources":["../../../src/types/APIListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,GAAG,eAAe,EAAE,CAAA;AAElG,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;AAEvF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAC5E,CACE,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAChC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,EAAE,CAAC,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC;QAEjB;;WAEG;QACH,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAA;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAErC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACjE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,UAAU,GAAG,WAAW,CAAC;CAC7D,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=APIListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIListener.js","sourceRoot":"","sources":["../../../src/types/APIListener.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import type { CorsOptions } from "cors";
3
+ import type { CookieOptions } from "express-session";
4
+ import type { PrismaClientOptions } from "@prisma/client/runtime/library";
5
+ import type { DFWCore } from "../lib/DFWCore.js";
6
+ export type DFWConfig = {
7
+ server?: {
8
+ port?: number;
9
+ cors?: CorsOptions;
10
+ trustProxy?: boolean | number;
11
+ tmpDir?: string;
12
+ };
13
+ session?: {
14
+ /**
15
+ * Passport auth config, by default dfw is always enabled unless you set it to false
16
+ */
17
+ authenticators?: {
18
+ dfw?: false;
19
+ };
20
+ /**
21
+ * Default days to expire session in database (only in database cookie will not be affected)
22
+ */
23
+ daysToExpire?: number;
24
+ /**
25
+ * Store every session in database no matter if is logged or not, ideal for tracking visitors
26
+ * @default false
27
+ */
28
+ saveAllSessions?: boolean;
29
+ /**
30
+ * Secret to encode cookie session
31
+ * @default "default"
32
+ */
33
+ secret?: string;
34
+ /**
35
+ * Session cookie name
36
+ * @default stk
37
+ */
38
+ cookieName?: string;
39
+ /**
40
+ * Cookie options, more info: https://www.npmjs.com/package/express-session#cookie
41
+ */
42
+ cookieOptions?: CookieOptions;
43
+ /**
44
+ * Session id cached on sever default 300
45
+ */
46
+ sessionCacheSize?: number;
47
+ };
48
+ /**
49
+ * Prisma client options
50
+ */
51
+ prisma?: Omit<PrismaClientOptions, '__internal'> | ((dfw: DFWCore) => PrismaClient);
52
+ };
53
+ //# sourceMappingURL=DFWConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWConfig.d.ts","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,MAAM,SAAS,GAAG;IAEpB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,WAAW,CAAA;QAClB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED,OAAO,CAAC,EAAE;QACN;;WAEG;QACH,cAAc,CAAC,EAAE;YACb,GAAG,CAAC,EAAE,KAAK,CAAA;SACd,CAAA;QAED;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,CAAA;QAEzB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,aAAa,CAAC,EAAE,aAAa,CAAA;QAE7B;;WAEG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC5B,CAAA;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,CAAC,CAAA;CACtF,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DFWConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWConfig.js","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import type { ITXClientDenyList } from "@prisma/client/runtime/library";
3
+ export type DFWDatabase = Omit<PrismaClient, ITXClientDenyList>;
4
+ //# sourceMappingURL=DFWDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWDatabase.d.ts","sourceRoot":"","sources":["../../../src/types/DFWDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAG,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DFWDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWDatabase.js","sourceRoot":"","sources":["../../../src/types/DFWDatabase.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ type Constructor<T = any> = new (...args: any[]) => T;
2
+ export type ExtractRepositories<T extends Constructor[]> = {
3
+ [K in T[number] as K extends {
4
+ namespace: string;
5
+ } ? K['namespace'] : never]: InstanceType<K>;
6
+ };
7
+ export {};
8
+ //# sourceMappingURL=DFWModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWModule.d.ts","sourceRoot":"","sources":["../../../src/types/DFWModule.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI;KACtD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAG,CAAC,SAAS;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAC/C,CAAC,CAAC,WAAW,CAAC,GACd,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DFWModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWModule.js","sourceRoot":"","sources":["../../../src/types/DFWModule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import type { Request, Response } from "express";
2
+ import type { PrismaClient } from "@prisma/client";
3
+ import type { DFWServiceConstructor, MapServiceConstructors } from "#types/DFWService";
4
+ export type DFWRequest<TServices extends readonly DFWServiceConstructor[] = []> = {
5
+ dfw: DFWRequestSchema<TServices>;
6
+ } & Request;
7
+ export type DFWResponse = {
8
+ error: (message: any, status?: number) => void;
9
+ } & Response;
10
+ export type DFWRequestSession = {
11
+ isAuthenticated: boolean;
12
+ user?: {
13
+ id: string;
14
+ } | undefined;
15
+ };
16
+ export type DFWRequestSchema<TServices extends readonly DFWServiceConstructor[] = []> = {
17
+ getSession: () => DFWRequestSession;
18
+ db: PrismaClient;
19
+ /**
20
+ * Callback called in background after finish the api response
21
+ * @param cb callback function or promise
22
+ * @returns
23
+ */
24
+ addCallback: (cb: () => void) => void;
25
+ [key: string]: any;
26
+ } & MapServiceConstructors<TServices>;
27
+ //# sourceMappingURL=DFWRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWRequest.d.ts","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAAI;IAC9E,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;CACpC,GAAG,OAAO,CAAA;AAEX,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,GAAG,QAAQ,CAAA;AAEZ,MAAM,MAAM,iBAAiB,GAAG;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CACpC,CAAA;AAEL,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAAI;IACpF,UAAU,EAAE,MAAM,iBAAiB,CAAA;IAEnC,EAAE,EAAE,YAAY,CAAA;IAEhB;;;;OAIG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DFWRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWRequest.js","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DFWService } from "#lib/DFWService";
2
+ export type DFWServiceConstructor = new (dfw: any) => DFWService;
3
+ export type InferServiceInstance<T extends DFWServiceConstructor> = T extends new () => infer R ? R : never;
4
+ export type MapServiceConstructors<T extends readonly DFWServiceConstructor[]> = {
5
+ [K in keyof T as T[K] extends DFWServiceConstructor ? InstanceType<T[K]>['namespace'] : never]: T[K] extends DFWServiceConstructor ? InstanceType<T[K]> : never;
6
+ };
7
+ //# sourceMappingURL=DFWService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWService.d.ts","sourceRoot":"","sources":["../../../src/types/DFWService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC;AAEjE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,qBAAqB,IAC5D,CAAC,SAAS,UAAU,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,qBAAqB,EAAE,IAAI;KAC5E,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,qBAAqB,GACjD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAC/B,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAC1C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClB,KAAK;CACV,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DFWService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWService.js","sourceRoot":"","sources":["../../../src/types/DFWService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export type * from "#types/DFWDatabase";
2
+ export type * from "#types/DFWConfig";
3
+ export type * from "#types/DFWRequest";
4
+ export type * from "#types/DFWService";
5
+ export type * from "#types/APIListener";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAC;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
@@ -1,3 +1,8 @@
1
1
  {
2
- "type": "module"
2
+ "type": "module",
3
+ "imports": {
4
+ "#lib/*": "./lib/*.js",
5
+ "#modules/*": "./modules/*.js",
6
+ "#listeners/*": "./listeners/*.js"
7
+ }
3
8
  }
@@ -0,0 +1,67 @@
1
+ import type { Handler } from "express";
2
+ import type { ZodSchema } from "zod";
3
+ import type { DFWServiceConstructor } from "#types/DFWService";
4
+ import type { DFWRequestSchema, DFWRequest, DFWResponse } from "#types/DFWRequest";
5
+ import type fileUpload from "express-fileupload";
6
+ export type DFWRegisterItem = APIListener | {
7
+ [key: string]: DFWRegisterItem;
8
+ } | DFWRegisterItem[];
9
+ export type APIMethod = 'get' | 'post' | 'put' | 'delete' | 'options' | 'patch' | 'use';
10
+ export type ListenerFn<TServices extends readonly DFWServiceConstructor[] = []> = (dfw: DFWRequestSchema<TServices>, req: DFWRequest<TServices>, res: DFWResponse) => Promise<any | void> | any | void;
11
+ export type APIListener = {
12
+ /**
13
+ * REST API Method
14
+ */
15
+ method?: APIMethod;
16
+ /**
17
+ * Main function to be called
18
+ */
19
+ fn?: ListenerFn;
20
+ /**
21
+ * Express middleware (compatible with raw listeners)
22
+ */
23
+ middleware?: Handler | Handler[];
24
+ /**
25
+ * zod validations
26
+ */
27
+ validate?: {
28
+ /**
29
+ * Validate the request body
30
+ */
31
+ body?: ZodSchema;
32
+ /**
33
+ * Validate the request query
34
+ */
35
+ query?: ZodSchema;
36
+ };
37
+ /**
38
+ *
39
+ */
40
+ services?: DFWServiceConstructor[];
41
+ /**
42
+ * File Upload middleware enabled receive a fileUpload.Options
43
+ */
44
+ upload?: fileUpload.Options | boolean;
45
+ /**
46
+ * Disable the autosend system, you must specify what send to the clien and when
47
+ */
48
+ disableAutoSend?: boolean;
49
+ /**
50
+ * Disable body parser (body parser is installed only on post methods)
51
+ */
52
+ disableBodyParser?: boolean;
53
+ /**
54
+ * Callback function after the server responses to the client (after the connection was closed)
55
+ * @param req
56
+ * @param listenerRes
57
+ * @returns
58
+ */
59
+ callback?: (req: DFWRequest, listenerRes: any) => Promise<void>;
60
+ };
61
+ export type APIListenerWithoutFn = Omit<APIListener, 'listener'>;
62
+ export type APIListenerWithoutMethod = Omit<APIListener, 'method'>;
63
+ export type APIListenerFunction = {
64
+ (fn: ListenerFn): APIListener;
65
+ (params: APIListenerWithoutFn, fn: ListenerFn): APIListener;
66
+ };
67
+ //# sourceMappingURL=APIListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIListener.d.ts","sourceRoot":"","sources":["../../../src/types/APIListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,GAAG,eAAe,EAAE,CAAA;AAElG,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;AAEvF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAC5E,CACE,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAChC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,EAAE,CAAC,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,IAAI,CAAC,EAAE,SAAS,CAAC;QAEjB;;WAEG;QACH,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAA;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAA;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAErC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACjE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,UAAU,GAAG,WAAW,CAAC;CAC7D,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=APIListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIListener.js","sourceRoot":"","sources":["../../../src/types/APIListener.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import type { CorsOptions } from "cors";
3
+ import type { CookieOptions } from "express-session";
4
+ import type { PrismaClientOptions } from "@prisma/client/runtime/library";
5
+ import type { DFWCore } from "../lib/DFWCore.js";
6
+ export type DFWConfig = {
7
+ server?: {
8
+ port?: number;
9
+ cors?: CorsOptions;
10
+ trustProxy?: boolean | number;
11
+ tmpDir?: string;
12
+ };
13
+ session?: {
14
+ /**
15
+ * Passport auth config, by default dfw is always enabled unless you set it to false
16
+ */
17
+ authenticators?: {
18
+ dfw?: false;
19
+ };
20
+ /**
21
+ * Default days to expire session in database (only in database cookie will not be affected)
22
+ */
23
+ daysToExpire?: number;
24
+ /**
25
+ * Store every session in database no matter if is logged or not, ideal for tracking visitors
26
+ * @default false
27
+ */
28
+ saveAllSessions?: boolean;
29
+ /**
30
+ * Secret to encode cookie session
31
+ * @default "default"
32
+ */
33
+ secret?: string;
34
+ /**
35
+ * Session cookie name
36
+ * @default stk
37
+ */
38
+ cookieName?: string;
39
+ /**
40
+ * Cookie options, more info: https://www.npmjs.com/package/express-session#cookie
41
+ */
42
+ cookieOptions?: CookieOptions;
43
+ /**
44
+ * Session id cached on sever default 300
45
+ */
46
+ sessionCacheSize?: number;
47
+ };
48
+ /**
49
+ * Prisma client options
50
+ */
51
+ prisma?: Omit<PrismaClientOptions, '__internal'> | ((dfw: DFWCore) => PrismaClient);
52
+ };
53
+ //# sourceMappingURL=DFWConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWConfig.d.ts","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,MAAM,SAAS,GAAG;IAEpB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,WAAW,CAAA;QAClB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED,OAAO,CAAC,EAAE;QACN;;WAEG;QACH,cAAc,CAAC,EAAE;YACb,GAAG,CAAC,EAAE,KAAK,CAAA;SACd,CAAA;QAED;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,CAAA;QAEzB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,aAAa,CAAC,EAAE,aAAa,CAAA;QAE7B;;WAEG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC5B,CAAA;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,CAAC,CAAA;CACtF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DFWConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWConfig.js","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import type { ITXClientDenyList } from "@prisma/client/runtime/library";
3
+ export type DFWDatabase = Omit<PrismaClient, ITXClientDenyList>;
4
+ //# sourceMappingURL=DFWDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWDatabase.d.ts","sourceRoot":"","sources":["../../../src/types/DFWDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAG,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DFWDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWDatabase.js","sourceRoot":"","sources":["../../../src/types/DFWDatabase.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ type Constructor<T = any> = new (...args: any[]) => T;
2
+ export type ExtractRepositories<T extends Constructor[]> = {
3
+ [K in T[number] as K extends {
4
+ namespace: string;
5
+ } ? K['namespace'] : never]: InstanceType<K>;
6
+ };
7
+ export {};
8
+ //# sourceMappingURL=DFWModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWModule.d.ts","sourceRoot":"","sources":["../../../src/types/DFWModule.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI;KACtD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAG,CAAC,SAAS;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAC/C,CAAC,CAAC,WAAW,CAAC,GACd,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DFWModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWModule.js","sourceRoot":"","sources":["../../../src/types/DFWModule.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import type { Request, Response } from "express";
2
+ import type { PrismaClient } from "@prisma/client";
3
+ import type { DFWServiceConstructor, MapServiceConstructors } from "#types/DFWService";
4
+ export type DFWRequest<TServices extends readonly DFWServiceConstructor[] = []> = {
5
+ dfw: DFWRequestSchema<TServices>;
6
+ } & Request;
7
+ export type DFWResponse = {
8
+ error: (message: any, status?: number) => void;
9
+ } & Response;
10
+ export type DFWRequestSession = {
11
+ isAuthenticated: boolean;
12
+ user?: {
13
+ id: string;
14
+ } | undefined;
15
+ };
16
+ export type DFWRequestSchema<TServices extends readonly DFWServiceConstructor[] = []> = {
17
+ getSession: () => DFWRequestSession;
18
+ db: PrismaClient;
19
+ /**
20
+ * Callback called in background after finish the api response
21
+ * @param cb callback function or promise
22
+ * @returns
23
+ */
24
+ addCallback: (cb: () => void) => void;
25
+ [key: string]: any;
26
+ } & MapServiceConstructors<TServices>;
27
+ //# sourceMappingURL=DFWRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWRequest.d.ts","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAAI;IAC9E,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;CACpC,GAAG,OAAO,CAAA;AAEX,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,GAAG,QAAQ,CAAA;AAEZ,MAAM,MAAM,iBAAiB,GAAG;IACxB,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CACpC,CAAA;AAEL,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,SAAS,qBAAqB,EAAE,GAAG,EAAE,IAAI;IACpF,UAAU,EAAE,MAAM,iBAAiB,CAAA;IAEnC,EAAE,EAAE,YAAY,CAAA;IAEhB;;;;OAIG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DFWRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWRequest.js","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DFWService } from "#lib/DFWService";
2
+ export type DFWServiceConstructor = new (dfw: any) => DFWService;
3
+ export type InferServiceInstance<T extends DFWServiceConstructor> = T extends new () => infer R ? R : never;
4
+ export type MapServiceConstructors<T extends readonly DFWServiceConstructor[]> = {
5
+ [K in keyof T as T[K] extends DFWServiceConstructor ? InstanceType<T[K]>['namespace'] : never]: T[K] extends DFWServiceConstructor ? InstanceType<T[K]> : never;
6
+ };
7
+ //# sourceMappingURL=DFWService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWService.d.ts","sourceRoot":"","sources":["../../../src/types/DFWService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC;AAEjE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,qBAAqB,IAC5D,CAAC,SAAS,UAAU,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,qBAAqB,EAAE,IAAI;KAC5E,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,qBAAqB,GACjD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAC/B,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAC1C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClB,KAAK;CACV,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DFWService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DFWService.js","sourceRoot":"","sources":["../../../src/types/DFWService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export type * from "#types/DFWDatabase";
2
+ export type * from "#types/DFWConfig";
3
+ export type * from "#types/DFWRequest";
4
+ export type * from "#types/DFWService";
5
+ export type * from "#types/APIListener";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scefira/dfw",
3
- "version": "1.3.0-alpha.2",
3
+ "version": "1.3.0-alpha.4",
4
4
  "description": "NodeJS fast API prototiping framework",
5
5
  "main": "dist/cjs/index.js",
6
6
  "types": "dist/cjs/index.d.ts",