@empire-builder-kit/runtime 1.0.0-beta.9 → 1.0.0-rc.1
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/NOTICE +6 -0
- package/package.json +93 -3
- package/src/api-contract/artifacts.d.ts +67 -0
- package/src/api-contract/artifacts.js +349 -0
- package/src/api-contract/artifacts.js.map +1 -0
- package/src/api-contract/client.d.ts +79 -0
- package/src/api-contract/client.js +561 -0
- package/src/api-contract/client.js.map +1 -0
- package/src/api-contract/errors.d.ts +7 -0
- package/src/api-contract/errors.js +11 -0
- package/src/api-contract/errors.js.map +1 -0
- package/src/api-contract/index.d.ts +9 -0
- package/src/api-contract/index.js +10 -0
- package/src/api-contract/index.js.map +1 -0
- package/src/api-contract/operation.d.ts +118 -0
- package/src/api-contract/operation.js +609 -0
- package/src/api-contract/operation.js.map +1 -0
- package/src/api-contract/schema.d.ts +81 -0
- package/src/api-contract/schema.js +313 -0
- package/src/api-contract/schema.js.map +1 -0
- package/src/api-contract/server.d.ts +77 -0
- package/src/api-contract/server.js +466 -0
- package/src/api-contract/server.js.map +1 -0
- package/src/async-work/contract.d.ts +17 -0
- package/src/async-work/contract.js +105 -0
- package/src/async-work/contract.js.map +1 -0
- package/src/async-work/idempotency.d.ts +123 -0
- package/src/async-work/idempotency.js +167 -0
- package/src/async-work/idempotency.js.map +1 -0
- package/src/async-work/index.d.ts +8 -0
- package/src/async-work/index.js +9 -0
- package/src/async-work/index.js.map +1 -0
- package/src/async-work/provider.d.ts +90 -0
- package/src/async-work/provider.js +155 -0
- package/src/async-work/provider.js.map +1 -0
- package/src/async-work/recovery.d.ts +103 -0
- package/src/async-work/recovery.js +291 -0
- package/src/async-work/recovery.js.map +1 -0
- package/src/async-work/schedule.d.ts +117 -0
- package/src/async-work/schedule.js +279 -0
- package/src/async-work/schedule.js.map +1 -0
- package/src/async-work/sqs.d.ts +133 -0
- package/src/async-work/sqs.js +280 -0
- package/src/async-work/sqs.js.map +1 -0
- package/src/async-work/webhook.d.ts +60 -0
- package/src/async-work/webhook.js +178 -0
- package/src/async-work/webhook.js.map +1 -0
- package/src/async-work/workflow.d.ts +98 -0
- package/src/async-work/workflow.js +225 -0
- package/src/async-work/workflow.js.map +1 -0
- package/src/auth-backend.d.ts +12 -2
- package/src/auth-backend.js +30 -18
- package/src/auth-backend.js.map +1 -1
- package/src/authorization/admission.d.ts +30 -0
- package/src/authorization/admission.js +87 -0
- package/src/authorization/admission.js.map +1 -0
- package/src/authorization/approval.d.ts +99 -0
- package/src/authorization/approval.js +249 -0
- package/src/authorization/approval.js.map +1 -0
- package/src/authorization/audit.d.ts +35 -0
- package/src/authorization/audit.js +35 -0
- package/src/authorization/audit.js.map +1 -0
- package/src/authorization/delegation.d.ts +149 -0
- package/src/authorization/delegation.js +401 -0
- package/src/authorization/delegation.js.map +1 -0
- package/src/authorization/errors.d.ts +32 -0
- package/src/authorization/errors.js +153 -0
- package/src/authorization/errors.js.map +1 -0
- package/src/authorization/evaluator.d.ts +39 -0
- package/src/authorization/evaluator.js +199 -0
- package/src/authorization/evaluator.js.map +1 -0
- package/src/authorization/index.d.ts +14 -0
- package/src/authorization/index.js +15 -0
- package/src/authorization/index.js.map +1 -0
- package/src/authorization/machine-token.d.ts +87 -0
- package/src/authorization/machine-token.js +201 -0
- package/src/authorization/machine-token.js.map +1 -0
- package/src/authorization/machine.d.ts +32 -0
- package/src/authorization/machine.js +41 -0
- package/src/authorization/machine.js.map +1 -0
- package/src/authorization/model.d.ts +112 -0
- package/src/authorization/model.js +112 -0
- package/src/authorization/model.js.map +1 -0
- package/src/canonical-json.cjs +157 -0
- package/src/canonical-json.d.cts +26 -0
- package/src/canonical-json.d.ts +18 -0
- package/src/canonical-json.js +125 -0
- package/src/canonical-json.js.map +1 -0
- package/src/configuration/contract.d.ts +107 -0
- package/src/configuration/contract.js +461 -0
- package/src/configuration/contract.js.map +1 -0
- package/src/configuration/index.d.ts +3 -0
- package/src/configuration/index.js +4 -0
- package/src/configuration/index.js.map +1 -0
- package/src/configuration/provider.d.ts +59 -0
- package/src/configuration/provider.js +198 -0
- package/src/configuration/provider.js.map +1 -0
- package/src/configuration/rollout-evaluator.cjs +54 -0
- package/src/configuration/rollout-evaluator.d.cts +26 -0
- package/src/configuration/rollout-evaluator.d.ts +18 -0
- package/src/configuration/rollout-evaluator.js +38 -0
- package/src/configuration/rollout-evaluator.js.map +1 -0
- package/src/configuration/rollout-key.cjs +38 -0
- package/src/configuration/rollout-key.d.cts +14 -0
- package/src/configuration/rollout-key.d.ts +10 -0
- package/src/configuration/rollout-key.js +26 -0
- package/src/configuration/rollout-key.js.map +1 -0
- package/src/configuration/rollout.d.ts +60 -0
- package/src/configuration/rollout.js +42 -0
- package/src/configuration/rollout.js.map +1 -0
- package/src/data-lifecycle/contract.d.ts +33 -0
- package/src/data-lifecycle/contract.js +118 -0
- package/src/data-lifecycle/contract.js.map +1 -0
- package/src/data-lifecycle/event.d.ts +28 -0
- package/src/data-lifecycle/event.js +76 -0
- package/src/data-lifecycle/event.js.map +1 -0
- package/src/data-lifecycle/evidence.d.ts +65 -0
- package/src/data-lifecycle/evidence.js +162 -0
- package/src/data-lifecycle/evidence.js.map +1 -0
- package/src/data-lifecycle/holds.d.ts +29 -0
- package/src/data-lifecycle/holds.js +124 -0
- package/src/data-lifecycle/holds.js.map +1 -0
- package/src/data-lifecycle/index.d.ts +8 -0
- package/src/data-lifecycle/index.js +9 -0
- package/src/data-lifecycle/index.js.map +1 -0
- package/src/data-lifecycle/policy.d.ts +16 -0
- package/src/data-lifecycle/policy.js +79 -0
- package/src/data-lifecycle/policy.js.map +1 -0
- package/src/data-lifecycle/restore.d.ts +90 -0
- package/src/data-lifecycle/restore.js +336 -0
- package/src/data-lifecycle/restore.js.map +1 -0
- package/src/data-lifecycle/retention.d.ts +57 -0
- package/src/data-lifecycle/retention.js +232 -0
- package/src/data-lifecycle/retention.js.map +1 -0
- package/src/data-lifecycle/rights.d.ts +171 -0
- package/src/data-lifecycle/rights.js +533 -0
- package/src/data-lifecycle/rights.js.map +1 -0
- package/src/database.d.ts +36 -0
- package/src/database.js +119 -0
- package/src/database.js.map +1 -0
- package/src/deterministic-order.cjs +16 -0
- package/src/deterministic-order.d.cts +9 -0
- package/src/deterministic-order.d.ts +7 -0
- package/src/deterministic-order.js +10 -0
- package/src/deterministic-order.js.map +1 -0
- package/src/events.d.ts +28 -19
- package/src/events.js +171 -66
- package/src/events.js.map +1 -1
- package/src/index.d.ts +7 -1
- package/src/index.js +24 -0
- package/src/index.js.map +1 -1
- package/src/lambda.d.ts +8 -2
- package/src/lambda.js +100 -39
- package/src/lambda.js.map +1 -1
- package/src/logging.d.ts +95 -36
- package/src/logging.js +460 -62
- package/src/logging.js.map +1 -1
- package/src/observability.d.ts +80 -18
- package/src/observability.js +252 -61
- package/src/observability.js.map +1 -1
- package/src/performance/index.d.ts +1 -0
- package/src/performance/index.js +2 -0
- package/src/performance/index.js.map +1 -0
- package/src/performance/protected-load-endpoint.d.ts +140 -0
- package/src/performance/protected-load-endpoint.js +462 -0
- package/src/performance/protected-load-endpoint.js.map +1 -0
- package/src/rds-global-ca-bundle.d.ts +1 -0
- package/src/rds-global-ca-bundle.js +2742 -0
- package/src/rds-global-ca-bundle.js.map +1 -0
- package/src/reliability/burn.d.ts +39 -0
- package/src/reliability/burn.js +102 -0
- package/src/reliability/burn.js.map +1 -0
- package/src/reliability/contract.d.ts +5 -0
- package/src/reliability/contract.js +317 -0
- package/src/reliability/contract.js.map +1 -0
- package/src/reliability/incident.d.ts +16 -0
- package/src/reliability/incident.js +562 -0
- package/src/reliability/incident.js.map +1 -0
- package/src/reliability/index.d.ts +5 -0
- package/src/reliability/index.js +6 -0
- package/src/reliability/index.js.map +1 -0
- package/src/reliability/model.d.ts +191 -0
- package/src/reliability/model.fixtures.d.ts +2 -0
- package/src/reliability/model.fixtures.js +57 -0
- package/src/reliability/model.fixtures.js.map +1 -0
- package/src/reliability/model.js +2 -0
- package/src/reliability/model.js.map +1 -0
- package/src/reliability/slo.d.ts +9 -0
- package/src/reliability/slo.js +74 -0
- package/src/reliability/slo.js.map +1 -0
- package/src/request-context.d.ts +57 -15
- package/src/request-context.js +116 -36
- package/src/request-context.js.map +1 -1
- package/src/safe-reference.cjs +57 -0
- package/src/safe-reference.d.cts +25 -0
- package/src/safe-reference.d.ts +11 -0
- package/src/safe-reference.js +46 -0
- package/src/safe-reference.js.map +1 -0
- package/src/secrets/contract.d.ts +99 -0
- package/src/secrets/contract.js +238 -0
- package/src/secrets/contract.js.map +1 -0
- package/src/secrets/index.d.ts +4 -0
- package/src/secrets/index.js +5 -0
- package/src/secrets/index.js.map +1 -0
- package/src/secrets/observability.d.ts +14 -0
- package/src/secrets/observability.js +100 -0
- package/src/secrets/observability.js.map +1 -0
- package/src/secrets/personal.d.ts +48 -0
- package/src/secrets/personal.js +332 -0
- package/src/secrets/personal.js.map +1 -0
- package/src/secrets/resolver.d.ts +125 -0
- package/src/secrets/resolver.js +602 -0
- package/src/secrets/resolver.js.map +1 -0
- package/src/secrets/sensitive-patterns.cjs +84 -0
- package/src/secrets/sensitive-patterns.d.cts +62 -0
- package/src/secrets/sensitive-patterns.d.ts +40 -0
- package/src/secrets/sensitive-patterns.js +60 -0
- package/src/secrets/sensitive-patterns.js.map +1 -0
package/src/index.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
export * from './auth.js';
|
|
2
2
|
export * from './auth-session.js';
|
|
3
|
+
export * from './canonical-json.js';
|
|
3
4
|
export * from './config.js';
|
|
5
|
+
export * from './deterministic-order.js';
|
|
4
6
|
export * from './events.js';
|
|
5
7
|
export * from './frontend.js';
|
|
6
8
|
export * from './hosts.js';
|
|
7
9
|
export * from './logging.js';
|
|
8
10
|
export * from './lambda.js';
|
|
9
11
|
export * from './observability.js';
|
|
12
|
+
export * from './performance/index.js';
|
|
10
13
|
export * from './request-context.js';
|
|
14
|
+
export * from './reliability/index.js';
|
|
11
15
|
export * from './response.js';
|
|
16
|
+
export * from './safe-reference.js';
|
|
17
|
+
export * from './secrets/sensitive-patterns.js';
|
|
12
18
|
export declare const runtimePackage: {
|
|
13
|
-
readonly exports: readonly ["@empire-builder-kit/runtime/auth", "@empire-builder-kit/runtime/auth-backend", "@empire-builder-kit/runtime/auth-web", "@empire-builder-kit/runtime/auth-session", "@empire-builder-kit/runtime/config", "@empire-builder-kit/runtime/events", "@empire-builder-kit/runtime/frontend", "@empire-builder-kit/runtime/hosts", "@empire-builder-kit/runtime/request-context", "@empire-builder-kit/runtime/logging", "@empire-builder-kit/runtime/lambda", "@empire-builder-kit/runtime/observability", "@empire-builder-kit/runtime/response"];
|
|
19
|
+
readonly exports: readonly ["@empire-builder-kit/runtime/api-client", "@empire-builder-kit/runtime/api-contract", "@empire-builder-kit/runtime/api-server", "@empire-builder-kit/runtime/async-work", "@empire-builder-kit/runtime/auth", "@empire-builder-kit/runtime/auth-backend", "@empire-builder-kit/runtime/auth-web", "@empire-builder-kit/runtime/auth-session", "@empire-builder-kit/runtime/authorization", "@empire-builder-kit/runtime/canonical-json", "@empire-builder-kit/runtime/config", "@empire-builder-kit/runtime/configuration", "@empire-builder-kit/runtime/configuration-rollout-evaluator", "@empire-builder-kit/runtime/configuration-rollout-key", "@empire-builder-kit/runtime/data-lifecycle", "@empire-builder-kit/runtime/database", "@empire-builder-kit/runtime/deterministic-order", "@empire-builder-kit/runtime/events", "@empire-builder-kit/runtime/frontend", "@empire-builder-kit/runtime/hosts", "@empire-builder-kit/runtime/request-context", "@empire-builder-kit/runtime/reliability", "@empire-builder-kit/runtime/logging", "@empire-builder-kit/runtime/lambda", "@empire-builder-kit/runtime/observability", "@empire-builder-kit/runtime/performance", "@empire-builder-kit/runtime/response", "@empire-builder-kit/runtime/safe-reference", "@empire-builder-kit/runtime/secret-contract", "@empire-builder-kit/runtime/secrets", "@empire-builder-kit/runtime/sensitive-patterns"];
|
|
14
20
|
readonly name: "@empire-builder-kit/runtime";
|
|
15
21
|
};
|
package/src/index.js
CHANGED
|
@@ -1,29 +1,53 @@
|
|
|
1
1
|
export * from './auth.js';
|
|
2
2
|
export * from './auth-session.js';
|
|
3
|
+
export * from './canonical-json.js';
|
|
3
4
|
export * from './config.js';
|
|
5
|
+
export * from './deterministic-order.js';
|
|
4
6
|
export * from './events.js';
|
|
5
7
|
export * from './frontend.js';
|
|
6
8
|
export * from './hosts.js';
|
|
7
9
|
export * from './logging.js';
|
|
8
10
|
export * from './lambda.js';
|
|
9
11
|
export * from './observability.js';
|
|
12
|
+
export * from './performance/index.js';
|
|
10
13
|
export * from './request-context.js';
|
|
14
|
+
export * from './reliability/index.js';
|
|
11
15
|
export * from './response.js';
|
|
16
|
+
export * from './safe-reference.js';
|
|
17
|
+
export * from './secrets/sensitive-patterns.js';
|
|
12
18
|
export const runtimePackage = {
|
|
13
19
|
exports: [
|
|
20
|
+
'@empire-builder-kit/runtime/api-client',
|
|
21
|
+
'@empire-builder-kit/runtime/api-contract',
|
|
22
|
+
'@empire-builder-kit/runtime/api-server',
|
|
23
|
+
'@empire-builder-kit/runtime/async-work',
|
|
14
24
|
'@empire-builder-kit/runtime/auth',
|
|
15
25
|
'@empire-builder-kit/runtime/auth-backend',
|
|
16
26
|
'@empire-builder-kit/runtime/auth-web',
|
|
17
27
|
'@empire-builder-kit/runtime/auth-session',
|
|
28
|
+
'@empire-builder-kit/runtime/authorization',
|
|
29
|
+
'@empire-builder-kit/runtime/canonical-json',
|
|
18
30
|
'@empire-builder-kit/runtime/config',
|
|
31
|
+
'@empire-builder-kit/runtime/configuration',
|
|
32
|
+
'@empire-builder-kit/runtime/configuration-rollout-evaluator',
|
|
33
|
+
'@empire-builder-kit/runtime/configuration-rollout-key',
|
|
34
|
+
'@empire-builder-kit/runtime/data-lifecycle',
|
|
35
|
+
'@empire-builder-kit/runtime/database',
|
|
36
|
+
'@empire-builder-kit/runtime/deterministic-order',
|
|
19
37
|
'@empire-builder-kit/runtime/events',
|
|
20
38
|
'@empire-builder-kit/runtime/frontend',
|
|
21
39
|
'@empire-builder-kit/runtime/hosts',
|
|
22
40
|
'@empire-builder-kit/runtime/request-context',
|
|
41
|
+
'@empire-builder-kit/runtime/reliability',
|
|
23
42
|
'@empire-builder-kit/runtime/logging',
|
|
24
43
|
'@empire-builder-kit/runtime/lambda',
|
|
25
44
|
'@empire-builder-kit/runtime/observability',
|
|
45
|
+
'@empire-builder-kit/runtime/performance',
|
|
26
46
|
'@empire-builder-kit/runtime/response',
|
|
47
|
+
'@empire-builder-kit/runtime/safe-reference',
|
|
48
|
+
'@empire-builder-kit/runtime/secret-contract',
|
|
49
|
+
'@empire-builder-kit/runtime/secrets',
|
|
50
|
+
'@empire-builder-kit/runtime/sensitive-patterns',
|
|
27
51
|
],
|
|
28
52
|
name: '@empire-builder-kit/runtime',
|
|
29
53
|
};
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/runtime/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/runtime/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE;QACP,wCAAwC;QACxC,0CAA0C;QAC1C,wCAAwC;QACxC,wCAAwC;QACxC,kCAAkC;QAClC,0CAA0C;QAC1C,sCAAsC;QACtC,0CAA0C;QAC1C,2CAA2C;QAC3C,4CAA4C;QAC5C,oCAAoC;QACpC,2CAA2C;QAC3C,6DAA6D;QAC7D,uDAAuD;QACvD,4CAA4C;QAC5C,sCAAsC;QACtC,iDAAiD;QACjD,oCAAoC;QACpC,sCAAsC;QACtC,mCAAmC;QACnC,6CAA6C;QAC7C,yCAAyC;QACzC,qCAAqC;QACrC,oCAAoC;QACpC,2CAA2C;QAC3C,yCAAyC;QACzC,sCAAsC;QACtC,4CAA4C;QAC5C,6CAA6C;QAC7C,qCAAqC;QACrC,gDAAgD;KACjD;IACD,IAAI,EAAE,6BAA6B;CAC3B,CAAC"}
|
package/src/lambda.d.ts
CHANGED
|
@@ -4,7 +4,11 @@ import { type AppResponse } from './response.js';
|
|
|
4
4
|
export interface RuntimeHttpEvent {
|
|
5
5
|
body?: string | null;
|
|
6
6
|
headers?: Record<string, string | undefined> | null;
|
|
7
|
+
isBase64Encoded?: boolean;
|
|
8
|
+
pathParameters?: Record<string, string | undefined> | null;
|
|
9
|
+
queryStringParameters?: Record<string, string | undefined> | null;
|
|
7
10
|
rawPath?: string;
|
|
11
|
+
rawQueryString?: string;
|
|
8
12
|
requestContext?: {
|
|
9
13
|
http?: {
|
|
10
14
|
method?: string;
|
|
@@ -26,14 +30,16 @@ export interface RuntimeHttpHandlerInput<E extends RuntimeHttpEvent = RuntimeHtt
|
|
|
26
30
|
logger: Logger;
|
|
27
31
|
}
|
|
28
32
|
export interface CreateHttpJsonHandlerOptions<T, E extends RuntimeHttpEvent = RuntimeHttpEvent> {
|
|
29
|
-
|
|
33
|
+
component: string;
|
|
34
|
+
feature: string;
|
|
30
35
|
handle(input: RuntimeHttpHandlerInput<E>): Promise<T> | T;
|
|
31
36
|
includeErrorDetails?: boolean;
|
|
32
37
|
logger?: Logger;
|
|
33
38
|
operation: string;
|
|
34
|
-
|
|
39
|
+
slice: string;
|
|
35
40
|
stage?: string;
|
|
36
41
|
successStatus?: number;
|
|
42
|
+
workspace: string;
|
|
37
43
|
}
|
|
38
44
|
export type RuntimeHttpJsonHandler<E extends RuntimeHttpEvent = RuntimeHttpEvent> = (event: E) => Promise<RuntimeHttpJsonResponse>;
|
|
39
45
|
export declare const lambdaContract: {
|
package/src/lambda.js
CHANGED
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { createLogger } from './logging.js';
|
|
3
3
|
import { createRequestContext, toRequestHeaders, } from './request-context.js';
|
|
4
|
-
import { createErrorResponse, createSuccessResponse, } from './response.js';
|
|
4
|
+
import { createErrorResponse, createSuccessResponse, isRuntimeError, RuntimeError, } from './response.js';
|
|
5
5
|
export const lambdaContract = {
|
|
6
6
|
defaultResponseFormat: 'json',
|
|
7
7
|
exportPath: '@empire-builder-kit/runtime/lambda',
|
|
8
8
|
packageName: '@empire-builder-kit/runtime',
|
|
9
9
|
};
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
function normalizeHeaders(headers) {
|
|
11
|
+
const normalized = Object.create(null);
|
|
12
|
+
const names = new Set();
|
|
13
|
+
for (const [name, value] of Object.entries(headers !== null && headers !== void 0 ? headers : {})) {
|
|
14
|
+
const lowerName = name.toLowerCase();
|
|
15
|
+
if (names.has(lowerName)) {
|
|
16
|
+
throw new RuntimeError({
|
|
17
|
+
code: 'invalid_request',
|
|
18
|
+
expose: true,
|
|
19
|
+
message: 'Request headers must not repeat a case-insensitive name.',
|
|
20
|
+
retryable: false,
|
|
21
|
+
status: 400,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
names.add(lowerName);
|
|
25
|
+
normalized[lowerName] = value;
|
|
13
26
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
27
|
+
return normalized;
|
|
28
|
+
}
|
|
29
|
+
function getHeader(headers, name) {
|
|
30
|
+
return headers === null || headers === void 0 ? void 0 : headers[name.toLowerCase()];
|
|
17
31
|
}
|
|
18
32
|
function resolveStage(stage) {
|
|
19
33
|
const resolved = stage !== null && stage !== void 0 ? stage : process.env['EBK_STAGE'];
|
|
20
|
-
if (resolved === undefined ||
|
|
21
|
-
|
|
34
|
+
if (resolved === undefined ||
|
|
35
|
+
resolved !== resolved.trim() ||
|
|
36
|
+
!/^[A-Za-z0-9._:/-]{1,128}$/.test(resolved)) {
|
|
37
|
+
throw new Error('EBK runtime stage must be a bounded machine-readable token. Pass options.stage or set EBK_STAGE.');
|
|
22
38
|
}
|
|
23
|
-
return resolved
|
|
39
|
+
return resolved;
|
|
24
40
|
}
|
|
25
41
|
function createResponseMeta(context) {
|
|
26
42
|
return {
|
|
@@ -42,43 +58,85 @@ export function toHttpJsonResponse(response) {
|
|
|
42
58
|
};
|
|
43
59
|
}
|
|
44
60
|
export function createHttpJsonHandler(options) {
|
|
45
|
-
var _a
|
|
61
|
+
var _a;
|
|
46
62
|
const stage = resolveStage(options.stage);
|
|
63
|
+
const operationLabel = options.operation.startsWith(`${options.slice}.`)
|
|
64
|
+
? options.operation
|
|
65
|
+
: `${options.slice}.${options.operation}`;
|
|
47
66
|
const baseLogger = (_a = options.logger) !== null && _a !== void 0 ? _a : createLogger({
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
component: options.component,
|
|
68
|
+
feature: options.feature,
|
|
69
|
+
operation: options.operation,
|
|
70
|
+
slice: options.slice,
|
|
50
71
|
stage,
|
|
72
|
+
workspace: options.workspace,
|
|
51
73
|
});
|
|
52
74
|
return (event) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k
|
|
54
|
-
|
|
75
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
76
|
+
let normalizedHeaders;
|
|
77
|
+
try {
|
|
78
|
+
// Reject ambiguous input before request context, authorization, or
|
|
79
|
+
// operation parsing can consume a case-selected header value.
|
|
80
|
+
normalizedHeaders = normalizeHeaders(event.headers);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const context = createRequestContext({
|
|
84
|
+
metadata: {
|
|
85
|
+
method: (_b = (_a = event.requestContext) === null || _a === void 0 ? void 0 : _a.http) === null || _b === void 0 ? void 0 : _b.method,
|
|
86
|
+
},
|
|
87
|
+
operation: options.operation,
|
|
88
|
+
requestId: (_c = event.requestContext) === null || _c === void 0 ? void 0 : _c.requestId,
|
|
89
|
+
slice: options.slice,
|
|
90
|
+
source: 'http',
|
|
91
|
+
stage,
|
|
92
|
+
});
|
|
93
|
+
const requestLogger = baseLogger.child({
|
|
94
|
+
component: options.component,
|
|
95
|
+
context,
|
|
96
|
+
feature: options.feature,
|
|
97
|
+
operation: options.operation,
|
|
98
|
+
});
|
|
99
|
+
const response = createErrorResponse(error, {
|
|
100
|
+
includeDetails: options.includeErrorDetails,
|
|
101
|
+
meta: createResponseMeta(context),
|
|
102
|
+
});
|
|
103
|
+
requestLogger.error(`${operationLabel} request failed`, {
|
|
104
|
+
attributes: {
|
|
105
|
+
httpStatus: response.status,
|
|
106
|
+
},
|
|
107
|
+
error,
|
|
108
|
+
errorMessageIsSafe: isRuntimeError(error) && error.expose,
|
|
109
|
+
outcome: 'failure',
|
|
110
|
+
});
|
|
111
|
+
const httpResponse = toHttpJsonResponse(response);
|
|
112
|
+
return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
|
|
113
|
+
}
|
|
114
|
+
const requestId = (_d = getHeader(normalizedHeaders, 'x-request-id')) !== null && _d !== void 0 ? _d : (_e = event.requestContext) === null || _e === void 0 ? void 0 : _e.requestId;
|
|
55
115
|
const context = createRequestContext({
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
correlationId: (_c = getHeader(event.headers, 'x-correlation-id')) !== null && _c !== void 0 ? _c : requestId,
|
|
116
|
+
causationId: getHeader(normalizedHeaders, 'x-causation-id'),
|
|
117
|
+
correlationId: (_f = getHeader(normalizedHeaders, 'x-correlation-id')) !== null && _f !== void 0 ? _f : requestId,
|
|
59
118
|
metadata: {
|
|
60
|
-
method: (
|
|
61
|
-
path: (_f = event.rawPath) !== null && _f !== void 0 ? _f : (_h = (_g = event.requestContext) === null || _g === void 0 ? void 0 : _g.http) === null || _h === void 0 ? void 0 : _h.path,
|
|
62
|
-
sourceIp: (_k = (_j = event.requestContext) === null || _j === void 0 ? void 0 : _j.http) === null || _k === void 0 ? void 0 : _k.sourceIp,
|
|
63
|
-
userAgent: (_m = (_l = event.requestContext) === null || _l === void 0 ? void 0 : _l.http) === null || _m === void 0 ? void 0 : _m.userAgent,
|
|
119
|
+
method: (_h = (_g = event.requestContext) === null || _g === void 0 ? void 0 : _g.http) === null || _h === void 0 ? void 0 : _h.method,
|
|
64
120
|
},
|
|
65
121
|
operation: options.operation,
|
|
66
122
|
requestId,
|
|
123
|
+
slice: options.slice,
|
|
124
|
+
source: 'http',
|
|
67
125
|
stage,
|
|
68
|
-
tenantId: getHeader(
|
|
69
|
-
traceParent: getHeader(
|
|
70
|
-
traceState: getHeader(
|
|
126
|
+
tenantId: getHeader(normalizedHeaders, 'x-tenant-id'),
|
|
127
|
+
traceParent: getHeader(normalizedHeaders, 'traceparent'),
|
|
128
|
+
traceState: getHeader(normalizedHeaders, 'tracestate'),
|
|
71
129
|
});
|
|
72
130
|
const requestLogger = baseLogger.child({
|
|
131
|
+
component: options.component,
|
|
73
132
|
context,
|
|
74
|
-
|
|
75
|
-
|
|
133
|
+
feature: options.feature,
|
|
134
|
+
operation: options.operation,
|
|
76
135
|
});
|
|
77
|
-
requestLogger.info(`${
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
},
|
|
136
|
+
requestLogger.info(`${operationLabel} request received`, {
|
|
137
|
+
attributes: ((_k = (_j = event.requestContext) === null || _j === void 0 ? void 0 : _j.http) === null || _k === void 0 ? void 0 : _k.method)
|
|
138
|
+
? { httpMethod: event.requestContext.http.method }
|
|
139
|
+
: undefined,
|
|
82
140
|
});
|
|
83
141
|
try {
|
|
84
142
|
const data = yield options.handle({
|
|
@@ -90,10 +148,11 @@ export function createHttpJsonHandler(options) {
|
|
|
90
148
|
meta: createResponseMeta(context),
|
|
91
149
|
status: options.successStatus,
|
|
92
150
|
});
|
|
93
|
-
requestLogger.info(`${
|
|
94
|
-
|
|
95
|
-
|
|
151
|
+
requestLogger.info(`${operationLabel} request completed`, {
|
|
152
|
+
attributes: {
|
|
153
|
+
httpStatus: response.status,
|
|
96
154
|
},
|
|
155
|
+
outcome: 'success',
|
|
97
156
|
});
|
|
98
157
|
const httpResponse = toHttpJsonResponse(response);
|
|
99
158
|
return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
|
|
@@ -103,11 +162,13 @@ export function createHttpJsonHandler(options) {
|
|
|
103
162
|
includeDetails: options.includeErrorDetails,
|
|
104
163
|
meta: createResponseMeta(context),
|
|
105
164
|
});
|
|
106
|
-
requestLogger.error(`${
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
status: response.status,
|
|
165
|
+
requestLogger.error(`${operationLabel} request failed`, {
|
|
166
|
+
attributes: {
|
|
167
|
+
httpStatus: response.status,
|
|
110
168
|
},
|
|
169
|
+
error,
|
|
170
|
+
errorMessageIsSafe: isRuntimeError(error) && error.expose,
|
|
171
|
+
outcome: 'failure',
|
|
111
172
|
});
|
|
112
173
|
const httpResponse = toHttpJsonResponse(response);
|
|
113
174
|
return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
|
package/src/lambda.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../packages/runtime/src/lambda.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../packages/runtime/src/lambda.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,GAGb,MAAM,eAAe,CAAC;AAuDvB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB,EAAE,MAAM;IAC7B,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,6BAA6B;CAClC,CAAC;AAEX,SAAS,gBAAgB,CACvB,OAAoC;IAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAuC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,0DAA0D;gBACnE,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrB,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAChB,OAAoC,EACpC,IAAY;IAEZ,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,IACE,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE;QAC5B,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuB;IACjD,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAwB;;IAExB,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9B,OAAO,gCACL,cAAc,EAAE,kBAAkB,IAC/B,CAAC,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,aAAa;YAC9B,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,SAAS;YAC1B,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC,CACR;QACD,UAAU,EAAE,QAAQ,CAAC,MAAM;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAGnC,OAA2C;;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;QACtE,CAAC,CAAC,OAAO,CAAC,SAAS;QACnB,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAC5C,MAAM,UAAU,GACd,MAAA,OAAO,CAAC,MAAM,mCACd,YAAY,CAAC;QACX,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IAEL,OAAO,CAAO,KAAK,EAAE,EAAE;;QACrB,IAAI,iBAAqD,CAAC;QAC1D,IAAI,CAAC;YACH,mEAAmE;YACnE,8DAA8D;YAC9D,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,oBAAoB,CAAC;gBACnC,QAAQ,EAAE;oBACR,MAAM,EAAE,MAAA,MAAA,KAAK,CAAC,cAAc,0CAAE,IAAI,0CAAE,MAAM;iBAC3C;gBACD,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,MAAA,KAAK,CAAC,cAAc,0CAAE,SAAS;gBAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK;aACN,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACrC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE;gBAC1C,cAAc,EAAE,OAAO,CAAC,mBAAmB;gBAC3C,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;YAEH,aAAa,CAAC,KAAK,CAAC,GAAG,cAAc,iBAAiB,EAAE;gBACtD,UAAU,EAAE;oBACV,UAAU,EAAE,QAAQ,CAAC,MAAM;iBAC5B;gBACD,KAAK;gBACL,kBAAkB,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;gBACzD,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClD,uCACK,YAAY,KACf,OAAO,kCACF,YAAY,CAAC,OAAO,GACpB,gBAAgB,CAAC,OAAO,CAAC,KAE9B;QACJ,CAAC;QAED,MAAM,SAAS,GACb,MAAA,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAC,mCAC5C,MAAA,KAAK,CAAC,cAAc,0CAAE,SAAS,CAAC;QAClC,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACnC,WAAW,EAAE,SAAS,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YAC3D,aAAa,EACX,MAAA,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,mCAAI,SAAS;YAC/D,QAAQ,EAAE;gBACR,MAAM,EAAE,MAAA,MAAA,KAAK,CAAC,cAAc,0CAAE,IAAI,0CAAE,MAAM;aAC3C;YACD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,MAAM;YACd,KAAK;YACL,QAAQ,EAAE,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;YACrD,WAAW,EAAE,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;YACxD,UAAU,EAAE,SAAS,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACvD,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;YACrC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,mBAAmB,EAAE;YACvD,UAAU,EAAE,CAAA,MAAA,MAAA,KAAK,CAAC,cAAc,0CAAE,IAAI,0CAAE,MAAM;gBAC5C,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE;gBAClD,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBAChC,OAAO;gBACP,KAAK;gBACL,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,EAAE;gBAC3C,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC;gBACjC,MAAM,EAAE,OAAO,CAAC,aAAa;aAC9B,CAAC,CAAC;YAEH,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,oBAAoB,EAAE;gBACxD,UAAU,EAAE;oBACV,UAAU,EAAE,QAAQ,CAAC,MAAM;iBAC5B;gBACD,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAElD,uCACK,YAAY,KACf,OAAO,kCACF,YAAY,CAAC,OAAO,GACpB,gBAAgB,CAAC,OAAO,CAAC,KAE9B;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE;gBAC1C,cAAc,EAAE,OAAO,CAAC,mBAAmB;gBAC3C,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;YAEH,aAAa,CAAC,KAAK,CAAC,GAAG,cAAc,iBAAiB,EAAE;gBACtD,UAAU,EAAE;oBACV,UAAU,EAAE,QAAQ,CAAC,MAAM;iBAC5B;gBACD,KAAK;gBACL,kBAAkB,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;gBACzD,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAElD,uCACK,YAAY,KACf,OAAO,kCACF,YAAY,CAAC,OAAO,GACpB,gBAAgB,CAAC,OAAO,CAAC,KAE9B;QACJ,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC"}
|
package/src/logging.d.ts
CHANGED
|
@@ -1,69 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { type RuntimeContext } from './request-context.js';
|
|
2
|
+
export declare const LOG_SCHEMA_VERSION: 1;
|
|
3
|
+
export declare const LOG_RECORD_LIMITS: {
|
|
4
|
+
readonly arrayItems: 32;
|
|
5
|
+
readonly attributeKeys: 64;
|
|
6
|
+
readonly attributeKeyLength: 128;
|
|
7
|
+
readonly attributeStringLength: 2048;
|
|
8
|
+
readonly attributeValues: 256;
|
|
9
|
+
readonly dimensionLength: 128;
|
|
10
|
+
readonly errorStackLength: 4096;
|
|
11
|
+
readonly messageLength: 512;
|
|
12
|
+
readonly nestingDepth: 4;
|
|
13
|
+
readonly recordBytes: number;
|
|
14
|
+
};
|
|
15
|
+
export type LogLevel = 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL';
|
|
16
|
+
export type LogOutcome = 'success' | 'failure' | 'cancelled' | 'unknown';
|
|
17
|
+
export type LogAttributes = Record<string, unknown>;
|
|
18
|
+
export type LoggerContext = Partial<RuntimeContext>;
|
|
19
|
+
export type LogAttributeValue = boolean | null | number | string | LogAttributeValue[] | {
|
|
20
|
+
[key: string]: LogAttributeValue;
|
|
21
|
+
};
|
|
16
22
|
export interface SerializedError {
|
|
17
23
|
code?: number | string;
|
|
18
24
|
message: string;
|
|
19
25
|
name: string;
|
|
20
26
|
stack?: string;
|
|
21
27
|
}
|
|
28
|
+
export interface LogTruncation {
|
|
29
|
+
circularValues?: number;
|
|
30
|
+
droppedKeys?: number;
|
|
31
|
+
recordKeysDropped?: number;
|
|
32
|
+
redactedValues?: number;
|
|
33
|
+
truncatedArrays?: number;
|
|
34
|
+
truncatedDepth?: number;
|
|
35
|
+
truncatedStrings?: number;
|
|
36
|
+
truncatedValues?: number;
|
|
37
|
+
unsupportedValues?: number;
|
|
38
|
+
}
|
|
22
39
|
export interface LogEntry {
|
|
23
|
-
|
|
40
|
+
attributes?: Record<string, LogAttributeValue>;
|
|
41
|
+
causationId?: string;
|
|
42
|
+
component: string;
|
|
24
43
|
correlationId?: string;
|
|
25
|
-
|
|
44
|
+
eventId?: string;
|
|
45
|
+
eventType?: string;
|
|
46
|
+
feature: string;
|
|
26
47
|
level: LogLevel;
|
|
27
48
|
message: string;
|
|
28
|
-
|
|
49
|
+
operation: string;
|
|
50
|
+
outcome?: LogOutcome;
|
|
29
51
|
requestId?: string;
|
|
30
|
-
|
|
31
|
-
|
|
52
|
+
schemaVersion: typeof LOG_SCHEMA_VERSION;
|
|
53
|
+
slice: string;
|
|
54
|
+
spanId?: string;
|
|
55
|
+
stage: string;
|
|
32
56
|
timestamp: string;
|
|
57
|
+
traceId?: string;
|
|
58
|
+
workspace: string;
|
|
33
59
|
}
|
|
34
60
|
export interface LogEventInput {
|
|
61
|
+
attributes?: LogAttributes;
|
|
35
62
|
context?: LoggerContext;
|
|
36
63
|
error?: unknown;
|
|
37
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Only set this for a framework-owned/reviewed error whose message is
|
|
66
|
+
* explicitly classified safe for raw-log readers.
|
|
67
|
+
*/
|
|
68
|
+
errorMessageIsSafe?: boolean;
|
|
69
|
+
outcome?: LogOutcome;
|
|
38
70
|
}
|
|
39
71
|
export interface ChildLoggerOptions {
|
|
72
|
+
attributes?: LogAttributes;
|
|
73
|
+
component?: string;
|
|
40
74
|
context?: LoggerContext;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
stage?: string;
|
|
75
|
+
feature?: string;
|
|
76
|
+
operation?: string;
|
|
44
77
|
}
|
|
45
78
|
export interface CreateLoggerOptions {
|
|
46
|
-
|
|
79
|
+
attributes?: LogAttributes;
|
|
80
|
+
component: string;
|
|
47
81
|
context?: LoggerContext;
|
|
48
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Development diagnostics may include bounded error messages and stacks.
|
|
84
|
+
* Production remains the safe default.
|
|
85
|
+
*/
|
|
86
|
+
errorDetail?: 'development' | 'production';
|
|
87
|
+
feature: string;
|
|
88
|
+
minimumLevel?: LogLevel;
|
|
49
89
|
now?: () => Date;
|
|
50
|
-
|
|
51
|
-
sink?:
|
|
52
|
-
|
|
90
|
+
operation: string;
|
|
91
|
+
sink?: LogSink;
|
|
92
|
+
slice: string;
|
|
93
|
+
stage: string;
|
|
94
|
+
workspace: string;
|
|
53
95
|
}
|
|
54
96
|
export interface Logger {
|
|
55
97
|
child(options?: ChildLoggerOptions): Logger;
|
|
56
|
-
debug(message: string, input?: LogEventInput): LogEntry;
|
|
57
|
-
error(message: string, input?: LogEventInput): LogEntry;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
98
|
+
debug(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
99
|
+
error(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
100
|
+
fatal(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
101
|
+
info(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
102
|
+
log(level: LogLevel, message: string, input?: LogEventInput): LogEntry | undefined;
|
|
103
|
+
trace(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
104
|
+
warn(message: string, input?: LogEventInput): LogEntry | undefined;
|
|
105
|
+
}
|
|
106
|
+
export type LogSink = (entry: Readonly<LogEntry>) => void;
|
|
107
|
+
export interface LogWritable {
|
|
108
|
+
write(chunk: string): unknown;
|
|
109
|
+
}
|
|
110
|
+
export interface ProcessLogStreams {
|
|
111
|
+
stderr: LogWritable;
|
|
112
|
+
stdout: LogWritable;
|
|
113
|
+
}
|
|
114
|
+
export interface SerializeErrorOptions {
|
|
115
|
+
detail?: 'development' | 'production';
|
|
116
|
+
messageIsSafe?: boolean;
|
|
61
117
|
}
|
|
62
118
|
export declare const loggingContract: {
|
|
63
119
|
readonly defaultFormat: "json";
|
|
64
120
|
readonly exportPath: "@empire-builder-kit/runtime/logging";
|
|
65
121
|
readonly packageName: "@empire-builder-kit/runtime";
|
|
122
|
+
readonly schemaVersion: 1;
|
|
66
123
|
};
|
|
67
|
-
export declare function serializeError(error: unknown): SerializedError;
|
|
68
|
-
export declare function
|
|
124
|
+
export declare function serializeError(error: unknown, options?: SerializeErrorOptions): SerializedError;
|
|
125
|
+
export declare function serializeLogRecord(entry: LogEntry): string;
|
|
126
|
+
export declare function createProcessLogSink(streams?: ProcessLogStreams): LogSink;
|
|
127
|
+
export declare const processLogSink: LogSink;
|
|
69
128
|
export declare function createLogger(options: CreateLoggerOptions): Logger;
|