@digitraffic/common 2022.11.11-1 → 2022.11.23-1
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/aws/infra/api/integration.d.ts +1 -1
- package/dist/aws/infra/api/integration.js +8 -4
- package/dist/aws/infra/api/integration.js.map +1 -1
- package/dist/aws/infra/api/response.d.ts +8 -1
- package/dist/aws/infra/api/response.js +36 -11
- package/dist/aws/infra/api/response.js.map +1 -1
- package/dist/aws/infra/api/responses.d.ts +8 -0
- package/dist/aws/infra/api/responses.js +8 -0
- package/dist/aws/infra/api/responses.js.map +1 -1
- package/dist/database/database.js.map +1 -1
- package/package.json +4 -3
- package/src/aws/infra/api/integration.ts +30 -14
- package/src/aws/infra/api/response.ts +83 -20
- package/src/aws/infra/api/responses.ts +8 -0
- package/src/database/database.ts +1 -1
@@ -1,7 +1,7 @@
|
|
1
1
|
import { IntegrationResponse, LambdaIntegration } from "aws-cdk-lib/aws-apigateway";
|
2
2
|
import { IFunction } from "aws-cdk-lib/aws-lambda";
|
3
3
|
import { MediaType } from "../../types/mediatypes";
|
4
|
-
declare type ParameterType =
|
4
|
+
declare type ParameterType = "path" | "querystring";
|
5
5
|
interface ApiParameter {
|
6
6
|
type: ParameterType;
|
7
7
|
name: string;
|
@@ -11,11 +11,11 @@ class DigitrafficIntegration {
|
|
11
11
|
this.mediaType = mediaType;
|
12
12
|
}
|
13
13
|
addPathParameter(...names) {
|
14
|
-
names.forEach(name => this.parameters.push({ type:
|
14
|
+
names.forEach((name) => this.parameters.push({ type: "path", name }));
|
15
15
|
return this;
|
16
16
|
}
|
17
17
|
addQueryParameter(...names) {
|
18
|
-
names.forEach(name => this.parameters.push({ type:
|
18
|
+
names.forEach((name) => this.parameters.push({ type: "querystring", name }));
|
19
19
|
return this;
|
20
20
|
}
|
21
21
|
build() {
|
@@ -23,8 +23,12 @@ class DigitrafficIntegration {
|
|
23
23
|
return new aws_apigateway_1.LambdaIntegration(this.lambda, {
|
24
24
|
proxy: false,
|
25
25
|
integrationResponses,
|
26
|
-
requestParameters: this.parameters.length == 0
|
27
|
-
|
26
|
+
requestParameters: this.parameters.length == 0
|
27
|
+
? undefined
|
28
|
+
: this.createRequestParameters(),
|
29
|
+
requestTemplates: this.parameters.length == 0
|
30
|
+
? undefined
|
31
|
+
: this.createRequestTemplates(),
|
28
32
|
passthroughBehavior: aws_apigateway_1.PassthroughBehavior.WHEN_NO_MATCH,
|
29
33
|
});
|
30
34
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/integration.ts"],"names":[],"mappings":";;;AAAA,+
|
1
|
+
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/integration.ts"],"names":[],"mappings":";;;AAAA,+DAIoC;AAEpC,uDAAmD;AACnD,qGAAgG;AAShG,MAAa,sBAAsB;IAM/B,YAAY,MAAiB,EAAE,SAAS,GAAG,sBAAS,CAAC,UAAU;QAFtD,eAAU,GAAmB,EAAE,CAAC;QAGrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,GAAG,KAAe;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,GAAG,KAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACtD,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEpD,OAAO,IAAI,kCAAiB,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,KAAK,EAAE,KAAK;YACZ,oBAAoB;YACpB,iBAAiB,EACb,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACxC,gBAAgB,EACZ,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACvC,mBAAmB,EAAE,oCAAmB,CAAC,aAAa;SACzD,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB;QACnB,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAuB,EAAE,EAAE;YAChD,iBAAiB,CACb,uBAAuB,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAC5D,GAAG,kBAAkB,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED,sBAAsB;QAClB,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAuB,EAAE,EAAE;YAChD,WAAW,CACP,SAAS,CAAC,IAAI,CACjB,GAAG,yCAAyC,SAAS,CAAC,IAAI,KAAK,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,CAAC,sBAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAC5D,CAAC;IACN,CAAC;IAED,eAAe;QACX,OAAO,CAAC,iEAA8B,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;CACJ;AAxED,wDAwEC"}
|
@@ -1,5 +1,7 @@
|
|
1
|
-
import apigateway = require(
|
1
|
+
import apigateway = require("aws-cdk-lib/aws-apigateway");
|
2
2
|
import { MediaType } from "../../types/mediatypes";
|
3
|
+
import { MethodResponse } from "aws-cdk-lib/aws-apigateway";
|
4
|
+
import { IModel } from "aws-cdk-lib/aws-apigateway/lib/model";
|
3
5
|
/**
|
4
6
|
* This is velocity-script, that assumes the response to be LambdaResponse(status and body).
|
5
7
|
* It will always return the body and status, but if status in something else than 200 OK the content-type
|
@@ -20,3 +22,8 @@ export declare const XmlResponseTemplate: Record<string, string>;
|
|
20
22
|
export declare const SvgResponseTemplate: Record<string, string>;
|
21
23
|
export declare const InternalServerErrorResponseTemplate: Record<string, string>;
|
22
24
|
export declare function createResponses<T>(key: MediaType, value: T): Record<string, T>;
|
25
|
+
export declare class DigitrafficMethodResponse {
|
26
|
+
static response(statusCode: string, model: IModel, mediaType: MediaType, disableCors?: boolean): MethodResponse;
|
27
|
+
static response200(model: IModel, mediaType?: MediaType): apigateway.MethodResponse;
|
28
|
+
static response500(model?: apigateway.IModel, mediaType?: MediaType): apigateway.MethodResponse;
|
29
|
+
}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createResponses = exports.InternalServerErrorResponseTemplate = exports.SvgResponseTemplate = exports.XmlResponseTemplate = exports.NotFoundResponseTemplate = exports.BadRequestResponseTemplate = exports.NotFoundResponse = exports.MessageModel = exports.RESPONSE_DEFAULT_LAMBDA = void 0;
|
3
|
+
exports.DigitrafficMethodResponse = exports.createResponses = exports.InternalServerErrorResponseTemplate = exports.SvgResponseTemplate = exports.XmlResponseTemplate = exports.NotFoundResponseTemplate = exports.BadRequestResponseTemplate = exports.NotFoundResponse = exports.MessageModel = exports.RESPONSE_DEFAULT_LAMBDA = void 0;
|
4
4
|
const apigateway = require("aws-cdk-lib/aws-apigateway");
|
5
5
|
const mediatypes_1 = require("../../types/mediatypes");
|
6
|
+
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
6
7
|
/**
|
7
8
|
* This is velocity-script, that assumes the response to be LambdaResponse(status and body).
|
8
9
|
* It will always return the body and status, but if status in something else than 200 OK the content-type
|
@@ -27,25 +28,27 @@ const BODY_FROM_INPUT_PATH = "$input.path('$').body";
|
|
27
28
|
const messageSchema = {
|
28
29
|
schema: apigateway.JsonSchemaVersion.DRAFT4,
|
29
30
|
type: apigateway.JsonSchemaType.OBJECT,
|
30
|
-
description:
|
31
|
+
description: "Response with message",
|
31
32
|
properties: {
|
32
33
|
message: {
|
33
34
|
type: apigateway.JsonSchemaType.STRING,
|
34
|
-
description:
|
35
|
+
description: "Response message",
|
35
36
|
},
|
36
37
|
},
|
37
38
|
};
|
38
39
|
// DEPRECATED
|
39
40
|
exports.MessageModel = {
|
40
41
|
contentType: mediatypes_1.MediaType.APPLICATION_JSON,
|
41
|
-
modelName:
|
42
|
+
modelName: "MessageResponseModel",
|
42
43
|
schema: messageSchema,
|
43
44
|
};
|
44
|
-
const NotFoundMessage =
|
45
|
+
const NotFoundMessage = "Not found";
|
45
46
|
exports.NotFoundResponse = JSON.stringify({ message: NotFoundMessage });
|
46
|
-
const InternalServerErrorMessage =
|
47
|
-
const InternalServerErrorResponse = JSON.stringify({
|
48
|
-
|
47
|
+
const InternalServerErrorMessage = "Error";
|
48
|
+
const InternalServerErrorResponse = JSON.stringify({
|
49
|
+
message: InternalServerErrorMessage,
|
50
|
+
});
|
51
|
+
const BadRequestMessage = "Bad request";
|
49
52
|
const BadRequestResponse = JSON.stringify({ message: BadRequestMessage });
|
50
53
|
exports.BadRequestResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, BadRequestResponse);
|
51
54
|
exports.NotFoundResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, exports.NotFoundResponse);
|
@@ -53,9 +56,31 @@ exports.XmlResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION
|
|
53
56
|
exports.SvgResponseTemplate = createResponses(mediatypes_1.MediaType.IMAGE_SVG, BODY_FROM_INPUT_PATH);
|
54
57
|
exports.InternalServerErrorResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, InternalServerErrorResponse);
|
55
58
|
function createResponses(key, value) {
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
+
return {
|
60
|
+
[key]: value,
|
61
|
+
};
|
59
62
|
}
|
60
63
|
exports.createResponses = createResponses;
|
64
|
+
class DigitrafficMethodResponse {
|
65
|
+
static response(statusCode, model, mediaType, disableCors = false) {
|
66
|
+
return {
|
67
|
+
statusCode,
|
68
|
+
responseModels: {
|
69
|
+
[mediaType]: model,
|
70
|
+
},
|
71
|
+
responseParameters: disableCors
|
72
|
+
? {}
|
73
|
+
: {
|
74
|
+
"method.response.header.Access-Control-Allow-Origin": true,
|
75
|
+
},
|
76
|
+
};
|
77
|
+
}
|
78
|
+
static response200(model, mediaType = mediatypes_1.MediaType.APPLICATION_JSON) {
|
79
|
+
return DigitrafficMethodResponse.response("200", model, mediaType, false);
|
80
|
+
}
|
81
|
+
static response500(model = aws_apigateway_1.Model.EMPTY_MODEL, mediaType = mediatypes_1.MediaType.APPLICATION_JSON) {
|
82
|
+
return DigitrafficMethodResponse.response("500", model, mediaType, false);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
exports.DigitrafficMethodResponse = DigitrafficMethodResponse;
|
61
86
|
//# sourceMappingURL=response.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/response.ts"],"names":[],"mappings":";;;AAAA,yDAA0D;AAC1D,
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/response.ts"],"names":[],"mappings":";;;AAAA,yDAA0D;AAC1D,uDAAmD;AACnD,+DAAmE;AAGnE;;;;;;GAMG;AACU,QAAA,uBAAuB,GAAG;;;;;;;;;;;CAWtC,CAAC;AAEF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD,aAAa;AACb,MAAM,aAAa,GAA0B;IACzC,MAAM,EAAE,UAAU,CAAC,iBAAiB,CAAC,MAAM;IAC3C,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,MAAM;IACtC,WAAW,EAAE,uBAAuB;IACpC,UAAU,EAAE;QACR,OAAO,EAAE;YACL,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,MAAM;YACtC,WAAW,EAAE,kBAAkB;SAClC;KACJ;CACJ,CAAC;AAEF,aAAa;AACA,QAAA,YAAY,GAAG;IACxB,WAAW,EAAE,sBAAS,CAAC,gBAAgB;IACvC,SAAS,EAAE,sBAAsB;IACjC,MAAM,EAAE,aAAa;CACxB,CAAC;AAEF,MAAM,eAAe,GAAG,WAAW,CAAC;AACvB,QAAA,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;AAE7E,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAC3C,MAAM,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/C,OAAO,EAAE,0BAA0B;CACtC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,aAAa,CAAC;AACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAE7D,QAAA,0BAA0B,GAAG,eAAe,CACrD,sBAAS,CAAC,gBAAgB,EAC1B,kBAAkB,CACrB,CAAC;AACW,QAAA,wBAAwB,GAAG,eAAe,CACnD,sBAAS,CAAC,gBAAgB,EAC1B,wBAAgB,CACnB,CAAC;AACW,QAAA,mBAAmB,GAAG,eAAe,CAC9C,sBAAS,CAAC,eAAe,EACzB,oBAAoB,CACvB,CAAC;AACW,QAAA,mBAAmB,GAAG,eAAe,CAC9C,sBAAS,CAAC,SAAS,EACnB,oBAAoB,CACvB,CAAC;AACW,QAAA,mCAAmC,GAAG,eAAe,CAC9D,sBAAS,CAAC,gBAAgB,EAC1B,2BAA2B,CAC9B,CAAC;AAEF,SAAgB,eAAe,CAC3B,GAAc,EACd,KAAQ;IAER,OAAO;QACH,CAAC,GAAG,CAAC,EAAE,KAAK;KACf,CAAC;AACN,CAAC;AAPD,0CAOC;AAED,MAAa,yBAAyB;IAClC,MAAM,CAAC,QAAQ,CACX,UAAkB,EAClB,KAAa,EACb,SAAoB,EACpB,WAAW,GAAG,KAAK;QAEnB,OAAO;YACH,UAAU;YACV,cAAc,EAAE;gBACZ,CAAC,SAAS,CAAC,EAAE,KAAK;aACrB;YACD,kBAAkB,EAAE,WAAW;gBAC3B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACI,oDAAoD,EAChD,IAAI;iBACX;SACV,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAa,EAAE,SAAS,GAAG,sBAAS,CAAC,gBAAgB;QACpE,OAAO,yBAAyB,CAAC,QAAQ,CACrC,KAAK,EACL,KAAK,EACL,SAAS,EACT,KAAK,CACR,CAAC;IACN,CAAC;IAED,MAAM,CAAC,WAAW,CACd,KAAK,GAAG,sBAAK,CAAC,WAAW,EACzB,SAAS,GAAG,sBAAS,CAAC,gBAAgB;QAEtC,OAAO,yBAAyB,CAAC,QAAQ,CACrC,KAAK,EACL,KAAK,EACL,SAAS,EACT,KAAK,CACR,CAAC;IACN,CAAC;CACJ;AAzCD,8DAyCC"}
|
@@ -15,7 +15,13 @@ export declare const RESPONSE_404_NOT_FOUND: {
|
|
15
15
|
selectionPattern: string;
|
16
16
|
responseTemplates: Record<string, string>;
|
17
17
|
};
|
18
|
+
/**
|
19
|
+
* @Deprecated Use DigitrafficMethodResponse
|
20
|
+
*/
|
18
21
|
export declare function methodResponse(status: string, contentType: MediaType, model: IModel, parameters?: Record<string, boolean>): MethodResponse;
|
22
|
+
/**
|
23
|
+
* @Deprecated Use DigitrafficMethodResponse
|
24
|
+
*/
|
19
25
|
export declare function corsMethod(response: MethodResponse): MethodResponse;
|
20
26
|
interface IntegrationOptions {
|
21
27
|
requestParameters?: {
|
@@ -33,6 +39,8 @@ interface IntegrationOptions {
|
|
33
39
|
* Creates a default Lambda integration for a REST API resource _root_
|
34
40
|
* @param lambdaFunction The Lambda function
|
35
41
|
* @param options Options
|
42
|
+
*
|
43
|
+
* @deprecated Use DigitrafficIntegration
|
36
44
|
*/
|
37
45
|
export declare function defaultIntegration(lambdaFunction: AWSFunction, options?: IntegrationOptions): LambdaIntegration;
|
38
46
|
export declare function getResponse(response: IntegrationResponse, options?: IntegrationOptions): IntegrationResponse;
|
@@ -30,6 +30,9 @@ exports.RESPONSE_404_NOT_FOUND = {
|
|
30
30
|
selectionPattern: errors_1.NOT_FOUND_MESSAGE,
|
31
31
|
responseTemplates: response_1.NotFoundResponseTemplate,
|
32
32
|
};
|
33
|
+
/**
|
34
|
+
* @Deprecated Use DigitrafficMethodResponse
|
35
|
+
*/
|
33
36
|
function methodResponse(status, contentType, model, parameters) {
|
34
37
|
return {
|
35
38
|
statusCode: status,
|
@@ -38,6 +41,9 @@ function methodResponse(status, contentType, model, parameters) {
|
|
38
41
|
};
|
39
42
|
}
|
40
43
|
exports.methodResponse = methodResponse;
|
44
|
+
/**
|
45
|
+
* @Deprecated Use DigitrafficMethodResponse
|
46
|
+
*/
|
41
47
|
function corsMethod(response) {
|
42
48
|
return {
|
43
49
|
...response,
|
@@ -53,6 +59,8 @@ exports.corsMethod = corsMethod;
|
|
53
59
|
* Creates a default Lambda integration for a REST API resource _root_
|
54
60
|
* @param lambdaFunction The Lambda function
|
55
61
|
* @param options Options
|
62
|
+
*
|
63
|
+
* @deprecated Use DigitrafficIntegration
|
56
64
|
*/
|
57
65
|
function defaultIntegration(lambdaFunction, options) {
|
58
66
|
return new aws_apigateway_1.LambdaIntegration(lambdaFunction, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/responses.ts"],"names":[],"mappings":";;;AAAA,yCAMoB;AACpB,+DAKoC;AAGpC,+CAI4B;AAGf,QAAA,eAAe,GAAwB;IAChD,UAAU,EAAE,KAAK;CACpB,CAAC;AAEW,QAAA,wBAAwB,GAAwB;IACzD,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,4BAAmB;IACrC,iBAAiB,EAAE,qCAA0B;CAChD,CAAC;AAEW,QAAA,yBAAyB,GAAwB;IAC1D,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,sBAAa;IAC/B,iBAAiB,EAAE,8CAAmC;CACzD,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,iBAAiB,EAAE,8BAAmB;CACzC,CAAC;AAEW,QAAA,yBAAyB,GAAG;IACrC,kBAAkB,EAAE;QAChB,oDAAoD,EAAE,KAAK;KAC9D;CACJ,CAAC;AAEW,QAAA,sBAAsB,GAAG;IAClC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,0BAAiB;IACnC,iBAAiB,EAAE,mCAAwB;CAC9C,CAAC;AAEF,SAAgB,cAAc,CAC1B,MAAc,EACd,WAAsB,EACtB,KAAa,EACb,UAAoC;IAEpC,OAAO;QACH,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,IAAA,0BAAe,EAAC,WAAW,EAAE,KAAK,CAAC;QACnD,kBAAkB,EAAE,UAAU,IAAI,EAAE;KACvC,CAAC;AACN,CAAC;AAXD,wCAWC;AAED,SAAgB,UAAU,CAAC,QAAwB;IAC/C,OAAO;QACH,GAAG,QAAQ;QACX,GAAG;YACC,kBAAkB,EAAE;gBAChB,oDAAoD,EAAE,IAAI;aAC7D;SACJ;KACJ,CAAC;AACN,CAAC;AATD,gCASC;AAWD
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../src/aws/infra/api/responses.ts"],"names":[],"mappings":";;;AAAA,yCAMoB;AACpB,+DAKoC;AAGpC,+CAI4B;AAGf,QAAA,eAAe,GAAwB;IAChD,UAAU,EAAE,KAAK;CACpB,CAAC;AAEW,QAAA,wBAAwB,GAAwB;IACzD,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,4BAAmB;IACrC,iBAAiB,EAAE,qCAA0B;CAChD,CAAC;AAEW,QAAA,yBAAyB,GAAwB;IAC1D,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,sBAAa;IAC/B,iBAAiB,EAAE,8CAAmC;CACzD,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,iBAAiB,EAAE,8BAAmB;CACzC,CAAC;AAEW,QAAA,yBAAyB,GAAG;IACrC,kBAAkB,EAAE;QAChB,oDAAoD,EAAE,KAAK;KAC9D;CACJ,CAAC;AAEW,QAAA,sBAAsB,GAAG;IAClC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,0BAAiB;IACnC,iBAAiB,EAAE,mCAAwB;CAC9C,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAC1B,MAAc,EACd,WAAsB,EACtB,KAAa,EACb,UAAoC;IAEpC,OAAO;QACH,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,IAAA,0BAAe,EAAC,WAAW,EAAE,KAAK,CAAC;QACnD,kBAAkB,EAAE,UAAU,IAAI,EAAE;KACvC,CAAC;AACN,CAAC;AAXD,wCAWC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,QAAwB;IAC/C,OAAO;QACH,GAAG,QAAQ;QACX,GAAG;YACC,kBAAkB,EAAE;gBAChB,oDAAoD,EAAE,IAAI;aAC7D;SACJ;KACJ,CAAC;AACN,CAAC;AATD,gCASC;AAWD;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAC9B,cAA2B,EAC3B,OAA4B;IAE5B,OAAO,IAAI,kCAAiB,CAAC,cAAc,EAAE;QACzC,KAAK,EAAE,KAAK;QACZ,oBAAoB,EAAE,OAAO,EAAE,SAAS,IAAI;YACxC,WAAW,CAAC,uBAAe,EAAE,OAAO,CAAC;YACrC,WAAW,CAAC,gCAAwB,EAAE,OAAO,CAAC;YAC9C,WAAW,CAAC,8BAAsB,EAAE,OAAO,CAAC;YAC5C,WAAW,CAAC,iCAAyB,EAAE,OAAO,CAAC;SAClD;QACD,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE;QACnD,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE;QACjD,mBAAmB,EACf,OAAO,EAAE,mBAAmB,IAAI,oCAAmB,CAAC,aAAa;KACxE,CAAC,CAAC;AACP,CAAC;AAjBD,gDAiBC;AAED,SAAgB,WAAW,CACvB,QAA6B,EAC7B,OAA4B;IAE5B,IAAI,OAAO,EAAE,GAAG,EAAE;QACd,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;KAC/C;IACD,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;QACvB,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iCAAyB,EAAE,CAAC;KAC5D;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAZD,kCAYC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/database/database.ts"],"names":[],"mappings":";;;AACA,8DAA0E;AAC1E,
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/database/database.ts"],"names":[],"mappings":";;;AACA,8DAA0E;AAC1E,0CAAgD;AAChD,4DAAsD;AAEtD,8DAA8D;AAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;AAEpC,oDAAoD;AACpD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE;IACrE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;IACvE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE;IACxE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAMH;;;;;;;;;;;GAWG;AACH,SAAgB,gBAAgB,CAC5B,QAAgB,EAChB,QAAgB,EAChB,eAAuB,EACvB,GAAW,EACX,OAAgB;IAEhB,MAAM,QAAQ,GAAG,gBAAgB,QAAQ,IAAI,QAAQ,IAAI,GAAG,qBAAqB,eAAe,EAAE,CAAC;IAEnG,OAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAVD,4CAUC;AAED,SAAgB,aAAa,CACzB,EAAqC;IAErC,OAAO,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAJD,sCAIC;AAED,SAAgB,UAAU,CAAI,EAAkC;IAC5D,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAFD,gCAEC;AAED,SAAgB,kBAAkB,CAC9B,EAAkC;IAElC,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAJD,gDAIC;AAED,KAAK,UAAU,YAAY,CACvB,QAAiB,EACjB,EAAkC;IAElC,MAAM,cAAc,GAAG,IAAA,sBAAQ,EAC3B,kCAAuB,CAAC,cAAc,EACtC,yBAAyB,CAC5B,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ;QACnB,CAAC,CAAC,IAAA,sBAAQ,EAAC,kCAAuB,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,IAAA,sBAAQ,EAAC,kCAAuB,CAAC,MAAM,CAAC,CAAC;IAE/C,MAAM,EAAE,GAAG,gBAAgB,CACvB,IAAA,sBAAc,EAAC,kCAAuB,CAAC,OAAO,CAAC,EAC/C,IAAA,sBAAc,EAAC,kCAAuB,CAAC,OAAO,CAAC,EAC/C,cAAc,EACd,MAAM,CACT,CAAC;IACF,IAAI;QACA,qEAAqE;QACrE,kFAAkF;QAClF,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KACvB;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC;KACX;YAAS;QACN,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KAClB;AACL,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@digitraffic/common",
|
3
|
-
"version": "2022.11.
|
3
|
+
"version": "2022.11.23-1",
|
4
4
|
"description": "",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -28,7 +28,7 @@
|
|
28
28
|
"dependencies": {
|
29
29
|
"@aws-cdk/aws-synthetics-alpha": "2.50.0-alpha.0",
|
30
30
|
"@types/geojson": "^7946.0.10",
|
31
|
-
"aws-cdk-lib": "2.
|
31
|
+
"aws-cdk-lib": "2.51.1",
|
32
32
|
"aws-sdk": "2.1241.0",
|
33
33
|
"axios": "^0.21.1",
|
34
34
|
"change-case": "4.1.2",
|
@@ -49,6 +49,7 @@
|
|
49
49
|
"@typescript-eslint/parser": "^5.39.0",
|
50
50
|
"eslint": "^8.24.0",
|
51
51
|
"eslint-config-prettier": "^8.5.0",
|
52
|
+
"eslint-plugin-deprecation": "1.3.3",
|
52
53
|
"husky": ">=6",
|
53
54
|
"jest": "^29.1.1",
|
54
55
|
"jest-junit": "^14.0.1",
|
@@ -57,7 +58,7 @@
|
|
57
58
|
"ramda": "^0.28.0",
|
58
59
|
"rimraf": "^3.0.2",
|
59
60
|
"sinon": "^14.0.0",
|
60
|
-
"ts-jest": "^29.0.
|
61
|
+
"ts-jest": "^29.0.3",
|
61
62
|
"typescript": "^4.8.4"
|
62
63
|
},
|
63
64
|
"externals": [
|
@@ -1,13 +1,17 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
import {
|
2
|
+
IntegrationResponse,
|
3
|
+
LambdaIntegration,
|
4
|
+
PassthroughBehavior,
|
5
|
+
} from "aws-cdk-lib/aws-apigateway";
|
6
|
+
import { IFunction } from "aws-cdk-lib/aws-lambda";
|
7
|
+
import { MediaType } from "../../types/mediatypes";
|
8
|
+
import { DigitrafficIntegrationResponse } from "../../runtime/digitraffic-integration-response";
|
5
9
|
|
6
|
-
type ParameterType =
|
10
|
+
type ParameterType = "path" | "querystring";
|
7
11
|
|
8
12
|
interface ApiParameter {
|
9
|
-
type: ParameterType
|
10
|
-
name: string
|
13
|
+
type: ParameterType;
|
14
|
+
name: string;
|
11
15
|
}
|
12
16
|
|
13
17
|
export class DigitrafficIntegration {
|
@@ -22,13 +26,15 @@ export class DigitrafficIntegration {
|
|
22
26
|
}
|
23
27
|
|
24
28
|
addPathParameter(...names: string[]): DigitrafficIntegration {
|
25
|
-
names.forEach(name => this.parameters.push({type:
|
29
|
+
names.forEach((name) => this.parameters.push({ type: "path", name }));
|
26
30
|
|
27
31
|
return this;
|
28
32
|
}
|
29
33
|
|
30
34
|
addQueryParameter(...names: string[]): DigitrafficIntegration {
|
31
|
-
names.forEach(name =>
|
35
|
+
names.forEach((name) =>
|
36
|
+
this.parameters.push({ type: "querystring", name })
|
37
|
+
);
|
32
38
|
|
33
39
|
return this;
|
34
40
|
}
|
@@ -39,8 +45,14 @@ export class DigitrafficIntegration {
|
|
39
45
|
return new LambdaIntegration(this.lambda, {
|
40
46
|
proxy: false,
|
41
47
|
integrationResponses,
|
42
|
-
requestParameters:
|
43
|
-
|
48
|
+
requestParameters:
|
49
|
+
this.parameters.length == 0
|
50
|
+
? undefined
|
51
|
+
: this.createRequestParameters(),
|
52
|
+
requestTemplates:
|
53
|
+
this.parameters.length == 0
|
54
|
+
? undefined
|
55
|
+
: this.createRequestTemplates(),
|
44
56
|
passthroughBehavior: PassthroughBehavior.WHEN_NO_MATCH,
|
45
57
|
});
|
46
58
|
}
|
@@ -49,7 +61,9 @@ export class DigitrafficIntegration {
|
|
49
61
|
const requestParameters: Record<string, string> = {};
|
50
62
|
|
51
63
|
this.parameters.forEach((parameter: ApiParameter) => {
|
52
|
-
requestParameters[
|
64
|
+
requestParameters[
|
65
|
+
`integration.request.${parameter.type}.${parameter.name}`
|
66
|
+
] = `method.request.${parameter.type}.${parameter.name}`;
|
53
67
|
});
|
54
68
|
|
55
69
|
return requestParameters;
|
@@ -59,7 +73,9 @@ export class DigitrafficIntegration {
|
|
59
73
|
const requestJson: Record<string, string> = {};
|
60
74
|
|
61
75
|
this.parameters.forEach((parameter: ApiParameter) => {
|
62
|
-
requestJson[
|
76
|
+
requestJson[
|
77
|
+
parameter.name
|
78
|
+
] = `$util.escapeJavaScript($input.params('${parameter.name}'))`;
|
63
79
|
});
|
64
80
|
|
65
81
|
return {
|
@@ -70,4 +86,4 @@ export class DigitrafficIntegration {
|
|
70
86
|
createResponses(): IntegrationResponse[] {
|
71
87
|
return [DigitrafficIntegrationResponse.ok(this.mediaType)];
|
72
88
|
}
|
73
|
-
}
|
89
|
+
}
|
@@ -1,5 +1,7 @@
|
|
1
|
-
import apigateway = require(
|
2
|
-
import {MediaType} from "../../types/mediatypes";
|
1
|
+
import apigateway = require("aws-cdk-lib/aws-apigateway");
|
2
|
+
import { MediaType } from "../../types/mediatypes";
|
3
|
+
import { MethodResponse, Model } from "aws-cdk-lib/aws-apigateway";
|
4
|
+
import { IModel } from "aws-cdk-lib/aws-apigateway/lib/model";
|
3
5
|
|
4
6
|
/**
|
5
7
|
* This is velocity-script, that assumes the response to be LambdaResponse(status and body).
|
@@ -27,11 +29,11 @@ const BODY_FROM_INPUT_PATH = "$input.path('$').body";
|
|
27
29
|
const messageSchema: apigateway.JsonSchema = {
|
28
30
|
schema: apigateway.JsonSchemaVersion.DRAFT4,
|
29
31
|
type: apigateway.JsonSchemaType.OBJECT,
|
30
|
-
description:
|
32
|
+
description: "Response with message",
|
31
33
|
properties: {
|
32
34
|
message: {
|
33
35
|
type: apigateway.JsonSchemaType.STRING,
|
34
|
-
description:
|
36
|
+
description: "Response message",
|
35
37
|
},
|
36
38
|
},
|
37
39
|
};
|
@@ -39,29 +41,90 @@ const messageSchema: apigateway.JsonSchema = {
|
|
39
41
|
// DEPRECATED
|
40
42
|
export const MessageModel = {
|
41
43
|
contentType: MediaType.APPLICATION_JSON,
|
42
|
-
modelName:
|
44
|
+
modelName: "MessageResponseModel",
|
43
45
|
schema: messageSchema,
|
44
46
|
};
|
45
47
|
|
46
|
-
const NotFoundMessage =
|
47
|
-
export const NotFoundResponse = JSON.stringify({message: NotFoundMessage});
|
48
|
+
const NotFoundMessage = "Not found";
|
49
|
+
export const NotFoundResponse = JSON.stringify({ message: NotFoundMessage });
|
48
50
|
|
49
|
-
const InternalServerErrorMessage =
|
50
|
-
const InternalServerErrorResponse = JSON.stringify({
|
51
|
+
const InternalServerErrorMessage = "Error";
|
52
|
+
const InternalServerErrorResponse = JSON.stringify({
|
53
|
+
message: InternalServerErrorMessage,
|
54
|
+
});
|
51
55
|
|
52
|
-
const BadRequestMessage =
|
53
|
-
const BadRequestResponse = JSON.stringify({message: BadRequestMessage});
|
56
|
+
const BadRequestMessage = "Bad request";
|
57
|
+
const BadRequestResponse = JSON.stringify({ message: BadRequestMessage });
|
54
58
|
|
55
|
-
export const BadRequestResponseTemplate = createResponses(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
export const
|
59
|
+
export const BadRequestResponseTemplate = createResponses(
|
60
|
+
MediaType.APPLICATION_JSON,
|
61
|
+
BadRequestResponse
|
62
|
+
);
|
63
|
+
export const NotFoundResponseTemplate = createResponses(
|
64
|
+
MediaType.APPLICATION_JSON,
|
65
|
+
NotFoundResponse
|
66
|
+
);
|
67
|
+
export const XmlResponseTemplate = createResponses(
|
68
|
+
MediaType.APPLICATION_XML,
|
69
|
+
BODY_FROM_INPUT_PATH
|
70
|
+
);
|
71
|
+
export const SvgResponseTemplate = createResponses(
|
72
|
+
MediaType.IMAGE_SVG,
|
73
|
+
BODY_FROM_INPUT_PATH
|
74
|
+
);
|
75
|
+
export const InternalServerErrorResponseTemplate = createResponses(
|
76
|
+
MediaType.APPLICATION_JSON,
|
77
|
+
InternalServerErrorResponse
|
78
|
+
);
|
60
79
|
|
61
|
-
export function createResponses<T>(
|
62
|
-
|
80
|
+
export function createResponses<T>(
|
81
|
+
key: MediaType,
|
82
|
+
value: T
|
83
|
+
): Record<string, T> {
|
84
|
+
return {
|
85
|
+
[key]: value,
|
86
|
+
};
|
87
|
+
}
|
88
|
+
|
89
|
+
export class DigitrafficMethodResponse {
|
90
|
+
static response(
|
91
|
+
statusCode: string,
|
92
|
+
model: IModel,
|
93
|
+
mediaType: MediaType,
|
94
|
+
disableCors = false
|
95
|
+
): MethodResponse {
|
96
|
+
return {
|
97
|
+
statusCode,
|
98
|
+
responseModels: {
|
99
|
+
[mediaType]: model,
|
100
|
+
},
|
101
|
+
responseParameters: disableCors
|
102
|
+
? {}
|
103
|
+
: {
|
104
|
+
"method.response.header.Access-Control-Allow-Origin":
|
105
|
+
true,
|
106
|
+
},
|
107
|
+
};
|
108
|
+
}
|
63
109
|
|
64
|
-
|
110
|
+
static response200(model: IModel, mediaType = MediaType.APPLICATION_JSON) {
|
111
|
+
return DigitrafficMethodResponse.response(
|
112
|
+
"200",
|
113
|
+
model,
|
114
|
+
mediaType,
|
115
|
+
false
|
116
|
+
);
|
117
|
+
}
|
65
118
|
|
66
|
-
|
119
|
+
static response500(
|
120
|
+
model = Model.EMPTY_MODEL,
|
121
|
+
mediaType = MediaType.APPLICATION_JSON
|
122
|
+
) {
|
123
|
+
return DigitrafficMethodResponse.response(
|
124
|
+
"500",
|
125
|
+
model,
|
126
|
+
mediaType,
|
127
|
+
false
|
128
|
+
);
|
129
|
+
}
|
67
130
|
}
|
@@ -52,6 +52,9 @@ export const RESPONSE_404_NOT_FOUND = {
|
|
52
52
|
responseTemplates: NotFoundResponseTemplate,
|
53
53
|
};
|
54
54
|
|
55
|
+
/**
|
56
|
+
* @Deprecated Use DigitrafficMethodResponse
|
57
|
+
*/
|
55
58
|
export function methodResponse(
|
56
59
|
status: string,
|
57
60
|
contentType: MediaType,
|
@@ -65,6 +68,9 @@ export function methodResponse(
|
|
65
68
|
};
|
66
69
|
}
|
67
70
|
|
71
|
+
/**
|
72
|
+
* @Deprecated Use DigitrafficMethodResponse
|
73
|
+
*/
|
68
74
|
export function corsMethod(response: MethodResponse): MethodResponse {
|
69
75
|
return {
|
70
76
|
...response,
|
@@ -89,6 +95,8 @@ interface IntegrationOptions {
|
|
89
95
|
* Creates a default Lambda integration for a REST API resource _root_
|
90
96
|
* @param lambdaFunction The Lambda function
|
91
97
|
* @param options Options
|
98
|
+
*
|
99
|
+
* @deprecated Use DigitrafficIntegration
|
92
100
|
*/
|
93
101
|
export function defaultIntegration(
|
94
102
|
lambdaFunction: AWSFunction,
|
package/src/database/database.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { IDatabase, ITask } from "pg-promise";
|
2
2
|
import { DatabaseEnvironmentKeys } from "../aws/runtime/secrets/dbsecret";
|
3
|
-
import { getEnvVariable
|
3
|
+
import { getEnvVariable } from "../utils/utils";
|
4
4
|
import { envValue } from "../aws/runtime/environment";
|
5
5
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|