@digitraffic/common 2022.10.5
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/LICENSE +291 -0
- package/aws/infra/api/integration.d.ts +21 -0
- package/aws/infra/api/integration.js +52 -0
- package/aws/infra/api/response.d.ts +22 -0
- package/aws/infra/api/response.js +61 -0
- package/aws/infra/api/responses.d.ts +39 -0
- package/aws/infra/api/responses.js +79 -0
- package/aws/infra/api/static-integration.d.ts +15 -0
- package/aws/infra/api/static-integration.js +54 -0
- package/aws/infra/canaries/canary-alarm.d.ts +6 -0
- package/aws/infra/canaries/canary-alarm.js +26 -0
- package/aws/infra/canaries/canary-parameters.d.ts +18 -0
- package/aws/infra/canaries/canary-parameters.js +3 -0
- package/aws/infra/canaries/canary-role.d.ts +6 -0
- package/aws/infra/canaries/canary-role.js +46 -0
- package/aws/infra/canaries/canary.d.ts +8 -0
- package/aws/infra/canaries/canary.js +29 -0
- package/aws/infra/canaries/database-canary.d.ts +18 -0
- package/aws/infra/canaries/database-canary.js +55 -0
- package/aws/infra/canaries/database-checker.d.ts +21 -0
- package/aws/infra/canaries/database-checker.js +109 -0
- package/aws/infra/canaries/url-canary.d.ts +19 -0
- package/aws/infra/canaries/url-canary.js +46 -0
- package/aws/infra/canaries/url-checker.d.ts +46 -0
- package/aws/infra/canaries/url-checker.js +238 -0
- package/aws/infra/documentation.d.ts +56 -0
- package/aws/infra/documentation.js +95 -0
- package/aws/infra/scheduler.d.ts +12 -0
- package/aws/infra/scheduler.js +31 -0
- package/aws/infra/security-rule.d.ts +12 -0
- package/aws/infra/security-rule.js +39 -0
- package/aws/infra/sqs-integration.d.ts +7 -0
- package/aws/infra/sqs-integration.js +93 -0
- package/aws/infra/sqs-queue.d.ts +16 -0
- package/aws/infra/sqs-queue.js +130 -0
- package/aws/infra/stack/lambda-configs.d.ts +72 -0
- package/aws/infra/stack/lambda-configs.js +93 -0
- package/aws/infra/stack/monitoredfunction.d.ts +84 -0
- package/aws/infra/stack/monitoredfunction.js +135 -0
- package/aws/infra/stack/rest_apis.d.ts +40 -0
- package/aws/infra/stack/rest_apis.js +179 -0
- package/aws/infra/stack/stack-checking-aspect.d.ts +20 -0
- package/aws/infra/stack/stack-checking-aspect.js +163 -0
- package/aws/infra/stack/stack.d.ts +41 -0
- package/aws/infra/stack/stack.js +58 -0
- package/aws/infra/stack/subscription.d.ts +17 -0
- package/aws/infra/stack/subscription.js +41 -0
- package/aws/infra/usage-plans.d.ts +15 -0
- package/aws/infra/usage-plans.js +42 -0
- package/aws/runtime/apikey.d.ts +2 -0
- package/aws/runtime/apikey.js +13 -0
- package/aws/runtime/digitraffic-integration-response.d.ts +8 -0
- package/aws/runtime/digitraffic-integration-response.js +26 -0
- package/aws/runtime/messaging.d.ts +10 -0
- package/aws/runtime/messaging.js +31 -0
- package/aws/runtime/s3.d.ts +2 -0
- package/aws/runtime/s3.js +30 -0
- package/aws/runtime/secrets/dbsecret.d.ts +54 -0
- package/aws/runtime/secrets/dbsecret.js +96 -0
- package/aws/runtime/secrets/proxy-holder.d.ts +9 -0
- package/aws/runtime/secrets/proxy-holder.js +26 -0
- package/aws/runtime/secrets/rds-holder.d.ts +9 -0
- package/aws/runtime/secrets/rds-holder.js +26 -0
- package/aws/runtime/secrets/secret-holder.d.ts +26 -0
- package/aws/runtime/secrets/secret-holder.js +73 -0
- package/aws/runtime/secrets/secret.d.ts +8 -0
- package/aws/runtime/secrets/secret.js +43 -0
- package/aws/types/errors.d.ts +4 -0
- package/aws/types/errors.js +9 -0
- package/aws/types/lambda-response.d.ts +12 -0
- package/aws/types/lambda-response.js +28 -0
- package/aws/types/mediatypes.d.ts +10 -0
- package/aws/types/mediatypes.js +15 -0
- package/aws/types/model-with-reference.d.ts +7 -0
- package/aws/types/model-with-reference.js +3 -0
- package/aws/types/proxytypes.d.ts +26 -0
- package/aws/types/proxytypes.js +3 -0
- package/aws/types/tags.d.ts +2 -0
- package/aws/types/tags.js +7 -0
- package/database/cached.d.ts +7 -0
- package/database/cached.js +32 -0
- package/database/database.d.ts +19 -0
- package/database/database.js +62 -0
- package/database/last-updated.d.ts +16 -0
- package/database/last-updated.js +54 -0
- package/index.d.ts +1 -0
- package/index.js +18 -0
- package/marine/id_utils.d.ts +3 -0
- package/marine/id_utils.js +33 -0
- package/marine/rtz.d.ts +48 -0
- package/marine/rtz.js +3 -0
- package/package.json +55 -0
- package/src/aws/infra/api/integration.js +52 -0
- package/src/aws/infra/api/response.js +61 -0
- package/src/aws/infra/api/responses.js +79 -0
- package/src/aws/infra/api/static-integration.js +54 -0
- package/src/aws/infra/canaries/canary-alarm.js +26 -0
- package/src/aws/infra/canaries/canary-parameters.js +3 -0
- package/src/aws/infra/canaries/canary-role.js +46 -0
- package/src/aws/infra/canaries/canary.js +29 -0
- package/src/aws/infra/canaries/database-canary.js +55 -0
- package/src/aws/infra/canaries/database-checker.js +109 -0
- package/src/aws/infra/canaries/url-canary.js +46 -0
- package/src/aws/infra/canaries/url-checker.js +238 -0
- package/src/aws/infra/documentation.js +95 -0
- package/src/aws/infra/scheduler.js +31 -0
- package/src/aws/infra/security-rule.js +39 -0
- package/src/aws/infra/sqs-integration.js +93 -0
- package/src/aws/infra/sqs-queue.js +130 -0
- package/src/aws/infra/stack/lambda-configs.js +93 -0
- package/src/aws/infra/stack/monitoredfunction.js +135 -0
- package/src/aws/infra/stack/rest_apis.js +179 -0
- package/src/aws/infra/stack/stack-checking-aspect.js +163 -0
- package/src/aws/infra/stack/stack.js +58 -0
- package/src/aws/infra/stack/subscription.js +41 -0
- package/src/aws/infra/usage-plans.js +42 -0
- package/src/aws/runtime/apikey.js +13 -0
- package/src/aws/runtime/digitraffic-integration-response.js +26 -0
- package/src/aws/runtime/messaging.js +31 -0
- package/src/aws/runtime/s3.js +30 -0
- package/src/aws/runtime/secrets/dbsecret.js +96 -0
- package/src/aws/runtime/secrets/proxy-holder.js +26 -0
- package/src/aws/runtime/secrets/rds-holder.js +26 -0
- package/src/aws/runtime/secrets/secret-holder.js +73 -0
- package/src/aws/runtime/secrets/secret.js +43 -0
- package/src/aws/types/errors.js +9 -0
- package/src/aws/types/lambda-response.js +28 -0
- package/src/aws/types/mediatypes.js +15 -0
- package/src/aws/types/model-with-reference.js +3 -0
- package/src/aws/types/proxytypes.js +3 -0
- package/src/aws/types/tags.js +7 -0
- package/src/database/cached.js +32 -0
- package/src/database/database.js +62 -0
- package/src/database/last-updated.js +54 -0
- package/src/marine/id_utils.js +33 -0
- package/src/marine/rtz.js +3 -0
- package/src/test/asserter.js +45 -0
- package/src/test/db-testutils.js +31 -0
- package/src/test/httpserver.js +67 -0
- package/src/test/secret.js +25 -0
- package/src/test/secrets-manager.js +59 -0
- package/src/test/testutils.js +44 -0
- package/src/types/input-error.js +7 -0
- package/src/types/language.js +10 -0
- package/src/types/traffictype.js +13 -0
- package/src/types/validator.js +14 -0
- package/src/utils/api-model.js +129 -0
- package/src/utils/base64.js +21 -0
- package/src/utils/date-utils.js +34 -0
- package/src/utils/geojson-types.js +18 -0
- package/src/utils/geometry.js +140 -0
- package/src/utils/retry.js +50 -0
- package/src/utils/slack.js +25 -0
- package/src/utils/utils.js +40 -0
- package/test/asserter.d.ts +11 -0
- package/test/asserter.js +45 -0
- package/test/db-testutils.d.ts +2 -0
- package/test/db-testutils.js +31 -0
- package/test/httpserver.d.ts +18 -0
- package/test/httpserver.js +67 -0
- package/test/marine/id_utils.test.js +69 -0
- package/test/promise/promise.test.js +125 -0
- package/test/secret.d.ts +3 -0
- package/test/secret.js +25 -0
- package/test/secrets/dbsecret.test.js +71 -0
- package/test/secrets/secret-holder.test.js +124 -0
- package/test/secrets/secret.test.js +66 -0
- package/test/secrets-manager.d.ts +9 -0
- package/test/secrets-manager.js +59 -0
- package/test/test/httpserver.test.js +87 -0
- package/test/testutils.d.ts +12 -0
- package/test/testutils.js +44 -0
- package/test/utils/date-utils.test.js +51 -0
- package/test/utils/geometry.test.js +49 -0
- package/test/utils/utils.test.js +49 -0
- package/types/input-error.d.ts +2 -0
- package/types/input-error.js +7 -0
- package/types/language.d.ts +5 -0
- package/types/language.js +10 -0
- package/types/traffictype.d.ts +8 -0
- package/types/traffictype.js +13 -0
- package/types/validator.d.ts +4 -0
- package/types/validator.js +14 -0
- package/utils/api-model.d.ts +87 -0
- package/utils/api-model.js +129 -0
- package/utils/base64.d.ts +12 -0
- package/utils/base64.js +21 -0
- package/utils/date-utils.d.ts +17 -0
- package/utils/date-utils.js +34 -0
- package/utils/geojson-types.d.ts +14 -0
- package/utils/geojson-types.js +18 -0
- package/utils/geometry.d.ts +36 -0
- package/utils/geometry.js +140 -0
- package/utils/retry.d.ts +13 -0
- package/utils/retry.js +50 -0
- package/utils/slack.d.ts +5 -0
- package/utils/slack.js +25 -0
- package/utils/utils.d.ts +22 -0
- package/utils/utils.js +40 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
import { IDatabase, ITask } from "pg-promise";
|
2
|
+
export declare type DTDatabase = IDatabase<unknown>;
|
3
|
+
export declare type DTTransaction = ITask<unknown>;
|
4
|
+
/**
|
5
|
+
* Creates a non-pooling database connection primarily used by Lambdas.
|
6
|
+
*
|
7
|
+
* Note! Using this method opens a new RDS connection on every invocation. It is advised to
|
8
|
+
* use RDS proxy to pool connections transparently.
|
9
|
+
* https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html
|
10
|
+
* @param username Username
|
11
|
+
* @param password Password
|
12
|
+
* @param applicationName name of application
|
13
|
+
* @param url Connection URL
|
14
|
+
* @param options pg-promise options
|
15
|
+
*/
|
16
|
+
export declare function initDbConnection(username: string, password: string, applicationName: string, url: string, options?: object): DTDatabase;
|
17
|
+
export declare function inTransaction<T>(fn: (db: DTTransaction) => Promise<T>): Promise<T>;
|
18
|
+
export declare function inDatabase<T>(fn: (db: DTDatabase) => Promise<T>): Promise<T>;
|
19
|
+
export declare function inDatabaseReadonly<T>(fn: (db: DTDatabase) => Promise<T>): Promise<T>;
|
@@ -0,0 +1,62 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.inDatabaseReadonly = exports.inDatabase = exports.inTransaction = exports.initDbConnection = void 0;
|
4
|
+
const dbsecret_1 = require("../aws/runtime/secrets/dbsecret");
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
6
|
+
const pgp = require('pg-promise')();
|
7
|
+
// convert numeric types to number instead of string
|
8
|
+
pgp.pg.types.setTypeParser(pgp.pg.types.builtins.INT8, (value) => {
|
9
|
+
return parseInt(value);
|
10
|
+
});
|
11
|
+
pgp.pg.types.setTypeParser(pgp.pg.types.builtins.FLOAT8, (value) => {
|
12
|
+
return parseFloat(value);
|
13
|
+
});
|
14
|
+
pgp.pg.types.setTypeParser(pgp.pg.types.builtins.NUMERIC, (value) => {
|
15
|
+
return parseFloat(value);
|
16
|
+
});
|
17
|
+
/**
|
18
|
+
* Creates a non-pooling database connection primarily used by Lambdas.
|
19
|
+
*
|
20
|
+
* Note! Using this method opens a new RDS connection on every invocation. It is advised to
|
21
|
+
* use RDS proxy to pool connections transparently.
|
22
|
+
* https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html
|
23
|
+
* @param username Username
|
24
|
+
* @param password Password
|
25
|
+
* @param applicationName name of application
|
26
|
+
* @param url Connection URL
|
27
|
+
* @param options pg-promise options
|
28
|
+
*/
|
29
|
+
function initDbConnection(username, password, applicationName, url, options) {
|
30
|
+
const finalUrl = `postgresql://${username}:${password}@${url}?application_name=${applicationName}`;
|
31
|
+
return pgp(finalUrl, options);
|
32
|
+
}
|
33
|
+
exports.initDbConnection = initDbConnection;
|
34
|
+
function inTransaction(fn) {
|
35
|
+
return inDatabase(db => db.tx((t) => fn(t)));
|
36
|
+
}
|
37
|
+
exports.inTransaction = inTransaction;
|
38
|
+
function inDatabase(fn) {
|
39
|
+
return doInDatabase(false, fn);
|
40
|
+
}
|
41
|
+
exports.inDatabase = inDatabase;
|
42
|
+
function inDatabaseReadonly(fn) {
|
43
|
+
return doInDatabase(true, fn);
|
44
|
+
}
|
45
|
+
exports.inDatabaseReadonly = inDatabaseReadonly;
|
46
|
+
async function doInDatabase(readonly, fn) {
|
47
|
+
const db = initDbConnection(process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_USER], process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_PASS], process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_APPLICATION] || 'unknown-cdk-application', (readonly ? process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_RO_URI] : process.env[dbsecret_1.DatabaseEnvironmentKeys.DB_URI]));
|
48
|
+
try {
|
49
|
+
// deallocate all prepared statements to allow for connection pooling
|
50
|
+
// DISCARD instead of DEALLOCATE as it didn't always clean all prepared statements
|
51
|
+
await db.none('DISCARD ALL');
|
52
|
+
return await fn(db);
|
53
|
+
}
|
54
|
+
catch (e) {
|
55
|
+
console.error("Error in db:", e);
|
56
|
+
throw e;
|
57
|
+
}
|
58
|
+
finally {
|
59
|
+
db.$pool.end();
|
60
|
+
}
|
61
|
+
}
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsOERBQXdFO0FBRXhFLDhEQUE4RDtBQUM5RCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUVwQyxvREFBb0Q7QUFDcEQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUNyRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQztBQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdkUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ3hFLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDO0FBTUg7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDNUIsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsZUFBdUIsRUFDdkIsR0FBVyxFQUNYLE9BQWdCO0lBRWhCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixRQUFRLElBQUksUUFBUSxJQUFJLEdBQUcscUJBQXFCLGVBQWUsRUFBRSxDQUFDO0lBRW5HLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBVkQsNENBVUM7QUFFRCxTQUFnQixhQUFhLENBQUssRUFBcUM7SUFDbkUsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRkQsc0NBRUM7QUFFRCxTQUFnQixVQUFVLENBQUksRUFBa0M7SUFDNUQsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFGRCxnQ0FFQztBQUVELFNBQWdCLGtCQUFrQixDQUFJLEVBQWtDO0lBRXBFLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxLQUFLLFVBQVUsWUFBWSxDQUFJLFFBQWlCLEVBQzVDLEVBQWtDO0lBQ2xDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsT0FBTyxDQUFXLEVBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsT0FBTyxDQUFXLEVBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQXVCLENBQUMsY0FBYyxDQUFDLElBQUkseUJBQXlCLEVBQ2hGLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFXLENBQUMsQ0FBQztJQUN6SCxJQUFJO1FBQ0EscUVBQXFFO1FBQ3JFLGtGQUFrRjtRQUNsRixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN2QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLENBQUM7S0FDWDtZQUFTO1FBQ04sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNsQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lEYXRhYmFzZSwgSVRhc2t9IGZyb20gXCJwZy1wcm9taXNlXCI7XG5pbXBvcnQge0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzfSBmcm9tIFwiLi4vYXdzL3J1bnRpbWUvc2VjcmV0cy9kYnNlY3JldFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuY29uc3QgcGdwID0gcmVxdWlyZSgncGctcHJvbWlzZScpKCk7XG5cbi8vIGNvbnZlcnQgbnVtZXJpYyB0eXBlcyB0byBudW1iZXIgaW5zdGVhZCBvZiBzdHJpbmdcbnBncC5wZy50eXBlcy5zZXRUeXBlUGFyc2VyKHBncC5wZy50eXBlcy5idWlsdGlucy5JTlQ4LCAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSk7XG59KTtcblxucGdwLnBnLnR5cGVzLnNldFR5cGVQYXJzZXIocGdwLnBnLnR5cGVzLmJ1aWx0aW5zLkZMT0FUOCwgKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG59KTtcblxucGdwLnBnLnR5cGVzLnNldFR5cGVQYXJzZXIocGdwLnBnLnR5cGVzLmJ1aWx0aW5zLk5VTUVSSUMsICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xufSk7XG5cbmV4cG9ydCB0eXBlIERURGF0YWJhc2UgPSBJRGF0YWJhc2U8dW5rbm93bj47XG5cbmV4cG9ydCB0eXBlIERUVHJhbnNhY3Rpb24gPSBJVGFzazx1bmtub3duPlxuXG4vKipcbiAqIENyZWF0ZXMgYSBub24tcG9vbGluZyBkYXRhYmFzZSBjb25uZWN0aW9uIHByaW1hcmlseSB1c2VkIGJ5IExhbWJkYXMuXG4gKlxuICogTm90ZSEgVXNpbmcgdGhpcyBtZXRob2Qgb3BlbnMgYSBuZXcgUkRTIGNvbm5lY3Rpb24gb24gZXZlcnkgaW52b2NhdGlvbi4gSXQgaXMgYWR2aXNlZCB0b1xuICogdXNlIFJEUyBwcm94eSB0byBwb29sIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXG4gKiBodHRwczovL2RvY3MuYW1hem9uYXdzLmNuL2VuX3VzL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL3Jkcy1wcm94eS5odG1sXG4gKiBAcGFyYW0gdXNlcm5hbWUgVXNlcm5hbWVcbiAqIEBwYXJhbSBwYXNzd29yZCBQYXNzd29yZFxuICogQHBhcmFtIGFwcGxpY2F0aW9uTmFtZSBuYW1lIG9mIGFwcGxpY2F0aW9uXG4gKiBAcGFyYW0gdXJsIENvbm5lY3Rpb24gVVJMXG4gKiBAcGFyYW0gb3B0aW9ucyBwZy1wcm9taXNlIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXREYkNvbm5lY3Rpb24oXG4gICAgdXNlcm5hbWU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBvYmplY3QsXG4pOiBEVERhdGFiYXNlIHtcbiAgICBjb25zdCBmaW5hbFVybCA9IGBwb3N0Z3Jlc3FsOi8vJHt1c2VybmFtZX06JHtwYXNzd29yZH1AJHt1cmx9P2FwcGxpY2F0aW9uX25hbWU9JHthcHBsaWNhdGlvbk5hbWV9YDtcblxuICAgIHJldHVybiBwZ3AoZmluYWxVcmwsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5UcmFuc2FjdGlvbjxUPiAoZm46IChkYjogRFRUcmFuc2FjdGlvbikgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBpbkRhdGFiYXNlKGRiID0+IGRiLnR4KCh0OiBEVFRyYW5zYWN0aW9uKSA9PiBmbih0KSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5EYXRhYmFzZTxUPihmbjogKGRiOiBEVERhdGFiYXNlKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvSW5EYXRhYmFzZShmYWxzZSwgZm4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5EYXRhYmFzZVJlYWRvbmx5PFQ+KGZuOiAoZGI6IERURGF0YWJhc2UpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcblxuICAgIHJldHVybiBkb0luRGF0YWJhc2UodHJ1ZSwgZm4pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkb0luRGF0YWJhc2U8VD4ocmVhZG9ubHk6IGJvb2xlYW4sXG4gICAgZm46IChkYjogRFREYXRhYmFzZSkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGRiID0gaW5pdERiQ29ubmVjdGlvbihwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VU0VSXSBhcyBzdHJpbmcsXG4gICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1BBU1NdIGFzIHN0cmluZyxcbiAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfQVBQTElDQVRJT05dIHx8ICd1bmtub3duLWNkay1hcHBsaWNhdGlvbicsXG4gICAgICAgIChyZWFkb25seSA/IHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1JPX1VSSV0gOiBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VUkldKSBhcyBzdHJpbmcpO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGRlYWxsb2NhdGUgYWxsIHByZXBhcmVkIHN0YXRlbWVudHMgdG8gYWxsb3cgZm9yIGNvbm5lY3Rpb24gcG9vbGluZ1xuICAgICAgICAvLyBESVNDQVJEIGluc3RlYWQgb2YgREVBTExPQ0FURSBhcyBpdCBkaWRuJ3QgYWx3YXlzIGNsZWFuIGFsbCBwcmVwYXJlZCBzdGF0ZW1lbnRzXG4gICAgICAgIGF3YWl0IGRiLm5vbmUoJ0RJU0NBUkQgQUxMJyk7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbihkYik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgaW4gZGI6XCIsIGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGRiLiRwb29sLmVuZCgpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { DTDatabase, DTTransaction } from "./database";
|
2
|
+
export declare enum DataType {
|
3
|
+
VS_DATEX2 = "VS_DATEX2",
|
4
|
+
COUNTING_SITES_DATA = "COUNTING_SITES_DATA",
|
5
|
+
COUNTING_SITES_METADATA = "COUNTING_SITES_METADATA",
|
6
|
+
COUNTING_SITES_METADATA_CHECK = "COUNTING_SITES_METADATA_CHECK",
|
7
|
+
MAINTENANCE_TRACKING_DATA_CHECKED = "MAINTENANCE_TRACKING_DATA_CHECKED",
|
8
|
+
PERMIT_DATA = "PERMIT_DATA",
|
9
|
+
PERMIT_DATA_CHECK = "PERMIT_DATA_CHECK"
|
10
|
+
}
|
11
|
+
export declare function getLastUpdated(db: DTDatabase, datatype: DataType): Promise<Date | null>;
|
12
|
+
export declare function getLastUpdatedWithSubtype(db: DTDatabase, datatype: DataType, subtype: string): Promise<Date | null>;
|
13
|
+
export declare function updateLastUpdated(db: DTDatabase | DTTransaction, datatype: DataType, updated: Date): Promise<null>;
|
14
|
+
export declare function updateLastUpdatedWithSubtype(db: DTDatabase | DTTransaction, datatype: DataType, subtype: string, updated: Date): Promise<null>;
|
15
|
+
export declare function getUpdatedTimestamp(db: DTDatabase, datatype: string): Promise<Date | null>;
|
16
|
+
export declare function updateUpdatedTimestamp(db: DTDatabase | DTTransaction, datatype: string, date: Date, by?: string): Promise<null>;
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateUpdatedTimestamp = exports.getUpdatedTimestamp = exports.updateLastUpdatedWithSubtype = exports.updateLastUpdated = exports.getLastUpdatedWithSubtype = exports.getLastUpdated = exports.DataType = void 0;
|
4
|
+
var DataType;
|
5
|
+
(function (DataType) {
|
6
|
+
DataType["VS_DATEX2"] = "VS_DATEX2";
|
7
|
+
DataType["COUNTING_SITES_DATA"] = "COUNTING_SITES_DATA";
|
8
|
+
DataType["COUNTING_SITES_METADATA"] = "COUNTING_SITES_METADATA";
|
9
|
+
DataType["COUNTING_SITES_METADATA_CHECK"] = "COUNTING_SITES_METADATA_CHECK";
|
10
|
+
DataType["MAINTENANCE_TRACKING_DATA_CHECKED"] = "MAINTENANCE_TRACKING_DATA_CHECKED";
|
11
|
+
DataType["PERMIT_DATA"] = "PERMIT_DATA";
|
12
|
+
DataType["PERMIT_DATA_CHECK"] = "PERMIT_DATA_CHECK";
|
13
|
+
})(DataType = exports.DataType || (exports.DataType = {}));
|
14
|
+
const UNSET_SUBTYPE = '-';
|
15
|
+
function getLastUpdated(db, datatype) {
|
16
|
+
return db.oneOrNone("select updated from data_updated where data_type=$(datatype) and subtype=$(subtype)", {
|
17
|
+
datatype: datatype, subtype: UNSET_SUBTYPE,
|
18
|
+
}, (x) => x?.updated || null);
|
19
|
+
}
|
20
|
+
exports.getLastUpdated = getLastUpdated;
|
21
|
+
function getLastUpdatedWithSubtype(db, datatype, subtype) {
|
22
|
+
return db.oneOrNone("SELECT updated FROM data_updated WHERE data_type=$(datatype) AND subtype=$(subtype)", {
|
23
|
+
datatype: datatype, subtype: subtype,
|
24
|
+
}, (x) => x?.updated || null);
|
25
|
+
}
|
26
|
+
exports.getLastUpdatedWithSubtype = getLastUpdatedWithSubtype;
|
27
|
+
function updateLastUpdated(db, datatype, updated) {
|
28
|
+
return db.none(`insert into data_updated(id, data_type, updated)
|
29
|
+
values(nextval('seq_data_updated'), $(datatype), $(updated))
|
30
|
+
on conflict (data_type, subtype)
|
31
|
+
do update set updated = $(updated)`, { updated, datatype });
|
32
|
+
}
|
33
|
+
exports.updateLastUpdated = updateLastUpdated;
|
34
|
+
function updateLastUpdatedWithSubtype(db, datatype, subtype, updated) {
|
35
|
+
return db.none(`insert into data_updated(id, data_type, subtype, updated)
|
36
|
+
values(nextval('seq_data_updated'), $(datatype), $(subtype), $(updated))
|
37
|
+
on conflict (data_type, subtype)
|
38
|
+
do update set updated = $(updated)`, { updated, subtype, datatype });
|
39
|
+
}
|
40
|
+
exports.updateLastUpdatedWithSubtype = updateLastUpdatedWithSubtype;
|
41
|
+
function getUpdatedTimestamp(db, datatype) {
|
42
|
+
return db.oneOrNone("select updated_time as updated from updated_timestamp where updated_name=$(datatype)", {
|
43
|
+
datatype: datatype,
|
44
|
+
}, (x) => x?.updated || null);
|
45
|
+
}
|
46
|
+
exports.getUpdatedTimestamp = getUpdatedTimestamp;
|
47
|
+
function updateUpdatedTimestamp(db, datatype, date, by = '') {
|
48
|
+
return db.none(`insert into updated_timestamp(updated_name, updated_time, updated_by)
|
49
|
+
values($(datatype), $(date), $(by))
|
50
|
+
on conflict (updated_name)
|
51
|
+
do update set updated_time = $(date), updated_by = $(by)`, { date, datatype, by });
|
52
|
+
}
|
53
|
+
exports.updateUpdatedTimestamp = updateUpdatedTimestamp;
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFzdC11cGRhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlL2xhc3QtdXBkYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFZLFFBUVg7QUFSRCxXQUFZLFFBQVE7SUFDaEIsbUNBQXFCLENBQUE7SUFDckIsdURBQXlDLENBQUE7SUFDekMsK0RBQWlELENBQUE7SUFDakQsMkVBQTZELENBQUE7SUFDN0QsbUZBQXFFLENBQUE7SUFDckUsdUNBQXlCLENBQUE7SUFDekIsbURBQXFDLENBQUE7QUFDekMsQ0FBQyxFQVJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBUW5CO0FBRUQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBTTFCLFNBQWdCLGNBQWMsQ0FBQyxFQUFjLEVBQUUsUUFBa0I7SUFDN0QsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLHFGQUFxRixFQUFFO1FBQ3ZHLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGFBQWE7S0FDN0MsRUFBRSxDQUFDLENBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUpELHdDQUlDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsRUFBYyxFQUFFLFFBQWtCLEVBQUUsT0FBZTtJQUN6RixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMscUZBQXFGLEVBQUU7UUFDdkcsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTztLQUN2QyxFQUFFLENBQUMsQ0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBSkQsOERBSUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxFQUE4QixFQUFFLFFBQWtCLEVBQUUsT0FBYTtJQUMvRixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7OztvQ0FHaUIsRUFDaEMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBTkQsOENBTUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FBQyxFQUE4QixFQUFFLFFBQWtCLEVBQUUsT0FBZSxFQUFFLE9BQWE7SUFDM0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDOzs7b0NBR2lCLEVBQ2hDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFORCxvRUFNQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLEVBQWMsRUFBRSxRQUFnQjtJQUNoRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsc0ZBQXNGLEVBQUU7UUFDeEcsUUFBUSxFQUFFLFFBQVE7S0FDckIsRUFBRSxDQUFDLENBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUpELGtEQUlDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsRUFBOEIsRUFBRSxRQUFnQixFQUFFLElBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUN4RyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7Ozt5REFHc0MsRUFDckQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQU5ELHdEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEVERhdGFiYXNlLCBEVFRyYW5zYWN0aW9ufSBmcm9tIFwiLi9kYXRhYmFzZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gRGF0YVR5cGUge1xyXG4gICAgVlNfREFURVgyPVwiVlNfREFURVgyXCIsXHJcbiAgICBDT1VOVElOR19TSVRFU19EQVRBPVwiQ09VTlRJTkdfU0lURVNfREFUQVwiLFxyXG4gICAgQ09VTlRJTkdfU0lURVNfTUVUQURBVEE9XCJDT1VOVElOR19TSVRFU19NRVRBREFUQVwiLFxyXG4gICAgQ09VTlRJTkdfU0lURVNfTUVUQURBVEFfQ0hFQ0s9XCJDT1VOVElOR19TSVRFU19NRVRBREFUQV9DSEVDS1wiLFxyXG4gICAgTUFJTlRFTkFOQ0VfVFJBQ0tJTkdfREFUQV9DSEVDS0VEPVwiTUFJTlRFTkFOQ0VfVFJBQ0tJTkdfREFUQV9DSEVDS0VEXCIsXHJcbiAgICBQRVJNSVRfREFUQT1cIlBFUk1JVF9EQVRBXCIsXHJcbiAgICBQRVJNSVRfREFUQV9DSEVDSz1cIlBFUk1JVF9EQVRBX0NIRUNLXCIsXHJcbn1cclxuXHJcbmNvbnN0IFVOU0VUX1NVQlRZUEUgPSAnLSc7XHJcblxyXG50eXBlIFVwZGF0ZWRUaW1lc3RhbXAgPSB7XHJcbiAgICB1cGRhdGVkOiBEYXRlXHJcbn0gfCBudWxsO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3RVcGRhdGVkKGRiOiBEVERhdGFiYXNlLCBkYXRhdHlwZTogRGF0YVR5cGUpOiBQcm9taXNlPERhdGUgfCBudWxsPiB7XHJcbiAgICByZXR1cm4gZGIub25lT3JOb25lKFwic2VsZWN0IHVwZGF0ZWQgZnJvbSBkYXRhX3VwZGF0ZWQgd2hlcmUgZGF0YV90eXBlPSQoZGF0YXR5cGUpIGFuZCBzdWJ0eXBlPSQoc3VidHlwZSlcIiwge1xyXG4gICAgICAgIGRhdGF0eXBlOiBkYXRhdHlwZSwgc3VidHlwZTogVU5TRVRfU1VCVFlQRSxcclxuICAgIH0sICh4OiBVcGRhdGVkVGltZXN0YW1wKSA9PiB4Py51cGRhdGVkIHx8IG51bGwpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdFVwZGF0ZWRXaXRoU3VidHlwZShkYjogRFREYXRhYmFzZSwgZGF0YXR5cGU6IERhdGFUeXBlLCBzdWJ0eXBlOiBzdHJpbmcpOiBQcm9taXNlPERhdGUgfCBudWxsPiB7XHJcbiAgICByZXR1cm4gZGIub25lT3JOb25lKFwiU0VMRUNUIHVwZGF0ZWQgRlJPTSBkYXRhX3VwZGF0ZWQgV0hFUkUgZGF0YV90eXBlPSQoZGF0YXR5cGUpIEFORCBzdWJ0eXBlPSQoc3VidHlwZSlcIiwge1xyXG4gICAgICAgIGRhdGF0eXBlOiBkYXRhdHlwZSwgc3VidHlwZTogc3VidHlwZSxcclxuICAgIH0sICh4OiBVcGRhdGVkVGltZXN0YW1wKSA9PiB4Py51cGRhdGVkIHx8IG51bGwpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTGFzdFVwZGF0ZWQoZGI6IERURGF0YWJhc2UgfCBEVFRyYW5zYWN0aW9uLCBkYXRhdHlwZTogRGF0YVR5cGUsIHVwZGF0ZWQ6IERhdGUpOiBQcm9taXNlPG51bGw+IHtcclxuICAgIHJldHVybiBkYi5ub25lKGBpbnNlcnQgaW50byBkYXRhX3VwZGF0ZWQoaWQsIGRhdGFfdHlwZSwgdXBkYXRlZClcclxuIHZhbHVlcyhuZXh0dmFsKCdzZXFfZGF0YV91cGRhdGVkJyksICQoZGF0YXR5cGUpLCAkKHVwZGF0ZWQpKVxyXG4gb24gY29uZmxpY3QgKGRhdGFfdHlwZSwgc3VidHlwZSlcclxuIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZCA9ICQodXBkYXRlZClgLFxyXG4gICAgeyB1cGRhdGVkLCBkYXRhdHlwZSB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxhc3RVcGRhdGVkV2l0aFN1YnR5cGUoZGI6IERURGF0YWJhc2UgfCBEVFRyYW5zYWN0aW9uLCBkYXRhdHlwZTogRGF0YVR5cGUsIHN1YnR5cGU6IHN0cmluZywgdXBkYXRlZDogRGF0ZSk6IFByb21pc2U8bnVsbD4ge1xyXG4gICAgcmV0dXJuIGRiLm5vbmUoYGluc2VydCBpbnRvIGRhdGFfdXBkYXRlZChpZCwgZGF0YV90eXBlLCBzdWJ0eXBlLCB1cGRhdGVkKVxyXG4gdmFsdWVzKG5leHR2YWwoJ3NlcV9kYXRhX3VwZGF0ZWQnKSwgJChkYXRhdHlwZSksICQoc3VidHlwZSksICQodXBkYXRlZCkpXHJcbiBvbiBjb25mbGljdCAoZGF0YV90eXBlLCBzdWJ0eXBlKVxyXG4gZG8gdXBkYXRlIHNldCB1cGRhdGVkID0gJCh1cGRhdGVkKWAsXHJcbiAgICB7IHVwZGF0ZWQsIHN1YnR5cGUsIGRhdGF0eXBlIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlZFRpbWVzdGFtcChkYjogRFREYXRhYmFzZSwgZGF0YXR5cGU6IHN0cmluZyk6IFByb21pc2U8RGF0ZSB8IG51bGw+IHtcclxuICAgIHJldHVybiBkYi5vbmVPck5vbmUoXCJzZWxlY3QgdXBkYXRlZF90aW1lIGFzIHVwZGF0ZWQgZnJvbSB1cGRhdGVkX3RpbWVzdGFtcCB3aGVyZSB1cGRhdGVkX25hbWU9JChkYXRhdHlwZSlcIiwge1xyXG4gICAgICAgIGRhdGF0eXBlOiBkYXRhdHlwZSxcclxuICAgIH0sICh4OiBVcGRhdGVkVGltZXN0YW1wKSA9PiB4Py51cGRhdGVkIHx8IG51bGwpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVXBkYXRlZFRpbWVzdGFtcChkYjogRFREYXRhYmFzZSB8IERUVHJhbnNhY3Rpb24sIGRhdGF0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUsIGJ5ID0gJycpOiBQcm9taXNlPG51bGw+IHtcclxuICAgIHJldHVybiBkYi5ub25lKGBpbnNlcnQgaW50byB1cGRhdGVkX3RpbWVzdGFtcCh1cGRhdGVkX25hbWUsIHVwZGF0ZWRfdGltZSwgdXBkYXRlZF9ieSlcclxudmFsdWVzKCQoZGF0YXR5cGUpLCAkKGRhdGUpLCAkKGJ5KSlcclxub24gY29uZmxpY3QgKHVwZGF0ZWRfbmFtZSlcclxuZG8gdXBkYXRlIHNldCB1cGRhdGVkX3RpbWUgPSAkKGRhdGUpLCB1cGRhdGVkX2J5ID0gJChieSlgLFxyXG4gICAgeyBkYXRlLCBkYXRhdHlwZSwgYnkgfSk7XHJcbn1cclxuIl19
|
package/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./aws/infra/api/responses";
|
package/index.js
ADDED
@@ -0,0 +1,18 @@
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./aws/infra/api/responses"), exports);
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2F3cy9pbmZyYS9hcGkvcmVzcG9uc2VzXCI7XG4iXX0=
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isValidLOCODE = exports.isValidMMSI = exports.isValidIMO = void 0;
|
4
|
+
function isValidIMO(imo) {
|
5
|
+
return imo >= 1000000 && imo <= 9999999 && imoChecksumIsValid(imo);
|
6
|
+
}
|
7
|
+
exports.isValidIMO = isValidIMO;
|
8
|
+
function imoChecksumIsValid(imo) {
|
9
|
+
const imoStr = imo.toString();
|
10
|
+
const imoDigit1 = Number(imoStr[0]);
|
11
|
+
const imoDigit2 = Number(imoStr[1]);
|
12
|
+
const imoDigit3 = Number(imoStr[2]);
|
13
|
+
const imoDigit4 = Number(imoStr[3]);
|
14
|
+
const imoDigit5 = Number(imoStr[4]);
|
15
|
+
const imoDigit6 = Number(imoStr[5]);
|
16
|
+
const checkDigit = Number(imoStr[6]);
|
17
|
+
const checkCalculation = Number(((imoDigit1 * 7) + (imoDigit2 * 6) + (imoDigit3 * 5) + (imoDigit4 * 4) + (imoDigit5 * 3) + (imoDigit6 * 2)));
|
18
|
+
const checkResult = checkCalculation % 10 === checkDigit;
|
19
|
+
if (!checkResult) {
|
20
|
+
console.warn('method=imoChecksumIsValid IMO checksum failed %d', imo);
|
21
|
+
}
|
22
|
+
return checkResult;
|
23
|
+
}
|
24
|
+
function isValidMMSI(mmsi) {
|
25
|
+
return mmsi >= 100000000 && mmsi <= 999999999;
|
26
|
+
}
|
27
|
+
exports.isValidMMSI = isValidMMSI;
|
28
|
+
const LocodePattern = /^FI[A-Z]{3}$/i;
|
29
|
+
function isValidLOCODE(locode) {
|
30
|
+
return LocodePattern.test(locode);
|
31
|
+
}
|
32
|
+
exports.isValidLOCODE = isValidLOCODE;
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyaW5lL2lkX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLFVBQVUsQ0FBQyxHQUFXO0lBQ2xDLE9BQU8sR0FBRyxJQUFJLE9BQU8sSUFBSSxHQUFHLElBQUksT0FBTyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFGRCxnQ0FFQztBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBVztJQUNuQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdJLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxVQUFVLENBQUM7SUFDekQsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDekU7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUZELGtDQUVDO0FBRUQsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBRXRDLFNBQWdCLGFBQWEsQ0FBQyxNQUFjO0lBQ3hDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsc0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNWYWxpZElNTyhpbW86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbW8gPj0gMTAwMDAwMCAmJiBpbW8gPD0gOTk5OTk5OSAmJiBpbW9DaGVja3N1bUlzVmFsaWQoaW1vKTtcbn1cblxuZnVuY3Rpb24gaW1vQ2hlY2tzdW1Jc1ZhbGlkKGltbzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW1vU3RyID0gaW1vLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaW1vRGlnaXQxID0gTnVtYmVyKGltb1N0clswXSk7XG4gICAgY29uc3QgaW1vRGlnaXQyID0gTnVtYmVyKGltb1N0clsxXSk7XG4gICAgY29uc3QgaW1vRGlnaXQzID0gTnVtYmVyKGltb1N0clsyXSk7XG4gICAgY29uc3QgaW1vRGlnaXQ0ID0gTnVtYmVyKGltb1N0clszXSk7XG4gICAgY29uc3QgaW1vRGlnaXQ1ID0gTnVtYmVyKGltb1N0cls0XSk7XG4gICAgY29uc3QgaW1vRGlnaXQ2ID0gTnVtYmVyKGltb1N0cls1XSk7XG4gICAgY29uc3QgY2hlY2tEaWdpdCA9IE51bWJlcihpbW9TdHJbNl0pO1xuICAgIGNvbnN0IGNoZWNrQ2FsY3VsYXRpb24gPSBOdW1iZXIoKChpbW9EaWdpdDEgKiA3KSArIChpbW9EaWdpdDIgKiA2KSArIChpbW9EaWdpdDMgKiA1KSArIChpbW9EaWdpdDQgKiA0KSArIChpbW9EaWdpdDUgKiAzKSArIChpbW9EaWdpdDYgKiAyKSkpO1xuICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gY2hlY2tDYWxjdWxhdGlvbiAlIDEwID09PSBjaGVja0RpZ2l0O1xuICAgIGlmICghY2hlY2tSZXN1bHQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdtZXRob2Q9aW1vQ2hlY2tzdW1Jc1ZhbGlkIElNTyBjaGVja3N1bSBmYWlsZWQgJWQnLCBpbW8pO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tSZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTU1TSShtbXNpOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbW1zaSA+PSAxMDAwMDAwMDAgJiYgbW1zaSA8PSA5OTk5OTk5OTk7XG59XG5cbmNvbnN0IExvY29kZVBhdHRlcm4gPSAvXkZJW0EtWl17M30kL2k7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTE9DT0RFKGxvY29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIExvY29kZVBhdHRlcm4udGVzdChsb2NvZGUpO1xufVxuIl19
|
package/marine/rtz.d.ts
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
export declare type RtzPositionCoordinate = {
|
2
|
+
readonly $: {
|
3
|
+
readonly lat: number;
|
4
|
+
readonly lon: number;
|
5
|
+
};
|
6
|
+
};
|
7
|
+
export declare type RtzWaypointPosition = {
|
8
|
+
readonly position: RtzPositionCoordinate[];
|
9
|
+
};
|
10
|
+
export declare type RtzWaypoint = {
|
11
|
+
readonly waypoint: RtzWaypointPosition[];
|
12
|
+
};
|
13
|
+
export declare type RtzScheduleElement = {
|
14
|
+
readonly $: {
|
15
|
+
/**
|
16
|
+
* Date
|
17
|
+
*/
|
18
|
+
readonly etd?: string;
|
19
|
+
/**
|
20
|
+
* Date
|
21
|
+
*/
|
22
|
+
readonly eta?: string;
|
23
|
+
};
|
24
|
+
};
|
25
|
+
export declare type RtzSchedule = {
|
26
|
+
readonly scheduleElement: RtzScheduleElement[];
|
27
|
+
};
|
28
|
+
export declare type RtzScheduleWrapper = {
|
29
|
+
readonly manual?: RtzSchedule[];
|
30
|
+
readonly calculated?: RtzSchedule[];
|
31
|
+
};
|
32
|
+
export declare type RtzSchedules = {
|
33
|
+
readonly schedule: RtzScheduleWrapper[];
|
34
|
+
};
|
35
|
+
export declare type RtzRouteInfo = {
|
36
|
+
readonly $: {
|
37
|
+
readonly vesselMMSI: string;
|
38
|
+
readonly vesselIMO: string;
|
39
|
+
};
|
40
|
+
};
|
41
|
+
export declare type RtzRoute = {
|
42
|
+
readonly routeInfo: RtzRouteInfo[];
|
43
|
+
readonly waypoints: RtzWaypoint[];
|
44
|
+
readonly schedules: RtzSchedules[];
|
45
|
+
};
|
46
|
+
export declare type RtzVoyagePlan = {
|
47
|
+
readonly route: RtzRoute;
|
48
|
+
};
|
package/marine/rtz.js
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnR6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmluZS9ydHoudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFJ0elBvc2l0aW9uQ29vcmRpbmF0ZSA9IHtcbiAgICByZWFkb25seSAkOiB7XG4gICAgICAgIHJlYWRvbmx5IGxhdDogbnVtYmVyXG4gICAgICAgIHJlYWRvbmx5IGxvbjogbnVtYmVyXG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBSdHpXYXlwb2ludFBvc2l0aW9uID0ge1xuICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBSdHpQb3NpdGlvbkNvb3JkaW5hdGVbXVxufVxuXG5leHBvcnQgdHlwZSBSdHpXYXlwb2ludCA9IHtcbiAgICByZWFkb25seSB3YXlwb2ludDogUnR6V2F5cG9pbnRQb3NpdGlvbltdXG59XG5cbmV4cG9ydCB0eXBlIFJ0elNjaGVkdWxlRWxlbWVudCA9IHtcbiAgICByZWFkb25seSAkOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEYXRlXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBldGQ/OiBzdHJpbmdcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERhdGVcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGV0YT86IHN0cmluZ1xuICAgIH0sXG59XG5cbmV4cG9ydCB0eXBlIFJ0elNjaGVkdWxlID0ge1xuICAgIHJlYWRvbmx5IHNjaGVkdWxlRWxlbWVudDogUnR6U2NoZWR1bGVFbGVtZW50W11cbn1cblxuZXhwb3J0IHR5cGUgUnR6U2NoZWR1bGVXcmFwcGVyID0ge1xuICAgIHJlYWRvbmx5IG1hbnVhbD86IFJ0elNjaGVkdWxlW11cbiAgICByZWFkb25seSBjYWxjdWxhdGVkPzogUnR6U2NoZWR1bGVbXVxufVxuXG5leHBvcnQgdHlwZSBSdHpTY2hlZHVsZXMgPSB7XG4gICAgcmVhZG9ubHkgc2NoZWR1bGU6IFJ0elNjaGVkdWxlV3JhcHBlcltdXG59XG5cbmV4cG9ydCB0eXBlIFJ0elJvdXRlSW5mbyA9IHtcbiAgICByZWFkb25seSAkOiB7XG4gICAgICAgIHJlYWRvbmx5IHZlc3NlbE1NU0k6IHN0cmluZ1xuICAgICAgICByZWFkb25seSB2ZXNzZWxJTU86IHN0cmluZ1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUnR6Um91dGUgPSB7XG4gICAgcmVhZG9ubHkgcm91dGVJbmZvOiBSdHpSb3V0ZUluZm9bXVxuICAgIHJlYWRvbmx5IHdheXBvaW50czogUnR6V2F5cG9pbnRbXVxuICAgIHJlYWRvbmx5IHNjaGVkdWxlczogUnR6U2NoZWR1bGVzW11cbn1cblxuZXhwb3J0IHR5cGUgUnR6Vm95YWdlUGxhbiA9IHtcbiAgICByZWFkb25seSByb3V0ZTogUnR6Um91dGVcbn1cbiJdfQ==
|
package/package.json
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
{
|
2
|
+
"name": "@digitraffic/common",
|
3
|
+
"version": "2022.10.5+3",
|
4
|
+
"description": "",
|
5
|
+
"repository": {
|
6
|
+
"type": "git",
|
7
|
+
"url": "https://github.com/tmfg/digitraffic-common.git"
|
8
|
+
},
|
9
|
+
"engines": {
|
10
|
+
"node": ">=16 <17",
|
11
|
+
"yarn": ">1.2 <2"
|
12
|
+
},
|
13
|
+
"publishConfig": {
|
14
|
+
"@tmfg:registry": "https://npm.pkg.github.com"
|
15
|
+
},
|
16
|
+
"scripts": {
|
17
|
+
"build": "tsc",
|
18
|
+
"lint": "eslint **/*.ts test/**/*.ts --fix",
|
19
|
+
"test": "jest --detectOpenHandles --forceExit --coverage --coverageDirectory=output/coverage/jest"
|
20
|
+
},
|
21
|
+
"main": "index.js",
|
22
|
+
"types": "index.d.ts",
|
23
|
+
"files": [
|
24
|
+
"."
|
25
|
+
],
|
26
|
+
"devDependencies": {
|
27
|
+
"@aws-cdk/aws-synthetics-alpha": "^2.27.0-alpha.0",
|
28
|
+
"@types/aws-lambda": "^8.10.106",
|
29
|
+
"@types/geojson": "^7946.0.7",
|
30
|
+
"@types/jest": "^29.0.3",
|
31
|
+
"@types/node": "^18.7.23",
|
32
|
+
"@types/ramda": "^0.28.15",
|
33
|
+
"@types/sinon": "^10.0.13",
|
34
|
+
"aws-cdk-lib": "^2.43.1",
|
35
|
+
"aws-sdk": "^2.1225.0",
|
36
|
+
"axios": "^0.21.1",
|
37
|
+
"change-case": "4.1.2",
|
38
|
+
"constructs": "^10.1.116",
|
39
|
+
"geojson-validation": "^1.0.2",
|
40
|
+
"jest": "^29.1.1",
|
41
|
+
"jest-junit": "^14.0.1",
|
42
|
+
"moment": "^2.29.4",
|
43
|
+
"node-ttl": "^0.2.0",
|
44
|
+
"pg-native": "^3.0.1",
|
45
|
+
"pg-promise": "^10.12.0",
|
46
|
+
"ramda": "^0.28.0",
|
47
|
+
"sinon": "^14.0.0",
|
48
|
+
"ts-jest": "^29.0.2",
|
49
|
+
"typescript": "^4.8.4"
|
50
|
+
},
|
51
|
+
"externals": [
|
52
|
+
"aws-sdk",
|
53
|
+
"Synthetics"
|
54
|
+
]
|
55
|
+
}
|
@@ -0,0 +1,52 @@
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL2FwaS9pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBdUc7QUFFdkcsdURBQWlEO0FBQ2pELHFHQUE4RjtBQVM5RixNQUFhLHNCQUFzQjtJQU0vQixZQUFZLE1BQWlCLEVBQUUsU0FBUyxHQUFHLHNCQUFTLENBQUMsVUFBVTtRQUZ0RCxlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUdyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBRyxLQUFlO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHLEtBQWU7UUFDaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUs7UUFDRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVwRCxPQUFPLElBQUksa0NBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxLQUFLLEVBQUUsS0FBSztZQUNaLG9CQUFvQjtZQUNwQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzNGLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDekYsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsYUFBYTtTQUN6RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztRQUVyRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQXVCLEVBQUUsRUFBRTtZQUNoRCxpQkFBaUIsQ0FBQyx1QkFBdUIsU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsU0FBUyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEksQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGlCQUFpQixDQUFDO0lBQzdCLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQXVCLEVBQUUsRUFBRTtZQUNoRCxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLHlDQUF5QyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsQ0FBQyxzQkFBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDNUQsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxDQUFDLGlFQUE4QixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0o7QUE1REQsd0RBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlZ3JhdGlvblJlc3BvbnNlLCBMYW1iZGFJbnRlZ3JhdGlvbiwgUGFzc3Rocm91Z2hCZWhhdmlvcn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge0lGdW5jdGlvbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7TWVkaWFUeXBlfSBmcm9tIFwiLi4vLi4vdHlwZXMvbWVkaWF0eXBlc1wiO1xuaW1wb3J0IHtEaWdpdHJhZmZpY0ludGVncmF0aW9uUmVzcG9uc2V9IGZyb20gXCIuLi8uLi9ydW50aW1lL2RpZ2l0cmFmZmljLWludGVncmF0aW9uLXJlc3BvbnNlXCI7XG5cbnR5cGUgUGFyYW1ldGVyVHlwZSA9ICdwYXRoJyB8ICdxdWVyeXN0cmluZyc7XG5cbmludGVyZmFjZSBBcGlQYXJhbWV0ZXIge1xuICAgIHR5cGU6IFBhcmFtZXRlclR5cGVcbiAgICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIERpZ2l0cmFmZmljSW50ZWdyYXRpb24ge1xuICAgIHJlYWRvbmx5IGxhbWJkYTogSUZ1bmN0aW9uO1xuICAgIHJlYWRvbmx5IG1lZGlhVHlwZTogTWVkaWFUeXBlO1xuXG4gICAgcmVhZG9ubHkgcGFyYW1ldGVyczogQXBpUGFyYW1ldGVyW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGxhbWJkYTogSUZ1bmN0aW9uLCBtZWRpYVR5cGUgPSBNZWRpYVR5cGUuVEVYVF9QTEFJTikge1xuICAgICAgICB0aGlzLmxhbWJkYSA9IGxhbWJkYTtcbiAgICAgICAgdGhpcy5tZWRpYVR5cGUgPSBtZWRpYVR5cGU7XG4gICAgfVxuXG4gICAgYWRkUGF0aFBhcmFtZXRlciguLi5uYW1lczogc3RyaW5nW10pOiBEaWdpdHJhZmZpY0ludGVncmF0aW9uIHtcbiAgICAgICAgbmFtZXMuZm9yRWFjaChuYW1lID0+IHRoaXMucGFyYW1ldGVycy5wdXNoKHt0eXBlOiAncGF0aCcsIG5hbWV9KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYWRkUXVlcnlQYXJhbWV0ZXIoLi4ubmFtZXM6IHN0cmluZ1tdKTogRGlnaXRyYWZmaWNJbnRlZ3JhdGlvbiB7XG4gICAgICAgIG5hbWVzLmZvckVhY2gobmFtZSA9PiB0aGlzLnBhcmFtZXRlcnMucHVzaCh7dHlwZTogJ3F1ZXJ5c3RyaW5nJywgbmFtZX0pKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBMYW1iZGFJbnRlZ3JhdGlvbiB7XG4gICAgICAgIGNvbnN0IGludGVncmF0aW9uUmVzcG9uc2VzID0gdGhpcy5jcmVhdGVSZXNwb25zZXMoKTtcblxuICAgICAgICByZXR1cm4gbmV3IExhbWJkYUludGVncmF0aW9uKHRoaXMubGFtYmRhLCB7XG4gICAgICAgICAgICBwcm94eTogZmFsc2UsXG4gICAgICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlcyxcbiAgICAgICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNyZWF0ZVJlcXVlc3RQYXJhbWV0ZXJzKCksXG4gICAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiB0aGlzLmNyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMoKSxcbiAgICAgICAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IFBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19NQVRDSCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVxdWVzdFBhcmFtZXRlcnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcjogQXBpUGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0UGFyYW1ldGVyc1tgaW50ZWdyYXRpb24ucmVxdWVzdC4ke3BhcmFtZXRlci50eXBlfS4ke3BhcmFtZXRlci5uYW1lfWBdID0gYG1ldGhvZC5yZXF1ZXN0LiR7cGFyYW1ldGVyLnR5cGV9LiR7cGFyYW1ldGVyLm5hbWV9YDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVlc3RQYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIGNyZWF0ZVJlcXVlc3RUZW1wbGF0ZXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RKc29uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcjogQXBpUGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0SnNvbltwYXJhbWV0ZXIubmFtZV0gPSBgJHV0aWwuZXNjYXBlSmF2YVNjcmlwdCgkaW5wdXQucGFyYW1zKCcke3BhcmFtZXRlci5uYW1lfScpKWA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT05dOiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0SnNvbiksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY3JlYXRlUmVzcG9uc2VzKCk6IEludGVncmF0aW9uUmVzcG9uc2VbXSB7XG4gICAgICAgIHJldHVybiBbRGlnaXRyYWZmaWNJbnRlZ3JhdGlvblJlc3BvbnNlLm9rKHRoaXMubWVkaWFUeXBlKV07XG4gICAgfVxufSJdfQ==
|
@@ -0,0 +1,61 @@
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL2FwaS9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBMEQ7QUFDMUQsdURBQWlEO0FBRWpEOzs7Ozs7R0FNRztBQUNVLFFBQUEsdUJBQXVCLEdBQUc7Ozs7Ozs7Ozs7O0NBV3RDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0FBRXJELGFBQWE7QUFDYixNQUFNLGFBQWEsR0FBMEI7SUFDekMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNO0lBQzNDLElBQUksRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDdEMsV0FBVyxFQUFFLHVCQUF1QjtJQUNwQyxVQUFVLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDTCxJQUFJLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1lBQ3RDLFdBQVcsRUFBRSxrQkFBa0I7U0FDbEM7S0FDSjtDQUNKLENBQUM7QUFFRixhQUFhO0FBQ0EsUUFBQSxZQUFZLEdBQUc7SUFDeEIsV0FBVyxFQUFFLHNCQUFTLENBQUMsZ0JBQWdCO0lBQ3ZDLFNBQVMsRUFBRSxzQkFBc0I7SUFDakMsTUFBTSxFQUFFLGFBQWE7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUN2QixRQUFBLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztBQUUzRSxNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQztBQUMzQyxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUMsQ0FBQyxDQUFDO0FBRTFGLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ3hDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7QUFFM0QsUUFBQSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdGLFFBQUEsd0JBQXdCLEdBQUcsZUFBZSxDQUFDLHNCQUFTLENBQUMsZ0JBQWdCLEVBQUUsd0JBQWdCLENBQUMsQ0FBQztBQUN6RixRQUFBLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxzQkFBUyxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3ZGLFFBQUEsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLHNCQUFTLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDakYsUUFBQSxtQ0FBbUMsR0FBRyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0FBRTVILFNBQWdCLGVBQWUsQ0FBSSxHQUFjLEVBQUUsS0FBUTtJQUN2RCxNQUFNLEdBQUcsR0FBc0IsRUFBRSxDQUFDO0lBRWxDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFakIsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBTkQsMENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXBpZ2F0ZXdheSA9IHJlcXVpcmUoJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5Jyk7XG5pbXBvcnQge01lZGlhVHlwZX0gZnJvbSBcIi4uLy4uL3R5cGVzL21lZGlhdHlwZXNcIjtcblxuLyoqXG4gKiBUaGlzIGlzIHZlbG9jaXR5LXNjcmlwdCwgdGhhdCBhc3N1bWVzIHRoZSByZXNwb25zZSB0byBiZSBMYW1iZGFSZXNwb25zZShzdGF0dXMgYW5kIGJvZHkpLlxuICogSXQgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBib2R5IGFuZCBzdGF0dXMsIGJ1dCBpZiBzdGF0dXMgaW4gc29tZXRoaW5nIGVsc2UgdGhhbiAyMDAgT0sgdGhlIGNvbnRlbnQtdHlwZVxuICogd2lsbCBiZSBvdmVycmlkZGVuIHRvIHRleHQvcGxhaW4uIChpdCdzIGFzc3VtZWQsIHRoYXQgbGFtYmRhIHdpbGwgcmV0dXJuIGVycm9yIHRleHQpLlxuICpcbiAqIElmIGZpbGVOYW1lIGlzIHNldCwgdGhlbiBDb250ZW50LURpc3Bvc2l0aW9uLWhlYWRlciB3aWxsIGJlIHNldCB0byB1c2UgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IFJFU1BPTlNFX0RFRkFVTFRfTEFNQkRBID0gYCNzZXQoJGlucHV0Um9vdCA9ICRpbnB1dC5wYXRoKCckJykpXG4kaW5wdXRSb290LmJvZHlcbiNpZiAoJGlucHV0Um9vdC5zdGF0dXMgIT0gMjAwKVxuI3NldCAoJGNvbnRleHQucmVzcG9uc2VPdmVycmlkZS5zdGF0dXMgPSAkaW5wdXRSb290LnN0YXR1cylcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkNvbnRlbnQtVHlwZSA9ICd0ZXh0L3BsYWluJylcbiNlbmRcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiA9ICcqJylcbiNpZiAoXCIkIWlucHV0Um9vdC5maWxlTmFtZVwiICE9IFwiXCIpXG4jc2V0ICgkZGlzcG9zaXRpb24gPSAnYXR0YWNobWVudDsgZmlsZW5hbWU9XCJGTlwiJylcbiNzZXQgKCRjb250ZXh0LnJlc3BvbnNlT3ZlcnJpZGUuaGVhZGVyLkNvbnRlbnQtRGlzcG9zaXRpb24gPSAkZGlzcG9zaXRpb24ucmVwbGFjZUFsbCgnRk4nLCAkaW5wdXRSb290LmZpbGVOYW1lKSlcbiNlbmRcbmA7XG5cbmNvbnN0IEJPRFlfRlJPTV9JTlBVVF9QQVRIID0gXCIkaW5wdXQucGF0aCgnJCcpLmJvZHlcIjtcblxuLy8gREVQUkVDQVRFRFxuY29uc3QgbWVzc2FnZVNjaGVtYTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hID0ge1xuICAgIHNjaGVtYTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVmVyc2lvbi5EUkFGVDQsXG4gICAgdHlwZTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVHlwZS5PQkpFQ1QsXG4gICAgZGVzY3JpcHRpb246ICdSZXNwb25zZSB3aXRoIG1lc3NhZ2UnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogYXBpZ2F0ZXdheS5Kc29uU2NoZW1hVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Jlc3BvbnNlIG1lc3NhZ2UnLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG4vLyBERVBSRUNBVEVEXG5leHBvcnQgY29uc3QgTWVzc2FnZU1vZGVsID0ge1xuICAgIGNvbnRlbnRUeXBlOiBNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTixcbiAgICBtb2RlbE5hbWU6ICdNZXNzYWdlUmVzcG9uc2VNb2RlbCcsXG4gICAgc2NoZW1hOiBtZXNzYWdlU2NoZW1hLFxufTtcblxuY29uc3QgTm90Rm91bmRNZXNzYWdlID0gJ05vdCBmb3VuZCc7XG5leHBvcnQgY29uc3QgTm90Rm91bmRSZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KHttZXNzYWdlOiBOb3RGb3VuZE1lc3NhZ2V9KTtcblxuY29uc3QgSW50ZXJuYWxTZXJ2ZXJFcnJvck1lc3NhZ2UgPSAnRXJyb3InO1xuY29uc3QgSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlID0gSlNPTi5zdHJpbmdpZnkoe21lc3NhZ2U6IEludGVybmFsU2VydmVyRXJyb3JNZXNzYWdlfSk7XG5cbmNvbnN0IEJhZFJlcXVlc3RNZXNzYWdlID0gJ0JhZCByZXF1ZXN0JztcbmNvbnN0IEJhZFJlcXVlc3RSZXNwb25zZSA9IEpTT04uc3RyaW5naWZ5KHttZXNzYWdlOiBCYWRSZXF1ZXN0TWVzc2FnZX0pO1xuXG5leHBvcnQgY29uc3QgQmFkUmVxdWVzdFJlc3BvbnNlVGVtcGxhdGUgPSBjcmVhdGVSZXNwb25zZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04sIEJhZFJlcXVlc3RSZXNwb25zZSk7XG5leHBvcnQgY29uc3QgTm90Rm91bmRSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OLCBOb3RGb3VuZFJlc3BvbnNlKTtcbmV4cG9ydCBjb25zdCBYbWxSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5BUFBMSUNBVElPTl9YTUwsIEJPRFlfRlJPTV9JTlBVVF9QQVRIKTtcbmV4cG9ydCBjb25zdCBTdmdSZXNwb25zZVRlbXBsYXRlID0gY3JlYXRlUmVzcG9uc2VzKE1lZGlhVHlwZS5JTUFHRV9TVkcsIEJPRFlfRlJPTV9JTlBVVF9QQVRIKTtcbmV4cG9ydCBjb25zdCBJbnRlcm5hbFNlcnZlckVycm9yUmVzcG9uc2VUZW1wbGF0ZSA9IGNyZWF0ZVJlc3BvbnNlcyhNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTiwgSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlczxUPihrZXk6IE1lZGlhVHlwZSwgdmFsdWU6IFQpOiBSZWNvcmQ8c3RyaW5nLCBUPiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBUPiA9IHt9O1xuXG4gICAgbWFwW2tleV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiBtYXA7XG59XG4iXX0=
|
@@ -0,0 +1,79 @@
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9hcGkvcmVzcG9uc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUlvQjtBQUNwQiwrREFBdUg7QUFHdkgsK0NBQXlGO0FBRzVFLFFBQUEsZUFBZSxHQUF3QjtJQUNoRCxVQUFVLEVBQUUsS0FBSztDQUNwQixDQUFDO0FBRVcsUUFBQSx3QkFBd0IsR0FBd0I7SUFDekQsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsNEJBQW1CO0lBQ3JDLGlCQUFpQixFQUFFLHFDQUEwQjtDQUNoRCxDQUFDO0FBRVcsUUFBQSx5QkFBeUIsR0FBd0I7SUFDMUQsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsc0JBQWE7SUFDL0IsaUJBQWlCLEVBQUUsOENBQW1DO0NBQ3pELENBQUM7QUFFRixNQUFNLFlBQVksR0FBRztJQUNqQixpQkFBaUIsRUFBRSw4QkFBbUI7Q0FDekMsQ0FBQztBQUVXLFFBQUEseUJBQXlCLEdBQUc7SUFDckMsa0JBQWtCLEVBQUU7UUFDaEIsb0RBQW9ELEVBQUUsS0FBSztLQUM5RDtDQUNKLENBQUM7QUFFVyxRQUFBLHNCQUFzQixHQUFHO0lBQ2xDLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGdCQUFnQixFQUFFLDBCQUFpQjtJQUNuQyxpQkFBaUIsRUFBRSxtQ0FBd0I7Q0FDOUMsQ0FBQztBQUVGLFNBQWdCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsV0FBc0IsRUFBRSxLQUFhLEVBQUUsVUFBb0M7SUFDdEgsT0FBUTtRQUNKLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLGNBQWMsRUFBRSxJQUFBLDBCQUFlLEVBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztRQUNuRCxrQkFBa0IsRUFBRSxVQUFVLElBQUksRUFBRTtLQUN2QyxDQUFDO0FBRU4sQ0FBQztBQVBELHdDQU9DO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXdCO0lBQy9DLE9BQU8sRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHO1lBQ3BCLGtCQUFrQixFQUFFO2dCQUNoQixvREFBb0QsRUFBRSxJQUFJO2FBQzdEO1NBQ0osRUFBQyxDQUFDO0FBQ1AsQ0FBQztBQU5ELGdDQU1DO0FBV0Q7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLGNBQXdCLEVBQ3ZELE9BQTRCO0lBQzVCLE9BQU8sSUFBSSxrQ0FBaUIsQ0FBQyxjQUFjLEVBQUU7UUFDekMsS0FBSyxFQUFFLEtBQUs7UUFDWixvQkFBb0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJO1lBQ3hDLFdBQVcsQ0FBQyx1QkFBZSxFQUFFLE9BQU8sQ0FBQztZQUNyQyxXQUFXLENBQUMsZ0NBQXdCLEVBQUUsT0FBTyxDQUFDO1lBQzlDLFdBQVcsQ0FBQyw4QkFBc0IsRUFBRSxPQUFPLENBQUM7WUFDNUMsV0FBVyxDQUFDLGlDQUF5QixFQUFFLE9BQU8sQ0FBQztTQUNsRDtRQUNELGlCQUFpQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxFQUFFO1FBQ25ELGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxFQUFFO1FBQ2pELG1CQUFtQixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQ0FBbUIsQ0FBQyxhQUFhO0tBQ3pGLENBQUMsQ0FBQztBQUNQLENBQUM7QUFkRCxnREFjQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxRQUE2QixFQUFFLE9BQTRCO0lBQ25GLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNkLFFBQVEsR0FBRyxFQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsWUFBWSxFQUFDLENBQUM7S0FDN0M7SUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTtRQUN2QixRQUFRLEdBQUcsRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLGlDQUF5QixFQUFDLENBQUM7S0FDMUQ7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlVGVtcGxhdGUsXHJcbiAgICBjcmVhdGVSZXNwb25zZXMsXHJcbiAgICBYbWxSZXNwb25zZVRlbXBsYXRlLCBOb3RGb3VuZFJlc3BvbnNlVGVtcGxhdGUsIEJhZFJlcXVlc3RSZXNwb25zZVRlbXBsYXRlLFxyXG59IGZyb20gXCIuL3Jlc3BvbnNlXCI7XHJcbmltcG9ydCB7TGFtYmRhSW50ZWdyYXRpb24sIE1ldGhvZFJlc3BvbnNlLCBJbnRlZ3JhdGlvblJlc3BvbnNlLCBQYXNzdGhyb3VnaEJlaGF2aW9yfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcclxuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XHJcbmltcG9ydCB7SU1vZGVsfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXkvbGliL21vZGVsXCI7XHJcbmltcG9ydCB7QkFEX1JFUVVFU1RfTUVTU0FHRSwgRVJST1JfTUVTU0FHRSwgTk9UX0ZPVU5EX01FU1NBR0V9IGZyb20gXCIuLi8uLi90eXBlcy9lcnJvcnNcIjtcclxuaW1wb3J0IHtNZWRpYVR5cGV9IGZyb20gXCIuLi8uLi90eXBlcy9tZWRpYXR5cGVzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgUkVTUE9OU0VfMjAwX09LOiBJbnRlZ3JhdGlvblJlc3BvbnNlID0ge1xyXG4gICAgc3RhdHVzQ29kZTogJzIwMCcsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgUkVTUE9OU0VfNDAwX0JBRF9SRVFVRVNUOiBJbnRlZ3JhdGlvblJlc3BvbnNlID0ge1xyXG4gICAgc3RhdHVzQ29kZTogJzQwMCcsXHJcbiAgICBzZWxlY3Rpb25QYXR0ZXJuOiBCQURfUkVRVUVTVF9NRVNTQUdFLFxyXG4gICAgcmVzcG9uc2VUZW1wbGF0ZXM6IEJhZFJlcXVlc3RSZXNwb25zZVRlbXBsYXRlLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFU1BPTlNFXzUwMF9TRVJWRVJfRVJST1I6IEludGVncmF0aW9uUmVzcG9uc2UgPSB7XHJcbiAgICBzdGF0dXNDb2RlOiAnNTAwJyxcclxuICAgIHNlbGVjdGlvblBhdHRlcm46IEVSUk9SX01FU1NBR0UsXHJcbiAgICByZXNwb25zZVRlbXBsYXRlczogSW50ZXJuYWxTZXJ2ZXJFcnJvclJlc3BvbnNlVGVtcGxhdGUsXHJcbn07XHJcblxyXG5jb25zdCBSRVNQT05TRV9YTUwgPSB7XHJcbiAgICByZXNwb25zZVRlbXBsYXRlczogWG1sUmVzcG9uc2VUZW1wbGF0ZSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBSRVNQT05TRV9DT1JTX0lOVEVHUkFUSU9OID0ge1xyXG4gICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgJ21ldGhvZC5yZXNwb25zZS5oZWFkZXIuQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogXCInKidcIixcclxuICAgIH0sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgUkVTUE9OU0VfNDA0X05PVF9GT1VORCA9IHtcclxuICAgIHN0YXR1c0NvZGU6ICc0MDQnLFxyXG4gICAgc2VsZWN0aW9uUGF0dGVybjogTk9UX0ZPVU5EX01FU1NBR0UsXHJcbiAgICByZXNwb25zZVRlbXBsYXRlczogTm90Rm91bmRSZXNwb25zZVRlbXBsYXRlLFxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1ldGhvZFJlc3BvbnNlKHN0YXR1czogc3RyaW5nLCBjb250ZW50VHlwZTogTWVkaWFUeXBlLCBtb2RlbDogSU1vZGVsLCBwYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pOiBNZXRob2RSZXNwb25zZSB7XHJcbiAgICByZXR1cm4gIHtcclxuICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXHJcbiAgICAgICAgcmVzcG9uc2VNb2RlbHM6IGNyZWF0ZVJlc3BvbnNlcyhjb250ZW50VHlwZSwgbW9kZWwpLFxyXG4gICAgICAgIHJlc3BvbnNlUGFyYW1ldGVyczogcGFyYW1ldGVycyB8fCB7fSxcclxuICAgIH07XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29yc01ldGhvZChyZXNwb25zZTogTWV0aG9kUmVzcG9uc2UpOiBNZXRob2RSZXNwb25zZSB7XHJcbiAgICByZXR1cm4gey4uLnJlc3BvbnNlLCAuLi57XHJcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgICAgICdtZXRob2QucmVzcG9uc2UuaGVhZGVyLkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIH19O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSW50ZWdyYXRpb25PcHRpb25zIHtcclxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzPzoge1tkZXN0OiBzdHJpbmddOiBzdHJpbmd9XHJcbiAgICByZXF1ZXN0VGVtcGxhdGVzPzoge1tjb250ZW50VHlwZTogc3RyaW5nXTogc3RyaW5nfSxcclxuICAgIHJlc3BvbnNlcz86IEludGVncmF0aW9uUmVzcG9uc2VbXSxcclxuICAgIGRpc2FibGVDb3JzPzogYm9vbGVhbixcclxuICAgIHhtbD86IGJvb2xlYW4sXHJcbiAgICBwYXNzdGhyb3VnaEJlaGF2aW9yPzogUGFzc3Rocm91Z2hCZWhhdmlvclxyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGRlZmF1bHQgTGFtYmRhIGludGVncmF0aW9uIGZvciBhIFJFU1QgQVBJIHJlc291cmNlIF9yb290X1xyXG4gKiBAcGFyYW0gbGFtYmRhRnVuY3Rpb24gVGhlIExhbWJkYSBmdW5jdGlvblxyXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEludGVncmF0aW9uKGxhbWJkYUZ1bmN0aW9uOiBGdW5jdGlvbixcclxuICAgIG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnMpOiBMYW1iZGFJbnRlZ3JhdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IExhbWJkYUludGVncmF0aW9uKGxhbWJkYUZ1bmN0aW9uLCB7XHJcbiAgICAgICAgcHJveHk6IGZhbHNlLFxyXG4gICAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzOiBvcHRpb25zPy5yZXNwb25zZXMgfHwgW1xyXG4gICAgICAgICAgICBnZXRSZXNwb25zZShSRVNQT05TRV8yMDBfT0ssIG9wdGlvbnMpLFxyXG4gICAgICAgICAgICBnZXRSZXNwb25zZShSRVNQT05TRV80MDBfQkFEX1JFUVVFU1QsIG9wdGlvbnMpLFxyXG4gICAgICAgICAgICBnZXRSZXNwb25zZShSRVNQT05TRV80MDRfTk9UX0ZPVU5ELCBvcHRpb25zKSxcclxuICAgICAgICAgICAgZ2V0UmVzcG9uc2UoUkVTUE9OU0VfNTAwX1NFUlZFUl9FUlJPUiwgb3B0aW9ucyksXHJcbiAgICAgICAgXSxcclxuICAgICAgICByZXF1ZXN0UGFyYW1ldGVyczogb3B0aW9ucz8ucmVxdWVzdFBhcmFtZXRlcnMgfHwge30sXHJcbiAgICAgICAgcmVxdWVzdFRlbXBsYXRlczogb3B0aW9ucz8ucmVxdWVzdFRlbXBsYXRlcyB8fCB7fSxcclxuICAgICAgICBwYXNzdGhyb3VnaEJlaGF2aW9yOiBvcHRpb25zPy5wYXNzdGhyb3VnaEJlaGF2aW9yID8/IFBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19NQVRDSCxcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzcG9uc2UocmVzcG9uc2U6IEludGVncmF0aW9uUmVzcG9uc2UsIG9wdGlvbnM/OiBJbnRlZ3JhdGlvbk9wdGlvbnMpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcclxuICAgIGlmIChvcHRpb25zPy54bWwpIHtcclxuICAgICAgICByZXNwb25zZSA9IHsuLi5yZXNwb25zZSwgLi4uUkVTUE9OU0VfWE1MfTtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucz8uZGlzYWJsZUNvcnMpIHtcclxuICAgICAgICByZXNwb25zZSA9IHsuLi5yZXNwb25zZSwgLi4uUkVTUE9OU0VfQ09SU19JTlRFR1JBVElPTn07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcbiJdfQ==
|