@webiny/handler-aws 0.0.0-unstable.a4637c5ce6 → 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/README.md +10 -14
- package/createHandler.d.ts +1 -1
- package/createHandler.js +20 -26
- package/createHandler.js.map +1 -1
- package/dynamodb/index.d.ts +3 -3
- package/dynamodb/index.js +39 -76
- package/dynamodb/index.js.map +1 -1
- package/dynamodb/plugins/DynamoDBEventHandler.d.ts +4 -4
- package/dynamodb/plugins/DynamoDBEventHandler.js +11 -18
- package/dynamodb/plugins/DynamoDBEventHandler.js.map +1 -1
- package/dynamodb/register.js +13 -25
- package/dynamodb/register.js.map +1 -1
- package/eventBridge/index.d.ts +3 -3
- package/eventBridge/index.js +39 -76
- package/eventBridge/index.js.map +1 -1
- package/eventBridge/plugins/EventBridgeEventHandler.d.ts +4 -4
- package/eventBridge/plugins/EventBridgeEventHandler.js +11 -18
- package/eventBridge/plugins/EventBridgeEventHandler.js.map +1 -1
- package/eventBridge/register.d.ts +1 -1
- package/eventBridge/register.js +8 -18
- package/eventBridge/register.js.map +1 -1
- package/execute.d.ts +1 -1
- package/execute.js +53 -68
- package/execute.js.map +1 -1
- package/gateway/index.d.ts +2 -2
- package/gateway/index.js +41 -83
- package/gateway/index.js.map +1 -1
- package/gateway/register.js +8 -18
- package/gateway/register.js.map +1 -1
- package/index.d.ts +17 -17
- package/index.js +17 -374
- package/package.json +22 -19
- package/plugins/index.d.ts +1 -1
- package/plugins/index.js +3 -10
- package/plugins/index.js.map +1 -1
- package/raw/index.d.ts +3 -3
- package/raw/index.js +42 -86
- package/raw/index.js.map +1 -1
- package/raw/plugins/RawEventHandler.d.ts +3 -3
- package/raw/plugins/RawEventHandler.js +12 -30
- package/raw/plugins/RawEventHandler.js.map +1 -1
- package/registry.d.ts +2 -2
- package/registry.js +17 -38
- package/registry.js.map +1 -1
- package/s3/index.d.ts +3 -3
- package/s3/index.js +39 -76
- package/s3/index.js.map +1 -1
- package/s3/plugins/S3EventHandler.d.ts +4 -4
- package/s3/plugins/S3EventHandler.js +11 -18
- package/s3/plugins/S3EventHandler.js.map +1 -1
- package/s3/register.d.ts +1 -1
- package/s3/register.js +12 -22
- package/s3/register.js.map +1 -1
- package/sns/index.d.ts +3 -3
- package/sns/index.js +39 -76
- package/sns/index.js.map +1 -1
- package/sns/plugins/SNSEventHandler.d.ts +4 -4
- package/sns/plugins/SNSEventHandler.js +11 -18
- package/sns/plugins/SNSEventHandler.js.map +1 -1
- package/sns/register.js +12 -22
- package/sns/register.js.map +1 -1
- package/sourceHandler.d.ts +2 -2
- package/sourceHandler.js +2 -10
- package/sourceHandler.js.map +1 -1
- package/sqs/index.d.ts +3 -3
- package/sqs/index.js +40 -79
- package/sqs/index.js.map +1 -1
- package/sqs/plugins/SQSEventHandler.d.ts +4 -4
- package/sqs/plugins/SQSEventHandler.js +11 -18
- package/sqs/plugins/SQSEventHandler.js.map +1 -1
- package/sqs/register.js +13 -25
- package/sqs/register.js.map +1 -1
- package/types.d.ts +3 -3
- package/types.js +7 -34
- package/types.js.map +1 -1
- package/utils/composedHandler.d.ts +1 -1
- package/utils/composedHandler.js +6 -22
- package/utils/composedHandler.js.map +1 -1
- package/utils/index.d.ts +2 -2
- package/utils/index.js +2 -29
- package/utils/timer/CustomTimer.js +8 -14
- package/utils/timer/CustomTimer.js.map +1 -1
- package/utils/timer/Timer.d.ts +1 -1
- package/utils/timer/Timer.js +11 -19
- package/utils/timer/Timer.js.map +1 -1
- package/utils/timer/abstractions/ITimer.js +0 -7
- package/utils/timer/factory.d.ts +2 -2
- package/utils/timer/factory.js +9 -17
- package/utils/timer/factory.js.map +1 -1
- package/utils/timer/index.d.ts +4 -4
- package/utils/timer/index.js +3 -51
- package/index.js.map +0 -1
- package/plugins/handlerClient.d.ts +0 -2
- package/plugins/handlerClient.js +0 -53
- package/plugins/handlerClient.js.map +0 -1
- package/utils/index.js.map +0 -1
- package/utils/timer/abstractions/ITimer.js.map +0 -1
- package/utils/timer/index.js.map +0 -1
package/sns/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sns/index.js","sources":["../../src/sns/index.ts"],"sourcesContent":["import type {\n APIGatewayProxyResult,\n SNSEvent,\n Context as LambdaContext\n} from \"@webiny/aws-sdk/types/index.js\";\nimport { createHandler as createBaseHandler } from \"@webiny/handler\";\nimport { registerDefaultPlugins } from \"~/plugins/index.js\";\nimport type { SNSEventHandlerCallableParams } from \"./plugins/SNSEventHandler.js\";\nimport { SNSEventHandler } from \"./plugins/SNSEventHandler.js\";\nimport { execute } from \"~/execute.js\";\nimport type { HandlerFactoryParams } from \"~/types.js\";\n/**\n * We need a class, not an interface exported from types.\n */\n// @ts-expect-error\nimport Reply from \"fastify/lib/reply.js\";\nimport { createComposedHandler } from \"~/utils/composedHandler.js\";\n\nexport * from \"./plugins/SNSEventHandler.js\";\n\nexport interface HandlerCallable {\n (event: SNSEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;\n}\n\nexport type HandlerParams = HandlerFactoryParams;\n\nconst url = \"/webiny-sns-event\";\n\nexport const createHandler = (params: HandlerParams): HandlerCallable => {\n return async (event, context) => {\n const app = createBaseHandler({\n ...params,\n options: {\n logger: params.debug === true,\n ...(params.options || {})\n }\n });\n /**\n * We always must add our default plugins to the app.\n */\n registerDefaultPlugins(app.webiny);\n /**\n * There must be an event plugin for this handler to work.\n */\n const plugins = app.webiny.plugins.byType<SNSEventHandler>(SNSEventHandler.type).reverse();\n if (plugins.length === 0) {\n throw new Error(`To run @webiny/handler-aws/sns, you must have SNSEventHandler set.`);\n }\n\n const handler = createComposedHandler<\n SNSEventHandler,\n SNSEventHandlerCallableParams<APIGatewayProxyResult>,\n APIGatewayProxyResult\n >(plugins);\n\n app.post(url, async (request, reply) => {\n const params: Omit<SNSEventHandlerCallableParams<APIGatewayProxyResult>, \"next\"> = {\n request,\n reply,\n context: app.webiny,\n event,\n lambdaContext: context\n };\n\n const result = await handler(\n params as unknown as SNSEventHandlerCallableParams<APIGatewayProxyResult>\n );\n\n if (result instanceof Reply) {\n return result;\n }\n\n app.__webiny_raw_result = result;\n return reply.send({});\n });\n return execute({\n app,\n url,\n payload: event\n });\n };\n};\n"],"names":["url","createHandler","params","event","context","app","createBaseHandler","registerDefaultPlugins","plugins","SNSEventHandler","Error","handler","createComposedHandler","request","reply","result","Reply","execute"],"mappings":";;;;;;;AA0BA,MAAMA,MAAM;AAEL,MAAMC,oBAAgB,CAACC,SACnB,OAAOC,OAAOC;QACjB,MAAMC,MAAMC,cAAkB;YAC1B,GAAGJ,MAAM;YACT,SAAS;gBACL,QAAQA,AAAiB,SAAjBA,OAAO,KAAK;gBACpB,GAAIA,OAAO,OAAO,IAAI,CAAC,CAAC;YAC5B;QACJ;QAIAK,uBAAuBF,IAAI,MAAM;QAIjC,MAAMG,UAAUH,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAkBI,gBAAgB,IAAI,EAAE,OAAO;QACxF,IAAID,AAAmB,MAAnBA,QAAQ,MAAM,EACd,MAAM,IAAIE,MAAM;QAGpB,MAAMC,UAAUC,sBAIdJ;QAEFH,IAAI,IAAI,CAACL,KAAK,OAAOa,SAASC;YAC1B,MAAMZ,SAA6E;gBAC/EW;gBACAC;gBACA,SAAST,IAAI,MAAM;gBACnBF;gBACA,eAAeC;YACnB;YAEA,MAAMW,SAAS,MAAMJ,QACjBT;YAGJ,IAAIa,kBAAkBC,WAClB,OAAOD;YAGXV,IAAI,mBAAmB,GAAGU;YAC1B,OAAOD,MAAM,IAAI,CAAC,CAAC;QACvB;QACA,OAAOG,QAAQ;YACXZ;YACAL,KAAAA;YACA,SAASG;QACb;IACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Context as LambdaContext, SNSEvent } from "@webiny/aws-sdk/types";
|
|
2
|
-
import { Plugin } from "@webiny/plugins/Plugin";
|
|
3
|
-
import type { Context, Reply, Request } from "@webiny/handler/types";
|
|
1
|
+
import type { Context as LambdaContext, SNSEvent } from "@webiny/aws-sdk/types/index.js";
|
|
2
|
+
import { Plugin } from "@webiny/plugins/Plugin.js";
|
|
3
|
+
import type { Context, Reply, Request } from "@webiny/handler/types.js";
|
|
4
4
|
export interface SNSEventHandlerCallableParams<Response = Reply> {
|
|
5
5
|
request: Request;
|
|
6
6
|
reply: Reply;
|
|
@@ -17,4 +17,4 @@ export declare class SNSEventHandler<Response = any> extends Plugin {
|
|
|
17
17
|
readonly cb: SNSEventHandlerCallable<Response>;
|
|
18
18
|
constructor(cb: SNSEventHandlerCallable<Response>);
|
|
19
19
|
}
|
|
20
|
-
export declare const createEventHandler: <
|
|
20
|
+
export declare const createEventHandler: <Response>(cb: SNSEventHandlerCallable<Response>) => SNSEventHandler<Response>;
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
constructor(cb) {
|
|
11
|
-
super();
|
|
12
|
-
this.cb = cb;
|
|
13
|
-
}
|
|
1
|
+
import { Plugin } from "@webiny/plugins/Plugin.js";
|
|
2
|
+
class SNSEventHandler extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "handler.fastify.aws.sns.eventHandler";
|
|
5
|
+
}
|
|
6
|
+
constructor(cb){
|
|
7
|
+
super();
|
|
8
|
+
this.cb = cb;
|
|
9
|
+
}
|
|
14
10
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return new SNSEventHandler(cb);
|
|
18
|
-
};
|
|
19
|
-
exports.createEventHandler = createEventHandler;
|
|
11
|
+
const createEventHandler = (cb)=>new SNSEventHandler(cb);
|
|
12
|
+
export { SNSEventHandler, createEventHandler };
|
|
20
13
|
|
|
21
14
|
//# sourceMappingURL=SNSEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sns/plugins/SNSEventHandler.js","sources":["../../../src/sns/plugins/SNSEventHandler.ts"],"sourcesContent":["import type { Context as LambdaContext, SNSEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { Plugin } from \"@webiny/plugins/Plugin.js\";\nimport type { Context, Reply, Request } from \"@webiny/handler/types.js\";\n\nexport interface SNSEventHandlerCallableParams<Response = Reply> {\n request: Request;\n reply: Reply;\n context: Context;\n event: SNSEvent;\n lambdaContext: LambdaContext;\n next: () => Promise<Response>;\n}\n\nexport interface SNSEventHandlerCallable<Response = Reply> {\n (params: SNSEventHandlerCallableParams<Response>): Promise<Response>;\n}\n\nexport class SNSEventHandler<Response = any> extends Plugin {\n public static override type = \"handler.fastify.aws.sns.eventHandler\";\n\n public readonly cb: SNSEventHandlerCallable<Response>;\n\n public constructor(cb: SNSEventHandlerCallable<Response>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createEventHandler = <Response>(cb: SNSEventHandlerCallable<Response>) => {\n return new SNSEventHandler<Response>(cb);\n};\n"],"names":["SNSEventHandler","Plugin","cb","createEventHandler"],"mappings":";AAiBO,MAAMA,wBAAwCC;;aAC1B,IAAI,GAAG;;IAI9B,YAAmBC,EAAqC,CAAE;QACtD,KAAK;QACL,IAAI,CAAC,EAAE,GAAGA;IACd;AACJ;AAEO,MAAMC,qBAAqB,CAAWD,KAClC,IAAIF,gBAA0BE"}
|
package/sns/register.js
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
const [record] = event.Records;
|
|
13
|
-
return !!record.Sns;
|
|
14
|
-
},
|
|
15
|
-
handle: async ({
|
|
16
|
-
params,
|
|
17
|
-
event,
|
|
18
|
-
context
|
|
19
|
-
}) => {
|
|
20
|
-
return (0, _index.createHandler)(params)(event, context);
|
|
21
|
-
}
|
|
1
|
+
import { registry } from "../registry.js";
|
|
2
|
+
import { createHandler } from "./index.js";
|
|
3
|
+
import { createSourceHandler } from "../sourceHandler.js";
|
|
4
|
+
const handler = createSourceHandler({
|
|
5
|
+
name: "handler-aws-sns",
|
|
6
|
+
canUse: (event)=>{
|
|
7
|
+
if (!Array.isArray(event.Records) || 0 === event.Records.length) return false;
|
|
8
|
+
const [record] = event.Records;
|
|
9
|
+
return !!record.Sns;
|
|
10
|
+
},
|
|
11
|
+
handle: async ({ params, event, context })=>createHandler(params)(event, context)
|
|
22
12
|
});
|
|
23
|
-
|
|
13
|
+
registry.register(handler);
|
|
24
14
|
|
|
25
15
|
//# sourceMappingURL=register.js.map
|
package/sns/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sns/register.js","sources":["../../src/sns/register.ts"],"sourcesContent":["import type { SNSEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { registry } from \"~/registry.js\";\nimport type { HandlerParams } from \"./index.js\";\nimport { createHandler } from \"./index.js\";\nimport { createSourceHandler } from \"~/sourceHandler.js\";\n\nconst handler = createSourceHandler<SNSEvent, HandlerParams>({\n name: \"handler-aws-sns\",\n canUse: event => {\n if (!Array.isArray(event.Records) || event.Records.length === 0) {\n return false;\n }\n const [record] = event.Records;\n return !!record.Sns;\n },\n handle: async ({ params, event, context }) => {\n return createHandler(params)(event, context);\n }\n});\n\nregistry.register(handler);\n"],"names":["handler","createSourceHandler","event","Array","record","params","context","createHandler","registry"],"mappings":";;;AAMA,MAAMA,UAAUC,oBAA6C;IACzD,MAAM;IACN,QAAQC,CAAAA;QACJ,IAAI,CAACC,MAAM,OAAO,CAACD,MAAM,OAAO,KAAKA,AAAyB,MAAzBA,MAAM,OAAO,CAAC,MAAM,EACrD,OAAO;QAEX,MAAM,CAACE,OAAO,GAAGF,MAAM,OAAO;QAC9B,OAAO,CAAC,CAACE,OAAO,GAAG;IACvB;IACA,QAAQ,OAAO,EAAEC,MAAM,EAAEH,KAAK,EAAEI,OAAO,EAAE,GAC9BC,cAAcF,QAAQH,OAAOI;AAE5C;AAEAE,SAAS,QAAQ,CAACR"}
|
package/sourceHandler.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SourceHandler, HandlerEvent, HandlerFactoryParams } from "./types";
|
|
2
|
-
export declare const createSourceHandler: <TEvent = HandlerEvent, TParams extends HandlerFactoryParams = HandlerFactoryParams>(handler: SourceHandler<TEvent, TParams
|
|
1
|
+
import type { SourceHandler, HandlerEvent, HandlerFactoryParams } from "./types.js";
|
|
2
|
+
export declare const createSourceHandler: <TEvent = HandlerEvent, TParams extends HandlerFactoryParams = HandlerFactoryParams>(handler: SourceHandler<TEvent, TParams>) => SourceHandler<TEvent, TParams, any>;
|
package/sourceHandler.js
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createSourceHandler = void 0;
|
|
7
|
-
const createSourceHandler = handler => {
|
|
8
|
-
return handler;
|
|
9
|
-
};
|
|
10
|
-
exports.createSourceHandler = createSourceHandler;
|
|
1
|
+
const createSourceHandler = (handler)=>handler;
|
|
2
|
+
export { createSourceHandler };
|
|
11
3
|
|
|
12
4
|
//# sourceMappingURL=sourceHandler.js.map
|
package/sourceHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sourceHandler.js","sources":["../src/sourceHandler.ts"],"sourcesContent":["import type { SourceHandler, HandlerEvent, HandlerFactoryParams } from \"~/types.js\";\n\nexport const createSourceHandler = <\n TEvent = HandlerEvent,\n TParams extends HandlerFactoryParams = HandlerFactoryParams\n>(\n handler: SourceHandler<TEvent, TParams>\n) => {\n return handler;\n};\n"],"names":["createSourceHandler","handler"],"mappings":"AAEO,MAAMA,sBAAsB,CAI/BC,UAEOA"}
|
package/sqs/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { APIGatewayProxyResult, Context as LambdaContext, SQSEvent } from "@webiny/aws-sdk/types";
|
|
2
|
-
import type { HandlerFactoryParams } from "../types";
|
|
3
|
-
export * from "./plugins/SQSEventHandler";
|
|
1
|
+
import type { APIGatewayProxyResult, Context as LambdaContext, SQSEvent } from "@webiny/aws-sdk/types/index.js";
|
|
2
|
+
import type { HandlerFactoryParams } from "../types.js";
|
|
3
|
+
export * from "./plugins/SQSEventHandler.js";
|
|
4
4
|
export interface HandlerCallable {
|
|
5
5
|
(event: SQSEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;
|
|
6
6
|
}
|
package/sqs/index.js
CHANGED
|
@@ -1,82 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
createHandler: true
|
|
9
|
-
};
|
|
10
|
-
exports.createHandler = void 0;
|
|
11
|
-
var _handler = require("@webiny/handler");
|
|
12
|
-
var _plugins = require("../plugins");
|
|
13
|
-
var _SQSEventHandler = require("./plugins/SQSEventHandler");
|
|
14
|
-
Object.keys(_SQSEventHandler).forEach(function (key) {
|
|
15
|
-
if (key === "default" || key === "__esModule") return;
|
|
16
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
17
|
-
if (key in exports && exports[key] === _SQSEventHandler[key]) return;
|
|
18
|
-
Object.defineProperty(exports, key, {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _SQSEventHandler[key];
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
var _execute = require("../execute");
|
|
26
|
-
var _reply = _interopRequireDefault(require("fastify/lib/reply"));
|
|
27
|
-
var _composedHandler = require("../utils/composedHandler");
|
|
28
|
-
/**
|
|
29
|
-
* We need a class, not an interface exported from types.
|
|
30
|
-
*/
|
|
31
|
-
// @ts-expect-error
|
|
32
|
-
|
|
1
|
+
import { createHandler } from "@webiny/handler";
|
|
2
|
+
import { registerDefaultPlugins } from "../plugins/index.js";
|
|
3
|
+
import { SQSEventHandler } from "./plugins/SQSEventHandler.js";
|
|
4
|
+
import { execute } from "../execute.js";
|
|
5
|
+
import lib_reply from "fastify/lib/reply.js";
|
|
6
|
+
import { createComposedHandler } from "../utils/composedHandler.js";
|
|
7
|
+
export * from "./plugins/SQSEventHandler.js";
|
|
33
8
|
const url = "/webiny-sqs-event";
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
app.__webiny_raw_result = result;
|
|
68
|
-
if (!reply.sent) {
|
|
69
|
-
reply.send({});
|
|
70
|
-
}
|
|
71
|
-
return reply;
|
|
72
|
-
});
|
|
73
|
-
return (0, _execute.execute)({
|
|
74
|
-
app,
|
|
75
|
-
url,
|
|
76
|
-
payload: event
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
exports.createHandler = createHandler;
|
|
9
|
+
const sqs_createHandler = (params)=>async (event, context)=>{
|
|
10
|
+
const app = createHandler({
|
|
11
|
+
...params,
|
|
12
|
+
options: {
|
|
13
|
+
logger: true === params.debug,
|
|
14
|
+
...params.options || {}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
registerDefaultPlugins(app.webiny);
|
|
18
|
+
const plugins = app.webiny.plugins.byType(SQSEventHandler.type).reverse();
|
|
19
|
+
if (0 === plugins.length) throw new Error("To run @webiny/handler-aws/sqs, you must have SQSEventHandler set.");
|
|
20
|
+
const handler = createComposedHandler(plugins);
|
|
21
|
+
app.post(url, async (request, reply)=>{
|
|
22
|
+
const params = {
|
|
23
|
+
request,
|
|
24
|
+
reply,
|
|
25
|
+
context: app.webiny,
|
|
26
|
+
event,
|
|
27
|
+
lambdaContext: context
|
|
28
|
+
};
|
|
29
|
+
const result = await handler(params);
|
|
30
|
+
if (result instanceof lib_reply) return result;
|
|
31
|
+
app.__webiny_raw_result = result;
|
|
32
|
+
if (!reply.sent) reply.send({});
|
|
33
|
+
return reply;
|
|
34
|
+
});
|
|
35
|
+
return execute({
|
|
36
|
+
app,
|
|
37
|
+
url: url,
|
|
38
|
+
payload: event
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
export { sqs_createHandler as createHandler };
|
|
81
42
|
|
|
82
43
|
//# sourceMappingURL=index.js.map
|
package/sqs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sqs/index.js","sources":["../../src/sqs/index.ts"],"sourcesContent":["import type {\n APIGatewayProxyResult,\n Context as LambdaContext,\n SQSEvent\n} from \"@webiny/aws-sdk/types/index.js\";\nimport { createHandler as createBaseHandler } from \"@webiny/handler\";\nimport { registerDefaultPlugins } from \"~/plugins/index.js\";\nimport type { SQSEventHandlerCallableParams } from \"~/sqs/plugins/SQSEventHandler.js\";\nimport { SQSEventHandler } from \"~/sqs/plugins/SQSEventHandler.js\";\nimport { execute } from \"~/execute.js\";\nimport type { HandlerFactoryParams } from \"~/types.js\";\n/**\n * We need a class, not an interface exported from types.\n */\n// @ts-expect-error\nimport Reply from \"fastify/lib/reply.js\";\nimport { createComposedHandler } from \"~/utils/composedHandler.js\";\n\nexport * from \"./plugins/SQSEventHandler.js\";\n\nexport interface HandlerCallable {\n (event: SQSEvent, context: LambdaContext): Promise<APIGatewayProxyResult>;\n}\n\nexport type HandlerParams = HandlerFactoryParams;\n\nconst url = \"/webiny-sqs-event\";\n\nexport const createHandler = (params: HandlerParams): HandlerCallable => {\n return async (event, context) => {\n const app = createBaseHandler({\n ...params,\n options: {\n logger: params.debug === true,\n ...(params.options || {})\n }\n });\n /**\n * We always must add our default plugins to the app.\n */\n registerDefaultPlugins(app.webiny);\n /**\n * There must be an event plugin for this handler to work.\n */\n const plugins = app.webiny.plugins.byType<SQSEventHandler>(SQSEventHandler.type).reverse();\n if (plugins.length === 0) {\n throw new Error(`To run @webiny/handler-aws/sqs, you must have SQSEventHandler set.`);\n }\n\n const handler = createComposedHandler<\n SQSEventHandler,\n SQSEventHandlerCallableParams<APIGatewayProxyResult>,\n APIGatewayProxyResult\n >(plugins);\n\n app.post(url, async (request, reply) => {\n const params: Omit<SQSEventHandlerCallableParams<APIGatewayProxyResult>, \"next\"> = {\n request,\n reply,\n context: app.webiny,\n event,\n lambdaContext: context\n };\n\n const result = await handler(\n params as unknown as SQSEventHandlerCallableParams<APIGatewayProxyResult>\n );\n\n if (result instanceof Reply) {\n return result;\n }\n\n app.__webiny_raw_result = result;\n if (!reply.sent) {\n reply.send({});\n }\n return reply;\n });\n return execute({\n app,\n url,\n payload: event\n });\n };\n};\n"],"names":["url","createHandler","params","event","context","app","createBaseHandler","registerDefaultPlugins","plugins","SQSEventHandler","Error","handler","createComposedHandler","request","reply","result","Reply","execute"],"mappings":";;;;;;;AA0BA,MAAMA,MAAM;AAEL,MAAMC,oBAAgB,CAACC,SACnB,OAAOC,OAAOC;QACjB,MAAMC,MAAMC,cAAkB;YAC1B,GAAGJ,MAAM;YACT,SAAS;gBACL,QAAQA,AAAiB,SAAjBA,OAAO,KAAK;gBACpB,GAAIA,OAAO,OAAO,IAAI,CAAC,CAAC;YAC5B;QACJ;QAIAK,uBAAuBF,IAAI,MAAM;QAIjC,MAAMG,UAAUH,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAkBI,gBAAgB,IAAI,EAAE,OAAO;QACxF,IAAID,AAAmB,MAAnBA,QAAQ,MAAM,EACd,MAAM,IAAIE,MAAM;QAGpB,MAAMC,UAAUC,sBAIdJ;QAEFH,IAAI,IAAI,CAACL,KAAK,OAAOa,SAASC;YAC1B,MAAMZ,SAA6E;gBAC/EW;gBACAC;gBACA,SAAST,IAAI,MAAM;gBACnBF;gBACA,eAAeC;YACnB;YAEA,MAAMW,SAAS,MAAMJ,QACjBT;YAGJ,IAAIa,kBAAkBC,WAClB,OAAOD;YAGXV,IAAI,mBAAmB,GAAGU;YAC1B,IAAI,CAACD,MAAM,IAAI,EACXA,MAAM,IAAI,CAAC,CAAC;YAEhB,OAAOA;QACX;QACA,OAAOG,QAAQ;YACXZ;YACAL,KAAAA;YACA,SAASG;QACb;IACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Context as LambdaContext, SQSEvent } from "@webiny/aws-sdk/types";
|
|
2
|
-
import { Plugin } from "@webiny/plugins/Plugin";
|
|
3
|
-
import type { Context, Reply, Request } from "@webiny/handler/types";
|
|
1
|
+
import type { Context as LambdaContext, SQSEvent } from "@webiny/aws-sdk/types/index.js";
|
|
2
|
+
import { Plugin } from "@webiny/plugins/Plugin.js";
|
|
3
|
+
import type { Context, Reply, Request } from "@webiny/handler/types.js";
|
|
4
4
|
export interface SQSEventHandlerCallableParams<Response = Reply> {
|
|
5
5
|
request: Request;
|
|
6
6
|
reply: Reply;
|
|
@@ -17,4 +17,4 @@ export declare class SQSEventHandler<Response = any> extends Plugin {
|
|
|
17
17
|
readonly cb: SQSEventHandlerCallable<Response>;
|
|
18
18
|
constructor(cb: SQSEventHandlerCallable<Response>);
|
|
19
19
|
}
|
|
20
|
-
export declare const createEventHandler: <
|
|
20
|
+
export declare const createEventHandler: <Response>(cb: SQSEventHandlerCallable<Response>) => SQSEventHandler<Response>;
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
constructor(cb) {
|
|
11
|
-
super();
|
|
12
|
-
this.cb = cb;
|
|
13
|
-
}
|
|
1
|
+
import { Plugin } from "@webiny/plugins/Plugin.js";
|
|
2
|
+
class SQSEventHandler extends Plugin {
|
|
3
|
+
static{
|
|
4
|
+
this.type = "handler.fastify.aws.sqs.eventHandler";
|
|
5
|
+
}
|
|
6
|
+
constructor(cb){
|
|
7
|
+
super();
|
|
8
|
+
this.cb = cb;
|
|
9
|
+
}
|
|
14
10
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return new SQSEventHandler(cb);
|
|
18
|
-
};
|
|
19
|
-
exports.createEventHandler = createEventHandler;
|
|
11
|
+
const createEventHandler = (cb)=>new SQSEventHandler(cb);
|
|
12
|
+
export { SQSEventHandler, createEventHandler };
|
|
20
13
|
|
|
21
14
|
//# sourceMappingURL=SQSEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sqs/plugins/SQSEventHandler.js","sources":["../../../src/sqs/plugins/SQSEventHandler.ts"],"sourcesContent":["import type { Context as LambdaContext, SQSEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { Plugin } from \"@webiny/plugins/Plugin.js\";\nimport type { Context, Reply, Request } from \"@webiny/handler/types.js\";\n\nexport interface SQSEventHandlerCallableParams<Response = Reply> {\n request: Request;\n reply: Reply;\n context: Context;\n event: SQSEvent;\n lambdaContext: LambdaContext;\n next: () => Promise<Response>;\n}\n\nexport interface SQSEventHandlerCallable<Response = Reply> {\n (params: SQSEventHandlerCallableParams<Response>): Promise<Response>;\n}\n\nexport class SQSEventHandler<Response = any> extends Plugin {\n public static override type = \"handler.fastify.aws.sqs.eventHandler\";\n\n public readonly cb: SQSEventHandlerCallable<Response>;\n\n public constructor(cb: SQSEventHandlerCallable<Response>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createEventHandler = <Response>(cb: SQSEventHandlerCallable<Response>) => {\n return new SQSEventHandler<Response>(cb);\n};\n"],"names":["SQSEventHandler","Plugin","cb","createEventHandler"],"mappings":";AAiBO,MAAMA,wBAAwCC;;aAC1B,IAAI,GAAG;;IAI9B,YAAmBC,EAAqC,CAAE;QACtD,KAAK;QACL,IAAI,CAAC,EAAE,GAAGA;IACd;AACJ;AAEO,MAAMC,qBAAqB,CAAWD,KAClC,IAAIF,gBAA0BE"}
|
package/sqs/register.js
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (typeof record.eventSource !== "string") {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
return record.eventSource.toLowerCase() === "aws:sqs";
|
|
17
|
-
},
|
|
18
|
-
handle: async ({
|
|
19
|
-
params,
|
|
20
|
-
event,
|
|
21
|
-
context
|
|
22
|
-
}) => {
|
|
23
|
-
return (0, _index.createHandler)(params)(event, context);
|
|
24
|
-
}
|
|
1
|
+
import { registry } from "../registry.js";
|
|
2
|
+
import { createHandler } from "./index.js";
|
|
3
|
+
import { createSourceHandler } from "../sourceHandler.js";
|
|
4
|
+
const handler = createSourceHandler({
|
|
5
|
+
name: "handler-aws-sqs",
|
|
6
|
+
canUse: (event)=>{
|
|
7
|
+
if (!Array.isArray(event.Records) || 0 === event.Records.length) return false;
|
|
8
|
+
const [record] = event.Records;
|
|
9
|
+
if ("string" != typeof record.eventSource) return false;
|
|
10
|
+
return "aws:sqs" === record.eventSource.toLowerCase();
|
|
11
|
+
},
|
|
12
|
+
handle: async ({ params, event, context })=>createHandler(params)(event, context)
|
|
25
13
|
});
|
|
26
|
-
|
|
14
|
+
registry.register(handler);
|
|
27
15
|
|
|
28
16
|
//# sourceMappingURL=register.js.map
|
package/sqs/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sqs/register.js","sources":["../../src/sqs/register.ts"],"sourcesContent":["import type { SQSEvent } from \"@webiny/aws-sdk/types/index.js\";\nimport { registry } from \"~/registry.js\";\nimport type { HandlerParams } from \"./index.js\";\nimport { createHandler } from \"./index.js\";\nimport { createSourceHandler } from \"~/sourceHandler.js\";\n\nconst handler = createSourceHandler<SQSEvent, HandlerParams>({\n name: \"handler-aws-sqs\",\n canUse: event => {\n if (!Array.isArray(event.Records) || event.Records.length === 0) {\n return false;\n }\n const [record] = event.Records;\n if (typeof record.eventSource !== \"string\") {\n return false;\n }\n return record.eventSource.toLowerCase() === \"aws:sqs\";\n },\n handle: async ({ params, event, context }) => {\n return createHandler(params)(event, context);\n }\n});\n\nregistry.register(handler);\n"],"names":["handler","createSourceHandler","event","Array","record","params","context","createHandler","registry"],"mappings":";;;AAMA,MAAMA,UAAUC,oBAA6C;IACzD,MAAM;IACN,QAAQC,CAAAA;QACJ,IAAI,CAACC,MAAM,OAAO,CAACD,MAAM,OAAO,KAAKA,AAAyB,MAAzBA,MAAM,OAAO,CAAC,MAAM,EACrD,OAAO;QAEX,MAAM,CAACE,OAAO,GAAGF,MAAM,OAAO;QAC9B,IAAI,AAA8B,YAA9B,OAAOE,OAAO,WAAW,EACzB,OAAO;QAEX,OAAOA,AAAqC,cAArCA,OAAO,WAAW,CAAC,WAAW;IACzC;IACA,QAAQ,OAAO,EAAEC,MAAM,EAAEH,KAAK,EAAEI,OAAO,EAAE,GAC9BC,cAAcF,QAAQH,OAAOI;AAE5C;AAEAE,SAAS,QAAQ,CAACR"}
|
package/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { APIGatewayEvent, APIGatewayEventRequestContextWithAuthorizer, AttributeValue, Context as LambdaContext, DynamoDBRecord, DynamoDBStreamEvent, EventBridgeEvent, S3Event, SNSEvent, SQSEvent } from "@webiny/aws-sdk/types";
|
|
1
|
+
import type { APIGatewayEvent, APIGatewayEventRequestContextWithAuthorizer, AttributeValue, Context as LambdaContext, DynamoDBRecord, DynamoDBStreamEvent, EventBridgeEvent, S3Event, SNSEvent, SQSEvent } from "@webiny/aws-sdk/types/index.js";
|
|
2
2
|
import "fastify";
|
|
3
3
|
import type { CreateHandlerParams as BaseCreateHandlerParams } from "@webiny/handler";
|
|
4
4
|
import type { LambdaFastifyOptions as LambdaOptions } from "@fastify/aws-lambda";
|
|
5
5
|
import type { GenericRecord } from "@webiny/utils";
|
|
6
6
|
export type { AttributeValue, DynamoDBRecord };
|
|
7
|
-
export { HandlerRegistry } from "./registry";
|
|
8
|
-
export * from "@webiny/handler/types";
|
|
7
|
+
export type { HandlerRegistry } from "./registry.js";
|
|
8
|
+
export * from "@webiny/handler/types.js";
|
|
9
9
|
export type { APIGatewayEvent, LambdaContext, APIGatewayEventRequestContextWithAuthorizer };
|
|
10
10
|
export type HandlerEvent = APIGatewayEvent | SNSEvent | SQSEvent | S3Event | EventBridgeEvent<string, string> | DynamoDBStreamEvent | GenericRecord<string>;
|
|
11
11
|
export interface EventResolver<T = any> {
|
package/types.js
CHANGED
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Base64EncodeHeader: true,
|
|
8
|
-
HandlerRegistry: true
|
|
9
|
-
};
|
|
10
|
-
exports.Base64EncodeHeader = void 0;
|
|
11
|
-
Object.defineProperty(exports, "HandlerRegistry", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function () {
|
|
14
|
-
return _registry.HandlerRegistry;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
require("fastify");
|
|
18
|
-
var _registry = require("./registry");
|
|
19
|
-
var _types = require("@webiny/handler/types");
|
|
20
|
-
Object.keys(_types).forEach(function (key) {
|
|
21
|
-
if (key === "default" || key === "__esModule") return;
|
|
22
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
23
|
-
if (key in exports && exports[key] === _types[key]) return;
|
|
24
|
-
Object.defineProperty(exports, key, {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _types[key];
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
let Base64EncodeHeader = exports.Base64EncodeHeader = /*#__PURE__*/function (Base64EncodeHeader) {
|
|
32
|
-
Base64EncodeHeader["encoded"] = "x-webiny-base64-encoded";
|
|
33
|
-
Base64EncodeHeader["binary"] = "x-webiny-binary";
|
|
34
|
-
return Base64EncodeHeader;
|
|
1
|
+
import "fastify";
|
|
2
|
+
export * from "@webiny/handler/types.js";
|
|
3
|
+
var types_Base64EncodeHeader = /*#__PURE__*/ function(Base64EncodeHeader) {
|
|
4
|
+
Base64EncodeHeader["encoded"] = "x-webiny-base64-encoded";
|
|
5
|
+
Base64EncodeHeader["binary"] = "x-webiny-binary";
|
|
6
|
+
return Base64EncodeHeader;
|
|
35
7
|
}({});
|
|
8
|
+
export { types_Base64EncodeHeader as Base64EncodeHeader };
|
|
36
9
|
|
|
37
10
|
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import type {\n APIGatewayEvent,\n APIGatewayEventRequestContextWithAuthorizer,\n AttributeValue,\n Context as LambdaContext,\n DynamoDBRecord,\n DynamoDBStreamEvent,\n EventBridgeEvent,\n S3Event,\n SNSEvent,\n SQSEvent\n} from \"@webiny/aws-sdk/types/index.js\";\nimport \"fastify\";\nimport type { CreateHandlerParams as BaseCreateHandlerParams } from \"@webiny/handler\";\nimport type { LambdaFastifyOptions as LambdaOptions } from \"@fastify/aws-lambda\";\nimport type { GenericRecord } from \"@webiny/utils\";\n\nexport type { AttributeValue, DynamoDBRecord };\n\nexport type { HandlerRegistry } from \"~/registry.js\";\n\nexport * from \"@webiny/handler/types.js\";\n\nexport type { APIGatewayEvent, LambdaContext, APIGatewayEventRequestContextWithAuthorizer };\n\nexport type HandlerEvent =\n | APIGatewayEvent\n | SNSEvent\n | SQSEvent\n | S3Event\n | EventBridgeEvent<string, string>\n | DynamoDBStreamEvent\n | GenericRecord<string>;\n\nexport interface EventResolver<T = any> {\n (event: HandlerEvent, context: LambdaContext): T;\n}\n\nexport interface HandlerFactoryParams extends BaseCreateHandlerParams {\n lambdaOptions?: LambdaOptions;\n}\n\nexport interface HandlerFactory<T extends HandlerFactoryParams = HandlerFactoryParams, R = any> {\n (params: T): EventResolver<R>;\n}\n\nexport interface HandlerParams<E, P extends HandlerFactoryParams> {\n params: P;\n event: E;\n context: LambdaContext;\n}\n\nexport interface SourceHandler<\n E = HandlerEvent,\n P extends HandlerFactoryParams = HandlerFactoryParams,\n T = any\n> {\n name: string;\n canUse: (event: Partial<E>, context: LambdaContext) => boolean;\n handle: (params: HandlerParams<E, P>) => Promise<T>;\n}\n\nexport enum Base64EncodeHeader {\n encoded = \"x-webiny-base64-encoded\",\n binary = \"x-webiny-binary\"\n}\n\ndeclare module \"fastify\" {\n interface FastifyRequest {\n awsLambda: {\n event: APIGatewayEvent;\n context: LambdaContext;\n };\n }\n}\n"],"names":["Base64EncodeHeader"],"mappings":";;AA8DO,IAAKA,2BAAkBA,WAAAA,GAAAA,SAAlBA,kBAAkB;;;WAAlBA"}
|
package/utils/composedHandler.js
CHANGED
|
@@ -1,24 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
var _utils = require("@webiny/utils");
|
|
8
|
-
const createComposedHandler = plugins => {
|
|
9
|
-
return (0, _utils.composeAsync)(plugins.map(plugin => {
|
|
10
|
-
return next => {
|
|
11
|
-
return async params => {
|
|
12
|
-
return plugin.cb({
|
|
13
|
-
...params,
|
|
14
|
-
next: () => {
|
|
15
|
-
return next(params);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
}));
|
|
21
|
-
};
|
|
22
|
-
exports.createComposedHandler = createComposedHandler;
|
|
1
|
+
import { composeAsync } from "@webiny/utils";
|
|
2
|
+
const createComposedHandler = (plugins)=>composeAsync(plugins.map((plugin)=>(next)=>async (params)=>plugin.cb({
|
|
3
|
+
...params,
|
|
4
|
+
next: ()=>next(params)
|
|
5
|
+
})));
|
|
6
|
+
export { createComposedHandler };
|
|
23
7
|
|
|
24
8
|
//# sourceMappingURL=composedHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils/composedHandler.js","sources":["../../src/utils/composedHandler.ts"],"sourcesContent":["import type { Plugin } from \"@webiny/plugins/types.js\";\nimport { composeAsync } from \"@webiny/utils\";\n\ntype WrappedInput<TInput, TOutput> = TInput & {\n next: () => Promise<TOutput>;\n};\n\nexport const createComposedHandler = <P extends Plugin, TInput, TOutput>(plugins: P[]) => {\n return composeAsync<WrappedInput<TInput, TOutput>, TOutput>(\n plugins.map(plugin => {\n return next => {\n return async params => {\n return plugin.cb({\n ...params,\n next: () => {\n return next(params);\n }\n });\n };\n };\n })\n );\n};\n"],"names":["createComposedHandler","plugins","composeAsync","plugin","next","params"],"mappings":";AAOO,MAAMA,wBAAwB,CAAoCC,UAC9DC,aACHD,QAAQ,GAAG,CAACE,CAAAA,SACDC,CAAAA,OACI,OAAMC,SACFF,OAAO,EAAE,CAAC;oBACb,GAAGE,MAAM;oBACT,MAAM,IACKD,KAAKC;gBAEpB"}
|
package/utils/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./composedHandler";
|
|
2
|
-
export * from "./timer";
|
|
1
|
+
export * from "./composedHandler.js";
|
|
2
|
+
export * from "./timer/index.js";
|