@beignet/core 0.0.2 → 0.0.4
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/CHANGELOG.md +173 -0
- package/README.md +821 -30
- package/dist/application/index.d.ts +28 -2
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +140 -12
- package/dist/application/index.js.map +1 -1
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +136 -48
- package/dist/client/client.js.map +1 -1
- package/dist/client/error-messages.d.ts +14 -0
- package/dist/client/error-messages.d.ts.map +1 -0
- package/dist/client/error-messages.js +23 -0
- package/dist/client/error-messages.js.map +1 -0
- package/dist/client/index.d.ts +8 -4
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +35 -5
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client-only.d.ts +8 -0
- package/dist/client-only.d.ts.map +1 -0
- package/dist/client-only.js +8 -0
- package/dist/client-only.js.map +1 -0
- package/dist/config/index.d.ts +5 -5
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/contracts/catalog-errors.d.ts +27 -0
- package/dist/contracts/catalog-errors.d.ts.map +1 -0
- package/dist/contracts/catalog-errors.js +69 -0
- package/dist/contracts/catalog-errors.js.map +1 -0
- package/dist/contracts/contract-builder.d.ts +15 -12
- package/dist/contracts/contract-builder.d.ts.map +1 -1
- package/dist/contracts/contract-builder.js +15 -41
- package/dist/contracts/contract-builder.js.map +1 -1
- package/dist/contracts/contract-group.d.ts +11 -8
- package/dist/contracts/contract-group.d.ts.map +1 -1
- package/dist/contracts/contract-group.js +13 -40
- package/dist/contracts/contract-group.js.map +1 -1
- package/dist/contracts/contract-like.d.ts +1 -1
- package/dist/contracts/contract-like.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +13 -9
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +9 -5
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/openapi-meta.d.ts +48 -0
- package/dist/contracts/openapi-meta.d.ts.map +1 -1
- package/dist/contracts/openapi-meta.js +3 -0
- package/dist/contracts/openapi-meta.js.map +1 -1
- package/dist/contracts/path-template.d.ts +1 -1
- package/dist/contracts/path-template.js +2 -2
- package/dist/contracts/path-template.js.map +1 -1
- package/dist/contracts/schema-shape.d.ts +37 -0
- package/dist/contracts/schema-shape.d.ts.map +1 -0
- package/dist/contracts/schema-shape.js +61 -0
- package/dist/contracts/schema-shape.js.map +1 -0
- package/dist/contracts/success-status.d.ts +32 -0
- package/dist/contracts/success-status.d.ts.map +1 -0
- package/dist/contracts/success-status.js +18 -0
- package/dist/contracts/success-status.js.map +1 -0
- package/dist/contracts/types.d.ts +25 -5
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/contracts/types.js.map +1 -1
- package/dist/contracts/utils.d.ts +1 -1
- package/dist/contracts/utils.d.ts.map +1 -1
- package/dist/contracts/utils.js +1 -1
- package/dist/contracts/utils.js.map +1 -1
- package/dist/domain/events.d.ts +1 -1
- package/dist/domain/events.d.ts.map +1 -1
- package/dist/domain/events.js +1 -1
- package/dist/domain/events.js.map +1 -1
- package/dist/domain/index.d.ts +3 -3
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -3
- package/dist/domain/index.js.map +1 -1
- package/dist/errors/catalog.d.ts +9 -1
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +7 -1
- package/dist/errors/catalog.js.map +1 -1
- package/dist/errors/http.d.ts +10 -0
- package/dist/errors/http.d.ts.map +1 -1
- package/dist/errors/http.js +11 -1
- package/dist/errors/http.js.map +1 -1
- package/dist/errors/index.d.ts +4 -4
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +4 -4
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/response.d.ts +4 -1
- package/dist/errors/response.d.ts.map +1 -1
- package/dist/errors/response.js.map +1 -1
- package/dist/events/index.d.ts +10 -12
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +10 -10
- package/dist/events/index.js.map +1 -1
- package/dist/idempotency/index.d.ts +5 -3
- package/dist/idempotency/index.d.ts.map +1 -1
- package/dist/idempotency/index.js.map +1 -1
- package/dist/jobs/index.d.ts +148 -16
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +174 -14
- package/dist/jobs/index.js.map +1 -1
- package/dist/notifications/index.d.ts +14 -16
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +14 -14
- package/dist/notifications/index.js.map +1 -1
- package/dist/openapi/index.d.ts +8 -3
- package/dist/openapi/index.d.ts.map +1 -1
- package/dist/openapi/index.js +41 -29
- package/dist/openapi/index.js.map +1 -1
- package/dist/openapi/schema-introspector.d.ts +37 -0
- package/dist/openapi/schema-introspector.d.ts.map +1 -1
- package/dist/openapi/schema-introspector.js +23 -17
- package/dist/openapi/schema-introspector.js.map +1 -1
- package/dist/outbox/index.d.ts +18 -4
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +104 -4
- package/dist/outbox/index.js.map +1 -1
- package/dist/ports/audit.d.ts +56 -10
- package/dist/ports/audit.d.ts.map +1 -1
- package/dist/ports/audit.js +71 -3
- package/dist/ports/audit.js.map +1 -1
- package/dist/ports/auth.d.ts +92 -0
- package/dist/ports/auth.d.ts.map +1 -1
- package/dist/ports/auth.js +92 -0
- package/dist/ports/auth.js.map +1 -1
- package/dist/ports/events.d.ts +2 -2
- package/dist/ports/events.d.ts.map +1 -1
- package/dist/ports/index.d.ts +62 -33
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +28 -34
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/policy.d.ts +32 -3
- package/dist/ports/policy.d.ts.map +1 -1
- package/dist/ports/policy.js +13 -2
- package/dist/ports/policy.js.map +1 -1
- package/dist/ports/testing.d.ts +1030 -2
- package/dist/ports/testing.d.ts.map +1 -1
- package/dist/ports/testing.js +1031 -1
- package/dist/ports/testing.js.map +1 -1
- package/dist/ports/unbound.d.ts +21 -0
- package/dist/ports/unbound.d.ts.map +1 -0
- package/dist/ports/unbound.js +57 -0
- package/dist/ports/unbound.js.map +1 -0
- package/dist/ports/unit-of-work.d.ts +1 -1
- package/dist/ports/unit-of-work.d.ts.map +1 -1
- package/dist/ports/unit-of-work.js +1 -1
- package/dist/ports/unit-of-work.js.map +1 -1
- package/dist/providers/index.d.ts +3 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/instrumentation.d.ts +46 -5
- package/dist/providers/instrumentation.d.ts.map +1 -1
- package/dist/providers/instrumentation.js +25 -6
- package/dist/providers/instrumentation.js.map +1 -1
- package/dist/providers/metadata.d.ts +39 -0
- package/dist/providers/metadata.d.ts.map +1 -0
- package/dist/providers/metadata.js +169 -0
- package/dist/providers/metadata.js.map +1 -0
- package/dist/providers/provider.d.ts +114 -9
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js +3 -20
- package/dist/providers/provider.js.map +1 -1
- package/dist/schedules/index.d.ts +94 -13
- package/dist/schedules/index.d.ts.map +1 -1
- package/dist/schedules/index.js +66 -12
- package/dist/schedules/index.js.map +1 -1
- package/dist/server/audit-context.d.ts +29 -0
- package/dist/server/audit-context.d.ts.map +1 -0
- package/dist/server/audit-context.js +44 -0
- package/dist/server/audit-context.js.map +1 -0
- package/dist/server/context.d.ts +141 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +39 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/contract-like.d.ts +1 -1
- package/dist/server/contract-like.d.ts.map +1 -1
- package/dist/server/contract-like.js +1 -1
- package/dist/server/contract-like.js.map +1 -1
- package/dist/server/health.d.ts +2 -2
- package/dist/server/health.d.ts.map +1 -1
- package/dist/server/hooks/auth.d.ts +89 -65
- package/dist/server/hooks/auth.d.ts.map +1 -1
- package/dist/server/hooks/auth.js +84 -55
- package/dist/server/hooks/auth.js.map +1 -1
- package/dist/server/hooks/cors.d.ts +1 -1
- package/dist/server/hooks/cors.d.ts.map +1 -1
- package/dist/server/hooks/errors.d.ts +2 -2
- package/dist/server/hooks/errors.d.ts.map +1 -1
- package/dist/server/hooks/errors.js +2 -2
- package/dist/server/hooks/errors.js.map +1 -1
- package/dist/server/hooks/idempotency.d.ts +78 -0
- package/dist/server/hooks/idempotency.d.ts.map +1 -0
- package/dist/server/hooks/idempotency.js +154 -0
- package/dist/server/hooks/idempotency.js.map +1 -0
- package/dist/server/hooks/index.d.ts +8 -7
- package/dist/server/hooks/index.d.ts.map +1 -1
- package/dist/server/hooks/index.js +6 -5
- package/dist/server/hooks/index.js.map +1 -1
- package/dist/server/hooks/logging.d.ts +2 -2
- package/dist/server/hooks/logging.d.ts.map +1 -1
- package/dist/server/hooks/logging.js +1 -1
- package/dist/server/hooks/logging.js.map +1 -1
- package/dist/server/hooks/rate-limit.d.ts +25 -7
- package/dist/server/hooks/rate-limit.d.ts.map +1 -1
- package/dist/server/hooks/rate-limit.js +47 -12
- package/dist/server/hooks/rate-limit.js.map +1 -1
- package/dist/server/hooks.d.ts +1 -1
- package/dist/server/hooks.d.ts.map +1 -1
- package/dist/server/hooks.js +1 -1
- package/dist/server/hooks.js.map +1 -1
- package/dist/server/http.d.ts +84 -6
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/index.d.ts +36 -12
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +24 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +108 -0
- package/dist/server/instrumentation.d.ts.map +1 -0
- package/dist/server/instrumentation.js +297 -0
- package/dist/server/instrumentation.js.map +1 -0
- package/dist/server/openapi.d.ts +3 -3
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/openapi.js +1 -1
- package/dist/server/openapi.js.map +1 -1
- package/dist/server/providers/index.d.ts +3 -3
- package/dist/server/providers/index.d.ts.map +1 -1
- package/dist/server/providers/index.js +3 -3
- package/dist/server/providers/index.js.map +1 -1
- package/dist/server/providers/loadProviderConfig.d.ts +2 -2
- package/dist/server/providers/loadProviderConfig.d.ts.map +1 -1
- package/dist/server/providers/loadProviderConfig.js +2 -2
- package/dist/server/providers/loadProviderConfig.js.map +1 -1
- package/dist/server/request-context.d.ts +67 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +79 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/server-context.d.ts +38 -0
- package/dist/server/server-context.d.ts.map +1 -0
- package/dist/server/server-context.js +38 -0
- package/dist/server/server-context.js.map +1 -0
- package/dist/server/server.d.ts +148 -35
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +482 -145
- package/dist/server/server.js.map +1 -1
- package/dist/server/types.d.ts +2 -2
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +2 -2
- package/dist/server/types.js.map +1 -1
- package/dist/server/use-case-route.d.ts +263 -0
- package/dist/server/use-case-route.d.ts.map +1 -0
- package/dist/server/use-case-route.js +77 -0
- package/dist/server/use-case-route.js.map +1 -0
- package/dist/server-only.d.ts +8 -0
- package/dist/server-only.d.ts.map +1 -0
- package/dist/server-only.js +8 -0
- package/dist/server-only.js.map +1 -0
- package/dist/tasks/index.d.ts +139 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +98 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/testing/index.d.ts +611 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +434 -4
- package/dist/testing/index.js.map +1 -1
- package/dist/tracing/index.d.ts +89 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +101 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/uploads/client.d.ts +278 -0
- package/dist/uploads/client.d.ts.map +1 -0
- package/dist/uploads/client.js +428 -0
- package/dist/uploads/client.js.map +1 -0
- package/dist/uploads/index.d.ts +361 -0
- package/dist/uploads/index.d.ts.map +1 -0
- package/dist/uploads/index.js +543 -0
- package/dist/uploads/index.js.map +1 -0
- package/package.json +34 -3
- package/src/application/index.ts +193 -10
- package/src/client/client.ts +148 -150
- package/src/client/error-messages.ts +35 -0
- package/src/client/index.ts +12 -4
- package/src/client/types.ts +44 -5
- package/src/client-only.ts +7 -0
- package/src/config/index.ts +6 -6
- package/src/contracts/catalog-errors.ts +115 -0
- package/src/contracts/contract-builder.ts +39 -76
- package/src/contracts/contract-group.ts +33 -68
- package/src/contracts/contract-like.ts +1 -1
- package/src/contracts/index.ts +24 -11
- package/src/contracts/openapi-meta.ts +55 -0
- package/src/contracts/path-template.ts +2 -2
- package/src/contracts/schema-shape.ts +75 -0
- package/src/contracts/success-status.ts +68 -0
- package/src/contracts/types.ts +32 -5
- package/src/contracts/utils.ts +5 -2
- package/src/domain/events.ts +6 -2
- package/src/domain/index.ts +3 -3
- package/src/errors/catalog.ts +9 -1
- package/src/errors/http.ts +11 -1
- package/src/errors/index.ts +4 -4
- package/src/errors/response.ts +4 -1
- package/src/events/index.ts +12 -26
- package/src/idempotency/index.ts +5 -3
- package/src/jobs/index.ts +340 -29
- package/src/notifications/index.ts +17 -27
- package/src/openapi/index.ts +73 -38
- package/src/openapi/schema-introspector.ts +68 -17
- package/src/outbox/index.ts +151 -6
- package/src/ports/audit.ts +120 -11
- package/src/ports/auth.ts +132 -0
- package/src/ports/events.ts +2 -2
- package/src/ports/index.ts +104 -35
- package/src/ports/policy.ts +50 -3
- package/src/ports/testing.ts +2220 -33
- package/src/ports/unbound.ts +64 -0
- package/src/ports/unit-of-work.ts +6 -2
- package/src/providers/index.ts +16 -3
- package/src/providers/instrumentation.ts +93 -8
- package/src/providers/metadata.ts +234 -0
- package/src/providers/provider.ts +168 -9
- package/src/schedules/index.ts +173 -23
- package/src/server/audit-context.ts +45 -0
- package/src/server/context.ts +224 -0
- package/src/server/contract-like.ts +1 -1
- package/src/server/health.ts +2 -2
- package/src/server/hooks/auth.ts +175 -158
- package/src/server/hooks/cors.ts +1 -1
- package/src/server/hooks/errors.ts +7 -4
- package/src/server/hooks/idempotency.ts +263 -0
- package/src/server/hooks/index.ts +15 -12
- package/src/server/hooks/logging.ts +3 -3
- package/src/server/hooks/rate-limit.ts +85 -17
- package/src/server/hooks.ts +1 -1
- package/src/server/http.ts +112 -6
- package/src/server/index.ts +63 -12
- package/src/server/instrumentation.ts +470 -0
- package/src/server/openapi.ts +4 -4
- package/src/server/providers/index.ts +6 -3
- package/src/server/providers/loadProviderConfig.ts +4 -4
- package/src/server/request-context.ts +116 -0
- package/src/server/server-context.ts +44 -0
- package/src/server/server.ts +1045 -229
- package/src/server/types.ts +2 -2
- package/src/server/use-case-route.ts +430 -0
- package/src/server-only.ts +7 -0
- package/src/tasks/index.ts +275 -0
- package/src/testing/index.ts +1153 -6
- package/src/tracing/index.ts +176 -0
- package/src/uploads/client.ts +861 -0
- package/src/uploads/index.ts +1071 -0
- package/dist/ports/mailer.d.ts +0 -6
- package/dist/ports/mailer.d.ts.map +0 -1
- package/dist/ports/mailer.js +0 -2
- package/dist/ports/mailer.js.map +0 -1
- package/dist/ports/schedules.d.ts +0 -9
- package/dist/ports/schedules.d.ts.map +0 -1
- package/dist/ports/schedules.js +0 -2
- package/dist/ports/schedules.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
-
import type { AnyPorts } from "../../ports";
|
|
3
|
-
import type { ServiceProvider } from "../../providers";
|
|
2
|
+
import type { AnyPorts } from "../../ports/index.js";
|
|
3
|
+
import type { ServiceProvider } from "../../providers/index.js";
|
|
4
4
|
declare function parseStandardSchema<Schema extends StandardSchemaV1<unknown, unknown>>(schema: Schema, input: unknown): Promise<StandardSchemaV1.InferOutput<Schema>>;
|
|
5
5
|
/**
|
|
6
6
|
* Load and validate config for a provider.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadProviderConfig.d.ts","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"loadProviderConfig.d.ts","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOhE,iBAAe,mBAAmB,CAChC,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAU/C;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,QAAQ,EACtB,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CA8B3D;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigValidationError, parseStandardSchemaAsync, readEnv, } from "../../config";
|
|
2
|
-
import { SchemaValidationError } from "../../errors";
|
|
1
|
+
import { ConfigValidationError, parseStandardSchemaAsync, readEnv, } from "../../config/index.js";
|
|
2
|
+
import { SchemaValidationError } from "../../errors/index.js";
|
|
3
3
|
async function parseStandardSchema(schema, input) {
|
|
4
4
|
try {
|
|
5
5
|
return await parseStandardSchemaAsync(schema, input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadProviderConfig.js","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,OAAO,GACR,MAAM,
|
|
1
|
+
{"version":3,"file":"loadProviderConfig.js","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAS9D,KAAK,UAAU,mBAAmB,CAGhC,MAAc,EACd,KAAc;IAEd,IAAI,CAAC;QACH,OAAO,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,QAAwC,EACxC,GAAuC,EACvC,SAAkC;IAElC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAA+C,CAAC;IAC3E,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW;QACvB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,CAAC;QACH,OAAO,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CACvD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACZ,CAAC,CAAC,mCAAmC,SAAS,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtE,CAAC,CAAC,sCAAsC,SAAS,GAAG;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAM,KAAe,CAAC,OAAO,GAAG,IAAI,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ActivityActor, ActivityTenant } from "../ports/audit.js";
|
|
2
|
+
/**
|
|
3
|
+
* Ambient correlation values for the request currently being handled.
|
|
4
|
+
*
|
|
5
|
+
* The server enters this context before user hooks run so instrumentation
|
|
6
|
+
* sinks can correlate events recorded anywhere in the request lifecycle.
|
|
7
|
+
* Identity values (`actor`, `tenant`) are refreshed by the server whenever
|
|
8
|
+
* hooks finalize a new context, so wrappers such as `createAmbientAuditLog`
|
|
9
|
+
* observe the elevated identity at record time.
|
|
10
|
+
*/
|
|
11
|
+
export interface ActiveRequestContext {
|
|
12
|
+
requestId?: string;
|
|
13
|
+
traceId?: string;
|
|
14
|
+
spanId?: string;
|
|
15
|
+
parentSpanId?: string;
|
|
16
|
+
traceparent?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Actor for the current request or service execution, when known.
|
|
19
|
+
*/
|
|
20
|
+
actor?: ActivityActor;
|
|
21
|
+
/**
|
|
22
|
+
* Tenant scope for the current request or service execution, when known.
|
|
23
|
+
*/
|
|
24
|
+
tenant?: ActivityTenant;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Enter the ambient request context for the current async execution.
|
|
28
|
+
*/
|
|
29
|
+
export declare function enterActiveRequestContext(context: ActiveRequestContext): void;
|
|
30
|
+
/**
|
|
31
|
+
* Clear the ambient request context for the current async execution.
|
|
32
|
+
*/
|
|
33
|
+
export declare function clearActiveRequestContext(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Read the ambient request context, when one is active.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getActiveRequestContext(): ActiveRequestContext | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Read a normalized actor from an app context object, when present.
|
|
40
|
+
*/
|
|
41
|
+
export declare function readContextActor(ctx: unknown): ActivityActor | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Read a normalized tenant from an app context object, when present.
|
|
44
|
+
*/
|
|
45
|
+
export declare function readContextTenant(ctx: unknown): ActivityTenant | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Update identity fields on the active ambient request context in place.
|
|
48
|
+
*
|
|
49
|
+
* The server calls this after hooks finalize a new request context so the
|
|
50
|
+
* elevated actor/tenant become visible to ambient consumers, including async
|
|
51
|
+
* frames that captured the context object before the update. No-op when no
|
|
52
|
+
* ambient context is active.
|
|
53
|
+
*/
|
|
54
|
+
export declare function setActiveRequestIdentity(identity: {
|
|
55
|
+
actor?: ActivityActor;
|
|
56
|
+
tenant?: ActivityTenant;
|
|
57
|
+
}): void;
|
|
58
|
+
/**
|
|
59
|
+
* Fill missing correlation fields on an event from the ambient request
|
|
60
|
+
* context.
|
|
61
|
+
*/
|
|
62
|
+
export declare function inheritActiveRequestContext<Event extends {
|
|
63
|
+
requestId?: string;
|
|
64
|
+
traceId?: string;
|
|
65
|
+
traceparent?: string;
|
|
66
|
+
}>(event: Event): Event;
|
|
67
|
+
//# sourceMappingURL=request-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAO1E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,IAAI,CAKP;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,SAAS;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,EACD,KAAK,EAAE,KAAK,GAAG,KAAK,CAUrB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
const activeRequestContext = new AsyncLocalStorage();
|
|
3
|
+
/**
|
|
4
|
+
* Enter the ambient request context for the current async execution.
|
|
5
|
+
*/
|
|
6
|
+
export function enterActiveRequestContext(context) {
|
|
7
|
+
activeRequestContext.enterWith(context);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Clear the ambient request context for the current async execution.
|
|
11
|
+
*/
|
|
12
|
+
export function clearActiveRequestContext() {
|
|
13
|
+
activeRequestContext.enterWith(undefined);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Read the ambient request context, when one is active.
|
|
17
|
+
*/
|
|
18
|
+
export function getActiveRequestContext() {
|
|
19
|
+
return activeRequestContext.getStore();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Read a normalized actor from an app context object, when present.
|
|
23
|
+
*/
|
|
24
|
+
export function readContextActor(ctx) {
|
|
25
|
+
if (!ctx || typeof ctx !== "object")
|
|
26
|
+
return undefined;
|
|
27
|
+
const actor = ctx.actor;
|
|
28
|
+
if (!actor || typeof actor !== "object")
|
|
29
|
+
return undefined;
|
|
30
|
+
return typeof actor.type === "string"
|
|
31
|
+
? actor
|
|
32
|
+
: undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read a normalized tenant from an app context object, when present.
|
|
36
|
+
*/
|
|
37
|
+
export function readContextTenant(ctx) {
|
|
38
|
+
if (!ctx || typeof ctx !== "object")
|
|
39
|
+
return undefined;
|
|
40
|
+
const tenant = ctx.tenant;
|
|
41
|
+
if (!tenant || typeof tenant !== "object")
|
|
42
|
+
return undefined;
|
|
43
|
+
return typeof tenant.id === "string"
|
|
44
|
+
? tenant
|
|
45
|
+
: undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Update identity fields on the active ambient request context in place.
|
|
49
|
+
*
|
|
50
|
+
* The server calls this after hooks finalize a new request context so the
|
|
51
|
+
* elevated actor/tenant become visible to ambient consumers, including async
|
|
52
|
+
* frames that captured the context object before the update. No-op when no
|
|
53
|
+
* ambient context is active.
|
|
54
|
+
*/
|
|
55
|
+
export function setActiveRequestIdentity(identity) {
|
|
56
|
+
const context = activeRequestContext.getStore();
|
|
57
|
+
if (!context)
|
|
58
|
+
return;
|
|
59
|
+
if (identity.actor)
|
|
60
|
+
context.actor = identity.actor;
|
|
61
|
+
if (identity.tenant)
|
|
62
|
+
context.tenant = identity.tenant;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Fill missing correlation fields on an event from the ambient request
|
|
66
|
+
* context.
|
|
67
|
+
*/
|
|
68
|
+
export function inheritActiveRequestContext(event) {
|
|
69
|
+
const context = getActiveRequestContext();
|
|
70
|
+
if (!context)
|
|
71
|
+
return event;
|
|
72
|
+
return {
|
|
73
|
+
...event,
|
|
74
|
+
requestId: event.requestId ?? context.requestId,
|
|
75
|
+
traceId: event.traceId ?? context.traceId,
|
|
76
|
+
traceparent: event.traceparent ?? context.traceparent,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=request-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA4BrD,MAAM,oBAAoB,GAAG,IAAI,iBAAiB,EAE/C,CAAC;AAEJ;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA6B;IACrE,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,OAAO,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QAC3D,CAAC,CAAE,KAAuB;QAC1B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,MAAM,GAAI,GAA4B,CAAC,MAAM,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAQ,MAA2B,CAAC,EAAE,KAAK,QAAQ;QACxD,CAAC,CAAE,MAAyB;QAC5B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAGxC;IACC,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,QAAQ,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAMzC,KAAY;IACZ,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QAC/C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QACzC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AnyPorts } from "../ports/index.js";
|
|
2
|
+
import type { ServerContextConfig } from "./context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Declare a server context blueprint once and share it between the runtime
|
|
5
|
+
* server and tests.
|
|
6
|
+
*
|
|
7
|
+
* The helper preserves the blueprint exactly as written — `request`,
|
|
8
|
+
* `service`, and `gate` keep their inferred types — so apps can keep the
|
|
9
|
+
* blueprint in a canonical `server/context.ts` file and pass the same value to
|
|
10
|
+
* `createServer(...)` (through an adapter such as `createNextServer` or
|
|
11
|
+
* `createFetchServer`) and to `createTestApp(...)`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* // server/context.ts
|
|
16
|
+
* export const appContext = defineServerContext<AppContext, AppPorts>()({
|
|
17
|
+
* gate: (ports) => ports.gate,
|
|
18
|
+
* request: async ({ req, ports, requestId, trace }) => ({
|
|
19
|
+
* actor: await resolveActor(req),
|
|
20
|
+
* auth: null,
|
|
21
|
+
* requestId,
|
|
22
|
+
* ...trace,
|
|
23
|
+
* ports,
|
|
24
|
+
* }),
|
|
25
|
+
* service: ({ ports, requestId, trace }) => ({
|
|
26
|
+
* actor: createServiceActor("app-service"),
|
|
27
|
+
* auth: null,
|
|
28
|
+
* requestId,
|
|
29
|
+
* ...trace,
|
|
30
|
+
* ports,
|
|
31
|
+
* }),
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @returns A function that collects and returns the typed context blueprint.
|
|
36
|
+
*/
|
|
37
|
+
export declare function defineServerContext<Ctx, Ports extends AnyPorts = AnyPorts>(): <ServiceInput = void>(blueprint: ServerContextConfig<Ctx, Ports, ServiceInput>) => ServerContextConfig<Ctx, Ports, ServiceInput>;
|
|
38
|
+
//# sourceMappingURL=server-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../src/server/server-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,KAAK,SAAS,QAAQ,GAAG,QAAQ,KAAK,CAC7E,YAAY,GAAG,IAAI,EAEnB,SAAS,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,KACrD,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAEjD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declare a server context blueprint once and share it between the runtime
|
|
3
|
+
* server and tests.
|
|
4
|
+
*
|
|
5
|
+
* The helper preserves the blueprint exactly as written — `request`,
|
|
6
|
+
* `service`, and `gate` keep their inferred types — so apps can keep the
|
|
7
|
+
* blueprint in a canonical `server/context.ts` file and pass the same value to
|
|
8
|
+
* `createServer(...)` (through an adapter such as `createNextServer` or
|
|
9
|
+
* `createFetchServer`) and to `createTestApp(...)`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // server/context.ts
|
|
14
|
+
* export const appContext = defineServerContext<AppContext, AppPorts>()({
|
|
15
|
+
* gate: (ports) => ports.gate,
|
|
16
|
+
* request: async ({ req, ports, requestId, trace }) => ({
|
|
17
|
+
* actor: await resolveActor(req),
|
|
18
|
+
* auth: null,
|
|
19
|
+
* requestId,
|
|
20
|
+
* ...trace,
|
|
21
|
+
* ports,
|
|
22
|
+
* }),
|
|
23
|
+
* service: ({ ports, requestId, trace }) => ({
|
|
24
|
+
* actor: createServiceActor("app-service"),
|
|
25
|
+
* auth: null,
|
|
26
|
+
* requestId,
|
|
27
|
+
* ...trace,
|
|
28
|
+
* ports,
|
|
29
|
+
* }),
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @returns A function that collects and returns the typed context blueprint.
|
|
34
|
+
*/
|
|
35
|
+
export function defineServerContext() {
|
|
36
|
+
return (blueprint) => blueprint;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=server-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-context.js","sourceRoot":"","sources":["../../src/server/server-context.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,mBAAmB;IAKjC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;AAClC,CAAC"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -1,34 +1,56 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
-
import { type HttpContractConfig } from "../contracts";
|
|
3
|
-
import type { AnyPorts } from "../ports";
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
2
|
+
import { type HttpContractConfig } from "../contracts/index.js";
|
|
3
|
+
import type { AnyPorts } from "../ports/index.js";
|
|
4
|
+
import type { InferProviderPorts, ServiceProvider } from "../providers/index.js";
|
|
5
|
+
import type { ServerContextConfig, ServiceContextInputArgs } from "./context.js";
|
|
6
|
+
import type { ContractLike, ResolveContract } from "./contract-like.js";
|
|
7
|
+
import type { AddedCtxFromHooks, Handler, HttpRequestLike, HttpResponse, RouteHook, ServerCaughtErrorHook, ServerHook, ServerUnhandledErrorMapper } from "./http.js";
|
|
8
|
+
import type { ServerInstrumentationOptions } from "./instrumentation.js";
|
|
9
|
+
import type { AnyUseCaseLike, AnyUseCaseRouteDef, UseCaseRouteDef, ValidatedRouteInputs } from "./use-case-route.js";
|
|
7
10
|
/**
|
|
8
|
-
* Route registration
|
|
11
|
+
* Route registration that connects a contract to the handler implementing it.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `defineRoutes(...)`.
|
|
13
|
+
* Most apps keep route definitions in `features/<feature>/routes.ts` and
|
|
14
|
+
* compose them with `defineRoutes(...)`.
|
|
13
15
|
*/
|
|
14
|
-
export type
|
|
16
|
+
export type HandlerRouteDef<Ctx, CLike extends ContractLike = ContractLike, Hooks extends readonly RouteHook<Ctx, object>[] = readonly RouteHook<Ctx, object>[]> = {
|
|
15
17
|
/**
|
|
16
18
|
* Contract builder or plain contract config for this route.
|
|
17
19
|
*/
|
|
18
20
|
contract: CLike;
|
|
21
|
+
/**
|
|
22
|
+
* Route-scoped hooks that run after group hooks and before the handler.
|
|
23
|
+
*/
|
|
24
|
+
hooks?: Hooks;
|
|
19
25
|
/**
|
|
20
26
|
* Handler that implements the contract.
|
|
21
27
|
*/
|
|
22
|
-
handle: Handler<Ctx
|
|
28
|
+
handle: Handler<Ctx & AddedCtxFromHooks<Hooks>, ResolveContract<CLike>>;
|
|
29
|
+
useCase?: never;
|
|
30
|
+
input?: never;
|
|
31
|
+
status?: never;
|
|
23
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Route registration for one contract.
|
|
35
|
+
*
|
|
36
|
+
* Routes either bind the contract directly to a use case (`{ contract,
|
|
37
|
+
* useCase }`) or implement a full handler (`{ contract, handle }`). The full
|
|
38
|
+
* handler form is the escape hatch for response headers, streaming, native
|
|
39
|
+
* `Response` values, and multi-status handling.
|
|
40
|
+
*/
|
|
41
|
+
export type RouteDef<Ctx, CLike extends ContractLike = ContractLike, Hooks extends readonly RouteHook<Ctx, object>[] = readonly RouteHook<Ctx, object>[]> = HandlerRouteDef<Ctx, CLike, Hooks> | AnyUseCaseRouteDef<Ctx, CLike, Hooks>;
|
|
42
|
+
type AnyRouteDef = RouteDef<any, any>;
|
|
43
|
+
type PlainRouteDef<Ctx> = RouteDef<Ctx, any, readonly []>;
|
|
44
|
+
type AnyContractRouteDef<Ctx> = RouteDef<Ctx, any>;
|
|
24
45
|
declare const ROUTE_GROUP_KIND = "beignet.route-group";
|
|
25
46
|
/**
|
|
26
47
|
* Named collection of related route registrations.
|
|
27
48
|
*
|
|
28
|
-
* Route groups
|
|
29
|
-
* them before server
|
|
49
|
+
* Route groups colocate feature routes and can apply scoped route hooks to
|
|
50
|
+
* every route in the group. `defineRoutes(...)` flattens them before server
|
|
51
|
+
* registration while preserving those hooks.
|
|
30
52
|
*/
|
|
31
|
-
export type RouteGroup<Ctx, Routes extends readonly
|
|
53
|
+
export type RouteGroup<Ctx, Routes extends readonly AnyRouteDef[] = readonly AnyRouteDef[]> = {
|
|
32
54
|
/**
|
|
33
55
|
* Internal marker used by `defineRoutes(...)`.
|
|
34
56
|
*/
|
|
@@ -37,21 +59,57 @@ export type RouteGroup<Ctx, Routes extends readonly RouteDef<Ctx, any>[] = reado
|
|
|
37
59
|
* Human-readable group name.
|
|
38
60
|
*/
|
|
39
61
|
name: string;
|
|
62
|
+
/**
|
|
63
|
+
* Hooks applied to every route in this group.
|
|
64
|
+
*/
|
|
65
|
+
hooks?: readonly RouteHook<Ctx, object>[];
|
|
40
66
|
/**
|
|
41
67
|
* Route definitions in this group.
|
|
42
68
|
*/
|
|
43
69
|
routes: Routes;
|
|
44
70
|
};
|
|
45
|
-
type RouteInput<Ctx> =
|
|
46
|
-
type
|
|
47
|
-
type
|
|
71
|
+
type RouteInput<Ctx> = AnyContractRouteDef<Ctx> | AnyRouteDef | RouteGroup<Ctx, readonly AnyRouteDef[]>;
|
|
72
|
+
type ContextualRouteInput<Ctx> = PlainRouteDef<Ctx> | RouteGroup<Ctx, readonly AnyRouteDef[]>;
|
|
73
|
+
type RouteGroupBuilder<Ctx> = {
|
|
74
|
+
<const GroupHooks extends readonly RouteHook<Ctx, object>[] = readonly [], const R extends readonly PlainRouteDef<Ctx & AddedCtxFromHooks<GroupHooks>>[] = readonly PlainRouteDef<Ctx & AddedCtxFromHooks<GroupHooks>>[]>(group: {
|
|
75
|
+
name: string;
|
|
76
|
+
hooks?: GroupHooks;
|
|
77
|
+
routes: R & ValidatedRouteInputs<Ctx & AddedCtxFromHooks<GroupHooks>, R>;
|
|
78
|
+
}): RouteGroup<Ctx, R>;
|
|
79
|
+
<const GroupHooks extends readonly RouteHook<Ctx, object>[] = readonly [], const R extends readonly AnyRouteDef[] = readonly AnyRouteDef[]>(group: {
|
|
80
|
+
name: string;
|
|
81
|
+
hooks?: GroupHooks;
|
|
82
|
+
routes: R & ValidatedRouteInputs<Ctx & AddedCtxFromHooks<GroupHooks>, R>;
|
|
83
|
+
}): RouteGroup<Ctx, R>;
|
|
84
|
+
};
|
|
85
|
+
type RoutesFromInput<Input> = Input extends RouteGroup<infer _Ctx, infer Routes> ? Routes : Input extends AnyRouteDef ? readonly [Input] : readonly [];
|
|
86
|
+
type FlattenRouteInputs<Inputs extends readonly unknown[]> = number extends Inputs["length"] ? readonly AnyRouteDef[] : Inputs extends readonly [infer First, ...infer Rest] ? readonly [...RoutesFromInput<First>, ...FlattenRouteInputs<Rest>] : readonly [];
|
|
48
87
|
type ContractsFromRouteList<Routes extends readonly RouteDef<any, any>[]> = {
|
|
49
88
|
readonly [Index in keyof Routes]: Routes[Index] extends RouteDef<any, infer CLike> ? ResolveContract<CLike> : never;
|
|
50
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* Define one route registration with hook-aware handler typing.
|
|
92
|
+
*
|
|
93
|
+
* Direct route objects are still supported. Use this helper when route-scoped
|
|
94
|
+
* hooks enrich `ctx` for a single handler and you want TypeScript to infer the
|
|
95
|
+
* added fields.
|
|
96
|
+
*/
|
|
97
|
+
export declare function defineRoute<Ctx>(): {
|
|
98
|
+
<CLike extends ContractLike, UC extends AnyUseCaseLike, const Hooks extends readonly RouteHook<Ctx, object>[] = readonly []>(route: UseCaseRouteDef<Ctx, CLike, UC, Hooks>): UseCaseRouteDef<Ctx, CLike, UC, Hooks>;
|
|
99
|
+
<CLike extends ContractLike, const Hooks extends readonly RouteHook<Ctx, object>[] = readonly []>(route: HandlerRouteDef<Ctx, CLike, Hooks>): HandlerRouteDef<Ctx, CLike, Hooks>;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Loosely typed provider list element.
|
|
103
|
+
*
|
|
104
|
+
* Required-port, app-context, and service-input generics are erased here so
|
|
105
|
+
* providers created with the typed `createProvider<Requires, Context,
|
|
106
|
+
* ServiceInput>()` form stay assignable to server provider lists.
|
|
107
|
+
*/
|
|
108
|
+
type AnyServiceProvider = ServiceProvider<unknown, StandardSchemaV1<any, any>, AnyPorts, any, any>;
|
|
51
109
|
/**
|
|
52
110
|
* Options for creating a Beignet server instance.
|
|
53
111
|
*/
|
|
54
|
-
export type CreateServerOptions<Ctx, Ports extends AnyPorts, Routes extends readonly RouteDef<
|
|
112
|
+
export type CreateServerOptions<Ctx, Ports extends AnyPorts, ServiceInput = void, Routes extends readonly RouteDef<any, any>[] = readonly RouteDef<any, any>[], Providers extends readonly AnyServiceProvider[] = readonly []> = {
|
|
55
113
|
/**
|
|
56
114
|
* App-owned ports available to context creation, hooks, and handlers.
|
|
57
115
|
*/
|
|
@@ -72,24 +130,60 @@ export type CreateServerOptions<Ctx, Ports extends AnyPorts, Routes extends read
|
|
|
72
130
|
*/
|
|
73
131
|
providerConfig?: Record<string, unknown>;
|
|
74
132
|
/**
|
|
75
|
-
*
|
|
133
|
+
* Context blueprint for request and service contexts.
|
|
134
|
+
*
|
|
135
|
+
* Gate-less contexts may pass a plain request factory. Contexts with a
|
|
136
|
+
* `gate` property must use the blueprint form
|
|
137
|
+
* `{ gate: (ports) => ports.gate, request, service }` so the server owns
|
|
138
|
+
* gate attachment and identity changes can never go stale.
|
|
76
139
|
*
|
|
77
140
|
* The `ports` argument includes app ports plus ports provided during server
|
|
78
141
|
* startup.
|
|
79
142
|
*/
|
|
80
|
-
|
|
81
|
-
req: HttpRequestLike;
|
|
82
|
-
ports: Ports & ProvidedPortsOfList<Providers>;
|
|
83
|
-
contract?: HttpContractConfig;
|
|
84
|
-
}) => Ctx | Promise<Ctx>;
|
|
143
|
+
context: ServerContextConfig<Ctx, Ports & InferProviderPorts<Providers>, ServiceInput>;
|
|
85
144
|
/**
|
|
86
145
|
* Server hooks that wrap every registered route.
|
|
87
146
|
*/
|
|
88
|
-
hooks?: ServerHook<Ctx, Ports &
|
|
147
|
+
hooks?: ServerHook<Ctx, Ports & InferProviderPorts<Providers>>[];
|
|
148
|
+
/**
|
|
149
|
+
* Server-owned request instrumentation.
|
|
150
|
+
*
|
|
151
|
+
* The server resolves a request ID and W3C trace context for every request
|
|
152
|
+
* before user hooks and context creation, writes `x-request-id` and
|
|
153
|
+
* `traceparent` response headers, and records request and error events into
|
|
154
|
+
* the resolved provider instrumentation port (`ports.instrumentation`, then
|
|
155
|
+
* `ports.devtools`) when one is installed.
|
|
156
|
+
*
|
|
157
|
+
* Pass `false` to disable headers and event recording. Context factories
|
|
158
|
+
* still receive `requestId` and `trace` arguments.
|
|
159
|
+
*/
|
|
160
|
+
instrumentation?: ServerInstrumentationOptions<Ctx> | false;
|
|
161
|
+
/**
|
|
162
|
+
* Whether route-owned responses are validated against the contract's
|
|
163
|
+
* declared statuses and response schemas before they are sent.
|
|
164
|
+
*
|
|
165
|
+
* Disable this to trade response guarantees for throughput, mirroring the
|
|
166
|
+
* client-side `validateResponses` option.
|
|
167
|
+
*
|
|
168
|
+
* @default true
|
|
169
|
+
*/
|
|
170
|
+
validateResponses?: boolean;
|
|
89
171
|
/**
|
|
90
172
|
* Route list to register up front.
|
|
91
173
|
*/
|
|
92
174
|
routes?: Routes;
|
|
175
|
+
/**
|
|
176
|
+
* How to handle ports that are still unbound after all providers have
|
|
177
|
+
* started.
|
|
178
|
+
*
|
|
179
|
+
* Ports declared as `deferred` in `definePorts(...)` boot as throwing
|
|
180
|
+
* placeholders until a provider contributes them. The default `"error"`
|
|
181
|
+
* fails startup and lists the unbound port keys. Apps that bind every port
|
|
182
|
+
* directly are unaffected.
|
|
183
|
+
*
|
|
184
|
+
* @default "error"
|
|
185
|
+
*/
|
|
186
|
+
onUnboundPorts?: "error" | "warn" | "ignore";
|
|
93
187
|
/**
|
|
94
188
|
* Global caught-error observer.
|
|
95
189
|
*/
|
|
@@ -105,7 +199,7 @@ interface RouteBuilder<Ctx, C extends HttpContractConfig> {
|
|
|
105
199
|
/**
|
|
106
200
|
* Runtime server object returned by `createServer(...)`.
|
|
107
201
|
*/
|
|
108
|
-
export interface ServerInstance<Ctx, Ports extends AnyPorts = AnyPorts> {
|
|
202
|
+
export interface ServerInstance<Ctx, Ports extends AnyPorts = AnyPorts, ServiceInput = void> {
|
|
109
203
|
/**
|
|
110
204
|
* Catch-all request handler for platform adapters.
|
|
111
205
|
*/
|
|
@@ -114,6 +208,20 @@ export interface ServerInstance<Ctx, Ports extends AnyPorts = AnyPorts> {
|
|
|
114
208
|
* Register and build a single route handler imperatively.
|
|
115
209
|
*/
|
|
116
210
|
route: <CLike extends ContractLike>(contractLike: CLike) => RouteBuilder<Ctx, ResolveContract<CLike>>;
|
|
211
|
+
/**
|
|
212
|
+
* Build a fully assembled request context from a framework-neutral request.
|
|
213
|
+
*
|
|
214
|
+
* Use this for adapter entry points outside the route pipeline, such as
|
|
215
|
+
* server components or upload routes.
|
|
216
|
+
*/
|
|
217
|
+
createRequestContext: (req: HttpRequestLike) => Promise<Ctx>;
|
|
218
|
+
/**
|
|
219
|
+
* Build a fully assembled service context for schedules, outbox drains,
|
|
220
|
+
* tasks, and background work.
|
|
221
|
+
*
|
|
222
|
+
* Requires `context.service` to be declared in `createServer(...)`.
|
|
223
|
+
*/
|
|
224
|
+
createServiceContext: (...args: ServiceContextInputArgs<ServiceInput>) => Promise<Ctx>;
|
|
117
225
|
/**
|
|
118
226
|
* Contract configs registered through the `routes` option.
|
|
119
227
|
*/
|
|
@@ -135,11 +243,11 @@ export interface ServerInstance<Ctx, Ports extends AnyPorts = AnyPorts> {
|
|
|
135
243
|
* Use adapter packages such as `@beignet/next` to expose `server.api` to a
|
|
136
244
|
* specific runtime.
|
|
137
245
|
*
|
|
138
|
-
* @param options - Ports, providers, routes, hooks, context
|
|
139
|
-
* mapping hooks for the server.
|
|
246
|
+
* @param options - Ports, providers, routes, hooks, context blueprint, and
|
|
247
|
+
* error mapping hooks for the server.
|
|
140
248
|
* @returns A started server instance with final ports and a catch-all handler.
|
|
141
249
|
*/
|
|
142
|
-
export declare function createServer<Ctx, Ports extends AnyPorts, Routes extends readonly RouteDef<
|
|
250
|
+
export declare function createServer<Ctx, Ports extends AnyPorts, ServiceInput = void, Routes extends readonly RouteDef<any, any>[] = readonly RouteDef<any, any>[], Providers extends readonly AnyServiceProvider[] = readonly []>(options: CreateServerOptions<Ctx, Ports, ServiceInput, Routes, Providers>): Promise<ServerInstance<Ctx, Ports & InferProviderPorts<Providers>, ServiceInput>>;
|
|
143
251
|
/**
|
|
144
252
|
* Define and flatten route registrations with strong type inference.
|
|
145
253
|
*
|
|
@@ -149,11 +257,12 @@ export declare function createServer<Ctx, Ports extends AnyPorts, Routes extends
|
|
|
149
257
|
* @example
|
|
150
258
|
* ```ts
|
|
151
259
|
* const routes = defineRoutes<AppContext>([
|
|
152
|
-
* { contract: listPosts,
|
|
260
|
+
* { contract: listPosts, useCase: listPostsUseCase },
|
|
153
261
|
* ]);
|
|
154
262
|
* ```
|
|
155
263
|
*/
|
|
156
|
-
export declare function defineRoutes<Ctx, const R extends readonly
|
|
264
|
+
export declare function defineRoutes<Ctx, const R extends readonly ContextualRouteInput<Ctx>[] = readonly ContextualRouteInput<Ctx>[]>(routes: R & ValidatedRouteInputs<Ctx, R>): FlattenRouteInputs<R>;
|
|
265
|
+
export declare function defineRoutes<Ctx, const R extends readonly RouteInput<Ctx>[] = readonly RouteInput<Ctx>[]>(routes: R & ValidatedRouteInputs<Ctx, R>): FlattenRouteInputs<R>;
|
|
157
266
|
/**
|
|
158
267
|
* Extract contract configs from a route list.
|
|
159
268
|
*
|
|
@@ -165,21 +274,25 @@ export declare function contractsFromRoutes<const R extends readonly RouteDef<an
|
|
|
165
274
|
* Define a named group of related route registrations.
|
|
166
275
|
*
|
|
167
276
|
* Route groups are flattened by defineRoutes, so createServer still receives
|
|
168
|
-
* a regular route list while app code can keep feature route wiring
|
|
277
|
+
* a regular route list while app code can keep feature route wiring and scoped
|
|
278
|
+
* hooks colocated.
|
|
169
279
|
*
|
|
170
280
|
* @example
|
|
171
281
|
* ```ts
|
|
172
|
-
* const todoRoutes = defineRouteGroup<AppContext>({
|
|
282
|
+
* const todoRoutes = defineRouteGroup<AppContext>()({
|
|
173
283
|
* name: "todos",
|
|
284
|
+
* hooks: [auth.optional()],
|
|
174
285
|
* routes: [
|
|
175
|
-
* { contract: listTodos,
|
|
286
|
+
* { contract: listTodos, useCase: listTodosUseCase },
|
|
176
287
|
* ]
|
|
177
288
|
* });
|
|
178
289
|
* ```
|
|
179
290
|
*/
|
|
291
|
+
export declare function defineRouteGroup<Ctx>(): RouteGroupBuilder<Ctx>;
|
|
180
292
|
export declare function defineRouteGroup<Ctx, const R extends readonly RouteDef<Ctx, any>[] = readonly RouteDef<Ctx, any>[]>(group: {
|
|
181
293
|
name: string;
|
|
182
|
-
|
|
294
|
+
hooks?: readonly RouteHook<Ctx, object>[];
|
|
295
|
+
routes: R & ValidatedRouteInputs<Ctx, R>;
|
|
183
296
|
}): RouteGroup<Ctx, R>;
|
|
184
297
|
export {};
|
|
185
298
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAEV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,KAAK,EACV,iBAAiB,EACjB,OAAO,EAEP,eAAe,EACf,YAAY,EAGZ,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAczE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAM7B;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CACzB,GAAG,EACH,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,SAAS,CAClE,GAAG,EACH,MAAM,CACP,EAAE,IACD;IACF;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAClB,GAAG,EACH,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,SAAS,CAClE,GAAG,EACH,MAAM,CACP,EAAE,IACD,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAG/E,KAAK,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAGtC,KAAK,aAAa,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAG1D,KAAK,mBAAmB,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnD,QAAA,MAAM,gBAAgB,wBAAwB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CACpB,GAAG,EACH,MAAM,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,IAC5D;IACF;;OAEG;IACH,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;IAC1C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,UAAU,CAAC,GAAG,IACf,mBAAmB,CAAC,GAAG,CAAC,GACxB,WAAW,GACX,UAAU,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;AAE5C,KAAK,oBAAoB,CAAC,GAAG,IACzB,aAAa,CAAC,GAAG,CAAC,GAClB,UAAU,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;AAE5C,KAAK,iBAAiB,CAAC,GAAG,IAAI;IAC5B,CACE,KAAK,CAAC,UAAU,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,EACxE,KAAK,CAAC,CAAC,SAAS,SAAS,aAAa,CACpC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CACpC,EAAE,GAAG,SAAS,aAAa,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,EACnE,KAAK,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1E,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,CACE,KAAK,CAAC,UAAU,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,EACxE,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,EAC/D,KAAK,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1E,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,eAAe,CAAC,KAAK,IACxB,KAAK,SAAS,UAAU,CAAC,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,GAC9C,MAAM,GACN,KAAK,SAAS,WAAW,GACvB,SAAS,CAAC,KAAK,CAAC,GAChB,SAAS,EAAE,CAAC;AAEpB,KAAK,kBAAkB,CAAC,MAAM,SAAS,SAAS,OAAO,EAAE,IACvD,MAAM,SAAS,MAAM,CAAC,QAAQ,CAAC,GAC3B,SAAS,WAAW,EAAE,GACtB,MAAM,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAClD,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GACjE,SAAS,EAAE,CAAC;AAEpB,KAAK,sBAAsB,CAEzB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAC1C;IACF,QAAQ,EAAE,KAAK,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,CAE9D,GAAG,EACH,MAAM,KAAK,CACZ,GACG,eAAe,CAAC,KAAK,CAAC,GACtB,KAAK;CACV,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG;KAE3B,KAAK,SAAS,YAAY,EAC1B,EAAE,SAAS,cAAc,QACnB,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,uBAE9C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,GAC5C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;KAEvC,KAAK,SAAS,YAAY,QACpB,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,uBAE9C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GACxC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;EAMtC;AAED;;;;;;GAMG;AACH,KAAK,kBAAkB,GAAG,eAAe,CACvC,OAAO,EAEP,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,QAAQ,EAER,GAAG,EAEH,GAAG,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAC7B,GAAG,EACH,KAAK,SAAS,QAAQ,EACtB,YAAY,GAAG,IAAI,EAEnB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC5E,SAAS,SAAS,SAAS,kBAAkB,EAAE,GAAG,SAAS,EAAE,IAC3D;IACF;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,OAAO,EAAE,mBAAmB,CAC1B,GAAG,EACH,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EACrC,YAAY,CACb,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IACjE;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,4BAA4B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5D;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C;;OAEG;IACH,iBAAiB,CAAC,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC;CACrD,CAAC;AAEF,UAAU,YAAY,CAAC,GAAG,EAAE,CAAC,SAAS,kBAAkB;IACtD,MAAM,EAAE,CACN,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAChB,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAC7B,GAAG,EACH,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,YAAY,GAAG,IAAI;IAEnB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD;;OAEG;IACH,KAAK,EAAE,CAAC,KAAK,SAAS,YAAY,EAChC,YAAY,EAAE,KAAK,KAChB,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,oBAAoB,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,oBAAoB,EAAE,CACpB,GAAG,IAAI,EAAE,uBAAuB,CAAC,YAAY,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AA+4CD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,GAAG,EACH,KAAK,SAAS,QAAQ,EACtB,YAAY,GAAG,IAAI,EAEnB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC5E,SAAS,SAAS,SAAS,kBAAkB,EAAE,GAAG,SAAS,EAAE,EAE7D,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,GACxE,OAAO,CACR,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CACzE,CA4aA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EACH,KAAK,CAAC,CAAC,SACL,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,wBAAgB,YAAY,CAC1B,GAAG,EACH,KAAK,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,EACvE,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAuBnE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAEjC,KAAK,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC7C,MAAM,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAItC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChE,wBAAgB,gBAAgB,CAC9B,GAAG,EAEH,KAAK,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC7E,KAAK,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAC1C,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC"}
|