gemi 0.4.13 → 0.4.14

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 (90) hide show
  1. package/dist/app/App.d.ts.map +1 -1
  2. package/dist/app/createFlatApiRoutes.d.ts.map +1 -1
  3. package/dist/app/index.js +220 -608
  4. package/dist/auth/AuthenticationServiceProvider.d.ts +54 -0
  5. package/dist/auth/AuthenticationServiceProvider.d.ts.map +1 -0
  6. package/dist/auth/adapters/blank.d.ts +10 -0
  7. package/dist/auth/adapters/blank.d.ts.map +1 -0
  8. package/dist/auth/adapters/types.d.ts +77 -0
  9. package/dist/auth/adapters/types.d.ts.map +1 -0
  10. package/dist/bin/index.js +13 -0
  11. package/dist/client/ClientRouter.d.ts.map +1 -1
  12. package/dist/client/ClientRouterContext.d.ts +2 -0
  13. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  14. package/dist/client/Mutation.d.ts +25 -7
  15. package/dist/client/Mutation.d.ts.map +1 -1
  16. package/dist/client/QueryManager.d.ts +24 -0
  17. package/dist/client/QueryManager.d.ts.map +1 -0
  18. package/dist/client/QueryManagerContext.d.ts +8 -0
  19. package/dist/client/QueryManagerContext.d.ts.map +1 -0
  20. package/dist/client/ServerDataProvider.d.ts +1 -0
  21. package/dist/client/ServerDataProvider.d.ts.map +1 -1
  22. package/dist/client/{Form.d.ts → _Form.d.ts} +1 -1
  23. package/dist/client/_Form.d.ts.map +1 -0
  24. package/dist/client/auth/useForgotPassword.d.ts +17 -0
  25. package/dist/client/auth/useForgotPassword.d.ts.map +1 -0
  26. package/dist/client/auth/useResetPassword.d.ts +17 -0
  27. package/dist/client/auth/useResetPassword.d.ts.map +1 -0
  28. package/dist/client/auth/useSignIn.d.ts +24 -0
  29. package/dist/client/auth/useSignIn.d.ts.map +1 -0
  30. package/dist/client/auth/useSignOut.d.ts +17 -0
  31. package/dist/client/auth/useSignOut.d.ts.map +1 -0
  32. package/dist/client/auth/useSignUp.d.ts +21 -0
  33. package/dist/client/auth/useSignUp.d.ts.map +1 -0
  34. package/dist/client/auth/useUser.d.ts +2 -0
  35. package/dist/client/auth/useUser.d.ts.map +1 -0
  36. package/dist/client/index.d.ts +8 -4
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js +392 -278
  39. package/dist/client/rpc.d.ts +3 -1
  40. package/dist/client/rpc.d.ts.map +1 -1
  41. package/dist/client/useMutation.d.ts +12 -3
  42. package/dist/client/useMutation.d.ts.map +1 -1
  43. package/dist/client/useQuery.d.ts +16 -6
  44. package/dist/client/useQuery.d.ts.map +1 -1
  45. package/dist/email/EmailServiceProvider.d.ts +1 -1
  46. package/dist/email/EmailServiceProvider.d.ts.map +1 -1
  47. package/dist/email/index.js +4745 -12
  48. package/dist/email/providers.d.ts +1 -1
  49. package/dist/email/providers.d.ts.map +1 -1
  50. package/dist/facades/Auth.d.ts +5 -0
  51. package/dist/facades/Auth.d.ts.map +1 -0
  52. package/dist/facades/Redirect.d.ts +4 -0
  53. package/dist/facades/Redirect.d.ts.map +1 -0
  54. package/dist/facades/index.d.ts +3 -0
  55. package/dist/facades/index.d.ts.map +1 -0
  56. package/dist/facades/index.js +81 -4
  57. package/dist/http/ApiRouter.d.ts +321 -15
  58. package/dist/http/ApiRouter.d.ts.map +1 -1
  59. package/dist/http/AuthenticationMiddlware.d.ts +6 -0
  60. package/dist/http/AuthenticationMiddlware.d.ts.map +1 -0
  61. package/dist/http/Controller.d.ts +10 -1
  62. package/dist/http/Controller.d.ts.map +1 -1
  63. package/dist/http/Cookie.d.ts +18 -0
  64. package/dist/http/Cookie.d.ts.map +1 -0
  65. package/dist/http/HttpRequest.d.ts +9 -1
  66. package/dist/http/HttpRequest.d.ts.map +1 -1
  67. package/dist/http/Middleware.d.ts +1 -1
  68. package/dist/http/Middleware.d.ts.map +1 -1
  69. package/dist/http/MiddlewareServiceProvider.d.ts +5 -0
  70. package/dist/http/MiddlewareServiceProvider.d.ts.map +1 -0
  71. package/dist/http/ViewRouter.d.ts +11 -11
  72. package/dist/http/ViewRouter.d.ts.map +1 -1
  73. package/dist/http/index.d.ts +3 -1
  74. package/dist/http/index.d.ts.map +1 -1
  75. package/dist/http/index.js +147 -13
  76. package/dist/http/requestContext.d.ts +17 -2
  77. package/dist/http/requestContext.d.ts.map +1 -1
  78. package/dist/kernel/KernelContext.d.ts +4 -0
  79. package/dist/kernel/KernelContext.d.ts.map +1 -0
  80. package/dist/kernel/context.d.ts +9 -0
  81. package/dist/kernel/context.d.ts.map +1 -0
  82. package/dist/server/index.js +13 -0
  83. package/dist/utils/autobind.d.ts +2 -0
  84. package/dist/utils/autobind.d.ts.map +1 -0
  85. package/dist/utils/debounce.d.ts +2 -0
  86. package/dist/utils/debounce.d.ts.map +1 -0
  87. package/dist/utils/type.d.ts +5 -0
  88. package/dist/utils/type.d.ts.map +1 -1
  89. package/package.json +3 -1
  90. package/dist/client/Form.d.ts.map +0 -1
@@ -0,0 +1,18 @@
1
+ export interface CreateCookieOptions {
2
+ maxAge?: number;
3
+ expires?: Date;
4
+ httpOnly?: boolean;
5
+ secure?: boolean;
6
+ sameSite?: "Strict" | "Lax";
7
+ path?: string;
8
+ domain?: string;
9
+ partitioned?: boolean;
10
+ }
11
+ export declare class Cookie {
12
+ private name;
13
+ private value;
14
+ private options;
15
+ constructor(name: string, value: string, options?: CreateCookieOptions);
16
+ toString(): string;
17
+ }
18
+ //# sourceMappingURL=Cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cookie.d.ts","sourceRoot":"","sources":["../../http/Cookie.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,MAAM;IAEf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;gBAFP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB;IAG3C,QAAQ;CAmBT"}
@@ -15,12 +15,20 @@ type RequiredType = "required";
15
15
  type SchemaKey = StringType | NumberType | BooleanType | MinLengthType | MaxLengthType | RequiredType;
16
16
  export type Schema<T extends Body> = Record<keyof T, Partial<Record<SchemaKey, string>>>;
17
17
  export type Body = Record<string, any>;
18
- export declare class HttpRequest<T extends Body = {}, Params = Record<string, never>> {
18
+ export declare class HttpRequest<T extends Body = Record<string, never>, Params = Record<string, never>> {
19
19
  rawRequest: Request;
20
20
  headers: Headers;
21
21
  cookies: Map<string, string>;
22
22
  schema: any;
23
23
  params: Params;
24
+ ctx: {
25
+ cookies: Set<import("./Cookie").Cookie>;
26
+ user: any;
27
+ req: HttpRequest | null;
28
+ setCookie(name: string, value: string, options?: import("./Cookie").CreateCookieOptions): void;
29
+ setUser(user: any): void;
30
+ setRequest(req: HttpRequest<any, any>): void;
31
+ };
24
32
  constructor(req: Request, params: Params);
25
33
  private parseBody;
26
34
  private validateInput;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpRequest.d.ts","sourceRoot":"","sources":["../../http/HttpRequest.ts"],"names":[],"mappings":"AAGA,cAAM,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3B,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,CAAC;IAEpB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAI7B,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;IAIhB,MAAM,IAAI,CAAC;CAGnB;AA4CD,KAAK,UAAU,GAAG,QAAQ,CAAC;AAC3B,KAAK,UAAU,GAAG,QAAQ,CAAC;AAC3B,KAAK,WAAW,GAAG,SAAS,CAAC;AAC7B,KAAK,aAAa,GAAG,OAAO,MAAM,EAAE,CAAC;AACrC,KAAK,aAAa,GAAG,OAAO,MAAM,EAAE,CAAC;AACrC,KAAK,YAAY,GAAG,UAAU,CAAC;AAC/B,KAAK,SAAS,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,aAAa,GACb,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,MAAM,CACzC,MAAM,CAAC,EACP,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CACnC,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC,qBAAa,WAAW,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACnE,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,MAAM,EAAE,GAAG,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;gBAEV,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;YAgB1B,SAAS;IAyCvB,OAAO,CAAC,aAAa;IAsBR,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAI1B,SAAS,IAAI,OAAO,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KACjB,CAAC;IAsBW,SAAS,CAAC,MAAM,EAAE,eAAe;CAM/C;AAED,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"HttpRequest.d.ts","sourceRoot":"","sources":["../../http/HttpRequest.ts"],"names":[],"mappings":"AAIA,cAAM,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3B,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,CAAC;IAEpB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAI7B,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;IAIhB,MAAM,IAAI,CAAC;CAGnB;AA4CD,KAAK,UAAU,GAAG,QAAQ,CAAC;AAC3B,KAAK,UAAU,GAAG,QAAQ,CAAC;AAC3B,KAAK,WAAW,GAAG,SAAS,CAAC;AAC7B,KAAK,aAAa,GAAG,OAAO,MAAM,EAAE,CAAC;AACrC,KAAK,aAAa,GAAG,OAAO,MAAM,EAAE,CAAC;AACrC,KAAK,YAAY,GAAG,UAAU,CAAC;AAC/B,KAAK,SAAS,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,aAAa,GACb,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,MAAM,CACzC,MAAM,CAAC,EACP,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CACnC,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC,qBAAa,WAAW,CACtB,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACtC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,MAAM,EAAE,GAAG,CAAM;IAEjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG;;;;;;;MAA6B;gBAE3B,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;YAgB1B,SAAS;IAwCvB,OAAO,CAAC,aAAa;IA2BR,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAI1B,SAAS,IAAI,OAAO,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KACjB,CAAC;IAsBW,SAAS,CAAC,MAAM,EAAE,eAAe;CAG/C;AAeD,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { HttpRequest } from "./HttpRequest";
2
2
  export declare class Middleware {
3
- run(_req: HttpRequest, ctx: Map<string, any>): Promise<{}>;
3
+ run(_req: HttpRequest): Promise<{}>;
4
4
  }
5
5
  //# sourceMappingURL=Middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../../http/Middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,UAAU;IACf,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;CAGnD"}
1
+ {"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../../http/Middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,UAAU;IACf,GAAG,CAAC,IAAI,EAAE,WAAW;CAG5B"}
@@ -0,0 +1,5 @@
1
+ import { Middleware } from "./Middleware";
2
+ export declare class MiddlewareServiceProvider {
3
+ aliases: Record<string, new () => Middleware>;
4
+ }
5
+ //# sourceMappingURL=MiddlewareServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiddlewareServiceProvider.d.ts","sourceRoot":"","sources":["../../http/MiddlewareServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,qBAAa,yBAAyB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAM;CACpD"}
@@ -1,33 +1,33 @@
1
1
  import { Controller } from "./Controller";
2
2
  import type { MiddlewareReturnType } from "./Router";
3
- import type { App } from "../app/App";
3
+ import { HttpRequest } from "./HttpRequest";
4
4
  type ControllerMethods<T extends new () => Controller> = {
5
5
  [K in keyof InstanceType<T>]: InstanceType<T>[K] extends Function ? K : never;
6
6
  }[keyof InstanceType<T>];
7
- type ViewHandler<T extends new () => Controller> = [controller: T, method: ControllerMethods<T>] | ((req: Request) => Promise<any> | any);
7
+ type ViewHandler<T extends new () => Controller> = [controller: T, method: ControllerMethods<T>] | ((req: HttpRequest) => Promise<any> | any);
8
8
  type ViewPrepare = {
9
- exec: (req: Request, params: Record<string, string>) => any;
9
+ exec: (req: HttpRequest) => any;
10
10
  viewPath: string;
11
11
  children: ViewChildren;
12
12
  middlewares: any[];
13
13
  kind: "view" | "layout";
14
14
  };
15
- type ViewConfig = {
15
+ export type ViewConfig = {
16
16
  prepare: (_middlewares?: any[]) => ViewPrepare;
17
17
  middleware: (middlewares: any[]) => ViewConfig;
18
18
  };
19
19
  export type ViewChildren = Record<string, ViewConfig | (new () => ViewRouter)>;
20
- export type ViewRouteExec = (req: Request, params: Record<string, string>, app: App) => any;
20
+ export type ViewRouteExec = (req: HttpRequest) => any;
21
21
  export declare class ViewRouter {
22
22
  routes: ViewChildren;
23
23
  middlewares: string[];
24
24
  middleware(req: Request): MiddlewareReturnType;
25
- protected layout<T extends new (app: App) => Controller>(viewPath: string): ViewConfig;
26
- protected layout<T extends new (app: App) => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
27
- protected layout<T extends new (app: App) => Controller>(viewPath: string, handler: ViewHandler<T>): ViewConfig;
28
- protected view<T extends new (app: App) => Controller>(viewPath: string): ViewConfig;
29
- protected view<T extends new (app: App) => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
30
- protected view<T extends new (app: App) => Controller>(viewPath: string, handler: ViewHandler<T>): ViewConfig;
25
+ protected layout<T extends new () => Controller>(viewPath: string): ViewConfig;
26
+ protected layout<T extends new () => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
27
+ protected layout<T extends new () => Controller>(viewPath: string, handler: ViewHandler<T>): ViewConfig;
28
+ protected view<T extends new () => Controller>(viewPath: string): ViewConfig;
29
+ protected view<T extends new () => Controller>(viewPath: string, children: ViewChildren): ViewConfig;
30
+ protected view<T extends new () => Controller>(viewPath: string, handler: ViewHandler<T>): ViewConfig;
31
31
  }
32
32
  export {};
33
33
  //# sourceMappingURL=ViewRouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,KAAK,iBAAiB,CAAC,CAAC,SAAS,UAAU,UAAU,IAAI;KACtD,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK;CAC9E,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzB,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,UAAU,IAC3C,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC7C,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE3C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,WAAW,CAAC;IAC/C,UAAU,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,GAAG,EAAE,GAAG,KACL,GAAG,CAAC;AAET,qBAAa,UAAU;IACd,MAAM,EAAE,YAAY,CAAM;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3B,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB;IAErD,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACrD,QAAQ,EAAE,MAAM,GACf,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACrD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACrD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;IAmDb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACnD,QAAQ,EAAE,MAAM,GACf,UAAU;IACb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACnD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,KAAK,UAAU,EACnD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;CAkDd"}
1
+ {"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,KAAK,iBAAiB,CAAC,CAAC,SAAS,UAAU,UAAU,IAAI;KACtD,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK;CAC9E,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzB,KAAK,WAAW,CAAC,CAAC,SAAS,UAAU,UAAU,IAC3C,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAC7C,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAE/C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,WAAW,CAAC;IAC/C,UAAU,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC;AAEtD,qBAAa,UAAU;IACd,MAAM,EAAE,YAAY,CAAM;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3B,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB;IAErD,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,GACf,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,UAAU,EAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;IA+Cb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAC5E,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,UAAU;IACb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,UAAU,UAAU,EAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,UAAU;CA8Cd"}
@@ -1,4 +1,4 @@
1
- export { Controller } from "./Controller";
1
+ export { Controller, ResourceController } from "./Controller";
2
2
  export { ApiRouter, type CreateRPC } from "./ApiRouter";
3
3
  export { ViewRouter } from "./ViewRouter";
4
4
  export { ValidationError, AuthenticationError } from "./Router";
@@ -6,4 +6,6 @@ export { HttpRequest } from "./HttpRequest";
6
6
  export { Middleware } from "./Middleware";
7
7
  export { getCookies } from "./getCookies";
8
8
  export { RequestBreakerError } from "./Error";
9
+ export { MiddlewareServiceProvider } from "./MiddlewareServiceProvider";
10
+ export { AuthenticationMiddleware } from "./AuthenticationMiddlware";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -25,6 +25,12 @@ class Controller {
25
25
  constructor() {
26
26
  }
27
27
  }
28
+
29
+ class ResourceController extends Controller {
30
+ constructor() {
31
+ super(...arguments);
32
+ }
33
+ }
28
34
  // internal/isConstructor.ts
29
35
  function isConstructor(value) {
30
36
  return typeof value === "function" && value.prototype !== undefined;
@@ -44,6 +50,9 @@ class RouteHandler {
44
50
  this.method = method;
45
51
  this.handler = handler;
46
52
  this.methodName = methodName;
53
+ this.handler = handler;
54
+ this.methodName = methodName;
55
+ this.method = method;
47
56
  }
48
57
  run(req) {
49
58
  let httpRequest = req;
@@ -82,6 +91,26 @@ class ApiRouter {
82
91
  delete(handler, methodName) {
83
92
  return new RouteHandler("DELETE", handler, methodName);
84
93
  }
94
+ resource(Controller2) {
95
+
96
+ class ResourceRouter extends ApiRouter {
97
+ constructor() {
98
+ super(...arguments);
99
+ }
100
+ routes = {
101
+ "/": {
102
+ list: this.get(Controller2, "list"),
103
+ create: this.post(Controller2, "create")
104
+ },
105
+ "/:id": {
106
+ show: this.get(Controller2, "show"),
107
+ update: this.put(Controller2, "update"),
108
+ delete: this.delete(Controller2, "delete")
109
+ }
110
+ };
111
+ }
112
+ return ResourceRouter;
113
+ }
85
114
  }
86
115
  // http/ViewRouter.ts
87
116
  class ViewRouter {
@@ -96,7 +125,7 @@ class ViewRouter {
96
125
  _children = handler;
97
126
  }
98
127
  return {
99
- exec: async (req, params, app) => {
128
+ exec: async (req) => {
100
129
  let _handler = () => Promise.resolve({
101
130
  data: { [viewPath]: {} },
102
131
  headers: {},
@@ -110,7 +139,7 @@ class ViewRouter {
110
139
  const instance = new controller(app);
111
140
  _handler = instance[methodName].bind(instance);
112
141
  }
113
- const data = await _handler(req, params);
142
+ const data = await _handler(req);
114
143
  return { [viewPath]: data };
115
144
  },
116
145
  children: _children,
@@ -133,7 +162,7 @@ class ViewRouter {
133
162
  _children = handler;
134
163
  }
135
164
  return {
136
- exec: async (req, params, app) => {
165
+ exec: async (req) => {
137
166
  let _handler = () => Promise.resolve({
138
167
  data: { [viewPath]: {} },
139
168
  headers: {},
@@ -147,7 +176,7 @@ class ViewRouter {
147
176
  const instance = new controller(app);
148
177
  _handler = instance[methodName].bind(instance);
149
178
  }
150
- const data = await _handler(req, params);
179
+ const data = await _handler(req);
151
180
  return { [viewPath]: data };
152
181
  },
153
182
  children: _children,
@@ -221,13 +250,73 @@ class ValidationError extends RequestBreakerError {
221
250
  };
222
251
  }
223
252
  }
253
+ // http/requestContext.ts
254
+ import {AsyncLocalStorage} from "async_hooks";
255
+
256
+ // http/Cookie.ts
257
+ class Cookie {
258
+ name;
259
+ value;
260
+ options;
261
+ constructor(name, value, options = {}) {
262
+ this.name = name;
263
+ this.value = value;
264
+ this.options = options;
265
+ }
266
+ toString() {
267
+ return [
268
+ `${this.name}=${this.value}`,
269
+ this.options.maxAge ? `Max-Age=${this.options.maxAge}` : "",
270
+ this.options.httpOnly ? "HttpOnly" : "",
271
+ this.options.secure ? "Secure" : "",
272
+ this.options.sameSite ? `SameSite=${this.options.sameSite}` : "SameSite=Strict",
273
+ this.options.path ? `Path=${this.options.path}` : "Path=/",
274
+ this.options.domain ? `Domain=${this.options.domain}` : "",
275
+ this.options.expires ? `Expires=${this.options.expires.toUTCString()}` : "",
276
+ this.options.partitioned ? "Partitioned" : ""
277
+ ].filter((i) => i !== "").join("; ");
278
+ }
279
+ }
280
+
281
+ // http/requestContext.ts
282
+ var requestContext = new AsyncLocalStorage;
283
+
284
+ class Store {
285
+ cookies = new Set;
286
+ user = null;
287
+ req = null;
288
+ constructor() {
289
+ }
290
+ setCookie(name, value, options = {}) {
291
+ this.cookies.add(new Cookie(name, value, options));
292
+ }
293
+ setUser(user) {
294
+ this.user = user;
295
+ }
296
+ setRequest(req) {
297
+ this.req = req;
298
+ }
299
+ }
300
+
301
+ class RequestContext {
302
+ static getStore() {
303
+ return requestContext.getStore();
304
+ }
305
+ static setRequest(req) {
306
+ requestContext.getStore().req = req;
307
+ }
308
+ static async run(fn) {
309
+ return requestContext.run(new Store, fn);
310
+ }
311
+ }
312
+
224
313
  // http/HttpRequest.ts
225
314
  var validate = function(ruleName) {
226
315
  const [rule, param] = ruleName.split(":");
227
316
  switch (rule) {
228
317
  case "required":
229
318
  return (value) => {
230
- return value !== null && value !== undefined;
319
+ return value !== null && value !== undefined && value?.length > 0;
231
320
  };
232
321
  case "password":
233
322
  return (value) => {
@@ -242,11 +331,11 @@ var validate = function(ruleName) {
242
331
  };
243
332
  case "min":
244
333
  return (value) => {
245
- return value.length >= parseInt(param);
334
+ return value?.length >= parseInt(param);
246
335
  };
247
336
  case "max":
248
337
  return (value) => {
249
- return value.length <= parseInt(param);
338
+ return value?.length <= parseInt(param);
250
339
  };
251
340
  case "email":
252
341
  return (value) => {
@@ -281,8 +370,9 @@ class HttpRequest {
281
370
  rawRequest;
282
371
  headers;
283
372
  cookies;
284
- schema;
373
+ schema = {};
285
374
  params;
375
+ ctx = RequestContext.getStore();
286
376
  constructor(req, params) {
287
377
  this.params = params;
288
378
  this.rawRequest = req;
@@ -309,7 +399,6 @@ class HttpRequest {
309
399
  if (this.rawRequest.headers.get("Content-Type") === "application/x-www-form-urlencoded") {
310
400
  const body = await this.rawRequest.formData();
311
401
  for (const [key, value] of body) {
312
- console.log(key, value);
313
402
  inputMap.set(key, value);
314
403
  }
315
404
  }
@@ -340,7 +429,12 @@ class HttpRequest {
340
429
  if (!errors[key]) {
341
430
  errors[key] = [];
342
431
  }
343
- errors[key].push(String(message));
432
+ if (rule === "required") {
433
+ errors[key] = [String(message)];
434
+ break;
435
+ } else {
436
+ errors[key].push(String(message));
437
+ }
344
438
  }
345
439
  }
346
440
  }
@@ -374,14 +468,12 @@ class HttpRequest {
374
468
  }
375
469
  }
376
470
  async terminate(params) {
377
- const { message, status, headers, payload } = params;
378
- const error = new RequestBreakerError(message);
379
471
  throw "not implemented";
380
472
  }
381
473
  }
382
474
  // http/Middleware.ts
383
475
  class Middleware {
384
- async run(_req, ctx) {
476
+ async run(_req) {
385
477
  return {};
386
478
  }
387
479
  }
@@ -399,14 +491,56 @@ function getCookies(req) {
399
491
  }
400
492
  return _cookies;
401
493
  }
494
+ // http/MiddlewareServiceProvider.ts
495
+ class MiddlewareServiceProvider {
496
+ aliases = {};
497
+ }
498
+ // kernel/context.ts
499
+ import {AsyncLocalStorage as AsyncLocalStorage2} from "async_hooks";
500
+ var kernelContext = new AsyncLocalStorage2;
501
+
502
+ // kernel/KernelContext.ts
503
+ class KernelContext {
504
+ static getStore = () => kernelContext.getStore();
505
+ }
506
+
507
+ // http/AuthenticationMiddlware.ts
508
+ class AuthenticationMiddleware extends Middleware {
509
+ constructor() {
510
+ super(...arguments);
511
+ }
512
+ async run(req) {
513
+ const requestContextStore = RequestContext.getStore();
514
+ const accessToken = requestContextStore.req.cookies.get("access_token");
515
+ if (!accessToken) {
516
+ throw new AuthenticationError;
517
+ }
518
+ let user = requestContextStore.user;
519
+ if (!user) {
520
+ const session = await KernelContext.getStore().authenticationServiceProvider.adapter.findSession({
521
+ token: accessToken,
522
+ userAgent: requestContextStore.req.headers.get("User-Agent")
523
+ });
524
+ if (!session) {
525
+ throw new AuthenticationError;
526
+ }
527
+ user = session?.user;
528
+ requestContextStore.setUser(user);
529
+ }
530
+ return {};
531
+ }
532
+ }
402
533
  export {
403
534
  getCookies,
404
535
  ViewRouter,
405
536
  ValidationError,
537
+ ResourceController,
406
538
  RequestBreakerError,
539
+ MiddlewareServiceProvider,
407
540
  Middleware,
408
541
  HttpRequest,
409
542
  Controller,
543
+ AuthenticationMiddleware,
410
544
  AuthenticationError,
411
545
  ApiRouter
412
546
  };
@@ -1,3 +1,18 @@
1
- import { AsyncLocalStorage } from "async_hooks";
2
- export declare const requestContext: AsyncLocalStorage<Map<string, any>>;
1
+ import { Cookie, type CreateCookieOptions } from "./Cookie";
2
+ import { HttpRequest } from "./HttpRequest";
3
+ declare class Store {
4
+ cookies: Set<Cookie>;
5
+ user: any;
6
+ req: HttpRequest | null;
7
+ constructor();
8
+ setCookie(name: string, value: string, options?: CreateCookieOptions): void;
9
+ setUser(user: any): void;
10
+ setRequest(req: HttpRequest<any, any>): void;
11
+ }
12
+ export declare class RequestContext {
13
+ static getStore(): Store;
14
+ static setRequest(req: HttpRequest<any, any>): void;
15
+ static run<T>(fn: () => T): Promise<T>;
16
+ }
17
+ export {};
3
18
  //# sourceMappingURL=requestContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYhD,eAAO,MAAM,cAAc,qCAA4C,CAAC"}
1
+ {"version":3,"file":"requestContext.d.ts","sourceRoot":"","sources":["../../http/requestContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,cAAM,KAAK;IACT,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACjC,IAAI,EAAE,GAAG,CAAQ;IACjB,GAAG,EAAE,WAAW,GAAG,IAAI,CAAQ;;IAM/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;IAIxE,OAAO,CAAC,IAAI,EAAE,GAAG;IAIjB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;CAGtC;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ;IAIf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;WAI/B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAG7C"}
@@ -0,0 +1,4 @@
1
+ export declare class KernelContext {
2
+ static getStore: () => import("./context").KernelContextValue;
3
+ }
4
+ //# sourceMappingURL=KernelContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KernelContext.d.ts","sourceRoot":"","sources":["../../kernel/KernelContext.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,+CAAkC;CAClD"}
@@ -0,0 +1,9 @@
1
+ import { AsyncLocalStorage } from "async_hooks";
2
+ import { EmailServiceProvider } from "../email/EmailServiceProvider";
3
+ import { AuthenticationServiceProvider } from "../auth/AuthenticationServiceProvider";
4
+ export interface KernelContextValue {
5
+ emailServiceProvider: EmailServiceProvider;
6
+ authenticationServiceProvider?: AuthenticationServiceProvider;
7
+ }
8
+ export declare const kernelContext: AsyncLocalStorage<KernelContextValue>;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../kernel/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,6BAA6B,CAAC,EAAE,6BAA6B,CAAC;CAC/D;AAED,eAAO,MAAM,aAAa,uCAA8C,CAAC"}
@@ -6571,6 +6571,13 @@ async function startDevServer() {
6571
6571
  try {
6572
6572
  return await handler(req);
6573
6573
  } catch (err) {
6574
+ console.log(err);
6575
+ if (pathname.startsWith("/api")) {
6576
+ return new Response(JSON.stringify({ error: err.message }), {
6577
+ status: 500,
6578
+ headers: { "Content-Type": "application/json" }
6579
+ });
6580
+ }
6574
6581
  return new Response(renderErrorPage(err), {
6575
6582
  headers: { "Content-Type": "text/html" }
6576
6583
  });
@@ -7449,6 +7456,12 @@ async function startProdServer() {
7449
7456
  try {
7450
7457
  return await handler(req);
7451
7458
  } catch (err) {
7459
+ if (pathname.startsWith("/api")) {
7460
+ return new Response(JSON.stringify({ error: err.message }), {
7461
+ status: 500,
7462
+ headers: { "Content-Type": "application/json" }
7463
+ });
7464
+ }
7452
7465
  return new Response(err.stack, { status: 500 });
7453
7466
  }
7454
7467
  }
@@ -0,0 +1,2 @@
1
+ export declare function autobind<T extends any>(self: new () => T): T;
2
+ //# sourceMappingURL=autobind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autobind.d.ts","sourceRoot":"","sources":["../../utils/autobind.ts"],"names":[],"mappings":"AAeA,wBAAgB,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAY5D"}
@@ -0,0 +1,2 @@
1
+ export declare function debounce<U, T extends (...p: U[]) => void>(fn: T, delay: number): (...args: U[]) => void;
2
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../utils/debounce.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,EACvD,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,aAGa,CAAC,EAAE,UAQ9B"}
@@ -1,2 +1,7 @@
1
1
  export type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
2
+ type PluralSuffix = "s" | "es" | "ies";
3
+ export type Plural = `${string}${PluralSuffix}`;
4
+ export type ToSingular<T extends Plural> = T extends `${infer R}${PluralSuffix}` ? R : T;
5
+ export type WithId<T extends string> = `${T}Id`;
6
+ export {};
2
7
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../utils/type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../utils/type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElE,KAAK,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;AAChD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,YAAY,EAAE,GAC5E,CAAC,GACD,CAAC,CAAC;AAEN,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemi",
3
- "version": "0.4.13",
3
+ "version": "0.4.14",
4
4
  "devDependencies": {
5
5
  "@happy-dom/global-registrator": "^14.12.3",
6
6
  "@repo/eslint-config": "*",
@@ -27,6 +27,7 @@
27
27
  "./facades": "./dist/facades/index.js",
28
28
  "./email": "./dist/email/index.js",
29
29
  "./vite": "./dist/vite/index.js",
30
+ "./runtime": "./dist/runtime/index.js",
30
31
  "./server": "./dist/server/index.js",
31
32
  "./kernel": "./dist/kernel/index.js"
32
33
  },
@@ -55,6 +56,7 @@
55
56
  "open": "^10.1.0",
56
57
  "react-email": "^2.1.4",
57
58
  "resend": "^3.4.0",
59
+ "temporal-polyfill": "^0.2.5",
58
60
  "urlpattern-polyfill": "^10.0.0",
59
61
  "uuid": "^9.0.1"
60
62
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../client/Form.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAkDzB,UAAU,SAAS,CAAC,CAAC,GAAG,EAAE,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACvB;AAkBD,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,2CAoI1C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,KAAK,CAAC;;;;;;;EAShE;AAED,eAAO,MAAM,KAAK,UACT,cAAc,CAAC,OAAO,CAAC,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;CAC1C,4CA2CF,CAAC;AAEF,eAAO,MAAM,QAAQ,UACZ,cAAc,CAAC,OAAO,CAAC,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC;CAC1C,4CA4CF,CAAC;AAaF,eAAO,MAAM,YAAY,UAChB,cAAc,CAAC,MAAM,CAAC,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7C,8GAWF,CAAC"}