@webiny/api-websockets-aws 0.0.0-unstable.0d717d18dd → 0.0.0-unstable.a4f3e4ea8b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/handler/handler.d.ts +2 -0
- package/handler/handler.js +105 -0
- package/handler/handler.js.map +1 -0
- package/handler/headers.d.ts +6 -0
- package/handler/headers.js +27 -0
- package/handler/headers.js.map +1 -0
- package/handler/register.d.ts +1 -0
- package/handler/register.js +16 -0
- package/handler/register.js.map +1 -0
- package/handler/types.d.ts +9 -0
- package/handler/types.js.map +1 -1
- package/index.d.ts +2 -7
- package/index.js +10 -10
- package/index.js.map +1 -1
- package/package.json +15 -16
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createHandler } from "@webiny/handler";
|
|
2
|
+
import { registerDefaultPlugins } from "@webiny/handler-aws/plugins/index.js";
|
|
3
|
+
import { execute } from "@webiny/handler-aws/execute.js";
|
|
4
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
5
|
+
import { WebsocketsResponse, WebsocketsRunner, WebsocketsTransport, createWebsocketsRoutePlugins } from "@webiny/api-websockets/exports/api.js";
|
|
6
|
+
import { getEventValues } from "./headers.js";
|
|
7
|
+
import { AwsWebsocketsEventValidator } from "../validator/AwsWebsocketsEventValidator.js";
|
|
8
|
+
const url = "/webiny-websockets";
|
|
9
|
+
const createPluginsContainer = (plugins)=>{
|
|
10
|
+
if (plugins instanceof PluginsContainer) return plugins;
|
|
11
|
+
return new PluginsContainer(plugins || []);
|
|
12
|
+
};
|
|
13
|
+
const handler_createHandler = (params)=>{
|
|
14
|
+
const plugins = createPluginsContainer(params.plugins);
|
|
15
|
+
plugins.register(...createWebsocketsRoutePlugins());
|
|
16
|
+
const validator = new AwsWebsocketsEventValidator();
|
|
17
|
+
return async (event)=>{
|
|
18
|
+
const app = createHandler({
|
|
19
|
+
...params,
|
|
20
|
+
plugins,
|
|
21
|
+
options: {
|
|
22
|
+
logger: true === params.debug,
|
|
23
|
+
...params.options || {}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
registerDefaultPlugins(app.webiny);
|
|
27
|
+
await app.register(async (wsApp)=>{
|
|
28
|
+
wsApp.setErrorHandler(async (error, _, reply)=>{
|
|
29
|
+
app.__webiny_raw_result = {
|
|
30
|
+
error: {
|
|
31
|
+
message: error.message,
|
|
32
|
+
code: error.code,
|
|
33
|
+
data: error.data
|
|
34
|
+
},
|
|
35
|
+
statusCode: 200
|
|
36
|
+
};
|
|
37
|
+
return reply.send({});
|
|
38
|
+
});
|
|
39
|
+
wsApp.post(url, async (_, reply)=>{
|
|
40
|
+
const { response } = params;
|
|
41
|
+
const context = app.webiny;
|
|
42
|
+
const responseObj = response || context.container.resolve(WebsocketsResponse);
|
|
43
|
+
const runner = new WebsocketsRunner(context, responseObj);
|
|
44
|
+
let validatedEvent;
|
|
45
|
+
try {
|
|
46
|
+
validatedEvent = await validator.validate(event);
|
|
47
|
+
} catch (ex) {
|
|
48
|
+
const errorResult = responseObj.error({
|
|
49
|
+
message: "Validation failed.",
|
|
50
|
+
error: {
|
|
51
|
+
message: ex.message,
|
|
52
|
+
code: ex.code,
|
|
53
|
+
data: ex.data,
|
|
54
|
+
stack: ex.stack
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const { connectionId, domainName, stage, eventType } = event.requestContext || {};
|
|
58
|
+
if (connectionId && domainName && stage && "MESSAGE" === eventType) try {
|
|
59
|
+
const transport = context.container.resolve(WebsocketsTransport);
|
|
60
|
+
const endpoint = `https://${domainName}/${stage}`;
|
|
61
|
+
await transport.send([
|
|
62
|
+
{
|
|
63
|
+
connectionId,
|
|
64
|
+
endpoint
|
|
65
|
+
}
|
|
66
|
+
], errorResult);
|
|
67
|
+
} catch {}
|
|
68
|
+
app.__webiny_raw_result = {
|
|
69
|
+
statusCode: errorResult.statusCode,
|
|
70
|
+
headers: {
|
|
71
|
+
"sec-websocket-protocol": "webiny-ws-v1"
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
return reply.send();
|
|
75
|
+
}
|
|
76
|
+
const result = await runner.run(validatedEvent);
|
|
77
|
+
app.__webiny_raw_result = {
|
|
78
|
+
statusCode: result.statusCode,
|
|
79
|
+
headers: {
|
|
80
|
+
"sec-websocket-protocol": "webiny-ws-v1"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return reply.send();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
const { tenant, endpoint, token } = getEventValues(event);
|
|
87
|
+
const headers = {
|
|
88
|
+
Authorization: `Bearer ${token}`,
|
|
89
|
+
["x-tenant"]: tenant,
|
|
90
|
+
["x-webiny-cms-endpoint"]: endpoint,
|
|
91
|
+
...event.headers
|
|
92
|
+
};
|
|
93
|
+
return execute({
|
|
94
|
+
app,
|
|
95
|
+
url: url,
|
|
96
|
+
payload: {
|
|
97
|
+
...event,
|
|
98
|
+
headers
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
export { handler_createHandler as createHandler };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler/handler.js","sources":["../../src/handler/handler.ts"],"sourcesContent":["import type WebinyError from \"@webiny/error\";\nimport { createHandler as createBaseHandler } from \"@webiny/handler\";\nimport { registerDefaultPlugins } from \"@webiny/handler-aws/plugins/index.js\";\nimport { execute } from \"@webiny/handler-aws/execute.js\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createWebsocketsRoutePlugins,\n WebsocketsRunner,\n WebsocketsTransport,\n WebsocketsResponse\n} from \"@webiny/api-websockets/exports/api.js\";\nimport type { DbContext } from \"@webiny/handler-db/types.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\n\ntype Context = DbContext & ApiCoreContext;\nimport type { PluginCollection } from \"@webiny/plugins/types.js\";\nimport type { HandlerCallable, HandlerParams } from \"./types.js\";\nimport { getEventValues } from \"./headers.js\";\nimport { AwsWebsocketsEventValidator } from \"~/validator/AwsWebsocketsEventValidator.js\";\n\nconst url = \"/webiny-websockets\";\n\nconst createPluginsContainer = (\n plugins?: PluginsContainer | PluginCollection\n): PluginsContainer => {\n if (plugins instanceof PluginsContainer) {\n return plugins;\n }\n return new PluginsContainer(plugins || []);\n};\n\nexport const createHandler = (params: HandlerParams): HandlerCallable => {\n const plugins = createPluginsContainer(params.plugins);\n plugins.register(...createWebsocketsRoutePlugins());\n\n const validator = new AwsWebsocketsEventValidator();\n\n return async event => {\n const app = createBaseHandler({\n ...params,\n plugins,\n options: {\n logger: params.debug === true,\n ...(params.options || {})\n }\n });\n\n registerDefaultPlugins(app.webiny);\n\n await app.register(async wsApp => {\n wsApp.setErrorHandler<WebinyError>(async (error, _, reply) => {\n app.__webiny_raw_result = {\n error: {\n message: error.message,\n code: error.code,\n data: error.data\n },\n statusCode: 200\n };\n return reply.send({});\n });\n\n wsApp.post(url, async (_, reply) => {\n const { response } = params;\n const context = app.webiny as Context;\n\n const responseObj = response || context.container.resolve(WebsocketsResponse);\n const runner = new WebsocketsRunner(context, responseObj);\n\n let validatedEvent;\n try {\n validatedEvent = await validator.validate(event);\n } catch (ex) {\n const errorResult = responseObj.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 } =\n event.requestContext || {};\n if (connectionId && domainName && stage && eventType === \"MESSAGE\") {\n try {\n const transport = context.container.resolve(WebsocketsTransport);\n const endpoint = `https://${domainName}/${stage}`;\n await transport.send([{ connectionId, endpoint }], errorResult);\n } catch {\n /* best effort. */\n }\n }\n\n app.__webiny_raw_result = {\n statusCode: errorResult.statusCode,\n headers: {\n \"sec-websocket-protocol\": \"webiny-ws-v1\"\n }\n };\n return reply.send();\n }\n\n const result = await runner.run(validatedEvent);\n\n app.__webiny_raw_result = {\n statusCode: result.statusCode,\n headers: {\n \"sec-websocket-protocol\": \"webiny-ws-v1\"\n }\n };\n\n return reply.send();\n });\n });\n\n const { tenant, endpoint, token } = getEventValues(event);\n\n const headers = {\n Authorization: `Bearer ${token}`,\n [\"x-tenant\"]: tenant,\n [\"x-webiny-cms-endpoint\"]: endpoint,\n ...event.headers\n };\n\n return execute({\n app,\n url,\n payload: {\n ...event,\n headers\n }\n });\n };\n};\n"],"names":["url","createPluginsContainer","plugins","PluginsContainer","createHandler","params","createWebsocketsRoutePlugins","validator","AwsWebsocketsEventValidator","event","app","createBaseHandler","registerDefaultPlugins","wsApp","error","_","reply","response","context","responseObj","WebsocketsResponse","runner","WebsocketsRunner","validatedEvent","ex","errorResult","connectionId","domainName","stage","eventType","transport","WebsocketsTransport","endpoint","result","tenant","token","getEventValues","headers","execute"],"mappings":";;;;;;;AAoBA,MAAMA,MAAM;AAEZ,MAAMC,yBAAyB,CAC3BC;IAEA,IAAIA,mBAAmBC,kBACnB,OAAOD;IAEX,OAAO,IAAIC,iBAAiBD,WAAW,EAAE;AAC7C;AAEO,MAAME,wBAAgB,CAACC;IAC1B,MAAMH,UAAUD,uBAAuBI,OAAO,OAAO;IACrDH,QAAQ,QAAQ,IAAII;IAEpB,MAAMC,YAAY,IAAIC;IAEtB,OAAO,OAAMC;QACT,MAAMC,MAAMC,cAAkB;YAC1B,GAAGN,MAAM;YACTH;YACA,SAAS;gBACL,QAAQG,AAAiB,SAAjBA,OAAO,KAAK;gBACpB,GAAIA,OAAO,OAAO,IAAI,CAAC,CAAC;YAC5B;QACJ;QAEAO,uBAAuBF,IAAI,MAAM;QAEjC,MAAMA,IAAI,QAAQ,CAAC,OAAMG;YACrBA,MAAM,eAAe,CAAc,OAAOC,OAAOC,GAAGC;gBAChDN,IAAI,mBAAmB,GAAG;oBACtB,OAAO;wBACH,SAASI,MAAM,OAAO;wBACtB,MAAMA,MAAM,IAAI;wBAChB,MAAMA,MAAM,IAAI;oBACpB;oBACA,YAAY;gBAChB;gBACA,OAAOE,MAAM,IAAI,CAAC,CAAC;YACvB;YAEAH,MAAM,IAAI,CAACb,KAAK,OAAOe,GAAGC;gBACtB,MAAM,EAAEC,QAAQ,EAAE,GAAGZ;gBACrB,MAAMa,UAAUR,IAAI,MAAM;gBAE1B,MAAMS,cAAcF,YAAYC,QAAQ,SAAS,CAAC,OAAO,CAACE;gBAC1D,MAAMC,SAAS,IAAIC,iBAAiBJ,SAASC;gBAE7C,IAAII;gBACJ,IAAI;oBACAA,iBAAiB,MAAMhB,UAAU,QAAQ,CAACE;gBAC9C,EAAE,OAAOe,IAAI;oBACT,MAAMC,cAAcN,YAAY,KAAK,CAAC;wBAClC,SAAS;wBACT,OAAO;4BACH,SAASK,GAAG,OAAO;4BACnB,MAAMA,GAAG,IAAI;4BACb,MAAMA,GAAG,IAAI;4BACb,OAAOA,GAAG,KAAK;wBACnB;oBACJ;oBAEA,MAAM,EAAEE,YAAY,EAAEC,UAAU,EAAEC,KAAK,EAAEC,SAAS,EAAE,GAChDpB,MAAM,cAAc,IAAI,CAAC;oBAC7B,IAAIiB,gBAAgBC,cAAcC,SAASC,AAAc,cAAdA,WACvC,IAAI;wBACA,MAAMC,YAAYZ,QAAQ,SAAS,CAAC,OAAO,CAACa;wBAC5C,MAAMC,WAAW,CAAC,QAAQ,EAAEL,WAAW,CAAC,EAAEC,OAAO;wBACjD,MAAME,UAAU,IAAI,CAAC;4BAAC;gCAAEJ;gCAAcM;4BAAS;yBAAE,EAAEP;oBACvD,EAAE,OAAM,CAER;oBAGJf,IAAI,mBAAmB,GAAG;wBACtB,YAAYe,YAAY,UAAU;wBAClC,SAAS;4BACL,0BAA0B;wBAC9B;oBACJ;oBACA,OAAOT,MAAM,IAAI;gBACrB;gBAEA,MAAMiB,SAAS,MAAMZ,OAAO,GAAG,CAACE;gBAEhCb,IAAI,mBAAmB,GAAG;oBACtB,YAAYuB,OAAO,UAAU;oBAC7B,SAAS;wBACL,0BAA0B;oBAC9B;gBACJ;gBAEA,OAAOjB,MAAM,IAAI;YACrB;QACJ;QAEA,MAAM,EAAEkB,MAAM,EAAEF,QAAQ,EAAEG,KAAK,EAAE,GAAGC,eAAe3B;QAEnD,MAAM4B,UAAU;YACZ,eAAe,CAAC,OAAO,EAAEF,OAAO;YAChC,CAAC,WAAW,EAAED;YACd,CAAC,wBAAwB,EAAEF;YAC3B,GAAGvB,MAAM,OAAO;QACpB;QAEA,OAAO6B,QAAQ;YACX5B;YACAV,KAAAA;YACA,SAAS;gBACL,GAAGS,KAAK;gBACR4B;YACJ;QACJ;IACJ;AACJ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const getEventBody = (event)=>{
|
|
2
|
+
if (!event.body) return {};
|
|
3
|
+
if ("object" == typeof event.body) return event.body;
|
|
4
|
+
if ("string" == typeof event.body) try {
|
|
5
|
+
return JSON.parse(event.body);
|
|
6
|
+
} catch (ex) {
|
|
7
|
+
console.log(ex.message);
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
10
|
+
console.log("Unexpected event.body type:", typeof event.body);
|
|
11
|
+
return {};
|
|
12
|
+
};
|
|
13
|
+
const getToken = (body, event)=>body?.token || event.queryStringParameters?.token || null;
|
|
14
|
+
const getTenant = (body, event)=>body?.tenant || event.queryStringParameters?.tenant || "root";
|
|
15
|
+
const getEventValues = (event)=>{
|
|
16
|
+
const body = getEventBody(event);
|
|
17
|
+
const token = getToken(body, event);
|
|
18
|
+
const tenant = getTenant(body, event);
|
|
19
|
+
return {
|
|
20
|
+
tenant,
|
|
21
|
+
token,
|
|
22
|
+
endpoint: "manage"
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export { getEventValues };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler/headers.js","sources":["../../src/handler/headers.ts"],"sourcesContent":["import type { WebsocketsRunner } from \"@webiny/api-websockets/exports/api.js\";\nimport type { IAwsWebsocketsIncomingEvent } from \"~/handler/types.js\";\n\nconst getEventBody = (event: IAwsWebsocketsIncomingEvent): WebsocketsRunner.EventData => {\n if (!event.body) {\n return {};\n } else if (typeof event.body === \"object\") {\n return event.body;\n } else if (typeof event.body === \"string\") {\n try {\n return JSON.parse(event.body);\n } catch (ex) {\n console.log(ex.message);\n return {};\n }\n }\n console.log(\"Unexpected event.body type:\", typeof event.body);\n return {};\n};\n\nconst getToken = (\n body: WebsocketsRunner.EventData,\n event: IAwsWebsocketsIncomingEvent\n): string | null => {\n return body?.token || event.queryStringParameters?.token || null;\n};\n\nconst getTenant = (\n body: WebsocketsRunner.EventData,\n event: IAwsWebsocketsIncomingEvent\n): string => {\n return body?.tenant || event.queryStringParameters?.tenant || \"root\";\n};\n\nexport const getEventValues = (event: IAwsWebsocketsIncomingEvent) => {\n const body = getEventBody(event);\n\n const token = getToken(body, event);\n const tenant = getTenant(body, event);\n return {\n tenant,\n token,\n endpoint: \"manage\"\n };\n};\n"],"names":["getEventBody","event","JSON","ex","console","getToken","body","getTenant","getEventValues","token","tenant"],"mappings":"AAGA,MAAMA,eAAe,CAACC;IAClB,IAAI,CAACA,MAAM,IAAI,EACX,OAAO,CAAC;IACL,IAAI,AAAsB,YAAtB,OAAOA,MAAM,IAAI,EACxB,OAAOA,MAAM,IAAI;IACd,IAAI,AAAsB,YAAtB,OAAOA,MAAM,IAAI,EACxB,IAAI;QACA,OAAOC,KAAK,KAAK,CAACD,MAAM,IAAI;IAChC,EAAE,OAAOE,IAAI;QACTC,QAAQ,GAAG,CAACD,GAAG,OAAO;QACtB,OAAO,CAAC;IACZ;IAEJC,QAAQ,GAAG,CAAC,+BAA+B,OAAOH,MAAM,IAAI;IAC5D,OAAO,CAAC;AACZ;AAEA,MAAMI,WAAW,CACbC,MACAL,QAEOK,MAAM,SAASL,MAAM,qBAAqB,EAAE,SAAS;AAGhE,MAAMM,YAAY,CACdD,MACAL,QAEOK,MAAM,UAAUL,MAAM,qBAAqB,EAAE,UAAU;AAG3D,MAAMO,iBAAiB,CAACP;IAC3B,MAAMK,OAAON,aAAaC;IAE1B,MAAMQ,QAAQJ,SAASC,MAAML;IAC7B,MAAMS,SAASH,UAAUD,MAAML;IAC/B,OAAO;QACHS;QACAD;QACA,UAAU;IACd;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registry } from "@webiny/handler-aws/registry.js";
|
|
2
|
+
import { createSourceHandler } from "@webiny/handler-aws";
|
|
3
|
+
const handler = createSourceHandler({
|
|
4
|
+
name: "handler-webiny-websockets",
|
|
5
|
+
canUse: (event)=>{
|
|
6
|
+
const { routeKey, connectionId, eventType } = event.requestContext || {};
|
|
7
|
+
return !!routeKey && !!connectionId && !!eventType;
|
|
8
|
+
},
|
|
9
|
+
handle: async ({ params, event, context })=>{
|
|
10
|
+
const { createHandler } = await import("./handler.js");
|
|
11
|
+
return createHandler(params)(event, context);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
registry.register(handler);
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler/register.js","sources":["../../src/handler/register.ts"],"sourcesContent":["import { registry } from \"@webiny/handler-aws/registry.js\";\nimport { createSourceHandler } from \"@webiny/handler-aws\";\nimport type { HandlerParams, IAwsWebsocketsIncomingEvent } from \"./types.js\";\n\nconst handler = createSourceHandler<IAwsWebsocketsIncomingEvent, HandlerParams>({\n name: \"handler-webiny-websockets\",\n canUse: event => {\n const { routeKey, connectionId, eventType } = event.requestContext || {};\n return !!routeKey && !!connectionId && !!eventType;\n },\n handle: async ({ params, event, context }) => {\n const { createHandler } = await import(\n /* webpackChunkName: \"SocketsHandler\" */\n \"./handler.js\"\n );\n return createHandler(params)(event, context);\n }\n});\n\nregistry.register(handler);\n"],"names":["handler","createSourceHandler","event","routeKey","connectionId","eventType","params","context","createHandler","registry"],"mappings":";;AAIA,MAAMA,UAAUC,oBAAgE;IAC5E,MAAM;IACN,QAAQC,CAAAA;QACJ,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,SAAS,EAAE,GAAGH,MAAM,cAAc,IAAI,CAAC;QACvE,OAAO,CAAC,CAACC,YAAY,CAAC,CAACC,gBAAgB,CAAC,CAACC;IAC7C;IACA,QAAQ,OAAO,EAAEC,MAAM,EAAEJ,KAAK,EAAEK,OAAO,EAAE;QACrC,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAM,MAAM,CAAN;QAIhC,OAAOA,cAAcF,QAAQJ,OAAOK;IACxC;AACJ;AAEAE,SAAS,QAAQ,CAACT"}
|
package/handler/types.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import type { HandlerFactoryParams } from "@webiny/handler-aws/types.js";
|
|
2
|
+
import type { WebsocketsResponse } from "@webiny/api-websockets/exports/api.js";
|
|
3
|
+
import type { APIGatewayProxyResult, Context as LambdaContext } from "@webiny/aws-sdk/types/index.js";
|
|
1
4
|
import type { WebsocketsRunner } from "@webiny/api-websockets/exports/api.js";
|
|
2
5
|
import type { GenericRecord } from "@webiny/api/types.js";
|
|
3
6
|
import type { PartialDeep } from "type-fest";
|
|
7
|
+
export interface HandlerCallable {
|
|
8
|
+
(event: IAwsWebsocketsIncomingEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;
|
|
9
|
+
}
|
|
10
|
+
export interface HandlerParams extends HandlerFactoryParams {
|
|
11
|
+
response?: WebsocketsResponse.Interface;
|
|
12
|
+
}
|
|
4
13
|
export declare enum WebsocketsEventRoute {
|
|
5
14
|
connect = "$connect",
|
|
6
15
|
disconnect = "$disconnect",
|
package/handler/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler/types.js","sources":["../../src/handler/types.ts"],"sourcesContent":["import type { WebsocketsRunner } from \"@webiny/api-websockets/exports/api.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { PartialDeep } from \"type-fest\";\n\nexport enum WebsocketsEventRoute {\n connect = \"$connect\",\n disconnect = \"$disconnect\",\n default = \"$default\"\n}\n\nexport enum WebsocketsEventRequestContextEventType {\n message = \"MESSAGE\",\n connect = \"CONNECT\",\n disconnect = \"DISCONNECT\"\n}\n\nexport interface IAwsWebsocketsEventRequestContext {\n connectionId: string;\n connectedAt: number;\n domainName: string;\n eventType: WebsocketsEventRequestContextEventType;\n routeKey: WebsocketsEventRoute | string;\n stage: string;\n}\n\nexport interface IAwsWebsocketsEventHeaders {\n \"Accept-Encoding\"?: string;\n \"Accept-Language\"?: string;\n \"Cache-Control\"?: string;\n Host?: string;\n Origin?: string;\n Pragma?: string;\n \"Sec-WebSocket-Extensions\"?: string;\n \"Sec-WebSocket-Key\"?: string;\n \"Sec-WebSocket-Version\"?: string;\n \"Sec-WebSocket-Protocol\"?: string;\n \"User-Agent\"?: string;\n \"X-Amzn-Trace-Id\"?: string;\n \"X-Forwarded-For\"?: string;\n \"X-Forwarded-Port\"?: `${number}`;\n \"X-Forwarded-Proto\"?: \"https\" | \"http\";\n [\"x-tenant\"]?: string;\n [\"x-webiny-cms-endpoint\"]?: string;\n}\n\nexport interface IAwsWebsocketsEventQueryStringParameters {\n tenant?: string;\n token?: string;\n}\n\nexport interface IAwsWebsocketsEvent<\n T extends WebsocketsRunner.EventData = WebsocketsRunner.EventData\n> {\n headers?: IAwsWebsocketsEventHeaders;\n queryStringParameters?: IAwsWebsocketsEventQueryStringParameters;\n requestContext: IAwsWebsocketsEventRequestContext;\n body?: T;\n}\n\nexport interface IAwsWebsocketsIncomingEvent extends PartialDeep<\n Omit<IAwsWebsocketsEvent, \"body\">\n> {\n body?: string | GenericRecord;\n}\n"],"names":["WebsocketsEventRoute","WebsocketsEventRequestContextEventType"],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler/types.js","sources":["../../src/handler/types.ts"],"sourcesContent":["import type { HandlerFactoryParams } from \"@webiny/handler-aws/types.js\";\nimport type { WebsocketsResponse } from \"@webiny/api-websockets/exports/api.js\";\nimport type {\n APIGatewayProxyResult,\n Context as LambdaContext\n} from \"@webiny/aws-sdk/types/index.js\";\nimport type { WebsocketsRunner } from \"@webiny/api-websockets/exports/api.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { PartialDeep } from \"type-fest\";\n\nexport interface HandlerCallable {\n (event: IAwsWebsocketsIncomingEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;\n}\n\nexport interface HandlerParams extends HandlerFactoryParams {\n response?: WebsocketsResponse.Interface;\n}\n\nexport enum WebsocketsEventRoute {\n connect = \"$connect\",\n disconnect = \"$disconnect\",\n default = \"$default\"\n}\n\nexport enum WebsocketsEventRequestContextEventType {\n message = \"MESSAGE\",\n connect = \"CONNECT\",\n disconnect = \"DISCONNECT\"\n}\n\nexport interface IAwsWebsocketsEventRequestContext {\n connectionId: string;\n connectedAt: number;\n domainName: string;\n eventType: WebsocketsEventRequestContextEventType;\n routeKey: WebsocketsEventRoute | string;\n stage: string;\n}\n\nexport interface IAwsWebsocketsEventHeaders {\n \"Accept-Encoding\"?: string;\n \"Accept-Language\"?: string;\n \"Cache-Control\"?: string;\n Host?: string;\n Origin?: string;\n Pragma?: string;\n \"Sec-WebSocket-Extensions\"?: string;\n \"Sec-WebSocket-Key\"?: string;\n \"Sec-WebSocket-Version\"?: string;\n \"Sec-WebSocket-Protocol\"?: string;\n \"User-Agent\"?: string;\n \"X-Amzn-Trace-Id\"?: string;\n \"X-Forwarded-For\"?: string;\n \"X-Forwarded-Port\"?: `${number}`;\n \"X-Forwarded-Proto\"?: \"https\" | \"http\";\n [\"x-tenant\"]?: string;\n [\"x-webiny-cms-endpoint\"]?: string;\n}\n\nexport interface IAwsWebsocketsEventQueryStringParameters {\n tenant?: string;\n token?: string;\n}\n\nexport interface IAwsWebsocketsEvent<\n T extends WebsocketsRunner.EventData = WebsocketsRunner.EventData\n> {\n headers?: IAwsWebsocketsEventHeaders;\n queryStringParameters?: IAwsWebsocketsEventQueryStringParameters;\n requestContext: IAwsWebsocketsEventRequestContext;\n body?: T;\n}\n\nexport interface IAwsWebsocketsIncomingEvent extends PartialDeep<\n Omit<IAwsWebsocketsEvent, \"body\">\n> {\n body?: string | GenericRecord;\n}\n"],"names":["WebsocketsEventRoute","WebsocketsEventRequestContextEventType"],"mappings":"AAkBO,IAAKA,6BAAoBA,WAAAA,GAAAA,SAApBA,oBAAoB;;;;WAApBA;;AAML,IAAKC,+CAAsCA,WAAAA,GAAAA,SAAtCA,sCAAsC;;;;WAAtCA"}
|
package/index.d.ts
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
name: string;
|
|
4
|
-
register(container: import("@webiny/di").Container): void;
|
|
5
|
-
};
|
|
6
|
-
/** @deprecated use WebsocketsAwsFeature.register(container) */
|
|
7
|
-
export declare const createAwsWebsockets: () => never[];
|
|
1
|
+
import "./handler/register.js";
|
|
2
|
+
export declare const createAwsWebsockets: () => import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>[];
|
package/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./handler/register.js";
|
|
2
|
+
import { createRegisterExtensionPlugin } from "@webiny/handler";
|
|
2
3
|
import { AwsWebsocketsTransport } from "./transport/AwsWebsocketsTransport.js";
|
|
3
|
-
const WebsocketsAwsFeature = createFeature({
|
|
4
|
-
name: "WebsocketsAws",
|
|
5
|
-
register (container) {
|
|
6
|
-
container.register(AwsWebsocketsTransport);
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
4
|
const createAwsWebsockets = ()=>{
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const plugin = createRegisterExtensionPlugin((context)=>{
|
|
6
|
+
context.container.register(AwsWebsocketsTransport).inSingletonScope();
|
|
7
|
+
});
|
|
8
|
+
plugin.name = "websockets.aws.transport";
|
|
9
|
+
return [
|
|
10
|
+
plugin
|
|
11
|
+
];
|
|
12
12
|
};
|
|
13
|
-
export {
|
|
13
|
+
export { createAwsWebsockets };
|
|
14
14
|
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import \"./handler/register.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { AwsWebsocketsTransport } from \"~/transport/AwsWebsocketsTransport.js\";\n\nexport const createAwsWebsockets = () => {\n const plugin = createRegisterExtensionPlugin(context => {\n context.container.register(AwsWebsocketsTransport).inSingletonScope();\n });\n plugin.name = \"websockets.aws.transport\";\n return [plugin];\n};\n"],"names":["createAwsWebsockets","plugin","createRegisterExtensionPlugin","context","AwsWebsocketsTransport"],"mappings":";;;AAIO,MAAMA,sBAAsB;IAC/B,MAAMC,SAASC,8BAA8BC,CAAAA;QACzCA,QAAQ,SAAS,CAAC,QAAQ,CAACC,wBAAwB,gBAAgB;IACvE;IACAH,OAAO,IAAI,GAAG;IACd,OAAO;QAACA;KAAO;AACnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-websockets-aws",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.a4f3e4ea8b",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,25 +16,24 @@
|
|
|
16
16
|
},
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@webiny/api": "0.0.0-unstable.
|
|
20
|
-
"@webiny/api-websockets": "0.0.0-unstable.
|
|
21
|
-
"@webiny/aws-sdk": "0.0.0-unstable.
|
|
22
|
-
"@webiny/
|
|
23
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
24
|
-
"@webiny/
|
|
19
|
+
"@webiny/api": "0.0.0-unstable.a4f3e4ea8b",
|
|
20
|
+
"@webiny/api-websockets": "0.0.0-unstable.a4f3e4ea8b",
|
|
21
|
+
"@webiny/aws-sdk": "0.0.0-unstable.a4f3e4ea8b",
|
|
22
|
+
"@webiny/error": "0.0.0-unstable.a4f3e4ea8b",
|
|
23
|
+
"@webiny/handler": "0.0.0-unstable.a4f3e4ea8b",
|
|
24
|
+
"@webiny/handler-aws": "0.0.0-unstable.a4f3e4ea8b",
|
|
25
|
+
"@webiny/plugins": "0.0.0-unstable.a4f3e4ea8b",
|
|
26
|
+
"@webiny/utils": "0.0.0-unstable.a4f3e4ea8b",
|
|
25
27
|
"type-fest": "5.8.0",
|
|
26
28
|
"zod": "4.4.3"
|
|
27
29
|
},
|
|
28
30
|
"devDependencies": {
|
|
29
|
-
"@webiny/api-core": "0.0.0-unstable.
|
|
30
|
-
"@webiny/api-
|
|
31
|
-
"@webiny/
|
|
32
|
-
"@webiny/
|
|
33
|
-
"@webiny/
|
|
34
|
-
"@webiny/
|
|
35
|
-
"@webiny/event-handler-core": "0.0.0-unstable.0d717d18dd",
|
|
36
|
-
"@webiny/project-utils": "0.0.0-unstable.0d717d18dd",
|
|
37
|
-
"@webiny/wcp": "0.0.0-unstable.0d717d18dd",
|
|
31
|
+
"@webiny/api-core": "0.0.0-unstable.a4f3e4ea8b",
|
|
32
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.a4f3e4ea8b",
|
|
33
|
+
"@webiny/build-tools": "0.0.0-unstable.a4f3e4ea8b",
|
|
34
|
+
"@webiny/handler-db": "0.0.0-unstable.a4f3e4ea8b",
|
|
35
|
+
"@webiny/handler-graphql": "0.0.0-unstable.a4f3e4ea8b",
|
|
36
|
+
"@webiny/project-utils": "0.0.0-unstable.a4f3e4ea8b",
|
|
38
37
|
"graphql": "16.14.2",
|
|
39
38
|
"rimraf": "6.1.3",
|
|
40
39
|
"type-fest": "5.8.0",
|