@hyperscale0/adl 1.0.0-beta.10 → 1.0.0-beta.11
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 +5 -0
- package/README.md +2 -3
- package/SECURITY.md +0 -4
- package/conformance/cases.json +6 -12
- package/conformance/subject-adapter.ts +0 -5
- package/dist/boundary-fixture.d.ts +1 -4
- package/dist/boundary-fixture.d.ts.map +1 -1
- package/dist/boundary-fixture.js +1 -4
- package/dist/boundary-fixture.js.map +1 -1
- package/dist/index.d.ts +2 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -31
- package/dist/index.js.map +1 -1
- package/dist/vocabulary.d.ts +3 -34
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +1 -52
- package/dist/vocabulary.js.map +1 -1
- package/docs/authoring-guide.md +4 -8
- package/package.json +5 -9
- package/spec/manifest.schema.json +0 -964
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ All notable changes to this package are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project
|
|
5
5
|
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) from 1.0.0.
|
|
6
6
|
|
|
7
|
+
## [1.0.0-beta.11] - 2026-09-24
|
|
8
|
+
|
|
9
|
+
- Cut the declaration to what registered adapters use. Removed `ProviderAdapter.config`, `egress`, `domain` and `webhookMap`, `ProviderConfig`, `ProviderCredentialReference`, `ProviderWebhookTransitionPlan`, `ProviderEgressMode`, `ProviderResponseEnvelope`, and the `envelope` and `meter` operation fields. `ProviderAdapterVocabulary` keeps `capability`, `obligation`, `operation` and `resource`.
|
|
10
|
+
- Removed the published `spec/manifest.schema.json` and its `spec:emit` and `spec:check` scripts. Nothing consumed the schema; `createProviderAdapterRegistry` and `adapterConformanceFindings` remain the declaration checks.
|
|
11
|
+
|
|
7
12
|
## [1.0.0-beta.10] - 2026-09-23
|
|
8
13
|
|
|
9
14
|
- Pin the public UDL dependency to 4.7.0 so ADL and HSX resolve the same contract version.
|
package/README.md
CHANGED
|
@@ -18,13 +18,13 @@ ADL declares provider bindings and the instruction and observation contract for
|
|
|
18
18
|
npm install @hyperscale0/adl
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Pin an exact version before 1.0.0 (see [versioning](#versioning)). ADL depends on `@hyperscale0/udl` for object field schema validation.
|
|
22
22
|
|
|
23
23
|
## Adapter declaration
|
|
24
24
|
|
|
25
25
|
Use `createProviderAdapterRegistry` to validate `ProviderAdapter` declarations and `adapterConformanceFindings` to report incomplete bindings. `BoundaryAdapter` dispatches immutable `BoundaryInstruction` values and returns explicit `BoundaryObservation` values. HTTP success never confirms settlement.
|
|
26
26
|
|
|
27
|
-
The [
|
|
27
|
+
The [boundary adapter](src/boundary-fixture.ts) is the sandbox adapter the platform registers. It has no network, clock or account policy. Check it from this package:
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
30
|
bun run conformance -- ./src/boundary-fixture.ts
|
|
@@ -35,7 +35,6 @@ bun run conformance -- ./src/boundary-fixture.ts
|
|
|
35
35
|
- [Authoring guide](docs/authoring-guide.md)
|
|
36
36
|
- [Conformance test cases](conformance/cases.json)
|
|
37
37
|
- [Subject adapter fixture](conformance/subject-adapter.ts)
|
|
38
|
-
- [Manifest JSON schema](spec/manifest.schema.json)
|
|
39
38
|
- [Contributing](CONTRIBUTING.md)
|
|
40
39
|
|
|
41
40
|
## Versioning
|
package/SECURITY.md
CHANGED
|
@@ -23,7 +23,3 @@ This package validates declarations. It performs no network calls, reads no
|
|
|
23
23
|
credentials, and executes nothing an adapter author does not import
|
|
24
24
|
themselves. Reports about the runtime that executes adapters belong to the
|
|
25
25
|
platform, not here.
|
|
26
|
-
|
|
27
|
-
`ProviderCredentialReference` stores locators only, never secret values. A
|
|
28
|
-
declaration carrying a real credential is a mistake in that repository, not a
|
|
29
|
-
vulnerability in this one, but tell us if ADL made it easy.
|
package/conformance/cases.json
CHANGED
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
]
|
|
16
16
|
},
|
|
17
17
|
"load": "accepts",
|
|
18
|
-
"conformance": ["operation_map_empty"]
|
|
19
|
-
"schema": "accepts"
|
|
18
|
+
"conformance": ["operation_map_empty"]
|
|
20
19
|
},
|
|
21
20
|
{
|
|
22
21
|
"id": "resource-binding-missing",
|
|
@@ -31,8 +30,7 @@
|
|
|
31
30
|
]
|
|
32
31
|
},
|
|
33
32
|
"load": "accepts",
|
|
34
|
-
"conformance": ["resource_binding_missing"]
|
|
35
|
-
"schema": "accepts"
|
|
33
|
+
"conformance": ["resource_binding_missing"]
|
|
36
34
|
},
|
|
37
35
|
{
|
|
38
36
|
"id": "operation-key-mismatch",
|
|
@@ -49,8 +47,7 @@
|
|
|
49
47
|
"load": {
|
|
50
48
|
"throws": "must match operation"
|
|
51
49
|
},
|
|
52
|
-
"conformance": ["declaration_invalid"]
|
|
53
|
-
"schema": "accepts"
|
|
50
|
+
"conformance": ["declaration_invalid"]
|
|
54
51
|
},
|
|
55
52
|
{
|
|
56
53
|
"id": "invalid-provider",
|
|
@@ -67,8 +64,7 @@
|
|
|
67
64
|
"load": {
|
|
68
65
|
"throws": "invalid provider key"
|
|
69
66
|
},
|
|
70
|
-
"conformance": ["declaration_invalid"]
|
|
71
|
-
"schema": "rejects"
|
|
67
|
+
"conformance": ["declaration_invalid"]
|
|
72
68
|
},
|
|
73
69
|
{
|
|
74
70
|
"id": "optional-subject-requirement",
|
|
@@ -91,8 +87,7 @@
|
|
|
91
87
|
"load": {
|
|
92
88
|
"throws": "action requirements cannot be optional"
|
|
93
89
|
},
|
|
94
|
-
"conformance": ["declaration_invalid"]
|
|
95
|
-
"schema": "rejects"
|
|
90
|
+
"conformance": ["declaration_invalid"]
|
|
96
91
|
},
|
|
97
92
|
{
|
|
98
93
|
"id": "invalid-subject-field",
|
|
@@ -114,8 +109,7 @@
|
|
|
114
109
|
"load": {
|
|
115
110
|
"throws": "does not match UDL"
|
|
116
111
|
},
|
|
117
|
-
"conformance": ["declaration_invalid"]
|
|
118
|
-
"schema": "rejects"
|
|
112
|
+
"conformance": ["declaration_invalid"]
|
|
119
113
|
}
|
|
120
114
|
]
|
|
121
115
|
}
|
|
@@ -4,17 +4,13 @@ import type { ProviderAdapter } from "../src/index.js";
|
|
|
4
4
|
export const subjectAdapter: ProviderAdapter = {
|
|
5
5
|
provider: "conformance_subject",
|
|
6
6
|
capability: "subject",
|
|
7
|
-
domain: "conformance",
|
|
8
|
-
egress: "sync_clearance",
|
|
9
7
|
bindings: {
|
|
10
8
|
subject: "strict",
|
|
11
9
|
},
|
|
12
|
-
config: {},
|
|
13
10
|
operationMap: {
|
|
14
11
|
"subject.check": {
|
|
15
12
|
operation: "subject.check",
|
|
16
13
|
direction: "tenant_initiated",
|
|
17
|
-
envelope: "http_200_body_status",
|
|
18
14
|
obligationKind: "subject_check",
|
|
19
15
|
resourceKind: "subject",
|
|
20
16
|
resourceIdPath: "subjectId",
|
|
@@ -27,5 +23,4 @@ export const subjectAdapter: ProviderAdapter = {
|
|
|
27
23
|
],
|
|
28
24
|
},
|
|
29
25
|
},
|
|
30
|
-
webhookMap: {},
|
|
31
26
|
};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { type BoundaryInstruction, type BoundaryObservation, type BoundaryOutcome } from "./index.js";
|
|
2
|
-
/**
|
|
2
|
+
/** The sandbox boundary adapter the platform registers. No transport, clock, accounts or inferred outcome. */
|
|
3
3
|
export declare const genericAdapter: {
|
|
4
4
|
readonly provider: "conformance_boundary";
|
|
5
5
|
readonly capability: "boundary";
|
|
6
|
-
readonly egress: "none";
|
|
7
|
-
readonly config: {};
|
|
8
6
|
readonly bindings: {
|
|
9
7
|
readonly instruction: "strict";
|
|
10
8
|
};
|
|
@@ -18,7 +16,6 @@ export declare const genericAdapter: {
|
|
|
18
16
|
readonly subjectRequirements: readonly [];
|
|
19
17
|
};
|
|
20
18
|
};
|
|
21
|
-
readonly webhookMap: {};
|
|
22
19
|
};
|
|
23
20
|
export declare function observeBoundary(instruction: BoundaryInstruction, outcome: BoundaryOutcome, externalReference: string, observedAt: string): BoundaryObservation;
|
|
24
21
|
//# sourceMappingURL=boundary-fixture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary-fixture.d.ts","sourceRoot":"","sources":["../src/boundary-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAEpB,
|
|
1
|
+
{"version":3,"file":"boundary-fixture.d.ts","sourceRoot":"","sources":["../src/boundary-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAEpB,8GAA8G;AAC9G,eAAO,MAAM,cAAc;uBAEb,sBAAsB;yBACpB,UAAU;;iBACV,WAAW,EAAE,QAAQ;;;iBAE/B,kBAAkB;qBAChB,SAAS,EAAE,kBAAkB;qBAC7B,SAAS,EAAE,mBAAmB;qBAC9B,cAAc,EAAE,sBAAsB;qBACtC,YAAY,EAAE,aAAa;qBAC3B,cAAc,EAAE,eAAe;qBAC/B,mBAAmB;;;CAIb,CAAC;AAEf,wBAAgB,eAAe,CAC7B,WAAW,EAAE,mBAAmB,EAChC,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,GACjB,mBAAmB,CAUrB"}
|
package/dist/boundary-fixture.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { createProviderAdapterRegistry, boundaryObservationSchema, } from "./index.js";
|
|
2
|
-
/**
|
|
2
|
+
/** The sandbox boundary adapter the platform registers. No transport, clock, accounts or inferred outcome. */
|
|
3
3
|
export const genericAdapter = createProviderAdapterRegistry()([
|
|
4
4
|
{
|
|
5
5
|
provider: "conformance_boundary",
|
|
6
6
|
capability: "boundary",
|
|
7
|
-
egress: "none",
|
|
8
|
-
config: {},
|
|
9
7
|
bindings: { instruction: "strict" },
|
|
10
8
|
operationMap: {
|
|
11
9
|
"boundary.observe": {
|
|
@@ -17,7 +15,6 @@ export const genericAdapter = createProviderAdapterRegistry()([
|
|
|
17
15
|
subjectRequirements: [],
|
|
18
16
|
},
|
|
19
17
|
},
|
|
20
|
-
webhookMap: {},
|
|
21
18
|
},
|
|
22
19
|
])[0];
|
|
23
20
|
export function observeBoundary(instruction, outcome, externalReference, observedAt) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary-fixture.js","sourceRoot":"","sources":["../src/boundary-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAI1B,MAAM,YAAY,CAAC;AAEpB,
|
|
1
|
+
{"version":3,"file":"boundary-fixture.js","sourceRoot":"","sources":["../src/boundary-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAI1B,MAAM,YAAY,CAAC;AAEpB,8GAA8G;AAC9G,MAAM,CAAC,MAAM,cAAc,GAAG,6BAA6B,EAAE,CAAC;IAC5D;QACE,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;QACnC,YAAY,EAAE;YACZ,kBAAkB,EAAE;gBAClB,SAAS,EAAE,kBAAkB;gBAC7B,SAAS,EAAE,mBAAmB;gBAC9B,cAAc,EAAE,sBAAsB;gBACtC,YAAY,EAAE,aAAa;gBAC3B,cAAc,EAAE,eAAe;gBAC/B,mBAAmB,EAAE,EAAE;aACxB;SACF;KACF;CACO,CAAC,CAAC,CAAC,CAAC,CAAC;AAEf,MAAM,UAAU,eAAe,CAC7B,WAAgC,EAChC,OAAwB,EACxB,iBAAyB,EACzB,UAAkB;IAElB,IAAI,WAAW,CAAC,OAAO,KAAK,cAAc,CAAC,QAAQ;QACjD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,OAAO,yBAAyB,CAAC,KAAK,CAAC;QACrC,OAAO,EAAE,cAAc,CAAC,QAAQ;QAChC,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,OAAO;QACP,iBAAiB;QACjB,UAAU;KACX,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
2
|
import { type UdlObjectField } from "@hyperscale0/udl";
|
|
3
|
-
import { subjectFieldTypes, type
|
|
3
|
+
import { subjectFieldTypes, type ProviderOperationDirection, type ProviderResourceBinding, type SubjectFieldType } from "./vocabulary.js";
|
|
4
4
|
export { subjectFieldTypes };
|
|
5
|
-
export type {
|
|
5
|
+
export type { ProviderOperationDirection, ProviderResourceBinding, SubjectFieldType, };
|
|
6
6
|
export declare const boundaryOutcomeSchema: z.ZodEnum<{
|
|
7
7
|
acknowledged: "acknowledged";
|
|
8
8
|
confirmed: "confirmed";
|
|
@@ -53,38 +53,19 @@ export interface BoundaryAdapter {
|
|
|
53
53
|
}
|
|
54
54
|
export interface ProviderAdapterVocabulary {
|
|
55
55
|
readonly capability: string;
|
|
56
|
-
readonly domain: string;
|
|
57
|
-
readonly meter: string;
|
|
58
56
|
readonly obligation: string;
|
|
59
57
|
readonly operation: string;
|
|
60
58
|
readonly resource: string;
|
|
61
|
-
readonly webhookOperation: string;
|
|
62
|
-
readonly webhookResource: string;
|
|
63
|
-
readonly webhookResourceId: string;
|
|
64
59
|
}
|
|
65
60
|
export interface ProviderAdapter<Vocabulary extends ProviderAdapterVocabulary = ProviderAdapterVocabulary> {
|
|
66
61
|
readonly bindings: Partial<Record<Vocabulary["resource"], ProviderResourceBinding>>;
|
|
67
62
|
readonly capability: Vocabulary["capability"];
|
|
68
|
-
readonly config: ProviderConfig;
|
|
69
|
-
readonly domain?: Vocabulary["domain"];
|
|
70
|
-
readonly egress: ProviderEgressMode;
|
|
71
63
|
readonly operationMap: Partial<Record<Vocabulary["operation"], ProviderOperationBinding<Vocabulary>>>;
|
|
72
64
|
readonly provider: string;
|
|
73
|
-
readonly webhookMap: Readonly<Record<string, ProviderWebhookTransitionPlan<Vocabulary>>>;
|
|
74
65
|
}
|
|
75
66
|
export interface ProviderOperationBinding<Vocabulary extends ProviderAdapterVocabulary = ProviderAdapterVocabulary> {
|
|
76
|
-
/**
|
|
77
|
-
* How THIS operation's response carries its outcome. Per operation, never
|
|
78
|
-
* per provider and never inherited from another provider's class: one real
|
|
79
|
-
* provider answers two ways, wrapping six of seven endpoints in
|
|
80
|
-
* `{status, message, data}` while the seventh returns a bare object. Absent
|
|
81
|
-
* means the class is not established yet -- an unclassified operation, not
|
|
82
|
-
* a silent `http_200_body_status`.
|
|
83
|
-
*/
|
|
84
|
-
readonly envelope?: ProviderResponseEnvelope;
|
|
85
67
|
readonly operation: Vocabulary["operation"];
|
|
86
68
|
readonly direction: ProviderOperationDirection;
|
|
87
|
-
readonly meter?: Vocabulary["meter"];
|
|
88
69
|
readonly obligationKind: Vocabulary["obligation"];
|
|
89
70
|
readonly resourceIdPath: string;
|
|
90
71
|
readonly resourceKind: Vocabulary["resource"];
|
|
@@ -97,28 +78,6 @@ export interface ProviderOperationBinding<Vocabulary extends ProviderAdapterVoca
|
|
|
97
78
|
*/
|
|
98
79
|
readonly subjectRequirements?: readonly UdlObjectField[];
|
|
99
80
|
}
|
|
100
|
-
export interface ProviderWebhookTransitionPlan<Vocabulary extends ProviderAdapterVocabulary = ProviderAdapterVocabulary> {
|
|
101
|
-
readonly eventKind: string;
|
|
102
|
-
readonly operationName: Vocabulary["webhookOperation"];
|
|
103
|
-
readonly optionalPayloadFields: readonly string[];
|
|
104
|
-
readonly requiredFieldGroups: readonly (readonly string[])[];
|
|
105
|
-
readonly requiredPayloadFields: readonly string[];
|
|
106
|
-
readonly resourceIdField: Vocabulary["webhookResourceId"];
|
|
107
|
-
readonly resourceKind: Vocabulary["webhookResource"];
|
|
108
|
-
readonly timestampField: ProviderTimestampField;
|
|
109
|
-
}
|
|
110
|
-
export type ProviderCredentialReference = {
|
|
111
|
-
readonly name: string;
|
|
112
|
-
readonly source: "environment";
|
|
113
|
-
} | {
|
|
114
|
-
readonly account: string;
|
|
115
|
-
readonly service: string;
|
|
116
|
-
readonly source: "keychain";
|
|
117
|
-
};
|
|
118
|
-
export interface ProviderConfig {
|
|
119
|
-
readonly baseUrl?: string;
|
|
120
|
-
readonly credentialRef?: ProviderCredentialReference;
|
|
121
|
-
}
|
|
122
81
|
/** Bind a product vocabulary once, then retain literal adapter registry types. */
|
|
123
82
|
export declare function createProviderAdapterRegistry<Vocabulary extends ProviderAdapterVocabulary>(): <const Adapters extends readonly ProviderAdapter<Vocabulary>[]>(adapters: Adapters) => Adapters;
|
|
124
83
|
export type AdapterConformanceCode = "operation_map_empty" | "resource_binding_missing" | "declaration_invalid";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAEL,iBAAiB,EACjB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -52,9 +52,7 @@ function defineProviderAdapters(adapters) {
|
|
|
52
52
|
throw new Error(`duplicate provider adapter ${identity}`);
|
|
53
53
|
}
|
|
54
54
|
identities.add(identity);
|
|
55
|
-
validateConfig(adapter.provider, adapter.config);
|
|
56
55
|
validateOperations(adapter);
|
|
57
|
-
validateWebhooks(adapter);
|
|
58
56
|
}
|
|
59
57
|
return adapters;
|
|
60
58
|
}
|
|
@@ -62,25 +60,6 @@ function defineProviderAdapters(adapters) {
|
|
|
62
60
|
export function createProviderAdapterRegistry() {
|
|
63
61
|
return (adapters) => defineProviderAdapters(adapters);
|
|
64
62
|
}
|
|
65
|
-
function validateConfig(provider, config) {
|
|
66
|
-
if (config.baseUrl) {
|
|
67
|
-
try {
|
|
68
|
-
new URL(config.baseUrl);
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
throw new Error(`${provider} config.baseUrl must be an absolute URL`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
const credential = config.credentialRef;
|
|
75
|
-
if (!credential)
|
|
76
|
-
return;
|
|
77
|
-
if (credential.source === "environment") {
|
|
78
|
-
assertNonblank(provider, "config.credentialRef.name", credential.name);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
assertNonblank(provider, "config.credentialRef.account", credential.account);
|
|
82
|
-
assertNonblank(provider, "config.credentialRef.service", credential.service);
|
|
83
|
-
}
|
|
84
63
|
function validateOperations(adapter) {
|
|
85
64
|
for (const [operation, binding] of Object.entries(adapter.operationMap)) {
|
|
86
65
|
if (operation !== binding.operation) {
|
|
@@ -104,13 +83,6 @@ function validateOperations(adapter) {
|
|
|
104
83
|
}
|
|
105
84
|
}
|
|
106
85
|
}
|
|
107
|
-
function validateWebhooks(adapter) {
|
|
108
|
-
for (const [event, plan] of Object.entries(adapter.webhookMap)) {
|
|
109
|
-
if (event !== plan.eventKind) {
|
|
110
|
-
throw new Error(`${adapter.provider} webhookMap key ${event} must match eventKind ${plan.eventKind}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
86
|
function assertNonblank(provider, field, value) {
|
|
115
87
|
if (value.trim().length === 0) {
|
|
116
88
|
throw new Error(`${provider} ${field} must not be blank`);
|
|
@@ -159,9 +131,6 @@ function bindingFindings(adapter) {
|
|
|
159
131
|
continue;
|
|
160
132
|
require(binding.resourceKind, `bindings.${binding.resourceKind}`);
|
|
161
133
|
}
|
|
162
|
-
for (const plan of Object.values(adapter.webhookMap)) {
|
|
163
|
-
require(plan.resourceKind, `bindings.${plan.resourceKind}`);
|
|
164
|
-
}
|
|
165
134
|
return findings;
|
|
166
135
|
}
|
|
167
136
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/vocabulary.d.ts
CHANGED
|
@@ -1,38 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Every closed value set an adapter declaration may use, as runtime arrays
|
|
3
|
-
* with the types derived from them.
|
|
4
|
-
*
|
|
5
|
-
* One source of truth: the exported types below are `(typeof array)[number]`,
|
|
6
|
-
* and `scripts/emit-spec.ts` builds `spec/manifest.schema.json` from the same
|
|
7
|
-
* arrays. A value added here reaches the type checker and the published JSON
|
|
8
|
-
* Schema in the same commit, so the two cannot drift.
|
|
9
|
-
*
|
|
10
|
-
* This module imports nothing, so both `index.ts` and `conformance.ts` can
|
|
11
|
-
* read it without a load-order cycle.
|
|
12
|
-
*/
|
|
1
|
+
/** Closed value sets an adapter declaration may use. This module imports nothing. */
|
|
13
2
|
export declare const providerKeyPattern: RegExp;
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export declare const providerEgressModes: readonly ["none", "rest", "sync_clearance"];
|
|
17
|
-
/**
|
|
18
|
-
* How one provider operation carries its outcome:
|
|
19
|
-
*
|
|
20
|
-
* - `http_200_body_status` -- every response is HTTP 200 and the outcome
|
|
21
|
-
* classifies on a body status field, so a rejection can arrive as a
|
|
22
|
-
* status token inside a 200;
|
|
23
|
-
* - `http_status_error_body` -- the outcome rides the HTTP status and a
|
|
24
|
-
* failure carries a thin prose body (`{status, message}`);
|
|
25
|
-
* - `unconfirmed_until_live` -- the provider publishes no error sample at
|
|
26
|
-
* all, so the class is honestly unknown until first live traffic. An
|
|
27
|
-
* adapter must never borrow another provider's class to fill this in.
|
|
28
|
-
*/
|
|
29
|
-
export declare const providerResponseEnvelopes: readonly ["http_200_body_status", "http_status_error_body", "unconfirmed_until_live"];
|
|
30
|
-
export declare const providerTimestampFields: readonly ["activeAt", "completedAt", "failedAt", "returnedAt", "receivedAt", "clearedAt", "expiredAt", "voidedAt", "postedAt", "refundedAt"];
|
|
31
|
-
export type ProviderOperationDirection = (typeof providerOperationDirections)[number];
|
|
32
|
-
export type ProviderResourceBinding = (typeof providerResourceBindings)[number];
|
|
33
|
-
export type ProviderEgressMode = (typeof providerEgressModes)[number];
|
|
34
|
-
export type ProviderResponseEnvelope = (typeof providerResponseEnvelopes)[number];
|
|
35
|
-
export type ProviderTimestampField = (typeof providerTimestampFields)[number];
|
|
3
|
+
export type ProviderOperationDirection = "tenant_initiated" | "system_settlement";
|
|
4
|
+
export type ProviderResourceBinding = "strict" | "claim" | "confirmation_only" | "evidence_only";
|
|
36
5
|
export declare const subjectFieldTypes: readonly ["money", "ref", "date", "duration", "text", "integer", "percent", "boolean", "enum", "list"];
|
|
37
6
|
export type SubjectFieldType = (typeof subjectFieldTypes)[number];
|
|
38
7
|
//# sourceMappingURL=vocabulary.d.ts.map
|
package/dist/vocabulary.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,eAAO,MAAM,kBAAkB,QAA6B,CAAC;AAE7D,MAAM,MAAM,0BAA0B,GAClC,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,OAAO,GACP,mBAAmB,GACnB,eAAe,CAAC;AAEpB,eAAO,MAAM,iBAAiB,YAC5B,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,CACE,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/vocabulary.js
CHANGED
|
@@ -1,56 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Every closed value set an adapter declaration may use, as runtime arrays
|
|
3
|
-
* with the types derived from them.
|
|
4
|
-
*
|
|
5
|
-
* One source of truth: the exported types below are `(typeof array)[number]`,
|
|
6
|
-
* and `scripts/emit-spec.ts` builds `spec/manifest.schema.json` from the same
|
|
7
|
-
* arrays. A value added here reaches the type checker and the published JSON
|
|
8
|
-
* Schema in the same commit, so the two cannot drift.
|
|
9
|
-
*
|
|
10
|
-
* This module imports nothing, so both `index.ts` and `conformance.ts` can
|
|
11
|
-
* read it without a load-order cycle.
|
|
12
|
-
*/
|
|
1
|
+
/** Closed value sets an adapter declaration may use. This module imports nothing. */
|
|
13
2
|
export const providerKeyPattern = /^[a-z][a-z0-9_.-]{0,79}$/;
|
|
14
|
-
export const providerOperationDirections = [
|
|
15
|
-
"tenant_initiated",
|
|
16
|
-
"system_settlement",
|
|
17
|
-
];
|
|
18
|
-
export const providerResourceBindings = [
|
|
19
|
-
"strict",
|
|
20
|
-
"claim",
|
|
21
|
-
"confirmation_only",
|
|
22
|
-
"evidence_only",
|
|
23
|
-
];
|
|
24
|
-
export const providerEgressModes = ["none", "rest", "sync_clearance"];
|
|
25
|
-
/**
|
|
26
|
-
* How one provider operation carries its outcome:
|
|
27
|
-
*
|
|
28
|
-
* - `http_200_body_status` -- every response is HTTP 200 and the outcome
|
|
29
|
-
* classifies on a body status field, so a rejection can arrive as a
|
|
30
|
-
* status token inside a 200;
|
|
31
|
-
* - `http_status_error_body` -- the outcome rides the HTTP status and a
|
|
32
|
-
* failure carries a thin prose body (`{status, message}`);
|
|
33
|
-
* - `unconfirmed_until_live` -- the provider publishes no error sample at
|
|
34
|
-
* all, so the class is honestly unknown until first live traffic. An
|
|
35
|
-
* adapter must never borrow another provider's class to fill this in.
|
|
36
|
-
*/
|
|
37
|
-
export const providerResponseEnvelopes = [
|
|
38
|
-
"http_200_body_status",
|
|
39
|
-
"http_status_error_body",
|
|
40
|
-
"unconfirmed_until_live",
|
|
41
|
-
];
|
|
42
|
-
export const providerTimestampFields = [
|
|
43
|
-
"activeAt",
|
|
44
|
-
"completedAt",
|
|
45
|
-
"failedAt",
|
|
46
|
-
"returnedAt",
|
|
47
|
-
"receivedAt",
|
|
48
|
-
"clearedAt",
|
|
49
|
-
"expiredAt",
|
|
50
|
-
"voidedAt",
|
|
51
|
-
"postedAt",
|
|
52
|
-
"refundedAt",
|
|
53
|
-
];
|
|
54
3
|
export const subjectFieldTypes = [
|
|
55
4
|
"money",
|
|
56
5
|
"ref",
|
package/dist/vocabulary.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAY7D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,KAAK;IACL,MAAM;IACN,UAAU;IACV,MAAM;IACN,SAAS;IACT,SAAS;IACT,SAAS;IACT,MAAM;IACN,MAAM;CACE,CAAC"}
|
package/docs/authoring-guide.md
CHANGED
|
@@ -11,13 +11,12 @@ key must equal its binding's `operation`. Its `resourceKind` must appear in
|
|
|
11
11
|
`bindings`. Subject requirements describe required authored fields or attachments;
|
|
12
12
|
they never supply an account or choose a party.
|
|
13
13
|
|
|
14
|
-
The [
|
|
14
|
+
The [boundary adapter](../src/boundary-fixture.ts) declares one boundary
|
|
15
15
|
observation operation with no subject requirements. The
|
|
16
16
|
[subject fixture](../conformance/subject-adapter.ts) shows required subject fields.
|
|
17
17
|
|
|
18
|
-
`adapterConformanceFindings` checks the declaration
|
|
19
|
-
|
|
20
|
-
for non-TypeScript authors. Neither check contacts a provider.
|
|
18
|
+
`adapterConformanceFindings` checks the declaration without contacting a
|
|
19
|
+
provider.
|
|
21
20
|
|
|
22
21
|
## Dispatch an instruction
|
|
23
22
|
|
|
@@ -43,10 +42,7 @@ From this package:
|
|
|
43
42
|
|
|
44
43
|
```sh
|
|
45
44
|
bun run conformance -- ./src/boundary-fixture.ts
|
|
46
|
-
bun run spec:emit
|
|
47
45
|
```
|
|
48
46
|
|
|
49
|
-
The conformance command exits 1 when it reports a finding.
|
|
50
|
-
writes the declaration schema and the `BoundaryInstruction` and
|
|
51
|
-
`BoundaryObservation` definitions. Add a case in `conformance/cases.json` when a
|
|
47
|
+
The conformance command exits 1 when it reports a finding. Add a case in `conformance/cases.json` when a
|
|
52
48
|
new declaration rule prevents a concrete failure.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperscale0/adl",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.11",
|
|
4
4
|
"description": "The Adapter Declaration Language: generic evidence, provider declarations and conformance.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adl",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"types": "./dist/boundary-fixture.d.ts",
|
|
35
35
|
"default": "./dist/boundary-fixture.js"
|
|
36
36
|
},
|
|
37
|
-
"./spec/manifest.schema.json": "./spec/manifest.schema.json",
|
|
38
37
|
"./package.json": "./package.json"
|
|
39
38
|
},
|
|
40
39
|
"files": [
|
|
@@ -46,8 +45,7 @@
|
|
|
46
45
|
"SECURITY.md",
|
|
47
46
|
"conformance",
|
|
48
47
|
"dist",
|
|
49
|
-
"docs"
|
|
50
|
-
"spec"
|
|
48
|
+
"docs"
|
|
51
49
|
],
|
|
52
50
|
"engines": {
|
|
53
51
|
"node": ">=20.0.0"
|
|
@@ -57,17 +55,15 @@
|
|
|
57
55
|
},
|
|
58
56
|
"scripts": {
|
|
59
57
|
"build": "tsc -p tsconfig.build.json",
|
|
60
|
-
"check": "bun
|
|
58
|
+
"check": "bun test && tsc -p tsconfig.json",
|
|
61
59
|
"conformance": "bun scripts/conformance.ts",
|
|
62
60
|
"postpack": "bun scripts/pack-exports.ts restore",
|
|
63
61
|
"prepack": "bun run build && bun scripts/pack-exports.ts apply",
|
|
64
|
-
"spec:check": "bun scripts/emit-spec.ts --check",
|
|
65
|
-
"spec:emit": "bun scripts/emit-spec.ts",
|
|
66
62
|
"test": "bun test",
|
|
67
63
|
"typecheck": "tsc -p tsconfig.json"
|
|
68
64
|
},
|
|
69
65
|
"dependencies": {
|
|
70
|
-
"@hyperscale0/udl": "
|
|
66
|
+
"@hyperscale0/udl": "5.0.0",
|
|
71
67
|
"zod": "4.6.5"
|
|
72
68
|
},
|
|
73
69
|
"devDependencies": {
|
|
@@ -80,5 +76,5 @@
|
|
|
80
76
|
"Amir Ayub",
|
|
81
77
|
"Sara AlBakaawi"
|
|
82
78
|
],
|
|
83
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "08d727b912abcec6b6dcf3ed2ec54ec7643e5aa4"
|
|
84
80
|
}
|