@bitblit/ratchet-epsilon-common 6.0.146-alpha → 6.0.148-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.
- package/lib/config/cron/abstract-cron-entry.d.ts +1 -1
- package/package.json +11 -10
- package/src/background/background-dynamo-log-table-handler.ts +44 -0
- package/src/background/background-entry.ts +4 -0
- package/src/background/background-execution-event-type.ts +9 -0
- package/src/background/background-execution-event.ts +9 -0
- package/src/background/background-execution-listener.ts +6 -0
- package/src/background/background-handler.ts +352 -0
- package/src/background/background-http-adapter-handler.ts +166 -0
- package/src/background/background-meta-response-internal.ts +5 -0
- package/src/background/background-process-handling.ts +6 -0
- package/src/background/background-process-log-table-entry.ts +11 -0
- package/src/background/background-queue-response-internal.ts +9 -0
- package/src/background/background-validator.ts +105 -0
- package/src/background/epsilon-background-process-error.ts +110 -0
- package/src/background/internal-background-entry.ts +10 -0
- package/src/background/manager/abstract-background-manager.ts +120 -0
- package/src/background/manager/aws-large-payload-s3-sqs-sns-background-manager.ts +87 -0
- package/src/background/manager/aws-sqs-sns-background-manager.ts +201 -0
- package/src/background/manager/background-manager-like.ts +44 -0
- package/src/background/manager/background-manager.spec.ts +89 -0
- package/src/background/manager/single-thread-local-background-manager.ts +58 -0
- package/src/background/s3-background-transaction-logger.ts +65 -0
- package/src/build/ratchet-epsilon-common-info.ts +19 -0
- package/src/built-in/background/echo-processor.ts +17 -0
- package/src/built-in/background/log-and-enqueue-echo-processor.ts +14 -0
- package/src/built-in/background/log-message-background-error-processor.ts +10 -0
- package/src/built-in/background/no-op-processor.ts +12 -0
- package/src/built-in/background/retry-processor.ts +51 -0
- package/src/built-in/background/sample-delay-processor.ts +15 -0
- package/src/built-in/background/sample-input-validated-processor-data.ts +4 -0
- package/src/built-in/background/sample-input-validated-processor.ts +14 -0
- package/src/built-in/built-in-trace-id-generators.ts +22 -0
- package/src/built-in/daemon/daemon-authorizer-function.ts +4 -0
- package/src/built-in/daemon/daemon-config.ts +9 -0
- package/src/built-in/daemon/daemon-group-selection-function.ts +3 -0
- package/src/built-in/daemon/daemon-handler.ts +87 -0
- package/src/built-in/daemon/daemon-process-state-list.ts +9 -0
- package/src/built-in/http/apollo/apollo-util.ts +43 -0
- package/src/built-in/http/apollo/default-epsilon-apollo-context.ts +11 -0
- package/src/built-in/http/apollo/epsilon-apollo-context-builder-options.ts +5 -0
- package/src/built-in/http/apollo/epsilon-lambda-apollo-context-function-argument.ts +6 -0
- package/src/built-in/http/apollo/epsilon-lambda-apollo-options.ts +11 -0
- package/src/built-in/http/apollo-filter.ts +151 -0
- package/src/built-in/http/built-in-auth-filters.ts +73 -0
- package/src/built-in/http/built-in-authorizers.ts +22 -0
- package/src/built-in/http/built-in-filters.spec.ts +26 -0
- package/src/built-in/http/built-in-filters.ts +300 -0
- package/src/built-in/http/built-in-handlers.ts +85 -0
- package/src/built-in/http/log-level-manipulation-filter.ts +26 -0
- package/src/built-in/http/run-handler-as-filter.spec.ts +67 -0
- package/src/built-in/http/run-handler-as-filter.ts +102 -0
- package/src/cli/ratchet-cli-handler.ts +23 -0
- package/src/cli/run-background-process-from-command-line.ts +32 -0
- package/src/config/background/background-aws-config.ts +8 -0
- package/src/config/background/background-config.ts +15 -0
- package/src/config/background/background-error-processor.ts +5 -0
- package/src/config/background/background-processor.ts +14 -0
- package/src/config/background/background-transaction-log.ts +9 -0
- package/src/config/background/background-transaction-logger.ts +6 -0
- package/src/config/cron/abstract-cron-entry.ts +17 -0
- package/src/config/cron/cron-background-entry.ts +17 -0
- package/src/config/cron/cron-config.ts +10 -0
- package/src/config/dynamo-db-config.ts +6 -0
- package/src/config/epsilon-config.ts +30 -0
- package/src/config/epsilon-lambda-event-handler.ts +12 -0
- package/src/config/epsilon-logger-config.ts +23 -0
- package/src/config/espilon-server-mode.ts +10 -0
- package/src/config/generic-aws-event-handler-function.ts +1 -0
- package/src/config/http/authorizer-function.ts +9 -0
- package/src/config/http/epsilon-authorization-context.ts +5 -0
- package/src/config/http/epsilon-cors-approach.ts +7 -0
- package/src/config/http/extended-api-gateway-event.ts +8 -0
- package/src/config/http/filter-chain-context.ts +15 -0
- package/src/config/http/filter-function.ts +3 -0
- package/src/config/http/handler-function.ts +4 -0
- package/src/config/http/http-config.ts +27 -0
- package/src/config/http/http-processing-config.ts +23 -0
- package/src/config/http/mapped-http-processing-config.ts +12 -0
- package/src/config/http/null-returned-object-handling.ts +7 -0
- package/src/config/inter-api/inter-api-aws-config.ts +5 -0
- package/src/config/inter-api/inter-api-config.ts +7 -0
- package/src/config/inter-api/inter-api-process-mapping.ts +11 -0
- package/src/config/local-server/local-server-event-logging-style.ts +8 -0
- package/src/config/local-server/local-server-http-method-handling.ts +7 -0
- package/src/config/local-server/local-server-options.ts +12 -0
- package/src/config/logging-trace-id-generator.ts +3 -0
- package/src/config/no-handlers-found-error.ts +6 -0
- package/src/config/open-api/open-api-document-components.ts +4 -0
- package/src/config/open-api/open-api-document.ts +7 -0
- package/src/config/s3-config.ts +8 -0
- package/src/config/sns-config.ts +7 -0
- package/src/config/sqs-config.ts +7 -0
- package/src/epsilon-build-properties.ts +21 -0
- package/src/epsilon-constants.ts +62 -0
- package/src/epsilon-global-handler.ts +238 -0
- package/src/epsilon-instance.ts +20 -0
- package/src/epsilon-logging-extension-processor.ts +19 -0
- package/src/http/auth/api-gateway-adapter-authentication-handler.ts +95 -0
- package/src/http/auth/auth0-web-token-manipulator.ts +69 -0
- package/src/http/auth/basic-auth-token.ts +7 -0
- package/src/http/auth/google-web-token-manipulator.spec.ts +15 -0
- package/src/http/auth/google-web-token-manipulator.ts +80 -0
- package/src/http/auth/jwt-ratchet-local-web-token-manipulator.ts +37 -0
- package/src/http/auth/local-web-token-manipulator.spec.ts +34 -0
- package/src/http/auth/local-web-token-manipulator.ts +114 -0
- package/src/http/auth/web-token-manipulator.ts +9 -0
- package/src/http/error/bad-gateway.ts +11 -0
- package/src/http/error/bad-request-error.ts +11 -0
- package/src/http/error/conflict-error.ts +12 -0
- package/src/http/error/forbidden-error.ts +12 -0
- package/src/http/error/gateway-timeout.ts +12 -0
- package/src/http/error/method-not-allowed-error.ts +12 -0
- package/src/http/error/misconfigured-error.ts +12 -0
- package/src/http/error/not-found-error.ts +12 -0
- package/src/http/error/not-implemented.ts +12 -0
- package/src/http/error/request-timeout-error.ts +12 -0
- package/src/http/error/service-unavailable.ts +12 -0
- package/src/http/error/too-many-requests-error.ts +12 -0
- package/src/http/error/unauthorized-error.ts +12 -0
- package/src/http/event-util.spec.ts +190 -0
- package/src/http/event-util.ts +272 -0
- package/src/http/response-util.spec.ts +117 -0
- package/src/http/response-util.ts +164 -0
- package/src/http/route/epsilon-router.ts +9 -0
- package/src/http/route/extended-auth-response-context.ts +7 -0
- package/src/http/route/route-and-parse.ts +8 -0
- package/src/http/route/route-mapping.ts +21 -0
- package/src/http/route/route-validator-config.ts +5 -0
- package/src/http/route/router-util.spec.ts +33 -0
- package/src/http/route/router-util.ts +314 -0
- package/src/http/web-handler.spec.ts +99 -0
- package/src/http/web-handler.ts +157 -0
- package/src/http/web-v2-handler.ts +34 -0
- package/src/inter-api/inter-api-entry.ts +8 -0
- package/src/inter-api/inter-api-util.spec.ts +77 -0
- package/src/inter-api/inter-api-util.ts +71 -0
- package/src/inter-api-manager.ts +75 -0
- package/src/lambda-event-handler/cron-epsilon-lambda-event-handler.spec.ts +130 -0
- package/src/lambda-event-handler/cron-epsilon-lambda-event-handler.ts +132 -0
- package/src/lambda-event-handler/dynamo-epsilon-lambda-event-handler.ts +42 -0
- package/src/lambda-event-handler/generic-sns-epsilon-lambda-event-handler.ts +38 -0
- package/src/lambda-event-handler/generic-sqs-epsilon-lambda-event-handler.ts +43 -0
- package/src/lambda-event-handler/inter-api-epsilon-lambda-event-handler.ts +33 -0
- package/src/lambda-event-handler/s3-epsilon-lambda-event-handler.ts +50 -0
- package/src/local-container-server.ts +128 -0
- package/src/local-server.spec.ts +16 -0
- package/src/local-server.ts +426 -0
- package/src/open-api-util/open-api-doc-modifications.ts +9 -0
- package/src/open-api-util/open-api-doc-modifier.spec.ts +22 -0
- package/src/open-api-util/open-api-doc-modifier.ts +90 -0
- package/src/open-api-util/yaml-combiner.spec.ts +26 -0
- package/src/open-api-util/yaml-combiner.ts +35 -0
- package/src/sample/sample-server-components-with-apollo.ts +87 -0
- package/src/sample/sample-server-components.ts +183 -0
- package/src/sample/sample-server-static-files.ts +614 -0
- package/src/sample/test-error-server.ts +140 -0
- package/src/util/aws-util.ts +89 -0
- package/src/util/context-global-data.ts +13 -0
- package/src/util/context-util.ts +156 -0
- package/src/util/cron-util.spec.ts +190 -0
- package/src/util/cron-util.ts +86 -0
- package/src/util/epsilon-config-parser.ts +90 -0
- package/src/util/epsilon-server-util.spec.ts +18 -0
- 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
|
+
}
|