@webiny/api-websockets 6.0.0-alpha.5 → 6.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +10 -9
  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 -29
  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 +5 -8
  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 -27
  48. package/plugins/WebsocketsActionPlugin.d.ts +2 -2
  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 +2 -3
  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 +2 -2
  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 +1 -1
  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 +1 -1
  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 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_entity","_dbDynamodb","PK","GSI1_PK","GSI2_PK","WebsocketsConnectionRegistry","constructor","documentClient","entity","createEntity","register","params","connectionId","tenant","locale","identity","domainName","stage","connectedOn","data","store","unregister","keys","SK","original","getViaConnection","message","console","error","WebinyError","deleteItem","ex","code","item","get","listViaConnections","connections","items","map","getBatch","results","batchReadAll","table","listViaIdentity","queryAll","partitionKey","options","index","eq","listViaTenant","beginsWith","listAll","gte","GSI1_SK","id","GSI2_SK","put","err","from","exports"],"sources":["WebsocketsConnectionRegistry.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n IWebsocketsConnectionRegistry,\n IWebsocketsConnectionRegistryData,\n IWebsocketsConnectionRegistryRegisterParams,\n IWebsocketsConnectionRegistryUnregisterParams\n} from \"./abstractions/IWebsocketsConnectionRegistry\";\nimport { createEntity } from \"~/registry/entity\";\nimport { batchReadAll, deleteItem, get, put, queryAll } from \"@webiny/db-dynamodb\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { EntityQueryOptions } from \"@webiny/db-dynamodb/toolbox\";\n\nconst PK = `WS#CONNECTIONS`;\nconst GSI1_PK = \"WS#CONNECTIONS#IDENTITY\";\nconst GSI2_PK = \"WS#CONNECTIONS#TENANT#LOCALE\";\n\ninterface IWebsocketsConnectionRegistryDbItem {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n GSI2_PK: string;\n GSI2_SK: string;\n data: IWebsocketsConnectionRegistryData;\n}\n\nexport class WebsocketsConnectionRegistry implements IWebsocketsConnectionRegistry {\n private readonly entity: ReturnType<typeof createEntity>;\n\n public constructor(documentClient: DynamoDBDocument) {\n this.entity = createEntity(documentClient);\n }\n\n public async register(\n params: IWebsocketsConnectionRegistryRegisterParams\n ): Promise<IWebsocketsConnectionRegistryData> {\n const { connectionId, tenant, locale, identity, domainName, stage, connectedOn } = params;\n\n const data: IWebsocketsConnectionRegistryData = {\n connectionId,\n identity,\n tenant,\n locale,\n domainName,\n stage,\n connectedOn\n };\n await this.store(data);\n return data;\n }\n\n public async unregister(params: IWebsocketsConnectionRegistryUnregisterParams): Promise<void> {\n const { connectionId } = params;\n\n const keys = {\n PK,\n SK: connectionId\n };\n const original = await this.getViaConnection(connectionId);\n if (!original) {\n const message = `There is no connection with ID \"${connectionId}\".`;\n console.error(message);\n throw new WebinyError(message, \"CONNECTION_NOT_FOUND\", keys);\n }\n\n try {\n await deleteItem({\n entity: this.entity,\n keys\n });\n } catch (ex) {\n console.error(\n `Could not remove connection from the database: ${original.connectionId}`\n );\n throw new WebinyError(ex.message, ex.code, keys);\n }\n }\n\n private async getViaConnection(\n connectionId: string\n ): Promise<IWebsocketsConnectionRegistryData | null> {\n const item = await get<IWebsocketsConnectionRegistryDbItem>({\n entity: this.entity,\n keys: {\n PK,\n SK: connectionId\n }\n });\n return item?.data || null;\n }\n\n /**\n * Uses Primary keys\n */\n public async listViaConnections(\n connections: string[]\n ): Promise<IWebsocketsConnectionRegistryData[]> {\n const items = connections.map(connectionId => {\n return this.entity.getBatch({\n PK,\n SK: connectionId\n });\n });\n\n const results = await batchReadAll<IWebsocketsConnectionRegistryDbItem>({\n table: this.entity.table,\n items\n });\n\n return results.map(item => {\n return item.data;\n });\n }\n\n /**\n * Uses GSI1 keys\n */\n public async listViaIdentity(identity: string): Promise<IWebsocketsConnectionRegistryData[]> {\n const items = await queryAll<IWebsocketsConnectionRegistryDbItem>({\n entity: this.entity,\n partitionKey: GSI1_PK,\n options: {\n index: \"GSI1\",\n eq: identity\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n /**\n * Uses GSI2 keys\n */\n public async listViaTenant(\n tenant: string,\n locale?: string\n ): Promise<IWebsocketsConnectionRegistryData[]> {\n let options: Partial<EntityQueryOptions> = {\n beginsWith: `T#${tenant}#L#`\n };\n if (locale) {\n options = {\n eq: `T#${tenant}#L#${locale}`\n };\n }\n const items = await queryAll<IWebsocketsConnectionRegistryDbItem>({\n entity: this.entity,\n partitionKey: GSI2_PK,\n options: {\n ...options,\n index: \"GSI2\"\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n public async listAll(): Promise<IWebsocketsConnectionRegistryData[]> {\n const items = await queryAll<IWebsocketsConnectionRegistryDbItem>({\n entity: this.entity,\n partitionKey: PK,\n options: {\n gte: \" \"\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n private async store(data: IWebsocketsConnectionRegistryData) {\n const { connectionId, tenant, locale, identity } = data;\n const item: IWebsocketsConnectionRegistryDbItem = {\n // to find specific identity related to given connection\n PK,\n SK: connectionId,\n // to find all connections related to given identity\n GSI1_PK,\n GSI1_SK: identity.id,\n // to find all connections related to given tenant/locale combination\n GSI2_PK,\n GSI2_SK: `T#${tenant}#L#${locale}`,\n data\n };\n try {\n return await put({\n entity: this.entity,\n item\n });\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not store websockets connection data.\",\n code: \"STORE_WEBSOCKETS_CONNECTION_DATA_ERROR\",\n data: item\n });\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebinyError","createEntity","PK","GSI1_PK","GSI2_PK","WebsocketsConnectionRegistry","constructor","documentClient","entity","register","params","connectionId","tenant","identity","domainName","stage","connectedOn","data","store","unregister","keys","SK","original","getViaConnection","message","console","error","delete","ex","code","item","get","listViaConnections","connections","reader","createEntityReader","read","map","id","results","execute","listViaIdentity","items","queryAll","partitionKey","options","index","eq","listViaTenant","beginsWith","listAll","gte","GSI1_SK","GSI2_SK","GSI_TENANT","TYPE","put","err","from"],"sources":["WebsocketsConnectionRegistry.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n IWebsocketsConnectionRegistry,\n IWebsocketsConnectionRegistryData,\n IWebsocketsConnectionRegistryRegisterParams,\n IWebsocketsConnectionRegistryUnregisterParams\n} from \"./abstractions/IWebsocketsConnectionRegistry.js\";\nimport { createEntity } from \"~/registry/entity.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { EntityQueryOptions } from \"@webiny/db-dynamodb/toolbox.js\";\n\nconst PK = `WS#CONNECTIONS`;\nconst GSI1_PK = \"WS#CONNECTIONS#IDENTITY\";\nconst GSI2_PK = \"WS#CONNECTIONS#TENANT\";\n\nexport class WebsocketsConnectionRegistry implements IWebsocketsConnectionRegistry {\n private readonly entity;\n\n public constructor(documentClient: DynamoDBDocument) {\n this.entity = createEntity(documentClient);\n }\n\n public async register(\n params: IWebsocketsConnectionRegistryRegisterParams\n ): Promise<IWebsocketsConnectionRegistryData> {\n const { connectionId, tenant, identity, domainName, stage, connectedOn } = params;\n\n const data: IWebsocketsConnectionRegistryData = {\n connectionId,\n identity,\n tenant,\n domainName,\n stage,\n connectedOn\n };\n await this.store(data);\n return data;\n }\n\n public async unregister(params: IWebsocketsConnectionRegistryUnregisterParams): Promise<void> {\n const { connectionId } = params;\n\n const keys = {\n PK,\n SK: connectionId\n };\n const original = await this.getViaConnection(connectionId);\n if (!original) {\n const message = `There is no connection with ID \"${connectionId}\".`;\n console.error(message);\n throw new WebinyError(message, \"CONNECTION_NOT_FOUND\", keys);\n }\n\n try {\n await this.entity.delete(keys);\n } catch (ex) {\n console.error(\n `Could not remove connection from the database: ${original.connectionId}`\n );\n throw new WebinyError(ex.message, ex.code, keys);\n }\n }\n\n private async getViaConnection(\n connectionId: string\n ): Promise<IWebsocketsConnectionRegistryData | null> {\n const item = await this.entity.get({\n PK,\n SK: connectionId\n });\n if (!item) {\n return null;\n }\n return item?.data || null;\n }\n\n /**\n * Uses Primary keys\n */\n public async listViaConnections(\n connections: string[]\n ): Promise<IWebsocketsConnectionRegistryData[]> {\n const reader = this.entity.createEntityReader({\n read: connections.map(id => {\n return {\n PK,\n SK: id\n };\n })\n });\n\n const results = await reader.execute();\n\n return results.map(item => {\n return item.data;\n });\n }\n\n /**\n * Uses GSI1 keys\n */\n public async listViaIdentity(identity: string): Promise<IWebsocketsConnectionRegistryData[]> {\n const items = await this.entity.queryAll({\n partitionKey: GSI1_PK,\n options: {\n index: \"GSI1\",\n eq: identity\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n /**\n * Uses GSI2 keys\n */\n public async listViaTenant(tenant: string): Promise<IWebsocketsConnectionRegistryData[]> {\n const options: Partial<EntityQueryOptions> = {\n beginsWith: `T#${tenant}`\n };\n\n const items = await this.entity.queryAll({\n partitionKey: GSI2_PK,\n options: {\n ...options,\n index: \"GSI2\"\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n public async listAll(): Promise<IWebsocketsConnectionRegistryData[]> {\n const items = await this.entity.queryAll({\n partitionKey: PK,\n options: {\n gte: \" \"\n }\n });\n return items.map(item => {\n return item.data;\n });\n }\n\n private async store(data: IWebsocketsConnectionRegistryData) {\n const { connectionId, tenant, identity } = data;\n const item = {\n // to find specific identity related to given connection\n PK,\n SK: connectionId,\n // to find all connections related to given identity\n GSI1_PK,\n GSI1_SK: identity.id,\n // to find all connections related to given tenant\n GSI2_PK,\n GSI2_SK: `T#${tenant}`,\n GSI_TENANT: tenant,\n TYPE: \"ws.connection\",\n data\n };\n try {\n return await this.entity.put(item);\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not store websockets connection data.\",\n code: \"STORE_WEBSOCKETS_CONNECTION_DATA_ERROR\",\n data: item\n });\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,8 @@
1
- import type { IWebsocketsIdentity } from "../../context/abstractions/IWebsocketsContext";
1
+ import type { IWebsocketsIdentity } from "../../context/abstractions/IWebsocketsContext.js";
2
2
  export interface IWebsocketsConnectionRegistryData {
3
3
  connectionId: string;
4
4
  identity: IWebsocketsIdentity;
5
5
  tenant: string;
6
- locale: string;
7
6
  connectedOn: string;
8
7
  domainName: string;
9
8
  stage: string;
@@ -11,7 +10,6 @@ export interface IWebsocketsConnectionRegistryData {
11
10
  export interface IWebsocketsConnectionRegistryRegisterParams {
12
11
  connectionId: string;
13
12
  tenant: string;
14
- locale: string;
15
13
  identity: IWebsocketsIdentity;
16
14
  domainName: string;
17
15
  stage: string;
@@ -28,6 +26,6 @@ export interface IWebsocketsConnectionRegistry {
28
26
  unregister(event: IWebsocketsConnectionRegistryUnregisterParams): Promise<void>;
29
27
  listViaConnections(connections: string[]): Promise<IWebsocketsConnectionRegistryData[]>;
30
28
  listViaIdentity(identity: string): Promise<IWebsocketsConnectionRegistryData[]>;
31
- listViaTenant(tenant: string, locale?: string): Promise<IWebsocketsConnectionRegistryData[]>;
29
+ listViaTenant(tenant: string): Promise<IWebsocketsConnectionRegistryData[]>;
32
30
  listAll(): Promise<IWebsocketsConnectionRegistryData[]>;
33
31
  }
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=IWebsocketsConnectionRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsConnectionRegistry.ts"],"sourcesContent":["import type { IWebsocketsIdentity } from \"~/context/abstractions/IWebsocketsContext\";\n\nexport interface IWebsocketsConnectionRegistryData {\n connectionId: string;\n identity: IWebsocketsIdentity;\n tenant: string;\n locale: string;\n connectedOn: string;\n domainName: string;\n stage: string;\n}\n\nexport interface IWebsocketsConnectionRegistryRegisterParams {\n connectionId: string;\n tenant: string;\n locale: string;\n identity: IWebsocketsIdentity;\n domainName: string;\n stage: string;\n /**\n * A DateTime.toISOString() format.\n */\n connectedOn: string;\n}\n\nexport interface IWebsocketsConnectionRegistryUnregisterParams {\n connectionId: string;\n}\n\nexport interface IWebsocketsConnectionRegistry {\n register(\n event: IWebsocketsConnectionRegistryRegisterParams\n ): Promise<IWebsocketsConnectionRegistryData>;\n unregister(event: IWebsocketsConnectionRegistryUnregisterParams): Promise<void>;\n\n listViaConnections(connections: string[]): Promise<IWebsocketsConnectionRegistryData[]>;\n listViaIdentity(identity: string): Promise<IWebsocketsConnectionRegistryData[]>;\n listViaTenant(tenant: string, locale?: string): Promise<IWebsocketsConnectionRegistryData[]>;\n listAll(): Promise<IWebsocketsConnectionRegistryData[]>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["IWebsocketsConnectionRegistry.ts"],"sourcesContent":["import type { IWebsocketsIdentity } from \"~/context/abstractions/IWebsocketsContext.js\";\n\nexport interface IWebsocketsConnectionRegistryData {\n connectionId: string;\n identity: IWebsocketsIdentity;\n tenant: string;\n connectedOn: string;\n domainName: string;\n stage: string;\n}\n\nexport interface IWebsocketsConnectionRegistryRegisterParams {\n connectionId: string;\n tenant: string;\n identity: IWebsocketsIdentity;\n domainName: string;\n stage: string;\n /**\n * A DateTime.toISOString() format.\n */\n connectedOn: string;\n}\n\nexport interface IWebsocketsConnectionRegistryUnregisterParams {\n connectionId: string;\n}\n\nexport interface IWebsocketsConnectionRegistry {\n register(\n event: IWebsocketsConnectionRegistryRegisterParams\n ): Promise<IWebsocketsConnectionRegistryData>;\n unregister(event: IWebsocketsConnectionRegistryUnregisterParams): Promise<void>;\n\n listViaConnections(connections: string[]): Promise<IWebsocketsConnectionRegistryData[]>;\n listViaIdentity(identity: string): Promise<IWebsocketsConnectionRegistryData[]>;\n listViaTenant(tenant: string): Promise<IWebsocketsConnectionRegistryData[]>;\n listAll(): Promise<IWebsocketsConnectionRegistryData[]>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,108 +1,3 @@
1
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
- import { Entity, Table } from "@webiny/db-dynamodb/toolbox";
3
- export declare const createEntity: (documentClient: DynamoDBDocument) => Entity<"SocketsConnectionRegistry", undefined, undefined, Table<string, "PK", "SK">, true, true, true, "created", "modified", "entity", false, {
4
- PK: {
5
- partitionKey: true;
6
- };
7
- SK: {
8
- sortKey: true;
9
- };
10
- GSI1_PK: {
11
- type: "string";
12
- };
13
- GSI1_SK: {
14
- type: "string";
15
- };
16
- GSI2_PK: {
17
- type: "string";
18
- };
19
- GSI2_SK: {
20
- type: "string";
21
- };
22
- TYPE: {
23
- type: "string";
24
- default: string;
25
- };
26
- data: {
27
- type: "map";
28
- };
29
- }, {
30
- PK: {
31
- partitionKey: true;
32
- };
33
- SK: {
34
- sortKey: true;
35
- };
36
- GSI1_PK: {
37
- type: "string";
38
- };
39
- GSI1_SK: {
40
- type: "string";
41
- };
42
- GSI2_PK: {
43
- type: "string";
44
- };
45
- GSI2_SK: {
46
- type: "string";
47
- };
48
- TYPE: {
49
- type: "string";
50
- default: string;
51
- };
52
- data: {
53
- type: "map";
54
- };
55
- }, import("dynamodb-toolbox/dist/cjs/classes/Entity").ParseAttributes<{
56
- PK: {
57
- partitionKey: true;
58
- };
59
- SK: {
60
- sortKey: true;
61
- };
62
- GSI1_PK: {
63
- type: "string";
64
- };
65
- GSI1_SK: {
66
- type: "string";
67
- };
68
- GSI2_PK: {
69
- type: "string";
70
- };
71
- GSI2_SK: {
72
- type: "string";
73
- };
74
- TYPE: {
75
- type: "string";
76
- default: string;
77
- };
78
- data: {
79
- type: "map";
80
- };
81
- }, true, "created", "modified", "entity", false>, {
82
- data?: any;
83
- GSI1_PK?: string | undefined;
84
- GSI1_SK?: string | undefined;
85
- GSI2_PK?: string | undefined;
86
- GSI2_SK?: string | undefined;
87
- TYPE?: string | undefined;
88
- PK: any;
89
- SK: any;
90
- created: string;
91
- modified: string;
92
- entity: string;
93
- }, {
94
- data?: any;
95
- GSI1_PK?: string | undefined;
96
- GSI1_SK?: string | undefined;
97
- GSI2_PK?: string | undefined;
98
- GSI2_SK?: string | undefined;
99
- TYPE?: string | undefined;
100
- PK: any;
101
- SK: any;
102
- created: string;
103
- modified: string;
104
- entity: string;
105
- }, {
106
- PK: any;
107
- SK: any;
108
- }>;
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
+ import type { IWebsocketsConnectionRegistryData } from "./abstractions/IWebsocketsConnectionRegistry.js";
3
+ export declare const createEntity: (documentClient: DynamoDBDocument) => import("@webiny/db-dynamodb").IEntity<import("@webiny/db-dynamodb").IStandardEntityAttributes<IWebsocketsConnectionRegistryData>>;
@@ -1,33 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createEntity = void 0;
7
- var _toolbox = require("@webiny/db-dynamodb/toolbox");
1
+ import { createStandardEntity, createTable } from "@webiny/db-dynamodb";
8
2
  const name = "SocketsConnectionRegistry";
9
- const createEntity = documentClient => {
10
- const table = new _toolbox.Table({
3
+ export const createEntity = documentClient => {
4
+ const table = createTable({
11
5
  name: String(process.env.DB_TABLE),
12
- partitionKey: "PK",
13
- sortKey: "SK",
14
- DocumentClient: documentClient,
15
- indexes: {
16
- GSI1: {
17
- partitionKey: "GSI1_PK",
18
- sortKey: "GSI1_SK"
19
- },
20
- GSI2: {
21
- partitionKey: "GSI2_PK",
22
- sortKey: "GSI2_SK"
23
- }
24
- },
25
- autoExecute: true,
26
- autoParse: true
6
+ documentClient
27
7
  });
28
- return new _toolbox.Entity({
8
+ return createStandardEntity({
29
9
  name,
30
- table,
10
+ table: table.table,
31
11
  attributes: {
32
12
  PK: {
33
13
  partitionKey: true
@@ -36,27 +16,32 @@ const createEntity = documentClient => {
36
16
  sortKey: true
37
17
  },
38
18
  GSI1_PK: {
39
- type: "string"
19
+ type: "string",
20
+ required: true
40
21
  },
41
22
  GSI1_SK: {
42
- type: "string"
23
+ type: "string",
24
+ required: true
43
25
  },
44
26
  GSI2_PK: {
45
- type: "string"
27
+ type: "string",
28
+ required: true
46
29
  },
47
30
  GSI2_SK: {
48
- type: "string"
31
+ type: "string",
32
+ required: true
49
33
  },
50
34
  TYPE: {
51
35
  type: "string",
52
- default: name
36
+ default: name,
37
+ required: true
53
38
  },
54
39
  data: {
55
- type: "map"
40
+ type: "map",
41
+ required: true
56
42
  }
57
43
  }
58
44
  });
59
45
  };
60
- exports.createEntity = createEntity;
61
46
 
62
47
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","name","createEntity","documentClient","table","Table","String","process","env","DB_TABLE","partitionKey","sortKey","DocumentClient","indexes","GSI1","GSI2","autoExecute","autoParse","Entity","attributes","PK","SK","GSI1_PK","type","GSI1_SK","GSI2_PK","GSI2_SK","TYPE","default","data","exports"],"sources":["entity.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Entity, Table } from \"@webiny/db-dynamodb/toolbox\";\n\nconst name = \"SocketsConnectionRegistry\";\n\nexport const createEntity = (documentClient: DynamoDBDocument) => {\n const table = new Table({\n name: String(process.env.DB_TABLE),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n },\n GSI2: {\n partitionKey: \"GSI2_PK\",\n sortKey: \"GSI2_SK\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n\n return new Entity({\n name,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n GSI2_PK: {\n type: \"string\"\n },\n GSI2_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\",\n default: name\n },\n data: {\n type: \"map\"\n }\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,IAAI,GAAG,2BAA2B;AAEjC,MAAMC,YAAY,GAAIC,cAAgC,IAAK;EAC9D,MAAMC,KAAK,GAAG,IAAIC,cAAK,CAAC;IACpBJ,IAAI,EAAEK,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,CAAC;IAClCC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,cAAc,EAAET,cAAc;IAC9BU,OAAO,EAAE;MACLC,IAAI,EAAE;QACFJ,YAAY,EAAE,SAAS;QACvBC,OAAO,EAAE;MACb,CAAC;MACDI,IAAI,EAAE;QACFL,YAAY,EAAE,SAAS;QACvBC,OAAO,EAAE;MACb;IACJ,CAAC;IACDK,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC,CAAC;EAEF,OAAO,IAAIC,eAAM,CAAC;IACdjB,IAAI;IACJG,KAAK;IACLe,UAAU,EAAE;MACRC,EAAE,EAAE;QACAV,YAAY,EAAE;MAClB,CAAC;MACDW,EAAE,EAAE;QACAV,OAAO,EAAE;MACb,CAAC;MACDW,OAAO,EAAE;QACLC,IAAI,EAAE;MACV,CAAC;MACDC,OAAO,EAAE;QACLD,IAAI,EAAE;MACV,CAAC;MACDE,OAAO,EAAE;QACLF,IAAI,EAAE;MACV,CAAC;MACDG,OAAO,EAAE;QACLH,IAAI,EAAE;MACV,CAAC;MACDI,IAAI,EAAE;QACFJ,IAAI,EAAE,QAAQ;QACdK,OAAO,EAAE3B;MACb,CAAC;MACD4B,IAAI,EAAE;QACFN,IAAI,EAAE;MACV;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACO,OAAA,CAAA5B,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["createStandardEntity","createTable","name","createEntity","documentClient","table","String","process","env","DB_TABLE","attributes","PK","partitionKey","SK","sortKey","GSI1_PK","type","required","GSI1_SK","GSI2_PK","GSI2_SK","TYPE","default","data"],"sources":["entity.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport { createStandardEntity, createTable } from \"@webiny/db-dynamodb\";\nimport type { IWebsocketsConnectionRegistryData } from \"./abstractions/IWebsocketsConnectionRegistry.js\";\n\nconst name = \"SocketsConnectionRegistry\";\n\nexport const createEntity = (documentClient: DynamoDBDocument) => {\n const table = createTable({\n name: String(process.env.DB_TABLE),\n documentClient\n });\n\n return createStandardEntity<IWebsocketsConnectionRegistryData>({\n name,\n table: table.table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\",\n required: true\n },\n GSI1_SK: {\n type: \"string\",\n required: true\n },\n GSI2_PK: {\n type: \"string\",\n required: true\n },\n GSI2_SK: {\n type: \"string\",\n required: true\n },\n TYPE: {\n type: \"string\",\n default: name,\n required: true\n },\n data: {\n type: \"map\",\n required: true\n }\n }\n });\n};\n"],"mappings":"AACA,SAASA,oBAAoB,EAAEC,WAAW,QAAQ,qBAAqB;AAGvE,MAAMC,IAAI,GAAG,2BAA2B;AAExC,OAAO,MAAMC,YAAY,GAAIC,cAAgC,IAAK;EAC9D,MAAMC,KAAK,GAAGJ,WAAW,CAAC;IACtBC,IAAI,EAAEI,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,CAAC;IAClCL;EACJ,CAAC,CAAC;EAEF,OAAOJ,oBAAoB,CAAoC;IAC3DE,IAAI;IACJG,KAAK,EAAEA,KAAK,CAACA,KAAK;IAClBK,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACLC,IAAI,EAAE,QAAQ;QACdC,QAAQ,EAAE;MACd,CAAC;MACDC,OAAO,EAAE;QACLF,IAAI,EAAE,QAAQ;QACdC,QAAQ,EAAE;MACd,CAAC;MACDE,OAAO,EAAE;QACLH,IAAI,EAAE,QAAQ;QACdC,QAAQ,EAAE;MACd,CAAC;MACDG,OAAO,EAAE;QACLJ,IAAI,EAAE,QAAQ;QACdC,QAAQ,EAAE;MACd,CAAC;MACDI,IAAI,EAAE;QACFL,IAAI,EAAE,QAAQ;QACdM,OAAO,EAAEpB,IAAI;QACbe,QAAQ,EAAE;MACd,CAAC;MACDM,IAAI,EAAE;QACFP,IAAI,EAAE,KAAK;QACXC,QAAQ,EAAE;MACd;IACJ;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export * from "./abstractions/IWebsocketsConnectionRegistry";
2
- export * from "./WebsocketsConnectionRegistry";
1
+ export type * from "./abstractions/IWebsocketsConnectionRegistry.js";
2
+ export * from "./WebsocketsConnectionRegistry.js";
package/registry/index.js CHANGED
@@ -1,29 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _IWebsocketsConnectionRegistry = require("./abstractions/IWebsocketsConnectionRegistry");
7
- Object.keys(_IWebsocketsConnectionRegistry).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _IWebsocketsConnectionRegistry[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _IWebsocketsConnectionRegistry[key];
14
- }
15
- });
16
- });
17
- var _WebsocketsConnectionRegistry = require("./WebsocketsConnectionRegistry");
18
- Object.keys(_WebsocketsConnectionRegistry).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _WebsocketsConnectionRegistry[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _WebsocketsConnectionRegistry[key];
25
- }
26
- });
27
- });
1
+ export * from "./WebsocketsConnectionRegistry.js";
28
2
 
29
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_IWebsocketsConnectionRegistry","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_WebsocketsConnectionRegistry"],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions/IWebsocketsConnectionRegistry\";\nexport * from \"./WebsocketsConnectionRegistry\";\n"],"mappings":";;;;;AAAA,IAAAA,8BAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,8BAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,8BAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,8BAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,6BAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,6BAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,6BAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,6BAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type * from \"./abstractions/IWebsocketsConnectionRegistry.js\";\nexport * from \"./WebsocketsConnectionRegistry.js\";\n"],"mappings":"AACA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { IWebsocketsResponse, IWebsocketsResponseErrorParams, IWebsocketsResponseErrorResult, IWebsocketsResponseOkParams, IWebsocketsResponseOkResult } from "./abstractions/IWebsocketsResponse";
1
+ import type { IWebsocketsResponse, IWebsocketsResponseErrorParams, IWebsocketsResponseErrorResult, IWebsocketsResponseOkParams, IWebsocketsResponseOkResult } from "./abstractions/IWebsocketsResponse.js";
2
2
  export declare class WebsocketsResponse implements IWebsocketsResponse {
3
3
  ok(params?: IWebsocketsResponseOkParams): IWebsocketsResponseOkResult;
4
4
  error(params: IWebsocketsResponseErrorParams): IWebsocketsResponseErrorResult;
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.WebsocketsResponse = void 0;
7
- class WebsocketsResponse {
1
+ export class WebsocketsResponse {
8
2
  ok(params) {
9
3
  return {
10
4
  statusCode: 200,
@@ -24,6 +18,5 @@ class WebsocketsResponse {
24
18
  };
25
19
  }
26
20
  }
27
- exports.WebsocketsResponse = WebsocketsResponse;
28
21
 
29
22
  //# sourceMappingURL=WebsocketsResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["WebsocketsResponse","ok","params","statusCode","error","message","code","data","exports"],"sources":["WebsocketsResponse.ts"],"sourcesContent":["import type {\n IWebsocketsResponse,\n IWebsocketsResponseErrorParams,\n IWebsocketsResponseErrorResult,\n IWebsocketsResponseOkParams,\n IWebsocketsResponseOkResult\n} from \"./abstractions/IWebsocketsResponse\";\n\nexport class WebsocketsResponse implements IWebsocketsResponse {\n public ok(params?: IWebsocketsResponseOkParams): IWebsocketsResponseOkResult {\n return {\n statusCode: 200,\n ...params\n };\n }\n\n public error(params: IWebsocketsResponseErrorParams): IWebsocketsResponseErrorResult {\n return {\n ...params,\n statusCode: params.statusCode || 200,\n error: {\n ...params.error,\n message: params.error?.message || params.message,\n code: params.error?.code || \"UNKNOWN_ERROR\",\n data: params.error?.data || {}\n }\n };\n }\n}\n"],"mappings":";;;;;;AAQO,MAAMA,kBAAkB,CAAgC;EACpDC,EAAEA,CAACC,MAAoC,EAA+B;IACzE,OAAO;MACHC,UAAU,EAAE,GAAG;MACf,GAAGD;IACP,CAAC;EACL;EAEOE,KAAKA,CAACF,MAAsC,EAAkC;IACjF,OAAO;MACH,GAAGA,MAAM;MACTC,UAAU,EAAED,MAAM,CAACC,UAAU,IAAI,GAAG;MACpCC,KAAK,EAAE;QACH,GAAGF,MAAM,CAACE,KAAK;QACfC,OAAO,EAAEH,MAAM,CAACE,KAAK,EAAEC,OAAO,IAAIH,MAAM,CAACG,OAAO;QAChDC,IAAI,EAAEJ,MAAM,CAACE,KAAK,EAAEE,IAAI,IAAI,eAAe;QAC3CC,IAAI,EAAEL,MAAM,CAACE,KAAK,EAAEG,IAAI,IAAI,CAAC;MACjC;IACJ,CAAC;EACL;AACJ;AAACC,OAAA,CAAAR,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["WebsocketsResponse","ok","params","statusCode","error","message","code","data"],"sources":["WebsocketsResponse.ts"],"sourcesContent":["import type {\n IWebsocketsResponse,\n IWebsocketsResponseErrorParams,\n IWebsocketsResponseErrorResult,\n IWebsocketsResponseOkParams,\n IWebsocketsResponseOkResult\n} from \"./abstractions/IWebsocketsResponse.js\";\n\nexport class WebsocketsResponse implements IWebsocketsResponse {\n public ok(params?: IWebsocketsResponseOkParams): IWebsocketsResponseOkResult {\n return {\n statusCode: 200,\n ...params\n };\n }\n\n public error(params: IWebsocketsResponseErrorParams): IWebsocketsResponseErrorResult {\n return {\n ...params,\n statusCode: params.statusCode || 200,\n error: {\n ...params.error,\n message: params.error?.message || params.message,\n code: params.error?.code || \"UNKNOWN_ERROR\",\n data: params.error?.data || {}\n }\n };\n }\n}\n"],"mappings":"AAQA,OAAO,MAAMA,kBAAkB,CAAgC;EACpDC,EAAEA,CAACC,MAAoC,EAA+B;IACzE,OAAO;MACHC,UAAU,EAAE,GAAG;MACf,GAAGD;IACP,CAAC;EACL;EAEOE,KAAKA,CAACF,MAAsC,EAAkC;IACjF,OAAO;MACH,GAAGA,MAAM;MACTC,UAAU,EAAED,MAAM,CAACC,UAAU,IAAI,GAAG;MACpCC,KAAK,EAAE;QACH,GAAGF,MAAM,CAACE,KAAK;QACfC,OAAO,EAAEH,MAAM,CAACE,KAAK,EAAEC,OAAO,IAAIH,MAAM,CAACG,OAAO;QAChDC,IAAI,EAAEJ,MAAM,CAACE,KAAK,EAAEE,IAAI,IAAI,eAAe;QAC3CC,IAAI,EAAEL,MAAM,CAACE,KAAK,EAAEG,IAAI,IAAI,CAAC;MACjC;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { GenericRecord } from "@webiny/api/types";
1
+ import type { GenericRecord } from "@webiny/api/types.js";
2
2
  export interface IWebsocketsResponseOkParams {
3
3
  message?: string;
4
4
  data?: GenericRecord<string>;
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=IWebsocketsResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["IWebsocketsResponse.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types\";\n\nexport interface IWebsocketsResponseOkParams {\n message?: string;\n data?: GenericRecord<string>;\n}\n\nexport interface IWebsocketsResponseOkResult {\n statusCode: number;\n data?: GenericRecord<string>;\n message?: string;\n}\n\nexport interface IWebsocketsResponseErrorParams {\n statusCode?: number;\n error?: Omit<IWebsocketsResponseErrorResultError, \"data\"> &\n Partial<Pick<IWebsocketsResponseErrorResultError, \"data\">>;\n message: string;\n}\n\nexport interface IWebsocketsResponseErrorResultError {\n message: string;\n code: string;\n data: GenericRecord<string>;\n stack?: string;\n}\n\nexport interface IWebsocketsResponseErrorResult {\n statusCode: number;\n error: IWebsocketsResponseErrorResultError;\n}\n\nexport interface IWebsocketsResponse {\n ok(params?: IWebsocketsResponseOkParams): IWebsocketsResponseOkResult;\n error(params: IWebsocketsResponseErrorParams): IWebsocketsResponseErrorResult;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["IWebsocketsResponse.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface IWebsocketsResponseOkParams {\n message?: string;\n data?: GenericRecord<string>;\n}\n\nexport interface IWebsocketsResponseOkResult {\n statusCode: number;\n data?: GenericRecord<string>;\n message?: string;\n}\n\nexport interface IWebsocketsResponseErrorParams {\n statusCode?: number;\n error?: Omit<IWebsocketsResponseErrorResultError, \"data\"> &\n Partial<Pick<IWebsocketsResponseErrorResultError, \"data\">>;\n message: string;\n}\n\nexport interface IWebsocketsResponseErrorResultError {\n message: string;\n code: string;\n data: GenericRecord<string>;\n stack?: string;\n}\n\nexport interface IWebsocketsResponseErrorResult {\n statusCode: number;\n error: IWebsocketsResponseErrorResultError;\n}\n\nexport interface IWebsocketsResponse {\n ok(params?: IWebsocketsResponseOkParams): IWebsocketsResponseOkResult;\n error(params: IWebsocketsResponseErrorParams): IWebsocketsResponseErrorResult;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export * from "./abstractions/IWebsocketsResponse";
2
- export * from "./WebsocketsResponse";
1
+ export type * from "./abstractions/IWebsocketsResponse.js";
2
+ export * from "./WebsocketsResponse.js";
package/response/index.js CHANGED
@@ -1,29 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _IWebsocketsResponse = require("./abstractions/IWebsocketsResponse");
7
- Object.keys(_IWebsocketsResponse).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _IWebsocketsResponse[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _IWebsocketsResponse[key];
14
- }
15
- });
16
- });
17
- var _WebsocketsResponse = require("./WebsocketsResponse");
18
- Object.keys(_WebsocketsResponse).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _WebsocketsResponse[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function () {
24
- return _WebsocketsResponse[key];
25
- }
26
- });
27
- });
1
+ export * from "./WebsocketsResponse.js";
28
2
 
29
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_IWebsocketsResponse","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_WebsocketsResponse"],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions/IWebsocketsResponse\";\nexport * from \"./WebsocketsResponse\";\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,mBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,mBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,mBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,mBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type * from \"./abstractions/IWebsocketsResponse.js\";\nexport * from \"./WebsocketsResponse.js\";\n"],"mappings":"AACA","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import type { IWebsocketsEventData, IWebsocketsIncomingEvent } from "../handler/types";
2
- import type { Context } from "../types";
3
- import type { IWebsocketsEventValidator } from "../validator";
4
- import type { IWebsocketsRunner, IWebsocketsRunnerResponse } from "./abstractions/IWebsocketsRunner";
5
- import type { IWebsocketsConnectionRegistry } from "../registry";
6
- import type { IWebsocketsResponse } from "../response";
1
+ import type { IWebsocketsEventData, IWebsocketsIncomingEvent } from "../handler/types.js";
2
+ import type { Context } from "../types.js";
3
+ import type { IWebsocketsEventValidator } from "../validator/index.js";
4
+ import type { IWebsocketsRunner, IWebsocketsRunnerResponse } from "./abstractions/IWebsocketsRunner.js";
5
+ import type { IWebsocketsConnectionRegistry } from "../registry/index.js";
6
+ import type { IWebsocketsResponse } from "../response/index.js";
7
7
  export declare class WebsocketsRunner implements IWebsocketsRunner {
8
8
  private readonly context;
9
9
  private readonly registry;
@@ -1,15 +1,8 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.WebsocketsRunner = void 0;
8
- var _error = _interopRequireDefault(require("@webiny/error"));
9
- var _types = require("../handler/types");
10
- var _plugins = require("../plugins");
11
- var _middleware = require("../utils/middleware");
12
- class WebsocketsRunner {
1
+ import WebinyError from "@webiny/error";
2
+ import { WebsocketsEventRequestContextEventType } from "../handler/types.js";
3
+ import { WebsocketsRoutePlugin } from "../plugins/index.js";
4
+ import { middleware } from "../utils/middleware.js";
5
+ export class WebsocketsRunner {
13
6
  constructor(context, registry, validator, response) {
14
7
  this.context = context;
15
8
  this.registry = registry;
@@ -94,11 +87,11 @@ class WebsocketsRunner {
94
87
  }
95
88
  }
96
89
  getRoutePlugins(route) {
97
- const plugins = this.context.plugins.byType(_plugins.WebsocketsRoutePlugin.type).filter(plugin => {
90
+ const plugins = this.context.plugins.byType(WebsocketsRoutePlugin.type).filter(plugin => {
98
91
  return plugin.route === route;
99
92
  });
100
93
  if (plugins.length === 0) {
101
- throw new _error.default(`There are no plugins for the route: ${route}.`, "NO_ROUTE_PLUGINS", {
94
+ throw new WebinyError(`There are no plugins for the route: ${route}.`, "NO_ROUTE_PLUGINS", {
102
95
  route
103
96
  });
104
97
  }
@@ -113,22 +106,17 @@ class WebsocketsRunner {
113
106
  const tenant = this.context.tenancy.getCurrentTenant();
114
107
  return tenant?.id || null;
115
108
  };
116
- const getLocale = () => {
117
- const locale = this.context.i18n.getCurrentLocale("content");
118
- return locale?.code || null;
119
- };
120
109
  const getIdentity = () => {
121
110
  const identity = this.context.security.getIdentity();
122
111
  return identity || null;
123
112
  };
124
- const action = (0, _middleware.middleware)(plugins.map(plugin => {
113
+ const action = middleware(plugins.map(plugin => {
125
114
  return async (params, next) => {
126
115
  return plugin.run({
127
116
  registry: params.registry,
128
117
  event: params.event,
129
118
  context: params.context,
130
119
  getTenant,
131
- getLocale,
132
120
  getIdentity,
133
121
  response: this.response,
134
122
  next
@@ -162,7 +150,7 @@ class WebsocketsRunner {
162
150
  result,
163
151
  messageId
164
152
  } = params;
165
- if (eventType !== _types.WebsocketsEventRequestContextEventType.message) {
153
+ if (eventType !== WebsocketsEventRequestContextEventType.message) {
166
154
  return;
167
155
  } else if (!connectionId || !domainName || !stage) {
168
156
  const message = "No connectionId, domainName or stage.";
@@ -172,7 +160,7 @@ class WebsocketsRunner {
172
160
  stage
173
161
  };
174
162
  console.error(message, JSON.stringify(data));
175
- throw new _error.default(message, "GENERAL_ERROR", data);
163
+ throw new WebinyError(message, "GENERAL_ERROR", data);
176
164
  }
177
165
  const connection = {
178
166
  connectionId,
@@ -186,6 +174,5 @@ class WebsocketsRunner {
186
174
  await this.context.websockets.sendToConnections([connection], dataToSend);
187
175
  }
188
176
  }
189
- exports.WebsocketsRunner = WebsocketsRunner;
190
177
 
191
178
  //# sourceMappingURL=WebsocketsRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_plugins","_middleware","WebsocketsRunner","constructor","context","registry","validator","response","run","input","event","validate","ex","result","error","message","code","data","stack","connectionId","domainName","stage","eventType","requestContext","messageId","body","JSON","stringify","json","parse","respond","executeRoute","routeKey","getRoutePlugins","route","plugins","byType","WebsocketsRoutePlugin","type","filter","plugin","length","WebinyError","reverse","getTenant","tenant","tenancy","getCurrentTenant","id","getLocale","locale","i18n","getCurrentLocale","getIdentity","identity","security","action","middleware","map","params","next","statusCode","WebsocketsEventRequestContextEventType","console","connection","dataToSend","websockets","sendToConnections","exports"],"sources":["WebsocketsRunner.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n IWebsocketsEvent,\n IWebsocketsEventData,\n IWebsocketsEventRequestContext,\n IWebsocketsIncomingEvent,\n WebsocketsEventRoute\n} from \"~/handler/types\";\nimport { WebsocketsEventRequestContextEventType } from \"~/handler/types\";\nimport type { Context } from \"~/types\";\nimport type { IWebsocketsEventValidator } from \"~/validator\";\nimport type {\n IWebsocketsRunner,\n IWebsocketsRunnerResponse\n} from \"./abstractions/IWebsocketsRunner\";\nimport type { IWebsocketsRoutePluginCallableParams } from \"~/plugins\";\nimport { WebsocketsRoutePlugin } from \"~/plugins\";\nimport { middleware } from \"~/utils/middleware\";\nimport type { IWebsocketsConnectionRegistry } from \"~/registry\";\nimport type {\n IWebsocketsResponse,\n IWebsocketsResponseErrorResult,\n IWebsocketsResponseOkResult\n} from \"~/response\";\nimport type { IWebsocketsTransportSendConnection } from \"~/transport\";\nimport type { IWebsocketsIdentity } from \"~/context\";\n\ntype MiddlewareParams<C extends Context = Context> = Pick<\n IWebsocketsRoutePluginCallableParams<C>,\n \"context\" | \"event\" | \"registry\"\n>;\n\ninterface IWebsocketsRunnerRespondParams\n extends Pick<\n IWebsocketsEventRequestContext,\n \"connectionId\" | \"domainName\" | \"stage\" | \"eventType\"\n > {\n messageId?: string;\n result: IWebsocketsResponseOkResult | IWebsocketsResponseErrorResult;\n}\n\nexport class WebsocketsRunner implements IWebsocketsRunner {\n private readonly context: Context;\n private readonly registry: IWebsocketsConnectionRegistry;\n private readonly validator: IWebsocketsEventValidator;\n private readonly response: IWebsocketsResponse;\n\n public constructor(\n context: Context,\n registry: IWebsocketsConnectionRegistry,\n validator: IWebsocketsEventValidator,\n response: IWebsocketsResponse\n ) {\n this.context = context;\n this.registry = registry;\n this.validator = validator;\n this.response = response;\n }\n\n public async run<T extends IWebsocketsEventData = IWebsocketsEventData>(\n input: IWebsocketsIncomingEvent\n ): Promise<IWebsocketsRunnerResponse> {\n let event: IWebsocketsEvent<T> | undefined;\n try {\n event = await this.validator.validate<T>(input);\n } catch (ex) {\n const result = this.response.error({\n message: \"Validation failed.\",\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n });\n\n const { connectionId, domainName, stage, eventType } = input.requestContext || {};\n let messageId: string | undefined;\n try {\n const body =\n typeof input.body === \"string\" ? input.body : JSON.stringify(input.body || {});\n const json = JSON.parse(body);\n messageId = json.messageId;\n } catch {\n // Do nothing\n }\n if (!connectionId || !stage || !domainName || !eventType) {\n return result;\n }\n\n await this.respond({\n connectionId,\n domainName,\n stage,\n eventType,\n messageId,\n result\n });\n return result;\n }\n\n let result: IWebsocketsResponseOkResult | IWebsocketsResponseErrorResult;\n try {\n result = await this.executeRoute(event);\n } catch (ex) {\n result = this.response.error({\n message: `Route \"${event.requestContext.routeKey}\" action failed.`,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n });\n }\n try {\n await this.respond({\n ...event.requestContext,\n messageId: event.body?.messageId,\n result\n });\n return result;\n } catch (ex) {\n return this.response.error({\n message: \"Failed to respond to the request.\",\n error: {\n message: ex.message,\n code: ex.code,\n data: {\n ...ex.data,\n result\n },\n stack: ex.stack\n }\n });\n }\n }\n\n private getRoutePlugins(route: WebsocketsEventRoute | string): WebsocketsRoutePlugin[] {\n const plugins = this.context.plugins\n .byType<WebsocketsRoutePlugin>(WebsocketsRoutePlugin.type)\n .filter(plugin => {\n return plugin.route === route;\n });\n if (plugins.length === 0) {\n throw new WebinyError(\n `There are no plugins for the route: ${route}.`,\n \"NO_ROUTE_PLUGINS\",\n {\n route\n }\n );\n }\n return plugins;\n }\n\n private async executeRoute(event: IWebsocketsEvent): Promise<IWebsocketsRunnerResponse> {\n /**\n * We will always fetch plugins in reverse order, so that users can override our default ones if necessary.\n */\n const plugins = this.getRoutePlugins(event.requestContext.routeKey).reverse();\n\n const getTenant = () => {\n const tenant = this.context.tenancy.getCurrentTenant();\n return tenant?.id || null;\n };\n const getLocale = (): string | null => {\n const locale = this.context.i18n.getCurrentLocale(\"content\");\n return locale?.code || null;\n };\n\n const getIdentity = (): IWebsocketsIdentity | null => {\n const identity = this.context.security.getIdentity();\n return identity || null;\n };\n\n const action = middleware<MiddlewareParams, IWebsocketsRunnerResponse>(\n plugins.map(plugin => {\n return async (params, next) => {\n return plugin.run({\n registry: params.registry,\n event: params.event,\n context: params.context,\n getTenant,\n getLocale,\n getIdentity,\n response: this.response,\n next\n });\n };\n })\n );\n\n const result = await action({\n event,\n registry: this.registry,\n context: this.context\n });\n if (result) {\n return result;\n }\n const message = \"No response from the route action.\";\n return this.response.error({\n message,\n error: {\n message,\n code: \"NO_RESPONSE\"\n },\n statusCode: 404\n });\n }\n\n private async respond(params: IWebsocketsRunnerRespondParams): Promise<void> {\n const { connectionId, domainName, stage, eventType, result, messageId } = params;\n if (eventType !== WebsocketsEventRequestContextEventType.message) {\n return;\n } else if (!connectionId || !domainName || !stage) {\n const message = \"No connectionId, domainName or stage.\";\n const data = {\n connectionId,\n domainName,\n stage\n };\n console.error(message, JSON.stringify(data));\n throw new WebinyError(message, \"GENERAL_ERROR\", data);\n }\n const connection: IWebsocketsTransportSendConnection = {\n connectionId,\n domainName,\n stage\n };\n\n const dataToSend = {\n ...result,\n messageId\n };\n await this.context.websockets.sendToConnections([connection], dataToSend);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebinyError","WebsocketsEventRequestContextEventType","WebsocketsRoutePlugin","middleware","WebsocketsRunner","constructor","context","registry","validator","response","run","input","event","validate","ex","result","error","message","code","data","stack","connectionId","domainName","stage","eventType","requestContext","messageId","body","JSON","stringify","json","parse","respond","executeRoute","routeKey","getRoutePlugins","route","plugins","byType","type","filter","plugin","length","reverse","getTenant","tenant","tenancy","getCurrentTenant","id","getIdentity","identity","security","action","map","params","next","statusCode","console","connection","dataToSend","websockets","sendToConnections"],"sources":["WebsocketsRunner.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n IWebsocketsEvent,\n IWebsocketsEventData,\n IWebsocketsEventRequestContext,\n IWebsocketsIncomingEvent,\n WebsocketsEventRoute\n} from \"~/handler/types.js\";\nimport { WebsocketsEventRequestContextEventType } from \"~/handler/types.js\";\nimport type { Context } from \"~/types.js\";\nimport type { IWebsocketsEventValidator } from \"~/validator/index.js\";\nimport type {\n IWebsocketsRunner,\n IWebsocketsRunnerResponse\n} from \"./abstractions/IWebsocketsRunner.js\";\nimport type { IWebsocketsRoutePluginCallableParams } from \"~/plugins/index.js\";\nimport { WebsocketsRoutePlugin } from \"~/plugins/index.js\";\nimport { middleware } from \"~/utils/middleware.js\";\nimport type { IWebsocketsConnectionRegistry } from \"~/registry/index.js\";\nimport type {\n IWebsocketsResponse,\n IWebsocketsResponseErrorResult,\n IWebsocketsResponseOkResult\n} from \"~/response/index.js\";\nimport type { IWebsocketsTransportSendConnection } from \"~/transport/index.js\";\nimport type { IWebsocketsIdentity } from \"~/context/index.js\";\n\ntype MiddlewareParams<C extends Context = Context> = Pick<\n IWebsocketsRoutePluginCallableParams<C>,\n \"context\" | \"event\" | \"registry\"\n>;\n\ninterface IWebsocketsRunnerRespondParams\n extends Pick<\n IWebsocketsEventRequestContext,\n \"connectionId\" | \"domainName\" | \"stage\" | \"eventType\"\n > {\n messageId?: string;\n result: IWebsocketsResponseOkResult | IWebsocketsResponseErrorResult;\n}\n\nexport class WebsocketsRunner implements IWebsocketsRunner {\n private readonly context: Context;\n private readonly registry: IWebsocketsConnectionRegistry;\n private readonly validator: IWebsocketsEventValidator;\n private readonly response: IWebsocketsResponse;\n\n public constructor(\n context: Context,\n registry: IWebsocketsConnectionRegistry,\n validator: IWebsocketsEventValidator,\n response: IWebsocketsResponse\n ) {\n this.context = context;\n this.registry = registry;\n this.validator = validator;\n this.response = response;\n }\n\n public async run<T extends IWebsocketsEventData = IWebsocketsEventData>(\n input: IWebsocketsIncomingEvent\n ): Promise<IWebsocketsRunnerResponse> {\n let event: IWebsocketsEvent<T> | undefined;\n try {\n event = await this.validator.validate<T>(input);\n } catch (ex) {\n const result = this.response.error({\n message: \"Validation failed.\",\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n });\n\n const { connectionId, domainName, stage, eventType } = input.requestContext || {};\n let messageId: string | undefined;\n try {\n const body =\n typeof input.body === \"string\" ? input.body : JSON.stringify(input.body || {});\n const json = JSON.parse(body);\n messageId = json.messageId;\n } catch {\n // Do nothing\n }\n if (!connectionId || !stage || !domainName || !eventType) {\n return result;\n }\n\n await this.respond({\n connectionId,\n domainName,\n stage,\n eventType,\n messageId,\n result\n });\n return result;\n }\n\n let result: IWebsocketsResponseOkResult | IWebsocketsResponseErrorResult;\n try {\n result = await this.executeRoute(event);\n } catch (ex) {\n result = this.response.error({\n message: `Route \"${event.requestContext.routeKey}\" action failed.`,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n });\n }\n try {\n await this.respond({\n ...event.requestContext,\n messageId: event.body?.messageId,\n result\n });\n return result;\n } catch (ex) {\n return this.response.error({\n message: \"Failed to respond to the request.\",\n error: {\n message: ex.message,\n code: ex.code,\n data: {\n ...ex.data,\n result\n },\n stack: ex.stack\n }\n });\n }\n }\n\n private getRoutePlugins(route: WebsocketsEventRoute | string): WebsocketsRoutePlugin[] {\n const plugins = this.context.plugins\n .byType<WebsocketsRoutePlugin>(WebsocketsRoutePlugin.type)\n .filter(plugin => {\n return plugin.route === route;\n });\n if (plugins.length === 0) {\n throw new WebinyError(\n `There are no plugins for the route: ${route}.`,\n \"NO_ROUTE_PLUGINS\",\n {\n route\n }\n );\n }\n return plugins;\n }\n\n private async executeRoute(event: IWebsocketsEvent): Promise<IWebsocketsRunnerResponse> {\n /**\n * We will always fetch plugins in reverse order, so that users can override our default ones if necessary.\n */\n const plugins = this.getRoutePlugins(event.requestContext.routeKey).reverse();\n\n const getTenant = () => {\n const tenant = this.context.tenancy.getCurrentTenant();\n return tenant?.id || null;\n };\n\n const getIdentity = (): IWebsocketsIdentity | null => {\n const identity = this.context.security.getIdentity();\n return identity || null;\n };\n\n const action = middleware<MiddlewareParams, IWebsocketsRunnerResponse>(\n plugins.map(plugin => {\n return async (params, next) => {\n return plugin.run({\n registry: params.registry,\n event: params.event,\n context: params.context,\n getTenant,\n getIdentity,\n response: this.response,\n next\n });\n };\n })\n );\n\n const result = await action({\n event,\n registry: this.registry,\n context: this.context\n });\n if (result) {\n return result;\n }\n const message = \"No response from the route action.\";\n return this.response.error({\n message,\n error: {\n message,\n code: \"NO_RESPONSE\"\n },\n statusCode: 404\n });\n }\n\n private async respond(params: IWebsocketsRunnerRespondParams): Promise<void> {\n const { connectionId, domainName, stage, eventType, result, messageId } = params;\n if (eventType !== WebsocketsEventRequestContextEventType.message) {\n return;\n } else if (!connectionId || !domainName || !stage) {\n const message = \"No connectionId, domainName or stage.\";\n const data = {\n connectionId,\n domainName,\n stage\n };\n console.error(message, JSON.stringify(data));\n throw new WebinyError(message, \"GENERAL_ERROR\", data);\n }\n const connection: IWebsocketsTransportSendConnection = {\n connectionId,\n domainName,\n stage\n };\n\n const dataToSend = {\n ...result,\n messageId\n };\n await this.context.websockets.sendToConnections([connection], dataToSend);\n }\n}\n"],"mappings":"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","ignoreList":[]}