@pwfabric/contracts 0.0.0-stage → 1.0.0-rc.0
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/LICENSE +202 -0
- package/README.md +13 -2
- package/dist/capability/builder.d.ts +100 -0
- package/dist/capability/builder.d.ts.map +1 -0
- package/dist/capability/builder.js +224 -0
- package/dist/capability/builder.js.map +1 -0
- package/dist/capability/index.d.ts +9 -0
- package/dist/capability/index.d.ts.map +1 -0
- package/dist/capability/index.js +9 -0
- package/dist/capability/index.js.map +1 -0
- package/dist/core/ids.d.ts +119 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +106 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/result.d.ts +91 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +104 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/schema.d.ts +167 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +107 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/version.d.ts +58 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +120 -0
- package/dist/core/version.js.map +1 -0
- package/dist/fabric/appearance-cascade.d.ts +224 -0
- package/dist/fabric/appearance-cascade.d.ts.map +1 -0
- package/dist/fabric/appearance-cascade.js +956 -0
- package/dist/fabric/appearance-cascade.js.map +1 -0
- package/dist/fabric/artifact.d.ts +101 -0
- package/dist/fabric/artifact.d.ts.map +1 -0
- package/dist/fabric/artifact.js +12 -0
- package/dist/fabric/artifact.js.map +1 -0
- package/dist/fabric/atom.d.ts +2094 -0
- package/dist/fabric/atom.d.ts.map +1 -0
- package/dist/fabric/atom.js +578 -0
- package/dist/fabric/atom.js.map +1 -0
- package/dist/fabric/block-manifest-schema.d.ts +134 -0
- package/dist/fabric/block-manifest-schema.d.ts.map +1 -0
- package/dist/fabric/block-manifest-schema.js +56 -0
- package/dist/fabric/block-manifest-schema.js.map +1 -0
- package/dist/fabric/block.d.ts +147 -0
- package/dist/fabric/block.d.ts.map +1 -0
- package/dist/fabric/block.js +13 -0
- package/dist/fabric/block.js.map +1 -0
- package/dist/fabric/capability-configs.d.ts +565 -0
- package/dist/fabric/capability-configs.d.ts.map +1 -0
- package/dist/fabric/capability-configs.js +58 -0
- package/dist/fabric/capability-configs.js.map +1 -0
- package/dist/fabric/capability.d.ts +183 -0
- package/dist/fabric/capability.d.ts.map +1 -0
- package/dist/fabric/capability.js +24 -0
- package/dist/fabric/capability.js.map +1 -0
- package/dist/fabric/config-schema.d.ts +65 -0
- package/dist/fabric/config-schema.d.ts.map +1 -0
- package/dist/fabric/config-schema.js +11 -0
- package/dist/fabric/config-schema.js.map +1 -0
- package/dist/fabric/contract.d.ts +144 -0
- package/dist/fabric/contract.d.ts.map +1 -0
- package/dist/fabric/contract.js +24 -0
- package/dist/fabric/contract.js.map +1 -0
- package/dist/fabric/domain.d.ts +202 -0
- package/dist/fabric/domain.d.ts.map +1 -0
- package/dist/fabric/domain.js +47 -0
- package/dist/fabric/domain.js.map +1 -0
- package/dist/fabric/dynamic-artifact.d.ts +100 -0
- package/dist/fabric/dynamic-artifact.d.ts.map +1 -0
- package/dist/fabric/dynamic-artifact.js +12 -0
- package/dist/fabric/dynamic-artifact.js.map +1 -0
- package/dist/fabric/events.d.ts +179 -0
- package/dist/fabric/events.d.ts.map +1 -0
- package/dist/fabric/events.js +28 -0
- package/dist/fabric/events.js.map +1 -0
- package/dist/fabric/execution.d.ts +163 -0
- package/dist/fabric/execution.d.ts.map +1 -0
- package/dist/fabric/execution.js +26 -0
- package/dist/fabric/execution.js.map +1 -0
- package/dist/fabric/fabric.d.ts +159 -0
- package/dist/fabric/fabric.d.ts.map +1 -0
- package/dist/fabric/fabric.js +40 -0
- package/dist/fabric/fabric.js.map +1 -0
- package/dist/fabric/index.d.ts +44 -0
- package/dist/fabric/index.d.ts.map +1 -0
- package/dist/fabric/index.js +83 -0
- package/dist/fabric/index.js.map +1 -0
- package/dist/fabric/interaction-rules.d.ts +29 -0
- package/dist/fabric/interaction-rules.d.ts.map +1 -0
- package/dist/fabric/interaction-rules.js +4 -0
- package/dist/fabric/interaction-rules.js.map +1 -0
- package/dist/fabric/layout.d.ts +117 -0
- package/dist/fabric/layout.d.ts.map +1 -0
- package/dist/fabric/layout.js +48 -0
- package/dist/fabric/layout.js.map +1 -0
- package/dist/fabric/manifestation.d.ts +219 -0
- package/dist/fabric/manifestation.d.ts.map +1 -0
- package/dist/fabric/manifestation.js +29 -0
- package/dist/fabric/manifestation.js.map +1 -0
- package/dist/fabric/media-declaration.d.ts +133 -0
- package/dist/fabric/media-declaration.d.ts.map +1 -0
- package/dist/fabric/media-declaration.js +78 -0
- package/dist/fabric/media-declaration.js.map +1 -0
- package/dist/fabric/media-provenance.d.ts +158 -0
- package/dist/fabric/media-provenance.d.ts.map +1 -0
- package/dist/fabric/media-provenance.js +71 -0
- package/dist/fabric/media-provenance.js.map +1 -0
- package/dist/fabric/pack-requires.d.ts +195 -0
- package/dist/fabric/pack-requires.d.ts.map +1 -0
- package/dist/fabric/pack-requires.js +425 -0
- package/dist/fabric/pack-requires.js.map +1 -0
- package/dist/fabric/project-identity.d.ts +368 -0
- package/dist/fabric/project-identity.d.ts.map +1 -0
- package/dist/fabric/project-identity.js +208 -0
- package/dist/fabric/project-identity.js.map +1 -0
- package/dist/fabric/pwpack-json.d.ts +257 -0
- package/dist/fabric/pwpack-json.d.ts.map +1 -0
- package/dist/fabric/pwpack-json.js +84 -0
- package/dist/fabric/pwpack-json.js.map +1 -0
- package/dist/fabric/surface-appearance.d.ts +465 -0
- package/dist/fabric/surface-appearance.d.ts.map +1 -0
- package/dist/fabric/surface-appearance.js +72 -0
- package/dist/fabric/surface-appearance.js.map +1 -0
- package/dist/fabric/surface-doc.d.ts +111 -0
- package/dist/fabric/surface-doc.d.ts.map +1 -0
- package/dist/fabric/surface-doc.js +12 -0
- package/dist/fabric/surface-doc.js.map +1 -0
- package/dist/fabric/surface-events.d.ts +194 -0
- package/dist/fabric/surface-events.d.ts.map +1 -0
- package/dist/fabric/surface-events.js +90 -0
- package/dist/fabric/surface-events.js.map +1 -0
- package/dist/fabric/surface-mutation.d.ts +270 -0
- package/dist/fabric/surface-mutation.d.ts.map +1 -0
- package/dist/fabric/surface-mutation.js +13 -0
- package/dist/fabric/surface-mutation.js.map +1 -0
- package/dist/fabric/surface-render-grant.d.ts +48 -0
- package/dist/fabric/surface-render-grant.d.ts.map +1 -0
- package/dist/fabric/surface-render-grant.js +74 -0
- package/dist/fabric/surface-render-grant.js.map +1 -0
- package/dist/fabric/surface-schema.d.ts +1615 -0
- package/dist/fabric/surface-schema.d.ts.map +1 -0
- package/dist/fabric/surface-schema.js +367 -0
- package/dist/fabric/surface-schema.js.map +1 -0
- package/dist/fabric/surface-theme.d.ts +293 -0
- package/dist/fabric/surface-theme.d.ts.map +1 -0
- package/dist/fabric/surface-theme.js +139 -0
- package/dist/fabric/surface-theme.js.map +1 -0
- package/dist/fabric/surface.d.ts +163 -0
- package/dist/fabric/surface.d.ts.map +1 -0
- package/dist/fabric/surface.js +19 -0
- package/dist/fabric/surface.js.map +1 -0
- package/dist/fabric/validation.d.ts +110 -0
- package/dist/fabric/validation.d.ts.map +1 -0
- package/dist/fabric/validation.js +32 -0
- package/dist/fabric/validation.js.map +1 -0
- package/dist/fabric/webfonts.d.ts +49 -0
- package/dist/fabric/webfonts.d.ts.map +1 -0
- package/dist/fabric/webfonts.js +93 -0
- package/dist/fabric/webfonts.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -3
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity and Addressing Primitives
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Core identity types for PWFabric
|
|
5
|
+
*
|
|
6
|
+
* These types use branded types (opaque types) to provide
|
|
7
|
+
* compile-time safety for different ID types that are
|
|
8
|
+
* structurally identical (all strings) but semantically distinct.
|
|
9
|
+
*
|
|
10
|
+
* @module @pwfabric/contracts/core/ids
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Brand symbol for nominal typing
|
|
14
|
+
*/
|
|
15
|
+
declare const brand: unique symbol;
|
|
16
|
+
/**
|
|
17
|
+
* Branded type helper - creates nominally typed strings
|
|
18
|
+
*/
|
|
19
|
+
type Brand<T, B extends string> = T & {
|
|
20
|
+
readonly [brand]: B;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Unique identifier for a Fabric instance
|
|
24
|
+
*/
|
|
25
|
+
export type FabricId = Brand<string, 'FabricId'>;
|
|
26
|
+
/**
|
|
27
|
+
* Unique identifier for a Capability
|
|
28
|
+
*/
|
|
29
|
+
export type CapabilityId = Brand<string, 'CapabilityId'>;
|
|
30
|
+
/**
|
|
31
|
+
* Unique identifier for a Contract
|
|
32
|
+
*/
|
|
33
|
+
export type ContractId = Brand<string, 'ContractId'>;
|
|
34
|
+
/**
|
|
35
|
+
* Unique identifier for a Surface
|
|
36
|
+
*/
|
|
37
|
+
export type SurfaceId = Brand<string, 'SurfaceId'>;
|
|
38
|
+
/**
|
|
39
|
+
* Unique identifier for a Manifestation
|
|
40
|
+
*/
|
|
41
|
+
export type ManifestationId = Brand<string, 'ManifestationId'>;
|
|
42
|
+
/**
|
|
43
|
+
* Unique identifier for a Domain
|
|
44
|
+
*/
|
|
45
|
+
export type DomainId = Brand<string, 'DomainId'>;
|
|
46
|
+
/**
|
|
47
|
+
* Unique identifier for an Owner (human or system)
|
|
48
|
+
*/
|
|
49
|
+
export type OwnerId = Brand<string, 'OwnerId'>;
|
|
50
|
+
/**
|
|
51
|
+
* Unique identifier for an Artifact
|
|
52
|
+
*/
|
|
53
|
+
export type ArtifactId = Brand<string, 'ArtifactId'>;
|
|
54
|
+
/**
|
|
55
|
+
* User identifier — auth principal. A single user may belong to many Worlds.
|
|
56
|
+
*/
|
|
57
|
+
export type UserId = Brand<string, 'UserId'>;
|
|
58
|
+
/**
|
|
59
|
+
* ISO 8601 datetime string. Branded for documentation; runtime is plain string.
|
|
60
|
+
* Always UTC; suffix `Z` required.
|
|
61
|
+
*/
|
|
62
|
+
export type ISODateTime = Brand<string, 'ISODateTime'>;
|
|
63
|
+
/**
|
|
64
|
+
* Create a FabricId from a string
|
|
65
|
+
* Runtime validation should be performed by the caller
|
|
66
|
+
*/
|
|
67
|
+
export declare function fabricId(id: string): FabricId;
|
|
68
|
+
/**
|
|
69
|
+
* Create a CapabilityId from a string
|
|
70
|
+
*/
|
|
71
|
+
export declare function capabilityId(id: string): CapabilityId;
|
|
72
|
+
/**
|
|
73
|
+
* Create a ContractId from a string
|
|
74
|
+
*/
|
|
75
|
+
export declare function contractId(id: string): ContractId;
|
|
76
|
+
/**
|
|
77
|
+
* Create a SurfaceId from a string
|
|
78
|
+
*/
|
|
79
|
+
export declare function surfaceId(id: string): SurfaceId;
|
|
80
|
+
/**
|
|
81
|
+
* Create a ManifestationId from a string
|
|
82
|
+
*/
|
|
83
|
+
export declare function manifestationId(id: string): ManifestationId;
|
|
84
|
+
/**
|
|
85
|
+
* Create a DomainId from a string
|
|
86
|
+
*/
|
|
87
|
+
export declare function domainId(id: string): DomainId;
|
|
88
|
+
/**
|
|
89
|
+
* Create an OwnerId from a string
|
|
90
|
+
*/
|
|
91
|
+
export declare function ownerId(id: string): OwnerId;
|
|
92
|
+
/**
|
|
93
|
+
* Create an ArtifactId from a string
|
|
94
|
+
*/
|
|
95
|
+
export declare function artifactId(id: string): ArtifactId;
|
|
96
|
+
export declare function userId(id: string): UserId;
|
|
97
|
+
export declare function isoDateTime(s: string): ISODateTime;
|
|
98
|
+
/**
|
|
99
|
+
* ID format: namespace/name or namespace/name@version
|
|
100
|
+
* Examples:
|
|
101
|
+
* - "auth/login"
|
|
102
|
+
* - "payments/process@1.0.0"
|
|
103
|
+
* - "core/validate"
|
|
104
|
+
*/
|
|
105
|
+
export declare const ID_PATTERN: RegExp;
|
|
106
|
+
/**
|
|
107
|
+
* Check if a string is a valid PWFabric ID format
|
|
108
|
+
*/
|
|
109
|
+
export declare function isValidId(id: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Parse an ID into namespace and name parts
|
|
112
|
+
*/
|
|
113
|
+
export declare function parseId(id: string): {
|
|
114
|
+
namespace: string;
|
|
115
|
+
name: string;
|
|
116
|
+
version?: string;
|
|
117
|
+
} | null;
|
|
118
|
+
export {};
|
|
119
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,MAAM,CAAA;AAElC;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;CAAE,CAAA;AAM7D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAEhD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAEpD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAElD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAEhD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAE9C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAMpD;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAE5C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAMtD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAE7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAE3D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAE7C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAEjD;AAMD,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAElD;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAuE,CAAA;AAE9F;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAchG"}
|
package/dist/core/ids.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity and Addressing Primitives
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Core identity types for PWFabric
|
|
5
|
+
*
|
|
6
|
+
* These types use branded types (opaque types) to provide
|
|
7
|
+
* compile-time safety for different ID types that are
|
|
8
|
+
* structurally identical (all strings) but semantically distinct.
|
|
9
|
+
*
|
|
10
|
+
* @module @pwfabric/contracts/core/ids
|
|
11
|
+
*/
|
|
12
|
+
// ============================================================
|
|
13
|
+
// ID CONSTRUCTORS
|
|
14
|
+
// ============================================================
|
|
15
|
+
/**
|
|
16
|
+
* Create a FabricId from a string
|
|
17
|
+
* Runtime validation should be performed by the caller
|
|
18
|
+
*/
|
|
19
|
+
export function fabricId(id) {
|
|
20
|
+
return id;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a CapabilityId from a string
|
|
24
|
+
*/
|
|
25
|
+
export function capabilityId(id) {
|
|
26
|
+
return id;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a ContractId from a string
|
|
30
|
+
*/
|
|
31
|
+
export function contractId(id) {
|
|
32
|
+
return id;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a SurfaceId from a string
|
|
36
|
+
*/
|
|
37
|
+
export function surfaceId(id) {
|
|
38
|
+
return id;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a ManifestationId from a string
|
|
42
|
+
*/
|
|
43
|
+
export function manifestationId(id) {
|
|
44
|
+
return id;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a DomainId from a string
|
|
48
|
+
*/
|
|
49
|
+
export function domainId(id) {
|
|
50
|
+
return id;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create an OwnerId from a string
|
|
54
|
+
*/
|
|
55
|
+
export function ownerId(id) {
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create an ArtifactId from a string
|
|
60
|
+
*/
|
|
61
|
+
export function artifactId(id) {
|
|
62
|
+
return id;
|
|
63
|
+
}
|
|
64
|
+
// ============================================================
|
|
65
|
+
// WORLD LAYER ID CONSTRUCTORS
|
|
66
|
+
// ============================================================
|
|
67
|
+
export function userId(id) {
|
|
68
|
+
return id;
|
|
69
|
+
}
|
|
70
|
+
export function isoDateTime(s) {
|
|
71
|
+
return s;
|
|
72
|
+
}
|
|
73
|
+
// ============================================================
|
|
74
|
+
// ID VALIDATION
|
|
75
|
+
// ============================================================
|
|
76
|
+
/**
|
|
77
|
+
* ID format: namespace/name or namespace/name@version
|
|
78
|
+
* Examples:
|
|
79
|
+
* - "auth/login"
|
|
80
|
+
* - "payments/process@1.0.0"
|
|
81
|
+
* - "core/validate"
|
|
82
|
+
*/
|
|
83
|
+
export const ID_PATTERN = /^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*(@\d+\.\d+\.\d+(-[a-z0-9.]+)?)?$/i;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a string is a valid PWFabric ID format
|
|
86
|
+
*/
|
|
87
|
+
export function isValidId(id) {
|
|
88
|
+
return ID_PATTERN.test(id);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse an ID into namespace and name parts
|
|
92
|
+
*/
|
|
93
|
+
export function parseId(id) {
|
|
94
|
+
const match = id.match(/^([a-z][a-z0-9-]*)\/([a-z][a-z0-9-]*)(?:@(.+))?$/i);
|
|
95
|
+
if (!match || !match[1] || !match[2])
|
|
96
|
+
return null;
|
|
97
|
+
const result = {
|
|
98
|
+
namespace: match[1],
|
|
99
|
+
name: match[2],
|
|
100
|
+
};
|
|
101
|
+
if (match[3]) {
|
|
102
|
+
result.version = match[3];
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuEH,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,EAAkB,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAe,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAqB,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,EAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,EAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,8BAA8B;AAC9B,+DAA+D;AAE/D,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,EAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAgB,CAAA;AACzB,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oEAAoE,CAAA;AAE9F;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;IAC3E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjD,MAAM,MAAM,GAA0D;QACpE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACf,CAAA;IAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Contract Primitives
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Foundational types for PWFabric
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/contracts/core
|
|
7
|
+
*/
|
|
8
|
+
export * from './ids.js';
|
|
9
|
+
export * from './version.js';
|
|
10
|
+
export * from './result.js';
|
|
11
|
+
export * from './schema.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,UAAU,CAAA;AAGxB,cAAc,cAAc,CAAA;AAG5B,cAAc,aAAa,CAAA;AAG3B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Contract Primitives
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Foundational types for PWFabric
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/contracts/core
|
|
7
|
+
*/
|
|
8
|
+
// Identity and addressing
|
|
9
|
+
export * from './ids.js';
|
|
10
|
+
// Semantic versioning
|
|
11
|
+
export * from './version.js';
|
|
12
|
+
// Result types
|
|
13
|
+
export * from './result.js';
|
|
14
|
+
// Schema types
|
|
15
|
+
export * from './schema.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AAExB,sBAAsB;AACtB,cAAc,cAAc,CAAA;AAE5B,eAAe;AACf,cAAc,aAAa,CAAA;AAE3B,eAAe;AACf,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Types for Operations
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Typed result handling without exceptions
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/contracts/core/result
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Success result
|
|
10
|
+
*/
|
|
11
|
+
export interface Success<T> {
|
|
12
|
+
readonly success: true;
|
|
13
|
+
readonly data: T;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Failure result
|
|
17
|
+
*/
|
|
18
|
+
export interface Failure<E> {
|
|
19
|
+
readonly success: false;
|
|
20
|
+
readonly error: E;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result type for operations that can fail
|
|
24
|
+
* Encodes success/failure in the type system
|
|
25
|
+
*/
|
|
26
|
+
export type Result<T, E = Error> = Success<T> | Failure<E>;
|
|
27
|
+
/**
|
|
28
|
+
* Async result type
|
|
29
|
+
*/
|
|
30
|
+
export type AsyncResult<T, E = Error> = Promise<Result<T, E>>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a success result
|
|
33
|
+
*/
|
|
34
|
+
export declare function ok<T>(data: T): Success<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a failure result
|
|
37
|
+
*/
|
|
38
|
+
export declare function err<E>(error: E): Failure<E>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if result is successful
|
|
41
|
+
*/
|
|
42
|
+
export declare function isOk<T, E>(result: Result<T, E>): result is Success<T>;
|
|
43
|
+
/**
|
|
44
|
+
* Check if result is a failure
|
|
45
|
+
*/
|
|
46
|
+
export declare function isErr<T, E>(result: Result<T, E>): result is Failure<E>;
|
|
47
|
+
/**
|
|
48
|
+
* Unwrap a result, throwing if it's a failure
|
|
49
|
+
*/
|
|
50
|
+
export declare function unwrap<T, E>(result: Result<T, E>): T;
|
|
51
|
+
/**
|
|
52
|
+
* Unwrap a result with a default value
|
|
53
|
+
*/
|
|
54
|
+
export declare function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T;
|
|
55
|
+
/**
|
|
56
|
+
* Map over a successful result
|
|
57
|
+
*/
|
|
58
|
+
export declare function mapResult<T, U, E>(result: Result<T, E>, fn: (data: T) => U): Result<U, E>;
|
|
59
|
+
/**
|
|
60
|
+
* Map over a failure result
|
|
61
|
+
*/
|
|
62
|
+
export declare function mapError<T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F>;
|
|
63
|
+
/**
|
|
64
|
+
* FlatMap (bind) over a result
|
|
65
|
+
*/
|
|
66
|
+
export declare function flatMap<T, U, E>(result: Result<T, E>, fn: (data: T) => Result<U, E>): Result<U, E>;
|
|
67
|
+
/**
|
|
68
|
+
* Validation error details
|
|
69
|
+
*/
|
|
70
|
+
export interface ValidationError {
|
|
71
|
+
readonly path: string[];
|
|
72
|
+
readonly message: string;
|
|
73
|
+
readonly code: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validation result type
|
|
77
|
+
*/
|
|
78
|
+
export type ValidationResult<T = unknown> = Result<T, ValidationError[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Create a validation success
|
|
81
|
+
*/
|
|
82
|
+
export declare function validationOk<T>(data: T): ValidationResult<T>;
|
|
83
|
+
/**
|
|
84
|
+
* Create a validation failure
|
|
85
|
+
*/
|
|
86
|
+
export declare function validationErr(errors: ValidationError[]): ValidationResult<never>;
|
|
87
|
+
/**
|
|
88
|
+
* Create a single validation error
|
|
89
|
+
*/
|
|
90
|
+
export declare function validationError(path: string[], message: string, code: string): ValidationError;
|
|
91
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Types for Operations
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Typed result handling without exceptions
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/contracts/core/result
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================
|
|
9
|
+
// RESULT CONSTRUCTORS
|
|
10
|
+
// ============================================================
|
|
11
|
+
/**
|
|
12
|
+
* Create a success result
|
|
13
|
+
*/
|
|
14
|
+
export function ok(data) {
|
|
15
|
+
return { success: true, data };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a failure result
|
|
19
|
+
*/
|
|
20
|
+
export function err(error) {
|
|
21
|
+
return { success: false, error };
|
|
22
|
+
}
|
|
23
|
+
// ============================================================
|
|
24
|
+
// RESULT TYPE GUARDS
|
|
25
|
+
// ============================================================
|
|
26
|
+
/**
|
|
27
|
+
* Check if result is successful
|
|
28
|
+
*/
|
|
29
|
+
export function isOk(result) {
|
|
30
|
+
return result.success === true;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if result is a failure
|
|
34
|
+
*/
|
|
35
|
+
export function isErr(result) {
|
|
36
|
+
return result.success === false;
|
|
37
|
+
}
|
|
38
|
+
// ============================================================
|
|
39
|
+
// RESULT UTILITIES
|
|
40
|
+
// ============================================================
|
|
41
|
+
/**
|
|
42
|
+
* Unwrap a result, throwing if it's a failure
|
|
43
|
+
*/
|
|
44
|
+
export function unwrap(result) {
|
|
45
|
+
if (result.success) {
|
|
46
|
+
return result.data;
|
|
47
|
+
}
|
|
48
|
+
throw result.error;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Unwrap a result with a default value
|
|
52
|
+
*/
|
|
53
|
+
export function unwrapOr(result, defaultValue) {
|
|
54
|
+
if (result.success) {
|
|
55
|
+
return result.data;
|
|
56
|
+
}
|
|
57
|
+
return defaultValue;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Map over a successful result
|
|
61
|
+
*/
|
|
62
|
+
export function mapResult(result, fn) {
|
|
63
|
+
if (result.success) {
|
|
64
|
+
return ok(fn(result.data));
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Map over a failure result
|
|
70
|
+
*/
|
|
71
|
+
export function mapError(result, fn) {
|
|
72
|
+
if (!result.success) {
|
|
73
|
+
return err(fn(result.error));
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* FlatMap (bind) over a result
|
|
79
|
+
*/
|
|
80
|
+
export function flatMap(result, fn) {
|
|
81
|
+
if (result.success) {
|
|
82
|
+
return fn(result.data);
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a validation success
|
|
88
|
+
*/
|
|
89
|
+
export function validationOk(data) {
|
|
90
|
+
return ok(data);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a validation failure
|
|
94
|
+
*/
|
|
95
|
+
export function validationErr(errors) {
|
|
96
|
+
return err(errors);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a single validation error
|
|
100
|
+
*/
|
|
101
|
+
export function validationError(path, message, code) {
|
|
102
|
+
return { path, message, code };
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;AACjC,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAO,MAAoB,EAAE,YAAe;IAClE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAU,MAAoB,EAAE,EAAkB;IACzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAU,MAAoB,EAAE,EAAmB;IACzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,MAAoB,EACpB,EAA6B;IAE7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAoBD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAI,IAAO;IACrC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,OAAe,EAAE,IAAY;IAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Types for Contract Validation
|
|
3
|
+
*
|
|
4
|
+
* PHASE0-WS1: Runtime-validated, serializable schema definitions
|
|
5
|
+
*
|
|
6
|
+
* These types define the shape of validation schemas without
|
|
7
|
+
* coupling to a specific validation library.
|
|
8
|
+
*
|
|
9
|
+
* @module @pwfabric/contracts/core/schema
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationResult } from './result.js';
|
|
12
|
+
/**
|
|
13
|
+
* Supported primitive types in schemas
|
|
14
|
+
*/
|
|
15
|
+
export type SchemaType = 'string' | 'number' | 'boolean' | 'null' | 'array' | 'object' | 'union' | 'literal' | 'unknown';
|
|
16
|
+
/**
|
|
17
|
+
* Base schema definition
|
|
18
|
+
*/
|
|
19
|
+
export interface SchemaDefinition {
|
|
20
|
+
readonly type: SchemaType;
|
|
21
|
+
readonly nullable?: boolean;
|
|
22
|
+
readonly optional?: boolean;
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* String schema
|
|
27
|
+
*/
|
|
28
|
+
export interface StringSchema extends SchemaDefinition {
|
|
29
|
+
readonly type: 'string';
|
|
30
|
+
readonly minLength?: number;
|
|
31
|
+
readonly maxLength?: number;
|
|
32
|
+
readonly pattern?: string;
|
|
33
|
+
readonly format?: 'email' | 'uuid' | 'uri' | 'date' | 'datetime';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Number schema
|
|
37
|
+
*/
|
|
38
|
+
export interface NumberSchema extends SchemaDefinition {
|
|
39
|
+
readonly type: 'number';
|
|
40
|
+
readonly minimum?: number;
|
|
41
|
+
readonly maximum?: number;
|
|
42
|
+
readonly integer?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Boolean schema
|
|
46
|
+
*/
|
|
47
|
+
export interface BooleanSchema extends SchemaDefinition {
|
|
48
|
+
readonly type: 'boolean';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Null schema
|
|
52
|
+
*/
|
|
53
|
+
export interface NullSchema extends SchemaDefinition {
|
|
54
|
+
readonly type: 'null';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Array schema
|
|
58
|
+
*/
|
|
59
|
+
export interface ArraySchema extends SchemaDefinition {
|
|
60
|
+
readonly type: 'array';
|
|
61
|
+
readonly items: AnySchema;
|
|
62
|
+
readonly minItems?: number;
|
|
63
|
+
readonly maxItems?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Object schema
|
|
67
|
+
*/
|
|
68
|
+
export interface ObjectSchema extends SchemaDefinition {
|
|
69
|
+
readonly type: 'object';
|
|
70
|
+
readonly properties: Record<string, AnySchema>;
|
|
71
|
+
readonly required?: string[];
|
|
72
|
+
readonly additionalProperties?: boolean | AnySchema;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Union schema (discriminated or simple)
|
|
76
|
+
*/
|
|
77
|
+
export interface UnionSchema extends SchemaDefinition {
|
|
78
|
+
readonly type: 'union';
|
|
79
|
+
readonly variants: AnySchema[];
|
|
80
|
+
readonly discriminator?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Literal schema
|
|
84
|
+
*/
|
|
85
|
+
export interface LiteralSchema extends SchemaDefinition {
|
|
86
|
+
readonly type: 'literal';
|
|
87
|
+
readonly value: string | number | boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Unknown schema (accepts any value)
|
|
91
|
+
*/
|
|
92
|
+
export interface UnknownSchema extends SchemaDefinition {
|
|
93
|
+
readonly type: 'unknown';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Any valid schema
|
|
97
|
+
*/
|
|
98
|
+
export type AnySchema = StringSchema | NumberSchema | BooleanSchema | NullSchema | ArraySchema | ObjectSchema | UnionSchema | LiteralSchema | UnknownSchema;
|
|
99
|
+
/**
|
|
100
|
+
* Schema validator interface
|
|
101
|
+
*
|
|
102
|
+
* This interface abstracts the validation logic, allowing
|
|
103
|
+
* different implementations (Zod, Yup, custom, etc.)
|
|
104
|
+
*/
|
|
105
|
+
export interface Schema<T = unknown> {
|
|
106
|
+
/**
|
|
107
|
+
* The schema definition (serializable)
|
|
108
|
+
*/
|
|
109
|
+
readonly definition: AnySchema;
|
|
110
|
+
/**
|
|
111
|
+
* Validate data against the schema
|
|
112
|
+
*/
|
|
113
|
+
validate(data: unknown): ValidationResult<T>;
|
|
114
|
+
/**
|
|
115
|
+
* Parse data (validate and transform)
|
|
116
|
+
*/
|
|
117
|
+
parse(data: unknown): T;
|
|
118
|
+
/**
|
|
119
|
+
* Safe parse (returns result instead of throwing)
|
|
120
|
+
*/
|
|
121
|
+
safeParse(data: unknown): ValidationResult<T>;
|
|
122
|
+
/**
|
|
123
|
+
* Serialize the schema to JSON Schema format
|
|
124
|
+
*/
|
|
125
|
+
toJsonSchema(): JsonSchema;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* JSON Schema compatible format
|
|
129
|
+
* Subset of JSON Schema Draft-07
|
|
130
|
+
*/
|
|
131
|
+
export interface JsonSchema {
|
|
132
|
+
$schema?: string;
|
|
133
|
+
$id?: string;
|
|
134
|
+
title?: string;
|
|
135
|
+
description?: string;
|
|
136
|
+
type?: string | string[];
|
|
137
|
+
properties?: Record<string, JsonSchema>;
|
|
138
|
+
required?: string[];
|
|
139
|
+
items?: JsonSchema;
|
|
140
|
+
enum?: unknown[];
|
|
141
|
+
const?: unknown;
|
|
142
|
+
oneOf?: JsonSchema[];
|
|
143
|
+
anyOf?: JsonSchema[];
|
|
144
|
+
allOf?: JsonSchema[];
|
|
145
|
+
minLength?: number;
|
|
146
|
+
maxLength?: number;
|
|
147
|
+
pattern?: string;
|
|
148
|
+
format?: string;
|
|
149
|
+
minimum?: number;
|
|
150
|
+
maximum?: number;
|
|
151
|
+
minItems?: number;
|
|
152
|
+
maxItems?: number;
|
|
153
|
+
additionalProperties?: boolean | JsonSchema;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Serialized contract schema (for network transport)
|
|
157
|
+
*/
|
|
158
|
+
export interface SerializedSchema {
|
|
159
|
+
readonly version: string;
|
|
160
|
+
readonly definition: AnySchema;
|
|
161
|
+
readonly jsonSchema: JsonSchema;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Serialize a schema definition to JSON Schema
|
|
165
|
+
*/
|
|
166
|
+
export declare function toJsonSchema(schema: AnySchema): JsonSchema;
|
|
167
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|