@digitraffic/common 2022.10.25-1 → 2022.10.28-2
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/{aws → dist/aws}/infra/api/integration.d.ts +0 -0
- package/dist/aws/infra/api/integration.js +52 -0
- package/dist/aws/infra/api/integration.js.map +1 -0
- package/{aws → dist/aws}/infra/api/response.d.ts +0 -0
- package/dist/aws/infra/api/response.js +61 -0
- package/dist/aws/infra/api/response.js.map +1 -0
- package/{aws → dist/aws}/infra/api/responses.d.ts +3 -3
- package/dist/aws/infra/api/responses.js +82 -0
- package/dist/aws/infra/api/responses.js.map +1 -0
- package/{aws → dist/aws}/infra/api/static-integration.d.ts +0 -0
- package/dist/aws/infra/api/static-integration.js +54 -0
- package/dist/aws/infra/api/static-integration.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/canary-alarm.d.ts +0 -0
- package/dist/aws/infra/canaries/canary-alarm.js +26 -0
- package/dist/aws/infra/canaries/canary-alarm.js.map +1 -0
- package/dist/aws/infra/canaries/canary-keys.d.ts +3 -0
- package/dist/aws/infra/canaries/canary-keys.js +7 -0
- package/dist/aws/infra/canaries/canary-keys.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/canary-parameters.d.ts +0 -0
- package/dist/aws/infra/canaries/canary-parameters.js +3 -0
- package/dist/aws/infra/canaries/canary-parameters.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/canary-role.d.ts +0 -0
- package/dist/aws/infra/canaries/canary-role.js +46 -0
- package/dist/aws/infra/canaries/canary-role.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/canary.d.ts +0 -0
- package/dist/aws/infra/canaries/canary.js +32 -0
- package/dist/aws/infra/canaries/canary.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/database-canary.d.ts +0 -0
- package/dist/aws/infra/canaries/database-canary.js +70 -0
- package/dist/aws/infra/canaries/database-canary.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/database-checker.d.ts +2 -2
- package/dist/aws/infra/canaries/database-checker.js +103 -0
- package/dist/aws/infra/canaries/database-checker.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/url-canary.d.ts +0 -3
- package/dist/aws/infra/canaries/url-canary.js +47 -0
- package/dist/aws/infra/canaries/url-canary.js.map +1 -0
- package/{aws → dist/aws}/infra/canaries/url-checker.d.ts +0 -0
- package/dist/aws/infra/canaries/url-checker.js +252 -0
- package/dist/aws/infra/canaries/url-checker.js.map +1 -0
- package/{aws → dist/aws}/infra/documentation.d.ts +0 -0
- package/dist/aws/infra/documentation.js +95 -0
- package/dist/aws/infra/documentation.js.map +1 -0
- package/{aws → dist/aws}/infra/scheduler.d.ts +7 -7
- package/dist/aws/infra/scheduler.js +31 -0
- package/dist/aws/infra/scheduler.js.map +1 -0
- package/{aws → dist/aws}/infra/security-rule.d.ts +0 -0
- package/dist/aws/infra/security-rule.js +39 -0
- package/dist/aws/infra/security-rule.js.map +1 -0
- package/{aws → dist/aws}/infra/sqs-integration.d.ts +0 -0
- package/dist/aws/infra/sqs-integration.js +93 -0
- package/dist/aws/infra/sqs-integration.js.map +1 -0
- package/{aws → dist/aws}/infra/sqs-queue.d.ts +0 -0
- package/dist/aws/infra/sqs-queue.js +130 -0
- package/dist/aws/infra/sqs-queue.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/lambda-configs.d.ts +5 -5
- package/dist/aws/infra/stack/lambda-configs.js +105 -0
- package/dist/aws/infra/stack/lambda-configs.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/monitoredfunction.d.ts +1 -1
- package/dist/aws/infra/stack/monitoredfunction.js +143 -0
- package/dist/aws/infra/stack/monitoredfunction.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/rest_apis.d.ts +0 -0
- package/dist/aws/infra/stack/rest_apis.js +185 -0
- package/dist/aws/infra/stack/rest_apis.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/stack-checking-aspect.d.ts +0 -0
- package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
- package/dist/aws/infra/stack/stack-checking-aspect.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/stack.d.ts +5 -4
- package/dist/aws/infra/stack/stack.js +67 -0
- package/dist/aws/infra/stack/stack.js.map +1 -0
- package/{aws → dist/aws}/infra/stack/subscription.d.ts +3 -3
- package/dist/aws/infra/stack/subscription.js +42 -0
- package/dist/aws/infra/stack/subscription.js.map +1 -0
- package/{aws → dist/aws}/infra/usage-plans.d.ts +0 -0
- package/dist/aws/infra/usage-plans.js +42 -0
- package/dist/aws/infra/usage-plans.js.map +1 -0
- package/{aws → dist/aws}/runtime/apikey.d.ts +0 -0
- package/dist/aws/runtime/apikey.js +13 -0
- package/dist/aws/runtime/apikey.js.map +1 -0
- package/{aws → dist/aws}/runtime/digitraffic-integration-response.d.ts +0 -0
- package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
- package/dist/aws/runtime/digitraffic-integration-response.js.map +1 -0
- package/{aws → dist/aws}/runtime/environment.d.ts +0 -0
- package/dist/aws/runtime/environment.js +12 -0
- package/dist/aws/runtime/environment.js.map +1 -0
- package/{aws → dist/aws}/runtime/messaging.d.ts +0 -0
- package/dist/aws/runtime/messaging.js +31 -0
- package/dist/aws/runtime/messaging.js.map +1 -0
- package/{aws → dist/aws}/runtime/s3.d.ts +0 -0
- package/dist/aws/runtime/s3.js +30 -0
- package/dist/aws/runtime/s3.js.map +1 -0
- package/{aws → dist/aws}/runtime/secrets/dbsecret.d.ts +0 -0
- package/dist/aws/runtime/secrets/dbsecret.js +96 -0
- package/dist/aws/runtime/secrets/dbsecret.js.map +1 -0
- package/{aws → dist/aws}/runtime/secrets/proxy-holder.d.ts +0 -0
- package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
- package/dist/aws/runtime/secrets/proxy-holder.js.map +1 -0
- package/{aws → dist/aws}/runtime/secrets/rds-holder.d.ts +0 -0
- package/dist/aws/runtime/secrets/rds-holder.js +27 -0
- package/dist/aws/runtime/secrets/rds-holder.js.map +1 -0
- package/{aws → dist/aws}/runtime/secrets/secret-holder.d.ts +0 -0
- package/dist/aws/runtime/secrets/secret-holder.js +76 -0
- package/dist/aws/runtime/secrets/secret-holder.js.map +1 -0
- package/{aws → dist/aws}/runtime/secrets/secret.d.ts +0 -0
- package/dist/aws/runtime/secrets/secret.js +43 -0
- package/dist/aws/runtime/secrets/secret.js.map +1 -0
- package/{aws → dist/aws}/types/errors.d.ts +4 -0
- package/dist/aws/types/errors.js +16 -0
- package/dist/aws/types/errors.js.map +1 -0
- package/{aws → dist/aws}/types/lambda-response.d.ts +4 -3
- package/dist/aws/types/lambda-response.js +33 -0
- package/dist/aws/types/lambda-response.js.map +1 -0
- package/{aws → dist/aws}/types/mediatypes.d.ts +1 -1
- package/dist/aws/types/mediatypes.js +16 -0
- package/dist/aws/types/mediatypes.js.map +1 -0
- package/{aws → dist/aws}/types/model-with-reference.d.ts +0 -0
- package/dist/aws/types/model-with-reference.js +3 -0
- package/dist/aws/types/model-with-reference.js.map +1 -0
- package/{aws → dist/aws}/types/proxytypes.d.ts +0 -0
- package/dist/aws/types/proxytypes.js +3 -0
- package/dist/aws/types/proxytypes.js.map +1 -0
- package/{aws → dist/aws}/types/tags.d.ts +0 -0
- package/dist/aws/types/tags.js +7 -0
- package/dist/aws/types/tags.js.map +1 -0
- package/{database → dist/database}/cached.d.ts +0 -0
- package/dist/database/cached.js +32 -0
- package/dist/database/cached.js.map +1 -0
- package/{database → dist/database}/database.d.ts +0 -0
- package/dist/database/database.js +70 -0
- package/dist/database/database.js.map +1 -0
- package/{database → dist/database}/last-updated.d.ts +0 -0
- package/dist/database/last-updated.js +54 -0
- package/dist/database/last-updated.js.map +1 -0
- package/{database → dist/database}/models.d.ts +0 -0
- package/dist/database/models.js +3 -0
- package/dist/database/models.js.map +1 -0
- package/{marine → dist/marine}/id_utils.d.ts +0 -0
- package/dist/marine/id_utils.js +33 -0
- package/dist/marine/id_utils.js.map +1 -0
- package/{marine → dist/marine}/rtz.d.ts +0 -0
- package/dist/marine/rtz.js +3 -0
- package/dist/marine/rtz.js.map +1 -0
- package/{test → dist/test}/asserter.d.ts +0 -0
- package/dist/test/asserter.js +45 -0
- package/dist/test/asserter.js.map +1 -0
- package/{test → dist/test}/db-testutils.d.ts +0 -0
- package/dist/test/db-testutils.js +31 -0
- package/dist/test/db-testutils.js.map +1 -0
- package/{test → dist/test}/httpserver.d.ts +2 -1
- package/dist/test/httpserver.js +74 -0
- package/dist/test/httpserver.js.map +1 -0
- package/{test → dist/test}/secret.d.ts +0 -0
- package/dist/test/secret.js +25 -0
- package/dist/test/secret.js.map +1 -0
- package/{test → dist/test}/secrets-manager.d.ts +0 -0
- package/dist/test/secrets-manager.js +59 -0
- package/dist/test/secrets-manager.js.map +1 -0
- package/{test → dist/test}/testutils.d.ts +0 -0
- package/dist/test/testutils.js +44 -0
- package/dist/test/testutils.js.map +1 -0
- package/dist/types/either.d.ts +9 -0
- package/dist/types/either.js +3 -0
- package/dist/types/either.js.map +1 -0
- package/{types → dist/types}/input-error.d.ts +0 -0
- package/dist/types/input-error.js +7 -0
- package/dist/types/input-error.js.map +1 -0
- package/{types → dist/types}/language.d.ts +0 -0
- package/dist/types/language.js +10 -0
- package/dist/types/language.js.map +1 -0
- package/{types → dist/types}/traffictype.d.ts +0 -0
- package/dist/types/traffictype.js +13 -0
- package/dist/types/traffictype.js.map +1 -0
- package/{types → dist/types}/validator.d.ts +0 -0
- package/dist/types/validator.js +14 -0
- package/dist/types/validator.js.map +1 -0
- package/{utils → dist/utils}/api-model.d.ts +0 -0
- package/dist/utils/api-model.js +129 -0
- package/dist/utils/api-model.js.map +1 -0
- package/{utils → dist/utils}/base64.d.ts +0 -0
- package/dist/utils/base64.js +21 -0
- package/dist/utils/base64.js.map +1 -0
- package/{utils → dist/utils}/date-utils.d.ts +0 -0
- package/dist/utils/date-utils.js +34 -0
- package/dist/utils/date-utils.js.map +1 -0
- package/{utils → dist/utils}/geojson-types.d.ts +0 -0
- package/dist/utils/geojson-types.js +18 -0
- package/dist/utils/geojson-types.js.map +1 -0
- package/{utils → dist/utils}/geometry.d.ts +0 -0
- package/dist/utils/geometry.js +164 -0
- package/dist/utils/geometry.js.map +1 -0
- package/{utils → dist/utils}/retry.d.ts +0 -0
- package/dist/utils/retry.js +50 -0
- package/dist/utils/retry.js.map +1 -0
- package/{utils → dist/utils}/slack.d.ts +0 -0
- package/dist/utils/slack.js +25 -0
- package/dist/utils/slack.js.map +1 -0
- package/{utils → dist/utils}/utils.d.ts +16 -0
- package/dist/utils/utils.js +75 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +12 -10
- package/src/@types/geojson-validation/index.d.ts +4 -0
- package/src/aws/infra/api/integration.ts +73 -0
- package/src/aws/infra/api/response.ts +67 -0
- package/src/aws/infra/api/responses.ts +124 -0
- package/src/aws/infra/api/static-integration.ts +62 -0
- package/src/aws/infra/canaries/canary-alarm.ts +31 -0
- package/src/aws/infra/canaries/canary-keys.ts +3 -0
- package/src/aws/infra/canaries/canary-parameters.ts +19 -0
- package/src/aws/infra/canaries/canary-role.ts +47 -0
- package/src/aws/infra/canaries/canary.ts +46 -0
- package/src/aws/infra/canaries/database-canary.ts +98 -0
- package/src/aws/infra/canaries/database-checker.ts +155 -0
- package/src/aws/infra/canaries/url-canary.ts +74 -0
- package/src/aws/infra/canaries/url-checker.ts +366 -0
- package/src/aws/infra/documentation.ts +124 -0
- package/src/aws/infra/scheduler.ts +59 -0
- package/src/aws/infra/security-rule.ts +38 -0
- package/src/aws/infra/sqs-integration.ts +102 -0
- package/src/aws/infra/sqs-queue.ts +148 -0
- package/src/aws/infra/stack/lambda-configs.ts +207 -0
- package/src/aws/infra/stack/monitoredfunction.ts +342 -0
- package/src/aws/infra/stack/rest_apis.ts +223 -0
- package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
- package/src/aws/infra/stack/stack.ts +145 -0
- package/src/aws/infra/stack/subscription.ts +58 -0
- package/src/aws/infra/usage-plans.ts +41 -0
- package/src/aws/runtime/apikey.ts +9 -0
- package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
- package/src/aws/runtime/environment.ts +9 -0
- package/src/aws/runtime/messaging.ts +26 -0
- package/src/aws/runtime/s3.ts +44 -0
- package/src/aws/runtime/secrets/dbsecret.ts +116 -0
- package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
- package/src/aws/runtime/secrets/rds-holder.ts +33 -0
- package/src/aws/runtime/secrets/secret-holder.ts +116 -0
- package/src/aws/runtime/secrets/secret.ts +50 -0
- package/src/aws/types/errors.ts +14 -0
- package/src/aws/types/lambda-response.ts +43 -0
- package/src/aws/types/mediatypes.ts +11 -0
- package/src/aws/types/model-with-reference.ts +8 -0
- package/src/aws/types/proxytypes.ts +27 -0
- package/src/aws/types/tags.ts +3 -0
- package/src/database/cached.ts +35 -0
- package/src/database/database.ts +96 -0
- package/src/database/last-updated.ts +59 -0
- package/src/database/models.ts +7 -0
- package/src/marine/id_utils.ts +30 -0
- package/src/marine/rtz.ts +57 -0
- package/src/test/asserter.ts +48 -0
- package/src/test/db-testutils.ts +44 -0
- package/src/test/httpserver.ts +96 -0
- package/src/test/secret.ts +23 -0
- package/src/test/secrets-manager.ts +34 -0
- package/src/test/testutils.ts +39 -0
- package/src/types/either.ts +3 -0
- package/src/types/input-error.ts +2 -0
- package/src/types/language.ts +3 -0
- package/src/types/traffictype.ts +8 -0
- package/src/types/validator.ts +10 -0
- package/src/utils/api-model.ts +133 -0
- package/src/utils/base64.ts +16 -0
- package/src/utils/date-utils.ts +30 -0
- package/src/utils/geojson-types.ts +22 -0
- package/src/utils/geometry.ts +164 -0
- package/src/utils/retry.ts +49 -0
- package/src/utils/slack.ts +22 -0
- package/src/utils/utils.ts +105 -0
- package/aws/infra/api/integration.js +0 -52
- package/aws/infra/api/response.js +0 -61
- package/aws/infra/api/responses.js +0 -79
- package/aws/infra/api/static-integration.js +0 -54
- package/aws/infra/canaries/canary-alarm.js +0 -26
- package/aws/infra/canaries/canary-parameters.js +0 -3
- package/aws/infra/canaries/canary-role.js +0 -46
- package/aws/infra/canaries/canary.js +0 -32
- package/aws/infra/canaries/database-canary.js +0 -55
- package/aws/infra/canaries/database-checker.js +0 -109
- package/aws/infra/canaries/url-canary.js +0 -46
- package/aws/infra/canaries/url-checker.js +0 -238
- package/aws/infra/documentation.js +0 -95
- package/aws/infra/scheduler.js +0 -31
- package/aws/infra/security-rule.js +0 -39
- package/aws/infra/sqs-integration.js +0 -93
- package/aws/infra/sqs-queue.js +0 -130
- package/aws/infra/stack/lambda-configs.js +0 -93
- package/aws/infra/stack/monitoredfunction.js +0 -135
- package/aws/infra/stack/rest_apis.js +0 -185
- package/aws/infra/stack/stack-checking-aspect.js +0 -174
- package/aws/infra/stack/stack.js +0 -60
- package/aws/infra/stack/subscription.js +0 -41
- package/aws/infra/usage-plans.js +0 -42
- package/aws/runtime/apikey.js +0 -13
- package/aws/runtime/digitraffic-integration-response.js +0 -26
- package/aws/runtime/environment.js +0 -12
- package/aws/runtime/messaging.js +0 -31
- package/aws/runtime/s3.js +0 -30
- package/aws/runtime/secrets/dbsecret.js +0 -96
- package/aws/runtime/secrets/proxy-holder.js +0 -26
- package/aws/runtime/secrets/rds-holder.js +0 -26
- package/aws/runtime/secrets/secret-holder.js +0 -73
- package/aws/runtime/secrets/secret.js +0 -43
- package/aws/types/errors.js +0 -9
- package/aws/types/lambda-response.js +0 -28
- package/aws/types/mediatypes.js +0 -15
- package/aws/types/model-with-reference.js +0 -3
- package/aws/types/proxytypes.js +0 -3
- package/aws/types/tags.js +0 -7
- package/database/cached.js +0 -32
- package/database/database.js +0 -62
- package/database/last-updated.js +0 -54
- package/database/models.js +0 -3
- package/index.d.ts +0 -1
- package/index.js +0 -18
- package/marine/id_utils.js +0 -33
- package/marine/rtz.js +0 -3
- package/test/asserter.js +0 -45
- package/test/db-testutils.js +0 -31
- package/test/httpserver.js +0 -67
- package/test/secret.js +0 -25
- package/test/secrets-manager.js +0 -59
- package/test/testutils.js +0 -44
- package/types/input-error.js +0 -7
- package/types/language.js +0 -10
- package/types/traffictype.js +0 -13
- package/types/validator.js +0 -14
- package/utils/api-model.js +0 -129
- package/utils/base64.js +0 -21
- package/utils/date-utils.js +0 -34
- package/utils/geojson-types.js +0 -18
- package/utils/geometry.js +0 -140
- package/utils/retry.js +0 -50
- package/utils/slack.js +0 -25
- package/utils/utils.js +0 -64
@@ -0,0 +1,164 @@
|
|
1
|
+
/**
|
2
|
+
* GeoJSON functions and tools
|
3
|
+
*/
|
4
|
+
import { Feature, FeatureCollection, Geometry, Position } from "geojson";
|
5
|
+
import * as geoJsonValidator from "geojson-validation";
|
6
|
+
|
7
|
+
export const SRID_WGS84 = 4326;
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Creates WKT geometry from GeoJSON geometry
|
11
|
+
* @param geometry GeoJson geometry to convert to WKT
|
12
|
+
*/
|
13
|
+
export function createGeometry(geometry: Geometry): string {
|
14
|
+
if (geometry.type === "LineString") {
|
15
|
+
const coordinates = linestring(geometry.coordinates);
|
16
|
+
|
17
|
+
return `LINESTRING(${coordinates})`;
|
18
|
+
} else if (geometry.type === "Point") {
|
19
|
+
const coordinates = coordinatePair(geometry.coordinates);
|
20
|
+
|
21
|
+
return `POINT(${coordinates})`;
|
22
|
+
} else if (geometry.type === "Polygon") {
|
23
|
+
const coordinates = polygon(geometry.coordinates);
|
24
|
+
|
25
|
+
return `POLYGON(${coordinates})`;
|
26
|
+
} else if (geometry.type === "MultiPolygon") {
|
27
|
+
const coordinates = multiPolygon(geometry.coordinates);
|
28
|
+
|
29
|
+
return `MULTIPOLYGON(${coordinates})`;
|
30
|
+
}
|
31
|
+
|
32
|
+
console.error("unsupported locationType=%s", geometry.type);
|
33
|
+
return "POLYGON EMPTY";
|
34
|
+
}
|
35
|
+
|
36
|
+
function linestring(coordinates: Position[]): string {
|
37
|
+
return coordinates.map((c: Position) => coordinatePair(c)).join(",");
|
38
|
+
}
|
39
|
+
|
40
|
+
function polygon(coordinates: Position[][]): string {
|
41
|
+
const list = coordinates.map((c: Position[]) => linestring(c)).join(",");
|
42
|
+
return `(${list})`;
|
43
|
+
}
|
44
|
+
|
45
|
+
function multiPolygon(coordinates: Position[][][]): string {
|
46
|
+
const list = coordinates.map((c: Position[][]) => polygon(c)).join(",");
|
47
|
+
return `(${list})`;
|
48
|
+
}
|
49
|
+
|
50
|
+
function coordinatePair(coordinate: Position): string {
|
51
|
+
return `${coordinate[0]} ${coordinate[1]}`;
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Create a GeoJSON FeatureCollection from a list of GeoJSON features with a 'last updated' property
|
56
|
+
* @param features List of Features
|
57
|
+
* @param lastUpdated Last updated date
|
58
|
+
*/
|
59
|
+
export function createFeatureCollection(
|
60
|
+
features: Feature[],
|
61
|
+
lastUpdated: Date | null
|
62
|
+
): FeatureCollection {
|
63
|
+
return {
|
64
|
+
type: "FeatureCollection",
|
65
|
+
lastUpdated: lastUpdated,
|
66
|
+
features: features,
|
67
|
+
} as FeatureCollection;
|
68
|
+
}
|
69
|
+
|
70
|
+
export function isValidGeoJson<T>(json: T): boolean {
|
71
|
+
return geoJsonValidator.valid(json);
|
72
|
+
}
|
73
|
+
|
74
|
+
export function isFeatureCollection<T>(json: T): boolean {
|
75
|
+
return geoJsonValidator.isFeatureCollection(json);
|
76
|
+
}
|
77
|
+
|
78
|
+
const DEGREES_TO_RADIANS = 0.017453292519943295; // = Math.PI / 180
|
79
|
+
const EARTH_RADIUS_KM = 6371;
|
80
|
+
|
81
|
+
/**
|
82
|
+
* Returns the distance between this and given GeoJSON point in kilometers. Doesn't take in account altitude.
|
83
|
+
* Based on the following Stack Overflow question:
|
84
|
+
* http://stackoverflow.com/questions/27928/calculate-distance-between-two-latitude-longitude-points-haversine-formula,
|
85
|
+
* which is based on https://en.wikipedia.org/wiki/Haversine_formula (error rate: ~0.55%).
|
86
|
+
*/
|
87
|
+
function distanceBetweenWGS84PointsInKm(
|
88
|
+
fromXLon: number,
|
89
|
+
fromYLat: number,
|
90
|
+
toXLon: number,
|
91
|
+
toYLat: number
|
92
|
+
): number {
|
93
|
+
const diffLat = toRadians(toYLat - fromYLat);
|
94
|
+
const diffLon = toRadians(toXLon - fromXLon);
|
95
|
+
|
96
|
+
const a =
|
97
|
+
Math.sin(diffLat / 2) * Math.sin(diffLat / 2) +
|
98
|
+
Math.cos(toRadians(fromYLat)) *
|
99
|
+
Math.cos(toRadians(toYLat)) *
|
100
|
+
Math.sin(diffLon / 2) *
|
101
|
+
Math.sin(diffLon / 2);
|
102
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
103
|
+
return EARTH_RADIUS_KM * c;
|
104
|
+
}
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Calculates distance between two GeoJSON points (WGS84)
|
108
|
+
* @param pos1
|
109
|
+
* @param pos2
|
110
|
+
*/
|
111
|
+
export function distanceBetweenPositionsInKm(pos1: Position, pos2: Position) {
|
112
|
+
return distanceBetweenWGS84PointsInKm(pos1[0], pos1[1], pos2[0], pos2[1]);
|
113
|
+
}
|
114
|
+
|
115
|
+
export function areDistinctPositions(previous: Position, next: Position) {
|
116
|
+
return previous[0] !== next[0] || previous[1] !== next[1];
|
117
|
+
}
|
118
|
+
|
119
|
+
/**
|
120
|
+
* Calculates distance between two GeoJSON points (WGS84)
|
121
|
+
* @param pos1
|
122
|
+
* @param pos2
|
123
|
+
*/
|
124
|
+
export function distanceBetweenPositionsInM(pos1: Position, pos2: Position) {
|
125
|
+
return distanceBetweenPositionsInKm(pos1, pos2) * 1000; // km -> m
|
126
|
+
}
|
127
|
+
|
128
|
+
export function createGmlLineString(geometry: Geometry, srsName = "EPSG:4326") {
|
129
|
+
const posList = createPosList(geometry);
|
130
|
+
|
131
|
+
return {
|
132
|
+
srsName,
|
133
|
+
posList,
|
134
|
+
};
|
135
|
+
}
|
136
|
+
|
137
|
+
function createPosList(geometry: Geometry) {
|
138
|
+
if (geometry.type === "Point") {
|
139
|
+
return positionToList(geometry.coordinates);
|
140
|
+
} else if (geometry.type === "LineString") {
|
141
|
+
return lineStringToList(geometry.coordinates);
|
142
|
+
} else if (geometry.type === "Polygon") {
|
143
|
+
return polygonToList(geometry.coordinates);
|
144
|
+
}
|
145
|
+
|
146
|
+
throw new Error("unknown geometry type " + JSON.stringify(geometry));
|
147
|
+
}
|
148
|
+
|
149
|
+
function polygonToList(positions: Position[][], precision = 8) {
|
150
|
+
return positions.map((p) => lineStringToList(p, precision)).join(" ");
|
151
|
+
}
|
152
|
+
|
153
|
+
function lineStringToList(positions: Position[], precision = 8) {
|
154
|
+
return positions.map((p) => positionToList(p, precision)).join(" ");
|
155
|
+
}
|
156
|
+
|
157
|
+
export function positionToList(position: Position, precision = 8) {
|
158
|
+
return position.map((n) => n.toPrecision(precision)).join(" ");
|
159
|
+
}
|
160
|
+
|
161
|
+
// Converts numeric degrees to radians
|
162
|
+
function toRadians(angdeg: number) {
|
163
|
+
return angdeg * DEGREES_TO_RADIANS;
|
164
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
export enum RetryLogError {
|
2
|
+
LOG_ALL_AS_ERRORS,
|
3
|
+
LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS,
|
4
|
+
NO_LOGGING
|
5
|
+
}
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Utility function for retrying async functions.
|
9
|
+
* @param asyncFn Function
|
10
|
+
* @param retries Amount of retries, default is 3. If set to <= 0, no retries will be done. Using non-finite numbers will throw an error. The maximum allowed retry count is 100.
|
11
|
+
* @param logError Logging options
|
12
|
+
* @return Promise return value
|
13
|
+
*/
|
14
|
+
export async function retry<T>(asyncFn: () => Promise<T>,
|
15
|
+
retries = 3,
|
16
|
+
logError = RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS): Promise<T> {
|
17
|
+
|
18
|
+
if (!isFinite(retries)) {
|
19
|
+
throw new Error('Only finite numbers are supported');
|
20
|
+
}
|
21
|
+
if (retries > 100) {
|
22
|
+
throw new Error('Exceeded the maximum retry count of 100');
|
23
|
+
}
|
24
|
+
try {
|
25
|
+
return await asyncFn();
|
26
|
+
} catch (error) {
|
27
|
+
const remainingRetries = retries - 1;
|
28
|
+
|
29
|
+
const errorMessage = 'method=retry error';
|
30
|
+
if (logError === RetryLogError.LOG_ALL_AS_ERRORS) {
|
31
|
+
console.error(errorMessage, error);
|
32
|
+
} else if (logError === RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS) {
|
33
|
+
if (remainingRetries < 0) {
|
34
|
+
console.error(errorMessage, error);
|
35
|
+
} else {
|
36
|
+
console.warn(errorMessage, error);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
if (remainingRetries < 0) {
|
41
|
+
console.warn('method=retry no retries left');
|
42
|
+
throw new Error('No retries left');
|
43
|
+
}
|
44
|
+
console.warn('method=retry invocation failed, retrying with remaining retries %d', remainingRetries);
|
45
|
+
return retry(asyncFn,
|
46
|
+
remainingRetries,
|
47
|
+
logError);
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import axios from "axios";
|
2
|
+
|
3
|
+
export class SlackApi {
|
4
|
+
|
5
|
+
private readonly url: string;
|
6
|
+
|
7
|
+
constructor(url :string) {
|
8
|
+
this.url = url;
|
9
|
+
}
|
10
|
+
|
11
|
+
async notify(text: string) {
|
12
|
+
try {
|
13
|
+
console.info('method=notify Notifying Slack');
|
14
|
+
await axios.post(this.url, {
|
15
|
+
text,
|
16
|
+
});
|
17
|
+
} catch (error) {
|
18
|
+
console.error('method=notify Slack notify failed!');
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
}
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/**
|
2
|
+
* Check if arrays have only elements that also exists also in other array.
|
3
|
+
* Individual element count doesn't matter.
|
4
|
+
* Function works only for primitive types and for other it just checks the reference to object.
|
5
|
+
*
|
6
|
+
* Some examples
|
7
|
+
* bothArraysHasSameValues( [a, b], [b, a] ) => true
|
8
|
+
* bothArraysHasSameValues( [a, a], [a, a, a] ) => true
|
9
|
+
* bothArraysHasSameValues( [a, b], [a] ) => false
|
10
|
+
*
|
11
|
+
* Object references:
|
12
|
+
* const o1 = { a: 1, b: 2};
|
13
|
+
* const o2 = { a: 1, b: 2};
|
14
|
+
* // Arrays has references to same objects
|
15
|
+
* bothArraysHasSameValues([o1], [o1])) => true
|
16
|
+
* Arrays have references to different objects
|
17
|
+
* bothArraysHasSameValues([o1], [o2])) => false
|
18
|
+
*
|
19
|
+
* @param a first array to compare
|
20
|
+
* @param b second array to compare
|
21
|
+
*/
|
22
|
+
import { Either } from "../types/either";
|
23
|
+
|
24
|
+
export function bothArraysHasSameValues(
|
25
|
+
a: null | undefined | unknown[],
|
26
|
+
b: null | undefined | unknown[]
|
27
|
+
): boolean {
|
28
|
+
if ((a && !b) || (!a && b)) {
|
29
|
+
return false;
|
30
|
+
} else if (!a && !b) {
|
31
|
+
return true;
|
32
|
+
}
|
33
|
+
const aSet = new Set(a);
|
34
|
+
const bSet = new Set(b);
|
35
|
+
if (aSet.size !== bSet.size) {
|
36
|
+
return false;
|
37
|
+
}
|
38
|
+
return Array.from(aSet).every((value) => bSet.has(value));
|
39
|
+
}
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Returns the last item on the array. If the array is empty, throws an error!
|
43
|
+
*/
|
44
|
+
export function getLast<T>(array: T[], sortFunction?: (a: T) => number): T {
|
45
|
+
return getFirstOrLast(false, array, sortFunction);
|
46
|
+
}
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Returns the first item on the array. If the array is empty, throws an error!
|
50
|
+
*/
|
51
|
+
export function getFirst<T>(array: T[], sortFunction?: (a: T) => number): T {
|
52
|
+
return getFirstOrLast(true, array, sortFunction);
|
53
|
+
}
|
54
|
+
|
55
|
+
function getFirstOrLast<T>(
|
56
|
+
getFirst: boolean,
|
57
|
+
array: T[],
|
58
|
+
sortFunction?: (a: T) => number
|
59
|
+
): T {
|
60
|
+
if (array.length == 0) {
|
61
|
+
throw new Error(
|
62
|
+
`can't get ${getFirst ? "first" : "last"} from empty array!`
|
63
|
+
);
|
64
|
+
}
|
65
|
+
|
66
|
+
const index = getFirst ? 0 : array.length - 1;
|
67
|
+
|
68
|
+
if (sortFunction) {
|
69
|
+
return array.sort(sortFunction)[index];
|
70
|
+
}
|
71
|
+
|
72
|
+
return array[index];
|
73
|
+
}
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Gets environment variable. Throws error if variable is not found.
|
77
|
+
*
|
78
|
+
* @param key Environment key
|
79
|
+
* @return string
|
80
|
+
*/
|
81
|
+
export function getEnvVariable(key: string): string {
|
82
|
+
const either = getEnvVariableSafe(key);
|
83
|
+
if (either.result === "error") {
|
84
|
+
throw new Error(either.message);
|
85
|
+
}
|
86
|
+
return either.value;
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Gets environment variable. Safe version returns object with either ok or error status.
|
91
|
+
* Easier to use for recovery than catching an error.
|
92
|
+
*
|
93
|
+
* @param key Environment key
|
94
|
+
* @return Either<string>
|
95
|
+
*/
|
96
|
+
export function getEnvVariableSafe(key: string): Either<string> {
|
97
|
+
const value = process.env[key];
|
98
|
+
if (value === undefined) {
|
99
|
+
return {
|
100
|
+
result: "error",
|
101
|
+
message: `Error: environment variable "${key}" is undefined.`,
|
102
|
+
};
|
103
|
+
}
|
104
|
+
return { result: "ok", value };
|
105
|
+
}
|
@@ -1,52 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficIntegration = void 0;
|
4
|
-
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
5
|
-
const mediatypes_1 = require("../../types/mediatypes");
|
6
|
-
const digitraffic_integration_response_1 = require("../../runtime/digitraffic-integration-response");
|
7
|
-
class DigitrafficIntegration {
|
8
|
-
constructor(lambda, mediaType = mediatypes_1.MediaType.TEXT_PLAIN) {
|
9
|
-
this.parameters = [];
|
10
|
-
this.lambda = lambda;
|
11
|
-
this.mediaType = mediaType;
|
12
|
-
}
|
13
|
-
addPathParameter(...names) {
|
14
|
-
names.forEach(name => this.parameters.push({ type: 'path', name }));
|
15
|
-
return this;
|
16
|
-
}
|
17
|
-
addQueryParameter(...names) {
|
18
|
-
names.forEach(name => this.parameters.push({ type: 'querystring', name }));
|
19
|
-
return this;
|
20
|
-
}
|
21
|
-
build() {
|
22
|
-
const integrationResponses = this.createResponses();
|
23
|
-
return new aws_apigateway_1.LambdaIntegration(this.lambda, {
|
24
|
-
proxy: false,
|
25
|
-
integrationResponses,
|
26
|
-
requestParameters: this.parameters.length == 0 ? undefined : this.createRequestParameters(),
|
27
|
-
requestTemplates: this.parameters.length == 0 ? undefined : this.createRequestTemplates(),
|
28
|
-
passthroughBehavior: aws_apigateway_1.PassthroughBehavior.WHEN_NO_MATCH,
|
29
|
-
});
|
30
|
-
}
|
31
|
-
createRequestParameters() {
|
32
|
-
const requestParameters = {};
|
33
|
-
this.parameters.forEach((parameter) => {
|
34
|
-
requestParameters[`integration.request.${parameter.type}.${parameter.name}`] = `method.request.${parameter.type}.${parameter.name}`;
|
35
|
-
});
|
36
|
-
return requestParameters;
|
37
|
-
}
|
38
|
-
createRequestTemplates() {
|
39
|
-
const requestJson = {};
|
40
|
-
this.parameters.forEach((parameter) => {
|
41
|
-
requestJson[parameter.name] = `$util.escapeJavaScript($input.params('${parameter.name}'))`;
|
42
|
-
});
|
43
|
-
return {
|
44
|
-
[mediatypes_1.MediaType.APPLICATION_JSON]: JSON.stringify(requestJson),
|
45
|
-
};
|
46
|
-
}
|
47
|
-
createResponses() {
|
48
|
-
return [digitraffic_integration_response_1.DigitrafficIntegrationResponse.ok(this.mediaType)];
|
49
|
-
}
|
50
|
-
}
|
51
|
-
exports.DigitrafficIntegration = DigitrafficIntegration;
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL2FwaS9pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBdUc7QUFFdkcsdURBQWlEO0FBQ2pELHFHQUE4RjtBQVM5RixNQUFhLHNCQUFzQjtJQU0vQixZQUFZLE1BQWlCLEVBQUUsU0FBUyxHQUFHLHNCQUFTLENBQUMsVUFBVTtRQUZ0RCxlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUdyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBRyxLQUFlO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHLEtBQWU7UUFDaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUs7UUFDRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVwRCxPQUFPLElBQUksa0NBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxLQUFLLEVBQUUsS0FBSztZQUNaLG9CQUFvQjtZQUNwQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzNGLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDekYsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsYUFBYTtTQUN6RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztRQUVyRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQXVCLEVBQUUsRUFBRTtZQUNoRCxpQkFBaUIsQ0FBQyx1QkFBdUIsU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEksQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGlCQUFpQixDQUFDO0lBQzdCLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQXVCLEVBQUUsRUFBRTtZQUNoRCxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLHlDQUF5QyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsQ0FBQyxzQkFBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDNUQsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxDQUFDLGlFQUE4QixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0o7QUE1REQsd0RBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlZ3JhdGlvblJlc3BvbnNlLCBMYW1iZGFJbnRlZ3JhdGlvbiwgUGFzc3Rocm91Z2hCZWhhdmlvcn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge0lGdW5jdGlvbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7TWVkaWFUeXBlfSBmcm9tIFwiLi4vLi4vdHlwZXMvbWVkaWF0eXBlc1wiO1xuaW1wb3J0IHtEaWdpdHJhZmZpY0ludGVncmF0aW9uUmVzcG9uc2V9IGZyb20gXCIuLi8uLi9ydW50aW1lL2RpZ2l0cmFmZmljLWludGVncmF0aW9uLXJlc3BvbnNlXCI7XG5cbnR5cGUgUGFyYW1ldGVyVHlwZSA9ICdwYXRoJyB8ICdxdWVyeXN0cmluZyc7XG5cbmludGVyZmFjZSBBcGlQYXJhbWV0ZXIge1xuICAgIHR5cGU6IFBhcmFtZXRlclR5cGVcbiAgICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIERpZ2l0cmFmZmljSW50ZWdyYXRpb24ge1xuICAgIHJlYWRvbmx5IGxhbWJkYTogSUZ1bmN0aW9uO1xuICAgIHJlYWRvbmx5IG1lZGlhVHlwZTogTWVkaWFUeXBlO1xuXG4gICAgcmVhZG9ubHkgcGFyYW1ldGVyczogQXBpUGFyYW1ldGVyW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGxhbWJkYTogSUZ1bmN0aW9uLCBtZWRpYVR5cGUgPSBNZWRpYVR5cGUuVEVYVF9QTEFJTikge1xuICAgICAgICB0aGlzLmxhbWJkYSA9IGxhbWJkYTtcbiAgICAgICAgdGhpcy5tZWRpYVR5cGUgPSBtZWRpYVR5cGU7XG4gICAgfVxuXG4gICAgYWRkUGF0aFBhcmFtZXRlciguLi5uYW1lczogc3RyaW5nW10pOiBEaWdpdHJhZmZpY0ludGVncmF0aW9uIHtcbiAgICAgICAgbmFtZXMuZm9yRWFjaChuYW1lID0+IHRoaXMucGFyYW1ldGVycy5wdXNoKHt0eXBlOiAncGF0aCcsIG5hbWV9KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYWRkUXVlcnlQYXJhbWV0ZXIoLi4ubmFtZXM6IHN0cmluZ1tdKTogRGlnaXRyYWZmaWNJbnRlZ3JhdGlvbiB7XG4gICAgICAgIG5hbWVzLmZvckVhY2gobmFtZSA9PiB0aGlzLnBhcmFtZXRlcnMucHVzaCh7dHlwZTogJ3F1ZXJ5c3RyaW5nJywgbmFtZX0pKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBMYW1iZGFJbnRlZ3JhdGlvbiB7XG4gICAgICAgIGNvbnN0IGludGVncmF0aW9uUmVzcG9uc2VzID0gdGhpcy5jcmVhdGVSZXNwb25zZXMoKTtcblxuICAgICAgICByZXR1cm4gbmV3IExhbWJkYUludGVncmF0aW9uKHRoaXMubGFtYmRhLCB7XG4gICAgICAgICAgICBwcm94eTogZmFsc2UsXG4gICAgICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlcyxcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNyZWF0ZVJlcXVlc3RQYXJhbWV0ZXJzKCksXG4gICAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMoKSxcbiAgICAgICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IFBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19NQVRDSCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVxdWVzdFBhcmFtZXRlcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcjogQXBpUGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0UGFyYW1ldGVyc1tgaW50ZWdyYXRpb24ucmVxdWVzdC4ke3BhcmFtZXRlci50eXBlfS4ke3BhcmFtZXRlci5uYW1lfWBdID0gYG1ldGhvZC5yZXF1ZXN0LiR7cGFyYW1ldGVyLnR5cGV9LiR7cGFyYW1ldGVyLm5hbWV9YDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVlc3RQYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIGNyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RKc29uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcjogQXBpUGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0SnNvbltwYXJhbWV0ZXIubmFtZV0gPSBgJHV0aWwuZXNjYXBlSmF2YVNjcmlwdCgkaW5wdXQucGFyYW1zKCcke3BhcmFtZXRlci5uYW1lfScpKWA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT05dOiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0SnNvbiksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY3JlYXRlUmVzcG9uc2VzKCk6IEludGVncmF0aW9uUmVzcG9uc2VbXSB7XG4gICAgICAgIHJldHVybiBbRGlnaXRyYWZmaWNJbnRlZ3JhdGlvblJlc3BvbnNlLm9rKHRoaXMubWVkaWFUeXBlKV07XG4gICAgfVxufSJdfQ==
|
@@ -1,61 +0,0 @@
|
|
1
|
-
"use strict";
|
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;
|
4
|
-
const apigateway = require("aws-cdk-lib/aws-apigateway");
|
5
|
-
const mediatypes_1 = require("../../types/mediatypes");
|
6
|
-
/**
|
7
|
-
* This is velocity-script, that assumes the response to be LambdaResponse(status and body).
|
8
|
-
* It will always return the body and status, but if status in something else than 200 OK the content-type
|
9
|
-
* will be overridden to text/plain. (it's assumed, that lambda will return error text).
|
10
|
-
*
|
11
|
-
* If fileName is set, then Content-Disposition-header will be set to use it
|
12
|
-
*/
|
13
|
-
exports.RESPONSE_DEFAULT_LAMBDA = `#set($inputRoot = $input.path('$'))
|
14
|
-
$inputRoot.body
|
15
|
-
#if ($inputRoot.status != 200)
|
16
|
-
#set ($context.responseOverride.status = $inputRoot.status)
|
17
|
-
#set ($context.responseOverride.header.Content-Type = 'text/plain')
|
18
|
-
#end
|
19
|
-
#set ($context.responseOverride.header.Access-Control-Allow-Origin = '*')
|
20
|
-
#if ("$!inputRoot.fileName" != "")
|
21
|
-
#set ($disposition = 'attachment; filename="FN"')
|
22
|
-
#set ($context.responseOverride.header.Content-Disposition = $disposition.replaceAll('FN', $inputRoot.fileName))
|
23
|
-
#end
|
24
|
-
`;
|
25
|
-
const BODY_FROM_INPUT_PATH = "$input.path('$').body";
|
26
|
-
// DEPRECATED
|
27
|
-
const messageSchema = {
|
28
|
-
schema: apigateway.JsonSchemaVersion.DRAFT4,
|
29
|
-
type: apigateway.JsonSchemaType.OBJECT,
|
30
|
-
description: 'Response with message',
|
31
|
-
properties: {
|
32
|
-
message: {
|
33
|
-
type: apigateway.JsonSchemaType.STRING,
|
34
|
-
description: 'Response message',
|
35
|
-
},
|
36
|
-
},
|
37
|
-
};
|
38
|
-
// DEPRECATED
|
39
|
-
exports.MessageModel = {
|
40
|
-
contentType: mediatypes_1.MediaType.APPLICATION_JSON,
|
41
|
-
modelName: 'MessageResponseModel',
|
42
|
-
schema: messageSchema,
|
43
|
-
};
|
44
|
-
const NotFoundMessage = 'Not found';
|
45
|
-
exports.NotFoundResponse = JSON.stringify({ message: NotFoundMessage });
|
46
|
-
const InternalServerErrorMessage = 'Error';
|
47
|
-
const InternalServerErrorResponse = JSON.stringify({ message: InternalServerErrorMessage });
|
48
|
-
const BadRequestMessage = 'Bad request';
|
49
|
-
const BadRequestResponse = JSON.stringify({ message: BadRequestMessage });
|
50
|
-
exports.BadRequestResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, BadRequestResponse);
|
51
|
-
exports.NotFoundResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, exports.NotFoundResponse);
|
52
|
-
exports.XmlResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_XML, BODY_FROM_INPUT_PATH);
|
53
|
-
exports.SvgResponseTemplate = createResponses(mediatypes_1.MediaType.IMAGE_SVG, BODY_FROM_INPUT_PATH);
|
54
|
-
exports.InternalServerErrorResponseTemplate = createResponses(mediatypes_1.MediaType.APPLICATION_JSON, InternalServerErrorResponse);
|
55
|
-
function createResponses(key, value) {
|
56
|
-
const map = {};
|
57
|
-
map[key] = value;
|
58
|
-
return map;
|
59
|
-
}
|
60
|
-
exports.createResponses = createResponses;
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL2FwaS9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBMEQ7QUFDMUQsdURBQWlEO0FBRWpEOzs7Ozs7R0FNRztBQUNVLFFBQUEsdUJBQXVCLEdBQUc7Ozs7Ozs7Ozs7O0NBV3RDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0FBRXJELGFBQWE7QUFDYixNQUFNLGFBQWEsR0FBMEI7SUFDekMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNO0lBQzNDLElBQUksRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDdEMsV0FBVyxFQUFFLHVCQUF1QjtJQUNwQyxVQUFVLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDTCxJQUFJLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1lBQ3RDLFdBQVcsRUFBRSxrQkFBa0I7U0FDbEM7S0FDSjtDQUNKLENBQUM7QUFFRixhQUFhO0FBQ0EsUUFBQSxZQUFZLEdBQUc7SUFDeEIsV0FBVyxFQUFFLHNCQUFTLENBQUMsZ0JBQWdCO0lBQ3ZDLFNBQVMsRUFBRSxzQkFBc0I7SUFDakMsTUFBTSxFQUFFLGFBQWE7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUN2QixRQUFBLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztBQUUzRSxNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQztBQUMzQyxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUMsQ0FBQyxDQUFDO0FBRTFGLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7QUFFM0QsUUFBQSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdGLFFBQUEsd0JBQXdCLEdBQUcsZUFBZSxDQUFDLHNCQUFTLENBQUMsZ0JBQWdCLEVBQUUsd0JBQWdCLENBQUMsQ0FBQztBQUN6RixRQUFBLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxzQkFBUyxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3ZGLFFBQUEsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLHNCQUFTLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDakYsUUFBQSxtQ0FBbUMsR0FBRyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0FBRTVILFNBQWdCLGVBQWUsQ0FBSSxHQUFjLEVBQUUsS0FBUTtJQUN2RCxNQUFNLEdBQUcsR0FBc0IsRUFBRSxDQUFDO0lBRWxDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFakIsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBTkQsMENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXBpZ2F0ZXdheSA9IHJlcXVpcmUoJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5Jyk7XG5pbXBvcnQge01lZGlhVHlwZX0gZnJvbSBcIi4uLy4uL3R5cGVzL21lZGlhdHlwZXNcIjtcblxuLyoqXG4gKiBUaGlzIGlzIHZlbG9jaXR5LXNjcmlwdCwgdGhhdCBhc3N1bWVzIHRoZSByZXNwb25zZSB0byBiZSBMYW1iZGFSZXNwb25zZShzdGF0dXMgYW5kIGJvZHkpLlxuICogSXQgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBib2R5IGFuZCBzdGF0dXMsIGJ1dCBpZiBzdGF0dXMgaW4gc29tZXRoaW5nIGVsc2UgdGhhbiAyMDAgT0sgdGhlIGNvbnRlbnQtdHlwZVxuICogd2lsbCBiZSBvdmVycmlkZGVuIHRvIHRleHQvcGxhaW4uIChpdCdzIGFzc3VtZWQsIHRoYXQgbGFtYmRhIHdpbGwgcmV0dXJuIGVycm9yIHRleHQpLlxuICpcbiAqIElmIGZpbGVOYW1lIGlzIHNldCwgdGhlbiBDb250ZW50LURpc3Bvc2l0aW9uLWhlYWRlciB3aWxsIGJlIHNldCB0byB1c2UgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IFJFU1BPTlNFX0RFRkFVTFRfTEFNQkRBID0gYCNzZXQoJGlucHV0Um9vdCA9ICRpbnB1dC5wYXRoKCckJykpXG4kaW5wdXRSb290LmJvZHlcbiNpZiAoJGlucHV0Um9vdC5zdGF0dXMgIT0gMjAwKVxuI3NldCAoJGNvbnRleHQucmVzcG9uc2VPdmVycmlkZS5zdGF0dXMgPSAkaW5wdXRSb290LnN0YXR1cylcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkNvbnRlbnQtVHlwZSA9ICd0ZXh0L3BsYWluJylcbiNlbmRcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiA9ICcqJylcbiNpZiAoXCIkIWlucHV0Um9vdC5maWxlTmFtZVwiICE9IFwiXCIpXG4jc2V0ICgkZGlzcG9zaXRpb24gPSAnYXR0YWNobWVudDsgZmlsZW5hbWU9XCJGTlwiJylcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkNvbnRlbnQtRGlzcG9zaXRpb24gPSAkZGlzcG9zaXRpb24ucmVwbGFjZUFsbCgnRk4nLCAkaW5wdXRSb290LmZpbGVOYW1lKSlcbiNlbmRcbmA7XG5cbmNvbnN0IEJPRFlfRlJPTV9JTlBVVF9QQVRIID0gXCIkaW5wdXQucGF0aCgnJCcpLmJvZHlcIjtcblxuLy8gREVQUkVDQVRFRFxuY29uc3QgbWVzc2FnZVNjaGVtYTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hID0ge1xuICAgIHNjaGVtYTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVmVyc2lvbi5EUkFGVDQsXG4gICAgdHlwZTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVHlwZS5PQkpFQ1QsXG4gICAgZGVzY3JpcHRpb246ICdSZXNwb25zZSB3aXRoIG1lc3NhZ2UnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Jlc3BvbnNlIG1lc3NhZ2UnLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG4vLyBERVBSRUNBVEVEXG5leHBvcnQgY29uc3QgTWVzc2FnZU1vZGVsID0ge1xuICAgIGNvbnRlbnRUeXBlOiBNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTixcbiAgICBtb2RlbE5hbWU6ICdNZXNzYWdlUmVzcG9uc2VNb2RlbCcsXG4gICAgc2NoZW1hOiBtZXNzYWdlU2NoZW1hLFxufTtcblxuY29uc3QgTm90Rm91bmRNZXNzYWdlID0gJ05vdCBmb3VuZCc7XG5leHBvcnQgY29uc3QgTm90Rm91bmRSZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KHttZXNzYWdlOiBOb3RGb3VuZE1lc3NhZ2V9KTtcblxuY29uc3QgSW50ZXJuYWxTZXJ2ZXJFcnJvck1lc3NhZ2UgPSAnRXJyb3InO1xuY29uc3QgSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlID0gSlNPTi5zdHJpbmdpZnkoe21lc3NhZ2U6IEludGVybmFsU2VydmVyRXJyb3JNZXNzYWdlfSk7XG5cbmNvbnN0IEJhZFJlcXVlc3RNZXNzYWdlID0gJ0JhZCByZXF1ZXN0JztcbmNvbnN0IEJhZFJlcXVlc3RSZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KHttZXNzYWdlOiBCYWRSZXF1ZXN0TWVzc2FnZX0pO1xuXG5leHBvcnQgY29uc3QgQmFkUmVxdWVzdFJlc3BvbnNlVGVtcGxhdGUgPSBjcmVhdGVSZXNwb25zZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04sIEJhZFJlcXVlc3RSZXNwb25zZSk7XG5leHBvcnQgY29uc3QgTm90Rm91bmRSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OLCBOb3RGb3VuZFJlc3BvbnNlKTtcbmV4cG9ydCBjb25zdCBYbWxSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5BUFBMSUNBVElPTl9YTUwsIEJPRFlfRlJPTV9JTlBVVF9QQVRIKTtcbmV4cG9ydCBjb25zdCBTdmdSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5JTUFHRV9TVkcsIEJPRFlfRlJPTV9JTlBVVF9QQVRIKTtcbmV4cG9ydCBjb25zdCBJbnRlcm5hbFNlcnZlckVycm9yUmVzcG9uc2VUZW1wbGF0ZSA9IGNyZWF0ZVJlc3BvbnNlcyhNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTiwgSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlczxUPihrZXk6IE1lZGlhVHlwZSwgdmFsdWU6IFQpOiBSZWNvcmQ8c3RyaW5nLCBUPiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBUPiA9IHt9O1xuXG4gICAgbWFwW2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiBtYXA7XG59XG4iXX0=
|
@@ -1,79 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getResponse = exports.defaultIntegration = exports.corsMethod = exports.methodResponse = exports.RESPONSE_404_NOT_FOUND = exports.RESPONSE_CORS_INTEGRATION = exports.RESPONSE_500_SERVER_ERROR = exports.RESPONSE_400_BAD_REQUEST = exports.RESPONSE_200_OK = void 0;
|
4
|
-
const response_1 = require("./response");
|
5
|
-
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
6
|
-
const errors_1 = require("../../types/errors");
|
7
|
-
exports.RESPONSE_200_OK = {
|
8
|
-
statusCode: '200',
|
9
|
-
};
|
10
|
-
exports.RESPONSE_400_BAD_REQUEST = {
|
11
|
-
statusCode: '400',
|
12
|
-
selectionPattern: errors_1.BAD_REQUEST_MESSAGE,
|
13
|
-
responseTemplates: response_1.BadRequestResponseTemplate,
|
14
|
-
};
|
15
|
-
exports.RESPONSE_500_SERVER_ERROR = {
|
16
|
-
statusCode: '500',
|
17
|
-
selectionPattern: errors_1.ERROR_MESSAGE,
|
18
|
-
responseTemplates: response_1.InternalServerErrorResponseTemplate,
|
19
|
-
};
|
20
|
-
const RESPONSE_XML = {
|
21
|
-
responseTemplates: response_1.XmlResponseTemplate,
|
22
|
-
};
|
23
|
-
exports.RESPONSE_CORS_INTEGRATION = {
|
24
|
-
responseParameters: {
|
25
|
-
'method.response.header.Access-Control-Allow-Origin': "'*'",
|
26
|
-
},
|
27
|
-
};
|
28
|
-
exports.RESPONSE_404_NOT_FOUND = {
|
29
|
-
statusCode: '404',
|
30
|
-
selectionPattern: errors_1.NOT_FOUND_MESSAGE,
|
31
|
-
responseTemplates: response_1.NotFoundResponseTemplate,
|
32
|
-
};
|
33
|
-
function methodResponse(status, contentType, model, parameters) {
|
34
|
-
return {
|
35
|
-
statusCode: status,
|
36
|
-
responseModels: (0, response_1.createResponses)(contentType, model),
|
37
|
-
responseParameters: parameters || {},
|
38
|
-
};
|
39
|
-
}
|
40
|
-
exports.methodResponse = methodResponse;
|
41
|
-
function corsMethod(response) {
|
42
|
-
return { ...response, ...{
|
43
|
-
responseParameters: {
|
44
|
-
'method.response.header.Access-Control-Allow-Origin': true,
|
45
|
-
},
|
46
|
-
} };
|
47
|
-
}
|
48
|
-
exports.corsMethod = corsMethod;
|
49
|
-
/**
|
50
|
-
* Creates a default Lambda integration for a REST API resource _root_
|
51
|
-
* @param lambdaFunction The Lambda function
|
52
|
-
* @param options Options
|
53
|
-
*/
|
54
|
-
function defaultIntegration(lambdaFunction, options) {
|
55
|
-
return new aws_apigateway_1.LambdaIntegration(lambdaFunction, {
|
56
|
-
proxy: false,
|
57
|
-
integrationResponses: options?.responses || [
|
58
|
-
getResponse(exports.RESPONSE_200_OK, options),
|
59
|
-
getResponse(exports.RESPONSE_400_BAD_REQUEST, options),
|
60
|
-
getResponse(exports.RESPONSE_404_NOT_FOUND, options),
|
61
|
-
getResponse(exports.RESPONSE_500_SERVER_ERROR, options),
|
62
|
-
],
|
63
|
-
requestParameters: options?.requestParameters || {},
|
64
|
-
requestTemplates: options?.requestTemplates || {},
|
65
|
-
passthroughBehavior: options?.passthroughBehavior ?? aws_apigateway_1.PassthroughBehavior.WHEN_NO_MATCH,
|
66
|
-
});
|
67
|
-
}
|
68
|
-
exports.defaultIntegration = defaultIntegration;
|
69
|
-
function getResponse(response, options) {
|
70
|
-
if (options?.xml) {
|
71
|
-
response = { ...response, ...RESPONSE_XML };
|
72
|
-
}
|
73
|
-
if (!options?.disableCors) {
|
74
|
-
response = { ...response, ...exports.RESPONSE_CORS_INTEGRATION };
|
75
|
-
}
|
76
|
-
return response;
|
77
|
-
}
|
78
|
-
exports.getResponse = getResponse;
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9hcGkvcmVzcG9uc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUlvQjtBQUNwQiwrREFBdUg7QUFHdkgsK0NBQXlGO0FBRzVFLFFBQUEsZUFBZSxHQUF3QjtJQUNoRCxVQUFVLEVBQUUsS0FBSztDQUNwQixDQUFDO0FBRVcsUUFBQSx3QkFBd0IsR0FBd0I7SUFDekQsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsNEJBQW1CO0lBQ3JDLGlCQUFpQixFQUFFLHFDQUEwQjtDQUNoRCxDQUFDO0FBRVcsUUFBQSx5QkFBeUIsR0FBd0I7SUFDMUQsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsc0JBQWE7SUFDL0IsaUJBQWlCLEVBQUUsOENBQW1DO0NBQ3pELENBQUM7QUFFRixNQUFNLFlBQVksR0FBRztJQUNqQixpQkFBaUIsRUFBRSw4QkFBbUI7Q0FDekMsQ0FBQztBQUVXLFFBQUEseUJBQXlCLEdBQUc7SUFDckMsa0JBQWtCLEVBQUU7UUFDaEIsb0RBQW9ELEVBQUUsS0FBSztLQUM5RDtDQUNKLENBQUM7QUFFVyxRQUFBLHNCQUFzQixHQUFHO0lBQ2xDLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGdCQUFnQixFQUFFLDBCQUFpQjtJQUNuQyxpQkFBaUIsRUFBRSxtQ0FBd0I7Q0FDOUMsQ0FBQztBQUVGLFNBQWdCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsV0FBc0IsRUFBRSxLQUFhLEVBQUUsVUFBb0M7SUFDdEgsT0FBUTtRQUNKLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLGNBQWMsRUFBRSxJQUFBLDBCQUFlLEVBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztRQUNuRCxrQkFBa0IsRUFBRSxVQUFVLElBQUksRUFBRTtLQUN2QyxDQUFDO0FBRU4sQ0FBQztBQVBELHdDQU9DO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXdCO0lBQy9DLE9BQU8sRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHO1lBQ3BCLGtCQUFrQixFQUFFO2dCQUNoQixvREFBb0QsRUFBRSxJQUFJO2FBQzdEO1NBQ0osRUFBQyxDQUFDO0FBQ1AsQ0FBQztBQU5ELGdDQU1DO0FBV0Q7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLGNBQXdCLEVBQ3ZELE9BQTRCO0lBQzVCLE9BQU8sSUFBSSxrQ0FBaUIsQ0FBQyxjQUFjLEVBQUU7UUFDekMsS0FBSyxFQUFFLEtBQUs7UUFDWixvQkFBb0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJO1lBQ3hDLFdBQVcsQ0FBQyx1QkFBZSxFQUFFLE9BQU8sQ0FBQztZQUNyQyxXQUFXLENBQUMsZ0NBQXdCLEVBQUUsT0FBTyxDQUFDO1lBQzlDLFdBQVcsQ0FBQyw4QkFBc0IsRUFBRSxPQUFPLENBQUM7WUFDNUMsV0FBVyxDQUFDLGlDQUF5QixFQUFFLE9BQU8sQ0FBQztTQUNsRDtRQUNELGlCQUFpQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxFQUFFO1FBQ25ELGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO1FBQ2pELG1CQUFtQixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQ0FBbUIsQ0FBQyxhQUFhO0tBQ3pGLENBQUMsQ0FBQztBQUNQLENBQUM7QUFkRCxnREFjQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxRQUE2QixFQUFFLE9BQTRCO0lBQ25GLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNkLFFBQVEsR0FBRyxFQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7S0FDN0M7SUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTtRQUN2QixRQUFRLEdBQUcsRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLGlDQUF5QixFQUFDLENBQUM7S0FDMUQ7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEludGVybmFsU2VydmVyRXJyb3JSZXNwb25zZVRlbXBsYXRlLFxuICAgIGNyZWF0ZVJlc3BvbnNlcyxcbiAgICBYbWxSZXNwb25zZVRlbXBsYXRlLCBOb3RGb3VuZFJlc3BvbnNlVGVtcGxhdGUsIEJhZFJlcXVlc3RSZXNwb25zZVRlbXBsYXRlLFxufSBmcm9tIFwiLi9yZXNwb25zZVwiO1xuaW1wb3J0IHtMYW1iZGFJbnRlZ3JhdGlvbiwgTWV0aG9kUmVzcG9uc2UsIEludGVncmF0aW9uUmVzcG9uc2UsIFBhc3N0aHJvdWdoQmVoYXZpb3J9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0lNb2RlbH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5L2xpYi9tb2RlbFwiO1xuaW1wb3J0IHtCQURfUkVRVUVTVF9NRVNTQUdFLCBFUlJPUl9NRVNTQUdFLCBOT1RfRk9VTkRfTUVTU0FHRX0gZnJvbSBcIi4uLy4uL3R5cGVzL2Vycm9yc1wiO1xuaW1wb3J0IHtNZWRpYVR5cGV9IGZyb20gXCIuLi8uLi90eXBlcy9tZWRpYXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNQT05TRV8yMDBfT0s6IEludGVncmF0aW9uUmVzcG9uc2UgPSB7XG4gICAgc3RhdHVzQ29kZTogJzIwMCcsXG59O1xuXG5leHBvcnQgY29uc3QgUkVTUE9OU0VfNDAwX0JBRF9SRVFVRVNUOiBJbnRlZ3JhdGlvblJlc3BvbnNlID0ge1xuICAgIHN0YXR1c0NvZGU6ICc0MDAnLFxuICAgIHNlbGVjdGlvblBhdHRlcm46IEJBRF9SRVFVRVNUX01FU1NBR0UsXG4gICAgcmVzcG9uc2VUZW1wbGF0ZXM6IEJhZFJlcXVlc3RSZXNwb25zZVRlbXBsYXRlLFxufTtcblxuZXhwb3J0IGNvbnN0IFJFU1BPTlNFXzUwMF9TRVJWRVJfRVJST1I6IEludGVncmF0aW9uUmVzcG9uc2UgPSB7XG4gICAgc3RhdHVzQ29kZTogJzUwMCcsXG4gICAgc2VsZWN0aW9uUGF0dGVybjogRVJST1JfTUVTU0FHRSxcbiAgICByZXNwb25zZVRlbXBsYXRlczogSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlVGVtcGxhdGUsXG59O1xuXG5jb25zdCBSRVNQT05TRV9YTUwgPSB7XG4gICAgcmVzcG9uc2VUZW1wbGF0ZXM6IFhtbFJlc3BvbnNlVGVtcGxhdGUsXG59O1xuXG5leHBvcnQgY29uc3QgUkVTUE9OU0VfQ09SU19JTlRFR1JBVElPTiA9IHtcbiAgICByZXNwb25zZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgJ21ldGhvZC5yZXNwb25zZS5oZWFkZXIuQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogXCInKidcIixcbiAgICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFJFU1BPTlNFXzQwNF9OT1RfRk9VTkQgPSB7XG4gICAgc3RhdHVzQ29kZTogJzQwNCcsXG4gICAgc2VsZWN0aW9uUGF0dGVybjogTk9UX0ZPVU5EX01FU1NBR0UsXG4gICAgcmVzcG9uc2VUZW1wbGF0ZXM6IE5vdEZvdW5kUmVzcG9uc2VUZW1wbGF0ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRob2RSZXNwb25zZShzdGF0dXM6IHN0cmluZywgY29udGVudFR5cGU6IE1lZGlhVHlwZSwgbW9kZWw6IElNb2RlbCwgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KTogTWV0aG9kUmVzcG9uc2Uge1xuICAgIHJldHVybiAge1xuICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXG4gICAgICAgIHJlc3BvbnNlTW9kZWxzOiBjcmVhdGVSZXNwb25zZXMoY29udGVudFR5cGUsIG1vZGVsKSxcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIHx8IHt9LFxuICAgIH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcnNNZXRob2QocmVzcG9uc2U6IE1ldGhvZFJlc3BvbnNlKTogTWV0aG9kUmVzcG9uc2Uge1xuICAgIHJldHVybiB7Li4ucmVzcG9uc2UsIC4uLntcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH19O1xufVxuXG5pbnRlcmZhY2UgSW50ZWdyYXRpb25PcHRpb25zIHtcbiAgICByZXF1ZXN0UGFyYW1ldGVycz86IHtbZGVzdDogc3RyaW5nXTogc3RyaW5nfVxuICAgIHJlcXVlc3RUZW1wbGF0ZXM/OiB7W2NvbnRlbnRUeXBlOiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIHJlc3BvbnNlcz86IEludGVncmF0aW9uUmVzcG9uc2VbXSxcbiAgICBkaXNhYmxlQ29ycz86IGJvb2xlYW4sXG4gICAgeG1sPzogYm9vbGVhbixcbiAgICBwYXNzdGhyb3VnaEJlaGF2aW9yPzogUGFzc3Rocm91Z2hCZWhhdmlvclxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWZhdWx0IExhbWJkYSBpbnRlZ3JhdGlvbiBmb3IgYSBSRVNUIEFQSSByZXNvdXJjZSBfcm9vdF9cbiAqIEBwYXJhbSBsYW1iZGFGdW5jdGlvbiBUaGUgTGFtYmRhIGZ1bmN0aW9uXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0SW50ZWdyYXRpb24obGFtYmRhRnVuY3Rpb246IEZ1bmN0aW9uLFxuICAgIG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnMpOiBMYW1iZGFJbnRlZ3JhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBMYW1iZGFJbnRlZ3JhdGlvbihsYW1iZGFGdW5jdGlvbiwge1xuICAgICAgICBwcm94eTogZmFsc2UsXG4gICAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzOiBvcHRpb25zPy5yZXNwb25zZXMgfHwgW1xuICAgICAgICAgICAgZ2V0UmVzcG9uc2UoUkVTUE9OU0VfMjAwX09LLCBvcHRpb25zKSxcbiAgICAgICAgICAgIGdldFJlc3BvbnNlKFJFU1BPTlNFXzQwMF9CQURfUkVRVUVTVCwgb3B0aW9ucyksXG4gICAgICAgICAgICBnZXRSZXNwb25zZShSRVNQT05TRV80MDRfTk9UX0ZPVU5ELCBvcHRpb25zKSxcbiAgICAgICAgICAgIGdldFJlc3BvbnNlKFJFU1BPTlNFXzUwMF9TRVJWRVJfRVJST1IsIG9wdGlvbnMpLFxuICAgICAgICBdLFxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVyczogb3B0aW9ucz8ucmVxdWVzdFBhcmFtZXRlcnMgfHwge30sXG4gICAgICAgIHJlcXVlc3RUZW1wbGF0ZXM6IG9wdGlvbnM/LnJlcXVlc3RUZW1wbGF0ZXMgfHwge30sXG4gICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IG9wdGlvbnM/LnBhc3N0aHJvdWdoQmVoYXZpb3IgPz8gUGFzc3Rocm91Z2hCZWhhdmlvci5XSEVOX05PX01BVENILFxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzcG9uc2UocmVzcG9uc2U6IEludGVncmF0aW9uUmVzcG9uc2UsIG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnMpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICBpZiAob3B0aW9ucz8ueG1sKSB7XG4gICAgICAgIHJlc3BvbnNlID0gey4uLnJlc3BvbnNlLCAuLi5SRVNQT05TRV9YTUx9O1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnM/LmRpc2FibGVDb3JzKSB7XG4gICAgICAgIHJlc3BvbnNlID0gey4uLnJlc3BvbnNlLCAuLi5SRVNQT05TRV9DT1JTX0lOVEVHUkFUSU9OfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG59XG4iXX0=
|
@@ -1,54 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficStaticIntegration = void 0;
|
4
|
-
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
5
|
-
const mediatypes_1 = require("../../types/mediatypes");
|
6
|
-
const responses_1 = require("./responses");
|
7
|
-
const INTEGRATION_RESPONSE_200 = `{
|
8
|
-
"statusCode": 200
|
9
|
-
}`;
|
10
|
-
const METHOD_RESPONSE_200 = {
|
11
|
-
statusCode: '200',
|
12
|
-
};
|
13
|
-
/**
|
14
|
-
* Static integration, that returns the given response with given mediaType from given resource.
|
15
|
-
*
|
16
|
-
* @param resource
|
17
|
-
* @param mediaType
|
18
|
-
* @param response
|
19
|
-
*/
|
20
|
-
class DigitrafficStaticIntegration extends aws_apigateway_1.MockIntegration {
|
21
|
-
constructor(resource, mediaType, response, enableCors = true, apiKeyRequired = true) {
|
22
|
-
const integrationResponse = DigitrafficStaticIntegration.createIntegrationResponse(response, mediaType, enableCors);
|
23
|
-
super({
|
24
|
-
passthroughBehavior: aws_apigateway_1.PassthroughBehavior.WHEN_NO_TEMPLATES,
|
25
|
-
requestTemplates: {
|
26
|
-
[mediaType]: INTEGRATION_RESPONSE_200,
|
27
|
-
},
|
28
|
-
integrationResponses: [integrationResponse],
|
29
|
-
});
|
30
|
-
['GET', 'HEAD'].forEach((httpMethod) => {
|
31
|
-
resource.addMethod(httpMethod, this, {
|
32
|
-
apiKeyRequired,
|
33
|
-
methodResponses: [DigitrafficStaticIntegration.createMethodResponse(enableCors)],
|
34
|
-
});
|
35
|
-
});
|
36
|
-
}
|
37
|
-
static json(resource, response, enableCors = true, apiKeyRequired = true) {
|
38
|
-
return new DigitrafficStaticIntegration(resource, mediatypes_1.MediaType.APPLICATION_JSON, JSON.stringify(response), enableCors, apiKeyRequired);
|
39
|
-
}
|
40
|
-
static createIntegrationResponse(response, mediaType, enableCors) {
|
41
|
-
const integrationResponse = {
|
42
|
-
statusCode: '200',
|
43
|
-
responseTemplates: {
|
44
|
-
[mediaType]: response,
|
45
|
-
},
|
46
|
-
};
|
47
|
-
return enableCors ? { ...integrationResponse, ...responses_1.RESPONSE_CORS_INTEGRATION } : integrationResponse;
|
48
|
-
}
|
49
|
-
static createMethodResponse(enableCors) {
|
50
|
-
return enableCors ? (0, responses_1.corsMethod)(METHOD_RESPONSE_200) : METHOD_RESPONSE_200;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
exports.DigitrafficStaticIntegration = DigitrafficStaticIntegration;
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9hcGkvc3RhdGljLWludGVncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEwRjtBQUMxRix1REFBaUQ7QUFDakQsMkNBQWtFO0FBRWxFLE1BQU0sd0JBQXdCLEdBQUc7O0VBRS9CLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQ3hCLFVBQVUsRUFBRSxLQUFLO0NBQ3BCLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLGdDQUFlO0lBQzdELFlBQ0ksUUFBa0IsRUFBRSxTQUFvQixFQUFFLFFBQWdCLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUVwRyxNQUFNLG1CQUFtQixHQUFHLDRCQUE0QixDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFcEgsS0FBSyxDQUFDO1lBQ0YsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsaUJBQWlCO1lBQzFELGdCQUFnQixFQUFFO2dCQUNkLENBQUMsU0FBUyxDQUFDLEVBQUUsd0JBQXdCO2FBQ3hDO1lBQ0Qsb0JBQW9CLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztTQUM5QyxDQUFDLENBQUM7UUFFSCxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNuQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQ2pDLGNBQWM7Z0JBQ2QsZUFBZSxFQUFFLENBQUMsNEJBQTRCLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbkYsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBSSxRQUFrQixFQUFFLFFBQVcsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3BGLE9BQU8sSUFBSSw0QkFBNEIsQ0FDbkMsUUFBUSxFQUFFLHNCQUFTLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUM3RixDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxRQUFnQixFQUFFLFNBQW9CLEVBQUUsVUFBbUI7UUFDaEcsTUFBTSxtQkFBbUIsR0FBRztZQUN4QixVQUFVLEVBQUUsS0FBSztZQUNqQixpQkFBaUIsRUFBRTtnQkFDZixDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVE7YUFDeEI7U0FDSixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxtQkFBbUIsRUFBRSxHQUFHLHFDQUF5QixFQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO0lBQ3JHLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBbUI7UUFDbkQsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUEsc0JBQVUsRUFBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5RSxDQUFDO0NBQ0o7QUExQ0Qsb0VBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2NrSW50ZWdyYXRpb24sIFBhc3N0aHJvdWdoQmVoYXZpb3IsIFJlc291cmNlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7TWVkaWFUeXBlfSBmcm9tIFwiLi4vLi4vdHlwZXMvbWVkaWF0eXBlc1wiO1xuaW1wb3J0IHtjb3JzTWV0aG9kLCBSRVNQT05TRV9DT1JTX0lOVEVHUkFUSU9OfSBmcm9tIFwiLi9yZXNwb25zZXNcIjtcblxuY29uc3QgSU5URUdSQVRJT05fUkVTUE9OU0VfMjAwID0gYHtcbiAgICBcInN0YXR1c0NvZGVcIjogMjAwXG59YDtcblxuY29uc3QgTUVUSE9EX1JFU1BPTlNFXzIwMCA9IHtcbiAgICBzdGF0dXNDb2RlOiAnMjAwJyxcbn07XG5cbi8qKlxuICogU3RhdGljIGludGVncmF0aW9uLCB0aGF0IHJldHVybnMgdGhlIGdpdmVuIHJlc3BvbnNlIHdpdGggZ2l2ZW4gbWVkaWFUeXBlIGZyb20gZ2l2ZW4gcmVzb3VyY2UuXG4gKlxuICogQHBhcmFtIHJlc291cmNlXG4gKiBAcGFyYW0gbWVkaWFUeXBlXG4gKiBAcGFyYW0gcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIERpZ2l0cmFmZmljU3RhdGljSW50ZWdyYXRpb24gZXh0ZW5kcyBNb2NrSW50ZWdyYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZXNvdXJjZTogUmVzb3VyY2UsIG1lZGlhVHlwZTogTWVkaWFUeXBlLCByZXNwb25zZTogc3RyaW5nLCBlbmFibGVDb3JzID0gdHJ1ZSwgYXBpS2V5UmVxdWlyZWQgPSB0cnVlLFxuICAgICkge1xuICAgICAgICBjb25zdCBpbnRlZ3JhdGlvblJlc3BvbnNlID0gRGlnaXRyYWZmaWNTdGF0aWNJbnRlZ3JhdGlvbi5jcmVhdGVJbnRlZ3JhdGlvblJlc3BvbnNlKHJlc3BvbnNlLCBtZWRpYVR5cGUsIGVuYWJsZUNvcnMpO1xuXG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IFBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19URU1QTEFURVMsXG4gICAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgW21lZGlhVHlwZV06IElOVEVHUkFUSU9OX1JFU1BPTlNFXzIwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogW2ludGVncmF0aW9uUmVzcG9uc2VdLFxuICAgICAgICB9KTtcblxuICAgICAgICBbJ0dFVCcsICdIRUFEJ10uZm9yRWFjaCgoaHR0cE1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgcmVzb3VyY2UuYWRkTWV0aG9kKGh0dHBNZXRob2QsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICBhcGlLZXlSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICBtZXRob2RSZXNwb25zZXM6IFtEaWdpdHJhZmZpY1N0YXRpY0ludGVncmF0aW9uLmNyZWF0ZU1ldGhvZFJlc3BvbnNlKGVuYWJsZUNvcnMpXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMganNvbjxLPihyZXNvdXJjZTogUmVzb3VyY2UsIHJlc3BvbnNlOiBLLCBlbmFibGVDb3JzID0gdHJ1ZSwgYXBpS2V5UmVxdWlyZWQgPSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGlnaXRyYWZmaWNTdGF0aWNJbnRlZ3JhdGlvbihcbiAgICAgICAgICAgIHJlc291cmNlLCBNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTiwgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpLCBlbmFibGVDb3JzLCBhcGlLZXlSZXF1aXJlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVJbnRlZ3JhdGlvblJlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIG1lZGlhVHlwZTogTWVkaWFUeXBlLCBlbmFibGVDb3JzOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGludGVncmF0aW9uUmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlOiAnMjAwJyxcbiAgICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgW21lZGlhVHlwZV06IHJlc3BvbnNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZW5hYmxlQ29ycyA/IHsuLi5pbnRlZ3JhdGlvblJlc3BvbnNlLCAuLi5SRVNQT05TRV9DT1JTX0lOVEVHUkFUSU9OfSA6IGludGVncmF0aW9uUmVzcG9uc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTWV0aG9kUmVzcG9uc2UoZW5hYmxlQ29yczogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gZW5hYmxlQ29ycyA/IGNvcnNNZXRob2QoTUVUSE9EX1JFU1BPTlNFXzIwMCkgOiBNRVRIT0RfUkVTUE9OU0VfMjAwO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.CanaryAlarm = void 0;
|
4
|
-
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
|
5
|
-
const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
|
6
|
-
const aws_sns_1 = require("aws-cdk-lib/aws-sns");
|
7
|
-
class CanaryAlarm {
|
8
|
-
constructor(stack, canary, params) {
|
9
|
-
if (params.alarm ?? true) {
|
10
|
-
const alarmName = params.alarm?.alarmName ?? `${params.name}-alarm`;
|
11
|
-
const alarm = new aws_cloudwatch_1.Alarm(stack, alarmName, {
|
12
|
-
alarmName,
|
13
|
-
alarmDescription: params.alarm?.description ?? '',
|
14
|
-
metric: canary.metricSuccessPercent(),
|
15
|
-
evaluationPeriods: params.alarm?.evalutionPeriods ?? 1,
|
16
|
-
threshold: params.alarm?.threshold ?? 100,
|
17
|
-
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.LESS_THAN_THRESHOLD,
|
18
|
-
});
|
19
|
-
if (params.alarm?.topicArn) {
|
20
|
-
alarm.addAlarmAction(new aws_cloudwatch_actions_1.SnsAction(aws_sns_1.Topic.fromTopicArn(stack, `${alarmName}-action`, params.alarm.topicArn)));
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
}
|
25
|
-
exports.CanaryAlarm = CanaryAlarm;
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LWFsYXJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9jYW5hcmllcy9jYW5hcnktYWxhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0RBQXFFO0FBRXJFLCtFQUE2RDtBQUM3RCxpREFBMEM7QUFFMUMsTUFBYSxXQUFXO0lBQ3BCLFlBQVksS0FBZ0IsRUFDeEIsTUFBYyxFQUNkLE1BQXdCO1FBQ3hCLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUM7WUFFcEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxzQkFBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ3RDLFNBQVM7Z0JBQ1QsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRTtnQkFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtnQkFDckMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxDQUFDO2dCQUN0RCxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksR0FBRztnQkFDekMsa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsbUJBQW1CO2FBQzdELENBQUMsQ0FBQztZQUVILElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxrQ0FBUyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUN2RCxHQUFHLFNBQVMsU0FBUyxFQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBdkJELGtDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtDYW5hcnlQYXJhbWV0ZXJzfSBmcm9tIFwiLi9jYW5hcnktcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHtBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7Q2FuYXJ5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLXN5bnRoZXRpY3MtYWxwaGFcIjtcbmltcG9ydCB7U25zQWN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uc1wiO1xuaW1wb3J0IHtUb3BpY30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcblxuZXhwb3J0IGNsYXNzIENhbmFyeUFsYXJtIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjazogQ29uc3RydWN0LFxuICAgICAgICBjYW5hcnk6IENhbmFyeSxcbiAgICAgICAgcGFyYW1zOiBDYW5hcnlQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGlmIChwYXJhbXMuYWxhcm0gPz8gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgYWxhcm1OYW1lID0gcGFyYW1zLmFsYXJtPy5hbGFybU5hbWUgPz8gYCR7cGFyYW1zLm5hbWV9LWFsYXJtYDtcblxuICAgICAgICAgICAgY29uc3QgYWxhcm0gPSBuZXcgQWxhcm0oc3RhY2ssIGFsYXJtTmFtZSwge1xuICAgICAgICAgICAgICAgIGFsYXJtTmFtZSxcbiAgICAgICAgICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBwYXJhbXMuYWxhcm0/LmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgICAgICAgIG1ldHJpYzogY2FuYXJ5Lm1ldHJpY1N1Y2Nlc3NQZXJjZW50KCksXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IHBhcmFtcy5hbGFybT8uZXZhbHV0aW9uUGVyaW9kcyA/PyAxLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogcGFyYW1zLmFsYXJtPy50aHJlc2hvbGQgPz8gMTAwLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHBhcmFtcy5hbGFybT8udG9waWNBcm4pIHtcbiAgICAgICAgICAgICAgICBhbGFybS5hZGRBbGFybUFjdGlvbihuZXcgU25zQWN0aW9uKFRvcGljLmZyb21Ub3BpY0FybihzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgYCR7YWxhcm1OYW1lfS1hY3Rpb25gLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYWxhcm0udG9waWNBcm4pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|