@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.
Files changed (199) hide show
  1. package/LICENSE +291 -0
  2. package/aws/infra/api/integration.d.ts +21 -0
  3. package/aws/infra/api/integration.js +52 -0
  4. package/aws/infra/api/response.d.ts +22 -0
  5. package/aws/infra/api/response.js +61 -0
  6. package/aws/infra/api/responses.d.ts +39 -0
  7. package/aws/infra/api/responses.js +79 -0
  8. package/aws/infra/api/static-integration.d.ts +15 -0
  9. package/aws/infra/api/static-integration.js +54 -0
  10. package/aws/infra/canaries/canary-alarm.d.ts +6 -0
  11. package/aws/infra/canaries/canary-alarm.js +26 -0
  12. package/aws/infra/canaries/canary-parameters.d.ts +18 -0
  13. package/aws/infra/canaries/canary-parameters.js +3 -0
  14. package/aws/infra/canaries/canary-role.d.ts +6 -0
  15. package/aws/infra/canaries/canary-role.js +46 -0
  16. package/aws/infra/canaries/canary.d.ts +8 -0
  17. package/aws/infra/canaries/canary.js +29 -0
  18. package/aws/infra/canaries/database-canary.d.ts +18 -0
  19. package/aws/infra/canaries/database-canary.js +55 -0
  20. package/aws/infra/canaries/database-checker.d.ts +21 -0
  21. package/aws/infra/canaries/database-checker.js +109 -0
  22. package/aws/infra/canaries/url-canary.d.ts +19 -0
  23. package/aws/infra/canaries/url-canary.js +46 -0
  24. package/aws/infra/canaries/url-checker.d.ts +46 -0
  25. package/aws/infra/canaries/url-checker.js +238 -0
  26. package/aws/infra/documentation.d.ts +56 -0
  27. package/aws/infra/documentation.js +95 -0
  28. package/aws/infra/scheduler.d.ts +12 -0
  29. package/aws/infra/scheduler.js +31 -0
  30. package/aws/infra/security-rule.d.ts +12 -0
  31. package/aws/infra/security-rule.js +39 -0
  32. package/aws/infra/sqs-integration.d.ts +7 -0
  33. package/aws/infra/sqs-integration.js +93 -0
  34. package/aws/infra/sqs-queue.d.ts +16 -0
  35. package/aws/infra/sqs-queue.js +130 -0
  36. package/aws/infra/stack/lambda-configs.d.ts +72 -0
  37. package/aws/infra/stack/lambda-configs.js +93 -0
  38. package/aws/infra/stack/monitoredfunction.d.ts +84 -0
  39. package/aws/infra/stack/monitoredfunction.js +135 -0
  40. package/aws/infra/stack/rest_apis.d.ts +40 -0
  41. package/aws/infra/stack/rest_apis.js +179 -0
  42. package/aws/infra/stack/stack-checking-aspect.d.ts +20 -0
  43. package/aws/infra/stack/stack-checking-aspect.js +163 -0
  44. package/aws/infra/stack/stack.d.ts +41 -0
  45. package/aws/infra/stack/stack.js +58 -0
  46. package/aws/infra/stack/subscription.d.ts +17 -0
  47. package/aws/infra/stack/subscription.js +41 -0
  48. package/aws/infra/usage-plans.d.ts +15 -0
  49. package/aws/infra/usage-plans.js +42 -0
  50. package/aws/runtime/apikey.d.ts +2 -0
  51. package/aws/runtime/apikey.js +13 -0
  52. package/aws/runtime/digitraffic-integration-response.d.ts +8 -0
  53. package/aws/runtime/digitraffic-integration-response.js +26 -0
  54. package/aws/runtime/messaging.d.ts +10 -0
  55. package/aws/runtime/messaging.js +31 -0
  56. package/aws/runtime/s3.d.ts +2 -0
  57. package/aws/runtime/s3.js +30 -0
  58. package/aws/runtime/secrets/dbsecret.d.ts +54 -0
  59. package/aws/runtime/secrets/dbsecret.js +96 -0
  60. package/aws/runtime/secrets/proxy-holder.d.ts +9 -0
  61. package/aws/runtime/secrets/proxy-holder.js +26 -0
  62. package/aws/runtime/secrets/rds-holder.d.ts +9 -0
  63. package/aws/runtime/secrets/rds-holder.js +26 -0
  64. package/aws/runtime/secrets/secret-holder.d.ts +26 -0
  65. package/aws/runtime/secrets/secret-holder.js +73 -0
  66. package/aws/runtime/secrets/secret.d.ts +8 -0
  67. package/aws/runtime/secrets/secret.js +43 -0
  68. package/aws/types/errors.d.ts +4 -0
  69. package/aws/types/errors.js +9 -0
  70. package/aws/types/lambda-response.d.ts +12 -0
  71. package/aws/types/lambda-response.js +28 -0
  72. package/aws/types/mediatypes.d.ts +10 -0
  73. package/aws/types/mediatypes.js +15 -0
  74. package/aws/types/model-with-reference.d.ts +7 -0
  75. package/aws/types/model-with-reference.js +3 -0
  76. package/aws/types/proxytypes.d.ts +26 -0
  77. package/aws/types/proxytypes.js +3 -0
  78. package/aws/types/tags.d.ts +2 -0
  79. package/aws/types/tags.js +7 -0
  80. package/database/cached.d.ts +7 -0
  81. package/database/cached.js +32 -0
  82. package/database/database.d.ts +19 -0
  83. package/database/database.js +62 -0
  84. package/database/last-updated.d.ts +16 -0
  85. package/database/last-updated.js +54 -0
  86. package/index.d.ts +1 -0
  87. package/index.js +18 -0
  88. package/marine/id_utils.d.ts +3 -0
  89. package/marine/id_utils.js +33 -0
  90. package/marine/rtz.d.ts +48 -0
  91. package/marine/rtz.js +3 -0
  92. package/package.json +55 -0
  93. package/src/aws/infra/api/integration.js +52 -0
  94. package/src/aws/infra/api/response.js +61 -0
  95. package/src/aws/infra/api/responses.js +79 -0
  96. package/src/aws/infra/api/static-integration.js +54 -0
  97. package/src/aws/infra/canaries/canary-alarm.js +26 -0
  98. package/src/aws/infra/canaries/canary-parameters.js +3 -0
  99. package/src/aws/infra/canaries/canary-role.js +46 -0
  100. package/src/aws/infra/canaries/canary.js +29 -0
  101. package/src/aws/infra/canaries/database-canary.js +55 -0
  102. package/src/aws/infra/canaries/database-checker.js +109 -0
  103. package/src/aws/infra/canaries/url-canary.js +46 -0
  104. package/src/aws/infra/canaries/url-checker.js +238 -0
  105. package/src/aws/infra/documentation.js +95 -0
  106. package/src/aws/infra/scheduler.js +31 -0
  107. package/src/aws/infra/security-rule.js +39 -0
  108. package/src/aws/infra/sqs-integration.js +93 -0
  109. package/src/aws/infra/sqs-queue.js +130 -0
  110. package/src/aws/infra/stack/lambda-configs.js +93 -0
  111. package/src/aws/infra/stack/monitoredfunction.js +135 -0
  112. package/src/aws/infra/stack/rest_apis.js +179 -0
  113. package/src/aws/infra/stack/stack-checking-aspect.js +163 -0
  114. package/src/aws/infra/stack/stack.js +58 -0
  115. package/src/aws/infra/stack/subscription.js +41 -0
  116. package/src/aws/infra/usage-plans.js +42 -0
  117. package/src/aws/runtime/apikey.js +13 -0
  118. package/src/aws/runtime/digitraffic-integration-response.js +26 -0
  119. package/src/aws/runtime/messaging.js +31 -0
  120. package/src/aws/runtime/s3.js +30 -0
  121. package/src/aws/runtime/secrets/dbsecret.js +96 -0
  122. package/src/aws/runtime/secrets/proxy-holder.js +26 -0
  123. package/src/aws/runtime/secrets/rds-holder.js +26 -0
  124. package/src/aws/runtime/secrets/secret-holder.js +73 -0
  125. package/src/aws/runtime/secrets/secret.js +43 -0
  126. package/src/aws/types/errors.js +9 -0
  127. package/src/aws/types/lambda-response.js +28 -0
  128. package/src/aws/types/mediatypes.js +15 -0
  129. package/src/aws/types/model-with-reference.js +3 -0
  130. package/src/aws/types/proxytypes.js +3 -0
  131. package/src/aws/types/tags.js +7 -0
  132. package/src/database/cached.js +32 -0
  133. package/src/database/database.js +62 -0
  134. package/src/database/last-updated.js +54 -0
  135. package/src/marine/id_utils.js +33 -0
  136. package/src/marine/rtz.js +3 -0
  137. package/src/test/asserter.js +45 -0
  138. package/src/test/db-testutils.js +31 -0
  139. package/src/test/httpserver.js +67 -0
  140. package/src/test/secret.js +25 -0
  141. package/src/test/secrets-manager.js +59 -0
  142. package/src/test/testutils.js +44 -0
  143. package/src/types/input-error.js +7 -0
  144. package/src/types/language.js +10 -0
  145. package/src/types/traffictype.js +13 -0
  146. package/src/types/validator.js +14 -0
  147. package/src/utils/api-model.js +129 -0
  148. package/src/utils/base64.js +21 -0
  149. package/src/utils/date-utils.js +34 -0
  150. package/src/utils/geojson-types.js +18 -0
  151. package/src/utils/geometry.js +140 -0
  152. package/src/utils/retry.js +50 -0
  153. package/src/utils/slack.js +25 -0
  154. package/src/utils/utils.js +40 -0
  155. package/test/asserter.d.ts +11 -0
  156. package/test/asserter.js +45 -0
  157. package/test/db-testutils.d.ts +2 -0
  158. package/test/db-testutils.js +31 -0
  159. package/test/httpserver.d.ts +18 -0
  160. package/test/httpserver.js +67 -0
  161. package/test/marine/id_utils.test.js +69 -0
  162. package/test/promise/promise.test.js +125 -0
  163. package/test/secret.d.ts +3 -0
  164. package/test/secret.js +25 -0
  165. package/test/secrets/dbsecret.test.js +71 -0
  166. package/test/secrets/secret-holder.test.js +124 -0
  167. package/test/secrets/secret.test.js +66 -0
  168. package/test/secrets-manager.d.ts +9 -0
  169. package/test/secrets-manager.js +59 -0
  170. package/test/test/httpserver.test.js +87 -0
  171. package/test/testutils.d.ts +12 -0
  172. package/test/testutils.js +44 -0
  173. package/test/utils/date-utils.test.js +51 -0
  174. package/test/utils/geometry.test.js +49 -0
  175. package/test/utils/utils.test.js +49 -0
  176. package/types/input-error.d.ts +2 -0
  177. package/types/input-error.js +7 -0
  178. package/types/language.d.ts +5 -0
  179. package/types/language.js +10 -0
  180. package/types/traffictype.d.ts +8 -0
  181. package/types/traffictype.js +13 -0
  182. package/types/validator.d.ts +4 -0
  183. package/types/validator.js +14 -0
  184. package/utils/api-model.d.ts +87 -0
  185. package/utils/api-model.js +129 -0
  186. package/utils/base64.d.ts +12 -0
  187. package/utils/base64.js +21 -0
  188. package/utils/date-utils.d.ts +17 -0
  189. package/utils/date-utils.js +34 -0
  190. package/utils/geojson-types.d.ts +14 -0
  191. package/utils/geojson-types.js +18 -0
  192. package/utils/geometry.d.ts +36 -0
  193. package/utils/geometry.js +140 -0
  194. package/utils/retry.d.ts +13 -0
  195. package/utils/retry.js +50 -0
  196. package/utils/slack.d.ts +5 -0
  197. package/utils/slack.js +25 -0
  198. package/utils/utils.d.ts +22 -0
  199. package/utils/utils.js +40 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const httpserver_1 = require("../../src/test/httpserver");
4
+ const http = require("http");
5
+ const DEFAULT_PATH = "/";
6
+ const PORT = 8091;
7
+ const DEFAULT_PROPS = {
8
+ "/": () => "",
9
+ };
10
+ describe('TestHttpServer - test', () => {
11
+ async function withServer(fn, props = DEFAULT_PROPS, statusCode = 200) {
12
+ const server = new httpserver_1.TestHttpServer();
13
+ server.listen(PORT, props, false, statusCode);
14
+ try {
15
+ await fn(server);
16
+ }
17
+ finally {
18
+ server.close();
19
+ }
20
+ }
21
+ function sendGetRequest(path = DEFAULT_PATH) {
22
+ return sendRequest("GET", path);
23
+ }
24
+ function sendPostRequest(path = DEFAULT_PATH, body) {
25
+ return sendRequest("POST", path, body);
26
+ }
27
+ function sendRequest(method, path, body) {
28
+ return new Promise((resolve, reject) => {
29
+ const request = http.request({
30
+ path,
31
+ port: PORT,
32
+ method,
33
+ }, (response) => {
34
+ response.on('data', () => {
35
+ // do nothing
36
+ });
37
+ //the whole response has been received, so we just print it out here
38
+ response.on('end', () => {
39
+ resolve(response);
40
+ });
41
+ response.on('error', (error) => {
42
+ reject(error);
43
+ });
44
+ });
45
+ if (method === "POST") {
46
+ request.write(body);
47
+ }
48
+ request.end();
49
+ });
50
+ }
51
+ test('no calls', async () => {
52
+ await withServer((server) => {
53
+ expect(server.getCallCount()).toEqual(0);
54
+ });
55
+ });
56
+ test('one get', async () => {
57
+ await withServer(async (server) => {
58
+ await sendGetRequest();
59
+ expect(server.getCallCount()).toEqual(1);
60
+ });
61
+ });
62
+ test('one get - no MATCH', async () => {
63
+ await withServer(async (server) => {
64
+ const response = await sendGetRequest("/no-match");
65
+ expect(server.getCallCount()).toEqual(1);
66
+ expect(server.getRequestBody(0)).toEqual(httpserver_1.ERROR_NO_MATCH);
67
+ expect(response.statusCode).toEqual(httpserver_1.ERRORCODE_NOT_FOUND);
68
+ });
69
+ });
70
+ test('get - error 405', async () => {
71
+ const ERROR_CODE = 405;
72
+ await withServer(async (server) => {
73
+ const response = await sendGetRequest();
74
+ expect(server.getCallCount()).toEqual(1);
75
+ expect(response.statusCode).toEqual(ERROR_CODE);
76
+ }, DEFAULT_PROPS, ERROR_CODE);
77
+ });
78
+ test('one post', async () => {
79
+ await withServer(async (server) => {
80
+ const testBody = "Testing123!";
81
+ await sendPostRequest(DEFAULT_PATH, testBody);
82
+ expect(server.getCallCount()).toEqual(1);
83
+ expect(server.getRequestBody(0)).toEqual(testBody);
84
+ });
85
+ });
86
+ });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cHNlcnZlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90ZXN0L2h0dHBzZXJ2ZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBEQUFnSDtBQUVoSCw2QkFBOEI7QUFFOUIsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUVsQixNQUFNLGFBQWEsR0FBRztJQUNsQixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNoQixDQUFDO0FBRUYsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNuQyxLQUFLLFVBQVUsVUFBVSxDQUFDLEVBQXNDLEVBQUUsUUFBMEIsYUFBYSxFQUFFLFVBQVUsR0FBRyxHQUFHO1FBQ3ZILE1BQU0sTUFBTSxHQUFHLElBQUksMkJBQWMsRUFBRSxDQUFDO1FBRXBDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFOUMsSUFBSTtZQUNBLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BCO2dCQUFTO1lBQ04sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELFNBQVMsY0FBYyxDQUFDLElBQUksR0FBRyxZQUFZO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsU0FBUyxlQUFlLENBQUMsSUFBSSxHQUFHLFlBQVksRUFBRSxJQUFZO1FBQ3RELE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsSUFBYTtRQUM1RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFF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RSxLQUFLLElBQUksRUFBRTtRQUN4QixNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBc0IsRUFBRSxFQUFFO1lBQzlDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztZQUMvQixNQUFNLGVBQWUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBRVAsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Rlc3RIdHRwU2VydmVyLCBMaXN0ZW5Qcm9wZXJ0aWVzLCBFUlJPUl9OT19NQVRDSCwgRVJST1JDT0RFX05PVF9GT1VORH0gZnJvbSBcIi4uLy4uL3NyYy90ZXN0L2h0dHBzZXJ2ZXJcIjtcbmltcG9ydCB7SW5jb21pbmdNZXNzYWdlfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5cbmNvbnN0IERFRkFVTFRfUEFUSCA9IFwiL1wiO1xuY29uc3QgUE9SVCA9IDgwOTE7XG5cbmNvbnN0IERFRkFVTFRfUFJPUFMgPSB7XG4gICAgXCIvXCI6ICgpID0+IFwiXCIsXG59O1xuXG5kZXNjcmliZSgnVGVzdEh0dHBTZXJ2ZXIgLSB0ZXN0JywgKCkgPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uIHdpdGhTZXJ2ZXIoZm46ICgoc2VydmVyOiBUZXN0SHR0cFNlcnZlcikgPT4gdm9pZCksIHByb3BzOiBMaXN0ZW5Qcm9wZXJ0aWVzID0gREVGQVVMVF9QUk9QUywgc3RhdHVzQ29kZSA9IDIwMCkge1xuICAgICAgICBjb25zdCBzZXJ2ZXIgPSBuZXcgVGVzdEh0dHBTZXJ2ZXIoKTtcblxuICAgICAgICBzZXJ2ZXIubGlzdGVuKFBPUlQsIHByb3BzLCBmYWxzZSwgc3RhdHVzQ29kZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGZuKHNlcnZlcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNlbmRHZXRSZXF1ZXN0KHBhdGggPSBERUZBVUxUX1BBVEgpOiBQcm9taXNlPEluY29taW5nTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gc2VuZFJlcXVlc3QoXCJHRVRcIiwgcGF0aCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VuZFBvc3RSZXF1ZXN0KHBhdGggPSBERUZBVUxUX1BBVEgsIGJvZHk6IHN0cmluZyk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBzZW5kUmVxdWVzdChcIlBPU1RcIiwgcGF0aCwgYm9keSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VuZFJlcXVlc3QobWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgYm9keT86IHN0cmluZyk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHBvcnQ6IFBPUlQsXG4gICAgICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgfSwgKHJlc3BvbnNlOiBJbmNvbWluZ01lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5vbignZGF0YScsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy90aGUgd2hvbGUgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQsIHNvIHdlIGp1c3QgcHJpbnQgaXQgb3V0IGhlcmVcbiAgICAgICAgICAgICAgICByZXNwb25zZS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdlcnJvcicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIlBPU1RcIikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Qud3JpdGUoYm9keSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXF1ZXN0LmVuZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0ZXN0KCdubyBjYWxscycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2l0aFNlcnZlcigoc2VydmVyOiBUZXN0SHR0cFNlcnZlcikgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHNlcnZlci5nZXRDYWxsQ291bnQoKSkudG9FcXVhbCgwKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgZ2V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3aXRoU2VydmVyKGFzeW5jIChzZXJ2ZXI6IFRlc3RIdHRwU2VydmVyKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBzZW5kR2V0UmVxdWVzdCgpO1xuXG4gICAgICAgICAgICBleHBlY3Qoc2VydmVyLmdldENhbGxDb3VudCgpKS50b0VxdWFsKDEpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ29uZSBnZXQgLSBubyBNQVRDSCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2l0aFNlcnZlcihhc3luYyAoc2VydmVyOiBUZXN0SHR0cFNlcnZlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZW5kR2V0UmVxdWVzdChcIi9uby1tYXRjaFwiKTtcblxuICAgICAgICAgICAgZXhwZWN0KHNlcnZlci5nZXRDYWxsQ291bnQoKSkudG9FcXVhbCgxKTtcbiAgICAgICAgICAgIGV4cGVjdChzZXJ2ZXIuZ2V0UmVxdWVzdEJvZHkoMCkpLnRvRXF1YWwoRVJST1JfTk9fTUFUQ0gpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3BvbnNlLnN0YXR1c0NvZGUpLnRvRXF1YWwoRVJST1JDT0RFX05PVF9GT1VORCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0IC0gZXJyb3IgNDA1JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBFUlJPUl9DT0RFID0gNDA1O1xuXG4gICAgICAgIGF3YWl0IHdpdGhTZXJ2ZXIoYXN5bmMgKHNlcnZlcjogVGVzdEh0dHBTZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZEdldFJlcXVlc3QoKTtcblxuICAgICAgICAgICAgZXhwZWN0KHNlcnZlci5nZXRDYWxsQ291bnQoKSkudG9FcXVhbCgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXNwb25zZS5zdGF0dXNDb2RlKS50b0VxdWFsKEVSUk9SX0NPREUpO1xuICAgICAgICB9LCBERUZBVUxUX1BST1BTLCBFUlJPUl9DT0RFKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ29uZSBwb3N0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3aXRoU2VydmVyKGFzeW5jIChzZXJ2ZXI6IFRlc3RIdHRwU2VydmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0Qm9keSA9IFwiVGVzdGluZzEyMyFcIjtcbiAgICAgICAgICAgIGF3YWl0IHNlbmRQb3N0UmVxdWVzdChERUZBVUxUX1BBVEgsIHRlc3RCb2R5KTtcblxuICAgICAgICAgICAgZXhwZWN0KHNlcnZlci5nZXRDYWxsQ291bnQoKSkudG9FcXVhbCgxKTtcbiAgICAgICAgICAgIGV4cGVjdChzZXJ2ZXIuZ2V0UmVxdWVzdEJvZHkoMCkpLnRvRXF1YWwodGVzdEJvZHkpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxufSk7XG4iXX0=
@@ -0,0 +1,12 @@
1
+ export declare function randomString(): string;
2
+ export declare function getRandomNumber(min: number, max: number): number;
3
+ export declare function getRandomNumberAsString(min: number, max: number): string;
4
+ export declare function getRandomInteger(min: number, max: number): number;
5
+ export declare function getRandomIntegerAsString(min: number, max: number): string;
6
+ export declare function getRandomBigInt(min: number, max: number): bigint;
7
+ export declare function randomBoolean(): boolean;
8
+ /**
9
+ * Returns a new copy of an array, shuffled using Math.random()
10
+ * @param array Array
11
+ */
12
+ export declare function shuffle<T>(array: T[]): T[];
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shuffle = exports.randomBoolean = exports.getRandomBigInt = exports.getRandomIntegerAsString = exports.getRandomInteger = exports.getRandomNumberAsString = exports.getRandomNumber = exports.randomString = void 0;
4
+ function randomString() {
5
+ return Math.random().toString(36).substring(2);
6
+ }
7
+ exports.randomString = randomString;
8
+ function getRandomNumber(min, max) {
9
+ return Math.random() * (max - min) + min;
10
+ }
11
+ exports.getRandomNumber = getRandomNumber;
12
+ function getRandomNumberAsString(min, max) {
13
+ return getRandomNumber(min, max).toString();
14
+ }
15
+ exports.getRandomNumberAsString = getRandomNumberAsString;
16
+ function getRandomInteger(min, max) {
17
+ return Math.round(getRandomNumber(min, max));
18
+ }
19
+ exports.getRandomInteger = getRandomInteger;
20
+ function getRandomIntegerAsString(min, max) {
21
+ return Math.round(getRandomInteger(min, max)).toString();
22
+ }
23
+ exports.getRandomIntegerAsString = getRandomIntegerAsString;
24
+ function getRandomBigInt(min, max) {
25
+ return BigInt(getRandomInteger(min, max));
26
+ }
27
+ exports.getRandomBigInt = getRandomBigInt;
28
+ function randomBoolean() {
29
+ return Math.random() < 0.5;
30
+ }
31
+ exports.randomBoolean = randomBoolean;
32
+ /**
33
+ * Returns a new copy of an array, shuffled using Math.random()
34
+ * @param array Array
35
+ */
36
+ function shuffle(array) {
37
+ // pretty fast way to copy an array, not necessarily the fastest
38
+ const newArray = array.slice(0);
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ newArray.sort((x) => 0.5 - Math.random());
41
+ return newArray;
42
+ }
43
+ exports.shuffle = shuffle;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvdGVzdHV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLFlBQVk7SUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRkQsb0NBRUM7QUFFRCxTQUFnQixlQUFlLENBQUMsR0FBVyxFQUFHLEdBQVc7SUFDckQsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLEdBQVcsRUFBRyxHQUFXO0lBQzdELE9BQU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoRCxDQUFDO0FBRkQsMERBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXLEVBQUcsR0FBVztJQUN0RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLEdBQVcsRUFBRyxHQUFXO0lBQzlELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM3RCxDQUFDO0FBRkQsNERBRUM7QUFFRCxTQUFnQixlQUFlLENBQUMsR0FBVyxFQUFHLEdBQVc7SUFDckQsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELDBDQUVDO0FBRUQsU0FBZ0IsYUFBYTtJQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDL0IsQ0FBQztBQUZELHNDQUVDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFJLEtBQVU7SUFDakMsZ0VBQWdFO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsNkRBQTZEO0lBQzdELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBTkQsMEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKCkgOiBzdHJpbmcge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21OdW1iZXIobWluOiBudW1iZXIgLCBtYXg6IG51bWJlcikgOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21OdW1iZXJBc1N0cmluZyhtaW46IG51bWJlciAsIG1heDogbnVtYmVyKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFJhbmRvbU51bWJlcihtaW4sIG1heCkudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbUludGVnZXIobWluOiBudW1iZXIgLCBtYXg6IG51bWJlcikgOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGdldFJhbmRvbU51bWJlcihtaW4sIG1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tSW50ZWdlckFzU3RyaW5nKG1pbjogbnVtYmVyICwgbWF4OiBudW1iZXIpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChnZXRSYW5kb21JbnRlZ2VyKG1pbiwgbWF4KSkudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbUJpZ0ludChtaW46IG51bWJlciAsIG1heDogbnVtYmVyKSA6IGJpZ2ludCB7XG4gICAgcmV0dXJuIEJpZ0ludChnZXRSYW5kb21JbnRlZ2VyKG1pbiwgbWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Cb29sZWFuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgMC41O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBuZXcgY29weSBvZiBhbiBhcnJheSwgc2h1ZmZsZWQgdXNpbmcgTWF0aC5yYW5kb20oKVxuICogQHBhcmFtIGFycmF5IEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaHVmZmxlPFQ+KGFycmF5OiBUW10pOiBUW10ge1xuICAgIC8vIHByZXR0eSBmYXN0IHdheSB0byBjb3B5IGFuIGFycmF5LCBub3QgbmVjZXNzYXJpbHkgdGhlIGZhc3Rlc3RcbiAgICBjb25zdCBuZXdBcnJheSA9IGFycmF5LnNsaWNlKDApO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBuZXdBcnJheS5zb3J0KCh4KSA9PiAwLjUgLSBNYXRoLnJhbmRvbSgpKTtcbiAgICByZXR1cm4gbmV3QXJyYXk7XG59XG4iXX0=
@@ -0,0 +1,51 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const moment_1 = __importDefault(require("moment"));
30
+ const CommonDateUtils = __importStar(require("../../src/utils/date-utils"));
31
+ const ISO = "2022-01-02T01:02:03.004Z";
32
+ describe('CommonDateUtilsTest', () => {
33
+ test('dateFromIsoString', () => {
34
+ const parsed = CommonDateUtils.dateFromIsoString(ISO);
35
+ expect(parsed.toISOString()).toEqual(ISO);
36
+ });
37
+ test('dateFromIsoString fails', () => {
38
+ expect(() => CommonDateUtils.dateFromIsoString(ISO + "foobar")).toThrowError();
39
+ });
40
+ test('countDiffMs', () => {
41
+ const start = new Date();
42
+ const end = (0, moment_1.default)(start).add(1234, 'milliseconds').toDate();
43
+ expect(CommonDateUtils.countDiffMs(start, end)).toEqual(1234);
44
+ });
45
+ test('countDiffMs', () => {
46
+ const start = new Date();
47
+ const end = (0, moment_1.default)(start).add(1234, 'seconds').toDate();
48
+ expect(CommonDateUtils.countDiffInSeconds(start, end)).toEqual(1234);
49
+ });
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS11dGlscy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91dGlscy9kYXRlLXV0aWxzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qiw0RUFBOEQ7QUFFOUQsTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUM7QUFFdkMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtJQUVqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25GLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3RCxNQUFNLENBQUUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUEsZ0JBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCAqIGFzIENvbW1vbkRhdGVVdGlscyBmcm9tIFwiLi4vLi4vc3JjL3V0aWxzL2RhdGUtdXRpbHNcIjtcblxuY29uc3QgSVNPID0gXCIyMDIyLTAxLTAyVDAxOjAyOjAzLjAwNFpcIjtcblxuZGVzY3JpYmUoJ0NvbW1vbkRhdGVVdGlsc1Rlc3QnLCAoKSA9PiB7XG5cbiAgICB0ZXN0KCdkYXRlRnJvbUlzb1N0cmluZycsICgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gQ29tbW9uRGF0ZVV0aWxzLmRhdGVGcm9tSXNvU3RyaW5nKElTTyk7XG4gICAgICAgIGV4cGVjdChwYXJzZWQudG9JU09TdHJpbmcoKSkudG9FcXVhbChJU08pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZGF0ZUZyb21Jc29TdHJpbmcgZmFpbHMnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCgoKSA9PiBDb21tb25EYXRlVXRpbHMuZGF0ZUZyb21Jc29TdHJpbmcoSVNPICsgXCJmb29iYXJcIikpLnRvVGhyb3dFcnJvcigpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY291bnREaWZmTXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZW5kID0gbW9tZW50KHN0YXJ0KS5hZGQoMTIzNCwgJ21pbGxpc2Vjb25kcycpLnRvRGF0ZSgpO1xuICAgICAgICBleHBlY3QgKENvbW1vbkRhdGVVdGlscy5jb3VudERpZmZNcyhzdGFydCwgZW5kKSkudG9FcXVhbCgxMjM0KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NvdW50RGlmZk1zJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG1vbWVudChzdGFydCkuYWRkKDEyMzQsICdzZWNvbmRzJykudG9EYXRlKCk7XG4gICAgICAgIGV4cGVjdCAoQ29tbW9uRGF0ZVV0aWxzLmNvdW50RGlmZkluU2Vjb25kcyhzdGFydCwgZW5kKSkudG9FcXVhbCgxMjM0KTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,49 @@
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
+ const asserter_1 = require("../../src/test/asserter");
27
+ const Geometry = __importStar(require("../../src/utils/geometry"));
28
+ const TAMPERE_WGS84_X = 23.761290078;
29
+ const TAMPERE_WGS84_Y = 61.497742570;
30
+ const KUOPIO_WGS84_X = 27.688935;
31
+ const KUOPIO_WGS84_Y = 62.892983;
32
+ const TAMPERE_KUOPIO_DISTANCE_KM = 255.8;
33
+ describe('CommonGeometryTest', () => {
34
+ test('distanceBetweenWGS84PointsInKm', () => {
35
+ asserter_1.Asserter.assertToBeCloseTo(Geometry.distanceBetweenPositionsInKm([TAMPERE_WGS84_X, TAMPERE_WGS84_Y], [KUOPIO_WGS84_X, KUOPIO_WGS84_Y]), TAMPERE_KUOPIO_DISTANCE_KM, 0.5);
36
+ console.info(Geometry.distanceBetweenPositionsInKm([TAMPERE_WGS84_X, TAMPERE_WGS84_Y], [KUOPIO_WGS84_X, KUOPIO_WGS84_Y]));
37
+ });
38
+ test('distanceBetweenWGS84PointsInKm', () => {
39
+ asserter_1.Asserter.assertToBeCloseTo(Geometry.distanceBetweenPositionsInM([TAMPERE_WGS84_X, TAMPERE_WGS84_Y], [KUOPIO_WGS84_X, KUOPIO_WGS84_Y]), TAMPERE_KUOPIO_DISTANCE_KM * 1000, 500);
40
+ console.info(Geometry.distanceBetweenPositionsInM([TAMPERE_WGS84_X, TAMPERE_WGS84_Y], [KUOPIO_WGS84_X, KUOPIO_WGS84_Y]));
41
+ });
42
+ test('areDistinctPositions', () => {
43
+ expect(Geometry.areDistinctPositions([1, 2], [1, 2])).toBe(false);
44
+ expect(Geometry.areDistinctPositions([1.1, 2.2], [1.1, 2.2])).toBe(false);
45
+ expect(Geometry.areDistinctPositions([1, 2.1], [1, 2])).toBe(true);
46
+ expect(Geometry.areDistinctPositions([1, 2], [1, 2.000000000000001])).toBe(true);
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdXRpbHMvZ2VvbWV0cnkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQWlEO0FBQ2pELG1FQUFxRDtBQUVyRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDO0FBRXJDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFFekMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUVoQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLG1CQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEssT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtRQUN4QyxtQkFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUFDLDBCQUEwQixHQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1SyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fzc2VydGVyfSBmcm9tIFwiLi4vLi4vc3JjL3Rlc3QvYXNzZXJ0ZXJcIjtcbmltcG9ydCAqIGFzIEdlb21ldHJ5IGZyb20gJy4uLy4uL3NyYy91dGlscy9nZW9tZXRyeSc7XG5cbmNvbnN0IFRBTVBFUkVfV0dTODRfWCA9IDIzLjc2MTI5MDA3ODtcbmNvbnN0IFRBTVBFUkVfV0dTODRfWSA9IDYxLjQ5Nzc0MjU3MDtcblxuY29uc3QgS1VPUElPX1dHUzg0X1ggPSAyNy42ODg5MzU7XG5jb25zdCBLVU9QSU9fV0dTODRfWSA9IDYyLjg5Mjk4MztcbmNvbnN0IFRBTVBFUkVfS1VPUElPX0RJU1RBTkNFX0tNID0gMjU1Ljg7XG5cbmRlc2NyaWJlKCdDb21tb25HZW9tZXRyeVRlc3QnLCAoKSA9PiB7XG5cbiAgICB0ZXN0KCdkaXN0YW5jZUJldHdlZW5XR1M4NFBvaW50c0luS20nLCAoKSA9PiB7XG4gICAgICAgIEFzc2VydGVyLmFzc2VydFRvQmVDbG9zZVRvKEdlb21ldHJ5LmRpc3RhbmNlQmV0d2VlblBvc2l0aW9uc0luS20oW1RBTVBFUkVfV0dTODRfWCwgVEFNUEVSRV9XR1M4NF9ZXSwgW0tVT1BJT19XR1M4NF9YLCBLVU9QSU9fV0dTODRfWV0pLFRBTVBFUkVfS1VPUElPX0RJU1RBTkNFX0tNLCAwLjUpO1xuICAgICAgICBjb25zb2xlLmluZm8oR2VvbWV0cnkuZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zSW5LbShbVEFNUEVSRV9XR1M4NF9YLCBUQU1QRVJFX1dHUzg0X1ldLCBbS1VPUElPX1dHUzg0X1gsIEtVT1BJT19XR1M4NF9ZXSkpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZGlzdGFuY2VCZXR3ZWVuV0dTODRQb2ludHNJbkttJywgKCkgPT4ge1xuICAgICAgICBBc3NlcnRlci5hc3NlcnRUb0JlQ2xvc2VUbyhHZW9tZXRyeS5kaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnNJbk0oW1RBTVBFUkVfV0dTODRfWCwgVEFNUEVSRV9XR1M4NF9ZXSwgW0tVT1BJT19XR1M4NF9YLCBLVU9QSU9fV0dTODRfWV0pLFRBTVBFUkVfS1VPUElPX0RJU1RBTkNFX0tNKjEwMDAsIDUwMCk7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhHZW9tZXRyeS5kaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnNJbk0oW1RBTVBFUkVfV0dTODRfWCwgVEFNUEVSRV9XR1M4NF9ZXSwgW0tVT1BJT19XR1M4NF9YLCBLVU9QSU9fV0dTODRfWV0pKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2FyZURpc3RpbmN0UG9zaXRpb25zJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoR2VvbWV0cnkuYXJlRGlzdGluY3RQb3NpdGlvbnMoWzEsMl0sWzEsMl0pKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KEdlb21ldHJ5LmFyZURpc3RpbmN0UG9zaXRpb25zKFsxLjEsMi4yXSxbMS4xLDIuMl0pKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KEdlb21ldHJ5LmFyZURpc3RpbmN0UG9zaXRpb25zKFsxLDIuMV0sWzEsMl0pKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3QoR2VvbWV0cnkuYXJlRGlzdGluY3RQb3NpdGlvbnMoWzEsMl0sWzEsMi4wMDAwMDAwMDAwMDAwMDFdKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,49 @@
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
+ const CommonUtils = __importStar(require("../../src/utils/utils"));
27
+ describe('CommonUtilsTest', () => {
28
+ test('bothArraysHasSameValues', () => {
29
+ expect(CommonUtils.bothArraysHasSameValues([], [])).toEqual(true);
30
+ expect(CommonUtils.bothArraysHasSameValues(['a'], ['a'])).toEqual(true);
31
+ expect(CommonUtils.bothArraysHasSameValues(['a'], ['a', 'a'])).toEqual(true);
32
+ expect(CommonUtils.bothArraysHasSameValues(['a', 'a'], ['a', 'a'])).toEqual(true);
33
+ expect(CommonUtils.bothArraysHasSameValues(null, null)).toEqual(true);
34
+ expect(CommonUtils.bothArraysHasSameValues(undefined, undefined)).toEqual(true);
35
+ expect(CommonUtils.bothArraysHasSameValues(null, undefined)).toEqual(true);
36
+ expect(CommonUtils.bothArraysHasSameValues(['a'], undefined)).toEqual(false);
37
+ expect(CommonUtils.bothArraysHasSameValues(['a'], null)).toEqual(false);
38
+ /* eslint-enable */
39
+ expect(CommonUtils.bothArraysHasSameValues(['a', 'b'], ['a', 'a'])).toEqual(false);
40
+ expect(CommonUtils.bothArraysHasSameValues(['a', 'a', 'a'], ['a', 'b', 'c'])).toEqual(false);
41
+ const o1 = { a: 1, b: 2 };
42
+ const o2 = { a: 1, b: 2 };
43
+ // Objects are references to same
44
+ expect(CommonUtils.bothArraysHasSameValues([o1], [o1])).toEqual(true);
45
+ // Object's are not the same but the contents are the same
46
+ expect(CommonUtils.bothArraysHasSameValues([o1], [o2])).toEqual(false);
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdXRpbHMvdXRpbHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUVBQXFEO0FBRXJELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7SUFFN0IsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRixNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLG1CQUFtQjtRQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0YsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQztRQUN4QixNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDO1FBQ3hCLGlDQUFpQztRQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNFLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBDb21tb25VdGlscyBmcm9tIFwiLi4vLi4vc3JjL3V0aWxzL3V0aWxzXCI7XG5cbmRlc2NyaWJlKCdDb21tb25VdGlsc1Rlc3QnLCAoKSA9PiB7XG5cbiAgICB0ZXN0KCdib3RoQXJyYXlzSGFzU2FtZVZhbHVlcycsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFtdLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChDb21tb25VdGlscy5ib3RoQXJyYXlzSGFzU2FtZVZhbHVlcyhbJ2EnXSwgWydhJ10pKS50b0VxdWFsKHRydWUpO1xuICAgICAgICBleHBlY3QoQ29tbW9uVXRpbHMuYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoWydhJ10sIFsnYScsICdhJ10pKS50b0VxdWFsKHRydWUpO1xuICAgICAgICBleHBlY3QoQ29tbW9uVXRpbHMuYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoWydhJywgJ2EnXSwgWydhJywgJ2EnXSkpLnRvRXF1YWwodHJ1ZSk7XG5cbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKG51bGwsIG51bGwpKS50b0VxdWFsKHRydWUpO1xuICAgICAgICBleHBlY3QoQ29tbW9uVXRpbHMuYm90aEFycmF5c0hhc1NhbWVWYWx1ZXModW5kZWZpbmVkLCB1bmRlZmluZWQpKS50b0VxdWFsKHRydWUpO1xuICAgICAgICBleHBlY3QoQ29tbW9uVXRpbHMuYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMobnVsbCwgdW5kZWZpbmVkKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFsnYSddLCB1bmRlZmluZWQpKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFsnYSddLCBudWxsKSkudG9FcXVhbChmYWxzZSk7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFsnYScsICdiJ10sIFsnYScsICdhJ10pKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFsnYScsICdhJywgJ2EnXSwgWydhJywgJ2InLCAnYyddKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgbzEgPSB7YTogMSwgYjogMn07XG4gICAgICAgIGNvbnN0IG8yID0ge2E6IDEsIGI6IDJ9O1xuICAgICAgICAvLyBPYmplY3RzIGFyZSByZWZlcmVuY2VzIHRvIHNhbWVcbiAgICAgICAgZXhwZWN0KENvbW1vblV0aWxzLmJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFtvMV0sIFtvMV0pKS50b0VxdWFsKHRydWUpO1xuICAgICAgICAvLyBPYmplY3QncyBhcmUgbm90IHRoZSBzYW1lIGJ1dCB0aGUgY29udGVudHMgYXJlIHRoZSBzYW1lXG4gICAgICAgIGV4cGVjdChDb21tb25VdGlscy5ib3RoQXJyYXlzSGFzU2FtZVZhbHVlcyhbbzFdLCBbbzJdKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export declare class InputError extends Error {
2
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputError = void 0;
4
+ class InputError extends Error {
5
+ }
6
+ exports.InputError = InputError;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5wdXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxVQUFXLFNBQVEsS0FBSztDQUNwQztBQURELGdDQUNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIElucHV0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export declare enum Language {
2
+ FI = "fi",
3
+ EN = "en",
4
+ SV = "sv"
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Language = void 0;
4
+ var Language;
5
+ (function (Language) {
6
+ Language["FI"] = "fi";
7
+ Language["EN"] = "en";
8
+ Language["SV"] = "sv";
9
+ })(Language = exports.Language || (exports.Language = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvbGFuZ3VhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2hCLHFCQUFTLENBQUE7SUFBRSxxQkFBUyxDQUFBO0lBQUUscUJBQVMsQ0FBQTtBQUNuQyxDQUFDLEVBRlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFFbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBMYW5ndWFnZSB7XHJcbiAgICBGSSA9ICdmaScsIEVOID0gJ2VuJywgU1YgPSAnc3YnXHJcbn1cclxuIl19
@@ -0,0 +1,8 @@
1
+ export declare enum TrafficType {
2
+ ROAD = "Road",
3
+ MARINE = "Marine",
4
+ RAIL = "Rail",
5
+ AVIATION = "Aviation",
6
+ MCP = "MCP",
7
+ OTHER = "Other"
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrafficType = void 0;
4
+ var TrafficType;
5
+ (function (TrafficType) {
6
+ TrafficType["ROAD"] = "Road";
7
+ TrafficType["MARINE"] = "Marine";
8
+ TrafficType["RAIL"] = "Rail";
9
+ TrafficType["AVIATION"] = "Aviation";
10
+ TrafficType["MCP"] = "MCP";
11
+ TrafficType["OTHER"] = "Other";
12
+ })(TrafficType = exports.TrafficType || (exports.TrafficType = {}));
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpY3R5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvdHJhZmZpY3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ25CLDRCQUFhLENBQUE7SUFDYixnQ0FBaUIsQ0FBQTtJQUNqQiw0QkFBYSxDQUFBO0lBQ2Isb0NBQXFCLENBQUE7SUFDckIsMEJBQVcsQ0FBQTtJQUNYLDhCQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVHJhZmZpY1R5cGUge1xuICAgIFJPQUQgPSAnUm9hZCcsXG4gICAgTUFSSU5FID0gJ01hcmluZScsXG4gICAgUkFJTCA9ICdSYWlsJyxcbiAgICBBVklBVElPTiA9ICdBdmlhdGlvbicsXG4gICAgTUNQID0gJ01DUCcsXG4gICAgT1RIRVIgPSAnT3RoZXInXG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export declare const MIN_YEAR = 1900;
2
+ export declare const MAX_YEAR = 2100;
3
+ export declare function validateYear(year: number, minYear?: number, maxYear?: number): boolean;
4
+ export declare function validateMonth(month: number): boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMonth = exports.validateYear = exports.MAX_YEAR = exports.MIN_YEAR = void 0;
4
+ exports.MIN_YEAR = 1900;
5
+ exports.MAX_YEAR = 2100;
6
+ function validateYear(year, minYear = exports.MIN_YEAR, maxYear = exports.MAX_YEAR) {
7
+ return year >= minYear && year <= maxYear;
8
+ }
9
+ exports.validateYear = validateYear;
10
+ function validateMonth(month) {
11
+ return month > 0 && month < 13;
12
+ }
13
+ exports.validateMonth = validateMonth;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDaEIsUUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRTdCLFNBQWdCLFlBQVksQ0FBQyxJQUFZLEVBQUUsT0FBTyxHQUFHLGdCQUFRLEVBQUUsT0FBTyxHQUFHLGdCQUFRO0lBQzdFLE9BQU8sSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDO0FBQzlDLENBQUM7QUFGRCxvQ0FFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFhO0lBQ3ZDLE9BQU8sS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFGRCxzQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNSU5fWUVBUiA9IDE5MDA7XG5leHBvcnQgY29uc3QgTUFYX1lFQVIgPSAyMTAwO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVZZWFyKHllYXI6IG51bWJlciwgbWluWWVhciA9IE1JTl9ZRUFSLCBtYXhZZWFyID0gTUFYX1lFQVIpIHtcbiAgICByZXR1cm4geWVhciA+PSBtaW5ZZWFyICYmIHllYXIgPD0gbWF4WWVhcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTW9udGgobW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiBtb250aCA+IDAgJiYgbW9udGggPCAxMztcbn1cbiJdfQ==
@@ -0,0 +1,87 @@
1
+ import { RestApi, Model, JsonSchema, RequestValidator, JsonSchemaType, JsonSchemaVersion } from 'aws-cdk-lib/aws-apigateway';
2
+ import { ModelWithReference } from "../aws/types/model-with-reference";
3
+ /**
4
+ * Get a reference to an OpenAPI model object in a REST API.
5
+ * Can be used to supply a reference to properties of a GeoJSON feature.
6
+ * @param modelId Id of the referenced object
7
+ * @param restApiId Id of the REST API
8
+ */
9
+ export declare function getModelReference(modelId: string, restApiId: string): string;
10
+ /**
11
+ * Adds a request validator to a REST API to enforce request parameters/body requirements.
12
+ * https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html
13
+ * @param api REST API
14
+ */
15
+ export declare function addDefaultValidator(api: RestApi): RequestValidator;
16
+ /**
17
+ * Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
18
+ * This method adds a schema for _a single object._
19
+ * @param name Name of the model
20
+ * @param api REST API
21
+ * @param schema JSON Schema
22
+ * @return ModelWithReference A model object with a reference to an API Gateway model object.
23
+ */
24
+ export declare function addServiceModel(modelName: string, api: RestApi, schema: JsonSchema): ModelWithReference;
25
+ /**
26
+ * Add an empty JSON schema model to an API Gateway API.
27
+ * Usable for example if the incoming data is in XML format but some template transformation is necessary.
28
+ * @param modelName
29
+ * @param api
30
+ * @param contentType
31
+ */
32
+ export declare function addSimpleServiceModel(modelName: string, api: RestApi, contentType?: string): Model;
33
+ /**
34
+ * Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
35
+ * This method adds a schema for _an array._
36
+ * @param model
37
+ * @param api
38
+ */
39
+ export declare function createArraySchema(model: Model, api: RestApi): JsonSchema;
40
+ /**
41
+ * Creates a JSON Schema for a GeoJSON Feature. Can be used to generate OpenAPI descriptions.
42
+ * @param modelReference Reference to a model object
43
+ */
44
+ export declare function featureSchema(modelReference: string): {
45
+ schema: JsonSchemaVersion;
46
+ type: JsonSchemaType;
47
+ description: string;
48
+ required: string[];
49
+ properties: {
50
+ type: {
51
+ type: JsonSchemaType;
52
+ description: string;
53
+ enum: string[];
54
+ };
55
+ properties: {
56
+ ref: string;
57
+ };
58
+ geometry: {
59
+ type: JsonSchemaType;
60
+ description: string;
61
+ };
62
+ };
63
+ };
64
+ /**
65
+ *
66
+ * Creates a JSON Schema for a GeoJSON Feature Collection. Can be used to generate OpenAPI descriptions.
67
+ * @param modelReference Reference to a model object, in this case Features.
68
+ */
69
+ export declare function geojsonSchema(modelReference: string): {
70
+ schema: JsonSchemaVersion;
71
+ type: JsonSchemaType;
72
+ description: string;
73
+ required: string[];
74
+ properties: {
75
+ type: {
76
+ type: JsonSchemaType;
77
+ description: string;
78
+ enum: string[];
79
+ };
80
+ features: {
81
+ type: JsonSchemaType;
82
+ items: {
83
+ ref: string;
84
+ };
85
+ };
86
+ };
87
+ };