@webiny/api-websockets 6.0.0-beta.0 → 6.0.0-rc.1

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 (125) hide show
  1. package/README.md +10 -9
  2. package/context/WebsocketsContext.d.ts +10 -8
  3. package/context/WebsocketsContext.js +44 -33
  4. package/context/WebsocketsContext.js.map +1 -1
  5. package/context/abstractions/IWebsocketsContext.d.ts +12 -11
  6. package/context/abstractions/IWebsocketsContext.js +1 -5
  7. package/context/abstractions/IWebsocketsContext.js.map +1 -1
  8. package/context/index.d.ts +2 -3
  9. package/context/index.js +11 -42
  10. package/context/index.js.map +1 -1
  11. package/features/WebsocketService/abstractions.d.ts +9 -0
  12. package/features/WebsocketService/abstractions.js +4 -0
  13. package/features/WebsocketService/abstractions.js.map +1 -0
  14. package/features/WebsocketService/errors.d.ts +19 -0
  15. package/features/WebsocketService/errors.js +36 -0
  16. package/features/WebsocketService/errors.js.map +1 -0
  17. package/features/WebsocketService/index.d.ts +1 -0
  18. package/features/WebsocketService/index.js +3 -0
  19. package/features/WebsocketService/index.js.map +1 -0
  20. package/graphql/checkPermissions.d.ts +1 -1
  21. package/graphql/checkPermissions.js +6 -11
  22. package/graphql/checkPermissions.js.map +1 -1
  23. package/graphql/createResolvers.d.ts +2 -3
  24. package/graphql/createResolvers.js +41 -32
  25. package/graphql/createResolvers.js.map +1 -1
  26. package/graphql/createTypeDefs.js +2 -11
  27. package/graphql/createTypeDefs.js.map +1 -1
  28. package/graphql/index.d.ts +1 -1
  29. package/graphql/index.js +7 -14
  30. package/graphql/index.js.map +1 -1
  31. package/graphql/utils.js +5 -13
  32. package/graphql/utils.js.map +1 -1
  33. package/handler/handler.d.ts +1 -1
  34. package/handler/handler.js +45 -48
  35. package/handler/handler.js.map +1 -1
  36. package/handler/headers.d.ts +1 -2
  37. package/handler/headers.js +1 -13
  38. package/handler/headers.js.map +1 -1
  39. package/handler/register.js +5 -7
  40. package/handler/register.js.map +1 -1
  41. package/handler/types.d.ts +6 -9
  42. package/handler/types.js +2 -8
  43. package/handler/types.js.map +1 -1
  44. package/index.d.ts +9 -9
  45. package/index.js +11 -98
  46. package/index.js.map +1 -1
  47. package/package.json +28 -36
  48. package/plugins/WebsocketsActionPlugin.d.ts +3 -3
  49. package/plugins/WebsocketsActionPlugin.js +3 -11
  50. package/plugins/WebsocketsActionPlugin.js.map +1 -1
  51. package/plugins/WebsocketsRoutePlugin.d.ts +6 -7
  52. package/plugins/WebsocketsRoutePlugin.js +3 -11
  53. package/plugins/WebsocketsRoutePlugin.js.map +1 -1
  54. package/plugins/abstrations/IWebsocketsActionPlugin.d.ts +3 -4
  55. package/plugins/abstrations/IWebsocketsActionPlugin.js +1 -5
  56. package/plugins/abstrations/IWebsocketsActionPlugin.js.map +1 -1
  57. package/plugins/index.d.ts +3 -3
  58. package/plugins/index.js +2 -38
  59. package/plugins/index.js.map +1 -1
  60. package/registry/WebsocketsConnectionRegistry.d.ts +3 -3
  61. package/registry/WebsocketsConnectionRegistry.js +34 -59
  62. package/registry/WebsocketsConnectionRegistry.js.map +1 -1
  63. package/registry/abstractions/IWebsocketsConnectionRegistry.d.ts +2 -4
  64. package/registry/abstractions/IWebsocketsConnectionRegistry.js +1 -5
  65. package/registry/abstractions/IWebsocketsConnectionRegistry.js.map +1 -1
  66. package/registry/entity.d.ts +3 -108
  67. package/registry/entity.js +18 -33
  68. package/registry/entity.js.map +1 -1
  69. package/registry/index.d.ts +2 -2
  70. package/registry/index.js +1 -27
  71. package/registry/index.js.map +1 -1
  72. package/response/WebsocketsResponse.d.ts +1 -1
  73. package/response/WebsocketsResponse.js +1 -8
  74. package/response/WebsocketsResponse.js.map +1 -1
  75. package/response/abstractions/IWebsocketsResponse.d.ts +1 -1
  76. package/response/abstractions/IWebsocketsResponse.js +1 -5
  77. package/response/abstractions/IWebsocketsResponse.js.map +1 -1
  78. package/response/index.d.ts +2 -2
  79. package/response/index.js +1 -27
  80. package/response/index.js.map +1 -1
  81. package/runner/WebsocketsRunner.d.ts +6 -6
  82. package/runner/WebsocketsRunner.js +10 -23
  83. package/runner/WebsocketsRunner.js.map +1 -1
  84. package/runner/abstractions/IWebsocketsRunner.d.ts +2 -2
  85. package/runner/abstractions/IWebsocketsRunner.js +1 -5
  86. package/runner/abstractions/IWebsocketsRunner.js.map +1 -1
  87. package/runner/index.d.ts +2 -2
  88. package/runner/index.js +1 -27
  89. package/runner/index.js.map +1 -1
  90. package/runner/routes/connect.d.ts +1 -1
  91. package/runner/routes/connect.js +9 -19
  92. package/runner/routes/connect.js.map +1 -1
  93. package/runner/routes/default.d.ts +1 -1
  94. package/runner/routes/default.js +4 -17
  95. package/runner/routes/default.js.map +1 -1
  96. package/runner/routes/disconnect.d.ts +1 -1
  97. package/runner/routes/disconnect.js +4 -11
  98. package/runner/routes/disconnect.js.map +1 -1
  99. package/runner/routes/index.d.ts +1 -1
  100. package/runner/routes/index.js +5 -12
  101. package/runner/routes/index.js.map +1 -1
  102. package/transport/WebsocketsTransport.d.ts +2 -2
  103. package/transport/WebsocketsTransport.js +5 -12
  104. package/transport/WebsocketsTransport.js.map +1 -1
  105. package/transport/abstractions/IWebsocketsTransport.d.ts +4 -4
  106. package/transport/abstractions/IWebsocketsTransport.js +1 -5
  107. package/transport/abstractions/IWebsocketsTransport.js.map +1 -1
  108. package/transport/index.d.ts +2 -2
  109. package/transport/index.js +1 -27
  110. package/transport/index.js.map +1 -1
  111. package/types.d.ts +5 -5
  112. package/types.js +1 -5
  113. package/types.js.map +1 -1
  114. package/utils/middleware.d.ts +2 -2
  115. package/utils/middleware.js +1 -8
  116. package/utils/middleware.js.map +1 -1
  117. package/validator/WebsocketsEventValidator.d.ts +2 -2
  118. package/validator/WebsocketsEventValidator.js +25 -34
  119. package/validator/WebsocketsEventValidator.js.map +1 -1
  120. package/validator/abstractions/IWebsocketsEventValidator.d.ts +2 -2
  121. package/validator/abstractions/IWebsocketsEventValidator.js +1 -5
  122. package/validator/abstractions/IWebsocketsEventValidator.js.map +1 -1
  123. package/validator/index.d.ts +2 -2
  124. package/validator/index.js +1 -27
  125. package/validator/index.js.map +1 -1
@@ -1,29 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _WebsocketsTransport = require("./WebsocketsTransport");
7
- Object.keys(_WebsocketsTransport).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _WebsocketsTransport[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _WebsocketsTransport[key];
14
- }
15
- });
16
- });
17
- var _IWebsocketsTransport = require("./abstractions/IWebsocketsTransport");
18
- Object.keys(_IWebsocketsTransport).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _IWebsocketsTransport[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _IWebsocketsTransport[key];
25
- }
26
- });
27
- });
1
+ export * from "./WebsocketsTransport.js";
28
2
 
29
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_WebsocketsTransport","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_IWebsocketsTransport"],"sources":["index.ts"],"sourcesContent":["export * from \"./WebsocketsTransport\";\nexport * from \"./abstractions/IWebsocketsTransport\";\n"],"mappings":";;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,oBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,oBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,oBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,qBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,qBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,qBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,qBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./WebsocketsTransport.js\";\nexport type * from \"./abstractions/IWebsocketsTransport.js\";\n"],"mappings":"AAAA","ignoreList":[]}
package/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { DbContext } from "@webiny/handler-db/types";
2
- import { IWebsocketsContextObject } from "./context/abstractions/IWebsocketsContext";
3
- import { SecurityContext, SecurityPermission } from "@webiny/api-security/types";
4
- import { I18NContext } from "@webiny/api-i18n/types";
1
+ import type { DbContext } from "@webiny/handler-db/types.js";
2
+ import type { IWebsocketsContextObject } from "./context/abstractions/IWebsocketsContext.js";
3
+ import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
4
+ import type { SecurityPermission } from "@webiny/api-core/types/security.js";
5
5
  export type { IWebsocketsContextObject };
6
- export interface Context extends DbContext, SecurityContext, I18NContext {
6
+ export interface Context extends DbContext, ApiCoreContext {
7
7
  websockets: IWebsocketsContextObject;
8
8
  }
9
9
  export interface WebsocketsPermission extends SecurityPermission {
package/types.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { DbContext } from \"@webiny/handler-db/types\";\nimport { IWebsocketsContextObject } from \"./context/abstractions/IWebsocketsContext\";\nimport { SecurityContext, SecurityPermission } from \"@webiny/api-security/types\";\nimport { I18NContext } from \"@webiny/api-i18n/types\";\n\nexport type { IWebsocketsContextObject };\n\nexport interface Context extends DbContext, SecurityContext, I18NContext {\n websockets: IWebsocketsContextObject;\n}\n\nexport interface WebsocketsPermission extends SecurityPermission {\n name: \"websockets\";\n rwd?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { DbContext } from \"@webiny/handler-db/types.js\";\nimport type { IWebsocketsContextObject } from \"./context/abstractions/IWebsocketsContext.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport type { SecurityPermission } from \"@webiny/api-core/types/security.js\";\n\nexport type { IWebsocketsContextObject };\n\nexport interface Context extends DbContext, ApiCoreContext {\n websockets: IWebsocketsContextObject;\n}\n\nexport interface WebsocketsPermission extends SecurityPermission {\n name: \"websockets\";\n rwd?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { GenericRecord } from "@webiny/api/types";
1
+ import type { GenericRecord } from "@webiny/api/types.js";
2
2
  export interface MiddlewareCallable<I extends GenericRecord = GenericRecord, O extends GenericRecord = GenericRecord> {
3
3
  (input: I, next: () => Promise<O>): Promise<O>;
4
4
  }
5
- export declare const middleware: <I extends GenericRecord<import("@webiny/api/types").GenericRecordKey, any> = GenericRecord<import("@webiny/api/types").GenericRecordKey, any>, O extends GenericRecord<import("@webiny/api/types").GenericRecordKey, any> = GenericRecord<import("@webiny/api/types").GenericRecordKey, any>>(functions: MiddlewareCallable<I, O>[]) => (input: I) => Promise<O>;
5
+ export declare const middleware: <I extends GenericRecord = GenericRecord, O extends GenericRecord = GenericRecord>(functions: MiddlewareCallable<I, O>[]) => (input: I) => Promise<O>;
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.middleware = void 0;
7
- const middleware = functions => {
1
+ export const middleware = functions => {
8
2
  return async input => {
9
3
  const chain = Array.from(functions);
10
4
  const exec = async () => {
@@ -20,6 +14,5 @@ const middleware = functions => {
20
14
  return exec();
21
15
  };
22
16
  };
23
- exports.middleware = middleware;
24
17
 
25
18
  //# sourceMappingURL=middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["middleware","functions","input","chain","Array","from","exec","fn","shift","next","exports"],"sources":["middleware.ts"],"sourcesContent":["import { GenericRecord } from \"@webiny/api/types\";\n\nexport interface MiddlewareCallable<\n I extends GenericRecord = GenericRecord,\n O extends GenericRecord = GenericRecord\n> {\n (input: I, next: () => Promise<O>): Promise<O>;\n}\n\nexport const middleware = <\n I extends GenericRecord = GenericRecord,\n O extends GenericRecord = GenericRecord\n>(\n functions: MiddlewareCallable<I, O>[]\n) => {\n return async (input: I): Promise<O> => {\n const chain = Array.from(functions);\n const exec = async (): Promise<O> => {\n const fn = chain.shift();\n if (!fn) {\n return {} as O;\n }\n const next = async () => {\n return exec();\n };\n return fn(input, next);\n };\n return exec();\n };\n};\n"],"mappings":";;;;;;AASO,MAAMA,UAAU,GAInBC,SAAqC,IACpC;EACD,OAAO,MAAOC,KAAQ,IAAiB;IACnC,MAAMC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAACJ,SAAS,CAAC;IACnC,MAAMK,IAAI,GAAG,MAAAA,CAAA,KAAwB;MACjC,MAAMC,EAAE,GAAGJ,KAAK,CAACK,KAAK,CAAC,CAAC;MACxB,IAAI,CAACD,EAAE,EAAE;QACL,OAAO,CAAC,CAAC;MACb;MACA,MAAME,IAAI,GAAG,MAAAA,CAAA,KAAY;QACrB,OAAOH,IAAI,CAAC,CAAC;MACjB,CAAC;MACD,OAAOC,EAAE,CAACL,KAAK,EAAEO,IAAI,CAAC;IAC1B,CAAC;IACD,OAAOH,IAAI,CAAC,CAAC;EACjB,CAAC;AACL,CAAC;AAACI,OAAA,CAAAV,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["middleware","functions","input","chain","Array","from","exec","fn","shift","next"],"sources":["middleware.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface MiddlewareCallable<\n I extends GenericRecord = GenericRecord,\n O extends GenericRecord = GenericRecord\n> {\n (input: I, next: () => Promise<O>): Promise<O>;\n}\n\nexport const middleware = <\n I extends GenericRecord = GenericRecord,\n O extends GenericRecord = GenericRecord\n>(\n functions: MiddlewareCallable<I, O>[]\n) => {\n return async (input: I): Promise<O> => {\n const chain = Array.from(functions);\n const exec = async (): Promise<O> => {\n const fn = chain.shift();\n if (!fn) {\n return {} as O;\n }\n const next = async () => {\n return exec();\n };\n return fn(input, next);\n };\n return exec();\n };\n};\n"],"mappings":"AASA,OAAO,MAAMA,UAAU,GAInBC,SAAqC,IACpC;EACD,OAAO,MAAOC,KAAQ,IAAiB;IACnC,MAAMC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAACJ,SAAS,CAAC;IACnC,MAAMK,IAAI,GAAG,MAAAA,CAAA,KAAwB;MACjC,MAAMC,EAAE,GAAGJ,KAAK,CAACK,KAAK,CAAC,CAAC;MACxB,IAAI,CAACD,EAAE,EAAE;QACL,OAAO,CAAC,CAAC;MACb;MACA,MAAME,IAAI,GAAG,MAAAA,CAAA,KAAY;QACrB,OAAOH,IAAI,CAAC,CAAC;MACjB,CAAC;MACD,OAAOC,EAAE,CAACL,KAAK,EAAEO,IAAI,CAAC;IAC1B,CAAC;IACD,OAAOH,IAAI,CAAC,CAAC;EACjB,CAAC;AACL,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { IWebsocketsEvent, IWebsocketsEventData } from "../handler/types";
2
- import { IWebsocketsEventValidator, IWebsocketsEventValidatorValidateParams } from "./abstractions/IWebsocketsEventValidator";
1
+ import type { IWebsocketsEvent, IWebsocketsEventData } from "../handler/types.js";
2
+ import type { IWebsocketsEventValidator, IWebsocketsEventValidatorValidateParams } from "./abstractions/IWebsocketsEventValidator.js";
3
3
  export declare class WebsocketsEventValidator implements IWebsocketsEventValidator {
4
4
  validate<T extends IWebsocketsEventData = IWebsocketsEventData>(input: IWebsocketsEventValidatorValidateParams): Promise<IWebsocketsEvent<T>>;
5
5
  }
@@ -1,24 +1,17 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.WebsocketsEventValidator = void 0;
8
- var _zod = _interopRequireDefault(require("zod"));
9
- var _types = require("../handler/types");
10
- var _utils = require("@webiny/utils");
11
- const validation = _zod.default.object({
12
- headers: _zod.default.object({}).passthrough().optional(),
13
- requestContext: _zod.default.object({
14
- connectionId: _zod.default.string(),
15
- stage: _zod.default.string(),
16
- connectedAt: _zod.default.number(),
17
- domainName: _zod.default.string(),
18
- eventType: _zod.default.enum([_types.WebsocketsEventRequestContextEventType.connect, _types.WebsocketsEventRequestContextEventType.message, _types.WebsocketsEventRequestContextEventType.disconnect]),
19
- routeKey: _zod.default.string()
1
+ import zod from "zod";
2
+ import { WebsocketsEventRequestContextEventType } from "../handler/types.js";
3
+ import { createZodError } from "@webiny/utils";
4
+ const validation = zod.object({
5
+ headers: zod.object({}).passthrough().optional(),
6
+ requestContext: zod.object({
7
+ connectionId: zod.string(),
8
+ stage: zod.string(),
9
+ connectedAt: zod.number(),
10
+ domainName: zod.string(),
11
+ eventType: zod.enum([WebsocketsEventRequestContextEventType.connect, WebsocketsEventRequestContextEventType.message, WebsocketsEventRequestContextEventType.disconnect]),
12
+ routeKey: zod.string()
20
13
  }),
21
- body: _zod.default.string().transform((value, context) => {
14
+ body: zod.string().transform((value, context) => {
22
15
  if (!value) {
23
16
  return undefined;
24
17
  }
@@ -36,13 +29,13 @@ const validation = _zod.default.object({
36
29
  context.addIssue({
37
30
  path: [],
38
31
  message: `Invalid JSON: ${ex.message}`,
39
- code: _zod.default.ZodIssueCode.custom,
32
+ code: zod.ZodIssueCode.custom,
40
33
  fatal: true
41
34
  });
42
35
  }
43
36
  }).optional()
44
37
  }).superRefine((output, context) => {
45
- if (output.requestContext.eventType !== _types.WebsocketsEventRequestContextEventType.message) {
38
+ if (output.requestContext.eventType !== WebsocketsEventRequestContextEventType.message) {
46
39
  return;
47
40
  } else if (output.body) {
48
41
  return;
@@ -50,27 +43,26 @@ const validation = _zod.default.object({
50
43
  context.addIssue({
51
44
  path: ["body"],
52
45
  message: "There must be a body defined when having a message event.",
53
- code: _zod.default.ZodIssueCode.custom,
46
+ code: zod.ZodIssueCode.custom,
54
47
  fatal: true
55
48
  });
56
49
  });
57
- const bodyValidation = _zod.default.object({
58
- token: _zod.default.string(),
59
- tenant: _zod.default.string(),
60
- locale: _zod.default.string(),
61
- messageId: _zod.default.string().nullish(),
62
- action: _zod.default.string(),
63
- data: _zod.default.object({}).passthrough().nullish()
50
+ const bodyValidation = zod.object({
51
+ token: zod.string(),
52
+ tenant: zod.string(),
53
+ messageId: zod.string().nullish(),
54
+ action: zod.string(),
55
+ data: zod.object({}).passthrough().nullish()
64
56
  }).passthrough().optional();
65
- class WebsocketsEventValidator {
57
+ export class WebsocketsEventValidator {
66
58
  async validate(input) {
67
59
  const result = await validation.safeParseAsync(input);
68
60
  if (!result.success) {
69
- throw (0, _utils.createZodError)(result.error);
61
+ throw createZodError(result.error);
70
62
  }
71
63
  const bodyResult = await bodyValidation.safeParseAsync(result.data.body);
72
64
  if (!bodyResult.success) {
73
- throw (0, _utils.createZodError)(bodyResult.error);
65
+ throw createZodError(bodyResult.error);
74
66
  }
75
67
  return {
76
68
  ...result.data,
@@ -80,6 +72,5 @@ class WebsocketsEventValidator {
80
72
  };
81
73
  }
82
74
  }
83
- exports.WebsocketsEventValidator = WebsocketsEventValidator;
84
75
 
85
76
  //# sourceMappingURL=WebsocketsEventValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_zod","_interopRequireDefault","require","_types","_utils","validation","zod","object","headers","passthrough","optional","requestContext","connectionId","string","stage","connectedAt","number","domainName","eventType","enum","WebsocketsEventRequestContextEventType","connect","message","disconnect","routeKey","body","transform","value","context","undefined","JSON","parse","ex","console","error","log","addIssue","path","code","ZodIssueCode","custom","fatal","superRefine","output","bodyValidation","token","tenant","locale","messageId","nullish","action","data","WebsocketsEventValidator","validate","input","result","safeParseAsync","success","createZodError","bodyResult","exports"],"sources":["WebsocketsEventValidator.ts"],"sourcesContent":["import zod from \"zod\";\nimport {\n IWebsocketsEvent,\n IWebsocketsEventData,\n WebsocketsEventRequestContextEventType\n} from \"~/handler/types\";\nimport {\n IWebsocketsEventValidator,\n IWebsocketsEventValidatorValidateParams\n} from \"./abstractions/IWebsocketsEventValidator\";\nimport { createZodError } from \"@webiny/utils\";\n\nconst validation = zod\n .object({\n headers: zod.object({}).passthrough().optional(),\n requestContext: zod.object({\n connectionId: zod.string(),\n stage: zod.string(),\n connectedAt: zod.number(),\n domainName: zod.string(),\n eventType: zod.enum([\n WebsocketsEventRequestContextEventType.connect,\n WebsocketsEventRequestContextEventType.message,\n WebsocketsEventRequestContextEventType.disconnect\n ]),\n routeKey: zod.string()\n }),\n body: zod\n .string()\n .transform<IWebsocketsEventData>((value, context) => {\n if (!value) {\n return undefined;\n }\n try {\n return JSON.parse(value);\n } catch (ex) {\n /**\n * We want to log the error, for easier debugging.\n */\n console.error(`Failed body validation: ${ex.message}`);\n console.log(`Body: ${value}`);\n /**\n * And we want to add an issue to the context, so that the user knows what went wrong.\n */\n context.addIssue({\n path: [],\n message: `Invalid JSON: ${ex.message}`,\n code: zod.ZodIssueCode.custom,\n fatal: true\n });\n }\n })\n .optional()\n })\n .superRefine((output, context) => {\n if (output.requestContext.eventType !== WebsocketsEventRequestContextEventType.message) {\n return;\n } else if (output.body) {\n return;\n }\n context.addIssue({\n path: [\"body\"],\n message: \"There must be a body defined when having a message event.\",\n code: zod.ZodIssueCode.custom,\n fatal: true\n });\n });\n\nconst bodyValidation = zod\n .object({\n token: zod.string(),\n tenant: zod.string(),\n locale: zod.string(),\n messageId: zod.string().nullish(),\n action: zod.string(),\n data: zod.object({}).passthrough().nullish()\n })\n .passthrough()\n .optional();\n\nexport class WebsocketsEventValidator implements IWebsocketsEventValidator {\n public async validate<T extends IWebsocketsEventData = IWebsocketsEventData>(\n input: IWebsocketsEventValidatorValidateParams\n ): Promise<IWebsocketsEvent<T>> {\n const result = await validation.safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n const bodyResult = await bodyValidation.safeParseAsync(result.data.body);\n if (!bodyResult.success) {\n throw createZodError(bodyResult.error);\n }\n return {\n ...result.data,\n body: {\n ...((bodyResult.data || {}) as T)\n }\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["zod","WebsocketsEventRequestContextEventType","createZodError","validation","object","headers","passthrough","optional","requestContext","connectionId","string","stage","connectedAt","number","domainName","eventType","enum","connect","message","disconnect","routeKey","body","transform","value","context","undefined","JSON","parse","ex","console","error","log","addIssue","path","code","ZodIssueCode","custom","fatal","superRefine","output","bodyValidation","token","tenant","messageId","nullish","action","data","WebsocketsEventValidator","validate","input","result","safeParseAsync","success","bodyResult"],"sources":["WebsocketsEventValidator.ts"],"sourcesContent":["import zod from \"zod\";\nimport type { IWebsocketsEvent, IWebsocketsEventData } from \"~/handler/types.js\";\nimport { WebsocketsEventRequestContextEventType } from \"~/handler/types.js\";\nimport type {\n IWebsocketsEventValidator,\n IWebsocketsEventValidatorValidateParams\n} from \"./abstractions/IWebsocketsEventValidator.js\";\nimport { createZodError } from \"@webiny/utils\";\n\nconst validation = zod\n .object({\n headers: zod.object({}).passthrough().optional(),\n requestContext: zod.object({\n connectionId: zod.string(),\n stage: zod.string(),\n connectedAt: zod.number(),\n domainName: zod.string(),\n eventType: zod.enum([\n WebsocketsEventRequestContextEventType.connect,\n WebsocketsEventRequestContextEventType.message,\n WebsocketsEventRequestContextEventType.disconnect\n ]),\n routeKey: zod.string()\n }),\n body: zod\n .string()\n .transform<IWebsocketsEventData>((value, context) => {\n if (!value) {\n return undefined;\n }\n try {\n return JSON.parse(value);\n } catch (ex) {\n /**\n * We want to log the error, for easier debugging.\n */\n console.error(`Failed body validation: ${ex.message}`);\n console.log(`Body: ${value}`);\n /**\n * And we want to add an issue to the context, so that the user knows what went wrong.\n */\n context.addIssue({\n path: [],\n message: `Invalid JSON: ${ex.message}`,\n code: zod.ZodIssueCode.custom,\n fatal: true\n });\n }\n })\n .optional()\n })\n .superRefine((output, context) => {\n if (output.requestContext.eventType !== WebsocketsEventRequestContextEventType.message) {\n return;\n } else if (output.body) {\n return;\n }\n context.addIssue({\n path: [\"body\"],\n message: \"There must be a body defined when having a message event.\",\n code: zod.ZodIssueCode.custom,\n fatal: true\n });\n });\n\nconst bodyValidation = zod\n .object({\n token: zod.string(),\n tenant: zod.string(),\n messageId: zod.string().nullish(),\n action: zod.string(),\n data: zod.object({}).passthrough().nullish()\n })\n .passthrough()\n .optional();\n\nexport class WebsocketsEventValidator implements IWebsocketsEventValidator {\n public async validate<T extends IWebsocketsEventData = IWebsocketsEventData>(\n input: IWebsocketsEventValidatorValidateParams\n ): Promise<IWebsocketsEvent<T>> {\n const result = await validation.safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n const bodyResult = await bodyValidation.safeParseAsync(result.data.body);\n if (!bodyResult.success) {\n throw createZodError(bodyResult.error);\n }\n return {\n ...result.data,\n body: {\n ...((bodyResult.data || {}) as T)\n }\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { IWebsocketsEvent, IWebsocketsEventData, IWebsocketsIncomingEvent } from "../../handler/types";
2
- export declare type IWebsocketsEventValidatorValidateParams = IWebsocketsIncomingEvent;
1
+ import type { IWebsocketsEvent, IWebsocketsEventData, IWebsocketsIncomingEvent } from "../../handler/types.js";
2
+ export type IWebsocketsEventValidatorValidateParams = IWebsocketsIncomingEvent;
3
3
  export interface IWebsocketsEventValidator {
4
4
  /**
5
5
  * @throws {Error}
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=IWebsocketsEventValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsEventValidator.ts"],"sourcesContent":["import { IWebsocketsEvent, IWebsocketsEventData, IWebsocketsIncomingEvent } from \"~/handler/types\";\n\nexport type IWebsocketsEventValidatorValidateParams = IWebsocketsIncomingEvent;\n\nexport interface IWebsocketsEventValidator {\n /**\n * @throws {Error}\n */\n validate<T extends IWebsocketsEventData = IWebsocketsEventData>(\n params: IWebsocketsEventValidatorValidateParams\n ): Promise<IWebsocketsEvent<T>>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["IWebsocketsEventValidator.ts"],"sourcesContent":["import type {\n IWebsocketsEvent,\n IWebsocketsEventData,\n IWebsocketsIncomingEvent\n} from \"~/handler/types.js\";\n\nexport type IWebsocketsEventValidatorValidateParams = IWebsocketsIncomingEvent;\n\nexport interface IWebsocketsEventValidator {\n /**\n * @throws {Error}\n */\n validate<T extends IWebsocketsEventData = IWebsocketsEventData>(\n params: IWebsocketsEventValidatorValidateParams\n ): Promise<IWebsocketsEvent<T>>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export * from "./abstractions/IWebsocketsEventValidator";
2
- export * from "./WebsocketsEventValidator";
1
+ export type * from "./abstractions/IWebsocketsEventValidator.js";
2
+ export * from "./WebsocketsEventValidator.js";
@@ -1,29 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _IWebsocketsEventValidator = require("./abstractions/IWebsocketsEventValidator");
7
- Object.keys(_IWebsocketsEventValidator).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _IWebsocketsEventValidator[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _IWebsocketsEventValidator[key];
14
- }
15
- });
16
- });
17
- var _WebsocketsEventValidator = require("./WebsocketsEventValidator");
18
- Object.keys(_WebsocketsEventValidator).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _WebsocketsEventValidator[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _WebsocketsEventValidator[key];
25
- }
26
- });
27
- });
1
+ export * from "./WebsocketsEventValidator.js";
28
2
 
29
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_IWebsocketsEventValidator","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_WebsocketsEventValidator"],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions/IWebsocketsEventValidator\";\nexport * from \"./WebsocketsEventValidator\";\n"],"mappings":";;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,0BAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,0BAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,0BAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,yBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,yBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,yBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,yBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type * from \"./abstractions/IWebsocketsEventValidator.js\";\nexport * from \"./WebsocketsEventValidator.js\";\n"],"mappings":"AACA","ignoreList":[]}