@beignet/core 0.0.1 → 0.0.2
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 +11 -0
- package/README.md +149 -4
- package/dist/application/index.d.ts +93 -9
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +11 -11
- package/dist/application/index.js.map +1 -1
- package/dist/client/client.d.ts +73 -12
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +37 -12
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.d.ts +12 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +69 -8
- package/dist/client/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +84 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +36 -0
- package/dist/config/index.js.map +1 -1
- package/dist/contracts/contract-builder.d.ts +49 -22
- package/dist/contracts/contract-builder.d.ts.map +1 -1
- package/dist/contracts/contract-builder.js +48 -21
- package/dist/contracts/contract-builder.js.map +1 -1
- package/dist/contracts/contract-group.d.ts +35 -19
- package/dist/contracts/contract-group.d.ts.map +1 -1
- package/dist/contracts/contract-group.js +35 -19
- package/dist/contracts/contract-group.js.map +1 -1
- package/dist/contracts/contract-like.d.ts +4 -4
- package/dist/contracts/contract-like.d.ts.map +1 -1
- package/dist/contracts/contract-like.js +2 -1
- package/dist/contracts/contract-like.js.map +1 -1
- package/dist/contracts/index.d.ts +28 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +12 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/openapi-meta.d.ts +8 -8
- package/dist/contracts/openapi-meta.d.ts.map +1 -1
- package/dist/contracts/path-template.d.ts +27 -0
- package/dist/contracts/path-template.d.ts.map +1 -1
- package/dist/contracts/path-template.js +6 -0
- package/dist/contracts/path-template.js.map +1 -1
- package/dist/contracts/types.d.ts +104 -10
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/contracts/types.js +15 -0
- package/dist/contracts/types.js.map +1 -1
- package/dist/contracts/utils.d.ts +6 -0
- package/dist/contracts/utils.d.ts.map +1 -1
- package/dist/contracts/utils.js +6 -0
- package/dist/contracts/utils.js.map +1 -1
- package/dist/domain/entity.d.ts +22 -11
- package/dist/domain/entity.d.ts.map +1 -1
- package/dist/domain/entity.js +5 -1
- package/dist/domain/entity.js.map +1 -1
- package/dist/domain/events.d.ts +5 -2
- package/dist/domain/events.d.ts.map +1 -1
- package/dist/domain/events.js +4 -1
- package/dist/domain/events.js.map +1 -1
- package/dist/domain/value-object.d.ts +19 -9
- package/dist/domain/value-object.d.ts.map +1 -1
- package/dist/domain/value-object.js +5 -1
- package/dist/domain/value-object.js.map +1 -1
- package/dist/errors/catalog.d.ts +40 -16
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/catalog.js +18 -7
- package/dist/errors/catalog.js.map +1 -1
- package/dist/errors/response.d.ts +16 -4
- package/dist/errors/response.d.ts.map +1 -1
- package/dist/errors/response.js +3 -3
- package/dist/errors/response.js.map +1 -1
- package/dist/errors/validation.d.ts +10 -1
- package/dist/errors/validation.d.ts.map +1 -1
- package/dist/errors/validation.js +3 -0
- package/dist/errors/validation.js.map +1 -1
- package/dist/events/index.d.ts +133 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +30 -0
- package/dist/events/index.js.map +1 -1
- package/dist/idempotency/index.d.ts +355 -0
- package/dist/idempotency/index.d.ts.map +1 -0
- package/dist/idempotency/index.js +360 -0
- package/dist/idempotency/index.js.map +1 -0
- package/dist/jobs/index.d.ts +110 -0
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +22 -0
- package/dist/jobs/index.js.map +1 -1
- package/dist/mail/index.d.ts +149 -0
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +30 -0
- package/dist/mail/index.js.map +1 -1
- package/dist/notifications/index.d.ts +369 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +310 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/openapi/index.d.ts +132 -16
- package/dist/openapi/index.d.ts.map +1 -1
- package/dist/openapi/index.js +1 -1
- package/dist/openapi/index.js.map +1 -1
- package/dist/outbox/index.d.ts +469 -0
- package/dist/outbox/index.d.ts.map +1 -0
- package/dist/outbox/index.js +482 -0
- package/dist/outbox/index.js.map +1 -0
- package/dist/pagination/index.d.ts +166 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +96 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/ports/audit.d.ts +271 -0
- package/dist/ports/audit.d.ts.map +1 -1
- package/dist/ports/audit.js +128 -0
- package/dist/ports/audit.js.map +1 -1
- package/dist/ports/auth.d.ts +70 -0
- package/dist/ports/auth.d.ts.map +1 -1
- package/dist/ports/auth.js +30 -0
- package/dist/ports/auth.js.map +1 -1
- package/dist/ports/cache.d.ts +41 -0
- package/dist/ports/cache.d.ts.map +1 -1
- package/dist/ports/cache.js +10 -0
- package/dist/ports/cache.js.map +1 -1
- package/dist/ports/clock.d.ts +38 -0
- package/dist/ports/clock.d.ts.map +1 -1
- package/dist/ports/clock.js +20 -0
- package/dist/ports/clock.js.map +1 -1
- package/dist/ports/id-generator.d.ts +37 -0
- package/dist/ports/id-generator.d.ts.map +1 -1
- package/dist/ports/id-generator.js +22 -0
- package/dist/ports/id-generator.js.map +1 -1
- package/dist/ports/index.d.ts +83 -0
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +41 -5
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/logger.d.ts +56 -0
- package/dist/ports/logger.d.ts.map +1 -1
- package/dist/ports/logger.js +17 -0
- package/dist/ports/logger.js.map +1 -1
- package/dist/ports/policy.d.ts +132 -0
- package/dist/ports/policy.d.ts.map +1 -1
- package/dist/ports/policy.js +45 -0
- package/dist/ports/policy.js.map +1 -1
- package/dist/ports/rate-limit.d.ts +25 -0
- package/dist/ports/rate-limit.d.ts.map +1 -1
- package/dist/ports/rate-limit.js +10 -0
- package/dist/ports/rate-limit.js.map +1 -1
- package/dist/ports/redaction.d.ts +101 -0
- package/dist/ports/redaction.d.ts.map +1 -1
- package/dist/ports/redaction.js +59 -0
- package/dist/ports/redaction.js.map +1 -1
- package/dist/ports/storage.d.ts +100 -0
- package/dist/ports/storage.d.ts.map +1 -1
- package/dist/ports/storage.js +10 -0
- package/dist/ports/storage.js.map +1 -1
- package/dist/ports/testing.d.ts +47 -0
- package/dist/ports/testing.d.ts.map +1 -1
- package/dist/ports/testing.js +23 -0
- package/dist/ports/testing.js.map +1 -1
- package/dist/ports/unit-of-work.d.ts +60 -3
- package/dist/ports/unit-of-work.d.ts.map +1 -1
- package/dist/ports/unit-of-work.js +11 -2
- package/dist/ports/unit-of-work.js.map +1 -1
- package/dist/providers/instrumentation.d.ts +204 -0
- package/dist/providers/instrumentation.d.ts.map +1 -1
- package/dist/providers/instrumentation.js +14 -0
- package/dist/providers/instrumentation.js.map +1 -1
- package/dist/providers/provider.d.ts +14 -1
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js.map +1 -1
- package/dist/schedules/index.d.ts +246 -0
- package/dist/schedules/index.d.ts.map +1 -1
- package/dist/schedules/index.js +27 -0
- package/dist/schedules/index.js.map +1 -1
- package/dist/server/health.d.ts +14 -5
- package/dist/server/health.d.ts.map +1 -1
- package/dist/server/health.js +5 -2
- package/dist/server/health.js.map +1 -1
- package/dist/server/hooks/auth.d.ts +57 -0
- package/dist/server/hooks/auth.d.ts.map +1 -1
- package/dist/server/hooks/auth.js.map +1 -1
- package/dist/server/hooks/cors.d.ts +27 -0
- package/dist/server/hooks/cors.d.ts.map +1 -1
- package/dist/server/hooks/cors.js +12 -0
- package/dist/server/hooks/cors.js.map +1 -1
- package/dist/server/hooks/errors.d.ts +15 -6
- package/dist/server/hooks/errors.d.ts.map +1 -1
- package/dist/server/hooks/errors.js.map +1 -1
- package/dist/server/hooks/index.d.ts +3 -0
- package/dist/server/hooks/index.d.ts.map +1 -1
- package/dist/server/hooks/index.js +3 -0
- package/dist/server/hooks/index.js.map +1 -1
- package/dist/server/hooks/logging.d.ts +36 -0
- package/dist/server/hooks/logging.d.ts.map +1 -1
- package/dist/server/hooks/logging.js +6 -0
- package/dist/server/hooks/logging.js.map +1 -1
- package/dist/server/hooks/rate-limit.d.ts +33 -0
- package/dist/server/hooks/rate-limit.d.ts.map +1 -1
- package/dist/server/hooks/rate-limit.js +11 -0
- package/dist/server/hooks/rate-limit.js.map +1 -1
- package/dist/server/http.d.ts +170 -0
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/openapi.d.ts +5 -3
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/openapi.js +4 -2
- package/dist/server/openapi.js.map +1 -1
- package/dist/server/providers/loadProviderConfig.d.ts +9 -0
- package/dist/server/providers/loadProviderConfig.d.ts.map +1 -1
- package/dist/server/providers/loadProviderConfig.js +9 -0
- package/dist/server/providers/loadProviderConfig.js.map +1 -1
- package/dist/server/server.d.ts +107 -8
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +27 -7
- package/dist/server/server.js.map +1 -1
- package/dist/testing/index.d.ts +167 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +119 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +21 -1
- package/src/application/index.ts +85 -22
- package/src/client/client.ts +73 -12
- package/src/client/index.ts +12 -0
- package/src/client/types.ts +70 -9
- package/src/config/index.ts +86 -0
- package/src/contracts/contract-builder.ts +49 -22
- package/src/contracts/contract-group.ts +35 -19
- package/src/contracts/contract-like.ts +4 -4
- package/src/contracts/index.ts +28 -1
- package/src/contracts/openapi-meta.ts +8 -8
- package/src/contracts/path-template.ts +27 -0
- package/src/contracts/types.ts +111 -10
- package/src/contracts/utils.ts +6 -0
- package/src/domain/entity.ts +22 -11
- package/src/domain/events.ts +5 -2
- package/src/domain/value-object.ts +19 -9
- package/src/errors/catalog.ts +40 -16
- package/src/errors/response.ts +16 -4
- package/src/errors/validation.ts +10 -1
- package/src/events/index.ts +134 -0
- package/src/idempotency/index.ts +767 -0
- package/src/jobs/index.ts +111 -0
- package/src/mail/index.ts +149 -0
- package/src/notifications/index.ts +771 -0
- package/src/openapi/index.ts +133 -16
- package/src/outbox/index.ts +1024 -0
- package/src/pagination/index.ts +278 -0
- package/src/ports/audit.ts +271 -0
- package/src/ports/auth.ts +70 -0
- package/src/ports/cache.ts +41 -0
- package/src/ports/clock.ts +38 -0
- package/src/ports/id-generator.ts +37 -0
- package/src/ports/index.ts +106 -11
- package/src/ports/logger.ts +56 -0
- package/src/ports/policy.ts +133 -0
- package/src/ports/rate-limit.ts +25 -0
- package/src/ports/redaction.ts +101 -0
- package/src/ports/storage.ts +100 -0
- package/src/ports/testing.ts +47 -0
- package/src/ports/unit-of-work.ts +60 -3
- package/src/providers/instrumentation.ts +204 -0
- package/src/providers/provider.ts +14 -1
- package/src/schedules/index.ts +247 -0
- package/src/server/health.ts +14 -5
- package/src/server/hooks/auth.ts +58 -0
- package/src/server/hooks/cors.ts +27 -0
- package/src/server/hooks/errors.ts +15 -6
- package/src/server/hooks/index.ts +3 -0
- package/src/server/hooks/logging.ts +36 -0
- package/src/server/hooks/rate-limit.ts +33 -0
- package/src/server/http.ts +170 -1
- package/src/server/index.ts +18 -1
- package/src/server/openapi.ts +5 -3
- package/src/server/providers/loadProviderConfig.ts +9 -0
- package/src/server/server.ts +107 -9
- package/src/testing/index.ts +337 -0
package/dist/contracts/index.js
CHANGED
|
@@ -3,9 +3,21 @@
|
|
|
3
3
|
*
|
|
4
4
|
* HTTP contract definitions and builders for Beignet.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Contract builder exports.
|
|
8
|
+
*/
|
|
6
9
|
export { ContractBuilder, createContract, } from "./contract-builder";
|
|
10
|
+
/**
|
|
11
|
+
* Contract group exports.
|
|
12
|
+
*/
|
|
7
13
|
export { ContractGroup, createContractGroup } from "./contract-group";
|
|
14
|
+
/**
|
|
15
|
+
* Contract-like helper exports.
|
|
16
|
+
*/
|
|
8
17
|
export { resolveContract, } from "./contract-like";
|
|
18
|
+
/**
|
|
19
|
+
* Path template parsing exports.
|
|
20
|
+
*/
|
|
9
21
|
export { parsePathTemplate, } from "./path-template";
|
|
10
22
|
export { BEIGNET_ERROR_OWNER_HEADER, BODY_HTTP_METHODS, getContractHeaderSchemas, methodSupportsRequestBody, STANDARD_ERROR_RESPONSE_SCHEMA, } from "./types";
|
|
11
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;GAEG;AACH,OAAO,EACL,eAAe,EAEf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE;;GAEG;AACH,OAAO,EAGL,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,OAAO,EAGL,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AA4BzB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,SAAS,CAAC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenAPI operation-level metadata for HTTP contracts
|
|
2
|
+
* OpenAPI operation-level metadata for HTTP contracts.
|
|
3
3
|
*/
|
|
4
4
|
export type OpenAPIOperationMeta = {
|
|
5
|
-
/**
|
|
5
|
+
/** Brief operation summary. */
|
|
6
6
|
summary?: string;
|
|
7
|
-
/**
|
|
7
|
+
/** Detailed operation description. */
|
|
8
8
|
description?: string;
|
|
9
|
-
/** Tags
|
|
9
|
+
/** Tags used to group operations. */
|
|
10
10
|
tags?: string[];
|
|
11
|
-
/**
|
|
11
|
+
/** Whether the operation is deprecated. */
|
|
12
12
|
deprecated?: boolean;
|
|
13
|
-
/** External documentation reference */
|
|
13
|
+
/** External documentation reference. */
|
|
14
14
|
externalDocs?: {
|
|
15
15
|
description?: string;
|
|
16
16
|
url: string;
|
|
17
17
|
};
|
|
18
|
-
/**
|
|
18
|
+
/** Operation ID override. Defaults to `contract.name`. */
|
|
19
19
|
operationId?: string;
|
|
20
|
-
/** Per-operation security requirements */
|
|
20
|
+
/** Per-operation security requirements. */
|
|
21
21
|
security?: Array<Record<string, string[]>>;
|
|
22
22
|
};
|
|
23
23
|
//# sourceMappingURL=openapi-meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-meta.d.ts","sourceRoot":"","sources":["../../src/contracts/openapi-meta.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC
|
|
1
|
+
{"version":3,"file":"openapi-meta.d.ts","sourceRoot":"","sources":["../../src/contracts/openapi-meta.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,YAAY,CAAC,EAAE;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC5C,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsed path segment from a Beignet route template.
|
|
3
|
+
*/
|
|
1
4
|
export type PathTemplateSegment = {
|
|
2
5
|
kind: "static";
|
|
3
6
|
value: string;
|
|
@@ -6,12 +9,36 @@ export type PathTemplateSegment = {
|
|
|
6
9
|
name: string;
|
|
7
10
|
raw: string;
|
|
8
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Parsed representation of a Beignet route path template.
|
|
14
|
+
*/
|
|
9
15
|
export interface ParsedPathTemplate {
|
|
16
|
+
/**
|
|
17
|
+
* Dynamic parameter names in declaration order.
|
|
18
|
+
*/
|
|
10
19
|
keys: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Static and dynamic path segments.
|
|
22
|
+
*/
|
|
11
23
|
segments: PathTemplateSegment[];
|
|
24
|
+
/**
|
|
25
|
+
* Normalized Beignet path using `:param` dynamic syntax.
|
|
26
|
+
*/
|
|
12
27
|
normalizedPath: string;
|
|
28
|
+
/**
|
|
29
|
+
* Route shape used for ambiguity detection, ignoring dynamic parameter names.
|
|
30
|
+
*/
|
|
13
31
|
shapeKey: string;
|
|
32
|
+
/**
|
|
33
|
+
* OpenAPI-compatible path using `{param}` syntax.
|
|
34
|
+
*/
|
|
14
35
|
openApiPath: string;
|
|
15
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse a Beignet route path template.
|
|
39
|
+
*
|
|
40
|
+
* Paths must start with `/`. Dynamic segments may use `:id` or `[id]`.
|
|
41
|
+
* Catch-all segments and partial dynamic segments are intentionally rejected.
|
|
42
|
+
*/
|
|
16
43
|
export declare function parsePathTemplate(path: string): ParsedPathTemplate;
|
|
17
44
|
//# sourceMappingURL=path-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-template.d.ts","sourceRoot":"","sources":["../../src/contracts/path-template.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CA6ClE"}
|
|
1
|
+
{"version":3,"file":"path-template.d.ts","sourceRoot":"","sources":["../../src/contracts/path-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CA6ClE"}
|
|
@@ -21,6 +21,12 @@ function parsePathSegment(path, segment) {
|
|
|
21
21
|
}
|
|
22
22
|
return { kind: "static", value: segment };
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse a Beignet route path template.
|
|
26
|
+
*
|
|
27
|
+
* Paths must start with `/`. Dynamic segments may use `:id` or `[id]`.
|
|
28
|
+
* Catch-all segments and partial dynamic segments are intentionally rejected.
|
|
29
|
+
*/
|
|
24
30
|
export function parsePathTemplate(path) {
|
|
25
31
|
if (!path.startsWith("/")) {
|
|
26
32
|
throw new Error(`Invalid path template "${path}". Paths must start with "/".`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-template.js","sourceRoot":"","sources":["../../src/contracts/path-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path-template.js","sourceRoot":"","sources":["../../src/contracts/path-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +1,117 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
import type { IdempotencyMeta } from "../idempotency";
|
|
2
3
|
import type { OpenAPIOperationMeta } from "./openapi-meta";
|
|
3
4
|
import type { RateLimitMeta } from "./rate-limit";
|
|
4
5
|
/**
|
|
5
|
-
* Any Standard Schema validator
|
|
6
|
-
* Replaces ZodTypeAny to support all Standard Schema compatible libraries
|
|
6
|
+
* Any Standard Schema compatible validator.
|
|
7
7
|
*/
|
|
8
8
|
export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* Response schema for one HTTP status.
|
|
11
|
+
*
|
|
12
|
+
* Use `null` for empty responses such as 204.
|
|
13
|
+
*/
|
|
9
14
|
export type ContractResponseSchema = StandardSchema | null;
|
|
15
|
+
/**
|
|
16
|
+
* Response schemas keyed by HTTP status code.
|
|
17
|
+
*/
|
|
10
18
|
export type ContractResponses = Partial<Record<number, ContractResponseSchema>>;
|
|
19
|
+
/**
|
|
20
|
+
* Standard Beignet error response body.
|
|
21
|
+
*/
|
|
11
22
|
export type StandardErrorResponseBody = {
|
|
12
23
|
code: string;
|
|
13
24
|
message: string;
|
|
14
25
|
details?: unknown;
|
|
15
26
|
requestId?: string;
|
|
16
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Standard Schema for Beignet's error envelope.
|
|
30
|
+
*/
|
|
17
31
|
export type StandardErrorResponseSchema = StandardSchemaV1<unknown, StandardErrorResponseBody>;
|
|
32
|
+
/**
|
|
33
|
+
* Route-owned error definition stored in contract metadata.
|
|
34
|
+
*/
|
|
18
35
|
export type ContractErrorDefinition = {
|
|
36
|
+
/**
|
|
37
|
+
* Stable public error code.
|
|
38
|
+
*/
|
|
19
39
|
code: string;
|
|
40
|
+
/**
|
|
41
|
+
* HTTP status code.
|
|
42
|
+
*/
|
|
20
43
|
status: number;
|
|
44
|
+
/**
|
|
45
|
+
* Default human-readable message.
|
|
46
|
+
*/
|
|
21
47
|
message: string;
|
|
48
|
+
/**
|
|
49
|
+
* Optional details schema for TypeScript inference.
|
|
50
|
+
*/
|
|
22
51
|
details?: StandardSchema;
|
|
23
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Route-owned error definitions keyed by catalog key.
|
|
55
|
+
*/
|
|
24
56
|
export type ContractErrorResponses = Record<string, ContractErrorDefinition>;
|
|
57
|
+
/**
|
|
58
|
+
* Convert route-owned error definitions into standard envelope response schemas.
|
|
59
|
+
*/
|
|
25
60
|
export type ResponsesFromErrorDefinitions<T extends ContractErrorResponses> = {
|
|
26
61
|
[K in keyof T as T[K]["status"]]: StandardErrorResponseSchema;
|
|
27
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Header schema declaration for a contract.
|
|
65
|
+
*/
|
|
28
66
|
export type ContractHeaderSchemas = StandardSchema | readonly StandardSchema[] | null;
|
|
67
|
+
/**
|
|
68
|
+
* Header used to distinguish framework-owned and route-owned error responses.
|
|
69
|
+
*/
|
|
29
70
|
export declare const BEIGNET_ERROR_OWNER_HEADER = "x-beignet-error-owner";
|
|
71
|
+
/**
|
|
72
|
+
* Infer merged header input from one or more Standard Schema header validators.
|
|
73
|
+
*/
|
|
30
74
|
export type InferHeaderSchemaInput<T extends ContractHeaderSchemas | undefined> = T extends readonly StandardSchemaV1[] ? UnionToIntersection<InferInput<T[number]>> : T extends StandardSchemaV1 ? InferInput<T> : undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Infer merged header output from one or more Standard Schema header validators.
|
|
77
|
+
*/
|
|
31
78
|
export type InferHeaderSchemaOutput<T extends ContractHeaderSchemas | undefined> = T extends readonly StandardSchemaV1[] ? UnionToIntersection<InferOutput<T[number]>> : T extends StandardSchemaV1 ? InferOutput<T> : undefined;
|
|
32
79
|
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer I) => void ? I : never;
|
|
33
80
|
/**
|
|
34
|
-
* Infer the output type from a Standard Schema
|
|
81
|
+
* Infer the parsed output type from a Standard Schema.
|
|
35
82
|
*/
|
|
36
83
|
export type InferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
37
84
|
/**
|
|
38
|
-
* Infer the input type
|
|
85
|
+
* Infer the input type accepted by a Standard Schema.
|
|
39
86
|
*/
|
|
40
87
|
export type InferInput<T extends StandardSchemaV1> = StandardSchemaV1.InferInput<T>;
|
|
41
88
|
/**
|
|
42
|
-
* HTTP methods supported by contracts
|
|
89
|
+
* HTTP methods supported by contracts.
|
|
43
90
|
*/
|
|
44
91
|
export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
|
|
92
|
+
/**
|
|
93
|
+
* HTTP methods that may carry a JSON request body.
|
|
94
|
+
*/
|
|
45
95
|
export type BodyHttpMethod = Extract<HttpMethod, "POST" | "PUT" | "PATCH">;
|
|
96
|
+
/**
|
|
97
|
+
* Runtime list of HTTP methods that support request bodies.
|
|
98
|
+
*/
|
|
46
99
|
export declare const BODY_HTTP_METHODS: readonly ["POST", "PUT", "PATCH"];
|
|
100
|
+
/**
|
|
101
|
+
* Check whether a method supports a contract request body.
|
|
102
|
+
*/
|
|
47
103
|
export declare function methodSupportsRequestBody(method: HttpMethod): method is BodyHttpMethod;
|
|
104
|
+
/**
|
|
105
|
+
* Runtime Standard Schema for Beignet's standard error envelope.
|
|
106
|
+
*/
|
|
48
107
|
export declare const STANDARD_ERROR_RESPONSE_SCHEMA: StandardErrorResponseSchema;
|
|
49
108
|
/**
|
|
50
|
-
* Contract metadata
|
|
51
|
-
* May include an optional openapi namespace for OpenAPI-specific metadata,
|
|
52
|
-
* and an optional rateLimit namespace for rate limiting configuration.
|
|
109
|
+
* Contract metadata consumed by hooks, OpenAPI, and app conventions.
|
|
53
110
|
*/
|
|
54
111
|
export type ContractMeta = {
|
|
112
|
+
/**
|
|
113
|
+
* OpenAPI operation metadata.
|
|
114
|
+
*/
|
|
55
115
|
openapi?: OpenAPIOperationMeta;
|
|
56
116
|
/**
|
|
57
117
|
* Optional rate limit configuration for this contract.
|
|
@@ -59,10 +119,17 @@ export type ContractMeta = {
|
|
|
59
119
|
* If absent, no rate limiting is applied.
|
|
60
120
|
*/
|
|
61
121
|
rateLimit?: RateLimitMeta;
|
|
122
|
+
/**
|
|
123
|
+
* Optional idempotency configuration for this contract.
|
|
124
|
+
*
|
|
125
|
+
* This metadata is intended for hooks, docs, and OpenAPI. Use cases should
|
|
126
|
+
* still call `runIdempotently(...)` for workflows that must be retry-safe.
|
|
127
|
+
*/
|
|
128
|
+
idempotency?: IdempotencyMeta;
|
|
62
129
|
[namespace: string]: unknown;
|
|
63
130
|
};
|
|
64
131
|
/**
|
|
65
|
-
* HTTP contract configuration
|
|
132
|
+
* Plain HTTP contract configuration consumed by server, client, and tooling.
|
|
66
133
|
*/
|
|
67
134
|
export type HttpContractConfig<TMethod extends HttpMethod = HttpMethod, TPathParams extends StandardSchema | null = StandardSchema | null, TQuery extends StandardSchema | null = StandardSchema | null, TBody extends StandardSchema | null = StandardSchema | null, TResponses extends ContractResponses = ContractResponses, TMeta extends ContractMeta = ContractMeta, TPath extends string = string, THeaders extends ContractHeaderSchemas = ContractHeaderSchemas> = {
|
|
68
135
|
kind: "http";
|
|
@@ -79,19 +146,46 @@ export type HttpContractConfig<TMethod extends HttpMethod = HttpMethod, TPathPar
|
|
|
79
146
|
* Contract name without the resource namespace.
|
|
80
147
|
*/
|
|
81
148
|
localName?: string;
|
|
149
|
+
/**
|
|
150
|
+
* HTTP method.
|
|
151
|
+
*/
|
|
82
152
|
method: TMethod;
|
|
153
|
+
/**
|
|
154
|
+
* Path template.
|
|
155
|
+
*/
|
|
83
156
|
path: TPath;
|
|
157
|
+
/**
|
|
158
|
+
* Path parameter schema.
|
|
159
|
+
*/
|
|
84
160
|
pathParams: TPathParams;
|
|
161
|
+
/**
|
|
162
|
+
* Query parameter schema.
|
|
163
|
+
*/
|
|
85
164
|
query: TQuery;
|
|
165
|
+
/**
|
|
166
|
+
* Request header schema or schemas.
|
|
167
|
+
*/
|
|
86
168
|
headers?: THeaders;
|
|
169
|
+
/**
|
|
170
|
+
* Request body schema.
|
|
171
|
+
*/
|
|
87
172
|
body: TBody;
|
|
173
|
+
/**
|
|
174
|
+
* Response schemas keyed by HTTP status code.
|
|
175
|
+
*/
|
|
88
176
|
responses: TResponses;
|
|
177
|
+
/**
|
|
178
|
+
* Contract metadata.
|
|
179
|
+
*/
|
|
89
180
|
metadata: TMeta;
|
|
90
181
|
};
|
|
91
182
|
/**
|
|
92
|
-
* Any contract
|
|
183
|
+
* Any HTTP contract config.
|
|
93
184
|
*/
|
|
94
185
|
export type AnyContract = HttpContractConfig;
|
|
186
|
+
/**
|
|
187
|
+
* Normalize a contract header declaration into a schema list.
|
|
188
|
+
*/
|
|
95
189
|
export declare function getContractHeaderSchemas(headers: ContractHeaderSchemas | undefined): readonly StandardSchema[];
|
|
96
190
|
export {};
|
|
97
191
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"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"}
|
package/dist/contracts/types.js
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Header used to distinguish framework-owned and route-owned error responses.
|
|
3
|
+
*/
|
|
1
4
|
export const BEIGNET_ERROR_OWNER_HEADER = "x-beignet-error-owner";
|
|
5
|
+
/**
|
|
6
|
+
* Runtime list of HTTP methods that support request bodies.
|
|
7
|
+
*/
|
|
2
8
|
export const BODY_HTTP_METHODS = [
|
|
3
9
|
"POST",
|
|
4
10
|
"PUT",
|
|
5
11
|
"PATCH",
|
|
6
12
|
];
|
|
13
|
+
/**
|
|
14
|
+
* Check whether a method supports a contract request body.
|
|
15
|
+
*/
|
|
7
16
|
export function methodSupportsRequestBody(method) {
|
|
8
17
|
return BODY_HTTP_METHODS.includes(method);
|
|
9
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Runtime Standard Schema for Beignet's standard error envelope.
|
|
21
|
+
*/
|
|
10
22
|
export const STANDARD_ERROR_RESPONSE_SCHEMA = {
|
|
11
23
|
"~standard": {
|
|
12
24
|
version: 1,
|
|
@@ -44,6 +56,9 @@ export const STANDARD_ERROR_RESPONSE_SCHEMA = {
|
|
|
44
56
|
},
|
|
45
57
|
},
|
|
46
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Normalize a contract header declaration into a schema list.
|
|
61
|
+
*/
|
|
47
62
|
export function getContractHeaderSchemas(headers) {
|
|
48
63
|
if (!headers)
|
|
49
64
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"AAkFA;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AA6DlE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,KAAK;IACL,OAAO;CACqC,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAkB;IAElB,OAAQ,iBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAgC;IACzE,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,SAAS;QACjB,QAAQ,CAAC,KAAK;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,OAAO;oBACL,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,KAAgC,CAAC;YAC9C,MAAM,MAAM,GAA6B,EAAE,CAAC;YAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAc;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAiB;oBAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;wBAC9B,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAmB,EAAE;wBACzC,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AA4FF;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0C;IAE1C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAE,OAAqC;QACxC,CAAC,CAAC,CAAC,OAAyB,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import type { HttpMethod } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Generate a stable contract name from an HTTP method and path.
|
|
4
|
+
*
|
|
5
|
+
* `/api` is ignored as a leading path segment so generated names focus on the
|
|
6
|
+
* resource shape.
|
|
7
|
+
*/
|
|
2
8
|
export declare function generateContractName(method: HttpMethod, path: string): string;
|
|
3
9
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/contracts/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkC1C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoB7E"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/contracts/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkC1C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoB7E"}
|
package/dist/contracts/utils.js
CHANGED
|
@@ -24,6 +24,12 @@ function getMeaningfulPathSegments(path) {
|
|
|
24
24
|
}
|
|
25
25
|
return segments;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate a stable contract name from an HTTP method and path.
|
|
29
|
+
*
|
|
30
|
+
* `/api` is ignored as a leading path segment so generated names focus on the
|
|
31
|
+
* resource shape.
|
|
32
|
+
*/
|
|
27
33
|
export function generateContractName(method, path) {
|
|
28
34
|
const methodPrefix = methodNameMap[method];
|
|
29
35
|
const segments = getMeaningfulPathSegments(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/contracts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,MAAM,aAAa,GAA+B;IAChD,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAElD,IACE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,QAAQ;QAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EACzC,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAkB,EAAE,IAAY;IACnE,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,YAAY,MAAM,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ;SACxB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;IACnD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,GAAG,YAAY,GAAG,UAAU,EAAE,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/contracts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,MAAM,aAAa,GAA+B;IAChD,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAElD,IACE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,QAAQ;QAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EACzC,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkB,EAAE,IAAY;IACnE,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,YAAY,MAAM,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ;SACxB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;IACnD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,GAAG,YAAY,GAAG,UAAU,EAAE,CAAC;AACxC,CAAC"}
|
package/dist/domain/entity.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
2
|
/**
|
|
3
|
-
* Any Standard Schema validator
|
|
3
|
+
* Any Standard Schema compatible validator.
|
|
4
4
|
*/
|
|
5
5
|
export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
6
6
|
/**
|
|
7
|
-
* Infer the output type from a Standard Schema
|
|
7
|
+
* Infer the parsed output type from a Standard Schema.
|
|
8
8
|
*/
|
|
9
9
|
export type InferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
10
10
|
type AnyMethods = Record<string, any>;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Entity instance with validated props, attached methods, and immutable update
|
|
13
|
+
* helpers.
|
|
13
14
|
*/
|
|
14
15
|
export type EntityInstance<Name extends string, Schema extends StandardSchema, Methods extends AnyMethods> = InferOutput<Schema> & {
|
|
15
16
|
/**
|
|
16
|
-
* Create a new entity instance with
|
|
17
|
+
* Create a new validated entity instance with patched properties.
|
|
17
18
|
*/
|
|
18
19
|
with(patch: Partial<InferOutput<Schema>>): EntityInstance<Name, Schema, Methods> | Promise<EntityInstance<Name, Schema, Methods>>;
|
|
19
20
|
/**
|
|
@@ -22,18 +23,24 @@ export type EntityInstance<Name extends string, Schema extends StandardSchema, M
|
|
|
22
23
|
toJSON(): InferOutput<Schema>;
|
|
23
24
|
} & Methods;
|
|
24
25
|
/**
|
|
25
|
-
*
|
|
26
|
+
* Entity definition returned by `defineEntity(...).build()`.
|
|
26
27
|
*/
|
|
27
28
|
export interface EntityDef<Name extends string, Schema extends StandardSchema, Methods extends AnyMethods> {
|
|
28
|
-
/**
|
|
29
|
+
/** Name used for debugging and introspection. */
|
|
29
30
|
name: Name;
|
|
30
|
-
/**
|
|
31
|
+
/** Standard Schema used to validate entity props. */
|
|
31
32
|
schema: Schema;
|
|
32
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Create a new frozen entity instance from props.
|
|
35
|
+
*
|
|
36
|
+
* Returns a promise when the underlying Standard Schema validates async.
|
|
37
|
+
*/
|
|
33
38
|
create(props: InferOutput<Schema>): EntityInstance<Name, Schema, Methods> | Promise<EntityInstance<Name, Schema, Methods>>;
|
|
34
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Reconstruct an entity instance from JSON, usually from persistence.
|
|
41
|
+
*/
|
|
35
42
|
fromJSON(json: InferOutput<Schema>): EntityInstance<Name, Schema, Methods> | Promise<EntityInstance<Name, Schema, Methods>>;
|
|
36
|
-
/** Type alias for the entity instance type */
|
|
43
|
+
/** Type-only alias for the entity instance type. Undefined at runtime. */
|
|
37
44
|
Type: EntityInstance<Name, Schema, Methods>;
|
|
38
45
|
}
|
|
39
46
|
/**
|
|
@@ -61,7 +68,11 @@ declare class EntityBuilder<Name extends string, Schema extends StandardSchema,
|
|
|
61
68
|
build(): EntityDef<Name, Schema, Methods>;
|
|
62
69
|
}
|
|
63
70
|
/**
|
|
64
|
-
* Create a new
|
|
71
|
+
* Create a new entity builder.
|
|
72
|
+
*
|
|
73
|
+
* Entities validate props, attach domain methods, and return frozen immutable
|
|
74
|
+
* instances. `with(...)` revalidates the merged props. `.Type` is type-only and
|
|
75
|
+
* should be used with `typeof Entity.Type`.
|
|
65
76
|
*
|
|
66
77
|
* @example
|
|
67
78
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAChD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAuDlC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAChD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAuDlC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,cAAc,EAC7B,OAAO,SAAS,UAAU,IACxB,WAAW,CAAC,MAAM,CAAC,GAAG;IACxB;;OAEG;IACH,IAAI,CACF,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAEjC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B,GAAG,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,SAAS,CACxB,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,cAAc,EAC7B,OAAO,SAAS,UAAU;IAE1B,iDAAiD;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CACJ,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAExB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,QAAQ,CACN,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAEvB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,0EAA0E;IAC1E,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,cAAM,aAAa,CACjB,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,cAAc,EAC7B,OAAO,SAAS,UAAU;IAGxB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE;QACpB,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;KAClC;IAGH;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC;IAQ3E;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,EAE1B,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GACtB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAQjC;;OAEG;IACH,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;CAgE1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,mDAG3D"}
|
package/dist/domain/entity.js
CHANGED
|
@@ -127,7 +127,11 @@ class EntityBuilder {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
* Create a new
|
|
130
|
+
* Create a new entity builder.
|
|
131
|
+
*
|
|
132
|
+
* Entities validate props, attach domain methods, and return frozen immutable
|
|
133
|
+
* instances. `with(...)` revalidates the merged props. `.Type` is type-only and
|
|
134
|
+
* should be used with `typeof Entity.Type`.
|
|
131
135
|
*
|
|
132
136
|
* @example
|
|
133
137
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAAoC,EACpC,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM;qBAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS;wBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;4BACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BACtB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;wBACtB,CAAC,CAAC,EAAE,CAAC;oBACT,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC5D,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACxB,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;aAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS;gBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBACtB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/events.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EventDef, InferEventPayload, StandardSchema } from "../events";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Domain event definition with a stable name and payload schema.
|
|
4
4
|
*/
|
|
5
5
|
export type DomainEventDef<Name extends string = string, Payload extends StandardSchema = StandardSchema> = EventDef<Name, Payload>;
|
|
6
6
|
/**
|
|
@@ -22,7 +22,10 @@ export type DomainEventDef<Name extends string = string, Payload extends Standar
|
|
|
22
22
|
*/
|
|
23
23
|
export type { InferEventPayload };
|
|
24
24
|
/**
|
|
25
|
-
* Create a new
|
|
25
|
+
* Create a new domain event definition.
|
|
26
|
+
*
|
|
27
|
+
* This is a domain-focused alias around `defineEvent(...)` for applications
|
|
28
|
+
* that separate domain events from integration events.
|
|
26
29
|
*
|
|
27
30
|
* @example
|
|
28
31
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc,IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc,IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE5B;;;;;;;;;;;;;;;;GAgBG;AACH,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,SAAS,MAAM,EACnB,OAAO,SAAS,cAAc,EAC9B,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAE7D"}
|
package/dist/domain/events.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { defineEvent } from "../events";
|
|
2
2
|
/**
|
|
3
|
-
* Create a new
|
|
3
|
+
* Create a new domain event definition.
|
|
4
|
+
*
|
|
5
|
+
* This is a domain-focused alias around `defineEvent(...)` for applications
|
|
6
|
+
* that separate domain events from integration events.
|
|
4
7
|
*
|
|
5
8
|
* @example
|
|
6
9
|
* ```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA6BxC
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/domain/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA6BxC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAG/B,IAAU,EAAE,OAAgB;IAC5B,OAAO,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC"}
|