@bitblit/ratchet-epsilon-common 4.0.85-alpha

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 (409) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/License.txt +13 -0
  3. package/README.md +242 -0
  4. package/dist/cjs/background/background-dynamo-log-table-handler.js +38 -0
  5. package/dist/cjs/background/background-entry.js +2 -0
  6. package/dist/cjs/background/background-execution-event-type.js +11 -0
  7. package/dist/cjs/background/background-execution-event.js +2 -0
  8. package/dist/cjs/background/background-execution-listener.js +2 -0
  9. package/dist/cjs/background/background-handler.js +269 -0
  10. package/dist/cjs/background/background-http-adapter-handler.js +127 -0
  11. package/dist/cjs/background/background-meta-response-internal.js +2 -0
  12. package/dist/cjs/background/background-process-handling.js +8 -0
  13. package/dist/cjs/background/background-process-log-table-entry.js +2 -0
  14. package/dist/cjs/background/background-queue-response-internal.js +2 -0
  15. package/dist/cjs/background/background-validator.js +88 -0
  16. package/dist/cjs/background/epsilon-background-process-error.js +93 -0
  17. package/dist/cjs/background/internal-background-entry.js +2 -0
  18. package/dist/cjs/background/manager/abstract-background-manager.js +92 -0
  19. package/dist/cjs/background/manager/aws-sqs-sns-background-manager.js +153 -0
  20. package/dist/cjs/background/manager/background-manager-like.js +2 -0
  21. package/dist/cjs/background/manager/single-thread-local-background-manager.js +49 -0
  22. package/dist/cjs/background/s3-background-transaction-logger.js +54 -0
  23. package/dist/cjs/build/ratchet-epsilon-common-info.js +18 -0
  24. package/dist/cjs/built-in/background/echo-processor.js +18 -0
  25. package/dist/cjs/built-in/background/log-and-enqueue-echo-processor.js +16 -0
  26. package/dist/cjs/built-in/background/log-message-background-error-processor.js +10 -0
  27. package/dist/cjs/built-in/background/no-op-processor.js +13 -0
  28. package/dist/cjs/built-in/background/retry-processor.js +41 -0
  29. package/dist/cjs/built-in/background/sample-delay-processor.js +16 -0
  30. package/dist/cjs/built-in/background/sample-input-validated-processor-data.js +2 -0
  31. package/dist/cjs/built-in/background/sample-input-validated-processor.js +16 -0
  32. package/dist/cjs/built-in/built-in-trace-id-generators.js +25 -0
  33. package/dist/cjs/built-in/daemon/daemon-authorizer-function.js +2 -0
  34. package/dist/cjs/built-in/daemon/daemon-config.js +2 -0
  35. package/dist/cjs/built-in/daemon/daemon-group-selection-function.js +2 -0
  36. package/dist/cjs/built-in/daemon/daemon-handler.js +62 -0
  37. package/dist/cjs/built-in/daemon/daemon-process-state-list.js +2 -0
  38. package/dist/cjs/built-in/http/apollo-filter.js +63 -0
  39. package/dist/cjs/built-in/http/built-in-auth-filters.js +115 -0
  40. package/dist/cjs/built-in/http/built-in-authorizers.js +43 -0
  41. package/dist/cjs/built-in/http/built-in-filters.js +222 -0
  42. package/dist/cjs/built-in/http/built-in-handlers.js +73 -0
  43. package/dist/cjs/built-in/http/log-level-manipulation-filter.js +20 -0
  44. package/dist/cjs/built-in/http/run-handler-as-filter.js +64 -0
  45. package/dist/cjs/cli-bootstrap/epsilon-run-background-process-from-command-line-dry-run.js +20 -0
  46. package/dist/cjs/config/background/background-aws-config.js +2 -0
  47. package/dist/cjs/config/background/background-config.js +2 -0
  48. package/dist/cjs/config/background/background-error-processor.js +2 -0
  49. package/dist/cjs/config/background/background-processor.js +2 -0
  50. package/dist/cjs/config/background/background-transaction-log.js +2 -0
  51. package/dist/cjs/config/background/background-transaction-logger.js +2 -0
  52. package/dist/cjs/config/cron/abstract-cron-entry.js +2 -0
  53. package/dist/cjs/config/cron/cron-background-entry.js +2 -0
  54. package/dist/cjs/config/cron/cron-config.js +2 -0
  55. package/dist/cjs/config/dynamo-db-config.js +2 -0
  56. package/dist/cjs/config/epsilon-config.js +2 -0
  57. package/dist/cjs/config/epsilon-lambda-event-handler.js +2 -0
  58. package/dist/cjs/config/epsilon-logger-config.js +2 -0
  59. package/dist/cjs/config/generic-aws-event-handler-function.js +2 -0
  60. package/dist/cjs/config/http/authorizer-function.js +2 -0
  61. package/dist/cjs/config/http/epsilon-authorization-context.js +2 -0
  62. package/dist/cjs/config/http/extended-api-gateway-event.js +2 -0
  63. package/dist/cjs/config/http/filter-chain-context.js +2 -0
  64. package/dist/cjs/config/http/filter-function.js +2 -0
  65. package/dist/cjs/config/http/handler-function.js +2 -0
  66. package/dist/cjs/config/http/http-config.js +2 -0
  67. package/dist/cjs/config/http/http-processing-config.js +2 -0
  68. package/dist/cjs/config/http/mapped-http-processing-config.js +2 -0
  69. package/dist/cjs/config/http/null-returned-object-handling.js +9 -0
  70. package/dist/cjs/config/inter-api/inter-api-aws-config.js +2 -0
  71. package/dist/cjs/config/inter-api/inter-api-config.js +2 -0
  72. package/dist/cjs/config/inter-api/inter-api-process-mapping.js +2 -0
  73. package/dist/cjs/config/logging-trace-id-generator.js +2 -0
  74. package/dist/cjs/config/open-api/open-api-document-components.js +2 -0
  75. package/dist/cjs/config/open-api/open-api-document-path.js +2 -0
  76. package/dist/cjs/config/open-api/open-api-document.js +2 -0
  77. package/dist/cjs/config/s3-config.js +2 -0
  78. package/dist/cjs/config/sns-config.js +2 -0
  79. package/dist/cjs/epsilon-build-properties.js +28 -0
  80. package/dist/cjs/epsilon-constants.js +49 -0
  81. package/dist/cjs/epsilon-global-handler.js +155 -0
  82. package/dist/cjs/epsilon-instance.js +2 -0
  83. package/dist/cjs/epsilon-logging-extension-processor.js +19 -0
  84. package/dist/cjs/http/auth/api-gateway-adapter-authentication-handler.js +75 -0
  85. package/dist/cjs/http/auth/auth0-web-token-manipulator.js +62 -0
  86. package/dist/cjs/http/auth/basic-auth-token.js +2 -0
  87. package/dist/cjs/http/auth/google-web-token-manipulator.js +72 -0
  88. package/dist/cjs/http/auth/jwt-ratchet-local-web-token-manipulator.js +29 -0
  89. package/dist/cjs/http/auth/local-web-token-manipulator.js +74 -0
  90. package/dist/cjs/http/auth/web-token-manipulator.js +2 -0
  91. package/dist/cjs/http/error/bad-gateway.js +12 -0
  92. package/dist/cjs/http/error/bad-request-error.js +12 -0
  93. package/dist/cjs/http/error/conflict-error.js +12 -0
  94. package/dist/cjs/http/error/epsilon-http-error.js +132 -0
  95. package/dist/cjs/http/error/forbidden-error.js +12 -0
  96. package/dist/cjs/http/error/gateway-timeout.js +12 -0
  97. package/dist/cjs/http/error/method-not-allowed-error.js +12 -0
  98. package/dist/cjs/http/error/misconfigured-error.js +12 -0
  99. package/dist/cjs/http/error/not-found-error.js +12 -0
  100. package/dist/cjs/http/error/not-implemented.js +12 -0
  101. package/dist/cjs/http/error/request-timeout-error.js +12 -0
  102. package/dist/cjs/http/error/service-unavailable.js +12 -0
  103. package/dist/cjs/http/error/too-many-requests-error.js +12 -0
  104. package/dist/cjs/http/error/unauthorized-error.js +12 -0
  105. package/dist/cjs/http/event-util.js +180 -0
  106. package/dist/cjs/http/response-util.js +146 -0
  107. package/dist/cjs/http/route/epsilon-router.js +2 -0
  108. package/dist/cjs/http/route/extended-auth-response-context.js +2 -0
  109. package/dist/cjs/http/route/route-mapping.js +2 -0
  110. package/dist/cjs/http/route/route-validator-config.js +2 -0
  111. package/dist/cjs/http/route/router-util.js +238 -0
  112. package/dist/cjs/http/web-handler.js +122 -0
  113. package/dist/cjs/http/web-v2-handler.js +25 -0
  114. package/dist/cjs/index.js +136 -0
  115. package/dist/cjs/inter-api/inter-api-entry.js +2 -0
  116. package/dist/cjs/inter-api/inter-api-util.js +62 -0
  117. package/dist/cjs/inter-api-manager.js +67 -0
  118. package/dist/cjs/lambda-event-handler/cron-epsilon-lambda-event-handler.js +76 -0
  119. package/dist/cjs/lambda-event-handler/dynamo-epsilon-lambda-event-handler.js +36 -0
  120. package/dist/cjs/lambda-event-handler/generic-sns-epsilon-lambda-event-handler.js +32 -0
  121. package/dist/cjs/lambda-event-handler/inter-api-epsilon-lambda-event-handler.js +26 -0
  122. package/dist/cjs/lambda-event-handler/s3-epsilon-lambda-event-handler.js +44 -0
  123. package/dist/cjs/local-container-server.js +79 -0
  124. package/dist/cjs/local-server-cert.js +71 -0
  125. package/dist/cjs/local-server.js +145 -0
  126. package/dist/cjs/open-api-util/open-api-doc-modifications.js +2 -0
  127. package/dist/cjs/open-api-util/open-api-doc-modifier.js +83 -0
  128. package/dist/cjs/open-api-util/yaml-combiner.js +32 -0
  129. package/dist/cjs/run-background-process-from-command-line.js +37 -0
  130. package/dist/cjs/sample/sample-batch-only-local-server.js +19 -0
  131. package/dist/cjs/sample/sample-local-server.js +30 -0
  132. package/dist/cjs/sample/sample-server-components.js +197 -0
  133. package/dist/cjs/test-error-server.js +48 -0
  134. package/dist/cjs/util/aws-util.js +69 -0
  135. package/dist/cjs/util/context-util.js +104 -0
  136. package/dist/cjs/util/cron-util.js +72 -0
  137. package/dist/cjs/util/epsilon-config-parser.js +70 -0
  138. package/dist/es/background/background-dynamo-log-table-handler.js +33 -0
  139. package/dist/es/background/background-entry.js +1 -0
  140. package/dist/es/background/background-execution-event-type.js +8 -0
  141. package/dist/es/background/background-execution-event.js +1 -0
  142. package/dist/es/background/background-execution-listener.js +1 -0
  143. package/dist/es/background/background-handler.js +265 -0
  144. package/dist/es/background/background-http-adapter-handler.js +123 -0
  145. package/dist/es/background/background-meta-response-internal.js +1 -0
  146. package/dist/es/background/background-process-handling.js +5 -0
  147. package/dist/es/background/background-process-log-table-entry.js +1 -0
  148. package/dist/es/background/background-queue-response-internal.js +1 -0
  149. package/dist/es/background/background-validator.js +84 -0
  150. package/dist/es/background/epsilon-background-process-error.js +88 -0
  151. package/dist/es/background/internal-background-entry.js +1 -0
  152. package/dist/es/background/manager/abstract-background-manager.js +88 -0
  153. package/dist/es/background/manager/aws-sqs-sns-background-manager.js +149 -0
  154. package/dist/es/background/manager/background-manager-like.js +1 -0
  155. package/dist/es/background/manager/single-thread-local-background-manager.js +45 -0
  156. package/dist/es/background/s3-background-transaction-logger.js +49 -0
  157. package/dist/es/build/ratchet-epsilon-common-info.js +14 -0
  158. package/dist/es/built-in/background/echo-processor.js +14 -0
  159. package/dist/es/built-in/background/log-and-enqueue-echo-processor.js +12 -0
  160. package/dist/es/built-in/background/log-message-background-error-processor.js +6 -0
  161. package/dist/es/built-in/background/no-op-processor.js +9 -0
  162. package/dist/es/built-in/background/retry-processor.js +36 -0
  163. package/dist/es/built-in/background/sample-delay-processor.js +12 -0
  164. package/dist/es/built-in/background/sample-input-validated-processor-data.js +1 -0
  165. package/dist/es/built-in/background/sample-input-validated-processor.js +12 -0
  166. package/dist/es/built-in/built-in-trace-id-generators.js +21 -0
  167. package/dist/es/built-in/daemon/daemon-authorizer-function.js +1 -0
  168. package/dist/es/built-in/daemon/daemon-config.js +1 -0
  169. package/dist/es/built-in/daemon/daemon-group-selection-function.js +1 -0
  170. package/dist/es/built-in/daemon/daemon-handler.js +58 -0
  171. package/dist/es/built-in/daemon/daemon-process-state-list.js +1 -0
  172. package/dist/es/built-in/http/apollo-filter.js +58 -0
  173. package/dist/es/built-in/http/built-in-auth-filters.js +107 -0
  174. package/dist/es/built-in/http/built-in-authorizers.js +39 -0
  175. package/dist/es/built-in/http/built-in-filters.js +208 -0
  176. package/dist/es/built-in/http/built-in-handlers.js +69 -0
  177. package/dist/es/built-in/http/log-level-manipulation-filter.js +16 -0
  178. package/dist/es/built-in/http/run-handler-as-filter.js +60 -0
  179. package/dist/es/cli-bootstrap/epsilon-run-background-process-from-command-line-dry-run.js +17 -0
  180. package/dist/es/config/background/background-aws-config.js +1 -0
  181. package/dist/es/config/background/background-config.js +1 -0
  182. package/dist/es/config/background/background-error-processor.js +1 -0
  183. package/dist/es/config/background/background-processor.js +1 -0
  184. package/dist/es/config/background/background-transaction-log.js +1 -0
  185. package/dist/es/config/background/background-transaction-logger.js +1 -0
  186. package/dist/es/config/cron/abstract-cron-entry.js +1 -0
  187. package/dist/es/config/cron/cron-background-entry.js +1 -0
  188. package/dist/es/config/cron/cron-config.js +1 -0
  189. package/dist/es/config/dynamo-db-config.js +1 -0
  190. package/dist/es/config/epsilon-config.js +1 -0
  191. package/dist/es/config/epsilon-lambda-event-handler.js +1 -0
  192. package/dist/es/config/epsilon-logger-config.js +1 -0
  193. package/dist/es/config/generic-aws-event-handler-function.js +1 -0
  194. package/dist/es/config/http/authorizer-function.js +1 -0
  195. package/dist/es/config/http/epsilon-authorization-context.js +1 -0
  196. package/dist/es/config/http/extended-api-gateway-event.js +1 -0
  197. package/dist/es/config/http/filter-chain-context.js +1 -0
  198. package/dist/es/config/http/filter-function.js +1 -0
  199. package/dist/es/config/http/handler-function.js +1 -0
  200. package/dist/es/config/http/http-config.js +1 -0
  201. package/dist/es/config/http/http-processing-config.js +1 -0
  202. package/dist/es/config/http/mapped-http-processing-config.js +1 -0
  203. package/dist/es/config/http/null-returned-object-handling.js +6 -0
  204. package/dist/es/config/inter-api/inter-api-aws-config.js +1 -0
  205. package/dist/es/config/inter-api/inter-api-config.js +1 -0
  206. package/dist/es/config/inter-api/inter-api-process-mapping.js +1 -0
  207. package/dist/es/config/logging-trace-id-generator.js +1 -0
  208. package/dist/es/config/open-api/open-api-document-components.js +1 -0
  209. package/dist/es/config/open-api/open-api-document-path.js +1 -0
  210. package/dist/es/config/open-api/open-api-document.js +1 -0
  211. package/dist/es/config/s3-config.js +1 -0
  212. package/dist/es/config/sns-config.js +1 -0
  213. package/dist/es/epsilon-build-properties.js +24 -0
  214. package/dist/es/epsilon-constants.js +45 -0
  215. package/dist/es/epsilon-global-handler.js +149 -0
  216. package/dist/es/epsilon-instance.js +1 -0
  217. package/dist/es/epsilon-logging-extension-processor.js +15 -0
  218. package/dist/es/http/auth/api-gateway-adapter-authentication-handler.js +71 -0
  219. package/dist/es/http/auth/auth0-web-token-manipulator.js +56 -0
  220. package/dist/es/http/auth/basic-auth-token.js +1 -0
  221. package/dist/es/http/auth/google-web-token-manipulator.js +67 -0
  222. package/dist/es/http/auth/jwt-ratchet-local-web-token-manipulator.js +25 -0
  223. package/dist/es/http/auth/local-web-token-manipulator.js +70 -0
  224. package/dist/es/http/auth/web-token-manipulator.js +1 -0
  225. package/dist/es/http/error/bad-gateway.js +8 -0
  226. package/dist/es/http/error/bad-request-error.js +8 -0
  227. package/dist/es/http/error/conflict-error.js +8 -0
  228. package/dist/es/http/error/epsilon-http-error.js +127 -0
  229. package/dist/es/http/error/forbidden-error.js +8 -0
  230. package/dist/es/http/error/gateway-timeout.js +8 -0
  231. package/dist/es/http/error/method-not-allowed-error.js +8 -0
  232. package/dist/es/http/error/misconfigured-error.js +8 -0
  233. package/dist/es/http/error/not-found-error.js +8 -0
  234. package/dist/es/http/error/not-implemented.js +8 -0
  235. package/dist/es/http/error/request-timeout-error.js +8 -0
  236. package/dist/es/http/error/service-unavailable.js +8 -0
  237. package/dist/es/http/error/too-many-requests-error.js +8 -0
  238. package/dist/es/http/error/unauthorized-error.js +8 -0
  239. package/dist/es/http/event-util.js +175 -0
  240. package/dist/es/http/response-util.js +141 -0
  241. package/dist/es/http/route/epsilon-router.js +1 -0
  242. package/dist/es/http/route/extended-auth-response-context.js +1 -0
  243. package/dist/es/http/route/route-mapping.js +1 -0
  244. package/dist/es/http/route/route-validator-config.js +1 -0
  245. package/dist/es/http/route/router-util.js +233 -0
  246. package/dist/es/http/web-handler.js +116 -0
  247. package/dist/es/http/web-v2-handler.js +21 -0
  248. package/dist/es/index.js +133 -0
  249. package/dist/es/inter-api/inter-api-entry.js +1 -0
  250. package/dist/es/inter-api/inter-api-util.js +58 -0
  251. package/dist/es/inter-api-manager.js +63 -0
  252. package/dist/es/lambda-event-handler/cron-epsilon-lambda-event-handler.js +72 -0
  253. package/dist/es/lambda-event-handler/dynamo-epsilon-lambda-event-handler.js +32 -0
  254. package/dist/es/lambda-event-handler/generic-sns-epsilon-lambda-event-handler.js +28 -0
  255. package/dist/es/lambda-event-handler/inter-api-epsilon-lambda-event-handler.js +22 -0
  256. package/dist/es/lambda-event-handler/s3-epsilon-lambda-event-handler.js +40 -0
  257. package/dist/es/local-container-server.js +74 -0
  258. package/dist/es/local-server-cert.js +67 -0
  259. package/dist/es/local-server.js +140 -0
  260. package/dist/es/open-api-util/open-api-doc-modifications.js +1 -0
  261. package/dist/es/open-api-util/open-api-doc-modifier.js +78 -0
  262. package/dist/es/open-api-util/yaml-combiner.js +27 -0
  263. package/dist/es/run-background-process-from-command-line.js +32 -0
  264. package/dist/es/sample/sample-batch-only-local-server.js +17 -0
  265. package/dist/es/sample/sample-local-server.js +28 -0
  266. package/dist/es/sample/sample-server-components.js +192 -0
  267. package/dist/es/test-error-server.js +43 -0
  268. package/dist/es/util/aws-util.js +65 -0
  269. package/dist/es/util/context-util.js +95 -0
  270. package/dist/es/util/cron-util.js +68 -0
  271. package/dist/es/util/epsilon-config-parser.js +64 -0
  272. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  273. package/dist/tsconfig.es.tsbuildinfo +1 -0
  274. package/dist/tsconfig.types.tsbuildinfo +1 -0
  275. package/dist/types/background/background-dynamo-log-table-handler.d.ts +11 -0
  276. package/dist/types/background/background-entry.d.ts +4 -0
  277. package/dist/types/background/background-execution-event-type.d.ts +7 -0
  278. package/dist/types/background/background-execution-event.d.ts +8 -0
  279. package/dist/types/background/background-execution-listener.d.ts +5 -0
  280. package/dist/types/background/background-handler.d.ts +33 -0
  281. package/dist/types/background/background-http-adapter-handler.d.ts +26 -0
  282. package/dist/types/background/background-meta-response-internal.d.ts +5 -0
  283. package/dist/types/background/background-process-handling.d.ts +4 -0
  284. package/dist/types/background/background-process-log-table-entry.d.ts +11 -0
  285. package/dist/types/background/background-queue-response-internal.d.ts +8 -0
  286. package/dist/types/background/background-validator.d.ts +20 -0
  287. package/dist/types/background/epsilon-background-process-error.d.ts +30 -0
  288. package/dist/types/background/internal-background-entry.d.ts +7 -0
  289. package/dist/types/background/manager/abstract-background-manager.d.ts +26 -0
  290. package/dist/types/background/manager/aws-sqs-sns-background-manager.d.ts +30 -0
  291. package/dist/types/background/manager/background-manager-like.d.ts +24 -0
  292. package/dist/types/background/manager/single-thread-local-background-manager.d.ts +22 -0
  293. package/dist/types/background/s3-background-transaction-logger.d.ts +17 -0
  294. package/dist/types/build/ratchet-epsilon-common-info.d.ts +5 -0
  295. package/dist/types/built-in/background/echo-processor.d.ts +7 -0
  296. package/dist/types/built-in/background/log-and-enqueue-echo-processor.d.ts +6 -0
  297. package/dist/types/built-in/background/log-message-background-error-processor.d.ts +5 -0
  298. package/dist/types/built-in/background/no-op-processor.d.ts +6 -0
  299. package/dist/types/built-in/background/retry-processor.d.ts +16 -0
  300. package/dist/types/built-in/background/sample-delay-processor.d.ts +6 -0
  301. package/dist/types/built-in/background/sample-input-validated-processor-data.d.ts +4 -0
  302. package/dist/types/built-in/background/sample-input-validated-processor.d.ts +8 -0
  303. package/dist/types/built-in/built-in-trace-id-generators.d.ts +5 -0
  304. package/dist/types/built-in/daemon/daemon-authorizer-function.d.ts +5 -0
  305. package/dist/types/built-in/daemon/daemon-config.d.ts +8 -0
  306. package/dist/types/built-in/daemon/daemon-group-selection-function.d.ts +4 -0
  307. package/dist/types/built-in/daemon/daemon-handler.d.ts +22 -0
  308. package/dist/types/built-in/daemon/daemon-process-state-list.d.ts +8 -0
  309. package/dist/types/built-in/http/apollo-filter.d.ts +10 -0
  310. package/dist/types/built-in/http/built-in-auth-filters.d.ts +9 -0
  311. package/dist/types/built-in/http/built-in-authorizers.d.ts +8 -0
  312. package/dist/types/built-in/http/built-in-filters.d.ts +25 -0
  313. package/dist/types/built-in/http/built-in-handlers.d.ts +9 -0
  314. package/dist/types/built-in/http/log-level-manipulation-filter.d.ts +9 -0
  315. package/dist/types/built-in/http/run-handler-as-filter.d.ts +12 -0
  316. package/dist/types/cli-bootstrap/epsilon-run-background-process-from-command-line-dry-run.d.ts +2 -0
  317. package/dist/types/config/background/background-aws-config.d.ts +7 -0
  318. package/dist/types/config/background/background-config.d.ts +14 -0
  319. package/dist/types/config/background/background-error-processor.d.ts +4 -0
  320. package/dist/types/config/background/background-processor.d.ts +6 -0
  321. package/dist/types/config/background/background-transaction-log.d.ts +8 -0
  322. package/dist/types/config/background/background-transaction-logger.d.ts +5 -0
  323. package/dist/types/config/cron/abstract-cron-entry.d.ts +12 -0
  324. package/dist/types/config/cron/cron-background-entry.d.ts +15 -0
  325. package/dist/types/config/cron/cron-config.d.ts +6 -0
  326. package/dist/types/config/dynamo-db-config.d.ts +5 -0
  327. package/dist/types/config/epsilon-config.d.ts +20 -0
  328. package/dist/types/config/epsilon-lambda-event-handler.d.ts +7 -0
  329. package/dist/types/config/epsilon-logger-config.d.ts +12 -0
  330. package/dist/types/config/generic-aws-event-handler-function.d.ts +3 -0
  331. package/dist/types/config/http/authorizer-function.d.ts +6 -0
  332. package/dist/types/config/http/epsilon-authorization-context.d.ts +5 -0
  333. package/dist/types/config/http/extended-api-gateway-event.d.ts +7 -0
  334. package/dist/types/config/http/filter-chain-context.d.ts +14 -0
  335. package/dist/types/config/http/filter-function.d.ts +4 -0
  336. package/dist/types/config/http/handler-function.d.ts +5 -0
  337. package/dist/types/config/http/http-config.d.ts +15 -0
  338. package/dist/types/config/http/http-processing-config.d.ts +11 -0
  339. package/dist/types/config/http/mapped-http-processing-config.d.ts +7 -0
  340. package/dist/types/config/http/null-returned-object-handling.d.ts +5 -0
  341. package/dist/types/config/inter-api/inter-api-aws-config.d.ts +5 -0
  342. package/dist/types/config/inter-api/inter-api-config.d.ts +6 -0
  343. package/dist/types/config/inter-api/inter-api-process-mapping.d.ts +11 -0
  344. package/dist/types/config/logging-trace-id-generator.d.ts +4 -0
  345. package/dist/types/config/open-api/open-api-document-components.d.ts +4 -0
  346. package/dist/types/config/open-api/open-api-document-path.d.ts +2 -0
  347. package/dist/types/config/open-api/open-api-document.d.ts +6 -0
  348. package/dist/types/config/s3-config.d.ts +6 -0
  349. package/dist/types/config/sns-config.d.ts +5 -0
  350. package/dist/types/epsilon-build-properties.d.ts +9 -0
  351. package/dist/types/epsilon-constants.d.ts +16 -0
  352. package/dist/types/epsilon-global-handler.d.ts +23 -0
  353. package/dist/types/epsilon-instance.d.ts +19 -0
  354. package/dist/types/epsilon-logging-extension-processor.d.ts +5 -0
  355. package/dist/types/http/auth/api-gateway-adapter-authentication-handler.d.ts +18 -0
  356. package/dist/types/http/auth/auth0-web-token-manipulator.d.ts +13 -0
  357. package/dist/types/http/auth/basic-auth-token.d.ts +7 -0
  358. package/dist/types/http/auth/google-web-token-manipulator.d.ts +14 -0
  359. package/dist/types/http/auth/jwt-ratchet-local-web-token-manipulator.d.ts +13 -0
  360. package/dist/types/http/auth/local-web-token-manipulator.d.ts +20 -0
  361. package/dist/types/http/auth/web-token-manipulator.d.ts +7 -0
  362. package/dist/types/http/error/bad-gateway.d.ts +5 -0
  363. package/dist/types/http/error/bad-request-error.d.ts +5 -0
  364. package/dist/types/http/error/conflict-error.d.ts +5 -0
  365. package/dist/types/http/error/epsilon-http-error.d.ts +41 -0
  366. package/dist/types/http/error/forbidden-error.d.ts +5 -0
  367. package/dist/types/http/error/gateway-timeout.d.ts +5 -0
  368. package/dist/types/http/error/method-not-allowed-error.d.ts +5 -0
  369. package/dist/types/http/error/misconfigured-error.d.ts +5 -0
  370. package/dist/types/http/error/not-found-error.d.ts +5 -0
  371. package/dist/types/http/error/not-implemented.d.ts +5 -0
  372. package/dist/types/http/error/request-timeout-error.d.ts +5 -0
  373. package/dist/types/http/error/service-unavailable.d.ts +5 -0
  374. package/dist/types/http/error/too-many-requests-error.d.ts +5 -0
  375. package/dist/types/http/error/unauthorized-error.d.ts +5 -0
  376. package/dist/types/http/event-util.d.ts +47 -0
  377. package/dist/types/http/response-util.d.ts +11 -0
  378. package/dist/types/http/route/epsilon-router.d.ts +8 -0
  379. package/dist/types/http/route/extended-auth-response-context.d.ts +6 -0
  380. package/dist/types/http/route/route-mapping.d.ts +12 -0
  381. package/dist/types/http/route/route-validator-config.d.ts +5 -0
  382. package/dist/types/http/route/router-util.d.ts +26 -0
  383. package/dist/types/http/web-handler.d.ts +26 -0
  384. package/dist/types/http/web-v2-handler.d.ts +13 -0
  385. package/dist/types/index.d.ts +136 -0
  386. package/dist/types/inter-api/inter-api-entry.d.ts +7 -0
  387. package/dist/types/inter-api/inter-api-util.d.ts +10 -0
  388. package/dist/types/inter-api-manager.d.ts +17 -0
  389. package/dist/types/lambda-event-handler/cron-epsilon-lambda-event-handler.d.ts +14 -0
  390. package/dist/types/lambda-event-handler/dynamo-epsilon-lambda-event-handler.d.ts +11 -0
  391. package/dist/types/lambda-event-handler/generic-sns-epsilon-lambda-event-handler.d.ts +10 -0
  392. package/dist/types/lambda-event-handler/inter-api-epsilon-lambda-event-handler.d.ts +10 -0
  393. package/dist/types/lambda-event-handler/s3-epsilon-lambda-event-handler.d.ts +10 -0
  394. package/dist/types/local-container-server.d.ts +13 -0
  395. package/dist/types/local-server-cert.d.ts +5 -0
  396. package/dist/types/local-server.d.ts +19 -0
  397. package/dist/types/open-api-util/open-api-doc-modifications.d.ts +8 -0
  398. package/dist/types/open-api-util/open-api-doc-modifier.d.ts +10 -0
  399. package/dist/types/open-api-util/yaml-combiner.d.ts +3 -0
  400. package/dist/types/run-background-process-from-command-line.d.ts +13 -0
  401. package/dist/types/sample/sample-batch-only-local-server.d.ts +1 -0
  402. package/dist/types/sample/sample-local-server.d.ts +1 -0
  403. package/dist/types/sample/sample-server-components.d.ts +12 -0
  404. package/dist/types/test-error-server.d.ts +13 -0
  405. package/dist/types/util/aws-util.d.ts +8 -0
  406. package/dist/types/util/context-util.d.ts +33 -0
  407. package/dist/types/util/cron-util.d.ts +11 -0
  408. package/dist/types/util/epsilon-config-parser.d.ts +14 -0
  409. package/package.json +132 -0
@@ -0,0 +1,78 @@
1
+ import yaml from 'js-yaml';
2
+ import { Logger } from '@bitblit/ratchet-common';
3
+ export class OpenApiDocModifier {
4
+ constructor(options) {
5
+ this.options = options;
6
+ }
7
+ modifyOpenApiDoc(yamlString) {
8
+ let rval;
9
+ if (!!yamlString && !!this.options) {
10
+ try {
11
+ const openApi = yaml.load(yamlString);
12
+ const removeTags = this.options.removeTags ? this.options.removeTags.map((t) => t.toLowerCase()) : [];
13
+ if (this.options.newServerPath) {
14
+ openApi['servers'] = [{ url: this.options.newServerPath }];
15
+ }
16
+ if (!!this.options.removeTags && openApi['tags']) {
17
+ if (openApi['tags']) {
18
+ openApi['tags'] = openApi.tags.filter((f) => {
19
+ const n = !!f && !!f['name'] ? f['name'].toLowerCase() : '';
20
+ const i = removeTags.indexOf(n);
21
+ return i === -1;
22
+ });
23
+ }
24
+ }
25
+ if (openApi['paths']) {
26
+ let newPaths = {};
27
+ Object.keys(openApi['paths']).forEach((p) => {
28
+ const path = openApi['paths'][p];
29
+ Object.keys(path).forEach((verb) => {
30
+ const entry = path[verb];
31
+ entry.tags = !!entry.tags ? entry.tags.filter((t) => removeTags.lastIndexOf(t.toLowerCase()) == -1) : entry.tags;
32
+ const matcher = verb.toLowerCase() + ' ' + p.toLowerCase();
33
+ if (this.matchNone(matcher, this.options.removeEndpoints)) {
34
+ newPaths[p] = newPaths[p] || {};
35
+ newPaths[p][verb] = entry;
36
+ }
37
+ });
38
+ });
39
+ if (this.options.sortEndpoints) {
40
+ const keys = Object.keys(newPaths).sort();
41
+ const newPaths2 = {};
42
+ keys.forEach((k) => {
43
+ newPaths2[k] = newPaths[k];
44
+ });
45
+ newPaths = newPaths2;
46
+ }
47
+ openApi['paths'] = newPaths;
48
+ }
49
+ let remSchemas = this.options.removeSchemas || [];
50
+ remSchemas = remSchemas.map((s) => s.toLowerCase());
51
+ if (openApi['components'] && openApi['components']['schemas']) {
52
+ const keys = Object.keys(openApi['components']['schemas']).sort();
53
+ const newComp = {};
54
+ keys.forEach((k) => {
55
+ if (remSchemas.indexOf(k.toLowerCase()) === -1) {
56
+ newComp[k] = openApi['components']['schemas'][k];
57
+ }
58
+ });
59
+ openApi['components']['schemas'] = newComp;
60
+ }
61
+ rval = yaml.dump(openApi);
62
+ }
63
+ catch (err) {
64
+ Logger.error('Error processing yaml: %s', err, err);
65
+ }
66
+ }
67
+ return rval;
68
+ }
69
+ matchNone(input, regex) {
70
+ let rval = true;
71
+ if (!!input && !!regex) {
72
+ regex.forEach((r) => {
73
+ rval = rval && !r.test(input);
74
+ });
75
+ }
76
+ return rval;
77
+ }
78
+ }
@@ -0,0 +1,27 @@
1
+ import fs from 'fs';
2
+ import { RequireRatchet } from '@bitblit/ratchet-common';
3
+ import yaml from 'js-yaml';
4
+ import { Logger } from '@bitblit/ratchet-common';
5
+ export class YamlCombiner {
6
+ static combine(files, inRootPath = []) {
7
+ RequireRatchet.notNullOrUndefined(files, 'Files argument');
8
+ RequireRatchet.true(files.length > 0, 'Files argument larger than 0');
9
+ RequireRatchet.notNullOrUndefined(inRootPath, 'Root path argument');
10
+ Logger.info('Processing %d files into output', files.length);
11
+ let allElements = {};
12
+ for (let i = 0; i < files.length; i++) {
13
+ const fileContents = fs.readFileSync(files[i]).toString();
14
+ const openApi = yaml.load(fileContents);
15
+ allElements = Object.assign(allElements, openApi);
16
+ }
17
+ const rootPath = Object.assign([], inRootPath);
18
+ while (rootPath.length > 0) {
19
+ const next = {};
20
+ next[rootPath[rootPath.length - 1]] = allElements;
21
+ rootPath.splice(rootPath.length - 1, 1);
22
+ allElements = next;
23
+ }
24
+ const rval = yaml.dump(allElements);
25
+ return rval;
26
+ }
27
+ }
@@ -0,0 +1,32 @@
1
+ import { ErrorRatchet, Logger, StringRatchet } from '@bitblit/ratchet-common';
2
+ import { program } from 'commander';
3
+ import clear from 'clear';
4
+ export class RunBackgroundProcessFromCommandLine {
5
+ static async processBackgroundCliRequest(epsilon, dryRun) {
6
+ let rval = false;
7
+ clear();
8
+ Logger.info('Bootstrapping batch processor, args : %j', process.argv);
9
+ program
10
+ .version('0.0.1')
11
+ .requiredOption('-p --process <processKey>', 'Background process key')
12
+ .option('-d --data <data>', 'Background data block, JSON encoded')
13
+ .option('-m --metadata <metadata>', 'Background metadata block, JSON encoded')
14
+ .parse(process.argv);
15
+ Logger.info('Program definition : %s : %s : %s', program.opts().process, program.opts().data, program.opts().meta);
16
+ let data = {};
17
+ if (StringRatchet.trimToNull(program.opts().data)) {
18
+ data = JSON.parse(program.opts().data);
19
+ }
20
+ if (dryRun) {
21
+ Logger.info('Dry run specified - not executing');
22
+ rval = false;
23
+ }
24
+ else {
25
+ if (!epsilon) {
26
+ ErrorRatchet.throwFormattedErr('Cannot run background cli because epsilon global handler is null');
27
+ }
28
+ rval = await epsilon.processSingleBackgroundByParts(program.opts().process, data);
29
+ }
30
+ return rval;
31
+ }
32
+ }
@@ -0,0 +1,17 @@
1
+ import { Logger } from '@bitblit/ratchet-common';
2
+ import { SampleServerComponents } from './sample-server-components';
3
+ import { LocalServer } from '../local-server';
4
+ import { LoggerLevelName } from '@bitblit/ratchet-common';
5
+ Logger.setLevel(LoggerLevelName.debug);
6
+ SampleServerComponents.createSampleBatchOnlyEpsilonGlobalHandler()
7
+ .then((handler) => {
8
+ const testServer = new LocalServer(handler);
9
+ testServer.runServer().then((res) => {
10
+ Logger.info('Got res server');
11
+ process.exit(0);
12
+ });
13
+ })
14
+ .catch((err) => {
15
+ Logger.error('Error: %s', err, err);
16
+ process.exit(1);
17
+ });
@@ -0,0 +1,28 @@
1
+ import { Logger } from '@bitblit/ratchet-common';
2
+ import { SampleServerComponents } from './sample-server-components';
3
+ import { LocalServer } from '../local-server';
4
+ import { LoggerLevelName } from '@bitblit/ratchet-common';
5
+ import { LocalWebTokenManipulator } from '../http/auth/local-web-token-manipulator';
6
+ Logger.setLevel(LoggerLevelName.debug);
7
+ const localTokenHandler = new LocalWebTokenManipulator(['abcd1234'], 'sample-server');
8
+ localTokenHandler
9
+ .createJWTStringAsync('asdf', {}, ['USER'], 3600)
10
+ .then((token) => {
11
+ Logger.info('Use token: %s', token);
12
+ SampleServerComponents.createSampleEpsilonGlobalHandler()
13
+ .then((handler) => {
14
+ const testServer = new LocalServer(handler, 8888, true);
15
+ testServer.runServer().then((res) => {
16
+ Logger.info('Got res server');
17
+ process.exit(0);
18
+ });
19
+ })
20
+ .catch((err) => {
21
+ Logger.error('Error: %s', err, err);
22
+ process.exit(1);
23
+ });
24
+ })
25
+ .catch((tokenErr) => {
26
+ Logger.error('Failed to create token : %s', tokenErr);
27
+ process.exit(1);
28
+ });
@@ -0,0 +1,192 @@
1
+ import { Logger } from '@bitblit/ratchet-common';
2
+ import { ApolloServer, gql } from 'apollo-server-lambda';
3
+ import { ApolloServerPluginLandingPageGraphQLPlayground } from 'apollo-server-core';
4
+ import { ErrorRatchet } from '@bitblit/ratchet-common';
5
+ import { NumberRatchet } from '@bitblit/ratchet-common';
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import { LoggerLevelName, PromiseRatchet } from '@bitblit/ratchet-common';
9
+ import { EpsilonGlobalHandler } from '../epsilon-global-handler';
10
+ import { BuiltInHandlers } from '../built-in/http/built-in-handlers';
11
+ import { LocalWebTokenManipulator } from '../http/auth/local-web-token-manipulator';
12
+ import { EchoProcessor } from '../built-in/background/echo-processor';
13
+ import { NoOpProcessor } from '../built-in/background/no-op-processor';
14
+ import { SampleDelayProcessor } from '../built-in/background/sample-delay-processor';
15
+ import { LogAndEnqueueEchoProcessor } from '../built-in/background/log-and-enqueue-echo-processor';
16
+ import { EpsilonConfigParser } from '../util/epsilon-config-parser';
17
+ import { RouterUtil } from '../http/route/router-util';
18
+ import { SampleInputValidatedProcessor } from '../built-in/background/sample-input-validated-processor';
19
+ import { BuiltInAuthorizers } from '../built-in/http/built-in-authorizers';
20
+ import { ApolloFilter } from '../built-in/http/apollo-filter';
21
+ import { BooleanRatchet } from '@bitblit/ratchet-common';
22
+ import { StringRatchet } from '@bitblit/ratchet-common';
23
+ import { BuiltInFilters } from '../built-in/http/built-in-filters';
24
+ import { EventUtil } from '../http/event-util';
25
+ import { LogMessageBackgroundErrorProcessor } from '../built-in/background/log-message-background-error-processor';
26
+ import { SingleThreadLocalBackgroundManager } from '../background/manager/single-thread-local-background-manager';
27
+ export class SampleServerComponents {
28
+ constructor() { }
29
+ static async createSampleApollo() {
30
+ const gqlString = SampleServerComponents.loadSampleServerGQL();
31
+ Logger.silly('Creating apollo from : %s', gqlString);
32
+ const typeDefs = gql(gqlString);
33
+ const resolvers = {
34
+ RootQueryType: {
35
+ serverMeta: async (root) => {
36
+ return { version: 'A1', serverTime: new Date().toISOString() };
37
+ },
38
+ forceTimeout: async (root) => {
39
+ await PromiseRatchet.wait(1000 * 60 * 30);
40
+ return { placeholder: 'A1' };
41
+ },
42
+ },
43
+ };
44
+ const server = new ApolloServer({
45
+ debug: false,
46
+ introspection: true,
47
+ typeDefs,
48
+ resolvers,
49
+ plugins: [ApolloServerPluginLandingPageGraphQLPlayground({ endpoint: '/graphql' })],
50
+ context: async ({ event, context, express }) => {
51
+ const authTokenSt = EventUtil.extractBearerTokenFromEvent(event);
52
+ const token = null;
53
+ if (!!authTokenSt && authTokenSt.startsWith('Bearer')) {
54
+ Logger.info('Got : %s', authTokenSt);
55
+ }
56
+ const rval = {
57
+ user: token,
58
+ headers: event.headers,
59
+ functionName: context.functionName,
60
+ event,
61
+ context,
62
+ };
63
+ return rval;
64
+ },
65
+ });
66
+ return server;
67
+ }
68
+ static async createSampleEpsilonConfig() {
69
+ const yamlString = SampleServerComponents.loadSampleOpenApiYaml();
70
+ const authorizers = new Map();
71
+ authorizers.set('SampleAuthorizer', (token, evt) => BuiltInAuthorizers.simpleLoggedInAuth(token, evt));
72
+ authorizers.set('LogAuthorizer', (token, evt) => BuiltInAuthorizers.simpleNoAuthenticationLogAccess(token, evt));
73
+ const handlers = new Map();
74
+ handlers.set('get /', (event, context) => BuiltInHandlers.sample(event, null, context));
75
+ handlers.set('get /meta/server', (event) => BuiltInHandlers.sample(event));
76
+ handlers.set('get /meta/user', (event) => BuiltInHandlers.sample(event));
77
+ handlers.set('get /meta/item/{itemId}', (event) => BuiltInHandlers.sample(event));
78
+ handlers.set('post /secure/access-token', (event) => BuiltInHandlers.sample(event));
79
+ handlers.set('get /multi/fixed', (event) => BuiltInHandlers.sample(event, 'fixed'));
80
+ handlers.set('get /multi/{v}', (event) => BuiltInHandlers.sample(event, 'variable'));
81
+ handlers.set('get /err/{code}', (event) => {
82
+ const err = ErrorRatchet.fErr('Fake Err : %j', event);
83
+ err['statusCode'] = NumberRatchet.safeNumber(event.pathParameters['code']);
84
+ throw err;
85
+ });
86
+ handlers.set('get /meta/sample-item', async (event) => {
87
+ const numberToUse = NumberRatchet.safeNumber(event.queryStringParameters['num']) || 5;
88
+ const rval = {
89
+ numberParam: numberToUse,
90
+ nameParam: 'Test-String',
91
+ };
92
+ return rval;
93
+ });
94
+ handlers.set('post /meta/sample-item', async (event) => {
95
+ const parsed = event.parsedBody;
96
+ const forceFail = BooleanRatchet.parseBool(StringRatchet.trimToNull(event.queryStringParameters['forceFail'])) === true;
97
+ if (forceFail) {
98
+ parsed['numberParam'] = 'test';
99
+ }
100
+ return parsed;
101
+ });
102
+ const tokenManipulator = new LocalWebTokenManipulator(['abcd1234'], 'sample.erigir.com')
103
+ .withParseFailureLogLevel(LoggerLevelName.debug)
104
+ .withExtraDecryptionKeys(['abcdefabcdef'])
105
+ .withOldKeyUseLogLevel(LoggerLevelName.info);
106
+ const meta = RouterUtil.defaultHttpMetaProcessingConfigWithAuthenticationHeaderParsing(tokenManipulator);
107
+ meta.timeoutMS = 10000;
108
+ ApolloFilter.addApolloFilterToList(meta.preFilters, new RegExp('.*graphql.*'), await SampleServerComponents.createSampleApollo(), {
109
+ cors: {
110
+ origin: '*',
111
+ credentials: true,
112
+ },
113
+ });
114
+ meta.errorFilters.push((fCtx) => BuiltInFilters.secureOutboundServerErrorForProduction(fCtx, 'Clean Internal Server Error', 500));
115
+ const preFiltersAllowingNull = Object.assign({}, meta);
116
+ preFiltersAllowingNull.preFilters = Object.assign([], preFiltersAllowingNull.preFilters);
117
+ preFiltersAllowingNull.preFilters.splice(8, 1);
118
+ const cfg = {
119
+ defaultMetaHandling: meta,
120
+ handlers: handlers,
121
+ authorizers: authorizers,
122
+ overrideMetaHandling: [
123
+ {
124
+ pathRegex: '/background',
125
+ methods: null,
126
+ config: Object.assign({}, meta, { overrideAuthorizerName: 'LogAuthorizer' }),
127
+ },
128
+ {
129
+ pathRegex: '/meta/server',
130
+ methods: ['GET'],
131
+ config: preFiltersAllowingNull,
132
+ },
133
+ ],
134
+ prefixesToStripBeforeRouteMatch: ['v0'],
135
+ filterHandledRouteMatches: ['options .*'],
136
+ };
137
+ const background = {
138
+ httpMetaEndpoint: '/background/meta',
139
+ httpSubmissionPath: '/background',
140
+ implyTypeFromPathSuffix: false,
141
+ processors: [
142
+ new EchoProcessor(),
143
+ new NoOpProcessor(),
144
+ new SampleDelayProcessor(),
145
+ new SampleInputValidatedProcessor(),
146
+ new LogAndEnqueueEchoProcessor(),
147
+ ],
148
+ errorProcessor: new LogMessageBackgroundErrorProcessor(),
149
+ };
150
+ const epsilonConfig = {
151
+ openApiYamlString: yamlString,
152
+ httpConfig: cfg,
153
+ backgroundConfig: background,
154
+ };
155
+ return epsilonConfig;
156
+ }
157
+ static async createSampleEpsilonGlobalHandler() {
158
+ const epsilonConfig = await SampleServerComponents.createSampleEpsilonConfig();
159
+ const backgroundManager = new SingleThreadLocalBackgroundManager();
160
+ const epsilonInstance = EpsilonConfigParser.epsilonConfigToEpsilonInstance(epsilonConfig, backgroundManager);
161
+ const rval = new EpsilonGlobalHandler(epsilonInstance);
162
+ return rval;
163
+ }
164
+ static async createSampleBatchOnlyEpsilonGlobalHandler() {
165
+ const epsilonConfig = await SampleServerComponents.createSampleEpsilonConfig();
166
+ epsilonConfig.httpConfig.handlers = new Map();
167
+ const byPassCfg = Object.assign({}, epsilonConfig.httpConfig.defaultMetaHandling);
168
+ byPassCfg.preFilters = byPassCfg.preFilters.concat([
169
+ (fCtx) => BuiltInFilters.autoRespond(fCtx, { message: 'Background Processing Only' }),
170
+ ]);
171
+ epsilonConfig.httpConfig.overrideMetaHandling = [
172
+ {
173
+ pathRegex: '.*background.*',
174
+ invertPathMatching: true,
175
+ config: byPassCfg,
176
+ },
177
+ ];
178
+ epsilonConfig.httpConfig.filterHandledRouteMatches = ['.*'];
179
+ const backgroundManager = new SingleThreadLocalBackgroundManager();
180
+ const epsilonInstance = EpsilonConfigParser.epsilonConfigToEpsilonInstance(epsilonConfig, backgroundManager);
181
+ const rval = new EpsilonGlobalHandler(epsilonInstance);
182
+ return rval;
183
+ }
184
+ static loadSampleOpenApiYaml() {
185
+ const yamlString = fs.readFileSync(path.join(__dirname, '..', 'static', 'sample-open-api-doc.yaml')).toString();
186
+ return yamlString;
187
+ }
188
+ static loadSampleServerGQL() {
189
+ const yamlString = fs.readFileSync(path.join(__dirname, '..', 'static', 'sample-server.gql')).toString();
190
+ return yamlString;
191
+ }
192
+ }
@@ -0,0 +1,43 @@
1
+ import { Logger } from '@bitblit/ratchet-common';
2
+ import { CliRatchet } from '@bitblit/ratchet-node-only';
3
+ import net from 'net';
4
+ export class TestErrorServer {
5
+ constructor(port = 9999) {
6
+ this.port = port;
7
+ this.aborted = false;
8
+ }
9
+ async runServer() {
10
+ Logger.info('Starting Test Error net server on port %d', this.port);
11
+ return new Promise((res, rej) => {
12
+ const server = new net.Server({});
13
+ server.listen(this.port, () => {
14
+ Logger.info('Server listening for connection requests on socket localhost: %s', this.port);
15
+ });
16
+ server.on('connection', async (socket) => {
17
+ Logger.info('X: A new connection has been established.');
18
+ socket.write('Hello, client.');
19
+ socket.on('data', (chunk) => {
20
+ Logger.info('Data received from client: %s', chunk);
21
+ });
22
+ socket.on('end', () => {
23
+ Logger.info('Closing connection with the client');
24
+ });
25
+ socket.on('error', (err) => {
26
+ Logger.info('Error: %s', err);
27
+ });
28
+ });
29
+ });
30
+ }
31
+ async requestHandler(request, response) {
32
+ Logger.info('Got request %d - closing socket', request);
33
+ request.setTimeout(100);
34
+ response.end('x');
35
+ }
36
+ }
37
+ if (CliRatchet.isCalledFromCLISingle('test-error-server')) {
38
+ const testServer = new TestErrorServer();
39
+ testServer.runServer().then((res) => {
40
+ Logger.info('Got res server');
41
+ process.exit(0);
42
+ });
43
+ }
@@ -0,0 +1,65 @@
1
+ export class AwsUtil {
2
+ static apiGatewayV2ToApiGatewayV1(srcEvt) {
3
+ const rval = {
4
+ requestContext: AwsUtil.apiGatewayV2RequestContextToApiGatewayV1RequestContext(srcEvt.requestContext),
5
+ httpMethod: srcEvt.requestContext.http.method,
6
+ path: srcEvt.requestContext.http.path,
7
+ queryStringParameters: srcEvt.queryStringParameters,
8
+ headers: srcEvt.headers,
9
+ body: srcEvt.body,
10
+ isBase64Encoded: srcEvt.isBase64Encoded,
11
+ multiValueHeaders: null,
12
+ multiValueQueryStringParameters: null,
13
+ pathParameters: srcEvt.pathParameters,
14
+ stageVariables: srcEvt.stageVariables,
15
+ resource: null,
16
+ };
17
+ return rval;
18
+ }
19
+ static apiGatewayV2RequestContextToApiGatewayV1RequestContext(srcEvt) {
20
+ const rval = {
21
+ accountId: srcEvt.accountId,
22
+ apiId: srcEvt.apiId,
23
+ authorizer: null,
24
+ domainName: srcEvt.domainName,
25
+ domainPrefix: srcEvt.domainPrefix,
26
+ requestId: srcEvt.requestId,
27
+ routeKey: srcEvt.routeKey,
28
+ stage: srcEvt.stage,
29
+ requestTime: srcEvt.time,
30
+ requestTimeEpoch: srcEvt.timeEpoch,
31
+ protocol: srcEvt.http.protocol,
32
+ httpMethod: srcEvt.http.method,
33
+ identity: null,
34
+ path: srcEvt.http.path,
35
+ resourceId: null,
36
+ resourcePath: null,
37
+ };
38
+ return rval;
39
+ }
40
+ static findInMap(toFind, map) {
41
+ let rval = null;
42
+ map.forEach((val, key) => {
43
+ if (AwsUtil.matchExact(key, toFind)) {
44
+ rval = val;
45
+ }
46
+ });
47
+ return rval;
48
+ }
49
+ static matchExact(r, str) {
50
+ const match = str.match(r);
51
+ return match != null && str == match[0];
52
+ }
53
+ static resolvePotentialFunctionToResult(src, def) {
54
+ let rval = def;
55
+ if (src) {
56
+ if (typeof src === 'function') {
57
+ rval = src();
58
+ }
59
+ else {
60
+ rval = src;
61
+ }
62
+ }
63
+ return rval;
64
+ }
65
+ }
@@ -0,0 +1,95 @@
1
+ import { NumberRatchet } from '@bitblit/ratchet-common';
2
+ import { ErrorRatchet } from '@bitblit/ratchet-common';
3
+ import { BuiltInTraceIdGenerators } from '../built-in/built-in-trace-id-generators';
4
+ import { StringRatchet } from '@bitblit/ratchet-common';
5
+ export class ContextUtil {
6
+ constructor() { }
7
+ static initContext(epsilon, evt, ctx, processLabel) {
8
+ ContextUtil.CURRENT_EPSILON_REFERENCE = epsilon;
9
+ ContextUtil.CURRENT_CONTEXT = ctx;
10
+ ContextUtil.CURRENT_EVENT = evt;
11
+ ContextUtil.CURRENT_LOG_VARS = {};
12
+ ContextUtil.CURRENT_PROCESS_LABEL = processLabel;
13
+ }
14
+ static clearContext() {
15
+ ContextUtil.CURRENT_EPSILON_REFERENCE = null;
16
+ ContextUtil.CURRENT_CONTEXT = null;
17
+ ContextUtil.CURRENT_EVENT = null;
18
+ ContextUtil.CURRENT_LOG_VARS = {};
19
+ ContextUtil.CURRENT_PROCESS_LABEL = null;
20
+ ContextUtil.CURRENT_OVERRIDE_TRACE_ID = null;
21
+ ContextUtil.CURRENT_OVERRIDE_TRACE_DEPTH = null;
22
+ }
23
+ static setOverrideTrace(traceId, traceDepth) {
24
+ ContextUtil.CURRENT_OVERRIDE_TRACE_ID = traceId || ContextUtil.CURRENT_OVERRIDE_TRACE_ID;
25
+ ContextUtil.CURRENT_OVERRIDE_TRACE_DEPTH = traceDepth || ContextUtil.CURRENT_OVERRIDE_TRACE_DEPTH;
26
+ }
27
+ static setOverrideTraceFromInternalBackgroundEntry(entry) {
28
+ ContextUtil.setOverrideTrace(entry.traceId, entry.traceDepth);
29
+ }
30
+ static setOverrideTraceFromInterApiEntry(interApiEntry) {
31
+ ContextUtil.setOverrideTrace(interApiEntry.traceId, interApiEntry.traceDepth);
32
+ }
33
+ static addHeadersToRecord(input, depthOffset = 0) {
34
+ if (input) {
35
+ input[ContextUtil.traceHeaderName()] = ContextUtil.currentTraceId();
36
+ input[ContextUtil.traceDepthHeaderName()] = StringRatchet.safeString(ContextUtil.currentTraceDepth() + depthOffset);
37
+ }
38
+ else {
39
+ ErrorRatchet.throwFormattedErr('Cannot add headers to null/undefined input');
40
+ }
41
+ }
42
+ static addTraceToProxyResult(pr) {
43
+ pr.headers = pr.headers || {};
44
+ ContextUtil.addHeadersToRecord(pr.headers);
45
+ }
46
+ static addTraceToHttpRequestInit(ri) {
47
+ ri.headers = ri.headers || {};
48
+ ContextUtil.addHeadersToRecord(ri.headers, 1);
49
+ }
50
+ static setProcessLabel(processLabel) {
51
+ ContextUtil.CURRENT_PROCESS_LABEL = processLabel;
52
+ }
53
+ static currentRequestId() {
54
+ const ctx = ContextUtil.CURRENT_CONTEXT;
55
+ return ctx ? ctx.awsRequestId : null;
56
+ }
57
+ static remainingTimeMS() {
58
+ const ctx = ContextUtil.CURRENT_CONTEXT;
59
+ return ctx ? ctx.getRemainingTimeInMillis() : null;
60
+ }
61
+ static currentProcessLabel() {
62
+ return ContextUtil.CURRENT_PROCESS_LABEL || 'unset';
63
+ }
64
+ static traceHeaderName() {
65
+ const headerName = ContextUtil?.CURRENT_EPSILON_REFERENCE?.config?.loggerConfig?.traceHeaderName || 'X-TRACE-ID';
66
+ return headerName;
67
+ }
68
+ static traceDepthHeaderName() {
69
+ const headerName = ContextUtil?.CURRENT_EPSILON_REFERENCE?.config?.loggerConfig?.traceDepthHeaderName || 'X-TRACE-DEPTH';
70
+ return headerName;
71
+ }
72
+ static currentTraceId() {
73
+ const traceFn = ContextUtil?.CURRENT_EPSILON_REFERENCE?.config?.loggerConfig?.traceIdGenerator || BuiltInTraceIdGenerators.fullAwsRequestId;
74
+ const traceId = ContextUtil.CURRENT_OVERRIDE_TRACE_ID ||
75
+ ContextUtil.CURRENT_EVENT?.headers?.[ContextUtil.traceHeaderName()] ||
76
+ traceFn(ContextUtil.CURRENT_EVENT, ContextUtil.CURRENT_CONTEXT);
77
+ return traceId;
78
+ }
79
+ static currentTraceDepth() {
80
+ const caller = ContextUtil.CURRENT_OVERRIDE_TRACE_DEPTH ||
81
+ NumberRatchet.safeNumber(ContextUtil.CURRENT_EVENT?.headers?.[ContextUtil.traceDepthHeaderName()]) ||
82
+ 1;
83
+ return caller;
84
+ }
85
+ static addLogVariable(name, val) {
86
+ ContextUtil.CURRENT_LOG_VARS[name] = val;
87
+ }
88
+ static fetchLogVariable(name) {
89
+ return ContextUtil.CURRENT_LOG_VARS?.[name];
90
+ }
91
+ static fetchLogVariables() {
92
+ return Object.assign({}, ContextUtil.CURRENT_LOG_VARS || {});
93
+ }
94
+ }
95
+ ContextUtil.CURRENT_LOG_VARS = {};
@@ -0,0 +1,68 @@
1
+ import { RequireRatchet } from '@bitblit/ratchet-common';
2
+ import { ErrorRatchet } from '@bitblit/ratchet-common';
3
+ import { DateTime } from 'luxon';
4
+ import { StringRatchet } from '@bitblit/ratchet-common';
5
+ export class CronUtil {
6
+ static everyNMinuteFilter(n) {
7
+ return CronUtil.everyNElementFilter(n, 60);
8
+ }
9
+ static everyNDaysOfYearFilter(n) {
10
+ return CronUtil.everyNElementFilter(n, 365);
11
+ }
12
+ static everyNElementFilter(n, m) {
13
+ RequireRatchet.notNullOrUndefined(n);
14
+ RequireRatchet.notNullOrUndefined(m);
15
+ const half = Math.floor(m / 2);
16
+ if (!n || n < 2 || n > half || m % n !== 0) {
17
+ ErrorRatchet.throwFormattedErr('Invalid config - this function only makes sense for 2 < N < %d and %d evenly divisible by N', half, m);
18
+ throw new Error('Invalid config - this function only makes sense for 2 < N < 31 and 60 evenly divisible by N');
19
+ }
20
+ const rval = [];
21
+ for (let i = 0; i < 60; i += n) {
22
+ rval.push(i);
23
+ }
24
+ return rval;
25
+ }
26
+ static numberMatchesFilter(num, filter) {
27
+ return !filter || filter.length === 0 || filter.includes(num);
28
+ }
29
+ static eventMatchesEntry(event, entry, cfg, testTimeEpochMS = new Date().getTime()) {
30
+ let rval = false;
31
+ if (!!event && !!entry && !!cfg.timezone) {
32
+ if (!!event.resources && event.resources.length > 0) {
33
+ const eventSourceName = event.resources[0];
34
+ const targetTZ = StringRatchet.trimToNull(entry.overrideTimezone) || cfg.timezone;
35
+ const nowInTZ = DateTime.fromMillis(testTimeEpochMS).setZone(targetTZ);
36
+ rval = !entry.eventFilter || entry.eventFilter.test(eventSourceName);
37
+ rval = rval && CronUtil.numberMatchesFilter(nowInTZ.minute, entry.minuteFilter);
38
+ rval = rval && CronUtil.numberMatchesFilter(nowInTZ.hour, entry.hourFilter);
39
+ rval = rval && CronUtil.numberMatchesFilter(nowInTZ.weekday, entry.dayOfWeekFilter);
40
+ rval = rval && CronUtil.numberMatchesFilter(nowInTZ.day, entry.dayOfMonthFilter);
41
+ rval = rval && CronUtil.numberMatchesFilter(nowInTZ.month, entry.monthOfYearFilter);
42
+ rval = rval && (!entry.contextMatchFilter || entry.contextMatchFilter.test(StringRatchet.trimToEmpty(cfg.context)));
43
+ rval = rval && (!entry.contextNoMatchFilter || !entry.contextNoMatchFilter.test(StringRatchet.trimToEmpty(cfg.context)));
44
+ }
45
+ }
46
+ return rval;
47
+ }
48
+ static cronEntryName(entry, idx = null) {
49
+ RequireRatchet.notNullOrUndefined(entry);
50
+ let rval = null;
51
+ if (!!entry) {
52
+ rval = entry.name;
53
+ rval = rval || entry['backgroundTaskType'];
54
+ if (!rval && !!entry['directHandler']) {
55
+ if (!!idx) {
56
+ rval = 'Direct Entry ' + idx;
57
+ }
58
+ else {
59
+ rval = 'Direct Entry (No idx specified)';
60
+ }
61
+ }
62
+ }
63
+ else {
64
+ rval = 'ERROR: no entry passed';
65
+ }
66
+ return rval;
67
+ }
68
+ }