@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,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalServer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
6
+ const http_1 = tslib_1.__importDefault(require("http"));
7
+ const https_1 = tslib_1.__importDefault(require("https"));
8
+ const ratchet_common_2 = require("@bitblit/ratchet-common");
9
+ const luxon_1 = require("luxon");
10
+ const querystring_1 = tslib_1.__importDefault(require("querystring"));
11
+ const event_util_1 = require("./http/event-util");
12
+ const ratchet_common_3 = require("@bitblit/ratchet-common");
13
+ const local_server_cert_1 = require("./local-server-cert");
14
+ class LocalServer {
15
+ constructor(globalHandler, port = 8888, https = false) {
16
+ this.globalHandler = globalHandler;
17
+ this.port = port;
18
+ this.aborted = false;
19
+ }
20
+ async runServer() {
21
+ return new Promise((res, rej) => {
22
+ try {
23
+ ratchet_common_1.Logger.info('Starting Epsilon server on port %d', this.port);
24
+ if (https_1.default) {
25
+ const options = {
26
+ key: local_server_cert_1.LocalServerCert.CLIENT_KEY_PEM,
27
+ cert: local_server_cert_1.LocalServerCert.CLIENT_CERT_PEM,
28
+ };
29
+ ratchet_common_1.Logger.info('Starting https server - THIS SERVER IS NOT SECURE! The KEYS are in the code! Testing Server Only - Use at your own risk!');
30
+ this.server = https_1.default.createServer(options, this.requestHandler.bind(this)).listen(this.port);
31
+ }
32
+ else {
33
+ this.server = http_1.default.createServer(this.requestHandler.bind(this)).listen(this.port);
34
+ }
35
+ ratchet_common_1.Logger.info('Epsilon server is listening');
36
+ process.on('SIGINT', () => {
37
+ ratchet_common_1.Logger.info('Caught SIGINT - shutting down test server...');
38
+ this.aborted = true;
39
+ res(true);
40
+ });
41
+ }
42
+ catch (err) {
43
+ ratchet_common_1.Logger.error('Local server failed : %s', err, err);
44
+ rej(err);
45
+ }
46
+ });
47
+ }
48
+ async requestHandler(request, response) {
49
+ const context = {
50
+ awsRequestId: 'LOCAL-' + ratchet_common_2.StringRatchet.createType4Guid(),
51
+ getRemainingTimeInMillis() {
52
+ return 300000;
53
+ },
54
+ };
55
+ const evt = await LocalServer.messageToApiGatewayEvent(request, context);
56
+ const logEventLevel = event_util_1.EventUtil.eventIsAGraphQLIntrospection(evt) ? ratchet_common_3.LoggerLevelName.silly : ratchet_common_3.LoggerLevelName.info;
57
+ if (evt.path == '/epsilon-poison-pill') {
58
+ this.aborted = true;
59
+ return true;
60
+ }
61
+ else {
62
+ const result = await this.globalHandler.lambdaHandler(evt, context);
63
+ const written = await LocalServer.writeProxyResultToServerResponse(result, response);
64
+ return written;
65
+ }
66
+ }
67
+ static async bodyAsBase64String(request) {
68
+ return new Promise((res, rej) => {
69
+ const body = [];
70
+ request.on('data', (chunk) => {
71
+ body.push(chunk);
72
+ });
73
+ request.on('end', () => {
74
+ const rval = Buffer.concat(body).toString('base64');
75
+ res(rval);
76
+ });
77
+ });
78
+ }
79
+ static async messageToApiGatewayEvent(request, context) {
80
+ const bodyString = await LocalServer.bodyAsBase64String(request);
81
+ const stageIdx = request.url.indexOf('/', 1);
82
+ const stage = request.url.substring(1, stageIdx);
83
+ const path = request.url.substring(stageIdx + 1);
84
+ const reqTime = new Date().getTime();
85
+ const formattedTime = luxon_1.DateTime.utc().toFormat('dd/MMM/yyyy:hh:mm:ss ZZ');
86
+ const queryIdx = request.url.indexOf('?');
87
+ const queryStringParams = queryIdx > -1 ? querystring_1.default.parse(request.url.substring(queryIdx + 1)) : {};
88
+ const headers = Object.assign({}, request.headers);
89
+ headers['X-Forwarded-Proto'] = 'http';
90
+ const rval = {
91
+ body: bodyString,
92
+ multiValueHeaders: {},
93
+ multiValueQueryStringParameters: {},
94
+ resource: '/{proxy+}',
95
+ path: request.url,
96
+ httpMethod: request.method.toLowerCase(),
97
+ isBase64Encoded: true,
98
+ queryStringParameters: queryStringParams,
99
+ pathParameters: {
100
+ proxy: path,
101
+ },
102
+ stageVariables: {
103
+ baz: 'qux',
104
+ },
105
+ headers: headers,
106
+ requestContext: {
107
+ accountId: '123456789012',
108
+ resourceId: '123456',
109
+ stage: stage,
110
+ requestId: context.awsRequestId,
111
+ requestTime: formattedTime,
112
+ requestTimeEpoch: reqTime,
113
+ identity: null,
114
+ path: request.url,
115
+ domainName: request.headers['host'],
116
+ resourcePath: '/{proxy+}',
117
+ httpMethod: request.method.toLowerCase(),
118
+ apiId: '1234567890',
119
+ protocol: 'HTTP/1.1',
120
+ },
121
+ };
122
+ return rval;
123
+ }
124
+ static async writeProxyResultToServerResponse(proxyResult, response) {
125
+ const isGraphQLSchemaResponse = !!proxyResult && !!proxyResult.body && proxyResult.body.indexOf('{"data":{"__schema"') > -1;
126
+ if (!isGraphQLSchemaResponse) {
127
+ ratchet_common_1.Logger.debug('Result: %j', proxyResult);
128
+ }
129
+ response.statusCode = proxyResult.statusCode;
130
+ if (proxyResult.headers) {
131
+ Object.keys(proxyResult.headers).forEach((hk) => {
132
+ response.setHeader(hk, String(proxyResult.headers[hk]));
133
+ });
134
+ }
135
+ if (proxyResult.multiValueHeaders) {
136
+ Object.keys(proxyResult.multiValueHeaders).forEach((hk) => {
137
+ response.setHeader(hk, proxyResult.multiValueHeaders[hk].join(','));
138
+ });
139
+ }
140
+ const toWrite = proxyResult.isBase64Encoded ? Buffer.from(proxyResult.body, 'base64') : Buffer.from(proxyResult.body);
141
+ response.end(toWrite);
142
+ return !!proxyResult.body;
143
+ }
144
+ }
145
+ exports.LocalServer = LocalServer;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenApiDocModifier = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
6
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
7
+ class OpenApiDocModifier {
8
+ constructor(options) {
9
+ this.options = options;
10
+ }
11
+ modifyOpenApiDoc(yamlString) {
12
+ let rval;
13
+ if (!!yamlString && !!this.options) {
14
+ try {
15
+ const openApi = js_yaml_1.default.load(yamlString);
16
+ const removeTags = this.options.removeTags ? this.options.removeTags.map((t) => t.toLowerCase()) : [];
17
+ if (this.options.newServerPath) {
18
+ openApi['servers'] = [{ url: this.options.newServerPath }];
19
+ }
20
+ if (!!this.options.removeTags && openApi['tags']) {
21
+ if (openApi['tags']) {
22
+ openApi['tags'] = openApi.tags.filter((f) => {
23
+ const n = !!f && !!f['name'] ? f['name'].toLowerCase() : '';
24
+ const i = removeTags.indexOf(n);
25
+ return i === -1;
26
+ });
27
+ }
28
+ }
29
+ if (openApi['paths']) {
30
+ let newPaths = {};
31
+ Object.keys(openApi['paths']).forEach((p) => {
32
+ const path = openApi['paths'][p];
33
+ Object.keys(path).forEach((verb) => {
34
+ const entry = path[verb];
35
+ entry.tags = !!entry.tags ? entry.tags.filter((t) => removeTags.lastIndexOf(t.toLowerCase()) == -1) : entry.tags;
36
+ const matcher = verb.toLowerCase() + ' ' + p.toLowerCase();
37
+ if (this.matchNone(matcher, this.options.removeEndpoints)) {
38
+ newPaths[p] = newPaths[p] || {};
39
+ newPaths[p][verb] = entry;
40
+ }
41
+ });
42
+ });
43
+ if (this.options.sortEndpoints) {
44
+ const keys = Object.keys(newPaths).sort();
45
+ const newPaths2 = {};
46
+ keys.forEach((k) => {
47
+ newPaths2[k] = newPaths[k];
48
+ });
49
+ newPaths = newPaths2;
50
+ }
51
+ openApi['paths'] = newPaths;
52
+ }
53
+ let remSchemas = this.options.removeSchemas || [];
54
+ remSchemas = remSchemas.map((s) => s.toLowerCase());
55
+ if (openApi['components'] && openApi['components']['schemas']) {
56
+ const keys = Object.keys(openApi['components']['schemas']).sort();
57
+ const newComp = {};
58
+ keys.forEach((k) => {
59
+ if (remSchemas.indexOf(k.toLowerCase()) === -1) {
60
+ newComp[k] = openApi['components']['schemas'][k];
61
+ }
62
+ });
63
+ openApi['components']['schemas'] = newComp;
64
+ }
65
+ rval = js_yaml_1.default.dump(openApi);
66
+ }
67
+ catch (err) {
68
+ ratchet_common_1.Logger.error('Error processing yaml: %s', err, err);
69
+ }
70
+ }
71
+ return rval;
72
+ }
73
+ matchNone(input, regex) {
74
+ let rval = true;
75
+ if (!!input && !!regex) {
76
+ regex.forEach((r) => {
77
+ rval = rval && !r.test(input);
78
+ });
79
+ }
80
+ return rval;
81
+ }
82
+ }
83
+ exports.OpenApiDocModifier = OpenApiDocModifier;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YamlCombiner = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs_1 = tslib_1.__importDefault(require("fs"));
6
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
7
+ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
8
+ const ratchet_common_2 = require("@bitblit/ratchet-common");
9
+ class YamlCombiner {
10
+ static combine(files, inRootPath = []) {
11
+ ratchet_common_1.RequireRatchet.notNullOrUndefined(files, 'Files argument');
12
+ ratchet_common_1.RequireRatchet.true(files.length > 0, 'Files argument larger than 0');
13
+ ratchet_common_1.RequireRatchet.notNullOrUndefined(inRootPath, 'Root path argument');
14
+ ratchet_common_2.Logger.info('Processing %d files into output', files.length);
15
+ let allElements = {};
16
+ for (let i = 0; i < files.length; i++) {
17
+ const fileContents = fs_1.default.readFileSync(files[i]).toString();
18
+ const openApi = js_yaml_1.default.load(fileContents);
19
+ allElements = Object.assign(allElements, openApi);
20
+ }
21
+ const rootPath = Object.assign([], inRootPath);
22
+ while (rootPath.length > 0) {
23
+ const next = {};
24
+ next[rootPath[rootPath.length - 1]] = allElements;
25
+ rootPath.splice(rootPath.length - 1, 1);
26
+ allElements = next;
27
+ }
28
+ const rval = js_yaml_1.default.dump(allElements);
29
+ return rval;
30
+ }
31
+ }
32
+ exports.YamlCombiner = YamlCombiner;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunBackgroundProcessFromCommandLine = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
6
+ const commander_1 = require("commander");
7
+ const clear_1 = tslib_1.__importDefault(require("clear"));
8
+ class RunBackgroundProcessFromCommandLine {
9
+ static async processBackgroundCliRequest(epsilon, dryRun) {
10
+ let rval = false;
11
+ (0, clear_1.default)();
12
+ ratchet_common_1.Logger.info('Bootstrapping batch processor, args : %j', process.argv);
13
+ commander_1.program
14
+ .version('0.0.1')
15
+ .requiredOption('-p --process <processKey>', 'Background process key')
16
+ .option('-d --data <data>', 'Background data block, JSON encoded')
17
+ .option('-m --metadata <metadata>', 'Background metadata block, JSON encoded')
18
+ .parse(process.argv);
19
+ ratchet_common_1.Logger.info('Program definition : %s : %s : %s', commander_1.program.opts().process, commander_1.program.opts().data, commander_1.program.opts().meta);
20
+ let data = {};
21
+ if (ratchet_common_1.StringRatchet.trimToNull(commander_1.program.opts().data)) {
22
+ data = JSON.parse(commander_1.program.opts().data);
23
+ }
24
+ if (dryRun) {
25
+ ratchet_common_1.Logger.info('Dry run specified - not executing');
26
+ rval = false;
27
+ }
28
+ else {
29
+ if (!epsilon) {
30
+ ratchet_common_1.ErrorRatchet.throwFormattedErr('Cannot run background cli because epsilon global handler is null');
31
+ }
32
+ rval = await epsilon.processSingleBackgroundByParts(commander_1.program.opts().process, data);
33
+ }
34
+ return rval;
35
+ }
36
+ }
37
+ exports.RunBackgroundProcessFromCommandLine = RunBackgroundProcessFromCommandLine;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
4
+ const sample_server_components_1 = require("./sample-server-components");
5
+ const local_server_1 = require("../local-server");
6
+ const ratchet_common_2 = require("@bitblit/ratchet-common");
7
+ ratchet_common_1.Logger.setLevel(ratchet_common_2.LoggerLevelName.debug);
8
+ sample_server_components_1.SampleServerComponents.createSampleBatchOnlyEpsilonGlobalHandler()
9
+ .then((handler) => {
10
+ const testServer = new local_server_1.LocalServer(handler);
11
+ testServer.runServer().then((res) => {
12
+ ratchet_common_1.Logger.info('Got res server');
13
+ process.exit(0);
14
+ });
15
+ })
16
+ .catch((err) => {
17
+ ratchet_common_1.Logger.error('Error: %s', err, err);
18
+ process.exit(1);
19
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
4
+ const sample_server_components_1 = require("./sample-server-components");
5
+ const local_server_1 = require("../local-server");
6
+ const ratchet_common_2 = require("@bitblit/ratchet-common");
7
+ const local_web_token_manipulator_1 = require("../http/auth/local-web-token-manipulator");
8
+ ratchet_common_1.Logger.setLevel(ratchet_common_2.LoggerLevelName.debug);
9
+ const localTokenHandler = new local_web_token_manipulator_1.LocalWebTokenManipulator(['abcd1234'], 'sample-server');
10
+ localTokenHandler
11
+ .createJWTStringAsync('asdf', {}, ['USER'], 3600)
12
+ .then((token) => {
13
+ ratchet_common_1.Logger.info('Use token: %s', token);
14
+ sample_server_components_1.SampleServerComponents.createSampleEpsilonGlobalHandler()
15
+ .then((handler) => {
16
+ const testServer = new local_server_1.LocalServer(handler, 8888, true);
17
+ testServer.runServer().then((res) => {
18
+ ratchet_common_1.Logger.info('Got res server');
19
+ process.exit(0);
20
+ });
21
+ })
22
+ .catch((err) => {
23
+ ratchet_common_1.Logger.error('Error: %s', err, err);
24
+ process.exit(1);
25
+ });
26
+ })
27
+ .catch((tokenErr) => {
28
+ ratchet_common_1.Logger.error('Failed to create token : %s', tokenErr);
29
+ process.exit(1);
30
+ });
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SampleServerComponents = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
6
+ const apollo_server_lambda_1 = require("apollo-server-lambda");
7
+ const apollo_server_core_1 = require("apollo-server-core");
8
+ const ratchet_common_2 = require("@bitblit/ratchet-common");
9
+ const ratchet_common_3 = require("@bitblit/ratchet-common");
10
+ const fs_1 = tslib_1.__importDefault(require("fs"));
11
+ const path_1 = tslib_1.__importDefault(require("path"));
12
+ const ratchet_common_4 = require("@bitblit/ratchet-common");
13
+ const epsilon_global_handler_1 = require("../epsilon-global-handler");
14
+ const built_in_handlers_1 = require("../built-in/http/built-in-handlers");
15
+ const local_web_token_manipulator_1 = require("../http/auth/local-web-token-manipulator");
16
+ const echo_processor_1 = require("../built-in/background/echo-processor");
17
+ const no_op_processor_1 = require("../built-in/background/no-op-processor");
18
+ const sample_delay_processor_1 = require("../built-in/background/sample-delay-processor");
19
+ const log_and_enqueue_echo_processor_1 = require("../built-in/background/log-and-enqueue-echo-processor");
20
+ const epsilon_config_parser_1 = require("../util/epsilon-config-parser");
21
+ const router_util_1 = require("../http/route/router-util");
22
+ const sample_input_validated_processor_1 = require("../built-in/background/sample-input-validated-processor");
23
+ const built_in_authorizers_1 = require("../built-in/http/built-in-authorizers");
24
+ const apollo_filter_1 = require("../built-in/http/apollo-filter");
25
+ const ratchet_common_5 = require("@bitblit/ratchet-common");
26
+ const ratchet_common_6 = require("@bitblit/ratchet-common");
27
+ const built_in_filters_1 = require("../built-in/http/built-in-filters");
28
+ const event_util_1 = require("../http/event-util");
29
+ const log_message_background_error_processor_1 = require("../built-in/background/log-message-background-error-processor");
30
+ const single_thread_local_background_manager_1 = require("../background/manager/single-thread-local-background-manager");
31
+ class SampleServerComponents {
32
+ constructor() { }
33
+ static async createSampleApollo() {
34
+ const gqlString = SampleServerComponents.loadSampleServerGQL();
35
+ ratchet_common_1.Logger.silly('Creating apollo from : %s', gqlString);
36
+ const typeDefs = (0, apollo_server_lambda_1.gql)(gqlString);
37
+ const resolvers = {
38
+ RootQueryType: {
39
+ serverMeta: async (root) => {
40
+ return { version: 'A1', serverTime: new Date().toISOString() };
41
+ },
42
+ forceTimeout: async (root) => {
43
+ await ratchet_common_4.PromiseRatchet.wait(1000 * 60 * 30);
44
+ return { placeholder: 'A1' };
45
+ },
46
+ },
47
+ };
48
+ const server = new apollo_server_lambda_1.ApolloServer({
49
+ debug: false,
50
+ introspection: true,
51
+ typeDefs,
52
+ resolvers,
53
+ plugins: [(0, apollo_server_core_1.ApolloServerPluginLandingPageGraphQLPlayground)({ endpoint: '/graphql' })],
54
+ context: async ({ event, context, express }) => {
55
+ const authTokenSt = event_util_1.EventUtil.extractBearerTokenFromEvent(event);
56
+ const token = null;
57
+ if (!!authTokenSt && authTokenSt.startsWith('Bearer')) {
58
+ ratchet_common_1.Logger.info('Got : %s', authTokenSt);
59
+ }
60
+ const rval = {
61
+ user: token,
62
+ headers: event.headers,
63
+ functionName: context.functionName,
64
+ event,
65
+ context,
66
+ };
67
+ return rval;
68
+ },
69
+ });
70
+ return server;
71
+ }
72
+ static async createSampleEpsilonConfig() {
73
+ const yamlString = SampleServerComponents.loadSampleOpenApiYaml();
74
+ const authorizers = new Map();
75
+ authorizers.set('SampleAuthorizer', (token, evt) => built_in_authorizers_1.BuiltInAuthorizers.simpleLoggedInAuth(token, evt));
76
+ authorizers.set('LogAuthorizer', (token, evt) => built_in_authorizers_1.BuiltInAuthorizers.simpleNoAuthenticationLogAccess(token, evt));
77
+ const handlers = new Map();
78
+ handlers.set('get /', (event, context) => built_in_handlers_1.BuiltInHandlers.sample(event, null, context));
79
+ handlers.set('get /meta/server', (event) => built_in_handlers_1.BuiltInHandlers.sample(event));
80
+ handlers.set('get /meta/user', (event) => built_in_handlers_1.BuiltInHandlers.sample(event));
81
+ handlers.set('get /meta/item/{itemId}', (event) => built_in_handlers_1.BuiltInHandlers.sample(event));
82
+ handlers.set('post /secure/access-token', (event) => built_in_handlers_1.BuiltInHandlers.sample(event));
83
+ handlers.set('get /multi/fixed', (event) => built_in_handlers_1.BuiltInHandlers.sample(event, 'fixed'));
84
+ handlers.set('get /multi/{v}', (event) => built_in_handlers_1.BuiltInHandlers.sample(event, 'variable'));
85
+ handlers.set('get /err/{code}', (event) => {
86
+ const err = ratchet_common_2.ErrorRatchet.fErr('Fake Err : %j', event);
87
+ err['statusCode'] = ratchet_common_3.NumberRatchet.safeNumber(event.pathParameters['code']);
88
+ throw err;
89
+ });
90
+ handlers.set('get /meta/sample-item', async (event) => {
91
+ const numberToUse = ratchet_common_3.NumberRatchet.safeNumber(event.queryStringParameters['num']) || 5;
92
+ const rval = {
93
+ numberParam: numberToUse,
94
+ nameParam: 'Test-String',
95
+ };
96
+ return rval;
97
+ });
98
+ handlers.set('post /meta/sample-item', async (event) => {
99
+ const parsed = event.parsedBody;
100
+ const forceFail = ratchet_common_5.BooleanRatchet.parseBool(ratchet_common_6.StringRatchet.trimToNull(event.queryStringParameters['forceFail'])) === true;
101
+ if (forceFail) {
102
+ parsed['numberParam'] = 'test';
103
+ }
104
+ return parsed;
105
+ });
106
+ const tokenManipulator = new local_web_token_manipulator_1.LocalWebTokenManipulator(['abcd1234'], 'sample.erigir.com')
107
+ .withParseFailureLogLevel(ratchet_common_4.LoggerLevelName.debug)
108
+ .withExtraDecryptionKeys(['abcdefabcdef'])
109
+ .withOldKeyUseLogLevel(ratchet_common_4.LoggerLevelName.info);
110
+ const meta = router_util_1.RouterUtil.defaultHttpMetaProcessingConfigWithAuthenticationHeaderParsing(tokenManipulator);
111
+ meta.timeoutMS = 10000;
112
+ apollo_filter_1.ApolloFilter.addApolloFilterToList(meta.preFilters, new RegExp('.*graphql.*'), await SampleServerComponents.createSampleApollo(), {
113
+ cors: {
114
+ origin: '*',
115
+ credentials: true,
116
+ },
117
+ });
118
+ meta.errorFilters.push((fCtx) => built_in_filters_1.BuiltInFilters.secureOutboundServerErrorForProduction(fCtx, 'Clean Internal Server Error', 500));
119
+ const preFiltersAllowingNull = Object.assign({}, meta);
120
+ preFiltersAllowingNull.preFilters = Object.assign([], preFiltersAllowingNull.preFilters);
121
+ preFiltersAllowingNull.preFilters.splice(8, 1);
122
+ const cfg = {
123
+ defaultMetaHandling: meta,
124
+ handlers: handlers,
125
+ authorizers: authorizers,
126
+ overrideMetaHandling: [
127
+ {
128
+ pathRegex: '/background',
129
+ methods: null,
130
+ config: Object.assign({}, meta, { overrideAuthorizerName: 'LogAuthorizer' }),
131
+ },
132
+ {
133
+ pathRegex: '/meta/server',
134
+ methods: ['GET'],
135
+ config: preFiltersAllowingNull,
136
+ },
137
+ ],
138
+ prefixesToStripBeforeRouteMatch: ['v0'],
139
+ filterHandledRouteMatches: ['options .*'],
140
+ };
141
+ const background = {
142
+ httpMetaEndpoint: '/background/meta',
143
+ httpSubmissionPath: '/background',
144
+ implyTypeFromPathSuffix: false,
145
+ processors: [
146
+ new echo_processor_1.EchoProcessor(),
147
+ new no_op_processor_1.NoOpProcessor(),
148
+ new sample_delay_processor_1.SampleDelayProcessor(),
149
+ new sample_input_validated_processor_1.SampleInputValidatedProcessor(),
150
+ new log_and_enqueue_echo_processor_1.LogAndEnqueueEchoProcessor(),
151
+ ],
152
+ errorProcessor: new log_message_background_error_processor_1.LogMessageBackgroundErrorProcessor(),
153
+ };
154
+ const epsilonConfig = {
155
+ openApiYamlString: yamlString,
156
+ httpConfig: cfg,
157
+ backgroundConfig: background,
158
+ };
159
+ return epsilonConfig;
160
+ }
161
+ static async createSampleEpsilonGlobalHandler() {
162
+ const epsilonConfig = await SampleServerComponents.createSampleEpsilonConfig();
163
+ const backgroundManager = new single_thread_local_background_manager_1.SingleThreadLocalBackgroundManager();
164
+ const epsilonInstance = epsilon_config_parser_1.EpsilonConfigParser.epsilonConfigToEpsilonInstance(epsilonConfig, backgroundManager);
165
+ const rval = new epsilon_global_handler_1.EpsilonGlobalHandler(epsilonInstance);
166
+ return rval;
167
+ }
168
+ static async createSampleBatchOnlyEpsilonGlobalHandler() {
169
+ const epsilonConfig = await SampleServerComponents.createSampleEpsilonConfig();
170
+ epsilonConfig.httpConfig.handlers = new Map();
171
+ const byPassCfg = Object.assign({}, epsilonConfig.httpConfig.defaultMetaHandling);
172
+ byPassCfg.preFilters = byPassCfg.preFilters.concat([
173
+ (fCtx) => built_in_filters_1.BuiltInFilters.autoRespond(fCtx, { message: 'Background Processing Only' }),
174
+ ]);
175
+ epsilonConfig.httpConfig.overrideMetaHandling = [
176
+ {
177
+ pathRegex: '.*background.*',
178
+ invertPathMatching: true,
179
+ config: byPassCfg,
180
+ },
181
+ ];
182
+ epsilonConfig.httpConfig.filterHandledRouteMatches = ['.*'];
183
+ const backgroundManager = new single_thread_local_background_manager_1.SingleThreadLocalBackgroundManager();
184
+ const epsilonInstance = epsilon_config_parser_1.EpsilonConfigParser.epsilonConfigToEpsilonInstance(epsilonConfig, backgroundManager);
185
+ const rval = new epsilon_global_handler_1.EpsilonGlobalHandler(epsilonInstance);
186
+ return rval;
187
+ }
188
+ static loadSampleOpenApiYaml() {
189
+ const yamlString = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'static', 'sample-open-api-doc.yaml')).toString();
190
+ return yamlString;
191
+ }
192
+ static loadSampleServerGQL() {
193
+ const yamlString = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'static', 'sample-server.gql')).toString();
194
+ return yamlString;
195
+ }
196
+ }
197
+ exports.SampleServerComponents = SampleServerComponents;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestErrorServer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ratchet_common_1 = require("@bitblit/ratchet-common");
6
+ const ratchet_node_only_1 = require("@bitblit/ratchet-node-only");
7
+ const net_1 = tslib_1.__importDefault(require("net"));
8
+ class TestErrorServer {
9
+ constructor(port = 9999) {
10
+ this.port = port;
11
+ this.aborted = false;
12
+ }
13
+ async runServer() {
14
+ ratchet_common_1.Logger.info('Starting Test Error net server on port %d', this.port);
15
+ return new Promise((res, rej) => {
16
+ const server = new net_1.default.Server({});
17
+ server.listen(this.port, () => {
18
+ ratchet_common_1.Logger.info('Server listening for connection requests on socket localhost: %s', this.port);
19
+ });
20
+ server.on('connection', async (socket) => {
21
+ ratchet_common_1.Logger.info('X: A new connection has been established.');
22
+ socket.write('Hello, client.');
23
+ socket.on('data', (chunk) => {
24
+ ratchet_common_1.Logger.info('Data received from client: %s', chunk);
25
+ });
26
+ socket.on('end', () => {
27
+ ratchet_common_1.Logger.info('Closing connection with the client');
28
+ });
29
+ socket.on('error', (err) => {
30
+ ratchet_common_1.Logger.info('Error: %s', err);
31
+ });
32
+ });
33
+ });
34
+ }
35
+ async requestHandler(request, response) {
36
+ ratchet_common_1.Logger.info('Got request %d - closing socket', request);
37
+ request.setTimeout(100);
38
+ response.end('x');
39
+ }
40
+ }
41
+ exports.TestErrorServer = TestErrorServer;
42
+ if (ratchet_node_only_1.CliRatchet.isCalledFromCLISingle('test-error-server')) {
43
+ const testServer = new TestErrorServer();
44
+ testServer.runServer().then((res) => {
45
+ ratchet_common_1.Logger.info('Got res server');
46
+ process.exit(0);
47
+ });
48
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AwsUtil = void 0;
4
+ class AwsUtil {
5
+ static apiGatewayV2ToApiGatewayV1(srcEvt) {
6
+ const rval = {
7
+ requestContext: AwsUtil.apiGatewayV2RequestContextToApiGatewayV1RequestContext(srcEvt.requestContext),
8
+ httpMethod: srcEvt.requestContext.http.method,
9
+ path: srcEvt.requestContext.http.path,
10
+ queryStringParameters: srcEvt.queryStringParameters,
11
+ headers: srcEvt.headers,
12
+ body: srcEvt.body,
13
+ isBase64Encoded: srcEvt.isBase64Encoded,
14
+ multiValueHeaders: null,
15
+ multiValueQueryStringParameters: null,
16
+ pathParameters: srcEvt.pathParameters,
17
+ stageVariables: srcEvt.stageVariables,
18
+ resource: null,
19
+ };
20
+ return rval;
21
+ }
22
+ static apiGatewayV2RequestContextToApiGatewayV1RequestContext(srcEvt) {
23
+ const rval = {
24
+ accountId: srcEvt.accountId,
25
+ apiId: srcEvt.apiId,
26
+ authorizer: null,
27
+ domainName: srcEvt.domainName,
28
+ domainPrefix: srcEvt.domainPrefix,
29
+ requestId: srcEvt.requestId,
30
+ routeKey: srcEvt.routeKey,
31
+ stage: srcEvt.stage,
32
+ requestTime: srcEvt.time,
33
+ requestTimeEpoch: srcEvt.timeEpoch,
34
+ protocol: srcEvt.http.protocol,
35
+ httpMethod: srcEvt.http.method,
36
+ identity: null,
37
+ path: srcEvt.http.path,
38
+ resourceId: null,
39
+ resourcePath: null,
40
+ };
41
+ return rval;
42
+ }
43
+ static findInMap(toFind, map) {
44
+ let rval = null;
45
+ map.forEach((val, key) => {
46
+ if (AwsUtil.matchExact(key, toFind)) {
47
+ rval = val;
48
+ }
49
+ });
50
+ return rval;
51
+ }
52
+ static matchExact(r, str) {
53
+ const match = str.match(r);
54
+ return match != null && str == match[0];
55
+ }
56
+ static resolvePotentialFunctionToResult(src, def) {
57
+ let rval = def;
58
+ if (src) {
59
+ if (typeof src === 'function') {
60
+ rval = src();
61
+ }
62
+ else {
63
+ rval = src;
64
+ }
65
+ }
66
+ return rval;
67
+ }
68
+ }
69
+ exports.AwsUtil = AwsUtil;