@digitraffic/common 2022.10.14-1 → 2022.10.28-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/{aws → dist/aws}/infra/api/integration.d.ts +0 -0
  2. package/dist/aws/infra/api/integration.js +52 -0
  3. package/dist/aws/infra/api/integration.js.map +1 -0
  4. package/{aws → dist/aws}/infra/api/response.d.ts +0 -0
  5. package/dist/aws/infra/api/response.js +61 -0
  6. package/dist/aws/infra/api/response.js.map +1 -0
  7. package/{aws → dist/aws}/infra/api/responses.d.ts +3 -3
  8. package/dist/aws/infra/api/responses.js +82 -0
  9. package/dist/aws/infra/api/responses.js.map +1 -0
  10. package/{aws → dist/aws}/infra/api/static-integration.d.ts +0 -0
  11. package/dist/aws/infra/api/static-integration.js +54 -0
  12. package/dist/aws/infra/api/static-integration.js.map +1 -0
  13. package/{aws → dist/aws}/infra/canaries/canary-alarm.d.ts +0 -0
  14. package/dist/aws/infra/canaries/canary-alarm.js +26 -0
  15. package/dist/aws/infra/canaries/canary-alarm.js.map +1 -0
  16. package/dist/aws/infra/canaries/canary-keys.d.ts +3 -0
  17. package/dist/aws/infra/canaries/canary-keys.js +7 -0
  18. package/dist/aws/infra/canaries/canary-keys.js.map +1 -0
  19. package/{aws → dist/aws}/infra/canaries/canary-parameters.d.ts +0 -0
  20. package/dist/aws/infra/canaries/canary-parameters.js +3 -0
  21. package/dist/aws/infra/canaries/canary-parameters.js.map +1 -0
  22. package/{aws → dist/aws}/infra/canaries/canary-role.d.ts +0 -0
  23. package/dist/aws/infra/canaries/canary-role.js +46 -0
  24. package/dist/aws/infra/canaries/canary-role.js.map +1 -0
  25. package/{aws → dist/aws}/infra/canaries/canary.d.ts +0 -0
  26. package/dist/aws/infra/canaries/canary.js +32 -0
  27. package/dist/aws/infra/canaries/canary.js.map +1 -0
  28. package/{aws → dist/aws}/infra/canaries/database-canary.d.ts +0 -0
  29. package/dist/aws/infra/canaries/database-canary.js +70 -0
  30. package/dist/aws/infra/canaries/database-canary.js.map +1 -0
  31. package/{aws → dist/aws}/infra/canaries/database-checker.d.ts +2 -2
  32. package/dist/aws/infra/canaries/database-checker.js +103 -0
  33. package/dist/aws/infra/canaries/database-checker.js.map +1 -0
  34. package/{aws → dist/aws}/infra/canaries/url-canary.d.ts +0 -3
  35. package/dist/aws/infra/canaries/url-canary.js +47 -0
  36. package/dist/aws/infra/canaries/url-canary.js.map +1 -0
  37. package/{aws → dist/aws}/infra/canaries/url-checker.d.ts +0 -0
  38. package/dist/aws/infra/canaries/url-checker.js +252 -0
  39. package/dist/aws/infra/canaries/url-checker.js.map +1 -0
  40. package/{aws → dist/aws}/infra/documentation.d.ts +0 -0
  41. package/dist/aws/infra/documentation.js +95 -0
  42. package/dist/aws/infra/documentation.js.map +1 -0
  43. package/{aws → dist/aws}/infra/scheduler.d.ts +7 -7
  44. package/dist/aws/infra/scheduler.js +31 -0
  45. package/dist/aws/infra/scheduler.js.map +1 -0
  46. package/{aws → dist/aws}/infra/security-rule.d.ts +0 -0
  47. package/dist/aws/infra/security-rule.js +39 -0
  48. package/dist/aws/infra/security-rule.js.map +1 -0
  49. package/{aws → dist/aws}/infra/sqs-integration.d.ts +0 -0
  50. package/dist/aws/infra/sqs-integration.js +93 -0
  51. package/dist/aws/infra/sqs-integration.js.map +1 -0
  52. package/{aws → dist/aws}/infra/sqs-queue.d.ts +0 -0
  53. package/dist/aws/infra/sqs-queue.js +130 -0
  54. package/dist/aws/infra/sqs-queue.js.map +1 -0
  55. package/{aws → dist/aws}/infra/stack/lambda-configs.d.ts +5 -5
  56. package/dist/aws/infra/stack/lambda-configs.js +105 -0
  57. package/dist/aws/infra/stack/lambda-configs.js.map +1 -0
  58. package/{aws → dist/aws}/infra/stack/monitoredfunction.d.ts +1 -1
  59. package/dist/aws/infra/stack/monitoredfunction.js +143 -0
  60. package/dist/aws/infra/stack/monitoredfunction.js.map +1 -0
  61. package/{aws → dist/aws}/infra/stack/rest_apis.d.ts +0 -0
  62. package/dist/aws/infra/stack/rest_apis.js +185 -0
  63. package/dist/aws/infra/stack/rest_apis.js.map +1 -0
  64. package/{aws → dist/aws}/infra/stack/stack-checking-aspect.d.ts +0 -0
  65. package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
  66. package/dist/aws/infra/stack/stack-checking-aspect.js.map +1 -0
  67. package/{aws → dist/aws}/infra/stack/stack.d.ts +5 -4
  68. package/dist/aws/infra/stack/stack.js +67 -0
  69. package/dist/aws/infra/stack/stack.js.map +1 -0
  70. package/{aws → dist/aws}/infra/stack/subscription.d.ts +3 -3
  71. package/dist/aws/infra/stack/subscription.js +42 -0
  72. package/dist/aws/infra/stack/subscription.js.map +1 -0
  73. package/{aws → dist/aws}/infra/usage-plans.d.ts +0 -0
  74. package/dist/aws/infra/usage-plans.js +42 -0
  75. package/dist/aws/infra/usage-plans.js.map +1 -0
  76. package/{aws → dist/aws}/runtime/apikey.d.ts +0 -0
  77. package/dist/aws/runtime/apikey.js +13 -0
  78. package/dist/aws/runtime/apikey.js.map +1 -0
  79. package/{aws → dist/aws}/runtime/digitraffic-integration-response.d.ts +0 -0
  80. package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
  81. package/dist/aws/runtime/digitraffic-integration-response.js.map +1 -0
  82. package/dist/aws/runtime/environment.d.ts +1 -0
  83. package/dist/aws/runtime/environment.js +12 -0
  84. package/dist/aws/runtime/environment.js.map +1 -0
  85. package/{aws → dist/aws}/runtime/messaging.d.ts +0 -0
  86. package/dist/aws/runtime/messaging.js +31 -0
  87. package/dist/aws/runtime/messaging.js.map +1 -0
  88. package/{aws → dist/aws}/runtime/s3.d.ts +0 -0
  89. package/dist/aws/runtime/s3.js +30 -0
  90. package/dist/aws/runtime/s3.js.map +1 -0
  91. package/{aws → dist/aws}/runtime/secrets/dbsecret.d.ts +0 -0
  92. package/dist/aws/runtime/secrets/dbsecret.js +96 -0
  93. package/dist/aws/runtime/secrets/dbsecret.js.map +1 -0
  94. package/{aws → dist/aws}/runtime/secrets/proxy-holder.d.ts +0 -0
  95. package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
  96. package/dist/aws/runtime/secrets/proxy-holder.js.map +1 -0
  97. package/{aws → dist/aws}/runtime/secrets/rds-holder.d.ts +0 -0
  98. package/dist/aws/runtime/secrets/rds-holder.js +27 -0
  99. package/dist/aws/runtime/secrets/rds-holder.js.map +1 -0
  100. package/{aws → dist/aws}/runtime/secrets/secret-holder.d.ts +0 -0
  101. package/dist/aws/runtime/secrets/secret-holder.js +76 -0
  102. package/dist/aws/runtime/secrets/secret-holder.js.map +1 -0
  103. package/{aws → dist/aws}/runtime/secrets/secret.d.ts +0 -0
  104. package/dist/aws/runtime/secrets/secret.js +43 -0
  105. package/dist/aws/runtime/secrets/secret.js.map +1 -0
  106. package/{aws → dist/aws}/types/errors.d.ts +4 -0
  107. package/dist/aws/types/errors.js +16 -0
  108. package/dist/aws/types/errors.js.map +1 -0
  109. package/{aws → dist/aws}/types/lambda-response.d.ts +4 -3
  110. package/dist/aws/types/lambda-response.js +33 -0
  111. package/dist/aws/types/lambda-response.js.map +1 -0
  112. package/{aws → dist/aws}/types/mediatypes.d.ts +1 -1
  113. package/dist/aws/types/mediatypes.js +16 -0
  114. package/dist/aws/types/mediatypes.js.map +1 -0
  115. package/{aws → dist/aws}/types/model-with-reference.d.ts +0 -0
  116. package/dist/aws/types/model-with-reference.js +3 -0
  117. package/dist/aws/types/model-with-reference.js.map +1 -0
  118. package/{aws → dist/aws}/types/proxytypes.d.ts +0 -0
  119. package/dist/aws/types/proxytypes.js +3 -0
  120. package/dist/aws/types/proxytypes.js.map +1 -0
  121. package/{aws → dist/aws}/types/tags.d.ts +0 -0
  122. package/dist/aws/types/tags.js +7 -0
  123. package/dist/aws/types/tags.js.map +1 -0
  124. package/{database → dist/database}/cached.d.ts +0 -0
  125. package/dist/database/cached.js +32 -0
  126. package/dist/database/cached.js.map +1 -0
  127. package/{database → dist/database}/database.d.ts +0 -0
  128. package/dist/database/database.js +70 -0
  129. package/dist/database/database.js.map +1 -0
  130. package/{database → dist/database}/last-updated.d.ts +0 -0
  131. package/dist/database/last-updated.js +54 -0
  132. package/dist/database/last-updated.js.map +1 -0
  133. package/dist/database/models.d.ts +6 -0
  134. package/dist/database/models.js +3 -0
  135. package/dist/database/models.js.map +1 -0
  136. package/{marine → dist/marine}/id_utils.d.ts +0 -0
  137. package/dist/marine/id_utils.js +33 -0
  138. package/dist/marine/id_utils.js.map +1 -0
  139. package/{marine → dist/marine}/rtz.d.ts +0 -0
  140. package/dist/marine/rtz.js +3 -0
  141. package/dist/marine/rtz.js.map +1 -0
  142. package/{test → dist/test}/asserter.d.ts +0 -0
  143. package/dist/test/asserter.js +45 -0
  144. package/dist/test/asserter.js.map +1 -0
  145. package/{test → dist/test}/db-testutils.d.ts +1 -1
  146. package/dist/test/db-testutils.js +31 -0
  147. package/dist/test/db-testutils.js.map +1 -0
  148. package/{test → dist/test}/httpserver.d.ts +2 -1
  149. package/dist/test/httpserver.js +74 -0
  150. package/dist/test/httpserver.js.map +1 -0
  151. package/{test → dist/test}/secret.d.ts +0 -0
  152. package/dist/test/secret.js +25 -0
  153. package/dist/test/secret.js.map +1 -0
  154. package/{test → dist/test}/secrets-manager.d.ts +0 -0
  155. package/dist/test/secrets-manager.js +59 -0
  156. package/dist/test/secrets-manager.js.map +1 -0
  157. package/{test → dist/test}/testutils.d.ts +0 -0
  158. package/dist/test/testutils.js +44 -0
  159. package/dist/test/testutils.js.map +1 -0
  160. package/dist/types/either.d.ts +9 -0
  161. package/dist/types/either.js +3 -0
  162. package/dist/types/either.js.map +1 -0
  163. package/{types → dist/types}/input-error.d.ts +0 -0
  164. package/dist/types/input-error.js +7 -0
  165. package/dist/types/input-error.js.map +1 -0
  166. package/{types → dist/types}/language.d.ts +0 -0
  167. package/dist/types/language.js +10 -0
  168. package/dist/types/language.js.map +1 -0
  169. package/{types → dist/types}/traffictype.d.ts +0 -0
  170. package/dist/types/traffictype.js +13 -0
  171. package/dist/types/traffictype.js.map +1 -0
  172. package/{types → dist/types}/validator.d.ts +0 -0
  173. package/dist/types/validator.js +14 -0
  174. package/dist/types/validator.js.map +1 -0
  175. package/{utils → dist/utils}/api-model.d.ts +0 -0
  176. package/dist/utils/api-model.js +129 -0
  177. package/dist/utils/api-model.js.map +1 -0
  178. package/{utils → dist/utils}/base64.d.ts +0 -0
  179. package/dist/utils/base64.js +21 -0
  180. package/dist/utils/base64.js.map +1 -0
  181. package/{utils → dist/utils}/date-utils.d.ts +0 -0
  182. package/dist/utils/date-utils.js +34 -0
  183. package/dist/utils/date-utils.js.map +1 -0
  184. package/{utils → dist/utils}/geojson-types.d.ts +0 -0
  185. package/dist/utils/geojson-types.js +18 -0
  186. package/dist/utils/geojson-types.js.map +1 -0
  187. package/{utils → dist/utils}/geometry.d.ts +0 -0
  188. package/dist/utils/geometry.js +164 -0
  189. package/dist/utils/geometry.js.map +1 -0
  190. package/{utils → dist/utils}/retry.d.ts +0 -0
  191. package/dist/utils/retry.js +50 -0
  192. package/dist/utils/retry.js.map +1 -0
  193. package/{utils → dist/utils}/slack.d.ts +0 -0
  194. package/dist/utils/slack.js +25 -0
  195. package/dist/utils/slack.js.map +1 -0
  196. package/{utils → dist/utils}/utils.d.ts +24 -0
  197. package/dist/utils/utils.js +75 -0
  198. package/dist/utils/utils.js.map +1 -0
  199. package/package.json +12 -10
  200. package/src/@types/geojson-validation/index.d.ts +4 -0
  201. package/src/aws/infra/api/integration.ts +73 -0
  202. package/src/aws/infra/api/response.ts +67 -0
  203. package/src/aws/infra/api/responses.ts +124 -0
  204. package/src/aws/infra/api/static-integration.ts +62 -0
  205. package/src/aws/infra/canaries/canary-alarm.ts +31 -0
  206. package/src/aws/infra/canaries/canary-keys.ts +3 -0
  207. package/src/aws/infra/canaries/canary-parameters.ts +19 -0
  208. package/src/aws/infra/canaries/canary-role.ts +47 -0
  209. package/src/aws/infra/canaries/canary.ts +46 -0
  210. package/src/aws/infra/canaries/database-canary.ts +98 -0
  211. package/src/aws/infra/canaries/database-checker.ts +155 -0
  212. package/src/aws/infra/canaries/url-canary.ts +74 -0
  213. package/src/aws/infra/canaries/url-checker.ts +366 -0
  214. package/src/aws/infra/documentation.ts +124 -0
  215. package/src/aws/infra/scheduler.ts +59 -0
  216. package/src/aws/infra/security-rule.ts +38 -0
  217. package/src/aws/infra/sqs-integration.ts +102 -0
  218. package/src/aws/infra/sqs-queue.ts +148 -0
  219. package/src/aws/infra/stack/lambda-configs.ts +207 -0
  220. package/src/aws/infra/stack/monitoredfunction.ts +342 -0
  221. package/src/aws/infra/stack/rest_apis.ts +223 -0
  222. package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
  223. package/src/aws/infra/stack/stack.ts +145 -0
  224. package/src/aws/infra/stack/subscription.ts +58 -0
  225. package/src/aws/infra/usage-plans.ts +41 -0
  226. package/src/aws/runtime/apikey.ts +9 -0
  227. package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
  228. package/src/aws/runtime/environment.ts +9 -0
  229. package/src/aws/runtime/messaging.ts +26 -0
  230. package/src/aws/runtime/s3.ts +44 -0
  231. package/src/aws/runtime/secrets/dbsecret.ts +116 -0
  232. package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
  233. package/src/aws/runtime/secrets/rds-holder.ts +33 -0
  234. package/src/aws/runtime/secrets/secret-holder.ts +116 -0
  235. package/src/aws/runtime/secrets/secret.ts +50 -0
  236. package/src/aws/types/errors.ts +14 -0
  237. package/src/aws/types/lambda-response.ts +43 -0
  238. package/src/aws/types/mediatypes.ts +11 -0
  239. package/src/aws/types/model-with-reference.ts +8 -0
  240. package/src/aws/types/proxytypes.ts +27 -0
  241. package/src/aws/types/tags.ts +3 -0
  242. package/src/database/cached.ts +35 -0
  243. package/src/database/database.ts +96 -0
  244. package/src/database/last-updated.ts +59 -0
  245. package/src/database/models.ts +7 -0
  246. package/src/marine/id_utils.ts +30 -0
  247. package/src/marine/rtz.ts +57 -0
  248. package/src/test/asserter.ts +48 -0
  249. package/src/test/db-testutils.ts +44 -0
  250. package/src/test/httpserver.ts +96 -0
  251. package/src/test/secret.ts +23 -0
  252. package/src/test/secrets-manager.ts +34 -0
  253. package/src/test/testutils.ts +39 -0
  254. package/src/types/either.ts +3 -0
  255. package/src/types/input-error.ts +2 -0
  256. package/src/types/language.ts +3 -0
  257. package/src/types/traffictype.ts +8 -0
  258. package/src/types/validator.ts +10 -0
  259. package/src/utils/api-model.ts +133 -0
  260. package/src/utils/base64.ts +16 -0
  261. package/src/utils/date-utils.ts +30 -0
  262. package/src/utils/geojson-types.ts +22 -0
  263. package/src/utils/geometry.ts +164 -0
  264. package/src/utils/retry.ts +49 -0
  265. package/src/utils/slack.ts +22 -0
  266. package/src/utils/utils.ts +105 -0
  267. package/aws/index.d.ts +0 -1
  268. package/aws/infra/api/index.d.ts +0 -1
  269. package/aws/infra/api/integration.js +0 -52
  270. package/aws/infra/api/response.js +0 -61
  271. package/aws/infra/api/responses.js +0 -79
  272. package/aws/infra/api/static-integration.js +0 -54
  273. package/aws/infra/canaries/canary-alarm.js +0 -26
  274. package/aws/infra/canaries/canary-parameters.js +0 -3
  275. package/aws/infra/canaries/canary-role.js +0 -46
  276. package/aws/infra/canaries/canary.js +0 -29
  277. package/aws/infra/canaries/database-canary.js +0 -55
  278. package/aws/infra/canaries/database-checker.js +0 -109
  279. package/aws/infra/canaries/url-canary.js +0 -46
  280. package/aws/infra/canaries/url-checker.js +0 -238
  281. package/aws/infra/documentation.js +0 -95
  282. package/aws/infra/scheduler.js +0 -31
  283. package/aws/infra/security-rule.js +0 -39
  284. package/aws/infra/sqs-integration.js +0 -93
  285. package/aws/infra/sqs-queue.js +0 -130
  286. package/aws/infra/stack/lambda-configs.js +0 -93
  287. package/aws/infra/stack/monitoredfunction.js +0 -135
  288. package/aws/infra/stack/rest_apis.js +0 -185
  289. package/aws/infra/stack/stack-checking-aspect.js +0 -174
  290. package/aws/infra/stack/stack.js +0 -60
  291. package/aws/infra/stack/subscription.js +0 -41
  292. package/aws/infra/usage-plans.js +0 -42
  293. package/aws/runtime/apikey.js +0 -13
  294. package/aws/runtime/digitraffic-integration-response.js +0 -26
  295. package/aws/runtime/messaging.js +0 -31
  296. package/aws/runtime/s3.js +0 -30
  297. package/aws/runtime/secrets/dbsecret.js +0 -96
  298. package/aws/runtime/secrets/proxy-holder.js +0 -26
  299. package/aws/runtime/secrets/rds-holder.js +0 -26
  300. package/aws/runtime/secrets/secret-holder.js +0 -73
  301. package/aws/runtime/secrets/secret.js +0 -43
  302. package/aws/types/errors.js +0 -9
  303. package/aws/types/lambda-response.js +0 -28
  304. package/aws/types/mediatypes.js +0 -15
  305. package/aws/types/model-with-reference.js +0 -3
  306. package/aws/types/proxytypes.js +0 -3
  307. package/aws/types/tags.js +0 -7
  308. package/database/cached.js +0 -32
  309. package/database/database.js +0 -62
  310. package/database/last-updated.js +0 -54
  311. package/index.d.ts +0 -1
  312. package/index.js +0 -18
  313. package/marine/id_utils.js +0 -33
  314. package/marine/rtz.js +0 -3
  315. package/test/asserter.js +0 -45
  316. package/test/db-testutils.js +0 -31
  317. package/test/httpserver.js +0 -67
  318. package/test/secret.js +0 -25
  319. package/test/secrets-manager.js +0 -59
  320. package/test/testutils.js +0 -44
  321. package/types/index.d.ts +0 -1
  322. package/types/input-error.js +0 -7
  323. package/types/language.js +0 -10
  324. package/types/traffictype.js +0 -13
  325. package/types/validator.js +0 -14
  326. package/utils/api-model.js +0 -129
  327. package/utils/base64.js +0 -21
  328. package/utils/date-utils.js +0 -34
  329. package/utils/geojson-types.js +0 -18
  330. package/utils/geometry.js +0 -140
  331. package/utils/retry.js +0 -50
  332. package/utils/slack.js +0 -25
  333. package/utils/utils.js +0 -40
  334. package/yarn-error.log +0 -103
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMonth = exports.validateYear = exports.MAX_YEAR = exports.MIN_YEAR = void 0;
4
+ exports.MIN_YEAR = 1900;
5
+ exports.MAX_YEAR = 2100;
6
+ function validateYear(year, minYear = exports.MIN_YEAR, maxYear = exports.MAX_YEAR) {
7
+ return year >= minYear && year <= maxYear;
8
+ }
9
+ exports.validateYear = validateYear;
10
+ function validateMonth(month) {
11
+ return month > 0 && month < 13;
12
+ }
13
+ exports.validateMonth = validateMonth;
14
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/types/validator.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,QAAQ,GAAG,IAAI,CAAC;AAE7B,SAAgB,YAAY,CAAC,IAAY,EAAE,OAAO,GAAG,gBAAQ,EAAE,OAAO,GAAG,gBAAQ;IAC7E,OAAO,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC;AAC9C,CAAC;AAFD,oCAEC;AAED,SAAgB,aAAa,CAAC,KAAa;IACvC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;AACnC,CAAC;AAFD,sCAEC"}
File without changes
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.geojsonSchema = exports.featureSchema = exports.createArraySchema = exports.addSimpleServiceModel = exports.addServiceModel = exports.addDefaultValidator = exports.getModelReference = void 0;
4
+ const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
5
+ /**
6
+ * Get a reference to an OpenAPI model object in a REST API.
7
+ * Can be used to supply a reference to properties of a GeoJSON feature.
8
+ * @param modelId Id of the referenced object
9
+ * @param restApiId Id of the REST API
10
+ */
11
+ function getModelReference(modelId, restApiId) {
12
+ return `https://apigateway.amazonaws.com/restapis/${restApiId}/models/${modelId}`;
13
+ }
14
+ exports.getModelReference = getModelReference;
15
+ /**
16
+ * Adds a request validator to a REST API to enforce request parameters/body requirements.
17
+ * https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html
18
+ * @param api REST API
19
+ */
20
+ function addDefaultValidator(api) {
21
+ return api.addRequestValidator('DefaultValidator', {
22
+ validateRequestParameters: true,
23
+ validateRequestBody: true,
24
+ });
25
+ }
26
+ exports.addDefaultValidator = addDefaultValidator;
27
+ /**
28
+ * Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
29
+ * This method adds a schema for _a single object._
30
+ * @param name Name of the model
31
+ * @param api REST API
32
+ * @param schema JSON Schema
33
+ * @return ModelWithReference A model object with a reference to an API Gateway model object.
34
+ */
35
+ function addServiceModel(modelName, api, schema) {
36
+ const mwr = api.addModel(modelName, {
37
+ contentType: 'application/json',
38
+ modelName,
39
+ schema,
40
+ });
41
+ mwr.modelReference = getModelReference(mwr.modelId, api.restApiId);
42
+ return mwr;
43
+ }
44
+ exports.addServiceModel = addServiceModel;
45
+ /**
46
+ * Add an empty JSON schema model to an API Gateway API.
47
+ * Usable for example if the incoming data is in XML format but some template transformation is necessary.
48
+ * @param modelName
49
+ * @param api
50
+ * @param contentType
51
+ */
52
+ function addSimpleServiceModel(modelName, api, contentType = 'application/xml') {
53
+ return api.addModel(modelName, {
54
+ contentType,
55
+ modelName,
56
+ schema: {},
57
+ });
58
+ }
59
+ exports.addSimpleServiceModel = addSimpleServiceModel;
60
+ /**
61
+ * Adds a JSON Schema model to an API Gateway API. Can be used later to generate OpenAPI specifications.
62
+ * This method adds a schema for _an array._
63
+ * @param model
64
+ * @param api
65
+ */
66
+ function createArraySchema(model, api) {
67
+ return {
68
+ type: aws_apigateway_1.JsonSchemaType.ARRAY,
69
+ items: {
70
+ ref: getModelReference(model.modelId, api.restApiId),
71
+ },
72
+ };
73
+ }
74
+ exports.createArraySchema = createArraySchema;
75
+ /**
76
+ * Creates a JSON Schema for a GeoJSON Feature. Can be used to generate OpenAPI descriptions.
77
+ * @param modelReference Reference to a model object
78
+ */
79
+ function featureSchema(modelReference) {
80
+ return {
81
+ schema: aws_apigateway_1.JsonSchemaVersion.DRAFT4,
82
+ type: aws_apigateway_1.JsonSchemaType.OBJECT,
83
+ description: 'GeoJson Feature',
84
+ required: ['type', 'properties', 'geometry'],
85
+ properties: {
86
+ type: {
87
+ type: aws_apigateway_1.JsonSchemaType.STRING,
88
+ description: 'Feature',
89
+ enum: ['Feature'],
90
+ },
91
+ properties: {
92
+ ref: modelReference,
93
+ },
94
+ geometry: {
95
+ type: aws_apigateway_1.JsonSchemaType.OBJECT,
96
+ description: 'GeoJSON geometry',
97
+ },
98
+ },
99
+ };
100
+ }
101
+ exports.featureSchema = featureSchema;
102
+ /**
103
+ *
104
+ * Creates a JSON Schema for a GeoJSON Feature Collection. Can be used to generate OpenAPI descriptions.
105
+ * @param modelReference Reference to a model object, in this case Features.
106
+ */
107
+ function geojsonSchema(modelReference) {
108
+ return {
109
+ schema: aws_apigateway_1.JsonSchemaVersion.DRAFT4,
110
+ type: aws_apigateway_1.JsonSchemaType.OBJECT,
111
+ description: 'GeoJson FeatureCollection',
112
+ required: ['type', 'features'],
113
+ properties: {
114
+ type: {
115
+ type: aws_apigateway_1.JsonSchemaType.STRING,
116
+ description: 'FeatureCollection',
117
+ enum: ['FeatureCollection'],
118
+ },
119
+ features: {
120
+ type: aws_apigateway_1.JsonSchemaType.ARRAY,
121
+ items: {
122
+ ref: modelReference,
123
+ },
124
+ },
125
+ },
126
+ };
127
+ }
128
+ exports.geojsonSchema = geojsonSchema;
129
+ //# sourceMappingURL=api-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-model.js","sourceRoot":"","sources":["../../src/utils/api-model.ts"],"names":[],"mappings":";;;AAAA,+DAOoC;AAGpC;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAChE,OAAO,6CAA6C,SAAS,WAAW,OAAO,EAAE,CAAC;AACtF,CAAC;AAFD,8CAEC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,GAAY;IAC5C,OAAO,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;QAC/C,yBAAyB,EAAE,IAAI;QAC/B,mBAAmB,EAAE,IAAI;KAC5B,CAAC,CAAC;AACP,CAAC;AALD,kDAKC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,SAAiB,EAAE,GAAY,EAAE,MAAkB;IAC/E,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QAChC,WAAW,EAAE,kBAAkB;QAC/B,SAAS;QACT,MAAM;KACT,CAAuB,CAAC;IACzB,GAAG,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC;AARD,0CAQC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,SAAiB,EAAE,GAAY,EAAE,WAAW,GAAG,iBAAiB;IAClG,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE;QAC3B,WAAW;QACX,SAAS;QACT,MAAM,EAAE,EAAE;KACb,CAAC,CAAC;AACP,CAAC;AAND,sDAMC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAY,EAAE,GAAY;IACxD,OAAO;QACH,IAAI,EAAE,+BAAc,CAAC,KAAK;QAC1B,KAAK,EAAE;YACH,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;SACvD;KACJ,CAAC;AACN,CAAC;AAPD,8CAOC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,cAAsB;IAChD,OAAO;QACH,MAAM,EAAE,kCAAiB,CAAC,MAAM;QAChC,IAAI,EAAE,+BAAc,CAAC,MAAM;QAC3B,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;QAC5C,UAAU,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,CAAC,SAAS,CAAC;aACpB;YACD,UAAU,EAAE;gBACR,GAAG,EAAE,cAAc;aACtB;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,kBAAkB;aAClC;SACJ;KACJ,CAAC;AACN,CAAC;AArBD,sCAqBC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,cAAsB;IAChD,OAAO;QACH,MAAM,EAAE,kCAAiB,CAAC,MAAM;QAChC,IAAI,EAAE,+BAAc,CAAC,MAAM;QAC3B,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9B,UAAU,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,+BAAc,CAAC,MAAM;gBAC3B,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,CAAC,mBAAmB,CAAC;aAC9B;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,+BAAc,CAAC,KAAK;gBAC1B,KAAK,EAAE;oBACH,GAAG,EAAE,cAAc;iBACtB;aACJ;SACJ;KACJ,CAAC;AACN,CAAC;AApBD,sCAoBC"}
File without changes
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeBase64 = exports.decodeBase64ToAscii = void 0;
4
+ /**
5
+ * Decode given string from base64 to ascii
6
+ * @param str string
7
+ */
8
+ function decodeBase64ToAscii(str) {
9
+ return decodeBase64(str, 'ascii');
10
+ }
11
+ exports.decodeBase64ToAscii = decodeBase64ToAscii;
12
+ /**
13
+ * Decode given string from base64 to given encoding
14
+ * @param str
15
+ * @param encoding
16
+ */
17
+ function decodeBase64(str, encoding) {
18
+ return Buffer.from(str, 'base64').toString(encoding);
19
+ }
20
+ exports.decodeBase64 = decodeBase64;
21
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,kDAEC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,QAAwB;IAC9D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAFD,oCAEC"}
File without changes
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dateFromIsoString = exports.countDiffInSeconds = exports.countDiffMs = void 0;
4
+ /**
5
+ * Counts difference in milliseconds between dates.
6
+ * @param start
7
+ * @param end
8
+ */
9
+ function countDiffMs(start, end) {
10
+ return end.getTime() - start.getTime();
11
+ }
12
+ exports.countDiffMs = countDiffMs;
13
+ /**
14
+ * Counts difference in seconds between dates.
15
+ * @param start
16
+ * @param end
17
+ */
18
+ function countDiffInSeconds(start, end) {
19
+ return countDiffMs(start, end) / 1000;
20
+ }
21
+ exports.countDiffInSeconds = countDiffInSeconds;
22
+ /**
23
+ * Converts ISO 8601 date-time -string to Date object
24
+ * @param isoString to convert
25
+ */
26
+ function dateFromIsoString(isoString) {
27
+ const parsed = new Date(isoString);
28
+ if (!(parsed instanceof Date) || isNaN(parsed.getTime())) {
29
+ throw new Error(`Invalid ISO-DATE -string: ${isoString}`);
30
+ }
31
+ return parsed;
32
+ }
33
+ exports.dateFromIsoString = dateFromIsoString;
34
+ //# sourceMappingURL=date-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/utils/date-utils.ts"],"names":[],"mappings":";;;AACA;;;;GAIG;AACH,SAAgB,WAAW,CAAC,KAAW,EAAE,GAAS;IAC9C,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC;AAFD,kCAEC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAW,EAAE,GAAS;IACrD,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC;AACxC,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IAC/C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;KAC7D;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAND,8CAMC"}
File without changes
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeoJsonLineString = exports.GeoJsonPoint = void 0;
4
+ class GeoJsonPoint {
5
+ constructor(coordinates) {
6
+ this.type = "Point";
7
+ this.coordinates = coordinates;
8
+ }
9
+ }
10
+ exports.GeoJsonPoint = GeoJsonPoint;
11
+ class GeoJsonLineString {
12
+ constructor(coordinates) {
13
+ this.type = "LineString";
14
+ this.coordinates = coordinates;
15
+ }
16
+ }
17
+ exports.GeoJsonLineString = GeoJsonLineString;
18
+ //# sourceMappingURL=geojson-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geojson-types.js","sourceRoot":"","sources":["../../src/utils/geojson-types.ts"],"names":[],"mappings":";;;AAKA,MAAa,YAAY;IAIrB,YAAY,WAAqB;QAHxB,SAAI,GAAG,OAAO,CAAC;QAIpB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AAPD,oCAOC;AAED,MAAa,iBAAiB;IAI1B,YAAY,WAAuB;QAH1B,SAAI,GAAG,YAAY,CAAC;QAIzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CACJ;AAPD,8CAOC"}
File without changes
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.positionToList = exports.createGmlLineString = exports.distanceBetweenPositionsInM = exports.areDistinctPositions = exports.distanceBetweenPositionsInKm = exports.isFeatureCollection = exports.isValidGeoJson = exports.createFeatureCollection = exports.createGeometry = exports.SRID_WGS84 = void 0;
27
+ const geoJsonValidator = __importStar(require("geojson-validation"));
28
+ exports.SRID_WGS84 = 4326;
29
+ /**
30
+ * Creates WKT geometry from GeoJSON geometry
31
+ * @param geometry GeoJson geometry to convert to WKT
32
+ */
33
+ function createGeometry(geometry) {
34
+ if (geometry.type === "LineString") {
35
+ const coordinates = linestring(geometry.coordinates);
36
+ return `LINESTRING(${coordinates})`;
37
+ }
38
+ else if (geometry.type === "Point") {
39
+ const coordinates = coordinatePair(geometry.coordinates);
40
+ return `POINT(${coordinates})`;
41
+ }
42
+ else if (geometry.type === "Polygon") {
43
+ const coordinates = polygon(geometry.coordinates);
44
+ return `POLYGON(${coordinates})`;
45
+ }
46
+ else if (geometry.type === "MultiPolygon") {
47
+ const coordinates = multiPolygon(geometry.coordinates);
48
+ return `MULTIPOLYGON(${coordinates})`;
49
+ }
50
+ console.error("unsupported locationType=%s", geometry.type);
51
+ return "POLYGON EMPTY";
52
+ }
53
+ exports.createGeometry = createGeometry;
54
+ function linestring(coordinates) {
55
+ return coordinates.map((c) => coordinatePair(c)).join(",");
56
+ }
57
+ function polygon(coordinates) {
58
+ const list = coordinates.map((c) => linestring(c)).join(",");
59
+ return `(${list})`;
60
+ }
61
+ function multiPolygon(coordinates) {
62
+ const list = coordinates.map((c) => polygon(c)).join(",");
63
+ return `(${list})`;
64
+ }
65
+ function coordinatePair(coordinate) {
66
+ return `${coordinate[0]} ${coordinate[1]}`;
67
+ }
68
+ /**
69
+ * Create a GeoJSON FeatureCollection from a list of GeoJSON features with a 'last updated' property
70
+ * @param features List of Features
71
+ * @param lastUpdated Last updated date
72
+ */
73
+ function createFeatureCollection(features, lastUpdated) {
74
+ return {
75
+ type: "FeatureCollection",
76
+ lastUpdated: lastUpdated,
77
+ features: features,
78
+ };
79
+ }
80
+ exports.createFeatureCollection = createFeatureCollection;
81
+ function isValidGeoJson(json) {
82
+ return geoJsonValidator.valid(json);
83
+ }
84
+ exports.isValidGeoJson = isValidGeoJson;
85
+ function isFeatureCollection(json) {
86
+ return geoJsonValidator.isFeatureCollection(json);
87
+ }
88
+ exports.isFeatureCollection = isFeatureCollection;
89
+ const DEGREES_TO_RADIANS = 0.017453292519943295; // = Math.PI / 180
90
+ const EARTH_RADIUS_KM = 6371;
91
+ /**
92
+ * Returns the distance between this and given GeoJSON point in kilometers. Doesn't take in account altitude.
93
+ * Based on the following Stack Overflow question:
94
+ * http://stackoverflow.com/questions/27928/calculate-distance-between-two-latitude-longitude-points-haversine-formula,
95
+ * which is based on https://en.wikipedia.org/wiki/Haversine_formula (error rate: ~0.55%).
96
+ */
97
+ function distanceBetweenWGS84PointsInKm(fromXLon, fromYLat, toXLon, toYLat) {
98
+ const diffLat = toRadians(toYLat - fromYLat);
99
+ const diffLon = toRadians(toXLon - fromXLon);
100
+ const a = Math.sin(diffLat / 2) * Math.sin(diffLat / 2) +
101
+ Math.cos(toRadians(fromYLat)) *
102
+ Math.cos(toRadians(toYLat)) *
103
+ Math.sin(diffLon / 2) *
104
+ Math.sin(diffLon / 2);
105
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
106
+ return EARTH_RADIUS_KM * c;
107
+ }
108
+ /**
109
+ * Calculates distance between two GeoJSON points (WGS84)
110
+ * @param pos1
111
+ * @param pos2
112
+ */
113
+ function distanceBetweenPositionsInKm(pos1, pos2) {
114
+ return distanceBetweenWGS84PointsInKm(pos1[0], pos1[1], pos2[0], pos2[1]);
115
+ }
116
+ exports.distanceBetweenPositionsInKm = distanceBetweenPositionsInKm;
117
+ function areDistinctPositions(previous, next) {
118
+ return previous[0] !== next[0] || previous[1] !== next[1];
119
+ }
120
+ exports.areDistinctPositions = areDistinctPositions;
121
+ /**
122
+ * Calculates distance between two GeoJSON points (WGS84)
123
+ * @param pos1
124
+ * @param pos2
125
+ */
126
+ function distanceBetweenPositionsInM(pos1, pos2) {
127
+ return distanceBetweenPositionsInKm(pos1, pos2) * 1000; // km -> m
128
+ }
129
+ exports.distanceBetweenPositionsInM = distanceBetweenPositionsInM;
130
+ function createGmlLineString(geometry, srsName = "EPSG:4326") {
131
+ const posList = createPosList(geometry);
132
+ return {
133
+ srsName,
134
+ posList,
135
+ };
136
+ }
137
+ exports.createGmlLineString = createGmlLineString;
138
+ function createPosList(geometry) {
139
+ if (geometry.type === "Point") {
140
+ return positionToList(geometry.coordinates);
141
+ }
142
+ else if (geometry.type === "LineString") {
143
+ return lineStringToList(geometry.coordinates);
144
+ }
145
+ else if (geometry.type === "Polygon") {
146
+ return polygonToList(geometry.coordinates);
147
+ }
148
+ throw new Error("unknown geometry type " + JSON.stringify(geometry));
149
+ }
150
+ function polygonToList(positions, precision = 8) {
151
+ return positions.map((p) => lineStringToList(p, precision)).join(" ");
152
+ }
153
+ function lineStringToList(positions, precision = 8) {
154
+ return positions.map((p) => positionToList(p, precision)).join(" ");
155
+ }
156
+ function positionToList(position, precision = 8) {
157
+ return position.map((n) => n.toPrecision(precision)).join(" ");
158
+ }
159
+ exports.positionToList = positionToList;
160
+ // Converts numeric degrees to radians
161
+ function toRadians(angdeg) {
162
+ return angdeg * DEGREES_TO_RADIANS;
163
+ }
164
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/utils/geometry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,qEAAuD;AAE1C,QAAA,UAAU,GAAG,IAAI,CAAC;AAE/B;;;GAGG;AACH,SAAgB,cAAc,CAAC,QAAkB;IAC7C,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;QAChC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAErD,OAAO,cAAc,WAAW,GAAG,CAAC;KACvC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;QAClC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEzD,OAAO,SAAS,WAAW,GAAG,CAAC;KAClC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;QACpC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElD,OAAO,WAAW,WAAW,GAAG,CAAC;KACpC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE;QACzC,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEvD,OAAO,gBAAgB,WAAW,GAAG,CAAC;KACzC;IAED,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,eAAe,CAAC;AAC3B,CAAC;AArBD,wCAqBC;AAED,SAAS,UAAU,CAAC,WAAuB;IACvC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,OAAO,CAAC,WAAyB;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,OAAO,IAAI,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,WAA2B;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,OAAO,IAAI,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,UAAoB;IACxC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CACnC,QAAmB,EACnB,WAAwB;IAExB,OAAO;QACH,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,QAAQ;KACA,CAAC;AAC3B,CAAC;AATD,0DASC;AAED,SAAgB,cAAc,CAAI,IAAO;IACrC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAFD,wCAEC;AAED,SAAgB,mBAAmB,CAAI,IAAO;IAC1C,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAFD,kDAEC;AAED,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,kBAAkB;AACnE,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;;;GAKG;AACH,SAAS,8BAA8B,CACnC,QAAgB,EAChB,QAAgB,EAChB,MAAc,EACd,MAAc;IAEd,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAE7C,MAAM,CAAC,GACH,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,eAAe,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,IAAc,EAAE,IAAc;IACvE,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAFD,oEAEC;AAED,SAAgB,oBAAoB,CAAC,QAAkB,EAAE,IAAc;IACnE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAFD,oDAEC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,IAAc,EAAE,IAAc;IACtE,OAAO,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU;AACtE,CAAC;AAFD,kEAEC;AAED,SAAgB,mBAAmB,CAAC,QAAkB,EAAE,OAAO,GAAG,WAAW;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExC,OAAO;QACH,OAAO;QACP,OAAO;KACV,CAAC;AACN,CAAC;AAPD,kDAOC;AAED,SAAS,aAAa,CAAC,QAAkB;IACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;QAC3B,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KAC/C;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;QACvC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KACjD;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;QACpC,OAAO,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KAC9C;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,SAAuB,EAAE,SAAS,GAAG,CAAC;IACzD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAqB,EAAE,SAAS,GAAG,CAAC;IAC1D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAgB,cAAc,CAAC,QAAkB,EAAE,SAAS,GAAG,CAAC;IAC5D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,CAAC;AAFD,wCAEC;AAED,sCAAsC;AACtC,SAAS,SAAS,CAAC,MAAc;IAC7B,OAAO,MAAM,GAAG,kBAAkB,CAAC;AACvC,CAAC"}
File without changes
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = exports.RetryLogError = void 0;
4
+ var RetryLogError;
5
+ (function (RetryLogError) {
6
+ RetryLogError[RetryLogError["LOG_ALL_AS_ERRORS"] = 0] = "LOG_ALL_AS_ERRORS";
7
+ RetryLogError[RetryLogError["LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS"] = 1] = "LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS";
8
+ RetryLogError[RetryLogError["NO_LOGGING"] = 2] = "NO_LOGGING";
9
+ })(RetryLogError = exports.RetryLogError || (exports.RetryLogError = {}));
10
+ /**
11
+ * Utility function for retrying async functions.
12
+ * @param asyncFn Function
13
+ * @param retries Amount of retries, default is 3. If set to <= 0, no retries will be done. Using non-finite numbers will throw an error. The maximum allowed retry count is 100.
14
+ * @param logError Logging options
15
+ * @return Promise return value
16
+ */
17
+ async function retry(asyncFn, retries = 3, logError = RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS) {
18
+ if (!isFinite(retries)) {
19
+ throw new Error('Only finite numbers are supported');
20
+ }
21
+ if (retries > 100) {
22
+ throw new Error('Exceeded the maximum retry count of 100');
23
+ }
24
+ try {
25
+ return await asyncFn();
26
+ }
27
+ catch (error) {
28
+ const remainingRetries = retries - 1;
29
+ const errorMessage = 'method=retry error';
30
+ if (logError === RetryLogError.LOG_ALL_AS_ERRORS) {
31
+ console.error(errorMessage, error);
32
+ }
33
+ else if (logError === RetryLogError.LOG_LAST_RETRY_AS_ERROR_OTHERS_AS_WARNS) {
34
+ if (remainingRetries < 0) {
35
+ console.error(errorMessage, error);
36
+ }
37
+ else {
38
+ console.warn(errorMessage, error);
39
+ }
40
+ }
41
+ if (remainingRetries < 0) {
42
+ console.warn('method=retry no retries left');
43
+ throw new Error('No retries left');
44
+ }
45
+ console.warn('method=retry invocation failed, retrying with remaining retries %d', remainingRetries);
46
+ return retry(asyncFn, remainingRetries, logError);
47
+ }
48
+ }
49
+ exports.retry = retry;
50
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,2EAAiB,CAAA;IACjB,uHAAuC,CAAA;IACvC,6DAAU,CAAA;AACd,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AAED;;;;;;GAMG;AACI,KAAK,UAAU,KAAK,CAAI,OAAyB,EACpD,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,aAAa,CAAC,uCAAuC;IAEhE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACxD;IACD,IAAI,OAAO,GAAG,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC9D;IACD,IAAI;QACA,OAAO,MAAM,OAAO,EAAE,CAAC;KAC1B;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,gBAAgB,GAAG,OAAO,GAAG,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,oBAAoB,CAAC;QAC1C,IAAI,QAAQ,KAAK,aAAa,CAAC,iBAAiB,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;SACtC;aAAM,IAAI,QAAQ,KAAK,aAAa,CAAC,uCAAuC,EAAE;YAC3E,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACtC;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aACrC;SACJ;QAED,IAAI,gBAAgB,GAAG,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;QACD,OAAO,CAAC,IAAI,CAAC,oEAAoE,EAAE,gBAAgB,CAAC,CAAC;QACrG,OAAO,KAAK,CAAC,OAAO,EAChB,gBAAgB,EAChB,QAAQ,CAAC,CAAC;KACjB;AACL,CAAC;AAnCD,sBAmCC"}
File without changes
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SlackApi = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ class SlackApi {
9
+ constructor(url) {
10
+ this.url = url;
11
+ }
12
+ async notify(text) {
13
+ try {
14
+ console.info('method=notify Notifying Slack');
15
+ await axios_1.default.post(this.url, {
16
+ text,
17
+ });
18
+ }
19
+ catch (error) {
20
+ console.error('method=notify Slack notify failed!');
21
+ }
22
+ }
23
+ }
24
+ exports.SlackApi = SlackApi;
25
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/utils/slack.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,QAAQ;IAIjB,YAAY,GAAW;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,IAAI;YACA,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,MAAM,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI;aACP,CAAC,CAAC;SACN;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;IACL,CAAC;CAEJ;AAnBD,4BAmBC"}
@@ -19,4 +19,28 @@
19
19
  * @param a first array to compare
20
20
  * @param b second array to compare
21
21
  */
22
+ import { Either } from "../types/either";
22
23
  export declare function bothArraysHasSameValues(a: null | undefined | unknown[], b: null | undefined | unknown[]): boolean;
24
+ /**
25
+ * Returns the last item on the array. If the array is empty, throws an error!
26
+ */
27
+ export declare function getLast<T>(array: T[], sortFunction?: (a: T) => number): T;
28
+ /**
29
+ * Returns the first item on the array. If the array is empty, throws an error!
30
+ */
31
+ export declare function getFirst<T>(array: T[], sortFunction?: (a: T) => number): T;
32
+ /**
33
+ * Gets environment variable. Throws error if variable is not found.
34
+ *
35
+ * @param key Environment key
36
+ * @return string
37
+ */
38
+ export declare function getEnvVariable(key: string): string;
39
+ /**
40
+ * Gets environment variable. Safe version returns object with either ok or error status.
41
+ * Easier to use for recovery than catching an error.
42
+ *
43
+ * @param key Environment key
44
+ * @return Either<string>
45
+ */
46
+ export declare function getEnvVariableSafe(key: string): Either<string>;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvVariableSafe = exports.getEnvVariable = exports.getFirst = exports.getLast = exports.bothArraysHasSameValues = void 0;
4
+ function bothArraysHasSameValues(a, b) {
5
+ if ((a && !b) || (!a && b)) {
6
+ return false;
7
+ }
8
+ else if (!a && !b) {
9
+ return true;
10
+ }
11
+ const aSet = new Set(a);
12
+ const bSet = new Set(b);
13
+ if (aSet.size !== bSet.size) {
14
+ return false;
15
+ }
16
+ return Array.from(aSet).every((value) => bSet.has(value));
17
+ }
18
+ exports.bothArraysHasSameValues = bothArraysHasSameValues;
19
+ /**
20
+ * Returns the last item on the array. If the array is empty, throws an error!
21
+ */
22
+ function getLast(array, sortFunction) {
23
+ return getFirstOrLast(false, array, sortFunction);
24
+ }
25
+ exports.getLast = getLast;
26
+ /**
27
+ * Returns the first item on the array. If the array is empty, throws an error!
28
+ */
29
+ function getFirst(array, sortFunction) {
30
+ return getFirstOrLast(true, array, sortFunction);
31
+ }
32
+ exports.getFirst = getFirst;
33
+ function getFirstOrLast(getFirst, array, sortFunction) {
34
+ if (array.length == 0) {
35
+ throw new Error(`can't get ${getFirst ? "first" : "last"} from empty array!`);
36
+ }
37
+ const index = getFirst ? 0 : array.length - 1;
38
+ if (sortFunction) {
39
+ return array.sort(sortFunction)[index];
40
+ }
41
+ return array[index];
42
+ }
43
+ /**
44
+ * Gets environment variable. Throws error if variable is not found.
45
+ *
46
+ * @param key Environment key
47
+ * @return string
48
+ */
49
+ function getEnvVariable(key) {
50
+ const either = getEnvVariableSafe(key);
51
+ if (either.result === "error") {
52
+ throw new Error(either.message);
53
+ }
54
+ return either.value;
55
+ }
56
+ exports.getEnvVariable = getEnvVariable;
57
+ /**
58
+ * Gets environment variable. Safe version returns object with either ok or error status.
59
+ * Easier to use for recovery than catching an error.
60
+ *
61
+ * @param key Environment key
62
+ * @return Either<string>
63
+ */
64
+ function getEnvVariableSafe(key) {
65
+ const value = process.env[key];
66
+ if (value === undefined) {
67
+ return {
68
+ result: "error",
69
+ message: `Error: environment variable "${key}" is undefined.`,
70
+ };
71
+ }
72
+ return { result: "ok", value };
73
+ }
74
+ exports.getEnvVariableSafe = getEnvVariableSafe;
75
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,uBAAuB,CACnC,CAA+B,EAC/B,CAA+B;IAE/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC;KAChB;SAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACjB,OAAO,IAAI,CAAC;KACf;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;QACzB,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAfD,0DAeC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAI,KAAU,EAAE,YAA+B;IAClE,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAI,KAAU,EAAE,YAA+B;IACnE,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAFD,4BAEC;AAED,SAAS,cAAc,CACnB,QAAiB,EACjB,KAAU,EACV,YAA+B;IAE/B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CACX,aAAa,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAC/D,CAAC;KACL;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,IAAI,YAAY,EAAE;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACnC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC;AAND,wCAMC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO;YACH,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,gCAAgC,GAAG,iBAAiB;SAChE,CAAC;KACL;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AATD,gDASC"}