@contractspec/lib.contracts 0.0.0-canary-20260119225944 → 0.0.0-canary-20260202053150
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/dist/app-config/{contracts.d.ts → app-config.contracts.d.ts} +52 -52
- package/dist/app-config/{contracts.js → app-config.contracts.js} +1 -1
- package/dist/app-config/lifecycle-contracts.d.ts +55 -55
- package/dist/app-config/runtime.d.ts +4 -4
- package/dist/app-config/spec.d.ts +2 -2
- package/dist/capabilities/capabilities.d.ts +64 -5
- package/dist/capabilities/capabilities.js +125 -0
- package/dist/capabilities/context.d.ts +88 -0
- package/dist/capabilities/context.js +87 -0
- package/dist/capabilities/docs/capabilities.docblock.js +191 -2
- package/dist/capabilities/guards.d.ts +110 -0
- package/dist/capabilities/guards.js +146 -0
- package/dist/capabilities/index.d.ts +4 -1
- package/dist/capabilities/index.js +4 -1
- package/dist/capabilities/validation.d.ts +76 -0
- package/dist/capabilities/validation.js +141 -0
- package/dist/client/react/feature-render.d.ts +2 -2
- package/dist/data-views/data-views.d.ts +2 -1
- package/dist/data-views/index.d.ts +2 -1
- package/dist/data-views/registry.d.ts +1 -1
- package/dist/data-views/report/contractVerificationTable.d.ts +10 -0
- package/dist/data-views/report/contractVerificationTable.js +95 -0
- package/dist/data-views/runtime.d.ts +2 -2
- package/dist/data-views/spec.d.ts +2 -8
- package/dist/data-views/types.d.ts +1 -1
- package/dist/docs/capabilities/documentationSystem.capability.d.ts +7 -0
- package/dist/docs/capabilities/documentationSystem.capability.js +71 -0
- package/dist/docs/capabilities/index.d.ts +2 -0
- package/dist/docs/capabilities/index.js +3 -0
- package/dist/docs/commands/docsGenerate.command.d.ts +95 -0
- package/dist/docs/commands/docsGenerate.command.js +142 -0
- package/dist/docs/commands/docsPublish.command.d.ts +64 -0
- package/dist/docs/commands/docsPublish.command.js +107 -0
- package/dist/docs/commands/index.d.ts +3 -0
- package/dist/docs/commands/index.js +4 -0
- package/dist/docs/constants.d.ts +7 -0
- package/dist/docs/constants.js +10 -0
- package/dist/docs/contracts.d.ts +442 -0
- package/dist/docs/contracts.js +58 -0
- package/dist/docs/ensure-docblocks.d.ts +1 -0
- package/dist/docs/ensure-docblocks.js +1 -0
- package/dist/docs/events/docsGenerated.event.d.ts +62 -0
- package/dist/docs/events/docsGenerated.event.js +53 -0
- package/dist/docs/events/docsPublished.event.d.ts +70 -0
- package/dist/docs/events/docsPublished.event.js +57 -0
- package/dist/docs/events/index.d.ts +3 -0
- package/dist/docs/events/index.js +4 -0
- package/dist/docs/forms/docsSearch.form.d.ts +22 -0
- package/dist/docs/forms/docsSearch.form.js +113 -0
- package/dist/docs/forms/index.d.ts +2 -0
- package/dist/docs/forms/index.js +3 -0
- package/dist/docs/index.d.ts +23 -2
- package/dist/docs/index.js +25 -1
- package/dist/docs/presentations/docsLayout.presentation.d.ts +7 -0
- package/dist/docs/presentations/docsLayout.presentation.js +35 -0
- package/dist/docs/presentations/docsReferencePage.presentation.d.ts +7 -0
- package/dist/docs/presentations/docsReferencePage.presentation.js +35 -0
- package/dist/docs/presentations/index.d.ts +3 -0
- package/dist/docs/presentations/index.js +4 -0
- package/dist/docs/queries/contractReference.query.d.ts +217 -0
- package/dist/docs/queries/contractReference.query.js +125 -0
- package/dist/docs/queries/docsIndex.query.d.ts +272 -0
- package/dist/docs/queries/docsIndex.query.js +133 -0
- package/dist/docs/queries/index.d.ts +3 -0
- package/dist/docs/queries/index.js +4 -0
- package/dist/docs/tech/cli.docblock.js +10 -0
- package/dist/docs/tech/docs-system.docblock.d.ts +1 -0
- package/dist/docs/tech/docs-system.docblock.js +128 -0
- package/dist/docs/tech/report-verification-table.docblock.d.ts +1 -0
- package/dist/docs/tech/report-verification-table.docblock.js +50 -0
- package/dist/docs/views/contractReference.dataView.d.ts +7 -0
- package/dist/docs/views/contractReference.dataView.js +80 -0
- package/dist/docs/views/docsIndex.dataView.d.ts +7 -0
- package/dist/docs/views/docsIndex.dataView.js +136 -0
- package/dist/docs/views/exampleCatalog.dataView.d.ts +7 -0
- package/dist/docs/views/exampleCatalog.dataView.js +91 -0
- package/dist/docs/views/index.d.ts +4 -0
- package/dist/docs/views/index.js +5 -0
- package/dist/events.d.ts +80 -14
- package/dist/events.js +33 -3
- package/dist/examples/schema.d.ts +12 -12
- package/dist/examples/types.d.ts +1 -1
- package/dist/experiments/spec.d.ts +9 -6
- package/dist/features/index.d.ts +2 -2
- package/dist/features/install.d.ts +4 -4
- package/dist/features/types.d.ts +28 -32
- package/dist/forms/forms.d.ts +1 -1
- package/dist/index.d.ts +60 -31
- package/dist/index.js +32 -4
- package/dist/install.d.ts +1 -1
- package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -67
- package/dist/integrations/openbanking/contracts/balances.d.ts +35 -35
- package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -49
- package/dist/integrations/openbanking/models.d.ts +55 -55
- package/dist/integrations/operations.d.ts +103 -103
- package/dist/integrations/spec.d.ts +2 -2
- package/dist/jsonschema.d.ts +1 -1
- package/dist/knowledge/operations.d.ts +67 -67
- package/dist/knowledge/spec.d.ts +1 -1
- package/dist/llm/exporters.d.ts +4 -4
- package/dist/llm/types.d.ts +1 -1
- package/dist/markdown.d.ts +2 -2
- package/dist/operations/index.d.ts +4 -1
- package/dist/operations/index.js +4 -1
- package/dist/operations/operation.d.ts +8 -2
- package/dist/operations/registry.d.ts +1 -1
- package/dist/operations/report/getContractVerificationStatus.d.ts +75 -0
- package/dist/operations/report/getContractVerificationStatus.js +96 -0
- package/dist/operations/report/index.d.ts +13 -0
- package/dist/operations/report/index.js +45 -0
- package/dist/ownership.d.ts +133 -8
- package/dist/ownership.js +25 -0
- package/dist/policy/context.d.ts +237 -0
- package/dist/policy/context.js +227 -0
- package/dist/policy/guards.d.ts +145 -0
- package/dist/policy/guards.js +254 -0
- package/dist/policy/index.d.ts +12 -1
- package/dist/policy/index.js +11 -1
- package/dist/policy/spec.d.ts +7 -4
- package/dist/policy/validation.d.ts +67 -0
- package/dist/policy/validation.js +307 -0
- package/dist/presentations/presentations.d.ts +6 -0
- package/dist/presentations/registry.d.ts +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/serialization/index.d.ts +3 -0
- package/dist/serialization/index.js +3 -0
- package/dist/serialization/serializers.d.ts +40 -0
- package/dist/serialization/serializers.js +148 -0
- package/dist/serialization/types.d.ts +103 -0
- package/dist/serialization/types.js +0 -0
- package/dist/server/rest-elysia.d.ts +1 -1
- package/dist/server/rest-express.d.ts +1 -1
- package/dist/server/rest-generic.d.ts +1 -1
- package/dist/server/rest-next-app.d.ts +1 -1
- package/dist/server/rest-next-mcp.d.ts +1 -1
- package/dist/server/rest-next-pages.d.ts +1 -1
- package/dist/telemetry/spec.d.ts +1 -1
- package/dist/telemetry/tracker.d.ts +3 -2
- package/dist/tests/runner.d.ts +1 -1
- package/dist/tests/spec.d.ts +17 -12
- package/dist/themes.d.ts +8 -5
- package/dist/translations/index.d.ts +6 -0
- package/dist/translations/index.js +5 -0
- package/dist/translations/registry.d.ts +144 -0
- package/dist/translations/registry.js +223 -0
- package/dist/translations/spec.d.ts +126 -0
- package/dist/translations/spec.js +31 -0
- package/dist/translations/validation.d.ts +85 -0
- package/dist/translations/validation.js +328 -0
- package/dist/types.d.ts +142 -16
- package/dist/versioning/index.d.ts +2 -1
- package/dist/versioning/index.js +2 -1
- package/dist/versioning/refs.d.ts +179 -0
- package/dist/versioning/refs.js +161 -0
- package/dist/workflow/context.d.ts +191 -0
- package/dist/workflow/context.js +227 -0
- package/dist/workflow/index.d.ts +6 -3
- package/dist/workflow/index.js +4 -2
- package/dist/workflow/spec.d.ts +4 -11
- package/dist/workflow/validation.d.ts +64 -2
- package/dist/workflow/validation.js +194 -1
- package/dist/workspace-config/contractsrc-schema.d.ts +3 -3
- package/dist/workspace-config/contractsrc-schema.js +1 -0
- package/dist/workspace-config/contractsrc-types.d.ts +7 -8
- package/dist/workspace-config/index.d.ts +2 -2
- package/package.json +52 -9
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { AnyOperationSpec } from "../operations/operation.js";
|
|
2
|
+
import { PresentationSpec } from "../presentations/presentations.js";
|
|
3
|
+
import { CapabilityContext } from "./context.js";
|
|
4
|
+
import { AnyEventSpec } from "../events.js";
|
|
5
|
+
|
|
6
|
+
//#region src/capabilities/guards.d.ts
|
|
7
|
+
|
|
8
|
+
/** Result of a capability guard check. */
|
|
9
|
+
interface CapabilityGuardResult {
|
|
10
|
+
/** Whether the guard passed. */
|
|
11
|
+
allowed: boolean;
|
|
12
|
+
/** Missing capability if guard failed. */
|
|
13
|
+
missingCapability?: {
|
|
14
|
+
key: string;
|
|
15
|
+
version: string;
|
|
16
|
+
};
|
|
17
|
+
/** Reason for denial if guard failed. */
|
|
18
|
+
reason?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if an operation's capability is enabled in the context.
|
|
22
|
+
*
|
|
23
|
+
* @param ctx - Capability context to check against
|
|
24
|
+
* @param operation - Operation spec to check
|
|
25
|
+
* @returns Guard result indicating if operation is allowed
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const result = checkCapabilityForOperation(ctx, myOperation);
|
|
30
|
+
* if (!result.allowed) {
|
|
31
|
+
* console.log('Denied:', result.reason);
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
declare function checkCapabilityForOperation(ctx: CapabilityContext, operation: AnyOperationSpec): CapabilityGuardResult;
|
|
36
|
+
/**
|
|
37
|
+
* Assert that an operation's capability is enabled, throwing if not.
|
|
38
|
+
*
|
|
39
|
+
* @param ctx - Capability context to check against
|
|
40
|
+
* @param operation - Operation spec to check
|
|
41
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // Throws if capability missing
|
|
46
|
+
* assertCapabilityForOperation(ctx, myOperation);
|
|
47
|
+
*
|
|
48
|
+
* // Safe to proceed with operation
|
|
49
|
+
* await handler(input);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare function assertCapabilityForOperation(ctx: CapabilityContext, operation: AnyOperationSpec): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check if an event's capability is enabled in the context.
|
|
55
|
+
*
|
|
56
|
+
* @param ctx - Capability context to check against
|
|
57
|
+
* @param event - Event spec to check
|
|
58
|
+
* @returns Guard result indicating if event is allowed
|
|
59
|
+
*/
|
|
60
|
+
declare function checkCapabilityForEvent(ctx: CapabilityContext, event: AnyEventSpec): CapabilityGuardResult;
|
|
61
|
+
/**
|
|
62
|
+
* Assert that an event's capability is enabled, throwing if not.
|
|
63
|
+
*
|
|
64
|
+
* @param ctx - Capability context to check against
|
|
65
|
+
* @param event - Event spec to check
|
|
66
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
67
|
+
*/
|
|
68
|
+
declare function assertCapabilityForEvent(ctx: CapabilityContext, event: AnyEventSpec): void;
|
|
69
|
+
/**
|
|
70
|
+
* Check if a presentation's capability is enabled in the context.
|
|
71
|
+
*
|
|
72
|
+
* @param ctx - Capability context to check against
|
|
73
|
+
* @param presentation - Presentation spec to check
|
|
74
|
+
* @returns Guard result indicating if presentation is allowed
|
|
75
|
+
*/
|
|
76
|
+
declare function checkCapabilityForPresentation(ctx: CapabilityContext, presentation: PresentationSpec): CapabilityGuardResult;
|
|
77
|
+
/**
|
|
78
|
+
* Assert that a presentation's capability is enabled, throwing if not.
|
|
79
|
+
*
|
|
80
|
+
* @param ctx - Capability context to check against
|
|
81
|
+
* @param presentation - Presentation spec to check
|
|
82
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
83
|
+
*/
|
|
84
|
+
declare function assertCapabilityForPresentation(ctx: CapabilityContext, presentation: PresentationSpec): void;
|
|
85
|
+
/**
|
|
86
|
+
* Filter operations to only those with enabled capabilities.
|
|
87
|
+
*
|
|
88
|
+
* @param ctx - Capability context to check against
|
|
89
|
+
* @param operations - Operations to filter
|
|
90
|
+
* @returns Operations that have their capabilities enabled (or no capability requirement)
|
|
91
|
+
*/
|
|
92
|
+
declare function filterOperationsByCapability(ctx: CapabilityContext, operations: AnyOperationSpec[]): AnyOperationSpec[];
|
|
93
|
+
/**
|
|
94
|
+
* Filter events to only those with enabled capabilities.
|
|
95
|
+
*
|
|
96
|
+
* @param ctx - Capability context to check against
|
|
97
|
+
* @param events - Events to filter
|
|
98
|
+
* @returns Events that have their capabilities enabled (or no capability requirement)
|
|
99
|
+
*/
|
|
100
|
+
declare function filterEventsByCapability(ctx: CapabilityContext, events: AnyEventSpec[]): AnyEventSpec[];
|
|
101
|
+
/**
|
|
102
|
+
* Filter presentations to only those with enabled capabilities.
|
|
103
|
+
*
|
|
104
|
+
* @param ctx - Capability context to check against
|
|
105
|
+
* @param presentations - Presentations to filter
|
|
106
|
+
* @returns Presentations that have their capabilities enabled (or no capability requirement)
|
|
107
|
+
*/
|
|
108
|
+
declare function filterPresentationsByCapability(ctx: CapabilityContext, presentations: PresentationSpec[]): PresentationSpec[];
|
|
109
|
+
//#endregion
|
|
110
|
+
export { CapabilityGuardResult, assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { CapabilityMissingError } from "./context.js";
|
|
2
|
+
|
|
3
|
+
//#region src/capabilities/guards.ts
|
|
4
|
+
/**
|
|
5
|
+
* Check if an operation's capability is enabled in the context.
|
|
6
|
+
*
|
|
7
|
+
* @param ctx - Capability context to check against
|
|
8
|
+
* @param operation - Operation spec to check
|
|
9
|
+
* @returns Guard result indicating if operation is allowed
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const result = checkCapabilityForOperation(ctx, myOperation);
|
|
14
|
+
* if (!result.allowed) {
|
|
15
|
+
* console.log('Denied:', result.reason);
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function checkCapabilityForOperation(ctx, operation) {
|
|
20
|
+
if (!operation.capability) return { allowed: true };
|
|
21
|
+
const { key, version } = operation.capability;
|
|
22
|
+
if (ctx.hasCapability(key, version)) return { allowed: true };
|
|
23
|
+
return {
|
|
24
|
+
allowed: false,
|
|
25
|
+
missingCapability: {
|
|
26
|
+
key,
|
|
27
|
+
version
|
|
28
|
+
},
|
|
29
|
+
reason: `Operation "${operation.meta.key}" requires capability "${key}.v${version}"`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Assert that an operation's capability is enabled, throwing if not.
|
|
34
|
+
*
|
|
35
|
+
* @param ctx - Capability context to check against
|
|
36
|
+
* @param operation - Operation spec to check
|
|
37
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Throws if capability missing
|
|
42
|
+
* assertCapabilityForOperation(ctx, myOperation);
|
|
43
|
+
*
|
|
44
|
+
* // Safe to proceed with operation
|
|
45
|
+
* await handler(input);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
function assertCapabilityForOperation(ctx, operation) {
|
|
49
|
+
const result = checkCapabilityForOperation(ctx, operation);
|
|
50
|
+
if (!result.allowed && result.missingCapability) throw new CapabilityMissingError(result.missingCapability.key, result.missingCapability.version);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if an event's capability is enabled in the context.
|
|
54
|
+
*
|
|
55
|
+
* @param ctx - Capability context to check against
|
|
56
|
+
* @param event - Event spec to check
|
|
57
|
+
* @returns Guard result indicating if event is allowed
|
|
58
|
+
*/
|
|
59
|
+
function checkCapabilityForEvent(ctx, event) {
|
|
60
|
+
if (!event.capability) return { allowed: true };
|
|
61
|
+
const { key, version } = event.capability;
|
|
62
|
+
if (ctx.hasCapability(key, version)) return { allowed: true };
|
|
63
|
+
return {
|
|
64
|
+
allowed: false,
|
|
65
|
+
missingCapability: {
|
|
66
|
+
key,
|
|
67
|
+
version
|
|
68
|
+
},
|
|
69
|
+
reason: `Event "${event.meta.key}" requires capability "${key}.v${version}"`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Assert that an event's capability is enabled, throwing if not.
|
|
74
|
+
*
|
|
75
|
+
* @param ctx - Capability context to check against
|
|
76
|
+
* @param event - Event spec to check
|
|
77
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
78
|
+
*/
|
|
79
|
+
function assertCapabilityForEvent(ctx, event) {
|
|
80
|
+
const result = checkCapabilityForEvent(ctx, event);
|
|
81
|
+
if (!result.allowed && result.missingCapability) throw new CapabilityMissingError(result.missingCapability.key, result.missingCapability.version);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a presentation's capability is enabled in the context.
|
|
85
|
+
*
|
|
86
|
+
* @param ctx - Capability context to check against
|
|
87
|
+
* @param presentation - Presentation spec to check
|
|
88
|
+
* @returns Guard result indicating if presentation is allowed
|
|
89
|
+
*/
|
|
90
|
+
function checkCapabilityForPresentation(ctx, presentation) {
|
|
91
|
+
if (!presentation.capability) return { allowed: true };
|
|
92
|
+
const { key, version } = presentation.capability;
|
|
93
|
+
if (ctx.hasCapability(key, version)) return { allowed: true };
|
|
94
|
+
return {
|
|
95
|
+
allowed: false,
|
|
96
|
+
missingCapability: {
|
|
97
|
+
key,
|
|
98
|
+
version
|
|
99
|
+
},
|
|
100
|
+
reason: `Presentation "${presentation.meta.key}" requires capability "${key}.v${version}"`
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Assert that a presentation's capability is enabled, throwing if not.
|
|
105
|
+
*
|
|
106
|
+
* @param ctx - Capability context to check against
|
|
107
|
+
* @param presentation - Presentation spec to check
|
|
108
|
+
* @throws {CapabilityMissingError} If capability is not enabled
|
|
109
|
+
*/
|
|
110
|
+
function assertCapabilityForPresentation(ctx, presentation) {
|
|
111
|
+
const result = checkCapabilityForPresentation(ctx, presentation);
|
|
112
|
+
if (!result.allowed && result.missingCapability) throw new CapabilityMissingError(result.missingCapability.key, result.missingCapability.version);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Filter operations to only those with enabled capabilities.
|
|
116
|
+
*
|
|
117
|
+
* @param ctx - Capability context to check against
|
|
118
|
+
* @param operations - Operations to filter
|
|
119
|
+
* @returns Operations that have their capabilities enabled (or no capability requirement)
|
|
120
|
+
*/
|
|
121
|
+
function filterOperationsByCapability(ctx, operations) {
|
|
122
|
+
return operations.filter((op) => checkCapabilityForOperation(ctx, op).allowed);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Filter events to only those with enabled capabilities.
|
|
126
|
+
*
|
|
127
|
+
* @param ctx - Capability context to check against
|
|
128
|
+
* @param events - Events to filter
|
|
129
|
+
* @returns Events that have their capabilities enabled (or no capability requirement)
|
|
130
|
+
*/
|
|
131
|
+
function filterEventsByCapability(ctx, events) {
|
|
132
|
+
return events.filter((ev) => checkCapabilityForEvent(ctx, ev).allowed);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Filter presentations to only those with enabled capabilities.
|
|
136
|
+
*
|
|
137
|
+
* @param ctx - Capability context to check against
|
|
138
|
+
* @param presentations - Presentations to filter
|
|
139
|
+
* @returns Presentations that have their capabilities enabled (or no capability requirement)
|
|
140
|
+
*/
|
|
141
|
+
function filterPresentationsByCapability(ctx, presentations) {
|
|
142
|
+
return presentations.filter((pres) => checkCapabilityForPresentation(ctx, pres).allowed);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
export { assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { CapabilityKind, CapabilityMeta, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, capabilityKey, defineCapability } from "./capabilities.js";
|
|
2
|
+
import { CapabilityValidationDeps, CapabilityValidationError, CapabilityValidationResult, findOrphanSpecs, validateCapabilityConsistency } from "./validation.js";
|
|
3
|
+
import { CapabilityContext, CapabilityMissingError, createBypassCapabilityContext, createCapabilityContext, createEmptyCapabilityContext } from "./context.js";
|
|
4
|
+
import { CapabilityGuardResult, assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability } from "./guards.js";
|
|
2
5
|
import { openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities } from "./openbanking.js";
|
|
3
|
-
export { CapabilityKind, CapabilityMeta, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, capabilityKey, defineCapability, openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities };
|
|
6
|
+
export { CapabilityContext, CapabilityGuardResult, CapabilityKind, CapabilityMeta, CapabilityMissingError, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, CapabilityValidationDeps, CapabilityValidationError, CapabilityValidationResult, assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, capabilityKey, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, createBypassCapabilityContext, createCapabilityContext, createEmptyCapabilityContext, defineCapability, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability, findOrphanSpecs, openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities, validateCapabilityConsistency };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { CapabilityRegistry, capabilityKey, defineCapability } from "./capabilities.js";
|
|
2
|
+
import { findOrphanSpecs, validateCapabilityConsistency } from "./validation.js";
|
|
3
|
+
import { CapabilityMissingError, createBypassCapabilityContext, createCapabilityContext, createEmptyCapabilityContext } from "./context.js";
|
|
4
|
+
import { assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability } from "./guards.js";
|
|
2
5
|
import { openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities } from "./openbanking.js";
|
|
3
6
|
|
|
4
|
-
export { CapabilityRegistry, capabilityKey, defineCapability, openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities };
|
|
7
|
+
export { CapabilityMissingError, CapabilityRegistry, assertCapabilityForEvent, assertCapabilityForOperation, assertCapabilityForPresentation, capabilityKey, checkCapabilityForEvent, checkCapabilityForOperation, checkCapabilityForPresentation, createBypassCapabilityContext, createCapabilityContext, createEmptyCapabilityContext, defineCapability, filterEventsByCapability, filterOperationsByCapability, filterPresentationsByCapability, findOrphanSpecs, openBankingAccountsReadCapability, openBankingBalancesReadCapability, openBankingTransactionsReadCapability, registerOpenBankingCapabilities, validateCapabilityConsistency };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { CapabilityRegistry, CapabilitySurface } from "./capabilities.js";
|
|
2
|
+
import { PresentationRegistry } from "../presentations/registry.js";
|
|
3
|
+
import "../presentations/index.js";
|
|
4
|
+
import { OperationSpecRegistry } from "../operations/registry.js";
|
|
5
|
+
import { EventRegistry } from "../events.js";
|
|
6
|
+
|
|
7
|
+
//#region src/capabilities/validation.d.ts
|
|
8
|
+
|
|
9
|
+
/** Single validation error describing an inconsistency. */
|
|
10
|
+
interface CapabilityValidationError {
|
|
11
|
+
/** Type of validation error. */
|
|
12
|
+
type: 'missing_surface_spec' | 'orphan_spec' | 'capability_not_found' | 'surface_not_in_provides';
|
|
13
|
+
/** Human-readable error message. */
|
|
14
|
+
message: string;
|
|
15
|
+
/** Capability key involved (if applicable). */
|
|
16
|
+
capabilityKey?: string;
|
|
17
|
+
/** Surface type involved (if applicable). */
|
|
18
|
+
surface?: CapabilitySurface;
|
|
19
|
+
/** Spec key involved (if applicable). */
|
|
20
|
+
specKey?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Result of capability consistency validation. */
|
|
23
|
+
interface CapabilityValidationResult {
|
|
24
|
+
/** Whether validation passed with no errors. */
|
|
25
|
+
valid: boolean;
|
|
26
|
+
/** List of validation errors found. */
|
|
27
|
+
errors: CapabilityValidationError[];
|
|
28
|
+
/** List of warnings (non-blocking issues). */
|
|
29
|
+
warnings: CapabilityValidationError[];
|
|
30
|
+
}
|
|
31
|
+
/** Registries needed for full bidirectional validation. */
|
|
32
|
+
interface CapabilityValidationDeps {
|
|
33
|
+
capabilities: CapabilityRegistry;
|
|
34
|
+
operations?: OperationSpecRegistry;
|
|
35
|
+
events?: EventRegistry;
|
|
36
|
+
presentations?: PresentationRegistry;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validates bidirectional consistency between capabilities and their surfaces.
|
|
40
|
+
*
|
|
41
|
+
* Checks:
|
|
42
|
+
* 1. Forward validation: Every surface ref in capability `provides` exists
|
|
43
|
+
* 2. Reverse validation: Every spec with `capability` field is in that capability's `provides`
|
|
44
|
+
*
|
|
45
|
+
* @param deps - Registries to validate against
|
|
46
|
+
* @returns Validation result with errors and warnings
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const result = validateCapabilityConsistency({
|
|
51
|
+
* capabilities: capabilityRegistry,
|
|
52
|
+
* operations: operationRegistry,
|
|
53
|
+
* events: eventRegistry,
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* if (!result.valid) {
|
|
57
|
+
* console.error('Capability validation failed:', result.errors);
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
declare function validateCapabilityConsistency(deps: CapabilityValidationDeps): CapabilityValidationResult;
|
|
62
|
+
/**
|
|
63
|
+
* Finds specs that have no capability assignment (orphan specs).
|
|
64
|
+
* This is informational - orphan specs are allowed but may indicate
|
|
65
|
+
* incomplete capability modeling.
|
|
66
|
+
*
|
|
67
|
+
* @param deps - Registries to check
|
|
68
|
+
* @returns List of spec keys without capability assignment
|
|
69
|
+
*/
|
|
70
|
+
declare function findOrphanSpecs(deps: CapabilityValidationDeps): {
|
|
71
|
+
operations: string[];
|
|
72
|
+
events: string[];
|
|
73
|
+
presentations: string[];
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { CapabilityValidationDeps, CapabilityValidationError, CapabilityValidationResult, findOrphanSpecs, validateCapabilityConsistency };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
//#region src/capabilities/validation.ts
|
|
2
|
+
/**
|
|
3
|
+
* Validates bidirectional consistency between capabilities and their surfaces.
|
|
4
|
+
*
|
|
5
|
+
* Checks:
|
|
6
|
+
* 1. Forward validation: Every surface ref in capability `provides` exists
|
|
7
|
+
* 2. Reverse validation: Every spec with `capability` field is in that capability's `provides`
|
|
8
|
+
*
|
|
9
|
+
* @param deps - Registries to validate against
|
|
10
|
+
* @returns Validation result with errors and warnings
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const result = validateCapabilityConsistency({
|
|
15
|
+
* capabilities: capabilityRegistry,
|
|
16
|
+
* operations: operationRegistry,
|
|
17
|
+
* events: eventRegistry,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* if (!result.valid) {
|
|
21
|
+
* console.error('Capability validation failed:', result.errors);
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function validateCapabilityConsistency(deps) {
|
|
26
|
+
const errors = [];
|
|
27
|
+
const warnings = [];
|
|
28
|
+
for (const capability of deps.capabilities.list()) {
|
|
29
|
+
const capKey = `${capability.meta.key}.v${capability.meta.version}`;
|
|
30
|
+
for (const surface of capability.provides ?? []) if (!checkSurfaceExists(deps, surface.surface, surface.key)) errors.push({
|
|
31
|
+
type: "missing_surface_spec",
|
|
32
|
+
message: `Capability "${capKey}" provides ${surface.surface} "${surface.key}" but spec not found`,
|
|
33
|
+
capabilityKey: capKey,
|
|
34
|
+
surface: surface.surface,
|
|
35
|
+
specKey: surface.key
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (deps.operations) {
|
|
39
|
+
for (const op of deps.operations.list()) if (op.capability) {
|
|
40
|
+
const capSpec = deps.capabilities.get(op.capability.key, op.capability.version);
|
|
41
|
+
if (!capSpec) errors.push({
|
|
42
|
+
type: "capability_not_found",
|
|
43
|
+
message: `Operation "${op.meta.key}" references capability "${op.capability.key}.v${op.capability.version}" but capability not found`,
|
|
44
|
+
specKey: op.meta.key,
|
|
45
|
+
capabilityKey: `${op.capability.key}.v${op.capability.version}`,
|
|
46
|
+
surface: "operation"
|
|
47
|
+
});
|
|
48
|
+
else if (!capSpec.provides?.some((p) => p.surface === "operation" && p.key === op.meta.key)) errors.push({
|
|
49
|
+
type: "surface_not_in_provides",
|
|
50
|
+
message: `Operation "${op.meta.key}" claims capability "${op.capability.key}.v${op.capability.version}" but not in capability's provides`,
|
|
51
|
+
specKey: op.meta.key,
|
|
52
|
+
capabilityKey: `${op.capability.key}.v${op.capability.version}`,
|
|
53
|
+
surface: "operation"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (deps.events) {
|
|
58
|
+
for (const event of deps.events.list()) if (event.capability) {
|
|
59
|
+
const capSpec = deps.capabilities.get(event.capability.key, event.capability.version);
|
|
60
|
+
if (!capSpec) errors.push({
|
|
61
|
+
type: "capability_not_found",
|
|
62
|
+
message: `Event "${event.meta.key}" references capability "${event.capability.key}.v${event.capability.version}" but capability not found`,
|
|
63
|
+
specKey: event.meta.key,
|
|
64
|
+
capabilityKey: `${event.capability.key}.v${event.capability.version}`,
|
|
65
|
+
surface: "event"
|
|
66
|
+
});
|
|
67
|
+
else if (!capSpec.provides?.some((p) => p.surface === "event" && p.key === event.meta.key)) errors.push({
|
|
68
|
+
type: "surface_not_in_provides",
|
|
69
|
+
message: `Event "${event.meta.key}" claims capability "${event.capability.key}.v${event.capability.version}" but not in capability's provides`,
|
|
70
|
+
specKey: event.meta.key,
|
|
71
|
+
capabilityKey: `${event.capability.key}.v${event.capability.version}`,
|
|
72
|
+
surface: "event"
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (deps.presentations) {
|
|
77
|
+
for (const pres of deps.presentations.list()) if (pres.capability) {
|
|
78
|
+
const capSpec = deps.capabilities.get(pres.capability.key, pres.capability.version);
|
|
79
|
+
if (!capSpec) errors.push({
|
|
80
|
+
type: "capability_not_found",
|
|
81
|
+
message: `Presentation "${pres.meta.key}" references capability "${pres.capability.key}.v${pres.capability.version}" but capability not found`,
|
|
82
|
+
specKey: pres.meta.key,
|
|
83
|
+
capabilityKey: `${pres.capability.key}.v${pres.capability.version}`,
|
|
84
|
+
surface: "presentation"
|
|
85
|
+
});
|
|
86
|
+
else if (!capSpec.provides?.some((p) => p.surface === "presentation" && p.key === pres.meta.key)) errors.push({
|
|
87
|
+
type: "surface_not_in_provides",
|
|
88
|
+
message: `Presentation "${pres.meta.key}" claims capability "${pres.capability.key}.v${pres.capability.version}" but not in capability's provides`,
|
|
89
|
+
specKey: pres.meta.key,
|
|
90
|
+
capabilityKey: `${pres.capability.key}.v${pres.capability.version}`,
|
|
91
|
+
surface: "presentation"
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
valid: errors.length === 0,
|
|
97
|
+
errors,
|
|
98
|
+
warnings
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if a spec exists for a given surface type and key.
|
|
103
|
+
*/
|
|
104
|
+
function checkSurfaceExists(deps, surface, key) {
|
|
105
|
+
switch (surface) {
|
|
106
|
+
case "operation": return deps.operations?.has(key) ?? true;
|
|
107
|
+
case "event": return deps.events?.has(key) ?? true;
|
|
108
|
+
case "presentation": return deps.presentations?.has(key) ?? true;
|
|
109
|
+
case "workflow":
|
|
110
|
+
case "resource": return true;
|
|
111
|
+
default: return true;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Finds specs that have no capability assignment (orphan specs).
|
|
116
|
+
* This is informational - orphan specs are allowed but may indicate
|
|
117
|
+
* incomplete capability modeling.
|
|
118
|
+
*
|
|
119
|
+
* @param deps - Registries to check
|
|
120
|
+
* @returns List of spec keys without capability assignment
|
|
121
|
+
*/
|
|
122
|
+
function findOrphanSpecs(deps) {
|
|
123
|
+
const result = {
|
|
124
|
+
operations: [],
|
|
125
|
+
events: [],
|
|
126
|
+
presentations: []
|
|
127
|
+
};
|
|
128
|
+
if (deps.operations) {
|
|
129
|
+
for (const op of deps.operations.list()) if (!op.capability) result.operations.push(op.meta.key);
|
|
130
|
+
}
|
|
131
|
+
if (deps.events) {
|
|
132
|
+
for (const event of deps.events.list()) if (!event.capability) result.events.push(event.meta.key);
|
|
133
|
+
}
|
|
134
|
+
if (deps.presentations) {
|
|
135
|
+
for (const pres of deps.presentations.list()) if (!pres.capability) result.presentations.push(pres.meta.key);
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
//#endregion
|
|
141
|
+
export { findOrphanSpecs, validateCapabilityConsistency };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PresentationSpec, PresentationTarget } from "../../presentations/presentations.js";
|
|
2
|
-
import { FeatureModuleSpec } from "../../features/types.js";
|
|
3
|
-
import { FeatureRegistry } from "../../features/registry.js";
|
|
4
2
|
import { ComponentMap, TransformEngine } from "../../presentations/transform-engine.js";
|
|
5
3
|
import "../../presentations/index.js";
|
|
4
|
+
import { FeatureModuleSpec } from "../../features/types.js";
|
|
5
|
+
import { FeatureRegistry } from "../../features/registry.js";
|
|
6
6
|
import "../../features/index.js";
|
|
7
7
|
import React from "react";
|
|
8
8
|
import { BlockConfig } from "@blocknote/core";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DataViewAction, DataViewBaseConfig, DataViewConfig, DataViewDetailConfig, DataViewField, DataViewFieldFormat, DataViewFilter, DataViewGridConfig, DataViewKind, DataViewListConfig, DataViewMeta, DataViewSections, DataViewSource, DataViewStates, DataViewTableColumn, DataViewTableConfig } from "./types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { DataViewSpec, defineDataView } from "./spec.js";
|
|
3
3
|
import { DataViewRegistry, dataViewKey } from "./registry.js";
|
|
4
4
|
import "./index.js";
|
|
5
|
+
import { DataViewRef } from "../features/types.js";
|
|
5
6
|
export { DataViewAction, DataViewBaseConfig, DataViewConfig, DataViewDetailConfig, DataViewField, DataViewFieldFormat, DataViewFilter, DataViewGridConfig, DataViewKind, DataViewListConfig, DataViewMeta, DataViewRef, DataViewRegistry, DataViewSections, DataViewSource, DataViewSpec, DataViewStates, DataViewTableColumn, DataViewTableConfig, dataViewKey, defineDataView };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DataViewAction, DataViewBaseConfig, DataViewConfig, DataViewDetailConfig, DataViewField, DataViewFieldFormat, DataViewFilter, DataViewGridConfig, DataViewKind, DataViewListConfig, DataViewMeta, DataViewSections, DataViewSource, DataViewStates, DataViewTableColumn, DataViewTableConfig } from "./types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { DataViewSpec, defineDataView } from "./spec.js";
|
|
3
3
|
import { DataViewRegistry, dataViewKey } from "./registry.js";
|
|
4
|
+
import { DataViewRef } from "../features/types.js";
|
|
4
5
|
export { type DataViewAction, type DataViewBaseConfig, type DataViewConfig, type DataViewDetailConfig, type DataViewField, type DataViewFieldFormat, type DataViewFilter, type DataViewGridConfig, type DataViewKind, type DataViewListConfig, type DataViewMeta, type DataViewRef, DataViewRegistry, type DataViewSections, type DataViewSource, type DataViewSpec, type DataViewStates, type DataViewTableColumn, type DataViewTableConfig, dataViewKey, defineDataView };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DataViewSpec } from "../spec.js";
|
|
2
|
+
import "../index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/data-views/report/contractVerificationTable.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Data view for the contract verification status table rendered in reports.
|
|
7
|
+
*/
|
|
8
|
+
declare const ContractVerificationTableDataView: DataViewSpec;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ContractVerificationTableDataView };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { StabilityEnum } from "../../ownership.js";
|
|
2
|
+
import { GetContractVerificationStatusQuery } from "../../operations/report/getContractVerificationStatus.js";
|
|
3
|
+
import { defineDataView } from "../spec.js";
|
|
4
|
+
|
|
5
|
+
//#region src/data-views/report/contractVerificationTable.ts
|
|
6
|
+
/**
|
|
7
|
+
* Data view for the contract verification status table rendered in reports.
|
|
8
|
+
*/
|
|
9
|
+
const ContractVerificationTableDataView = defineDataView({
|
|
10
|
+
meta: {
|
|
11
|
+
key: "report.contractVerificationTable",
|
|
12
|
+
title: "Contract Verification Table",
|
|
13
|
+
version: "1.0.0",
|
|
14
|
+
description: "Table view of per-contract verification status for the impact report.",
|
|
15
|
+
domain: "report",
|
|
16
|
+
owners: ["platform.core"],
|
|
17
|
+
tags: [
|
|
18
|
+
"report",
|
|
19
|
+
"data-view",
|
|
20
|
+
"verification"
|
|
21
|
+
],
|
|
22
|
+
stability: StabilityEnum.Experimental,
|
|
23
|
+
entity: "contract-verification"
|
|
24
|
+
},
|
|
25
|
+
source: { primary: {
|
|
26
|
+
key: GetContractVerificationStatusQuery.meta.key,
|
|
27
|
+
version: GetContractVerificationStatusQuery.meta.version
|
|
28
|
+
} },
|
|
29
|
+
view: {
|
|
30
|
+
kind: "table",
|
|
31
|
+
fields: [
|
|
32
|
+
{
|
|
33
|
+
key: "name",
|
|
34
|
+
label: "Contract / Endpoint / Event",
|
|
35
|
+
dataPath: "name"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "timeSinceVerified",
|
|
39
|
+
label: "Time since verified",
|
|
40
|
+
dataPath: "lastVerifiedDate"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
key: "driftMismatches",
|
|
44
|
+
label: "Drift debt",
|
|
45
|
+
dataPath: "driftMismatches",
|
|
46
|
+
format: "number",
|
|
47
|
+
sortable: true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "surfaces",
|
|
51
|
+
label: "Surfaces covered",
|
|
52
|
+
dataPath: "surfaces",
|
|
53
|
+
format: "badge"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
key: "lastVerifiedSha",
|
|
57
|
+
label: "Last verified commit",
|
|
58
|
+
dataPath: "lastVerifiedSha",
|
|
59
|
+
width: "sm"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
primaryField: "name",
|
|
63
|
+
secondaryFields: ["driftMismatches", "timeSinceVerified"],
|
|
64
|
+
columns: [
|
|
65
|
+
{
|
|
66
|
+
field: "name",
|
|
67
|
+
width: "lg"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
field: "lastVerifiedSha",
|
|
71
|
+
width: "sm"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
field: "timeSinceVerified",
|
|
75
|
+
width: "sm"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
field: "surfaces",
|
|
79
|
+
width: "md"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
field: "driftMismatches",
|
|
83
|
+
width: "xs",
|
|
84
|
+
align: "right"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
policy: {
|
|
89
|
+
flags: [],
|
|
90
|
+
pii: []
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
//#endregion
|
|
95
|
+
export { ContractVerificationTableDataView };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { OperationSpecRegistry } from "../operations/registry.js";
|
|
2
|
-
import "../operations/index.js";
|
|
3
1
|
import { DataViewSpec } from "./spec.js";
|
|
4
2
|
import { DataViewRegistry } from "./registry.js";
|
|
5
3
|
import "./index.js";
|
|
4
|
+
import "../operations/index.js";
|
|
6
5
|
import { HandlerCtx } from "../types.js";
|
|
6
|
+
import { OperationSpecRegistry } from "../operations/registry.js";
|
|
7
7
|
|
|
8
8
|
//#region src/data-views/runtime.d.ts
|
|
9
9
|
interface DataViewRuntimeConfig {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ExperimentRef } from "../experiments/spec.js";
|
|
2
2
|
import { DataViewConfig, DataViewMeta, DataViewSource, DataViewStates } from "./types.js";
|
|
3
|
+
import { DataViewRef } from "../features/types.js";
|
|
3
4
|
|
|
4
5
|
//#region src/data-views/spec.d.ts
|
|
5
6
|
|
|
@@ -17,16 +18,9 @@ interface DataViewSpec {
|
|
|
17
18
|
};
|
|
18
19
|
experiments?: ExperimentRef[];
|
|
19
20
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Reference to a data view spec.
|
|
22
|
-
*/
|
|
23
|
-
interface DataViewRef {
|
|
24
|
-
key: string;
|
|
25
|
-
version: string;
|
|
26
|
-
}
|
|
27
21
|
/**
|
|
28
22
|
* Helper to define a data view spec with type safety.
|
|
29
23
|
*/
|
|
30
24
|
declare function defineDataView(spec: DataViewSpec): DataViewSpec;
|
|
31
25
|
//#endregion
|
|
32
|
-
export { DataViewRef, DataViewSpec, defineDataView };
|
|
26
|
+
export { type DataViewRef, DataViewSpec, defineDataView };
|