@yopdev/dev-server 2.0.0-beta.1 → 2.0.0-beta.3
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.
|
@@ -3,14 +3,12 @@ import { DevServerConfig } from './config';
|
|
|
3
3
|
import { HttpSettings } from './http-server';
|
|
4
4
|
import { Authorizer, Route } from './lambda-http-proxy';
|
|
5
5
|
import { Callback, Service, Startable } from './services';
|
|
6
|
-
import {
|
|
7
|
-
export declare const newLambdaProxyFromCloudFormationTemplate: <Context, AuthorizerContext, Event_1, HandlerResponse>(name: string, settings: HttpSettings, config: CloudFormationLambdaProxyConfig<Context, AuthorizerContext, Event_1, HandlerResponse>, callback: Callback<string>) => Startable<Service<string>>;
|
|
6
|
+
import { LambdaPayloadVersion } from './mappers';
|
|
7
|
+
export declare const newLambdaProxyFromCloudFormationTemplate: <Context, AuthorizerContext, Event_1, HandlerResponse>(name: string, settings: HttpSettings, payloadVersion: LambdaPayloadVersion<AuthorizerContext, Event_1, HandlerResponse>, config: CloudFormationLambdaProxyConfig<Context, AuthorizerContext, Event_1, HandlerResponse>, callback: Callback<string>) => Startable<Service<string>>;
|
|
8
8
|
type CloudFormationLambdaProxyConfig<Context, AuthorizerContext, Event, HandlerResponse> = {
|
|
9
9
|
authorizer?: (config: DevServerConfig) => Authorizer<AuthorizerContext> | undefined;
|
|
10
10
|
extraRoutes: Route<Context, AuthorizerContext, Event, HandlerResponse>[];
|
|
11
|
-
pathParameterResolver: PathParameterResolver<Event>;
|
|
12
11
|
prepare?: (config: DevServerConfig) => Promise<void>;
|
|
13
12
|
context?: () => Context;
|
|
14
|
-
mapper?: LambdaMapperFactory<AuthorizerContext, Event, HandlerResponse>;
|
|
15
13
|
} & CloudFormationSetupConfig;
|
|
16
14
|
export {};
|
|
@@ -6,10 +6,10 @@ const lambda_http_proxy_1 = require("./lambda-http-proxy");
|
|
|
6
6
|
const PATH_VARIABLE_CAPTURE = /{(.*?)}/g;
|
|
7
7
|
const QUERY_STRING_OR_LOCATION_REG_EXP = '(?:([?#].*))?';
|
|
8
8
|
const PROXY_PATH_PARAM = 'proxy';
|
|
9
|
-
const newLambdaProxyFromCloudFormationTemplate = (name, settings, config, callback) => new CloudFormationLambdaProxy(name, settings, config.extraRoutes, config, callback);
|
|
9
|
+
const newLambdaProxyFromCloudFormationTemplate = (name, settings, payloadVersion, config, callback) => new CloudFormationLambdaProxy(name, settings, config.extraRoutes, payloadVersion, config, callback);
|
|
10
10
|
exports.newLambdaProxyFromCloudFormationTemplate = newLambdaProxyFromCloudFormationTemplate;
|
|
11
11
|
class CloudFormationLambdaProxy extends cloudformation_1.CloudFormationSetup {
|
|
12
|
-
constructor(name, settings, extraRoutes, config, callback) {
|
|
12
|
+
constructor(name, settings, extraRoutes, payloadVersion, config, callback) {
|
|
13
13
|
super(name, (event) => event.Type === 'HttpApi', async (event, handler) => Promise.resolve(this.pathWithCapturingGroups(event.Properties.Path)).then((pathWithCapturingGroups) => ({
|
|
14
14
|
method: new RegExp(event.Properties.Method),
|
|
15
15
|
path: new RegExp(`^${pathWithCapturingGroups}${QUERY_STRING_OR_LOCATION_REG_EXP}?$`),
|
|
@@ -36,9 +36,9 @@ class CloudFormationLambdaProxy extends cloudformation_1.CloudFormationSetup {
|
|
|
36
36
|
.map(([k, v]) => [k, decodeURIComponent(v)])));
|
|
37
37
|
return handler(event, context?.());
|
|
38
38
|
};
|
|
39
|
-
this.mapper =
|
|
39
|
+
this.mapper = payloadVersion.mapper;
|
|
40
40
|
this.authorizer = config?.authorizer;
|
|
41
|
-
this.pathParameterResolver =
|
|
41
|
+
this.pathParameterResolver = payloadVersion.resolver;
|
|
42
42
|
}
|
|
43
43
|
logHandler(handler) {
|
|
44
44
|
return `detected handler for ${handler.method} on ${handler.path} with weight ${handler.weight}`;
|
package/dist/src/mappers.d.ts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Message } from "@aws-sdk/client-sqs";
|
|
3
|
-
import {
|
|
3
|
+
import { APIGatewayProxyEvent, APIGatewayProxyEventPathParameters, APIGatewayProxyEventV2, APIGatewayProxyResult, APIGatewayProxyStructuredResultV2, SQSRecord } from "aws-lambda";
|
|
4
4
|
import { IncomingMessage } from "http";
|
|
5
5
|
import { Response } from "./lambda-http-proxy";
|
|
6
6
|
export declare const mapToLambdaSqsRecord: (message: Message) => SQSRecord;
|
|
7
|
-
export
|
|
8
|
-
mapper: LambdaMapperFactory<
|
|
9
|
-
resolver: PathParameterResolver<
|
|
10
|
-
};
|
|
11
|
-
export declare const v2: {
|
|
12
|
-
mapper: LambdaMapperFactory<unknown, APIGatewayEventRequestContextV2WithGenericAuthorizer<unknown>, APIGatewayProxyStructuredResultV2>;
|
|
13
|
-
resolver: PathParameterResolver<APIGatewayProxyEventV2>;
|
|
7
|
+
export type LambdaPayloadVersion<AuthorizerContext, Event, HandlerResponse> = {
|
|
8
|
+
mapper: LambdaMapperFactory<AuthorizerContext, Event, HandlerResponse>;
|
|
9
|
+
resolver: PathParameterResolver<Event>;
|
|
14
10
|
};
|
|
11
|
+
export declare const v1: <AuthorizerContext>() => LambdaPayloadVersion<AuthorizerContext, APIGatewayProxyEvent, APIGatewayProxyResult>;
|
|
12
|
+
export declare const v2: <AuthorizerContext>() => LambdaPayloadVersion<AuthorizerContext, APIGatewayProxyEventV2, APIGatewayProxyStructuredResultV2>;
|
|
15
13
|
interface LambdaMapper<AuthorizerContext, Event, HandlerResponse> {
|
|
16
14
|
event(context: AuthorizerContext): Event;
|
|
17
15
|
authorization(): string;
|
|
@@ -20,7 +18,6 @@ interface LambdaMapper<AuthorizerContext, Event, HandlerResponse> {
|
|
|
20
18
|
export interface LambdaMapperFactory<AuthorizerContext, Event, LambdaResponse> {
|
|
21
19
|
newInstance(request: IncomingMessage, body: string): Promise<LambdaMapper<AuthorizerContext, Event, LambdaResponse>>;
|
|
22
20
|
}
|
|
23
|
-
type APIGatewayEventRequestContextV2WithGenericAuthorizer<AuthorizerContext> = APIGatewayProxyEventV2WithRequestContext<APIGatewayEventRequestContextV2WithAuthorizer<AuthorizerContext>>;
|
|
24
21
|
export type PathParameterResolver<Event> = {
|
|
25
22
|
locate: (event: Event) => string;
|
|
26
23
|
store: (event: Event, params: APIGatewayProxyEventPathParameters) => void;
|
package/dist/src/mappers.js
CHANGED
|
@@ -38,14 +38,16 @@ const payloadV2PathParameterResolver = {
|
|
|
38
38
|
locate: (event) => event.rawPath,
|
|
39
39
|
store: (event, params) => event.pathParameters = params
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
const v1 = () => ({
|
|
42
42
|
mapper: payloadV1JwtAuthorizerLambdaMapper(),
|
|
43
43
|
resolver: payloadV1PathParameterResolver,
|
|
44
|
-
};
|
|
45
|
-
exports.
|
|
44
|
+
});
|
|
45
|
+
exports.v1 = v1;
|
|
46
|
+
const v2 = () => ({
|
|
46
47
|
mapper: payloadV2LambdaAuthorizerLambdaMapper(),
|
|
47
48
|
resolver: payloadV2PathParameterResolver,
|
|
48
|
-
};
|
|
49
|
+
});
|
|
50
|
+
exports.v2 = v2;
|
|
49
51
|
class DefaultLambdaMapper {
|
|
50
52
|
constructor(request, body) {
|
|
51
53
|
this.body = body;
|
|
@@ -129,8 +131,11 @@ class DefaultLambdaMapper {
|
|
|
129
131
|
headers['content-type'] = request.headers['content-type'];
|
|
130
132
|
if (request.headers['accept'])
|
|
131
133
|
headers['accept'] = request.headers['accept'];
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
const authorizationHeaderValue = request.headers['authorization'];
|
|
135
|
+
if (authorizationHeaderValue) {
|
|
136
|
+
headers['authorization'] = authorizationHeaderValue;
|
|
137
|
+
this.authorizationHeaderValue = authorizationHeaderValue;
|
|
138
|
+
}
|
|
134
139
|
this.headers = headers;
|
|
135
140
|
this.url = url;
|
|
136
141
|
this.time = 1428582896000;
|