@digitraffic/common 2024.1.10-1 → 2024.1.19-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/aws/infra/api/handler-factory.d.ts +2 -2
  2. package/dist/aws/infra/api/handler-factory.js +4 -9
  3. package/dist/aws/infra/api/integration.d.ts +1 -1
  4. package/dist/aws/infra/api/integration.js +9 -13
  5. package/dist/aws/infra/api/response.d.ts +2 -3
  6. package/dist/aws/infra/api/response.js +25 -30
  7. package/dist/aws/infra/api/responses.d.ts +2 -3
  8. package/dist/aws/infra/api/responses.js +25 -31
  9. package/dist/aws/infra/api/static-integration.d.ts +1 -1
  10. package/dist/aws/infra/api/static-integration.js +7 -11
  11. package/dist/aws/infra/canaries/canary-alarm.d.ts +1 -1
  12. package/dist/aws/infra/canaries/canary-alarm.js +7 -11
  13. package/dist/aws/infra/canaries/canary-keys.js +3 -6
  14. package/dist/aws/infra/canaries/canary-parameters.js +1 -2
  15. package/dist/aws/infra/canaries/canary-role.js +8 -12
  16. package/dist/aws/infra/canaries/canary.d.ts +2 -2
  17. package/dist/aws/infra/canaries/canary.js +9 -13
  18. package/dist/aws/infra/canaries/database-canary.d.ts +3 -3
  19. package/dist/aws/infra/canaries/database-canary.js +8 -12
  20. package/dist/aws/infra/canaries/database-checker.d.ts +1 -1
  21. package/dist/aws/infra/canaries/database-checker.js +10 -14
  22. package/dist/aws/infra/canaries/url-canary.d.ts +4 -4
  23. package/dist/aws/infra/canaries/url-canary.js +8 -12
  24. package/dist/aws/infra/canaries/url-checker.d.ts +2 -2
  25. package/dist/aws/infra/canaries/url-checker.js +33 -40
  26. package/dist/aws/infra/documentation.js +8 -16
  27. package/dist/aws/infra/import-util.js +10 -18
  28. package/dist/aws/infra/scheduler.js +10 -14
  29. package/dist/aws/infra/security-rule.js +4 -8
  30. package/dist/aws/infra/sqs-integration.d.ts +1 -2
  31. package/dist/aws/infra/sqs-integration.js +11 -15
  32. package/dist/aws/infra/sqs-queue.d.ts +1 -1
  33. package/dist/aws/infra/sqs-queue.js +30 -35
  34. package/dist/aws/infra/stack/lambda-configs.d.ts +2 -2
  35. package/dist/aws/infra/stack/lambda-configs.js +14 -20
  36. package/dist/aws/infra/stack/monitoredfunction.d.ts +3 -3
  37. package/dist/aws/infra/stack/monitoredfunction.js +19 -27
  38. package/dist/aws/infra/stack/parameters.d.ts +1 -1
  39. package/dist/aws/infra/stack/parameters.js +5 -10
  40. package/dist/aws/infra/stack/rest_apis.d.ts +3 -3
  41. package/dist/aws/infra/stack/rest_apis.js +41 -54
  42. package/dist/aws/infra/stack/stack-checking-aspect.d.ts +1 -1
  43. package/dist/aws/infra/stack/stack-checking-aspect.js +24 -31
  44. package/dist/aws/infra/stack/stack.d.ts +3 -4
  45. package/dist/aws/infra/stack/stack.js +16 -20
  46. package/dist/aws/infra/stack/subscription.d.ts +2 -2
  47. package/dist/aws/infra/stack/subscription.js +5 -10
  48. package/dist/aws/infra/stacks/db-dns-stack.d.ts +2 -2
  49. package/dist/aws/infra/stacks/db-dns-stack.js +25 -29
  50. package/dist/aws/infra/stacks/db-proxy-stack.d.ts +2 -2
  51. package/dist/aws/infra/stacks/db-proxy-stack.js +23 -27
  52. package/dist/aws/infra/stacks/db-stack.d.ts +3 -4
  53. package/dist/aws/infra/stacks/db-stack.js +30 -34
  54. package/dist/aws/infra/stacks/intra-stack-configuration.js +1 -2
  55. package/dist/aws/infra/stacks/network-stack.d.ts +2 -2
  56. package/dist/aws/infra/stacks/network-stack.js +14 -18
  57. package/dist/aws/infra/usage-plans.js +2 -7
  58. package/dist/aws/runtime/apikey.js +3 -7
  59. package/dist/aws/runtime/digitraffic-integration-response.d.ts +1 -1
  60. package/dist/aws/runtime/digitraffic-integration-response.js +7 -11
  61. package/dist/aws/runtime/dt-logger-default.d.ts +2 -2
  62. package/dist/aws/runtime/dt-logger-default.js +2 -5
  63. package/dist/aws/runtime/dt-logger.d.ts +1 -1
  64. package/dist/aws/runtime/dt-logger.js +3 -10
  65. package/dist/aws/runtime/environment.js +3 -7
  66. package/dist/aws/runtime/messaging.js +1 -5
  67. package/dist/aws/runtime/s3.js +3 -7
  68. package/dist/aws/runtime/secrets/dbsecret.d.ts +1 -1
  69. package/dist/aws/runtime/secrets/dbsecret.js +5 -9
  70. package/dist/aws/runtime/secrets/proxy-holder.js +12 -16
  71. package/dist/aws/runtime/secrets/rds-holder.js +12 -16
  72. package/dist/aws/runtime/secrets/secret-holder.d.ts +1 -1
  73. package/dist/aws/runtime/secrets/secret-holder.js +9 -13
  74. package/dist/aws/runtime/secrets/secret.js +7 -11
  75. package/dist/aws/types/errors.js +5 -9
  76. package/dist/aws/types/lambda-response.js +3 -10
  77. package/dist/aws/types/mediatypes.js +2 -5
  78. package/dist/aws/types/model-with-reference.js +1 -2
  79. package/dist/aws/types/proxytypes.js +1 -2
  80. package/dist/aws/types/tags.js +2 -5
  81. package/dist/database/cached.d.ts +1 -1
  82. package/dist/database/cached.js +8 -14
  83. package/dist/database/database.js +14 -21
  84. package/dist/database/last-updated.d.ts +1 -1
  85. package/dist/database/last-updated.js +8 -17
  86. package/dist/database/models.js +1 -2
  87. package/dist/index.d.ts +1 -0
  88. package/dist/index.js +2 -0
  89. package/dist/marine/id_utils.js +3 -9
  90. package/dist/marine/rtz.js +1 -2
  91. package/dist/test/asserter.js +1 -5
  92. package/dist/test/db-testutils.d.ts +1 -1
  93. package/dist/test/db-testutils.js +8 -13
  94. package/dist/test/httpserver.js +10 -14
  95. package/dist/test/secrets-manager.js +9 -35
  96. package/dist/test/testutils.js +8 -19
  97. package/dist/types/async-timeout-error.js +1 -5
  98. package/dist/types/aws-env.js +1 -2
  99. package/dist/types/either.js +1 -2
  100. package/dist/types/http-error.js +1 -5
  101. package/dist/types/input-error.js +1 -5
  102. package/dist/types/language.js +2 -5
  103. package/dist/types/nullable.d.ts +1 -1
  104. package/dist/types/nullable.js +1 -2
  105. package/dist/types/traffictype.js +2 -5
  106. package/dist/types/urn.js +1 -2
  107. package/dist/types/util-types.js +1 -2
  108. package/dist/types/validator.js +4 -9
  109. package/dist/utils/api-model.d.ts +1 -1
  110. package/dist/utils/api-model.js +17 -27
  111. package/dist/utils/base64.d.ts +1 -1
  112. package/dist/utils/base64.js +2 -7
  113. package/dist/utils/date-utils.js +9 -16
  114. package/dist/utils/geojson-types.js +2 -7
  115. package/dist/utils/geometry.js +15 -48
  116. package/dist/utils/logging.d.ts +1 -1
  117. package/dist/utils/logging.js +8 -13
  118. package/dist/utils/retry.js +21 -26
  119. package/dist/utils/slack.js +7 -14
  120. package/dist/utils/utils.d.ts +2 -2
  121. package/dist/utils/utils.js +14 -29
  122. package/package.json +107 -18
  123. package/src/aws/infra/api/handler-factory.ts +3 -3
  124. package/src/aws/infra/api/integration.ts +2 -2
  125. package/src/aws/infra/api/response.ts +3 -3
  126. package/src/aws/infra/api/responses.ts +4 -4
  127. package/src/aws/infra/api/static-integration.ts +2 -2
  128. package/src/aws/infra/canaries/canary-alarm.ts +1 -1
  129. package/src/aws/infra/canaries/canary.ts +3 -3
  130. package/src/aws/infra/canaries/database-canary.ts +3 -3
  131. package/src/aws/infra/canaries/database-checker.ts +6 -6
  132. package/src/aws/infra/canaries/url-canary.ts +6 -6
  133. package/src/aws/infra/canaries/url-checker.ts +8 -8
  134. package/src/aws/infra/sqs-integration.ts +1 -1
  135. package/src/aws/infra/sqs-queue.ts +2 -2
  136. package/src/aws/infra/stack/lambda-configs.ts +2 -2
  137. package/src/aws/infra/stack/monitoredfunction.ts +4 -4
  138. package/src/aws/infra/stack/parameters.ts +1 -1
  139. package/src/aws/infra/stack/rest_apis.ts +6 -6
  140. package/src/aws/infra/stack/stack-checking-aspect.ts +1 -1
  141. package/src/aws/infra/stack/stack.ts +4 -5
  142. package/src/aws/infra/stack/subscription.ts +2 -2
  143. package/src/aws/infra/stacks/db-dns-stack.ts +4 -4
  144. package/src/aws/infra/stacks/db-proxy-stack.ts +5 -5
  145. package/src/aws/infra/stacks/db-stack.ts +5 -5
  146. package/src/aws/infra/stacks/network-stack.ts +3 -3
  147. package/src/aws/runtime/digitraffic-integration-response.ts +2 -2
  148. package/src/aws/runtime/dt-logger-default.ts +2 -2
  149. package/src/aws/runtime/secrets/dbsecret.ts +1 -1
  150. package/src/aws/runtime/secrets/proxy-holder.ts +4 -4
  151. package/src/aws/runtime/secrets/rds-holder.ts +4 -4
  152. package/src/aws/runtime/secrets/secret-holder.ts +4 -4
  153. package/src/aws/runtime/secrets/secret.ts +2 -2
  154. package/src/database/cached.ts +1 -1
  155. package/src/database/database.ts +3 -3
  156. package/src/database/last-updated.ts +1 -1
  157. package/src/index.ts +2 -0
  158. package/src/test/db-testutils.ts +2 -2
  159. package/src/test/secrets-manager.ts +2 -2
  160. package/src/types/nullable.ts +1 -1
  161. package/src/utils/api-model.ts +1 -1
  162. package/src/utils/geometry.ts +5 -3
  163. package/src/utils/logging.ts +2 -2
  164. package/src/utils/retry.ts +3 -3
  165. package/src/utils/slack.ts +2 -2
  166. package/src/utils/utils.ts +3 -3
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SecretHolder = void 0;
4
- const secret_1 = require("./secret");
5
- const dbsecret_1 = require("./dbsecret");
6
- const utils_1 = require("../../../utils/utils");
7
- const dt_logger_default_1 = require("../dt-logger-default");
1
+ import { getSecret } from "./secret.js";
2
+ import { checkExpectedSecretKeys } from "./dbsecret.js";
3
+ import { getEnvVariable } from "../../../utils/utils.js";
4
+ import { logger } from "../dt-logger-default.js";
8
5
  // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment
9
6
  const NodeTtl = require("node-ttl");
10
7
  const DEFAULT_PREFIX = "";
@@ -24,7 +21,7 @@ const DEFAULT_CONFIGURATION = {
24
21
  * setting the region with utils setSecretOverideAwsRegionEnv method.
25
22
  *
26
23
  */
27
- class SecretHolder {
24
+ export class SecretHolder {
28
25
  constructor(secretId, prefix = "", expectedKeys = [], configuration = DEFAULT_CONFIGURATION) {
29
26
  this.secretId = secretId;
30
27
  this.prefix = prefix;
@@ -33,8 +30,8 @@ class SecretHolder {
33
30
  this.secretCache = new NodeTtl(configuration);
34
31
  }
35
32
  async initSecret() {
36
- const secretValue = await (0, secret_1.getSecret)(this.secretId);
37
- dt_logger_default_1.logger.info({
33
+ const secretValue = await getSecret(this.secretId);
34
+ logger.info({
38
35
  method: "SecretHolder.initSecret",
39
36
  message: "Refreshing secret " + this.secretId,
40
37
  });
@@ -42,7 +39,7 @@ class SecretHolder {
42
39
  this.secretCache.push(DEFAULT_SECRET_KEY, secretValue);
43
40
  }
44
41
  static create(prefix = DEFAULT_PREFIX, expectedKeys = []) {
45
- return new SecretHolder((0, utils_1.getEnvVariable)("SECRET_ID"), prefix, expectedKeys);
42
+ return new SecretHolder(getEnvVariable("SECRET_ID"), prefix, expectedKeys);
46
43
  }
47
44
  async get() {
48
45
  const secret = await this.getSecret();
@@ -50,7 +47,7 @@ class SecretHolder {
50
47
  ? secret
51
48
  : this.parseSecret(secret, `${this.prefix}.`);
52
49
  if (this.expectedKeys.length > 0) {
53
- (0, dbsecret_1.checkExpectedSecretKeys)(this.expectedKeys, parsedSecret);
50
+ checkExpectedSecretKeys(this.expectedKeys, parsedSecret);
54
51
  }
55
52
  return parsedSecret;
56
53
  }
@@ -74,5 +71,4 @@ class SecretHolder {
74
71
  return secret ?? this.secretCache.get(DEFAULT_SECRET_KEY);
75
72
  }
76
73
  }
77
- exports.SecretHolder = SecretHolder;
78
74
  //# sourceMappingURL=secret-holder.js.map
@@ -1,22 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSecret = void 0;
4
- const aws_sdk_1 = require("aws-sdk");
5
- const utils_1 = require("../../../utils/utils");
6
- const environment_1 = require("../environment");
1
+ import { SecretsManager } from "aws-sdk";
2
+ import { getEnvVariable, getEnvVariableOrElse } from "../../../utils/utils.js";
3
+ import { EnvKeys } from "../environment.js";
7
4
  // SECRET_OVERRIDE_AWS_REGION might not have been set before import of
8
5
  // secret, so we need to lazy initialize SecretsManager
9
6
  let smClient;
10
7
  function getSmClient() {
11
8
  if (!smClient) {
12
- smClient = new aws_sdk_1.SecretsManager({
13
- region: (0, utils_1.getEnvVariableOrElse)(environment_1.EnvKeys.SECRET_OVERRIDE_AWS_REGION, // this is override secret region
14
- (0, utils_1.getEnvVariable)(environment_1.EnvKeys.AWS_REGION)),
9
+ smClient = new SecretsManager({
10
+ region: getEnvVariableOrElse(EnvKeys.SECRET_OVERRIDE_AWS_REGION, // this is override secret region
11
+ getEnvVariable(EnvKeys.AWS_REGION)),
15
12
  });
16
13
  }
17
14
  return smClient;
18
15
  }
19
- async function getSecret(secretId, prefix = "") {
16
+ export async function getSecret(secretId, prefix = "") {
20
17
  const secretObj = await getSmClient()
21
18
  .getSecretValue({
22
19
  SecretId: secretId,
@@ -31,7 +28,6 @@ async function getSecret(secretId, prefix = "") {
31
28
  }
32
29
  return parseSecret(secret, `${prefix}.`);
33
30
  }
34
- exports.getSecret = getSecret;
35
31
  function parseSecret(secret, prefix) {
36
32
  const parsed = {};
37
33
  const skip = prefix.length;
@@ -1,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidationError = exports.BAD_REQUEST_MESSAGE = exports.OK_MESSAGE = exports.ERROR_MESSAGE = exports.NOT_FOUND_MESSAGE = void 0;
4
1
  // DEPRECATED, remove these!
5
- exports.NOT_FOUND_MESSAGE = "NOT_FOUND";
6
- exports.ERROR_MESSAGE = "ERROR";
7
- exports.OK_MESSAGE = "OK";
8
- exports.BAD_REQUEST_MESSAGE = "BAD REQUEST";
9
- class ValidationError extends Error {
2
+ export const NOT_FOUND_MESSAGE = "NOT_FOUND";
3
+ export const ERROR_MESSAGE = "ERROR";
4
+ export const OK_MESSAGE = "OK";
5
+ export const BAD_REQUEST_MESSAGE = "BAD REQUEST";
6
+ export class ValidationError extends Error {
10
7
  constructor(statusCode, body) {
11
8
  super(body);
12
9
  this.statusCode = statusCode;
13
10
  }
14
11
  }
15
- exports.ValidationError = ValidationError;
16
12
  //# sourceMappingURL=errors.js.map
@@ -1,17 +1,11 @@
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.LambdaResponse = void 0;
7
- const etag_1 = __importDefault(require("etag"));
8
- class LambdaResponse {
1
+ import etag from "etag";
2
+ export class LambdaResponse {
9
3
  constructor(status, body, fileName, timestamp) {
10
4
  this.status = status;
11
5
  this.body = body;
12
6
  this.fileName = fileName;
13
7
  this.timestamp = timestamp?.toUTCString();
14
- this.etag = (0, etag_1.default)(body); // create strong etag by default
8
+ this.etag = etag(body); // create strong etag by default
15
9
  }
16
10
  withTimestamp(timestamp) {
17
11
  return new LambdaResponse(this.status, this.body, this.fileName, timestamp);
@@ -65,7 +59,6 @@ class LambdaResponse {
65
59
  return new LambdaResponse(status, base64Body, fileName);
66
60
  }
67
61
  }
68
- exports.LambdaResponse = LambdaResponse;
69
62
  function toBase64(body) {
70
63
  return Buffer.from(body).toString("base64");
71
64
  }
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MediaType = void 0;
4
1
  // charset=UTF-8 is deprecated but mobile applications sometimes needs it
5
- var MediaType;
2
+ export var MediaType;
6
3
  (function (MediaType) {
7
4
  MediaType["APPLICATION_JSON"] = "application/json";
8
5
  MediaType["APPLICATION_XML"] = "application/xml";
@@ -13,5 +10,5 @@ var MediaType;
13
10
  MediaType["TEXT_HTML"] = "text/html";
14
11
  MediaType["TEXT_CSV"] = "text/csv";
15
12
  MediaType["APPLICATION_JSON_UTF8"] = "application/json;charset=UTF-8";
16
- })(MediaType || (exports.MediaType = MediaType = {}));
13
+ })(MediaType || (MediaType = {}));
17
14
  //# sourceMappingURL=mediatypes.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=model-with-reference.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=proxytypes.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DATA_V1_TAGS = exports.BETA_TAGS = void 0;
4
1
  // DEPRECATED! This must be replaced with new application specific tags
5
- exports.BETA_TAGS = ['Beta'];
6
- exports.DATA_V1_TAGS = ['Data v1'];
2
+ export const BETA_TAGS = ['Beta'];
3
+ export const DATA_V1_TAGS = ['Data v1'];
7
4
  //# sourceMappingURL=tags.js.map
@@ -1,4 +1,4 @@
1
- import { DTDatabase, DTTransaction } from "./database";
1
+ import { DTDatabase, DTTransaction } from "./database.js";
2
2
  export interface CachedValue<T> {
3
3
  content: T;
4
4
  last_updated: Date;
@@ -1,23 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFromCache = exports.getJsonFromCache = exports.updateCachedJson = exports.JSON_CACHE_KEY = void 0;
4
- const pg_promise_1 = require("pg-promise");
5
- const PS_UPDATE_CACHE_VALUE = new pg_promise_1.PreparedStatement({
1
+ import { PreparedStatement } from "pg-promise";
2
+ const PS_UPDATE_CACHE_VALUE = new PreparedStatement({
6
3
  name: "update-cache-value",
7
4
  text: `insert into cached_json(cache_id, content, last_updated)
8
5
  values ($1, $2, $3)
9
6
  on conflict(cache_id) do
10
7
  update set content = $2, last_updated = $3`,
11
8
  });
12
- const PS_GET_CACHE_VALUE = new pg_promise_1.PreparedStatement({
9
+ const PS_GET_CACHE_VALUE = new PreparedStatement({
13
10
  name: "get-cache-value",
14
11
  text: "select content, last_updated, modified from cached_json where cache_id = $1",
15
12
  });
16
- var JSON_CACHE_KEY;
13
+ export var JSON_CACHE_KEY;
17
14
  (function (JSON_CACHE_KEY) {
18
15
  JSON_CACHE_KEY["NAUTICAL_WARNINGS_ACTIVE"] = "nautical-warnings-active";
19
16
  JSON_CACHE_KEY["NAUTICAL_WARNINGS_ARCHIVED"] = "nautical-warnings-archived";
20
- })(JSON_CACHE_KEY || (exports.JSON_CACHE_KEY = JSON_CACHE_KEY = {}));
17
+ })(JSON_CACHE_KEY || (JSON_CACHE_KEY = {}));
21
18
  /**
22
19
  *
23
20
  * @param db
@@ -25,22 +22,19 @@ var JSON_CACHE_KEY;
25
22
  * @param value
26
23
  * @param lastUpdated time when data was created or updated
27
24
  */
28
- async function updateCachedJson(db, cacheKey, value, lastUpdated) {
25
+ export async function updateCachedJson(db, cacheKey, value, lastUpdated) {
29
26
  await db.none(PS_UPDATE_CACHE_VALUE, [cacheKey, value, lastUpdated]);
30
27
  }
31
- exports.updateCachedJson = updateCachedJson;
32
- function getJsonFromCache(db, cacheKey) {
28
+ export function getJsonFromCache(db, cacheKey) {
33
29
  return db
34
30
  .oneOrNone(PS_GET_CACHE_VALUE, [cacheKey])
35
31
  .then((value) => value?.content ?? undefined);
36
32
  }
37
- exports.getJsonFromCache = getJsonFromCache;
38
- async function getFromCache(db, cacheKey) {
33
+ export async function getFromCache(db, cacheKey) {
39
34
  return db
40
35
  .oneOrNone(PS_GET_CACHE_VALUE, [cacheKey])
41
36
  .then((result) => {
42
37
  return result ?? undefined;
43
38
  });
44
39
  }
45
- exports.getFromCache = getFromCache;
46
40
  //# sourceMappingURL=cached.js.map
@@ -1,17 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inDatabaseReadonly = exports.inDatabase = exports.inTransaction = exports.initDbConnection = exports.DatabaseEnvironmentKeys = void 0;
4
- const utils_1 = require("../utils/utils");
5
- const dt_logger_default_1 = require("../aws/runtime/dt-logger-default");
6
- const logging_1 = require("../utils/logging");
7
- var DatabaseEnvironmentKeys;
1
+ import { getEnvVariable, getEnvVariableOrElse } from "../utils/utils.js";
2
+ import { logger } from "../aws/runtime/dt-logger-default.js";
3
+ import { logException } from "../utils/logging.js";
4
+ export var DatabaseEnvironmentKeys;
8
5
  (function (DatabaseEnvironmentKeys) {
9
6
  DatabaseEnvironmentKeys["DB_USER"] = "DB_USER";
10
7
  DatabaseEnvironmentKeys["DB_PASS"] = "DB_PASS";
11
8
  DatabaseEnvironmentKeys["DB_URI"] = "DB_URI";
12
9
  DatabaseEnvironmentKeys["DB_RO_URI"] = "DB_RO_URI";
13
10
  DatabaseEnvironmentKeys["DB_APPLICATION"] = "DB_APPLICATION";
14
- })(DatabaseEnvironmentKeys || (exports.DatabaseEnvironmentKeys = DatabaseEnvironmentKeys = {}));
11
+ })(DatabaseEnvironmentKeys || (DatabaseEnvironmentKeys = {}));
15
12
  // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
16
13
  const pgp = require("pg-promise")();
17
14
  // convert numeric types to number instead of string
@@ -39,30 +36,26 @@ pgp.pg.types.setTypeParser(pgp.pg.types.builtins.NUMERIC, (value) => {
39
36
  * @param url Connection URL
40
37
  * @param options pg-promise options
41
38
  */
42
- function initDbConnection(username, password, applicationName, url, options) {
39
+ export function initDbConnection(username, password, applicationName, url, options) {
43
40
  const finalUrl = `postgresql://${username}:${password}@${url}?application_name=${applicationName}`;
44
41
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
45
42
  return pgp(finalUrl, options);
46
43
  }
47
- exports.initDbConnection = initDbConnection;
48
- function inTransaction(fn) {
44
+ export function inTransaction(fn) {
49
45
  return inDatabase((db) => db.tx((t) => fn(t)));
50
46
  }
51
- exports.inTransaction = inTransaction;
52
- function inDatabase(fn) {
47
+ export function inDatabase(fn) {
53
48
  return doInDatabase(false, fn);
54
49
  }
55
- exports.inDatabase = inDatabase;
56
- function inDatabaseReadonly(fn) {
50
+ export function inDatabaseReadonly(fn) {
57
51
  return doInDatabase(true, fn);
58
52
  }
59
- exports.inDatabaseReadonly = inDatabaseReadonly;
60
53
  async function doInDatabase(readonly, fn) {
61
- const db_application = (0, utils_1.getEnvVariableOrElse)(DatabaseEnvironmentKeys.DB_APPLICATION, "unknown-cdk-application");
54
+ const db_application = getEnvVariableOrElse(DatabaseEnvironmentKeys.DB_APPLICATION, "unknown-cdk-application");
62
55
  const db_uri = readonly
63
- ? (0, utils_1.getEnvVariable)(DatabaseEnvironmentKeys.DB_RO_URI)
64
- : (0, utils_1.getEnvVariable)(DatabaseEnvironmentKeys.DB_URI);
65
- const db = initDbConnection((0, utils_1.getEnvVariable)(DatabaseEnvironmentKeys.DB_USER), (0, utils_1.getEnvVariable)(DatabaseEnvironmentKeys.DB_PASS), db_application, db_uri);
56
+ ? getEnvVariable(DatabaseEnvironmentKeys.DB_RO_URI)
57
+ : getEnvVariable(DatabaseEnvironmentKeys.DB_URI);
58
+ const db = initDbConnection(getEnvVariable(DatabaseEnvironmentKeys.DB_USER), getEnvVariable(DatabaseEnvironmentKeys.DB_PASS), db_application, db_uri);
66
59
  try {
67
60
  // deallocate all prepared statements to allow for connection pooling
68
61
  // DISCARD instead of DEALLOCATE as it didn't always clean all prepared statements
@@ -70,7 +63,7 @@ async function doInDatabase(readonly, fn) {
70
63
  return await fn(db);
71
64
  }
72
65
  catch (e) {
73
- (0, logging_1.logException)(dt_logger_default_1.logger, e);
66
+ logException(logger, e);
74
67
  throw e;
75
68
  }
76
69
  finally {
@@ -1,4 +1,4 @@
1
- import { DTDatabase, DTTransaction } from "./database";
1
+ import { DTDatabase, DTTransaction } from "./database.js";
2
2
  export declare enum DataType {
3
3
  VS_DATEX2 = "VS_DATEX2",
4
4
  COUNTING_SITES_DATA = "COUNTING_SITES_DATA",
@@ -1,7 +1,4 @@
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;
1
+ export var DataType;
5
2
  (function (DataType) {
6
3
  DataType["VS_DATEX2"] = "VS_DATEX2";
7
4
  DataType["COUNTING_SITES_DATA"] = "COUNTING_SITES_DATA";
@@ -10,47 +7,41 @@ var DataType;
10
7
  DataType["MAINTENANCE_TRACKING_DATA_CHECKED"] = "MAINTENANCE_TRACKING_DATA_CHECKED";
11
8
  DataType["PERMIT_DATA"] = "PERMIT_DATA";
12
9
  DataType["PERMIT_DATA_CHECK"] = "PERMIT_DATA_CHECK";
13
- })(DataType || (exports.DataType = DataType = {}));
10
+ })(DataType || (DataType = {}));
14
11
  const UNSET_SUBTYPE = "-";
15
- function getLastUpdated(db, datatype) {
12
+ export function getLastUpdated(db, datatype) {
16
13
  return db.oneOrNone("select updated from data_updated where data_type=$(datatype) and subtype=$(subtype)", {
17
14
  datatype: datatype,
18
15
  subtype: UNSET_SUBTYPE,
19
16
  }, (x) => x?.updated ?? null);
20
17
  }
21
- exports.getLastUpdated = getLastUpdated;
22
- function getLastUpdatedWithSubtype(db, datatype, subtype) {
18
+ export function getLastUpdatedWithSubtype(db, datatype, subtype) {
23
19
  return db.oneOrNone("SELECT updated FROM data_updated WHERE data_type=$(datatype) AND subtype=$(subtype)", {
24
20
  datatype: datatype,
25
21
  subtype: subtype,
26
22
  }, (x) => x?.updated ?? null);
27
23
  }
28
- exports.getLastUpdatedWithSubtype = getLastUpdatedWithSubtype;
29
- function updateLastUpdated(db, datatype, updated) {
24
+ export function updateLastUpdated(db, datatype, updated) {
30
25
  return db.none(`insert into data_updated(id, data_type, updated)
31
26
  values(nextval('seq_data_updated'), $(datatype), $(updated))
32
27
  on conflict (data_type, subtype)
33
28
  do update set updated = $(updated)`, { updated, datatype });
34
29
  }
35
- exports.updateLastUpdated = updateLastUpdated;
36
- function updateLastUpdatedWithSubtype(db, datatype, subtype, updated) {
30
+ export function updateLastUpdatedWithSubtype(db, datatype, subtype, updated) {
37
31
  return db.none(`insert into data_updated(id, data_type, subtype, updated)
38
32
  values(nextval('seq_data_updated'), $(datatype), $(subtype), $(updated))
39
33
  on conflict (data_type, subtype)
40
34
  do update set updated = $(updated)`, { updated, subtype, datatype });
41
35
  }
42
- exports.updateLastUpdatedWithSubtype = updateLastUpdatedWithSubtype;
43
- function getUpdatedTimestamp(db, datatype) {
36
+ export function getUpdatedTimestamp(db, datatype) {
44
37
  return db.oneOrNone("select updated_time as updated from updated_timestamp where updated_name=$(datatype)", {
45
38
  datatype: datatype,
46
39
  }, (x) => x?.updated ?? null);
47
40
  }
48
- exports.getUpdatedTimestamp = getUpdatedTimestamp;
49
- function updateUpdatedTimestamp(db, datatype, date, by = "") {
41
+ export function updateUpdatedTimestamp(db, datatype, date, by = "") {
50
42
  return db.none(`insert into updated_timestamp(updated_name, updated_time, updated_by)
51
43
  values($(datatype), $(date), $(by))
52
44
  on conflict (updated_name)
53
45
  do update set updated_time = $(date), updated_by = $(by)`, { date, datatype, by });
54
46
  }
55
- exports.updateUpdatedTimestamp = updateUpdatedTimestamp;
56
47
  //# sourceMappingURL=last-updated.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ export { DigitrafficStack } from "./aws/infra/stack/stack.js";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { DigitrafficStack } from "./aws/infra/stack/stack.js";
2
+ //# sourceMappingURL=index.js.map
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidLOCODE = exports.isValidMMSI = exports.isValidIMO = void 0;
4
- function isValidIMO(imo) {
1
+ export function isValidIMO(imo) {
5
2
  return imo >= 1000000 && imo <= 9999999 && imoChecksumIsValid(imo);
6
3
  }
7
- exports.isValidIMO = isValidIMO;
8
4
  function imoChecksumIsValid(imo) {
9
5
  const imoStr = imo.toString();
10
6
  const imoDigit1 = Number(imoStr[0]);
@@ -21,13 +17,11 @@ function imoChecksumIsValid(imo) {
21
17
  }
22
18
  return checkResult;
23
19
  }
24
- function isValidMMSI(mmsi) {
20
+ export function isValidMMSI(mmsi) {
25
21
  return mmsi >= 100000000 && mmsi <= 999999999;
26
22
  }
27
- exports.isValidMMSI = isValidMMSI;
28
23
  const LocodePattern = /^FI[A-Z]{3}$/i;
29
- function isValidLOCODE(locode) {
24
+ export function isValidLOCODE(locode) {
30
25
  return LocodePattern.test(locode);
31
26
  }
32
- exports.isValidLOCODE = isValidLOCODE;
33
27
  //# sourceMappingURL=id_utils.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=rtz.js.map
@@ -1,10 +1,7 @@
1
- "use strict";
2
1
  /**
3
2
  * A simple asserter-class for writing canaries without dependency to testing-libraries.
4
3
  */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Asserter = void 0;
7
- class Asserter {
4
+ export class Asserter {
8
5
  static assertEquals(value, expected) {
9
6
  if (value != expected) {
10
7
  throw new Error(`Given value ${value} was not expected ${expected}`);
@@ -41,5 +38,4 @@ class Asserter {
41
38
  expect(expected - value).toBeLessThanOrEqual(delta);
42
39
  }
43
40
  }
44
- exports.Asserter = Asserter;
45
41
  //# sourceMappingURL=asserter.js.map
@@ -1,3 +1,3 @@
1
- import { DTDatabase } from "../database/database";
1
+ import { DTDatabase } from "../database/database.js";
2
2
  export declare function assertCount(db: DTDatabase, sql: string, count: number): Promise<void>;
3
3
  export declare function dbTestBase(fn: (db: DTDatabase) => void, truncateFn: (db: DTDatabase) => Promise<void>, dbUser: string, dbPass: string, dbUri: string): () => void;
@@ -1,23 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dbTestBase = exports.assertCount = void 0;
4
- const database_1 = require("../database/database");
5
- async function assertCount(db, sql, count) {
1
+ import { DatabaseEnvironmentKeys, initDbConnection, } from "../database/database.js";
2
+ export async function assertCount(db, sql, count) {
6
3
  await db.one(sql).then((x) => expect(x.count).toEqual(count));
7
4
  }
8
- exports.assertCount = assertCount;
9
- function dbTestBase(fn, truncateFn, dbUser, dbPass, dbUri) {
5
+ export function dbTestBase(fn, truncateFn, dbUser, dbPass, dbUri) {
10
6
  const theDbUri = process.env.DB_URI ?? dbUri;
11
7
  console.log(`Test database URI: ${theDbUri}`);
12
8
  return () => {
13
- const db = (0, database_1.initDbConnection)(dbUser, dbPass, "test", theDbUri, {
9
+ const db = initDbConnection(dbUser, dbPass, "test", theDbUri, {
14
10
  noWarnings: true, // ignore duplicate connection warning for tests
15
11
  });
16
12
  beforeAll(async () => {
17
- process.env[database_1.DatabaseEnvironmentKeys.DB_USER] = dbUser;
18
- process.env[database_1.DatabaseEnvironmentKeys.DB_PASS] = dbPass;
19
- process.env[database_1.DatabaseEnvironmentKeys.DB_URI] = theDbUri;
20
- process.env[database_1.DatabaseEnvironmentKeys.DB_RO_URI] = theDbUri;
13
+ process.env[DatabaseEnvironmentKeys.DB_USER] = dbUser;
14
+ process.env[DatabaseEnvironmentKeys.DB_PASS] = dbPass;
15
+ process.env[DatabaseEnvironmentKeys.DB_URI] = theDbUri;
16
+ process.env[DatabaseEnvironmentKeys.DB_RO_URI] = theDbUri;
21
17
  await truncateFn(db);
22
18
  });
23
19
  afterAll(async () => {
@@ -30,5 +26,4 @@ function dbTestBase(fn, truncateFn, dbUser, dbPass, dbUri) {
30
26
  fn(db);
31
27
  };
32
28
  }
33
- exports.dbTestBase = dbTestBase;
34
29
  //# sourceMappingURL=db-testutils.js.map
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestHttpServer = exports.ERRORCODE_NOT_FOUND = exports.ERROR_NO_MATCH = void 0;
4
- const http_1 = require("http");
5
- const url_1 = require("url");
6
- exports.ERROR_NO_MATCH = "NO MATCH";
7
- exports.ERRORCODE_NOT_FOUND = 404;
1
+ import { createServer } from "http";
2
+ import { parse } from "url";
3
+ export const ERROR_NO_MATCH = "NO MATCH";
4
+ export const ERRORCODE_NOT_FOUND = 404;
8
5
  /**
9
6
  * A mock HTTP server created for testing connections from a Lambda to an outside integration
10
7
  */
11
- class TestHttpServer {
8
+ export class TestHttpServer {
12
9
  constructor() {
13
10
  this.debug = false;
14
11
  this.messageStack = [];
@@ -23,14 +20,14 @@ class TestHttpServer {
23
20
  this.debug = debug;
24
21
  this.messageStack = [];
25
22
  this.debuglog(`Starting test server on port ${port}`);
26
- this.server = (0, http_1.createServer)((req, res) => {
23
+ this.server = createServer((req, res) => {
27
24
  this.debuglog("Mapped urls: ");
28
25
  Object.keys(props).forEach((k) => this.debuglog(k));
29
26
  if (!req.url) {
30
27
  throw new Error("Missing request url!");
31
28
  }
32
29
  this.debuglog(`Received request to url ${req.url} ..`);
33
- const path = (0, url_1.parse)(req.url).pathname;
30
+ const path = parse(req.url).pathname;
34
31
  if (!path) {
35
32
  throw new Error("Missing path from request!");
36
33
  }
@@ -56,9 +53,9 @@ class TestHttpServer {
56
53
  req.on("end", () => {
57
54
  // assume sent data is in JSON format
58
55
  this.messageStack[this.messageStack.length] =
59
- exports.ERROR_NO_MATCH;
60
- res.writeHead(exports.ERRORCODE_NOT_FOUND);
61
- res.end(exports.ERROR_NO_MATCH);
56
+ ERROR_NO_MATCH;
57
+ res.writeHead(ERRORCODE_NOT_FOUND);
58
+ res.end(ERROR_NO_MATCH);
62
59
  });
63
60
  }
64
61
  });
@@ -81,5 +78,4 @@ class TestHttpServer {
81
78
  }
82
79
  }
83
80
  }
84
- exports.TestHttpServer = TestHttpServer;
85
81
  //# sourceMappingURL=httpserver.js.map
@@ -1,34 +1,10 @@
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.mockSecret = exports.stubSecretsManager = void 0;
27
- const AWS = require("aws-sdk");
28
- const sinon = __importStar(require("sinon"));
29
- const environment_1 = require("../aws/runtime/environment");
30
- const utils_1 = require("../utils/utils");
31
- (0, utils_1.setEnvVariable)(environment_1.EnvKeys.AWS_REGION, "eu-west-1");
1
+ import { createRequire as _createRequire } from "module";
2
+ const __require = _createRequire(import.meta.url);
3
+ const AWS = __require("aws-sdk");
4
+ import * as sinon from "sinon";
5
+ import { EnvKeys } from "../aws/runtime/environment.js";
6
+ import { setEnvVariable } from "../utils/utils.js";
7
+ setEnvVariable(EnvKeys.AWS_REGION, "eu-west-1");
32
8
  const secretValue = sinon.stub();
33
9
  /**
34
10
  * Stub Secrets Manager for tests. You must call this
@@ -36,15 +12,14 @@ const secretValue = sinon.stub();
36
12
  *
37
13
  * To mock the actual secret, call mockSecret()
38
14
  */
39
- function stubSecretsManager() {
15
+ export function stubSecretsManager() {
40
16
  const smStub = {
41
17
  getSecretValue: secretValue,
42
18
  };
43
19
  sinon.stub(AWS, "SecretsManager").returns(smStub);
44
20
  return smStub.getSecretValue;
45
21
  }
46
- exports.stubSecretsManager = stubSecretsManager;
47
- function mockSecret(secret) {
22
+ export function mockSecret(secret) {
48
23
  if (!secret) {
49
24
  secretValue.returns({
50
25
  promise: sinon.stub().returns({}),
@@ -58,5 +33,4 @@ function mockSecret(secret) {
58
33
  });
59
34
  }
60
35
  }
61
- exports.mockSecret = mockSecret;
62
36
  //# sourceMappingURL=secrets-manager.js.map