@geekmidas/constructs 10.0.0-alpha.101 → 10.0.0-alpha.103
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/dist/{Endpoint-BG4UJ9oA.mjs → Endpoint-BW-nFdL_.mjs} +67 -3
- package/dist/Endpoint-BW-nFdL_.mjs.map +1 -0
- package/dist/{Endpoint-aCvBMPoH.d.cts → Endpoint-BWyKCa2x.d.cts} +47 -9
- package/dist/Endpoint-BWyKCa2x.d.cts.map +1 -0
- package/dist/{Endpoint-BoUg8ocM.cjs → Endpoint-B_UHlLxv.cjs} +78 -2
- package/dist/Endpoint-B_UHlLxv.cjs.map +1 -0
- package/dist/{Endpoint-Du-NwPX2.d.mts → Endpoint-C3r2OzOD.d.mts} +47 -9
- package/dist/Endpoint-C3r2OzOD.d.mts.map +1 -0
- package/dist/{EndpointFactory-BDtsrEvJ.mjs → EndpointFactory-Bbmx4vXc.mjs} +7 -2
- package/dist/EndpointFactory-Bbmx4vXc.mjs.map +1 -0
- package/dist/{EndpointFactory-I7s1co3Y.d.cts → EndpointFactory-C1-IBwm4.d.cts} +9 -4
- package/dist/EndpointFactory-C1-IBwm4.d.cts.map +1 -0
- package/dist/{EndpointFactory-DMYdJCOj.d.mts → EndpointFactory-C9eVhDKF.d.mts} +9 -4
- package/dist/EndpointFactory-C9eVhDKF.d.mts.map +1 -0
- package/dist/{EndpointFactory-DJ7gXLpR.cjs → EndpointFactory-DeZTvDjU.cjs} +7 -2
- package/dist/{EndpointFactory-BDtsrEvJ.mjs.map → EndpointFactory-DeZTvDjU.cjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-PtPlbeKY.mjs → HonoEndpointAdaptor-RSvRnXSl.mjs} +38 -14
- package/dist/HonoEndpointAdaptor-RSvRnXSl.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-zVzVLJEO.cjs → HonoEndpointAdaptor-eCKyEOl_.cjs} +41 -17
- package/dist/HonoEndpointAdaptor-eCKyEOl_.cjs.map +1 -0
- package/dist/adaptors/aws.cjs +66 -27
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +23 -10
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +23 -10
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +63 -24
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +1 -1
- package/dist/adaptors/hono.d.cts +1 -1
- package/dist/adaptors/hono.d.cts.map +1 -1
- package/dist/adaptors/hono.d.mts +1 -1
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +1 -1
- package/dist/adaptors/testing.cjs +26 -13
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +2 -2
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +2 -2
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +24 -11
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/credential-DYymbp_7.cjs +257 -0
- package/dist/credential-DYymbp_7.cjs.map +1 -0
- package/dist/credential-DfSAOOdY.mjs +222 -0
- package/dist/credential-DfSAOOdY.mjs.map +1 -0
- package/dist/credential.cjs +7 -155
- package/dist/credential.d.cts +2 -86
- package/dist/credential.d.mts +2 -86
- package/dist/credential.mjs +2 -152
- package/dist/endpoints/index.cjs +15 -9
- package/dist/endpoints/index.d.cts +57 -3
- package/dist/endpoints/index.d.cts.map +1 -1
- package/dist/endpoints/index.d.mts +57 -3
- package/dist/endpoints/index.d.mts.map +1 -1
- package/dist/endpoints/index.mjs +4 -4
- package/dist/external-api.cjs +3 -39
- package/dist/external-api.cjs.map +1 -1
- package/dist/external-api.d.cts +2 -2
- package/dist/external-api.d.mts +2 -2
- package/dist/external-api.mjs +1 -37
- package/dist/external-api.mjs.map +1 -1
- package/dist/fake-BcHTPz7N.d.mts +201 -0
- package/dist/fake-BcHTPz7N.d.mts.map +1 -0
- package/dist/fake-Dvion_Fh.d.cts +201 -0
- package/dist/fake-Dvion_Fh.d.cts.map +1 -0
- package/dist/{processAudits-DasOZjPl.cjs → rateLimit-BwHcMECR.cjs} +26 -5
- package/dist/rateLimit-BwHcMECR.cjs.map +1 -0
- package/dist/{processAudits-BRRVVHUB.mjs → rateLimit-DbOTsP01.mjs} +23 -2
- package/dist/rateLimit-DbOTsP01.mjs.map +1 -0
- package/dist/{lazyAccessors-CFanua0O.mjs → readRequestBody-BTIl3k-D.mjs} +99 -2
- package/dist/readRequestBody-BTIl3k-D.mjs.map +1 -0
- package/dist/{lazyAccessors-hJKGv8Ay.cjs → readRequestBody-Dej_L3c4.cjs} +122 -1
- package/dist/readRequestBody-Dej_L3c4.cjs.map +1 -0
- package/dist/rest-api.cjs +1 -1
- package/dist/rest-api.d.cts +2 -2
- package/dist/rest-api.d.mts +2 -2
- package/dist/rest-api.mjs +1 -1
- package/package.json +31 -31
- package/dist/Endpoint-BG4UJ9oA.mjs.map +0 -1
- package/dist/Endpoint-BoUg8ocM.cjs.map +0 -1
- package/dist/Endpoint-Du-NwPX2.d.mts.map +0 -1
- package/dist/Endpoint-aCvBMPoH.d.cts.map +0 -1
- package/dist/EndpointFactory-DJ7gXLpR.cjs.map +0 -1
- package/dist/EndpointFactory-DMYdJCOj.d.mts.map +0 -1
- package/dist/EndpointFactory-I7s1co3Y.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-PtPlbeKY.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-zVzVLJEO.cjs.map +0 -1
- package/dist/credential.cjs.map +0 -1
- package/dist/credential.d.cts.map +0 -1
- package/dist/credential.d.mts.map +0 -1
- package/dist/credential.mjs.map +0 -1
- package/dist/external-api-MJ8id87V.d.mts +0 -105
- package/dist/external-api-MJ8id87V.d.mts.map +0 -1
- package/dist/external-api-O107yzZJ.d.cts +0 -105
- package/dist/external-api-O107yzZJ.d.cts.map +0 -1
- package/dist/lazyAccessors-CFanua0O.mjs.map +0 -1
- package/dist/lazyAccessors-hJKGv8Ay.cjs.map +0 -1
- package/dist/processAudits-BRRVVHUB.mjs.map +0 -1
- package/dist/processAudits-DasOZjPl.cjs.map +0 -1
package/dist/adaptors/aws.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ import { t as StandardSchemaV1 } from "../index-CeEtxDmK.cjs";
|
|
|
2
2
|
import { i as FunctionHandler, n as Function$1 } from "../Function-Pu-1kKZz.cjs";
|
|
3
3
|
import { t as Cron } from "../Cron-DI3nKoic.cjs";
|
|
4
4
|
import { t as HttpMethod } from "../types-DMuSQeLL.cjs";
|
|
5
|
-
import { c as EndpointSchemas, i as Endpoint, r as CookieFn } from "../Endpoint-
|
|
5
|
+
import { c as EndpointSchemas, i as Endpoint, r as CookieFn } from "../Endpoint-BWyKCa2x.cjs";
|
|
6
6
|
import { t as Telemetry } from "../lambdaTelemetry-8vnmVZQ5.cjs";
|
|
7
7
|
import { t as Queue } from "../Queue-HPyi0e1i.cjs";
|
|
8
8
|
import { t as Subscriber } from "../Subscriber-Bpp02cGr.cjs";
|
|
@@ -154,22 +154,35 @@ declare abstract class AmazonApiGatewayEndpoint<THandler extends AmazonApiGatewa
|
|
|
154
154
|
protected envParser: EnvironmentParser<{}>;
|
|
155
155
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TAuditStorage, TAuditStorageServiceName, TAuditAction>, options?: AmazonApiGatewayEndpointOptions);
|
|
156
156
|
private error;
|
|
157
|
-
abstract getInput(e: TEvent): GetInputResponse
|
|
157
|
+
abstract getInput(e: TEvent): Promise<GetInputResponse>;
|
|
158
158
|
/**
|
|
159
|
-
* Decodes the raw body from an API Gateway event
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* - Anything else → return decoded string as-is, let the schema handle it
|
|
159
|
+
* Decodes the raw body from an API Gateway event — base64 when API
|
|
160
|
+
* Gateway says so — and reads it by its Content-Type, as every adaptor
|
|
161
|
+
* does (see {@link readRequestBody}): JSON, an HTML form's fields, or text.
|
|
163
162
|
*
|
|
164
|
-
*
|
|
163
|
+
* A body with no Content-Type is read as JSON, as it always has been here.
|
|
165
164
|
*/
|
|
166
|
-
static decodeBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined):
|
|
165
|
+
static decodeBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined): Promise<unknown>;
|
|
166
|
+
/**
|
|
167
|
+
* The event's body, read only for an endpoint with a `.body()` schema —
|
|
168
|
+
* one without is handed no body, and is not refused a content type it
|
|
169
|
+
* never reads.
|
|
170
|
+
*/
|
|
171
|
+
protected readBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined): Promise<unknown>;
|
|
167
172
|
protected getCookies(e: TEvent): CookieFn;
|
|
168
173
|
private input;
|
|
169
174
|
abstract getLoggerContext(data: TEvent, context: Context): LoggerContext;
|
|
170
175
|
private logger;
|
|
171
176
|
private services;
|
|
172
177
|
private authorize;
|
|
178
|
+
/**
|
|
179
|
+
* The endpoint's `.rateLimit()`, after authorization as on every adaptor:
|
|
180
|
+
* over the limit it throws a 429, which `error()` answers with its
|
|
181
|
+
* headers; under it, the `X-RateLimit-*` headers go on the response.
|
|
182
|
+
*/
|
|
183
|
+
private rateLimit;
|
|
184
|
+
/** The path the request was made to, as the limiter keys a client by. */
|
|
185
|
+
private requestPath;
|
|
173
186
|
private database;
|
|
174
187
|
private session;
|
|
175
188
|
private events;
|
|
@@ -211,7 +224,7 @@ type HandlerEvent<T extends Function> = T extends ((event: infer E, context: Con
|
|
|
211
224
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.ts
|
|
212
225
|
export declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown> extends AmazonApiGatewayEndpoint<AmazonApiGatewayV1EndpointHandler, APIGatewayProxyEvent, TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession> {
|
|
213
226
|
protected readonly endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>;
|
|
214
|
-
getInput(e: APIGatewayProxyEvent): GetInputResponse
|
|
227
|
+
getInput(e: APIGatewayProxyEvent): Promise<GetInputResponse>;
|
|
215
228
|
getLoggerContext(data: APIGatewayProxyEvent, context: Context): LoggerContext;
|
|
216
229
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>, options?: AmazonApiGatewayEndpointOptions);
|
|
217
230
|
}
|
|
@@ -220,7 +233,7 @@ export declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod e
|
|
|
220
233
|
export declare class AmazonApiGatewayV2Endpoint<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown> extends AmazonApiGatewayEndpoint<AmazonApiGatewayV2EndpointHandler, APIGatewayProxyEventV2, TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession> {
|
|
221
234
|
protected readonly endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>;
|
|
222
235
|
getCookies(e: APIGatewayProxyEventV2): CookieFn;
|
|
223
|
-
getInput(e: APIGatewayProxyEventV2): GetInputResponse
|
|
236
|
+
getInput(e: APIGatewayProxyEventV2): Promise<GetInputResponse>;
|
|
224
237
|
getLoggerContext(event: APIGatewayProxyEventV2, context: Context): LoggerContext;
|
|
225
238
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>, options?: AmazonApiGatewayEndpointOptions);
|
|
226
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws.d.cts","names":["Function","AWSLambdaHandler","Function","AWSLambdaHandler"],"sources":["../../src/functions/FunctionExecutionWrapper.ts","../../src/functions/AWSLambdaFunction.ts","../../src/crons/AWSScheduledFunction.ts","../../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts","../../src/queue/AWSLambdaQueueAdaptor.ts","../../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"mappings":";;;;;;;;;;;;;;;;;uBAqBsB,yBACrB,eAAe,kDACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,sBAAsB,sCACtB,kDACA,uBACA,8CACA,qBAAqB,mCAAmC;YAM7C,WAAW;qBACF,IAAIA,WACtB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;EAnBH,YACW,WAAW,uBACF,IAAIA,WACtB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;YAKO,UAAU;MAEhB,UAAU;MAIV,oBAAoB,iBAAiB,cAAc;EAQvD,eAAe,QAAQ,cAAc;EAI/B,eAAe,QAAQ;;;;;EAkBvB,mBAAmB,QAAQ;;;;;EAkB3B,iBAAiB,QAAQ,QAAQ;;;;;;;;;EAuBjC,iBAAiB,GACtB,UAAU;IACT,UAAU,QAAQ;IAClB,KAAK;QACA,QAAQ,KACZ,QAAQ;EA2CL,iBAAiB,QACtB,OAAO,SACL,QAAQ,8BAA8B;EASnC,cAAc,UAAU,oBAAoB,cAAW;EASvD,8BAA8B,UAAU,0BAC7C,eACA,QAAQ,IACN,QAAQ,8BAA8B;;;;KC5L9BC,mBAAiB,cAAc,iBAAiB,QAC3D,QACA;qBAuCY,kBACZ,eAAe,kDACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,sBAAsB,sCACtB,kDACA,uBACA,8CACA,qBAAqB,mCAAmC,0CAI/C,yBACT,QACA,YACA,WACA,SACA,eACA,0BACA,WACA,sBACA;WAImB,IAAIC,WACrB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;EAnBH,YACC,WAAW,uBACO,IAAIA,WACrB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;UAOK;UAoBA;UAcA;UAuCA;UA2BA;UAgBA;UAgBA;UA6BA;UAkBM;MAyBV,WAAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCvRH,qBACZ,eAAe,kDACf,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,mBAAmB,0CACnB,uBACA,sDACS,kBACT,QACA,YACA,WACA,4BAGA,WACA;EAGA,YACC,WAAW,uBACX,MAAM,KACL,QACA,WACA,SACA,YACA,WACA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"aws.d.cts","names":["Function","AWSLambdaHandler","Function","AWSLambdaHandler"],"sources":["../../src/functions/FunctionExecutionWrapper.ts","../../src/functions/AWSLambdaFunction.ts","../../src/crons/AWSScheduledFunction.ts","../../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts","../../src/queue/AWSLambdaQueueAdaptor.ts","../../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"mappings":"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,mCACA,sBACA,QACA,SACA,QACA,YACA,WACA,SACA;qBAqD6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA;EA1Da,SAAS,GAAG,uBAAuB,QAAQ;EAgCjD,iBACR,MAAM,sBACN,SAAS,UACP;EAeH,YAC6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA,WAED,UAAS;;;;qBC9EE,2BACZ,uBACA,gBAAgB,YAChB,eAAe,sBACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,4BACS,yBACT,mCACA,wBACA,QACA,SACA,QACA,YACA,WACA,SACA;qBA2C6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA;EAhDO,WAAW,GAAG,yBAAyB;EAOjC,SACd,GAAG,yBACD,QAAQ;EAaF,iBACR,OAAO,wBACP,SAAS,UACP;EAeH,YAC6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA,WAED,UAAS;;;;KCpECE,mBAAiB,cAAc,iBAAiB,QAC3D,QACA;;;;;;;;;;;;qBAcY,eACZ,+BACA,iBAAiB,mBAAmB,kBACpC,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,uBACA;mBAKkB;WACR,OAAO,MACf,OACA,UACA,WACA,SACA,WACA;UAVM;EAER,YACkB,WAAW,uBACnB,OAAO,MACf,OACA,UACA,WACA,SACA,WACA;MAIE,UAAU;UAIA;;UAkBA;UAaN;;;;;UAYA;UAQM;MAsEV,WAAWA,mBAAiB,UAAU;;;;KCnK/B,iBAAiB,cAAc,iBAAiB,QAC3D,QACA;qBAsBY,oBACZ,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,kBAAkB,0CAClB,wBAAwB,6CACxB,sCACA,uBACA;UAKS;WACC,YAAY,WACpB,WACA,SACA,WACA,iBACA,mBACA,WACA;UAXM;EAER,YACS,WAAW,uBACV,YAAY,WACpB,WACA,SACA,WACA,iBACA,mBACA,WACA;MAME,UAAU;UAIN;UAYA;UAmBA;UAaA;UAkBM;MAWV,WAAW"}
|
package/dist/adaptors/aws.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { t as StandardSchemaV1 } from "../index-CeEtxDmK.mjs";
|
|
|
2
2
|
import { i as FunctionHandler, n as Function$1 } from "../Function-DuqGcbOI.mjs";
|
|
3
3
|
import { t as Cron } from "../Cron-uYAHPnp7.mjs";
|
|
4
4
|
import { t as HttpMethod } from "../types-DMuSQeLL.mjs";
|
|
5
|
-
import { c as EndpointSchemas, i as Endpoint, r as CookieFn } from "../Endpoint-
|
|
5
|
+
import { c as EndpointSchemas, i as Endpoint, r as CookieFn } from "../Endpoint-C3r2OzOD.mjs";
|
|
6
6
|
import { t as Telemetry } from "../lambdaTelemetry-8vnmVZQ5.mjs";
|
|
7
7
|
import { t as Queue } from "../Queue-DlsHRzUp.mjs";
|
|
8
8
|
import { t as Subscriber } from "../Subscriber-CtN9R48-.mjs";
|
|
@@ -154,22 +154,35 @@ declare abstract class AmazonApiGatewayEndpoint<THandler extends AmazonApiGatewa
|
|
|
154
154
|
protected envParser: EnvironmentParser<{}>;
|
|
155
155
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TAuditStorage, TAuditStorageServiceName, TAuditAction>, options?: AmazonApiGatewayEndpointOptions);
|
|
156
156
|
private error;
|
|
157
|
-
abstract getInput(e: TEvent): GetInputResponse
|
|
157
|
+
abstract getInput(e: TEvent): Promise<GetInputResponse>;
|
|
158
158
|
/**
|
|
159
|
-
* Decodes the raw body from an API Gateway event
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* - Anything else → return decoded string as-is, let the schema handle it
|
|
159
|
+
* Decodes the raw body from an API Gateway event — base64 when API
|
|
160
|
+
* Gateway says so — and reads it by its Content-Type, as every adaptor
|
|
161
|
+
* does (see {@link readRequestBody}): JSON, an HTML form's fields, or text.
|
|
163
162
|
*
|
|
164
|
-
*
|
|
163
|
+
* A body with no Content-Type is read as JSON, as it always has been here.
|
|
165
164
|
*/
|
|
166
|
-
static decodeBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined):
|
|
165
|
+
static decodeBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined): Promise<unknown>;
|
|
166
|
+
/**
|
|
167
|
+
* The event's body, read only for an endpoint with a `.body()` schema —
|
|
168
|
+
* one without is handed no body, and is not refused a content type it
|
|
169
|
+
* never reads.
|
|
170
|
+
*/
|
|
171
|
+
protected readBody(body: string | undefined | null, isBase64Encoded: boolean | undefined, contentType: string | undefined): Promise<unknown>;
|
|
167
172
|
protected getCookies(e: TEvent): CookieFn;
|
|
168
173
|
private input;
|
|
169
174
|
abstract getLoggerContext(data: TEvent, context: Context): LoggerContext;
|
|
170
175
|
private logger;
|
|
171
176
|
private services;
|
|
172
177
|
private authorize;
|
|
178
|
+
/**
|
|
179
|
+
* The endpoint's `.rateLimit()`, after authorization as on every adaptor:
|
|
180
|
+
* over the limit it throws a 429, which `error()` answers with its
|
|
181
|
+
* headers; under it, the `X-RateLimit-*` headers go on the response.
|
|
182
|
+
*/
|
|
183
|
+
private rateLimit;
|
|
184
|
+
/** The path the request was made to, as the limiter keys a client by. */
|
|
185
|
+
private requestPath;
|
|
173
186
|
private database;
|
|
174
187
|
private session;
|
|
175
188
|
private events;
|
|
@@ -211,7 +224,7 @@ type HandlerEvent<T extends Function> = T extends ((event: infer E, context: Con
|
|
|
211
224
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.ts
|
|
212
225
|
export declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown> extends AmazonApiGatewayEndpoint<AmazonApiGatewayV1EndpointHandler, APIGatewayProxyEvent, TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession> {
|
|
213
226
|
protected readonly endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>;
|
|
214
|
-
getInput(e: APIGatewayProxyEvent): GetInputResponse
|
|
227
|
+
getInput(e: APIGatewayProxyEvent): Promise<GetInputResponse>;
|
|
215
228
|
getLoggerContext(data: APIGatewayProxyEvent, context: Context): LoggerContext;
|
|
216
229
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>, options?: AmazonApiGatewayEndpointOptions);
|
|
217
230
|
}
|
|
@@ -220,7 +233,7 @@ export declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod e
|
|
|
220
233
|
export declare class AmazonApiGatewayV2Endpoint<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown> extends AmazonApiGatewayEndpoint<AmazonApiGatewayV2EndpointHandler, APIGatewayProxyEventV2, TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession> {
|
|
221
234
|
protected readonly endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>;
|
|
222
235
|
getCookies(e: APIGatewayProxyEventV2): CookieFn;
|
|
223
|
-
getInput(e: APIGatewayProxyEventV2): GetInputResponse
|
|
236
|
+
getInput(e: APIGatewayProxyEventV2): Promise<GetInputResponse>;
|
|
224
237
|
getLoggerContext(event: APIGatewayProxyEventV2, context: Context): LoggerContext;
|
|
225
238
|
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession>, options?: AmazonApiGatewayEndpointOptions);
|
|
226
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws.d.mts","names":["Function","AWSLambdaHandler","Function","AWSLambdaHandler"],"sources":["../../src/functions/FunctionExecutionWrapper.ts","../../src/functions/AWSLambdaFunction.ts","../../src/crons/AWSScheduledFunction.ts","../../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts","../../src/queue/AWSLambdaQueueAdaptor.ts","../../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"mappings":";;;;;;;;;;;;;;;;;uBAqBsB,yBACrB,eAAe,kDACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,sBAAsB,sCACtB,kDACA,uBACA,8CACA,qBAAqB,mCAAmC;YAM7C,WAAW;qBACF,IAAIA,WACtB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;EAnBH,YACW,WAAW,uBACF,IAAIA,WACtB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;YAKO,UAAU;MAEhB,UAAU;MAIV,oBAAoB,iBAAiB,cAAc;EAQvD,eAAe,QAAQ,cAAc;EAI/B,eAAe,QAAQ;;;;;EAkBvB,mBAAmB,QAAQ;;;;;EAkB3B,iBAAiB,QAAQ,QAAQ;;;;;;;;;EAuBjC,iBAAiB,GACtB,UAAU;IACT,UAAU,QAAQ;IAClB,KAAK;QACA,QAAQ,KACZ,QAAQ;EA2CL,iBAAiB,QACtB,OAAO,SACL,QAAQ,8BAA8B;EASnC,cAAc,UAAU,oBAAoB,cAAW;EASvD,8BAA8B,UAAU,0BAC7C,eACA,QAAQ,IACN,QAAQ,8BAA8B;;;;KC5L9BC,mBAAiB,cAAc,iBAAiB,QAC3D,QACA;qBAuCY,kBACZ,eAAe,kDACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,sBAAsB,sCACtB,kDACA,uBACA,8CACA,qBAAqB,mCAAmC,0CAI/C,yBACT,QACA,YACA,WACA,SACA,eACA,0BACA,WACA,sBACA;WAImB,IAAIC,WACrB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;EAnBH,YACC,WAAW,uBACO,IAAIA,WACrB,QACA,WACA,SACA,YACA,eACA,0BACA,WACA,sBACA,cACA,gBACC,QACA,WACA,SACA,YACA,WACA,eACA;UAOK;UAoBA;UAcA;UAuCA;UA2BA;UAgBA;UAgBA;UA6BA;UAkBM;MAyBV,WAAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCvRH,qBACZ,eAAe,kDACf,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,mBAAmB,0CACnB,uBACA,sDACS,kBACT,QACA,YACA,WACA,4BAGA,WACA;EAGA,YACC,WAAW,uBACX,MAAM,KACL,QACA,WACA,SACA,YACA,WACA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"aws.d.mts","names":["Function","AWSLambdaHandler","Function","AWSLambdaHandler"],"sources":["../../src/functions/FunctionExecutionWrapper.ts","../../src/functions/AWSLambdaFunction.ts","../../src/crons/AWSScheduledFunction.ts","../../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts","../../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts","../../src/queue/AWSLambdaQueueAdaptor.ts","../../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"mappings":"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,mCACA,sBACA,QACA,SACA,QACA,YACA,WACA,SACA;qBAqD6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA;EA1Da,SAAS,GAAG,uBAAuB,QAAQ;EAgCjD,iBACR,MAAM,sBACN,SAAS,UACP;EAeH,YAC6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA,WAED,UAAS;;;;qBC9EE,2BACZ,uBACA,gBAAgB,YAChB,eAAe,sBACf,mBAAmB,0CACnB,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,4BACS,yBACT,mCACA,wBACA,QACA,SACA,QACA,YACA,WACA,SACA;qBA2C6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA;EAhDO,WAAW,GAAG,yBAAyB;EAOjC,SACd,GAAG,yBACD,QAAQ;EAaF,iBACR,OAAO,wBACP,SAAS,UACP;EAeH,YAC6B,UAAU,SACrC,QACA,SACA,QACA,YACA,WACA,SACA,WAED,UAAS;;;;KCpECE,mBAAiB,cAAc,iBAAiB,QAC3D,QACA;;;;;;;;;;;;qBAcY,eACZ,+BACA,iBAAiB,mBAAmB,kBACpC,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,uBACA;mBAKkB;WACR,OAAO,MACf,OACA,UACA,WACA,SACA,WACA;UAVM;EAER,YACkB,WAAW,uBACnB,OAAO,MACf,OACA,UACA,WACA,SACA,WACA;MAIE,UAAU;UAIA;;UAkBA;UAaN;;;;;UAYA;UAQM;MAsEV,WAAWA,mBAAiB,UAAU;;;;KCnK/B,iBAAiB,cAAc,iBAAiB,QAC3D,QACA;qBAsBY,oBACZ,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,kBAAkB,0CAClB,wBAAwB,6CACxB,sCACA,uBACA;UAKS;WACC,YAAY,WACpB,WACA,SACA,WACA,iBACA,mBACA,WACA;UAXM;EAER,YACS,WAAW,uBACV,YAAY,WACpB,WACA,SACA,WACA,iBACA,mBACA,WACA;MAME,UAAU;UAIN;UAYA;UAmBA;UAaA;UAkBM;MAWV,WAAW"}
|
package/dist/adaptors/aws.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { o as __toESM } from "../Construct-B1vGBPme.mjs";
|
|
2
2
|
import { n as recordCarrier } from "../tracing-CxaZ98IB.mjs";
|
|
3
3
|
import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-BFizikJU.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { o as require_lodash_set, r as ResponseBuilder, t as Endpoint } from "../Endpoint-BW-nFdL_.mjs";
|
|
5
5
|
import { n as envParserFor } from "../surfaceEnv-wMT5QzgZ.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { a as createApiGatewayCookies, i as readRequestBody } from "../readRequestBody-BTIl3k-D.mjs";
|
|
7
7
|
import { n as subscribedEvents, r as subscriberContext, t as runSubscriber } from "../runSubscriber-BHvJ8POr.mjs";
|
|
8
|
-
import { n as executeWithAuditTransaction, t as
|
|
8
|
+
import { n as createAuditContext, r as executeWithAuditTransaction, t as enforceRateLimit } from "../rateLimit-DbOTsP01.mjs";
|
|
9
9
|
import { consumeBatchTraced } from "@geekmidas/events";
|
|
10
10
|
import { ForbiddenError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
|
|
11
11
|
import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
|
|
@@ -239,7 +239,7 @@ var AWSScheduledFunction = class extends AWSLambdaFunction {
|
|
|
239
239
|
//#endregion
|
|
240
240
|
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
241
241
|
var import_lodash_set = /* @__PURE__ */ __toESM(require_lodash_set(), 1);
|
|
242
|
-
var AmazonApiGatewayEndpoint = class {
|
|
242
|
+
var AmazonApiGatewayEndpoint = class AmazonApiGatewayEndpoint {
|
|
243
243
|
endpoint;
|
|
244
244
|
options;
|
|
245
245
|
/**
|
|
@@ -263,23 +263,36 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
263
263
|
const wrappedError = wrapError(req.error);
|
|
264
264
|
req.response = {
|
|
265
265
|
statusCode: wrappedError.statusCode,
|
|
266
|
-
body: wrappedError.body
|
|
266
|
+
body: wrappedError.body,
|
|
267
|
+
...wrappedError.headers ? { headers: { ...wrappedError.headers } } : {}
|
|
267
268
|
};
|
|
268
269
|
} };
|
|
269
270
|
}
|
|
270
271
|
/**
|
|
271
|
-
* Decodes the raw body from an API Gateway event
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
* - Anything else → return decoded string as-is, let the schema handle it
|
|
272
|
+
* Decodes the raw body from an API Gateway event — base64 when API
|
|
273
|
+
* Gateway says so — and reads it by its Content-Type, as every adaptor
|
|
274
|
+
* does (see {@link readRequestBody}): JSON, an HTML form's fields, or text.
|
|
275
275
|
*
|
|
276
|
-
*
|
|
276
|
+
* A body with no Content-Type is read as JSON, as it always has been here.
|
|
277
277
|
*/
|
|
278
|
-
static decodeBody(body, isBase64Encoded, contentType) {
|
|
278
|
+
static async decodeBody(body, isBase64Encoded, contentType) {
|
|
279
279
|
if (!body) return void 0;
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
const bytes = Buffer.from(body, isBase64Encoded ? "base64" : "utf-8");
|
|
281
|
+
const request = new Request("http://api-gateway.invalid/", {
|
|
282
|
+
method: "POST",
|
|
283
|
+
headers: contentType ? { "content-type": contentType } : {},
|
|
284
|
+
body: bytes
|
|
285
|
+
});
|
|
286
|
+
return readRequestBody(request, contentType, { untyped: "json" });
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* The event's body, read only for an endpoint with a `.body()` schema —
|
|
290
|
+
* one without is handed no body, and is not refused a content type it
|
|
291
|
+
* never reads.
|
|
292
|
+
*/
|
|
293
|
+
readBody(body, isBase64Encoded, contentType) {
|
|
294
|
+
if (!this.endpoint.input?.body) return Promise.resolve(void 0);
|
|
295
|
+
return AmazonApiGatewayEndpoint.decodeBody(body, isBase64Encoded, contentType);
|
|
283
296
|
}
|
|
284
297
|
getCookies(e) {
|
|
285
298
|
const headers = e.headers;
|
|
@@ -288,7 +301,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
288
301
|
input() {
|
|
289
302
|
return { before: async (req) => {
|
|
290
303
|
try {
|
|
291
|
-
const { body, query, params } = this.getInput(req.event);
|
|
304
|
+
const { body, query, params } = await this.getInput(req.event);
|
|
292
305
|
const headers = req.event.headers;
|
|
293
306
|
const header = Endpoint.createHeaders(headers);
|
|
294
307
|
const cookie = this.getCookies(req.event);
|
|
@@ -343,6 +356,28 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
343
356
|
}
|
|
344
357
|
} };
|
|
345
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* The endpoint's `.rateLimit()`, after authorization as on every adaptor:
|
|
361
|
+
* over the limit it throws a 429, which `error()` answers with its
|
|
362
|
+
* headers; under it, the `X-RateLimit-*` headers go on the response.
|
|
363
|
+
*/
|
|
364
|
+
rateLimit() {
|
|
365
|
+
return { before: async (req) => {
|
|
366
|
+
if (!this.endpoint.rateLimit) return;
|
|
367
|
+
req.event.rateLimitHeaders = await enforceRateLimit(this.endpoint.rateLimit, {
|
|
368
|
+
header: req.event.header,
|
|
369
|
+
services: req.event.services,
|
|
370
|
+
logger: req.event.logger,
|
|
371
|
+
session: req.event.session,
|
|
372
|
+
path: this.requestPath(req.event),
|
|
373
|
+
method: this.endpoint.method
|
|
374
|
+
});
|
|
375
|
+
} };
|
|
376
|
+
}
|
|
377
|
+
/** The path the request was made to, as the limiter keys a client by. */
|
|
378
|
+
requestPath(event) {
|
|
379
|
+
return event.path ?? event.rawPath ?? this.endpoint.route;
|
|
380
|
+
}
|
|
346
381
|
database() {
|
|
347
382
|
return { before: async (req) => {
|
|
348
383
|
if (!this.endpoint.databaseService) return;
|
|
@@ -418,16 +453,18 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
418
453
|
data = response.data;
|
|
419
454
|
metadata = response.metadata;
|
|
420
455
|
}
|
|
456
|
+
const redirect = Endpoint.isRedirectStatus(metadata.status ?? this.endpoint.status);
|
|
421
457
|
return {
|
|
422
|
-
output: this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0,
|
|
458
|
+
output: this.endpoint.outputSchema && !redirect ? await this.endpoint.parseOutput(data) : void 0,
|
|
423
459
|
metadata,
|
|
424
|
-
responseBuilder
|
|
460
|
+
responseBuilder,
|
|
461
|
+
redirect
|
|
425
462
|
};
|
|
426
463
|
};
|
|
427
464
|
if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
428
465
|
return executeHandler(baseDb);
|
|
429
466
|
}, async (result, auditor) => {
|
|
430
|
-
if (!audits?.length) return;
|
|
467
|
+
if (!audits?.length || result.redirect) return;
|
|
431
468
|
for (const audit of audits) {
|
|
432
469
|
if (audit.when && !audit.when(result.output)) continue;
|
|
433
470
|
const payload = audit.payload(result.output);
|
|
@@ -446,8 +483,10 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
446
483
|
body
|
|
447
484
|
};
|
|
448
485
|
const baseHeaders = isJsonResponse ? void 0 : { "content-type": this.endpoint.responseType };
|
|
449
|
-
|
|
486
|
+
const rateLimitHeaders = event.rateLimitHeaders;
|
|
487
|
+
if (baseHeaders || rateLimitHeaders || metadata.headers && Object.keys(metadata.headers).length > 0) lambdaResponse.headers = {
|
|
450
488
|
...baseHeaders ?? {},
|
|
489
|
+
...rateLimitHeaders ?? {},
|
|
451
490
|
...metadata.headers ?? {}
|
|
452
491
|
};
|
|
453
492
|
if (metadata.cookies && metadata.cookies.size > 0) {
|
|
@@ -488,7 +527,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
488
527
|
}
|
|
489
528
|
get handler() {
|
|
490
529
|
const handler = this._handler.bind(this);
|
|
491
|
-
let chain = middy(handler).use(this.logger()).use(this.error()).use(this.services()).use(this.input()).use(this.database()).use(this.session()).use(this.authorize()).use(this.events());
|
|
530
|
+
let chain = middy(handler).use(this.logger()).use(this.error()).use(this.services()).use(this.input()).use(this.database()).use(this.session()).use(this.authorize()).use(this.rateLimit()).use(this.events());
|
|
492
531
|
const telemetryMiddleware = this.telemetry();
|
|
493
532
|
if (telemetryMiddleware) chain = chain.use(telemetryMiddleware);
|
|
494
533
|
if (this.options.telescope?.middleware) chain = chain.use(this.options.telescope.middleware);
|
|
@@ -531,14 +570,14 @@ function parseQueryParams(queryParams) {
|
|
|
531
570
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
|
|
532
571
|
var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
533
572
|
endpoint;
|
|
534
|
-
getInput(e) {
|
|
573
|
+
async getInput(e) {
|
|
535
574
|
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
536
575
|
const singleValueParams = e.queryStringParameters || {};
|
|
537
576
|
const mergedParams = {};
|
|
538
577
|
for (const [key, value] of Object.entries(singleValueParams)) if (value !== void 0) mergedParams[key] = value;
|
|
539
578
|
for (const [key, values] of Object.entries(multiValueParams)) if (values && values.length > 1) mergedParams[key] = values;
|
|
540
579
|
return {
|
|
541
|
-
body:
|
|
580
|
+
body: await this.readBody(e.body, e.isBase64Encoded, e.headers?.["Content-Type"] ?? e.headers?.["content-type"]),
|
|
542
581
|
query: parseQueryParams(mergedParams),
|
|
543
582
|
params: e.pathParameters || {}
|
|
544
583
|
};
|
|
@@ -570,9 +609,9 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
570
609
|
getCookies(e) {
|
|
571
610
|
return createApiGatewayCookies(e.cookies, e.headers?.cookie);
|
|
572
611
|
}
|
|
573
|
-
getInput(e) {
|
|
612
|
+
async getInput(e) {
|
|
574
613
|
return {
|
|
575
|
-
body:
|
|
614
|
+
body: await this.readBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
|
|
576
615
|
query: qs.parse(e.rawQueryString),
|
|
577
616
|
params: e.pathParameters || {}
|
|
578
617
|
};
|