@bitblit/ratchet-epsilon-common 6.0.146-alpha → 6.0.147-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 (164) hide show
  1. package/package.json +10 -9
  2. package/src/background/background-dynamo-log-table-handler.ts +44 -0
  3. package/src/background/background-entry.ts +4 -0
  4. package/src/background/background-execution-event-type.ts +9 -0
  5. package/src/background/background-execution-event.ts +9 -0
  6. package/src/background/background-execution-listener.ts +6 -0
  7. package/src/background/background-handler.ts +352 -0
  8. package/src/background/background-http-adapter-handler.ts +166 -0
  9. package/src/background/background-meta-response-internal.ts +5 -0
  10. package/src/background/background-process-handling.ts +6 -0
  11. package/src/background/background-process-log-table-entry.ts +11 -0
  12. package/src/background/background-queue-response-internal.ts +9 -0
  13. package/src/background/background-validator.ts +105 -0
  14. package/src/background/epsilon-background-process-error.ts +110 -0
  15. package/src/background/internal-background-entry.ts +10 -0
  16. package/src/background/manager/abstract-background-manager.ts +120 -0
  17. package/src/background/manager/aws-large-payload-s3-sqs-sns-background-manager.ts +87 -0
  18. package/src/background/manager/aws-sqs-sns-background-manager.ts +201 -0
  19. package/src/background/manager/background-manager-like.ts +44 -0
  20. package/src/background/manager/background-manager.spec.ts +89 -0
  21. package/src/background/manager/single-thread-local-background-manager.ts +58 -0
  22. package/src/background/s3-background-transaction-logger.ts +65 -0
  23. package/src/build/ratchet-epsilon-common-info.ts +19 -0
  24. package/src/built-in/background/echo-processor.ts +17 -0
  25. package/src/built-in/background/log-and-enqueue-echo-processor.ts +14 -0
  26. package/src/built-in/background/log-message-background-error-processor.ts +10 -0
  27. package/src/built-in/background/no-op-processor.ts +12 -0
  28. package/src/built-in/background/retry-processor.ts +51 -0
  29. package/src/built-in/background/sample-delay-processor.ts +15 -0
  30. package/src/built-in/background/sample-input-validated-processor-data.ts +4 -0
  31. package/src/built-in/background/sample-input-validated-processor.ts +14 -0
  32. package/src/built-in/built-in-trace-id-generators.ts +22 -0
  33. package/src/built-in/daemon/daemon-authorizer-function.ts +4 -0
  34. package/src/built-in/daemon/daemon-config.ts +9 -0
  35. package/src/built-in/daemon/daemon-group-selection-function.ts +3 -0
  36. package/src/built-in/daemon/daemon-handler.ts +87 -0
  37. package/src/built-in/daemon/daemon-process-state-list.ts +9 -0
  38. package/src/built-in/http/apollo/apollo-util.ts +43 -0
  39. package/src/built-in/http/apollo/default-epsilon-apollo-context.ts +11 -0
  40. package/src/built-in/http/apollo/epsilon-apollo-context-builder-options.ts +5 -0
  41. package/src/built-in/http/apollo/epsilon-lambda-apollo-context-function-argument.ts +6 -0
  42. package/src/built-in/http/apollo/epsilon-lambda-apollo-options.ts +11 -0
  43. package/src/built-in/http/apollo-filter.ts +151 -0
  44. package/src/built-in/http/built-in-auth-filters.ts +73 -0
  45. package/src/built-in/http/built-in-authorizers.ts +22 -0
  46. package/src/built-in/http/built-in-filters.spec.ts +26 -0
  47. package/src/built-in/http/built-in-filters.ts +300 -0
  48. package/src/built-in/http/built-in-handlers.ts +85 -0
  49. package/src/built-in/http/log-level-manipulation-filter.ts +26 -0
  50. package/src/built-in/http/run-handler-as-filter.spec.ts +67 -0
  51. package/src/built-in/http/run-handler-as-filter.ts +102 -0
  52. package/src/cli/ratchet-cli-handler.ts +23 -0
  53. package/src/cli/run-background-process-from-command-line.ts +32 -0
  54. package/src/config/background/background-aws-config.ts +8 -0
  55. package/src/config/background/background-config.ts +15 -0
  56. package/src/config/background/background-error-processor.ts +5 -0
  57. package/src/config/background/background-processor.ts +14 -0
  58. package/src/config/background/background-transaction-log.ts +9 -0
  59. package/src/config/background/background-transaction-logger.ts +6 -0
  60. package/src/config/cron/abstract-cron-entry.ts +17 -0
  61. package/src/config/cron/cron-background-entry.ts +17 -0
  62. package/src/config/cron/cron-config.ts +10 -0
  63. package/src/config/dynamo-db-config.ts +6 -0
  64. package/src/config/epsilon-config.ts +30 -0
  65. package/src/config/epsilon-lambda-event-handler.ts +12 -0
  66. package/src/config/epsilon-logger-config.ts +23 -0
  67. package/src/config/espilon-server-mode.ts +10 -0
  68. package/src/config/generic-aws-event-handler-function.ts +1 -0
  69. package/src/config/http/authorizer-function.ts +9 -0
  70. package/src/config/http/epsilon-authorization-context.ts +5 -0
  71. package/src/config/http/epsilon-cors-approach.ts +7 -0
  72. package/src/config/http/extended-api-gateway-event.ts +8 -0
  73. package/src/config/http/filter-chain-context.ts +15 -0
  74. package/src/config/http/filter-function.ts +3 -0
  75. package/src/config/http/handler-function.ts +4 -0
  76. package/src/config/http/http-config.ts +27 -0
  77. package/src/config/http/http-processing-config.ts +23 -0
  78. package/src/config/http/mapped-http-processing-config.ts +12 -0
  79. package/src/config/http/null-returned-object-handling.ts +7 -0
  80. package/src/config/inter-api/inter-api-aws-config.ts +5 -0
  81. package/src/config/inter-api/inter-api-config.ts +7 -0
  82. package/src/config/inter-api/inter-api-process-mapping.ts +11 -0
  83. package/src/config/local-server/local-server-event-logging-style.ts +8 -0
  84. package/src/config/local-server/local-server-http-method-handling.ts +7 -0
  85. package/src/config/local-server/local-server-options.ts +12 -0
  86. package/src/config/logging-trace-id-generator.ts +3 -0
  87. package/src/config/no-handlers-found-error.ts +6 -0
  88. package/src/config/open-api/open-api-document-components.ts +4 -0
  89. package/src/config/open-api/open-api-document.ts +7 -0
  90. package/src/config/s3-config.ts +8 -0
  91. package/src/config/sns-config.ts +7 -0
  92. package/src/config/sqs-config.ts +7 -0
  93. package/src/epsilon-build-properties.ts +21 -0
  94. package/src/epsilon-constants.ts +62 -0
  95. package/src/epsilon-global-handler.ts +238 -0
  96. package/src/epsilon-instance.ts +20 -0
  97. package/src/epsilon-logging-extension-processor.ts +19 -0
  98. package/src/http/auth/api-gateway-adapter-authentication-handler.ts +95 -0
  99. package/src/http/auth/auth0-web-token-manipulator.ts +69 -0
  100. package/src/http/auth/basic-auth-token.ts +7 -0
  101. package/src/http/auth/google-web-token-manipulator.spec.ts +15 -0
  102. package/src/http/auth/google-web-token-manipulator.ts +80 -0
  103. package/src/http/auth/jwt-ratchet-local-web-token-manipulator.ts +37 -0
  104. package/src/http/auth/local-web-token-manipulator.spec.ts +34 -0
  105. package/src/http/auth/local-web-token-manipulator.ts +114 -0
  106. package/src/http/auth/web-token-manipulator.ts +9 -0
  107. package/src/http/error/bad-gateway.ts +11 -0
  108. package/src/http/error/bad-request-error.ts +11 -0
  109. package/src/http/error/conflict-error.ts +12 -0
  110. package/src/http/error/forbidden-error.ts +12 -0
  111. package/src/http/error/gateway-timeout.ts +12 -0
  112. package/src/http/error/method-not-allowed-error.ts +12 -0
  113. package/src/http/error/misconfigured-error.ts +12 -0
  114. package/src/http/error/not-found-error.ts +12 -0
  115. package/src/http/error/not-implemented.ts +12 -0
  116. package/src/http/error/request-timeout-error.ts +12 -0
  117. package/src/http/error/service-unavailable.ts +12 -0
  118. package/src/http/error/too-many-requests-error.ts +12 -0
  119. package/src/http/error/unauthorized-error.ts +12 -0
  120. package/src/http/event-util.spec.ts +190 -0
  121. package/src/http/event-util.ts +272 -0
  122. package/src/http/response-util.spec.ts +117 -0
  123. package/src/http/response-util.ts +164 -0
  124. package/src/http/route/epsilon-router.ts +9 -0
  125. package/src/http/route/extended-auth-response-context.ts +7 -0
  126. package/src/http/route/route-and-parse.ts +8 -0
  127. package/src/http/route/route-mapping.ts +21 -0
  128. package/src/http/route/route-validator-config.ts +5 -0
  129. package/src/http/route/router-util.spec.ts +33 -0
  130. package/src/http/route/router-util.ts +314 -0
  131. package/src/http/web-handler.spec.ts +99 -0
  132. package/src/http/web-handler.ts +157 -0
  133. package/src/http/web-v2-handler.ts +34 -0
  134. package/src/inter-api/inter-api-entry.ts +8 -0
  135. package/src/inter-api/inter-api-util.spec.ts +77 -0
  136. package/src/inter-api/inter-api-util.ts +71 -0
  137. package/src/inter-api-manager.ts +75 -0
  138. package/src/lambda-event-handler/cron-epsilon-lambda-event-handler.spec.ts +130 -0
  139. package/src/lambda-event-handler/cron-epsilon-lambda-event-handler.ts +132 -0
  140. package/src/lambda-event-handler/dynamo-epsilon-lambda-event-handler.ts +42 -0
  141. package/src/lambda-event-handler/generic-sns-epsilon-lambda-event-handler.ts +38 -0
  142. package/src/lambda-event-handler/generic-sqs-epsilon-lambda-event-handler.ts +43 -0
  143. package/src/lambda-event-handler/inter-api-epsilon-lambda-event-handler.ts +33 -0
  144. package/src/lambda-event-handler/s3-epsilon-lambda-event-handler.ts +50 -0
  145. package/src/local-container-server.ts +128 -0
  146. package/src/local-server.spec.ts +16 -0
  147. package/src/local-server.ts +426 -0
  148. package/src/open-api-util/open-api-doc-modifications.ts +9 -0
  149. package/src/open-api-util/open-api-doc-modifier.spec.ts +22 -0
  150. package/src/open-api-util/open-api-doc-modifier.ts +90 -0
  151. package/src/open-api-util/yaml-combiner.spec.ts +26 -0
  152. package/src/open-api-util/yaml-combiner.ts +35 -0
  153. package/src/sample/sample-server-components-with-apollo.ts +87 -0
  154. package/src/sample/sample-server-components.ts +183 -0
  155. package/src/sample/sample-server-static-files.ts +614 -0
  156. package/src/sample/test-error-server.ts +140 -0
  157. package/src/util/aws-util.ts +89 -0
  158. package/src/util/context-global-data.ts +13 -0
  159. package/src/util/context-util.ts +156 -0
  160. package/src/util/cron-util.spec.ts +190 -0
  161. package/src/util/cron-util.ts +86 -0
  162. package/src/util/epsilon-config-parser.ts +90 -0
  163. package/src/util/epsilon-server-util.spec.ts +18 -0
  164. package/src/util/epsilon-server-util.ts +16 -0
@@ -0,0 +1,90 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
3
+ import yaml from 'js-yaml';
4
+ import { ModelValidator } from '@bitblit/ratchet-misc/model-validator/model-validator';
5
+ import { BackgroundHttpAdapterHandler } from '../background/background-http-adapter-handler.js';
6
+ import { OpenApiDocument } from '../config/open-api/open-api-document.js';
7
+ import { EpsilonConfig } from '../config/epsilon-config.js';
8
+ import { EpsilonInstance } from '../epsilon-instance.js';
9
+ import { BackgroundHandler } from '../background/background-handler.js';
10
+ import { EpsilonRouter } from '../http/route/epsilon-router.js';
11
+ import { RouterUtil } from '../http/route/router-util.js';
12
+ import { WebHandler } from '../http/web-handler.js';
13
+ import { MisconfiguredError } from '../http/error/misconfigured-error.js';
14
+ import { EpsilonGlobalHandler } from '../epsilon-global-handler.js';
15
+ import { BackgroundManagerLike } from '../background/manager/background-manager-like.js';
16
+
17
+ export class EpsilonConfigParser {
18
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
19
+ constructor() {
20
+ // Prevent instantiation
21
+ }
22
+
23
+ public static epsilonConfigToEpsilonGlobalHandler(
24
+ config: EpsilonConfig,
25
+ backgroundManager?: BackgroundManagerLike,
26
+ ): EpsilonGlobalHandler {
27
+ return new EpsilonGlobalHandler(EpsilonConfigParser.epsilonConfigToEpsilonInstance(config, backgroundManager));
28
+ }
29
+
30
+ public static epsilonConfigToEpsilonInstance(config: EpsilonConfig, backgroundManager?: BackgroundManagerLike): EpsilonInstance {
31
+ this.validateGlobalConfig(config);
32
+ const label: string = config?.label || 'NO EPSILON CONFIG LABEL SET';
33
+ Logger.info('Creating epsilon : %s : BM : %j', label, backgroundManager);
34
+ const parsed: OpenApiDocument = EpsilonConfigParser.parseOpenApiDocument(config.openApiYamlString);
35
+ const modelValidator: ModelValidator = EpsilonConfigParser.openApiDocToValidator(parsed);
36
+ const backgroundHttpAdapter: BackgroundHttpAdapterHandler = new BackgroundHttpAdapterHandler(
37
+ config.backgroundConfig,
38
+ modelValidator,
39
+ backgroundManager,
40
+ );
41
+ const backgroundHandler: BackgroundHandler = config.backgroundConfig
42
+ ? new BackgroundHandler(config.backgroundConfig, backgroundManager, modelValidator)
43
+ : null;
44
+
45
+ // TODO: refactor me
46
+ const epsilonRouter: EpsilonRouter = config.httpConfig
47
+ ? RouterUtil.openApiYamlToRouterConfig(config.httpConfig, parsed, modelValidator, backgroundHttpAdapter)
48
+ : null;
49
+ const webHandler: WebHandler = epsilonRouter ? new WebHandler(epsilonRouter) : null;
50
+
51
+ const inst: EpsilonInstance = {
52
+ config: config,
53
+ parsedOpenApiDoc: parsed,
54
+ modelValidator: modelValidator,
55
+ webHandler: webHandler,
56
+ backgroundHandler: backgroundHandler,
57
+ backgroundManager: backgroundManager,
58
+ };
59
+
60
+ return inst;
61
+ }
62
+
63
+ public static parseOpenApiDocument(yamlString: string): OpenApiDocument {
64
+ if (!yamlString) {
65
+ throw new MisconfiguredError('Cannot configure, missing either yaml or cfg');
66
+ }
67
+ const doc: OpenApiDocument = yaml.load(yamlString) as OpenApiDocument;
68
+ return doc;
69
+ }
70
+
71
+ public static openApiDocToValidator(doc: OpenApiDocument): ModelValidator {
72
+ let rval: ModelValidator = null;
73
+ if (doc?.components?.schemas) {
74
+ rval = ModelValidator.createFromParsedObject(doc.components.schemas);
75
+ }
76
+ return rval;
77
+ }
78
+
79
+ public static validateGlobalConfig(config: EpsilonConfig) {
80
+ if (!config) {
81
+ ErrorRatchet.throwFormattedErr('Config may not be null');
82
+ }
83
+ if (!config.openApiYamlString) {
84
+ ErrorRatchet.throwFormattedErr('Config must define an open api document');
85
+ }
86
+ if (!!config.cron && !config.cron.timezone) {
87
+ ErrorRatchet.throwFormattedErr('Cron is defined, but timezone is not set');
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,18 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { EpsilonServerMode } from '../config/espilon-server-mode.js';
3
+ import { EpsilonServerUtil } from './epsilon-server-util.js';
4
+
5
+ describe('#epsilonServerUtil', function () {
6
+ test('should extract server type', async () => {
7
+ process.env['MYTEST'] = 'Production';
8
+ const val: EpsilonServerMode = EpsilonServerUtil.serverMode('MYTEST', null);
9
+ expect(val).toEqual(EpsilonServerMode.Production);
10
+
11
+ process.env['MYTEST'] = 'asdf';
12
+ const val2: EpsilonServerMode = EpsilonServerUtil.serverMode('MYTEST', null);
13
+ expect(val2).toBeNull;
14
+
15
+ const val3: EpsilonServerMode = EpsilonServerUtil.serverMode('MYTEST', EpsilonServerMode.QA);
16
+ expect(val3).toEqual(EpsilonServerMode.QA);
17
+ });
18
+ });
@@ -0,0 +1,16 @@
1
+ import { EpsilonServerMode } from '../config/espilon-server-mode.js';
2
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
3
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
4
+ import { MapRatchet } from '@bitblit/ratchet-common/lang/map-ratchet';
5
+
6
+ export class EpsilonServerUtil {
7
+ public static serverMode(envParamName: string, def: EpsilonServerMode): EpsilonServerMode {
8
+ let rval: EpsilonServerMode = def;
9
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(envParamName);
10
+ if (typeof process !== 'undefined') {
11
+ const stVal: string = StringRatchet.trimToNull(process.env[envParamName]);
12
+ rval = MapRatchet.caseInsensitiveAccess<EpsilonServerMode>(EpsilonServerMode, stVal) ?? def;
13
+ }
14
+ return rval;
15
+ }
16
+ }