@geekmidas/constructs 3.0.13 → 3.1.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.
- package/CHANGELOG.md +24 -0
- package/dist/AWSScheduledFunction-B3cHQSdp.cjs +255 -0
- package/dist/AWSScheduledFunction-B3cHQSdp.cjs.map +1 -0
- package/dist/AWSScheduledFunction-BRGjgD-i.mjs +243 -0
- package/dist/AWSScheduledFunction-BRGjgD-i.mjs.map +1 -0
- package/dist/AWSScheduledFunction-BnYDnzsF.d.mts +117 -0
- package/dist/AWSScheduledFunction-BnYDnzsF.d.mts.map +1 -0
- package/dist/AWSScheduledFunction-vjanLO3-.d.cts +117 -0
- package/dist/AWSScheduledFunction-vjanLO3-.d.cts.map +1 -0
- package/dist/{Construct-D0n7QTaI.d.mts → Construct-BY0NBQLj.d.mts} +1 -1
- package/dist/{Construct-D0n7QTaI.d.mts.map → Construct-BY0NBQLj.d.mts.map} +1 -1
- package/dist/{Construct-CdJY2DJS.mjs → Construct-CLIPPqUP.mjs} +3 -28
- package/dist/{Construct-CdJY2DJS.mjs.map → Construct-CLIPPqUP.mjs.map} +1 -1
- package/dist/{Construct-CXqvzglu.d.cts → Construct-cjIs74Gb.d.cts} +1 -1
- package/dist/{Construct-CXqvzglu.d.cts.map → Construct-cjIs74Gb.d.cts.map} +1 -1
- package/dist/{Endpoint-NvjIednd.d.mts → Endpoint-4gVYt12g.d.mts} +5 -5
- package/dist/{Endpoint-NvjIednd.d.mts.map → Endpoint-4gVYt12g.d.mts.map} +1 -1
- package/dist/{Endpoint-CE7qHX5S.d.cts → Endpoint-BlMZIwBY.d.cts} +4 -4
- package/dist/{Endpoint-CE7qHX5S.d.cts.map → Endpoint-BlMZIwBY.d.cts.map} +1 -1
- package/dist/{HonoEndpointAdaptor-DyYv0IoU.mjs → HonoEndpointAdaptor-6k-rI44C.mjs} +5 -4
- package/dist/{HonoEndpointAdaptor-DyYv0IoU.mjs.map → HonoEndpointAdaptor-6k-rI44C.mjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-DFdgCwYU.cjs → HonoEndpointAdaptor-CNIsjEw-.cjs} +6 -5
- package/dist/{HonoEndpointAdaptor-DFdgCwYU.cjs.map → HonoEndpointAdaptor-CNIsjEw-.cjs.map} +1 -1
- package/dist/{Subscriber-D8WkA8np.d.cts → Subscriber-C6YXAmTp.d.cts} +3 -3
- package/dist/{Subscriber-D8WkA8np.d.cts.map → Subscriber-C6YXAmTp.d.cts.map} +1 -1
- package/dist/{Subscriber-Tft61-YG.d.mts → Subscriber-CjOHxO0l.d.mts} +3 -3
- package/dist/{Subscriber-Tft61-YG.d.mts.map → Subscriber-CjOHxO0l.d.mts.map} +1 -1
- package/dist/adaptors/aws.cjs +12 -209
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +11 -66
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +11 -66
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +11 -208
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +6 -4
- package/dist/adaptors/hono.d.cts +4 -4
- package/dist/adaptors/hono.d.mts +4 -4
- package/dist/adaptors/hono.mjs +7 -5
- package/dist/adaptors/middy.cjs +120 -0
- package/dist/adaptors/middy.cjs.map +1 -0
- package/dist/adaptors/middy.d.cts +139 -0
- package/dist/adaptors/middy.d.cts.map +1 -0
- package/dist/adaptors/middy.d.mts +139 -0
- package/dist/adaptors/middy.d.mts.map +1 -0
- package/dist/adaptors/middy.mjs +118 -0
- package/dist/adaptors/middy.mjs.map +1 -0
- package/dist/adaptors/testing.cjs +9 -7
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +6 -6
- package/dist/adaptors/testing.d.mts +6 -6
- package/dist/adaptors/testing.mjs +7 -5
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/chunk-B4qE4VCv.mjs +27 -0
- package/dist/crons/index.cjs +4 -1
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +6 -22
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +5 -21
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +6 -3
- package/dist/crons/index.mjs.map +1 -1
- package/dist/endpoints/index.cjs +5 -3
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +7 -7
- package/dist/endpoints/index.d.mts +5 -5
- package/dist/endpoints/index.mjs +6 -3
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/functions/index.cjs +1 -1
- package/dist/functions/index.d.cts +2 -2
- package/dist/functions/index.d.mts +2 -2
- package/dist/functions/index.mjs +2 -2
- package/dist/{functions-GmSHFbpr.mjs → functions-BMR-1CIQ.mjs} +1639 -1638
- package/dist/functions-BMR-1CIQ.mjs.map +1 -0
- package/dist/{functions-CX21wstW.cjs → functions-_OAiwGYh.cjs} +1637 -1637
- package/dist/functions-_OAiwGYh.cjs.map +1 -0
- package/dist/{index-CzIMpK-e.d.cts → index-Dj3uvqCO.d.cts} +39 -38
- package/dist/index-Dj3uvqCO.d.cts.map +1 -0
- package/dist/{index-Cq4fz8uM.d.mts → index-DoiHTgUQ.d.mts} +35 -34
- package/dist/index-DoiHTgUQ.d.mts.map +1 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/{lazyAccessors-zNy6P6Cg.cjs → lazyAccessors-B4rtX68K.cjs} +6 -889
- package/dist/lazyAccessors-B4rtX68K.cjs.map +1 -0
- package/dist/{lazyAccessors-5h-aWohM.mjs → lazyAccessors-D-UHg0YJ.mjs} +9 -873
- package/dist/lazyAccessors-D-UHg0YJ.mjs.map +1 -0
- package/dist/lodash-CM4k4sZD.cjs +836 -0
- package/dist/lodash-CM4k4sZD.cjs.map +1 -0
- package/dist/lodash-DiUeLbQy.mjs +831 -0
- package/dist/lodash-DiUeLbQy.mjs.map +1 -0
- package/dist/{processAudits-B0PbJf1Z.mjs → processAudits-BEiSkgH3.mjs} +1 -1
- package/dist/{processAudits-B0PbJf1Z.mjs.map → processAudits-BEiSkgH3.mjs.map} +1 -1
- package/dist/{processAudits-B_a9bDPs.cjs → processAudits-CPcACKCA.cjs} +1 -1
- package/dist/{processAudits-B_a9bDPs.cjs.map → processAudits-CPcACKCA.cjs.map} +1 -1
- package/dist/publisher-BZgcrVPy.cjs +53 -0
- package/dist/publisher-BZgcrVPy.cjs.map +1 -0
- package/dist/publisher-CnpeMv-r.mjs +41 -0
- package/dist/publisher-CnpeMv-r.mjs.map +1 -0
- package/dist/subscribers/index.d.cts +2 -2
- package/dist/subscribers/index.d.mts +2 -2
- package/dist/subscribers/index.mjs +1 -1
- package/dist/{telemetry-COvVBKBM.d.mts → telemetry-Bp4DLvdQ.d.mts} +1 -1
- package/dist/{telemetry-Bt0vK4ma.d.cts.map → telemetry-Bp4DLvdQ.d.mts.map} +1 -1
- package/dist/{telemetry-Bt0vK4ma.d.cts → telemetry-Dqx-D3F7.d.cts} +1 -1
- package/dist/{telemetry-COvVBKBM.d.mts.map → telemetry-Dqx-D3F7.d.cts.map} +1 -1
- package/dist/{types-B8YlI4cx.d.cts → types-BdAaYDvd.d.cts} +1 -1
- package/dist/{types-B8YlI4cx.d.cts.map → types-BdAaYDvd.d.cts.map} +1 -1
- package/dist/{types-BA3eK4xj.d.mts → types-j0ti0JTY.d.mts} +1 -1
- package/dist/{types-BA3eK4xj.d.mts.map → types-j0ti0JTY.d.mts.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +24 -14
- package/src/adaptors/__tests__/middy.spec.ts +212 -0
- package/src/adaptors/__tests__/trpc.spec.ts +9 -2
- package/src/adaptors/aws.ts +1 -0
- package/src/adaptors/middy.ts +225 -0
- package/src/crons/AWSScheduledFunction.ts +72 -0
- package/src/crons/__tests__/AWSScheduledFunction.spec.ts +152 -0
- package/src/crons/index.ts +1 -0
- package/tsdown.config.ts +1 -0
- package/dist/functions-CX21wstW.cjs.map +0 -1
- package/dist/functions-GmSHFbpr.mjs.map +0 -1
- package/dist/index-Cq4fz8uM.d.mts.map +0 -1
- package/dist/index-CzIMpK-e.d.cts.map +0 -1
- package/dist/lazyAccessors-5h-aWohM.mjs.map +0 -1
- package/dist/lazyAccessors-zNy6P6Cg.cjs.map +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
2
|
+
import { Logger } from "@geekmidas/logger";
|
|
3
|
+
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
4
|
+
import { Context } from "aws-lambda";
|
|
5
|
+
import { MiddlewareObj } from "@middy/core";
|
|
6
|
+
|
|
7
|
+
//#region src/adaptors/middy.d.ts
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Middy middleware helpers that bring `@geekmidas/services` request context and
|
|
11
|
+
* service discovery to **standalone** Middy Lambda handlers — i.e. functions
|
|
12
|
+
* that aren't built with the `@geekmidas/constructs` Function/Cron constructs
|
|
13
|
+
* but still want `serviceContext.getLogger()` and resolved services.
|
|
14
|
+
*
|
|
15
|
+
* Why middleware (and not `runWithRequestContext`)? Middy runs `before → handler
|
|
16
|
+
* → after` as sequential awaits in a single async context, so establishing the
|
|
17
|
+
* context with `AsyncLocalStorage.enterWith` (via `enterRequestContext`) in a
|
|
18
|
+
* `before` hook propagates to the handler. `after`/`onError` reset it.
|
|
19
|
+
*
|
|
20
|
+
* Teardown is best-effort: like `enterRequestContext`, the reset is observable
|
|
21
|
+
* to code the handler reaches but not necessarily to the frame that invoked the
|
|
22
|
+
* Middy handler. This is fine for Lambda, where each invocation runs in its own
|
|
23
|
+
* fresh async context — `requestContext` always establishes a brand-new context
|
|
24
|
+
* per invocation, so requests never inherit a previous invocation's logger.
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Options shared by the request-context-aware middlewares.
|
|
30
|
+
*/
|
|
31
|
+
interface RequestContextOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Base logger to derive the per-request child logger from.
|
|
34
|
+
* Defaults to a new {@link ConsoleLogger}.
|
|
35
|
+
*/
|
|
36
|
+
logger?: Logger;
|
|
37
|
+
/**
|
|
38
|
+
* Derive the request id from the event/context.
|
|
39
|
+
* Defaults to `context.awsRequestId`, falling back to `crypto.randomUUID()`.
|
|
40
|
+
*/
|
|
41
|
+
getRequestId?: (event: unknown, context: Context) => string;
|
|
42
|
+
/**
|
|
43
|
+
* Extra bindings to attach to the per-request child logger.
|
|
44
|
+
*/
|
|
45
|
+
bindings?: (event: unknown, context: Context) => Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options for the service-resolving middlewares.
|
|
49
|
+
*/
|
|
50
|
+
interface ServiceMiddlewareOptions extends RequestContextOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Environment parser used to build the default {@link ServiceDiscovery}.
|
|
53
|
+
* Defaults to `new EnvironmentParser({ ...process.env })`.
|
|
54
|
+
*/
|
|
55
|
+
envParser?: EnvironmentParser<{}>;
|
|
56
|
+
/**
|
|
57
|
+
* Explicit {@link ServiceDiscovery} to resolve services from. Takes
|
|
58
|
+
* precedence over `envParser`.
|
|
59
|
+
*/
|
|
60
|
+
serviceDiscovery?: ServiceDiscovery;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Middy middleware that establishes a request context for the handler so any
|
|
64
|
+
* code it reaches — including `@geekmidas/services` service methods — can call
|
|
65
|
+
* `serviceContext.getLogger()` / `getRequestId()` / `getRequestStartTime()`.
|
|
66
|
+
*
|
|
67
|
+
* Use this on standalone functions that need request-scoped logging. To also
|
|
68
|
+
* resolve services, pair it with {@link addServices}, or use
|
|
69
|
+
* {@link withServices} which bundles both.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import middy from '@middy/core';
|
|
74
|
+
* import { serviceContext } from '@geekmidas/services';
|
|
75
|
+
* import { requestContext } from '@geekmidas/constructs/middy';
|
|
76
|
+
*
|
|
77
|
+
* export const handler = middy(async () => {
|
|
78
|
+
* serviceContext.getLogger().info('tick');
|
|
79
|
+
* }).use(requestContext());
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
declare function requestContext(options?: RequestContextOptions): MiddlewareObj<unknown, unknown, Error, Context>;
|
|
83
|
+
/**
|
|
84
|
+
* Event augmentation applied by {@link addServices} / {@link withServices}:
|
|
85
|
+
* resolved services keyed by `serviceName`. Intersect it with your own event
|
|
86
|
+
* type to type the handler, e.g. `(event: EventServices<T> & APIGatewayEvent)`.
|
|
87
|
+
*/
|
|
88
|
+
type EventServices<T extends Service[]> = {
|
|
89
|
+
services: ServiceRecord<T>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Middy middleware that resolves an array of {@link Service}s via
|
|
93
|
+
* {@link ServiceDiscovery} and attaches the resolved record to `event.services`
|
|
94
|
+
* (keyed by each service's `serviceName`), matching how the `Function`/`Cron`
|
|
95
|
+
* constructs expose services on the event.
|
|
96
|
+
*
|
|
97
|
+
* This middleware only resolves services; it does **not** establish a request
|
|
98
|
+
* context. If your services read `serviceContext` (e.g. `getLogger()`), pair it
|
|
99
|
+
* with {@link requestContext}, or use {@link withServices} which bundles both.
|
|
100
|
+
*
|
|
101
|
+
* Chainable — `.use(addServices([a])).use(addServices([b]))` accumulates onto
|
|
102
|
+
* `event.services`.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* import middy from '@middy/core';
|
|
107
|
+
* import { addServices, requestContext } from '@geekmidas/constructs/middy';
|
|
108
|
+
*
|
|
109
|
+
* export const handler = middy(async (event) => {
|
|
110
|
+
* await event.services.database.users.deletePast();
|
|
111
|
+
* event.services.cache.clear();
|
|
112
|
+
* })
|
|
113
|
+
* .use(requestContext())
|
|
114
|
+
* .use(addServices([databaseService, cacheService], { envParser }));
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
declare function addServices<const T extends Service[]>(services: [...T], options?: ServiceMiddlewareOptions): MiddlewareObj<EventServices<T>, unknown, Error, Context>;
|
|
118
|
+
/**
|
|
119
|
+
* Batteries-included Middy setup for service-backed handlers: returns a pair of
|
|
120
|
+
* middlewares — {@link requestContext} followed by {@link addServices} — so a
|
|
121
|
+
* single `.use(withServices([...]))` gives the handler both a request context
|
|
122
|
+
* and the resolved services on `event.services`.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import middy from '@middy/core';
|
|
127
|
+
* import { withServices } from '@geekmidas/constructs/middy';
|
|
128
|
+
*
|
|
129
|
+
* export const handler = middy(async (event) => {
|
|
130
|
+
* await event.services.database.users.deletePast();
|
|
131
|
+
* event.services.cache.clear();
|
|
132
|
+
* }).use(withServices([databaseService, cacheService], { envParser }));
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
declare function withServices<const T extends Service[]>(services: [...T], options?: ServiceMiddlewareOptions): [MiddlewareObj<unknown, unknown, Error, Context>, MiddlewareObj<EventServices<T>, unknown, Error, Context>];
|
|
136
|
+
//# sourceMappingURL=middy.d.ts.map
|
|
137
|
+
//#endregion
|
|
138
|
+
export { EventServices, RequestContextOptions, ServiceMiddlewareOptions, addServices, requestContext, withServices };
|
|
139
|
+
//# sourceMappingURL=middy.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middy.d.cts","names":[],"sources":["../../src/adaptors/middy.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAqCA;;;;;;AAcwD;AAMxD;;;;;AAAuE;AA0DvE;;;;;;AAEgB;AAsCJ,UAtHK,qBAAA,CAsHQ;EAAA;;;;EACD,MAAA,CAAA,EAlHd,MAkHc;EA6BR;;;;EACA,YACN,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EA5IgC,OA4IhC,EAAA,GAAA,MAAA;EAA6B;;;EACU,QAAE,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAzIb,OAyIa,EAAA,GAzID,MAyIC,CAAA,MAAA,EAAA,OAAA,CAAA;;AAAnC;AA4BhB;;AAA6C,UA/J5B,wBAAA,SAAiC,qBA+JL,CAAA;EAAO;;;;EAIL,SAA9C,CAAA,EA9JY,iBA8JZ,CAAA,CAAA,CAAA,CAAA;EAAa;;;;EAC0C,gBAAvD,CAAA,EA1JmB,gBA0JnB;AAAa;;;;;;;;;;;;;;;;;;;;;iBA1GE,cAAA,WACN,wBACP,gCAAgC,OAAO;;;;;;KAsC9B,wBAAwB;YACzB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BT,4BAA4B,yBAC7B,cACL,2BACP,cAAc,cAAc,aAAa,OAAO;;;;;;;;;;;;;;;;;;iBA4BnC,6BAA6B,yBAC9B,cACL,4BAET,gCAAgC,OAAO,UACvC,cAAc,cAAc,aAAa,OAAO"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
2
|
+
import { MiddlewareObj } from "@middy/core";
|
|
3
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
4
|
+
import { Logger } from "@geekmidas/logger";
|
|
5
|
+
import { Context } from "aws-lambda";
|
|
6
|
+
|
|
7
|
+
//#region src/adaptors/middy.d.ts
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Middy middleware helpers that bring `@geekmidas/services` request context and
|
|
11
|
+
* service discovery to **standalone** Middy Lambda handlers — i.e. functions
|
|
12
|
+
* that aren't built with the `@geekmidas/constructs` Function/Cron constructs
|
|
13
|
+
* but still want `serviceContext.getLogger()` and resolved services.
|
|
14
|
+
*
|
|
15
|
+
* Why middleware (and not `runWithRequestContext`)? Middy runs `before → handler
|
|
16
|
+
* → after` as sequential awaits in a single async context, so establishing the
|
|
17
|
+
* context with `AsyncLocalStorage.enterWith` (via `enterRequestContext`) in a
|
|
18
|
+
* `before` hook propagates to the handler. `after`/`onError` reset it.
|
|
19
|
+
*
|
|
20
|
+
* Teardown is best-effort: like `enterRequestContext`, the reset is observable
|
|
21
|
+
* to code the handler reaches but not necessarily to the frame that invoked the
|
|
22
|
+
* Middy handler. This is fine for Lambda, where each invocation runs in its own
|
|
23
|
+
* fresh async context — `requestContext` always establishes a brand-new context
|
|
24
|
+
* per invocation, so requests never inherit a previous invocation's logger.
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Options shared by the request-context-aware middlewares.
|
|
30
|
+
*/
|
|
31
|
+
interface RequestContextOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Base logger to derive the per-request child logger from.
|
|
34
|
+
* Defaults to a new {@link ConsoleLogger}.
|
|
35
|
+
*/
|
|
36
|
+
logger?: Logger;
|
|
37
|
+
/**
|
|
38
|
+
* Derive the request id from the event/context.
|
|
39
|
+
* Defaults to `context.awsRequestId`, falling back to `crypto.randomUUID()`.
|
|
40
|
+
*/
|
|
41
|
+
getRequestId?: (event: unknown, context: Context) => string;
|
|
42
|
+
/**
|
|
43
|
+
* Extra bindings to attach to the per-request child logger.
|
|
44
|
+
*/
|
|
45
|
+
bindings?: (event: unknown, context: Context) => Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options for the service-resolving middlewares.
|
|
49
|
+
*/
|
|
50
|
+
interface ServiceMiddlewareOptions extends RequestContextOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Environment parser used to build the default {@link ServiceDiscovery}.
|
|
53
|
+
* Defaults to `new EnvironmentParser({ ...process.env })`.
|
|
54
|
+
*/
|
|
55
|
+
envParser?: EnvironmentParser<{}>;
|
|
56
|
+
/**
|
|
57
|
+
* Explicit {@link ServiceDiscovery} to resolve services from. Takes
|
|
58
|
+
* precedence over `envParser`.
|
|
59
|
+
*/
|
|
60
|
+
serviceDiscovery?: ServiceDiscovery;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Middy middleware that establishes a request context for the handler so any
|
|
64
|
+
* code it reaches — including `@geekmidas/services` service methods — can call
|
|
65
|
+
* `serviceContext.getLogger()` / `getRequestId()` / `getRequestStartTime()`.
|
|
66
|
+
*
|
|
67
|
+
* Use this on standalone functions that need request-scoped logging. To also
|
|
68
|
+
* resolve services, pair it with {@link addServices}, or use
|
|
69
|
+
* {@link withServices} which bundles both.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import middy from '@middy/core';
|
|
74
|
+
* import { serviceContext } from '@geekmidas/services';
|
|
75
|
+
* import { requestContext } from '@geekmidas/constructs/middy';
|
|
76
|
+
*
|
|
77
|
+
* export const handler = middy(async () => {
|
|
78
|
+
* serviceContext.getLogger().info('tick');
|
|
79
|
+
* }).use(requestContext());
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
declare function requestContext(options?: RequestContextOptions): MiddlewareObj<unknown, unknown, Error, Context>;
|
|
83
|
+
/**
|
|
84
|
+
* Event augmentation applied by {@link addServices} / {@link withServices}:
|
|
85
|
+
* resolved services keyed by `serviceName`. Intersect it with your own event
|
|
86
|
+
* type to type the handler, e.g. `(event: EventServices<T> & APIGatewayEvent)`.
|
|
87
|
+
*/
|
|
88
|
+
type EventServices<T extends Service[]> = {
|
|
89
|
+
services: ServiceRecord<T>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Middy middleware that resolves an array of {@link Service}s via
|
|
93
|
+
* {@link ServiceDiscovery} and attaches the resolved record to `event.services`
|
|
94
|
+
* (keyed by each service's `serviceName`), matching how the `Function`/`Cron`
|
|
95
|
+
* constructs expose services on the event.
|
|
96
|
+
*
|
|
97
|
+
* This middleware only resolves services; it does **not** establish a request
|
|
98
|
+
* context. If your services read `serviceContext` (e.g. `getLogger()`), pair it
|
|
99
|
+
* with {@link requestContext}, or use {@link withServices} which bundles both.
|
|
100
|
+
*
|
|
101
|
+
* Chainable — `.use(addServices([a])).use(addServices([b]))` accumulates onto
|
|
102
|
+
* `event.services`.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* import middy from '@middy/core';
|
|
107
|
+
* import { addServices, requestContext } from '@geekmidas/constructs/middy';
|
|
108
|
+
*
|
|
109
|
+
* export const handler = middy(async (event) => {
|
|
110
|
+
* await event.services.database.users.deletePast();
|
|
111
|
+
* event.services.cache.clear();
|
|
112
|
+
* })
|
|
113
|
+
* .use(requestContext())
|
|
114
|
+
* .use(addServices([databaseService, cacheService], { envParser }));
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
declare function addServices<const T extends Service[]>(services: [...T], options?: ServiceMiddlewareOptions): MiddlewareObj<EventServices<T>, unknown, Error, Context>;
|
|
118
|
+
/**
|
|
119
|
+
* Batteries-included Middy setup for service-backed handlers: returns a pair of
|
|
120
|
+
* middlewares — {@link requestContext} followed by {@link addServices} — so a
|
|
121
|
+
* single `.use(withServices([...]))` gives the handler both a request context
|
|
122
|
+
* and the resolved services on `event.services`.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import middy from '@middy/core';
|
|
127
|
+
* import { withServices } from '@geekmidas/constructs/middy';
|
|
128
|
+
*
|
|
129
|
+
* export const handler = middy(async (event) => {
|
|
130
|
+
* await event.services.database.users.deletePast();
|
|
131
|
+
* event.services.cache.clear();
|
|
132
|
+
* }).use(withServices([databaseService, cacheService], { envParser }));
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
declare function withServices<const T extends Service[]>(services: [...T], options?: ServiceMiddlewareOptions): [MiddlewareObj<unknown, unknown, Error, Context>, MiddlewareObj<EventServices<T>, unknown, Error, Context>];
|
|
136
|
+
//# sourceMappingURL=middy.d.ts.map
|
|
137
|
+
//#endregion
|
|
138
|
+
export { EventServices, RequestContextOptions, ServiceMiddlewareOptions, addServices, requestContext, withServices };
|
|
139
|
+
//# sourceMappingURL=middy.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middy.d.mts","names":[],"sources":["../../src/adaptors/middy.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAqCA;;;;;;AAcwD;AAMxD;;;;;AAAuE;AA0DvE;;;;;;AAEgB;AAsCJ,UAtHK,qBAAA,CAsHQ;EAAA;;;;EACD,MAAA,CAAA,EAlHd,MAkHc;EA6BR;;;;EACA,YACN,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EA5IgC,OA4IhC,EAAA,GAAA,MAAA;EAA6B;;;EACU,QAAE,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAzIb,OAyIa,EAAA,GAzID,MAyIC,CAAA,MAAA,EAAA,OAAA,CAAA;;AAAnC;AA4BhB;;AAA6C,UA/J5B,wBAAA,SAAiC,qBA+JL,CAAA;EAAO;;;;EAIL,SAA9C,CAAA,EA9JY,iBA8JZ,CAAA,CAAA,CAAA,CAAA;EAAa;;;;EAC0C,gBAAvD,CAAA,EA1JmB,gBA0JnB;AAAa;;;;;;;;;;;;;;;;;;;;;iBA1GE,cAAA,WACN,wBACP,gCAAgC,OAAO;;;;;;KAsC9B,wBAAwB;YACzB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BT,4BAA4B,yBAC7B,cACL,2BACP,cAAc,cAAc,aAAa,OAAO;;;;;;;;;;;;;;;;;;iBA4BnC,6BAA6B,yBAC9B,cACL,4BAET,gCAAgC,OAAO,UACvC,cAAc,cAAc,aAAa,OAAO"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { __toESM } from "../chunk-B4qE4VCv.mjs";
|
|
2
|
+
import { require_lodash } from "../lodash-DiUeLbQy.mjs";
|
|
3
|
+
import { ServiceDiscovery, enterRequestContext, exitRequestContext } from "@geekmidas/services";
|
|
4
|
+
import { ConsoleLogger } from "@geekmidas/logger/console";
|
|
5
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
6
|
+
|
|
7
|
+
//#region src/adaptors/middy.ts
|
|
8
|
+
var import_lodash = __toESM(require_lodash(), 1);
|
|
9
|
+
function deriveRequestId(options, event, context) {
|
|
10
|
+
return options.getRequestId?.(event, context) ?? context?.awsRequestId ?? crypto.randomUUID();
|
|
11
|
+
}
|
|
12
|
+
function buildLogger(baseLogger, options, requestId, event, context) {
|
|
13
|
+
return baseLogger.child({
|
|
14
|
+
requestId,
|
|
15
|
+
...options.bindings?.(event, context) ?? {}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Middy middleware that establishes a request context for the handler so any
|
|
20
|
+
* code it reaches — including `@geekmidas/services` service methods — can call
|
|
21
|
+
* `serviceContext.getLogger()` / `getRequestId()` / `getRequestStartTime()`.
|
|
22
|
+
*
|
|
23
|
+
* Use this on standalone functions that need request-scoped logging. To also
|
|
24
|
+
* resolve services, pair it with {@link addServices}, or use
|
|
25
|
+
* {@link withServices} which bundles both.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import middy from '@middy/core';
|
|
30
|
+
* import { serviceContext } from '@geekmidas/services';
|
|
31
|
+
* import { requestContext } from '@geekmidas/constructs/middy';
|
|
32
|
+
*
|
|
33
|
+
* export const handler = middy(async () => {
|
|
34
|
+
* serviceContext.getLogger().info('tick');
|
|
35
|
+
* }).use(requestContext());
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function requestContext(options = {}) {
|
|
39
|
+
const baseLogger = options.logger ?? new ConsoleLogger();
|
|
40
|
+
return {
|
|
41
|
+
before: (request) => {
|
|
42
|
+
const { event, context } = request;
|
|
43
|
+
const requestId = deriveRequestId(options, event, context);
|
|
44
|
+
const logger = buildLogger(baseLogger, options, requestId, event, context);
|
|
45
|
+
enterRequestContext({
|
|
46
|
+
logger,
|
|
47
|
+
requestId,
|
|
48
|
+
startTime: Date.now()
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
after: () => {
|
|
52
|
+
exitRequestContext();
|
|
53
|
+
},
|
|
54
|
+
onError: () => {
|
|
55
|
+
exitRequestContext();
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function resolveDiscovery(options) {
|
|
60
|
+
return options.serviceDiscovery ?? ServiceDiscovery.getInstance(options.envParser ?? new EnvironmentParser({ ...process.env }));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Middy middleware that resolves an array of {@link Service}s via
|
|
64
|
+
* {@link ServiceDiscovery} and attaches the resolved record to `event.services`
|
|
65
|
+
* (keyed by each service's `serviceName`), matching how the `Function`/`Cron`
|
|
66
|
+
* constructs expose services on the event.
|
|
67
|
+
*
|
|
68
|
+
* This middleware only resolves services; it does **not** establish a request
|
|
69
|
+
* context. If your services read `serviceContext` (e.g. `getLogger()`), pair it
|
|
70
|
+
* with {@link requestContext}, or use {@link withServices} which bundles both.
|
|
71
|
+
*
|
|
72
|
+
* Chainable — `.use(addServices([a])).use(addServices([b]))` accumulates onto
|
|
73
|
+
* `event.services`.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* import middy from '@middy/core';
|
|
78
|
+
* import { addServices, requestContext } from '@geekmidas/constructs/middy';
|
|
79
|
+
*
|
|
80
|
+
* export const handler = middy(async (event) => {
|
|
81
|
+
* await event.services.database.users.deletePast();
|
|
82
|
+
* event.services.cache.clear();
|
|
83
|
+
* })
|
|
84
|
+
* .use(requestContext())
|
|
85
|
+
* .use(addServices([databaseService, cacheService], { envParser }));
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function addServices(services, options = {}) {
|
|
89
|
+
const discovery = resolveDiscovery(options);
|
|
90
|
+
return { before: async (request) => {
|
|
91
|
+
const resolved = await discovery.register(services);
|
|
92
|
+
(0, import_lodash.default)(request, "event.services", resolved);
|
|
93
|
+
} };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Batteries-included Middy setup for service-backed handlers: returns a pair of
|
|
97
|
+
* middlewares — {@link requestContext} followed by {@link addServices} — so a
|
|
98
|
+
* single `.use(withServices([...]))` gives the handler both a request context
|
|
99
|
+
* and the resolved services on `event.services`.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* import middy from '@middy/core';
|
|
104
|
+
* import { withServices } from '@geekmidas/constructs/middy';
|
|
105
|
+
*
|
|
106
|
+
* export const handler = middy(async (event) => {
|
|
107
|
+
* await event.services.database.users.deletePast();
|
|
108
|
+
* event.services.cache.clear();
|
|
109
|
+
* }).use(withServices([databaseService, cacheService], { envParser }));
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
function withServices(services, options = {}) {
|
|
113
|
+
return [requestContext(options), addServices(services, options)];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//#endregion
|
|
117
|
+
export { addServices, requestContext, withServices };
|
|
118
|
+
//# sourceMappingURL=middy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middy.mjs","names":["options: RequestContextOptions","event: unknown","context: Context | undefined","baseLogger: Logger","requestId: string","options: ServiceMiddlewareOptions","services: [...T]"],"sources":["../../src/adaptors/middy.ts"],"sourcesContent":["import { EnvironmentParser } from '@geekmidas/envkit';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport {\n\tenterRequestContext,\n\texitRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport type { MiddlewareObj } from '@middy/core';\nimport type { Context } from 'aws-lambda';\nimport set from 'lodash.set';\n\n/**\n * Middy middleware helpers that bring `@geekmidas/services` request context and\n * service discovery to **standalone** Middy Lambda handlers — i.e. functions\n * that aren't built with the `@geekmidas/constructs` Function/Cron constructs\n * but still want `serviceContext.getLogger()` and resolved services.\n *\n * Why middleware (and not `runWithRequestContext`)? Middy runs `before → handler\n * → after` as sequential awaits in a single async context, so establishing the\n * context with `AsyncLocalStorage.enterWith` (via `enterRequestContext`) in a\n * `before` hook propagates to the handler. `after`/`onError` reset it.\n *\n * Teardown is best-effort: like `enterRequestContext`, the reset is observable\n * to code the handler reaches but not necessarily to the frame that invoked the\n * Middy handler. This is fine for Lambda, where each invocation runs in its own\n * fresh async context — `requestContext` always establishes a brand-new context\n * per invocation, so requests never inherit a previous invocation's logger.\n *\n * @module\n */\n\n/**\n * Options shared by the request-context-aware middlewares.\n */\nexport interface RequestContextOptions {\n\t/**\n\t * Base logger to derive the per-request child logger from.\n\t * Defaults to a new {@link ConsoleLogger}.\n\t */\n\tlogger?: Logger;\n\t/**\n\t * Derive the request id from the event/context.\n\t * Defaults to `context.awsRequestId`, falling back to `crypto.randomUUID()`.\n\t */\n\tgetRequestId?: (event: unknown, context: Context) => string;\n\t/**\n\t * Extra bindings to attach to the per-request child logger.\n\t */\n\tbindings?: (event: unknown, context: Context) => Record<string, unknown>;\n}\n\n/**\n * Options for the service-resolving middlewares.\n */\nexport interface ServiceMiddlewareOptions extends RequestContextOptions {\n\t/**\n\t * Environment parser used to build the default {@link ServiceDiscovery}.\n\t * Defaults to `new EnvironmentParser({ ...process.env })`.\n\t */\n\tenvParser?: EnvironmentParser<{}>;\n\t/**\n\t * Explicit {@link ServiceDiscovery} to resolve services from. Takes\n\t * precedence over `envParser`.\n\t */\n\tserviceDiscovery?: ServiceDiscovery;\n}\n\nfunction deriveRequestId(\n\toptions: RequestContextOptions,\n\tevent: unknown,\n\tcontext: Context | undefined,\n): string {\n\treturn (\n\t\toptions.getRequestId?.(event, context as Context) ??\n\t\tcontext?.awsRequestId ??\n\t\tcrypto.randomUUID()\n\t);\n}\n\nfunction buildLogger(\n\tbaseLogger: Logger,\n\toptions: RequestContextOptions,\n\trequestId: string,\n\tevent: unknown,\n\tcontext: Context | undefined,\n): Logger {\n\treturn baseLogger.child({\n\t\trequestId,\n\t\t...(options.bindings?.(event, context as Context) ?? {}),\n\t});\n}\n\n/**\n * Middy middleware that establishes a request context for the handler so any\n * code it reaches — including `@geekmidas/services` service methods — can call\n * `serviceContext.getLogger()` / `getRequestId()` / `getRequestStartTime()`.\n *\n * Use this on standalone functions that need request-scoped logging. To also\n * resolve services, pair it with {@link addServices}, or use\n * {@link withServices} which bundles both.\n *\n * @example\n * ```ts\n * import middy from '@middy/core';\n * import { serviceContext } from '@geekmidas/services';\n * import { requestContext } from '@geekmidas/constructs/middy';\n *\n * export const handler = middy(async () => {\n * serviceContext.getLogger().info('tick');\n * }).use(requestContext());\n * ```\n */\nexport function requestContext(\n\toptions: RequestContextOptions = {},\n): MiddlewareObj<unknown, unknown, Error, Context> {\n\tconst baseLogger = options.logger ?? new ConsoleLogger();\n\treturn {\n\t\tbefore: (request) => {\n\t\t\tconst { event, context } = request;\n\t\t\tconst requestId = deriveRequestId(options, event, context);\n\t\t\tconst logger = buildLogger(\n\t\t\t\tbaseLogger,\n\t\t\t\toptions,\n\t\t\t\trequestId,\n\t\t\t\tevent,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t\tenterRequestContext({ logger, requestId, startTime: Date.now() });\n\t\t},\n\t\tafter: () => {\n\t\t\texitRequestContext();\n\t\t},\n\t\tonError: () => {\n\t\t\texitRequestContext();\n\t\t},\n\t};\n}\n\nfunction resolveDiscovery(options: ServiceMiddlewareOptions): ServiceDiscovery {\n\treturn (\n\t\toptions.serviceDiscovery ??\n\t\tServiceDiscovery.getInstance(\n\t\t\toptions.envParser ?? new EnvironmentParser({ ...process.env }),\n\t\t)\n\t);\n}\n\n/**\n * Event augmentation applied by {@link addServices} / {@link withServices}:\n * resolved services keyed by `serviceName`. Intersect it with your own event\n * type to type the handler, e.g. `(event: EventServices<T> & APIGatewayEvent)`.\n */\nexport type EventServices<T extends Service[]> = {\n\tservices: ServiceRecord<T>;\n};\n\n/**\n * Middy middleware that resolves an array of {@link Service}s via\n * {@link ServiceDiscovery} and attaches the resolved record to `event.services`\n * (keyed by each service's `serviceName`), matching how the `Function`/`Cron`\n * constructs expose services on the event.\n *\n * This middleware only resolves services; it does **not** establish a request\n * context. If your services read `serviceContext` (e.g. `getLogger()`), pair it\n * with {@link requestContext}, or use {@link withServices} which bundles both.\n *\n * Chainable — `.use(addServices([a])).use(addServices([b]))` accumulates onto\n * `event.services`.\n *\n * @example\n * ```ts\n * import middy from '@middy/core';\n * import { addServices, requestContext } from '@geekmidas/constructs/middy';\n *\n * export const handler = middy(async (event) => {\n * await event.services.database.users.deletePast();\n * event.services.cache.clear();\n * })\n * .use(requestContext())\n * .use(addServices([databaseService, cacheService], { envParser }));\n * ```\n */\nexport function addServices<const T extends Service[]>(\n\tservices: [...T],\n\toptions: ServiceMiddlewareOptions = {},\n): MiddlewareObj<EventServices<T>, unknown, Error, Context> {\n\tconst discovery = resolveDiscovery(options);\n\n\treturn {\n\t\tbefore: async (request) => {\n\t\t\tconst resolved = await discovery.register(services);\n\t\t\tset(request, 'event.services', resolved);\n\t\t},\n\t};\n}\n\n/**\n * Batteries-included Middy setup for service-backed handlers: returns a pair of\n * middlewares — {@link requestContext} followed by {@link addServices} — so a\n * single `.use(withServices([...]))` gives the handler both a request context\n * and the resolved services on `event.services`.\n *\n * @example\n * ```ts\n * import middy from '@middy/core';\n * import { withServices } from '@geekmidas/constructs/middy';\n *\n * export const handler = middy(async (event) => {\n * await event.services.database.users.deletePast();\n * event.services.cache.clear();\n * }).use(withServices([databaseService, cacheService], { envParser }));\n * ```\n */\nexport function withServices<const T extends Service[]>(\n\tservices: [...T],\n\toptions: ServiceMiddlewareOptions = {},\n): [\n\tMiddlewareObj<unknown, unknown, Error, Context>,\n\tMiddlewareObj<EventServices<T>, unknown, Error, Context>,\n] {\n\treturn [requestContext(options), addServices(services, options)];\n}\n"],"mappings":";;;;;;;;AAsEA,SAAS,gBACRA,SACAC,OACAC,SACS;AACT,QACC,QAAQ,eAAe,OAAO,QAAmB,IACjD,SAAS,gBACT,OAAO,YAAY;AAEpB;AAED,SAAS,YACRC,YACAH,SACAI,WACAH,OACAC,SACS;AACT,QAAO,WAAW,MAAM;EACvB;EACA,GAAI,QAAQ,WAAW,OAAO,QAAmB,IAAI,CAAE;CACvD,EAAC;AACF;;;;;;;;;;;;;;;;;;;;;AAsBD,SAAgB,eACfF,UAAiC,CAAE,GACe;CAClD,MAAM,aAAa,QAAQ,UAAU,IAAI;AACzC,QAAO;EACN,QAAQ,CAAC,YAAY;GACpB,MAAM,EAAE,OAAO,SAAS,GAAG;GAC3B,MAAM,YAAY,gBAAgB,SAAS,OAAO,QAAQ;GAC1D,MAAM,SAAS,YACd,YACA,SACA,WACA,OACA,QACA;AACD,uBAAoB;IAAE;IAAQ;IAAW,WAAW,KAAK,KAAK;GAAE,EAAC;EACjE;EACD,OAAO,MAAM;AACZ,uBAAoB;EACpB;EACD,SAAS,MAAM;AACd,uBAAoB;EACpB;CACD;AACD;AAED,SAAS,iBAAiBK,SAAqD;AAC9E,QACC,QAAQ,oBACR,iBAAiB,YAChB,QAAQ,aAAa,IAAI,kBAAkB,EAAE,GAAG,QAAQ,IAAK,GAC7D;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCD,SAAgB,YACfC,UACAD,UAAoC,CAAE,GACqB;CAC3D,MAAM,YAAY,iBAAiB,QAAQ;AAE3C,QAAO,EACN,QAAQ,OAAO,YAAY;EAC1B,MAAM,WAAW,MAAM,UAAU,SAAS,SAAS;AACnD,6BAAI,SAAS,kBAAkB,SAAS;CACxC,EACD;AACD;;;;;;;;;;;;;;;;;;AAmBD,SAAgB,aACfC,UACAD,UAAoC,CAAE,GAIrC;AACD,QAAO,CAAC,eAAe,QAAQ,EAAE,YAAY,UAAU,QAAQ,AAAC;AAChE"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
const require_chunk = require('../chunk-DWy1uDak.cjs');
|
|
2
2
|
require('../Construct-DXfLPGwg.cjs');
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
3
|
+
const require_functions = require('../functions-_OAiwGYh.cjs');
|
|
4
|
+
const require_publisher = require('../publisher-BZgcrVPy.cjs');
|
|
5
|
+
require('../lodash-CM4k4sZD.cjs');
|
|
6
|
+
const require_lazyAccessors = require('../lazyAccessors-B4rtX68K.cjs');
|
|
7
|
+
const require_processAudits = require('../processAudits-CPcACKCA.cjs');
|
|
8
|
+
const require_HonoEndpointAdaptor = require('../HonoEndpointAdaptor-CNIsjEw-.cjs');
|
|
7
9
|
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
8
10
|
const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
|
|
9
11
|
const __geekmidas_audit = require_chunk.__toESM(require("@geekmidas/audit"));
|
|
@@ -253,7 +255,7 @@ var TestEndpointAdaptor = class TestEndpointAdaptor {
|
|
|
253
255
|
}, { db: rawDb });
|
|
254
256
|
const { output, metadata } = result;
|
|
255
257
|
ctx.publisher && await this.serviceDiscovery.register([ctx.publisher]);
|
|
256
|
-
await
|
|
258
|
+
await require_publisher.publishConstructEvents(this.endpoint, output, this.serviceDiscovery);
|
|
257
259
|
const headers = { ...metadata.headers || {} };
|
|
258
260
|
if (metadata.cookies && metadata.cookies.size > 0) {
|
|
259
261
|
const setCookieValues = [];
|
|
@@ -334,7 +336,7 @@ var TestFunctionAdaptor = class TestFunctionAdaptor {
|
|
|
334
336
|
await auditor.flush();
|
|
335
337
|
}
|
|
336
338
|
}
|
|
337
|
-
await
|
|
339
|
+
await require_publisher.publishEvents(logger, this.serviceDiscovery, this.fn.events, output, this.fn.publisherService);
|
|
338
340
|
return output;
|
|
339
341
|
});
|
|
340
342
|
}
|
|
@@ -375,7 +377,7 @@ var TestSubscriberAdaptor = class TestSubscriberAdaptor {
|
|
|
375
377
|
if (validationResult.issues) throw new Error("Subscriber output validation failed");
|
|
376
378
|
output = validationResult.value;
|
|
377
379
|
}
|
|
378
|
-
await
|
|
380
|
+
await require_publisher.publishEvents(logger, this.serviceDiscovery, this.subscriber.events, output, this.subscriber.publisherService);
|
|
379
381
|
return output;
|
|
380
382
|
});
|
|
381
383
|
}
|