@digitraffic/common 2022.10.14-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/dist/aws/runtime/environment.d.ts +1 -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/dist/database/models.d.ts +6 -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 +1 -1
- 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 +24 -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/index.d.ts +0 -1
- package/aws/infra/api/index.d.ts +0 -1
- 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 -29
- 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/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/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/index.d.ts +0 -1
- 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 -40
- package/yarn-error.log +0 -103
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.validateMonth = exports.validateYear = exports.MAX_YEAR = exports.MIN_YEAR = void 0;
|
4
|
+
exports.MIN_YEAR = 1900;
|
5
|
+
exports.MAX_YEAR = 2100;
|
6
|
+
function validateYear(year, minYear = exports.MIN_YEAR, maxYear = exports.MAX_YEAR) {
|
7
|
+
return year >= minYear && year <= maxYear;
|
8
|
+
}
|
9
|
+
exports.validateYear = validateYear;
|
10
|
+
function validateMonth(month) {
|
11
|
+
return month > 0 && month < 13;
|
12
|
+
}
|
13
|
+
exports.validateMonth = validateMonth;
|
14
|
+
//# sourceMappingURL=validator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/types/validator.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,QAAQ,GAAG,IAAI,CAAC;AAE7B,SAAgB,YAAY,CAAC,IAAY,EAAE,OAAO,GAAG,gBAAQ,EAAE,OAAO,GAAG,gBAAQ;IAC7E,OAAO,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC;AAC9C,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa,CAAC,KAAa;IACvC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;AACnC,CAAC;AAFD,sCAEC"}
|
File without changes
|
@@ -0,0 +1,129 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.geojsonSchema = exports.featureSchema = exports.createArraySchema = exports.addSimpleServiceModel = exports.addServiceModel = exports.addDefaultValidator = exports.getModelReference = void 0;
|
4
|
+
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
5
|
+
/**
|
6
|
+
* Get a reference to an OpenAPI model object in a REST API.
|
7
|
+
* Can be used to supply a reference to properties of a GeoJSON feature.
|
8
|
+
* @param modelId Id of the referenced object
|
9
|
+
* @param restApiId Id of the REST API
|
10
|
+
*/
|
11
|
+
function getModelReference(modelId, restApiId) {
|
12
|
+
return `https://apigateway.amazonaws.com/restapis/${restApiId}/models/${modelId}`;
|
13
|
+
}
|
14
|
+
exports.getModelReference = getModelReference;
|
15
|
+
/**
|
16
|
+
* Adds a request validator to a REST API to enforce request parameters/body requirements.
|
17
|
+
* https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html
|
18
|
+
* @param api REST API
|
19
|
+
*/
|
20
|
+
function addDefaultValidator(api) {
|
21
|
+
return api.addRequestValidator('DefaultValidator', {
|
22
|
+
validateRequestParameters: true,
|
23
|
+
validateRequestBody: true,
|
24
|
+
});
|
25
|
+
}
|
26
|
+
exports.addDefaultValidator = addDefaultValidator;
|
27
|
+
/**
|
28
|
+
* Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
|
29
|
+
* This method adds a schema for _a single object._
|
30
|
+
* @param name Name of the model
|
31
|
+
* @param api REST API
|
32
|
+
* @param schema JSON Schema
|
33
|
+
* @return ModelWithReference A model object with a reference to an API Gateway model object.
|
34
|
+
*/
|
35
|
+
function addServiceModel(modelName, api, schema) {
|
36
|
+
const mwr = api.addModel(modelName, {
|
37
|
+
contentType: 'application/json',
|
38
|
+
modelName,
|
39
|
+
schema,
|
40
|
+
});
|
41
|
+
mwr.modelReference = getModelReference(mwr.modelId, api.restApiId);
|
42
|
+
return mwr;
|
43
|
+
}
|
44
|
+
exports.addServiceModel = addServiceModel;
|
45
|
+
/**
|
46
|
+
* Add an empty JSON schema model to an API Gateway API.
|
47
|
+
* Usable for example if the incoming data is in XML format but some template transformation is necessary.
|
48
|
+
* @param modelName
|
49
|
+
* @param api
|
50
|
+
* @param contentType
|
51
|
+
*/
|
52
|
+
function addSimpleServiceModel(modelName, api, contentType = 'application/xml') {
|
53
|
+
return api.addModel(modelName, {
|
54
|
+
contentType,
|
55
|
+
modelName,
|
56
|
+
schema: {},
|
57
|
+
});
|
58
|
+
}
|
59
|
+
exports.addSimpleServiceModel = addSimpleServiceModel;
|
60
|
+
/**
|
61
|
+
* Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
|
62
|
+
* This method adds a schema for _an array._
|
63
|
+
* @param model
|
64
|
+
* @param api
|
65
|
+
*/
|
66
|
+
function createArraySchema(model, api) {
|
67
|
+
return {
|
68
|
+
type: aws_apigateway_1.JsonSchemaType.ARRAY,
|
69
|
+
items: {
|
70
|
+
ref: getModelReference(model.modelId, api.restApiId),
|
71
|
+
},
|
72
|
+
};
|
73
|
+
}
|
74
|
+
exports.createArraySchema = createArraySchema;
|
75
|
+
/**
|
76
|
+
* Creates a JSON Schema for a GeoJSON Feature. Can be used to generate OpenAPI descriptions.
|
77
|
+
* @param modelReference Reference to a model object
|
78
|
+
*/
|
79
|
+
function featureSchema(modelReference) {
|
80
|
+
return {
|
81
|
+
schema: aws_apigateway_1.JsonSchemaVersion.DRAFT4,
|
82
|
+
type: aws_apigateway_1.JsonSchemaType.OBJECT,
|
83
|
+
description: 'GeoJson Feature',
|
84
|
+
required: ['type', 'properties', 'geometry'],
|
85
|
+
properties: {
|
86
|
+
type: {
|
87
|
+
type: aws_apigateway_1.JsonSchemaType.STRING,
|
88
|
+
description: 'Feature',
|
89
|
+
enum: ['Feature'],
|
90
|
+
},
|
91
|
+
properties: {
|
92
|
+
ref: modelReference,
|
93
|
+
},
|
94
|
+
geometry: {
|
95
|
+
type: aws_apigateway_1.JsonSchemaType.OBJECT,
|
96
|
+
description: 'GeoJSON geometry',
|
97
|
+
},
|
98
|
+
},
|
99
|
+
};
|
100
|
+
}
|
101
|
+
exports.featureSchema = featureSchema;
|
102
|
+
/**
|
103
|
+
*
|
104
|
+
* Creates a JSON Schema for a GeoJSON Feature Collection. Can be used to generate OpenAPI descriptions.
|
105
|
+
* @param modelReference Reference to a model object, in this case Features.
|
106
|
+
*/
|
107
|
+
function geojsonSchema(modelReference) {
|
108
|
+
return {
|
109
|
+
schema: aws_apigateway_1.JsonSchemaVersion.DRAFT4,
|
110
|
+
type: aws_apigateway_1.JsonSchemaType.OBJECT,
|
111
|
+
description: 'GeoJson FeatureCollection',
|
112
|
+
required: ['type', 'features'],
|
113
|
+
properties: {
|
114
|
+
type: {
|
115
|
+
type: aws_apigateway_1.JsonSchemaType.STRING,
|
116
|
+
description: 'FeatureCollection',
|
117
|
+
enum: ['FeatureCollection'],
|
118
|
+
},
|
119
|
+
features: {
|
120
|
+
type: aws_apigateway_1.JsonSchemaType.ARRAY,
|
121
|
+
items: {
|
122
|
+
ref: modelReference,
|
123
|
+
},
|
124
|
+
},
|
125
|
+
},
|
126
|
+
};
|
127
|
+
}
|
128
|
+
exports.geojsonSchema = geojsonSchema;
|
129
|
+
//# sourceMappingURL=api-model.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"api-model.js","sourceRoot":"","sources":["../../src/utils/api-model.ts"],"names":[],"mappings":";;;AAAA,+DAOoC;AAGpC;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAChE,OAAO,6CAA6C,SAAS,WAAW,OAAO,EAAE,CAAC;AACtF,CAAC;AAFD,8CAEC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,GAAY;IAC5C,OAAO,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;QAC/C,yBAAyB,EAAE,IAAI;QAC/B,mBAAmB,EAAE,IAAI;KAC5B,CAAC,CAAC;AACP,CAAC;AALD,kDAKC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,SAAiB,EAAE,GAAY,EAAE,MAAkB;IAC/E,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,kBAAkB;QAC/B,SAAS;QACT,MAAM;KACT,CAAuB,CAAC;IACzB,GAAG,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC;AARD,0CAQC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,SAAiB,EAAE,GAAY,EAAE,WAAW,GAAG,iBAAiB;IAClG,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QAC3B,WAAW;QACX,SAAS;QACT,MAAM,EAAE,EAAE;KACb,CAAC,CAAC;AACP,CAAC;AAND,sDAMC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAY,EAAE,GAAY;IACxD,OAAO;QACH,IAAI,EAAE,+BAAc,CAAC,KAAK;QAC1B,KAAK,EAAE;YACH,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;SACvD;KACJ,CAAC;AACN,CAAC;AAPD,8CAOC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,cAAsB;IAChD,OAAO;QACH,MAAM,EAAE,kCAAiB,CAAC,MAAM;QAChC,IAAI,EAAE,+BAAc,CAAC,MAAM;QAC3B,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;QAC5C,UAAU,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,CAAC,SAAS,CAAC;aACpB;YACD,UAAU,EAAE;gBACR,GAAG,EAAE,cAAc;aACtB;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,kBAAkB;aAClC;SACJ;KACJ,CAAC;AACN,CAAC;AArBD,sCAqBC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,cAAsB;IAChD,OAAO;QACH,MAAM,EAAE,kCAAiB,CAAC,MAAM;QAChC,IAAI,EAAE,+BAAc,CAAC,MAAM;QAC3B,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9B,UAAU,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,CAAC,mBAAmB,CAAC;aAC9B;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,+BAAc,CAAC,KAAK;gBAC1B,KAAK,EAAE;oBACH,GAAG,EAAE,cAAc;iBACtB;aACJ;SACJ;KACJ,CAAC;AACN,CAAC;AApBD,sCAoBC"}
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.decodeBase64 = exports.decodeBase64ToAscii = void 0;
|
4
|
+
/**
|
5
|
+
* Decode given string from base64 to ascii
|
6
|
+
* @param str string
|
7
|
+
*/
|
8
|
+
function decodeBase64ToAscii(str) {
|
9
|
+
return decodeBase64(str, 'ascii');
|
10
|
+
}
|
11
|
+
exports.decodeBase64ToAscii = decodeBase64ToAscii;
|
12
|
+
/**
|
13
|
+
* Decode given string from base64 to given encoding
|
14
|
+
* @param str
|
15
|
+
* @param encoding
|
16
|
+
*/
|
17
|
+
function decodeBase64(str, encoding) {
|
18
|
+
return Buffer.from(str, 'base64').toString(encoding);
|
19
|
+
}
|
20
|
+
exports.decodeBase64 = decodeBase64;
|
21
|
+
//# sourceMappingURL=base64.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,kDAEC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,QAAwB;IAC9D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAFD,oCAEC"}
|
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.dateFromIsoString = exports.countDiffInSeconds = exports.countDiffMs = void 0;
|
4
|
+
/**
|
5
|
+
* Counts difference in milliseconds between dates.
|
6
|
+
* @param start
|
7
|
+
* @param end
|
8
|
+
*/
|
9
|
+
function countDiffMs(start, end) {
|
10
|
+
return end.getTime() - start.getTime();
|
11
|
+
}
|
12
|
+
exports.countDiffMs = countDiffMs;
|
13
|
+
/**
|
14
|
+
* Counts difference in seconds between dates.
|
15
|
+
* @param start
|
16
|
+
* @param end
|
17
|
+
*/
|
18
|
+
function countDiffInSeconds(start, end) {
|
19
|
+
return countDiffMs(start, end) / 1000;
|
20
|
+
}
|
21
|
+
exports.countDiffInSeconds = countDiffInSeconds;
|
22
|
+
/**
|
23
|
+
* Converts ISO 8601 date-time -string to Date object
|
24
|
+
* @param isoString to convert
|
25
|
+
*/
|
26
|
+
function dateFromIsoString(isoString) {
|
27
|
+
const parsed = new Date(isoString);
|
28
|
+
if (!(parsed instanceof Date) || isNaN(parsed.getTime())) {
|
29
|
+
throw new Error(`Invalid ISO-DATE -string: ${isoString}`);
|
30
|
+
}
|
31
|
+
return parsed;
|
32
|
+
}
|
33
|
+
exports.dateFromIsoString = dateFromIsoString;
|
34
|
+
//# sourceMappingURL=date-utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/utils/date-utils.ts"],"names":[],"mappings":";;;AACA;;;;GAIG;AACH,SAAgB,WAAW,CAAC,KAAW,EAAE,GAAS;IAC9C,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC;AAFD,kCAEC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAW,EAAE,GAAS;IACrD,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC;AACxC,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IAC/C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;KAC7D;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAND,8CAMC"}
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.GeoJsonLineString = exports.GeoJsonPoint = void 0;
|
4
|
+
class GeoJsonPoint {
|
5
|
+
constructor(coordinates) {
|
6
|
+
this.type = "Point";
|
7
|
+
this.coordinates = coordinates;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
exports.GeoJsonPoint = GeoJsonPoint;
|
11
|
+
class GeoJsonLineString {
|
12
|
+
constructor(coordinates) {
|
13
|
+
this.type = "LineString";
|
14
|
+
this.coordinates = coordinates;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
exports.GeoJsonLineString = GeoJsonLineString;
|
18
|
+
//# sourceMappingURL=geojson-types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"geojson-types.js","sourceRoot":"","sources":["../../src/utils/geojson-types.ts"],"names":[],"mappings":";;;AAKA,MAAa,YAAY;IAIrB,YAAY,WAAqB;QAHxB,SAAI,GAAG,OAAO,CAAC;QAIpB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AAPD,oCAOC;AAED,MAAa,iBAAiB;IAI1B,YAAY,WAAuB;QAH1B,SAAI,GAAG,YAAY,CAAC;QAIzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AAPD,8CAOC"}
|
File without changes
|
@@ -0,0 +1,164 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.positionToList = exports.createGmlLineString = exports.distanceBetweenPositionsInM = exports.areDistinctPositions = exports.distanceBetweenPositionsInKm = exports.isFeatureCollection = exports.isValidGeoJson = exports.createFeatureCollection = exports.createGeometry = exports.SRID_WGS84 = void 0;
|
27
|
+
const geoJsonValidator = __importStar(require("geojson-validation"));
|
28
|
+
exports.SRID_WGS84 = 4326;
|
29
|
+
/**
|
30
|
+
* Creates WKT geometry from GeoJSON geometry
|
31
|
+
* @param geometry GeoJson geometry to convert to WKT
|
32
|
+
*/
|
33
|
+
function createGeometry(geometry) {
|
34
|
+
if (geometry.type === "LineString") {
|
35
|
+
const coordinates = linestring(geometry.coordinates);
|
36
|
+
return `LINESTRING(${coordinates})`;
|
37
|
+
}
|
38
|
+
else if (geometry.type === "Point") {
|
39
|
+
const coordinates = coordinatePair(geometry.coordinates);
|
40
|
+
return `POINT(${coordinates})`;
|
41
|
+
}
|
42
|
+
else if (geometry.type === "Polygon") {
|
43
|
+
const coordinates = polygon(geometry.coordinates);
|
44
|
+
return `POLYGON(${coordinates})`;
|
45
|
+
}
|
46
|
+
else if (geometry.type === "MultiPolygon") {
|
47
|
+
const coordinates = multiPolygon(geometry.coordinates);
|
48
|
+
return `MULTIPOLYGON(${coordinates})`;
|
49
|
+
}
|
50
|
+
console.error("unsupported locationType=%s", geometry.type);
|
51
|
+
return "POLYGON EMPTY";
|
52
|
+
}
|
53
|
+
exports.createGeometry = createGeometry;
|
54
|
+
function linestring(coordinates) {
|
55
|
+
return coordinates.map((c) => coordinatePair(c)).join(",");
|
56
|
+
}
|
57
|
+
function polygon(coordinates) {
|
58
|
+
const list = coordinates.map((c) => linestring(c)).join(",");
|
59
|
+
return `(${list})`;
|
60
|
+
}
|
61
|
+
function multiPolygon(coordinates) {
|
62
|
+
const list = coordinates.map((c) => polygon(c)).join(",");
|
63
|
+
return `(${list})`;
|
64
|
+
}
|
65
|
+
function coordinatePair(coordinate) {
|
66
|
+
return `${coordinate[0]} ${coordinate[1]}`;
|
67
|
+
}
|
68
|
+
/**
|
69
|
+
* Create a GeoJSON FeatureCollection from a list of GeoJSON features with a 'last updated' property
|
70
|
+
* @param features List of Features
|
71
|
+
* @param lastUpdated Last updated date
|
72
|
+
*/
|
73
|
+
function createFeatureCollection(features, lastUpdated) {
|
74
|
+
return {
|
75
|
+
type: "FeatureCollection",
|
76
|
+
lastUpdated: lastUpdated,
|
77
|
+
features: features,
|
78
|
+
};
|
79
|
+
}
|
80
|
+
exports.createFeatureCollection = createFeatureCollection;
|
81
|
+
function isValidGeoJson(json) {
|
82
|
+
return geoJsonValidator.valid(json);
|
83
|
+
}
|
84
|
+
exports.isValidGeoJson = isValidGeoJson;
|
85
|
+
function isFeatureCollection(json) {
|
86
|
+
return geoJsonValidator.isFeatureCollection(json);
|
87
|
+
}
|
88
|
+
exports.isFeatureCollection = isFeatureCollection;
|
89
|
+
const DEGREES_TO_RADIANS = 0.017453292519943295; // = Math.PI / 180
|
90
|
+
const EARTH_RADIUS_KM = 6371;
|
91
|
+
/**
|
92
|
+
* Returns the distance between this and given GeoJSON point in kilometers. Doesn't take in account altitude.
|
93
|
+
* Based on the following Stack Overflow question:
|
94
|
+
* http://stackoverflow.com/questions/27928/calculate-distance-between-two-latitude-longitude-points-haversine-formula,
|
95
|
+
* which is based on https://en.wikipedia.org/wiki/Haversine_formula (error rate: ~0.55%).
|
96
|
+
*/
|
97
|
+
function distanceBetweenWGS84PointsInKm(fromXLon, fromYLat, toXLon, toYLat) {
|
98
|
+
const diffLat = toRadians(toYLat - fromYLat);
|
99
|
+
const diffLon = toRadians(toXLon - fromXLon);
|
100
|
+
const a = Math.sin(diffLat / 2) * Math.sin(diffLat / 2) +
|
101
|
+
Math.cos(toRadians(fromYLat)) *
|
102
|
+
Math.cos(toRadians(toYLat)) *
|
103
|
+
Math.sin(diffLon / 2) *
|
104
|
+
Math.sin(diffLon / 2);
|
105
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
106
|
+
return EARTH_RADIUS_KM * c;
|
107
|
+
}
|
108
|
+
/**
|
109
|
+
* Calculates distance between two GeoJSON points (WGS84)
|
110
|
+
* @param pos1
|
111
|
+
* @param pos2
|
112
|
+
*/
|
113
|
+
function distanceBetweenPositionsInKm(pos1, pos2) {
|
114
|
+
return distanceBetweenWGS84PointsInKm(pos1[0], pos1[1], pos2[0], pos2[1]);
|
115
|
+
}
|
116
|
+
exports.distanceBetweenPositionsInKm = distanceBetweenPositionsInKm;
|
117
|
+
function areDistinctPositions(previous, next) {
|
118
|
+
return previous[0] !== next[0] || previous[1] !== next[1];
|
119
|
+
}
|
120
|
+
exports.areDistinctPositions = areDistinctPositions;
|
121
|
+
/**
|
122
|
+
* Calculates distance between two GeoJSON points (WGS84)
|
123
|
+
* @param pos1
|
124
|
+
* @param pos2
|
125
|
+
*/
|
126
|
+
function distanceBetweenPositionsInM(pos1, pos2) {
|
127
|
+
return distanceBetweenPositionsInKm(pos1, pos2) * 1000; // km -> m
|
128
|
+
}
|
129
|
+
exports.distanceBetweenPositionsInM = distanceBetweenPositionsInM;
|
130
|
+
function createGmlLineString(geometry, srsName = "EPSG:4326") {
|
131
|
+
const posList = createPosList(geometry);
|
132
|
+
return {
|
133
|
+
srsName,
|
134
|
+
posList,
|
135
|
+
};
|
136
|
+
}
|
137
|
+
exports.createGmlLineString = createGmlLineString;
|
138
|
+
function createPosList(geometry) {
|
139
|
+
if (geometry.type === "Point") {
|
140
|
+
return positionToList(geometry.coordinates);
|
141
|
+
}
|
142
|
+
else if (geometry.type === "LineString") {
|
143
|
+
return lineStringToList(geometry.coordinates);
|
144
|
+
}
|
145
|
+
else if (geometry.type === "Polygon") {
|
146
|
+
return polygonToList(geometry.coordinates);
|
147
|
+
}
|
148
|
+
throw new Error("unknown geometry type " + JSON.stringify(geometry));
|
149
|
+
}
|
150
|
+
function polygonToList(positions, precision = 8) {
|
151
|
+
return positions.map((p) => lineStringToList(p, precision)).join(" ");
|
152
|
+
}
|
153
|
+
function lineStringToList(positions, precision = 8) {
|
154
|
+
return positions.map((p) => positionToList(p, precision)).join(" ");
|
155
|
+
}
|
156
|
+
function positionToList(position, precision = 8) {
|
157
|
+
return position.map((n) => n.toPrecision(precision)).join(" ");
|
158
|
+
}
|
159
|
+
exports.positionToList = positionToList;
|
160
|
+
// Converts numeric degrees to radians
|
161
|
+
function toRadians(angdeg) {
|
162
|
+
return angdeg * DEGREES_TO_RADIANS;
|
163
|
+
}
|
164
|
+
//# sourceMappingURL=geometry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/utils/geometry.ts"],"names":[],"mappings":"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"}
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.retry = exports.RetryLogError = void 0;
|
4
|
+
var RetryLogError;
|
5
|
+
(function (RetryLogError) {
|
6
|
+
RetryLogError[RetryLogError["LOG_ALL_AS_ERRORS"] = 0] = "LOG_ALL_AS_ERRORS";
|
7
|
+
RetryLogError[RetryLogError["LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS"] = 1] = "LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS";
|
8
|
+
RetryLogError[RetryLogError["NO_LOGGING"] = 2] = "NO_LOGGING";
|
9
|
+
})(RetryLogError = exports.RetryLogError || (exports.RetryLogError = {}));
|
10
|
+
/**
|
11
|
+
* Utility function for retrying async functions.
|
12
|
+
* @param asyncFn Function
|
13
|
+
* @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.
|
14
|
+
* @param logError Logging options
|
15
|
+
* @return Promise return value
|
16
|
+
*/
|
17
|
+
async function retry(asyncFn, retries = 3, logError = RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS) {
|
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
|
+
}
|
27
|
+
catch (error) {
|
28
|
+
const remainingRetries = retries - 1;
|
29
|
+
const errorMessage = 'method=retry error';
|
30
|
+
if (logError === RetryLogError.LOG_ALL_AS_ERRORS) {
|
31
|
+
console.error(errorMessage, error);
|
32
|
+
}
|
33
|
+
else if (logError === RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS) {
|
34
|
+
if (remainingRetries < 0) {
|
35
|
+
console.error(errorMessage, error);
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
console.warn(errorMessage, error);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
if (remainingRetries < 0) {
|
42
|
+
console.warn('method=retry no retries left');
|
43
|
+
throw new Error('No retries left');
|
44
|
+
}
|
45
|
+
console.warn('method=retry invocation failed, retrying with remaining retries %d', remainingRetries);
|
46
|
+
return retry(asyncFn, remainingRetries, logError);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
exports.retry = retry;
|
50
|
+
//# sourceMappingURL=retry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,2EAAiB,CAAA;IACjB,uHAAuC,CAAA;IACvC,6DAAU,CAAA;AACd,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAED;;;;;;GAMG;AACI,KAAK,UAAU,KAAK,CAAI,OAAyB,EACpD,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,aAAa,CAAC,uCAAuC;IAEhE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;IACD,IAAI,OAAO,GAAG,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC9D;IACD,IAAI;QACA,OAAO,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,gBAAgB,GAAG,OAAO,GAAG,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,oBAAoB,CAAC;QAC1C,IAAI,QAAQ,KAAK,aAAa,CAAC,iBAAiB,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SACtC;aAAM,IAAI,QAAQ,KAAK,aAAa,CAAC,uCAAuC,EAAE;YAC3E,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACtC;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACrC;SACJ;QAED,IAAI,gBAAgB,GAAG,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,OAAO,CAAC,IAAI,CAAC,oEAAoE,EAAE,gBAAgB,CAAC,CAAC;QACrG,OAAO,KAAK,CAAC,OAAO,EAChB,gBAAgB,EAChB,QAAQ,CAAC,CAAC;KACjB;AACL,CAAC;AAnCD,sBAmCC"}
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.SlackApi = void 0;
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
8
|
+
class SlackApi {
|
9
|
+
constructor(url) {
|
10
|
+
this.url = url;
|
11
|
+
}
|
12
|
+
async notify(text) {
|
13
|
+
try {
|
14
|
+
console.info('method=notify Notifying Slack');
|
15
|
+
await axios_1.default.post(this.url, {
|
16
|
+
text,
|
17
|
+
});
|
18
|
+
}
|
19
|
+
catch (error) {
|
20
|
+
console.error('method=notify Slack notify failed!');
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
exports.SlackApi = SlackApi;
|
25
|
+
//# sourceMappingURL=slack.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/utils/slack.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,QAAQ;IAIjB,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,IAAI;YACA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI;aACP,CAAC,CAAC;SACN;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;IACL,CAAC;CAEJ;AAnBD,4BAmBC"}
|
@@ -19,4 +19,28 @@
|
|
19
19
|
* @param a first array to compare
|
20
20
|
* @param b second array to compare
|
21
21
|
*/
|
22
|
+
import { Either } from "../types/either";
|
22
23
|
export declare function bothArraysHasSameValues(a: null | undefined | unknown[], b: null | undefined | unknown[]): boolean;
|
24
|
+
/**
|
25
|
+
* Returns the last item on the array. If the array is empty, throws an error!
|
26
|
+
*/
|
27
|
+
export declare function getLast<T>(array: T[], sortFunction?: (a: T) => number): T;
|
28
|
+
/**
|
29
|
+
* Returns the first item on the array. If the array is empty, throws an error!
|
30
|
+
*/
|
31
|
+
export declare function getFirst<T>(array: T[], sortFunction?: (a: T) => number): T;
|
32
|
+
/**
|
33
|
+
* Gets environment variable. Throws error if variable is not found.
|
34
|
+
*
|
35
|
+
* @param key Environment key
|
36
|
+
* @return string
|
37
|
+
*/
|
38
|
+
export declare function getEnvVariable(key: string): string;
|
39
|
+
/**
|
40
|
+
* Gets environment variable. Safe version returns object with either ok or error status.
|
41
|
+
* Easier to use for recovery than catching an error.
|
42
|
+
*
|
43
|
+
* @param key Environment key
|
44
|
+
* @return Either<string>
|
45
|
+
*/
|
46
|
+
export declare function getEnvVariableSafe(key: string): Either<string>;
|
@@ -0,0 +1,75 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getEnvVariableSafe = exports.getEnvVariable = exports.getFirst = exports.getLast = exports.bothArraysHasSameValues = void 0;
|
4
|
+
function bothArraysHasSameValues(a, b) {
|
5
|
+
if ((a && !b) || (!a && b)) {
|
6
|
+
return false;
|
7
|
+
}
|
8
|
+
else if (!a && !b) {
|
9
|
+
return true;
|
10
|
+
}
|
11
|
+
const aSet = new Set(a);
|
12
|
+
const bSet = new Set(b);
|
13
|
+
if (aSet.size !== bSet.size) {
|
14
|
+
return false;
|
15
|
+
}
|
16
|
+
return Array.from(aSet).every((value) => bSet.has(value));
|
17
|
+
}
|
18
|
+
exports.bothArraysHasSameValues = bothArraysHasSameValues;
|
19
|
+
/**
|
20
|
+
* Returns the last item on the array. If the array is empty, throws an error!
|
21
|
+
*/
|
22
|
+
function getLast(array, sortFunction) {
|
23
|
+
return getFirstOrLast(false, array, sortFunction);
|
24
|
+
}
|
25
|
+
exports.getLast = getLast;
|
26
|
+
/**
|
27
|
+
* Returns the first item on the array. If the array is empty, throws an error!
|
28
|
+
*/
|
29
|
+
function getFirst(array, sortFunction) {
|
30
|
+
return getFirstOrLast(true, array, sortFunction);
|
31
|
+
}
|
32
|
+
exports.getFirst = getFirst;
|
33
|
+
function getFirstOrLast(getFirst, array, sortFunction) {
|
34
|
+
if (array.length == 0) {
|
35
|
+
throw new Error(`can't get ${getFirst ? "first" : "last"} from empty array!`);
|
36
|
+
}
|
37
|
+
const index = getFirst ? 0 : array.length - 1;
|
38
|
+
if (sortFunction) {
|
39
|
+
return array.sort(sortFunction)[index];
|
40
|
+
}
|
41
|
+
return array[index];
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Gets environment variable. Throws error if variable is not found.
|
45
|
+
*
|
46
|
+
* @param key Environment key
|
47
|
+
* @return string
|
48
|
+
*/
|
49
|
+
function getEnvVariable(key) {
|
50
|
+
const either = getEnvVariableSafe(key);
|
51
|
+
if (either.result === "error") {
|
52
|
+
throw new Error(either.message);
|
53
|
+
}
|
54
|
+
return either.value;
|
55
|
+
}
|
56
|
+
exports.getEnvVariable = getEnvVariable;
|
57
|
+
/**
|
58
|
+
* Gets environment variable. Safe version returns object with either ok or error status.
|
59
|
+
* Easier to use for recovery than catching an error.
|
60
|
+
*
|
61
|
+
* @param key Environment key
|
62
|
+
* @return Either<string>
|
63
|
+
*/
|
64
|
+
function getEnvVariableSafe(key) {
|
65
|
+
const value = process.env[key];
|
66
|
+
if (value === undefined) {
|
67
|
+
return {
|
68
|
+
result: "error",
|
69
|
+
message: `Error: environment variable "${key}" is undefined.`,
|
70
|
+
};
|
71
|
+
}
|
72
|
+
return { result: "ok", value };
|
73
|
+
}
|
74
|
+
exports.getEnvVariableSafe = getEnvVariableSafe;
|
75
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,uBAAuB,CACnC,CAA+B,EAC/B,CAA+B;IAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC;KAChB;SAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACjB,OAAO,IAAI,CAAC;KACf;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;QACzB,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAfD,0DAeC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAI,KAAU,EAAE,YAA+B;IAClE,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAI,KAAU,EAAE,YAA+B;IACnE,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAFD,4BAEC;AAED,SAAS,cAAc,CACnB,QAAiB,EACjB,KAAU,EACV,YAA+B;IAE/B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CACX,aAAa,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAC/D,CAAC;KACL;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,IAAI,YAAY,EAAE;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACnC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC;AAND,wCAMC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO;YACH,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,gCAAgC,GAAG,iBAAiB;SAChE,CAAC;KACL;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AATD,gDASC"}
|