@beehexa/hexasync-template-engine 2608.21.2 → 2610.3.1
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/capabilityPolicy.d.ts +29 -0
- package/dist/capabilityPolicy.d.ts.map +1 -0
- package/dist/capabilityPolicy.js +46 -0
- package/dist/capabilityPolicy.js.map +1 -0
- package/dist/compositeFlow.d.ts +23 -0
- package/dist/compositeFlow.d.ts.map +1 -0
- package/dist/compositeFlow.js +350 -0
- package/dist/compositeFlow.js.map +1 -0
- package/dist/connectionEditing.d.ts +124 -0
- package/dist/connectionEditing.d.ts.map +1 -0
- package/dist/connectionEditing.js +122 -0
- package/dist/connectionEditing.js.map +1 -0
- package/dist/editDiagnostics.d.ts +80 -0
- package/dist/editDiagnostics.d.ts.map +1 -0
- package/dist/editDiagnostics.js +130 -0
- package/dist/editDiagnostics.js.map +1 -0
- package/dist/extensionRegistry.d.ts +31 -0
- package/dist/extensionRegistry.d.ts.map +1 -0
- package/dist/extensionRegistry.js +48 -0
- package/dist/extensionRegistry.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +414 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +460 -0
- package/dist/layout.js.map +1 -0
- package/dist/nodeExtensions.d.ts +17 -0
- package/dist/nodeExtensions.d.ts.map +1 -0
- package/dist/nodeExtensions.js +39 -0
- package/dist/nodeExtensions.js.map +1 -0
- package/dist/nodeResolution.d.ts +29 -0
- package/dist/nodeResolution.d.ts.map +1 -0
- package/dist/nodeResolution.js +77 -0
- package/dist/nodeResolution.js.map +1 -0
- package/dist/presentationOverlay.d.ts +29 -0
- package/dist/presentationOverlay.d.ts.map +1 -0
- package/dist/presentationOverlay.js +128 -0
- package/dist/presentationOverlay.js.map +1 -0
- package/dist/presentationReconciliation.d.ts +59 -0
- package/dist/presentationReconciliation.d.ts.map +1 -0
- package/dist/presentationReconciliation.js +54 -0
- package/dist/presentationReconciliation.js.map +1 -0
- package/dist/presentationStorage.d.ts +168 -0
- package/dist/presentationStorage.d.ts.map +1 -0
- package/dist/presentationStorage.js +405 -0
- package/dist/presentationStorage.js.map +1 -0
- package/dist/semanticTransactions.d.ts +107 -0
- package/dist/semanticTransactions.d.ts.map +1 -0
- package/dist/semanticTransactions.js +86 -0
- package/dist/semanticTransactions.js.map +1 -0
- package/dist/stepFormEditing.d.ts +47 -0
- package/dist/stepFormEditing.d.ts.map +1 -0
- package/dist/stepFormEditing.js +259 -0
- package/dist/stepFormEditing.js.map +1 -0
- package/dist/themeStyles.d.ts +26 -0
- package/dist/themeStyles.d.ts.map +1 -0
- package/dist/themeStyles.js +71 -0
- package/dist/themeStyles.js.map +1 -0
- package/dist/visualResources.d.ts +30 -0
- package/dist/visualResources.d.ts.map +1 -0
- package/dist/visualResources.js +89 -0
- package/dist/visualResources.js.map +1 -0
- package/dist/vnextFlow.d.ts +57 -0
- package/dist/vnextFlow.d.ts.map +1 -0
- package/dist/vnextFlow.js +333 -0
- package/dist/vnextFlow.js.map +1 -0
- package/package.json +16 -12
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Commands are authorized by the narrow capability they require, never by a broad editable state. */
|
|
2
|
+
export declare const CAPABILITY_KEYS: readonly ['semanticEdit', 'presentationEdit', 'formEdit', 'connectionEdit', 'executionOverlay'];
|
|
3
|
+
export type CapabilityKey = (typeof CAPABILITY_KEYS)[number];
|
|
4
|
+
export type CommandPolicy = Readonly<Partial<Record<CapabilityKey, boolean>>>;
|
|
5
|
+
export interface CapabilityCommand {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly requiredCapability: CapabilityKey;
|
|
8
|
+
}
|
|
9
|
+
export type CommandEvaluationPhase = 'expose' | 'invoke';
|
|
10
|
+
export type CommandSourceKind = 'step-workflow' | 'relationship-projection';
|
|
11
|
+
export interface CommandEvaluationInput {
|
|
12
|
+
readonly policy: CommandPolicy;
|
|
13
|
+
readonly command: CapabilityCommand;
|
|
14
|
+
readonly phase: CommandEvaluationPhase;
|
|
15
|
+
readonly sourceKind: CommandSourceKind;
|
|
16
|
+
}
|
|
17
|
+
export type CommandDecision = Readonly<{
|
|
18
|
+
allowed: boolean;
|
|
19
|
+
commandId: string;
|
|
20
|
+
requiredCapability: CapabilityKey;
|
|
21
|
+
reason?: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Uses one decision contract for advisory command discovery and mandatory invocation checks.
|
|
25
|
+
* The phase cannot weaken authorization, so the same input produces the same verdict and denial reason at either
|
|
26
|
+
* boundary. This function only evaluates values and never mutates graph or presentation state.
|
|
27
|
+
*/
|
|
28
|
+
export declare const evaluateCommand: (input: CommandEvaluationInput) => CommandDecision;
|
|
29
|
+
//# sourceMappingURL=capabilityPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilityPolicy.d.ts","sourceRoot":"","sources":["../src/capabilityPolicy.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,eAAO,MAAM,eAAe,YAC1B,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,CACV,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;CAC5C;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,yBAAyB,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,aAAa,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAeH;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAW,sBAAsB,KAAG,eAiC/D,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Commands are authorized by the narrow capability they require, never by a broad editable state. */
|
|
2
|
+
export const CAPABILITY_KEYS = [
|
|
3
|
+
'semanticEdit',
|
|
4
|
+
'presentationEdit',
|
|
5
|
+
'formEdit',
|
|
6
|
+
'connectionEdit',
|
|
7
|
+
'executionOverlay',
|
|
8
|
+
];
|
|
9
|
+
const RELATIONSHIP_EDIT_CAPABILITIES = new Set([
|
|
10
|
+
'semanticEdit',
|
|
11
|
+
'formEdit',
|
|
12
|
+
'connectionEdit',
|
|
13
|
+
]);
|
|
14
|
+
const denied = (command, reason) => ({
|
|
15
|
+
allowed: false,
|
|
16
|
+
commandId: command.id,
|
|
17
|
+
requiredCapability: command.requiredCapability,
|
|
18
|
+
reason,
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Uses one decision contract for advisory command discovery and mandatory invocation checks.
|
|
22
|
+
* The phase cannot weaken authorization, so the same input produces the same verdict and denial reason at either
|
|
23
|
+
* boundary. This function only evaluates values and never mutates graph or presentation state.
|
|
24
|
+
*/
|
|
25
|
+
export const evaluateCommand = (input) => {
|
|
26
|
+
const { command, phase, policy, sourceKind } = input;
|
|
27
|
+
if (sourceKind !== 'step-workflow' && sourceKind !== 'relationship-projection') {
|
|
28
|
+
return denied(command, `Unknown command source kind: "${String(sourceKind)}".`);
|
|
29
|
+
}
|
|
30
|
+
if (phase !== 'expose' && phase !== 'invoke') {
|
|
31
|
+
return denied(command, `Unknown command evaluation phase: "${String(phase)}".`);
|
|
32
|
+
}
|
|
33
|
+
if (sourceKind === 'relationship-projection' &&
|
|
34
|
+
RELATIONSHIP_EDIT_CAPABILITIES.has(command.requiredCapability)) {
|
|
35
|
+
return denied(command, `Relationship projections are explore-only; ${command.requiredCapability} commands are not available.`);
|
|
36
|
+
}
|
|
37
|
+
if (policy[command.requiredCapability] !== true) {
|
|
38
|
+
return denied(command, `Command "${command.id}" requires ${command.requiredCapability}, but that capability is not enabled.`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
allowed: true,
|
|
42
|
+
commandId: command.id,
|
|
43
|
+
requiredCapability: command.requiredCapability,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=capabilityPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilityPolicy.js","sourceRoot":"","sources":["../src/capabilityPolicy.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,gBAAgB;IAChB,kBAAkB;CACV,CAAC;AA2BX,MAAM,8BAA8B,GAA+B,IAAI,GAAG,CAAC;IACzE,cAAc;IACd,UAAU;IACV,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,OAA0B,EAAE,MAAc,EAAmB,EAAE,CAAC,CAAC;IAC/E,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,OAAO,CAAC,EAAE;IACrB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;IAC9C,MAAM;CACP,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA6B,EAAmB,EAAE;IAChF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErD,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,KAAK,yBAAyB,EAAE,CAAC;QAC/E,OAAO,MAAM,CAAC,OAAO,EAAE,iCAAiC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,OAAO,EAAE,sCAAsC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,IACE,UAAU,KAAK,yBAAyB;QACxC,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAC9D,CAAC;QACD,OAAO,MAAM,CACX,OAAO,EACP,8CAA8C,OAAO,CAAC,kBAAkB,8BAA8B,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CACX,OAAO,EACP,YAAY,OAAO,CAAC,EAAE,cAAc,OAAO,CAAC,kBAAkB,uCAAuC,CACtG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type CanonicalNode, type WorkflowGraph } from '@beehexa/hexasync-template-model';
|
|
2
|
+
import { type VnextStepMetadata } from './vnextFlow.js';
|
|
3
|
+
export interface CompositeSource {
|
|
4
|
+
readonly sourceId: string;
|
|
5
|
+
readonly lane: string;
|
|
6
|
+
readonly dialect: string;
|
|
7
|
+
readonly collection?: string;
|
|
8
|
+
readonly document?: Readonly<Record<string, unknown>>;
|
|
9
|
+
readonly metadata?: readonly VnextStepMetadata[];
|
|
10
|
+
readonly projection?: Readonly<Record<string, unknown>>;
|
|
11
|
+
}
|
|
12
|
+
export interface CompileCompositeWorkflowGraphInput {
|
|
13
|
+
readonly sources: readonly CompositeSource[];
|
|
14
|
+
}
|
|
15
|
+
export interface CompositeCanonicalNode extends CanonicalNode {
|
|
16
|
+
readonly registrationKey: string;
|
|
17
|
+
readonly lane: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CompositeWorkflowGraph extends WorkflowGraph {
|
|
20
|
+
readonly nodes: readonly CompositeCanonicalNode[];
|
|
21
|
+
}
|
|
22
|
+
export declare function compileCompositeWorkflowGraph(input: CompileCompositeWorkflowGraphInput): CompositeWorkflowGraph;
|
|
23
|
+
//# sourceMappingURL=compositeFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositeFlow.d.ts","sourceRoot":"","sources":["../src/compositeFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EAEe,KAAK,aAAa,EACC,KAAK,aAAa,EAC1D,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD;AACD,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AACD,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD;AA0MD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kCAAkC,GACxC,sBAAsB,CAsHxB"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { CANONICAL_GRAPH_SCHEMA_VERSION, compileWorkflowGraph, genericWorkflowAdapter, } from '@beehexa/hexasync-template-model';
|
|
2
|
+
import { compileWorkerWorkflowGraph } from '@beehexa/hexasync-template-worker-flow';
|
|
3
|
+
import { compileFrontendWorkflowGraph } from '@beehexa/hexasync-template-frontend-flow';
|
|
4
|
+
import { compileVnextWorkflowGraph } from './vnextFlow.js';
|
|
5
|
+
const recordOf = (value) => typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
6
|
+
? value
|
|
7
|
+
: undefined;
|
|
8
|
+
const textOf = (value) => typeof value === 'string' && value.trim() !== '' ? value : undefined;
|
|
9
|
+
const qualify = (sourceId, id) => `s${sourceId.length}:${sourceId}|s${id.length}:${id}`;
|
|
10
|
+
const fingerprint = (sources) => {
|
|
11
|
+
let hash = 2166136261;
|
|
12
|
+
const pending = [sources];
|
|
13
|
+
const seen = new WeakSet();
|
|
14
|
+
const write = (value) => {
|
|
15
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
16
|
+
hash ^= value.charCodeAt(index);
|
|
17
|
+
hash = Math.imul(hash, 16777619);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
while (pending.length) {
|
|
21
|
+
const current = pending.pop();
|
|
22
|
+
if (Array.isArray(current)) {
|
|
23
|
+
if (seen.has(current)) {
|
|
24
|
+
write('[cycle]');
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
seen.add(current);
|
|
28
|
+
write(`array:${current.length};`);
|
|
29
|
+
for (let index = current.length - 1; index >= 0; index -= 1)
|
|
30
|
+
pending.push(current[index]);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const record = recordOf(current);
|
|
34
|
+
if (record) {
|
|
35
|
+
if (seen.has(record)) {
|
|
36
|
+
write('{cycle}');
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
seen.add(record);
|
|
40
|
+
const keys = Object.keys(record).sort();
|
|
41
|
+
write(`object:${keys.length};`);
|
|
42
|
+
for (let index = keys.length - 1; index >= 0; index -= 1) {
|
|
43
|
+
const key = keys[index];
|
|
44
|
+
pending.push(record[key]);
|
|
45
|
+
pending.push(`key:${key}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else
|
|
49
|
+
write(`${typeof current}:${String(current)};`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return `fnv1a32:${(hash >>> 0).toString(16).padStart(8, '0')}`;
|
|
53
|
+
};
|
|
54
|
+
const relationshipGraph = (source) => {
|
|
55
|
+
const projection = source.projection ?? {};
|
|
56
|
+
const rawNodes = Array.isArray(projection.nodes) ? projection.nodes : [];
|
|
57
|
+
const nodes = [];
|
|
58
|
+
const ports = [];
|
|
59
|
+
const byIdentity = new Map();
|
|
60
|
+
const diagnostics = [];
|
|
61
|
+
rawNodes.forEach((raw, rawIndex) => {
|
|
62
|
+
const item = recordOf(raw);
|
|
63
|
+
const identity = textOf(item?.id);
|
|
64
|
+
if (!item || !identity)
|
|
65
|
+
return;
|
|
66
|
+
if (byIdentity.has(identity)) {
|
|
67
|
+
diagnostics.push({
|
|
68
|
+
code: 'DUPLICATE_PROJECTION_IDENTITY', severity: 'error', phase: 'compile',
|
|
69
|
+
message: 'Projection node identity must be unique.',
|
|
70
|
+
source: { adapterId: 'profile-relationships', adapterVersion: '1', path: `$.nodes[${rawIndex}].id`, derived: false },
|
|
71
|
+
details: { sourceIdentity: identity }, recoverable: true,
|
|
72
|
+
});
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const provider = textOf(item.provider) ?? 'task';
|
|
76
|
+
const id = `relationship|s${source.sourceId.length}:${source.sourceId}|node|s${identity.length}:${identity}`;
|
|
77
|
+
const provenance = [{ adapterId: 'profile-relationships', adapterVersion: '1', path: `$.nodes[${rawIndex}]`, derived: false }];
|
|
78
|
+
const node = {
|
|
79
|
+
id, sourceIdentity: identity, sourceAddress: `nodes[${identity}]`,
|
|
80
|
+
stepRef: { dialect: source.dialect, provider },
|
|
81
|
+
container: { documentId: source.sourceId, workflowId: source.sourceId, scope: 'projection' },
|
|
82
|
+
kind: 'task', displayType: provider, source: item,
|
|
83
|
+
ports: [
|
|
84
|
+
{ id: id + '|input', nodeId: id, direction: 'input', kind: 'input', provenance },
|
|
85
|
+
{ id: id + '|output', nodeId: id, direction: 'output', kind: 'relationship', provenance },
|
|
86
|
+
],
|
|
87
|
+
provenance, capabilities: { semanticEdit: false, presentationEdit: true },
|
|
88
|
+
};
|
|
89
|
+
nodes.push(node);
|
|
90
|
+
ports.push(...node.ports);
|
|
91
|
+
byIdentity.set(identity, node);
|
|
92
|
+
});
|
|
93
|
+
const routes = [];
|
|
94
|
+
const edges = [];
|
|
95
|
+
const relationships = Array.isArray(projection.relationships) ? projection.relationships : [];
|
|
96
|
+
relationships.forEach((raw, index) => {
|
|
97
|
+
const item = recordOf(raw);
|
|
98
|
+
const sourceIdentity = textOf(item?.source);
|
|
99
|
+
const targetIdentity = textOf(item?.target);
|
|
100
|
+
const origin = sourceIdentity ? byIdentity.get(sourceIdentity) : undefined;
|
|
101
|
+
if (!item || !targetIdentity)
|
|
102
|
+
return;
|
|
103
|
+
if (!origin) {
|
|
104
|
+
diagnostics.push({
|
|
105
|
+
code: 'MISSING_RELATIONSHIP_SOURCE', severity: 'error', phase: 'compile',
|
|
106
|
+
message: 'Relationship source does not exist.',
|
|
107
|
+
source: { adapterId: 'profile-relationships', adapterVersion: '1', path: `$.relationships[${index}].source`, derived: false },
|
|
108
|
+
details: { sourceIdentity }, recoverable: true,
|
|
109
|
+
});
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const provenance = [{ adapterId: 'profile-relationships', adapterVersion: '1', path: `$.relationships[${index}]`, derived: false }];
|
|
113
|
+
routes.push({
|
|
114
|
+
id: origin.id + '|route|' + index, sourceNodeId: origin.id,
|
|
115
|
+
sourcePortId: origin.ports[1].id, kind: textOf(item.kind) ?? 'relationship',
|
|
116
|
+
targetIdentity, provenance,
|
|
117
|
+
});
|
|
118
|
+
const target = byIdentity.get(targetIdentity);
|
|
119
|
+
if (target)
|
|
120
|
+
edges.push({
|
|
121
|
+
id: origin.id + '|edge|' + index,
|
|
122
|
+
source: { nodeId: origin.id, portId: origin.ports[1].id },
|
|
123
|
+
target: { nodeId: target.id, portId: target.ports[0].id },
|
|
124
|
+
kind: textOf(item.kind) ?? 'relationship', provenance,
|
|
125
|
+
capabilities: { reconnect: false, delete: false },
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
schemaVersion: CANONICAL_GRAPH_SCHEMA_VERSION, graphId: `relationship::${source.sourceId}`,
|
|
130
|
+
dialect: source.dialect, sourceFingerprint: fingerprint([source]), nodes, ports, routes, edges,
|
|
131
|
+
capabilities: { semanticEdit: false, presentationEdit: true },
|
|
132
|
+
provenance: [{ adapterId: 'profile-relationships', adapterVersion: '1', path: '$', derived: false }],
|
|
133
|
+
diagnostics,
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
const invalidSourceGraph = (sourceValue, code, message) => {
|
|
137
|
+
const graphId = `invalid::${sourceValue.sourceId}`;
|
|
138
|
+
const pointer = { adapterId: 'composite', adapterVersion: '1', path: '$', derived: false };
|
|
139
|
+
const rootId = `${graphId}|source`;
|
|
140
|
+
const stubId = `${graphId}|exception|${code}`;
|
|
141
|
+
const rootPorts = [
|
|
142
|
+
{ id: rootId + '|input', nodeId: rootId, direction: 'input', kind: 'input', provenance: [pointer] },
|
|
143
|
+
{ id: rootId + '|output', nodeId: rootId, direction: 'output', kind: 'exception', provenance: [pointer] },
|
|
144
|
+
];
|
|
145
|
+
const stubPorts = [
|
|
146
|
+
{ id: stubId + '|input', nodeId: stubId, direction: 'input', kind: 'input', provenance: [pointer] },
|
|
147
|
+
{ id: stubId + '|output', nodeId: stubId, direction: 'output', kind: 'exception', provenance: [pointer] },
|
|
148
|
+
];
|
|
149
|
+
const capabilities = { semanticEdit: false, presentationEdit: true };
|
|
150
|
+
const container = { documentId: sourceValue.sourceId, workflowId: sourceValue.sourceId, scope: 'top-level' };
|
|
151
|
+
const nodes = [
|
|
152
|
+
{
|
|
153
|
+
id: rootId, sourceIdentity: sourceValue.sourceId, sourceAddress: '$',
|
|
154
|
+
stepRef: { dialect: sourceValue.dialect, provider: 'invalid-source' },
|
|
155
|
+
container, kind: 'unknown', displayType: 'INVALID_SOURCE', source: {},
|
|
156
|
+
ports: rootPorts, provenance: [pointer], capabilities,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
id: stubId, sourceIdentity: code, sourceAddress: '$.exception',
|
|
160
|
+
stepRef: { dialect: sourceValue.dialect, provider: 'exception' },
|
|
161
|
+
container, kind: 'exception', displayType: 'EXCEPTION', source: {},
|
|
162
|
+
ports: stubPorts, provenance: [pointer], capabilities,
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
const route = {
|
|
166
|
+
id: rootId + '|route|exception', sourceNodeId: rootId, sourcePortId: rootPorts[1].id,
|
|
167
|
+
kind: 'exception', targetIdentity: code, provenance: [pointer],
|
|
168
|
+
};
|
|
169
|
+
return {
|
|
170
|
+
schemaVersion: CANONICAL_GRAPH_SCHEMA_VERSION, graphId, dialect: sourceValue.dialect,
|
|
171
|
+
sourceFingerprint: fingerprint([sourceValue]), nodes, ports: [...rootPorts, ...stubPorts],
|
|
172
|
+
routes: [route], edges: [{
|
|
173
|
+
id: route.id + '|edge', source: { nodeId: rootId, portId: rootPorts[1].id },
|
|
174
|
+
target: { nodeId: stubId, portId: stubPorts[0].id }, kind: 'exception',
|
|
175
|
+
provenance: [pointer], capabilities: { reconnect: false, delete: false },
|
|
176
|
+
}],
|
|
177
|
+
capabilities, provenance: [pointer], diagnostics: [{
|
|
178
|
+
code, severity: 'error', phase: 'compile', graphId, elementId: stubId, message,
|
|
179
|
+
source: pointer, recoverable: true,
|
|
180
|
+
}],
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
const compileSource = (source) => {
|
|
184
|
+
if (source.dialect === 'profile-relationships/v1') {
|
|
185
|
+
return source.projection
|
|
186
|
+
? relationshipGraph(source)
|
|
187
|
+
: invalidSourceGraph(source, 'INVALID_RELATIONSHIP_SOURCE', 'Relationship projection is required.');
|
|
188
|
+
}
|
|
189
|
+
if (source.projection) {
|
|
190
|
+
return invalidSourceGraph(source, 'DIALECT_SOURCE_MISMATCH', 'Projection input is not valid for this dialect.');
|
|
191
|
+
}
|
|
192
|
+
const document = source.document ?? {};
|
|
193
|
+
if (source.dialect === 'worker/v1') {
|
|
194
|
+
if (source.collection !== 'pullers' && source.collection !== 'pushers') {
|
|
195
|
+
return invalidSourceGraph(source, 'INVALID_WORKER_COLLECTION', 'Worker collection is invalid.');
|
|
196
|
+
}
|
|
197
|
+
return compileWorkerWorkflowGraph({
|
|
198
|
+
collection: source.collection,
|
|
199
|
+
component: document,
|
|
200
|
+
componentId: document.id,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (source.dialect === 'frontend/v1') {
|
|
204
|
+
if (source.collection !== 'connectors' && source.collection !== 'templates') {
|
|
205
|
+
return invalidSourceGraph(source, 'INVALID_FRONTEND_COLLECTION', 'Frontend collection is invalid.');
|
|
206
|
+
}
|
|
207
|
+
return compileFrontendWorkflowGraph({
|
|
208
|
+
collection: source.collection,
|
|
209
|
+
document,
|
|
210
|
+
documentId: document.id,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (source.dialect === 'vnext/v1')
|
|
214
|
+
return compileVnextWorkflowGraph({
|
|
215
|
+
workflow: document, metadata: source.metadata ?? [],
|
|
216
|
+
});
|
|
217
|
+
if (source.dialect === 'generic/v1')
|
|
218
|
+
return compileWorkflowGraph(document, genericWorkflowAdapter({
|
|
219
|
+
adapterId: 'generic', adapterVersion: '1', dialect: source.dialect,
|
|
220
|
+
capabilities: { semanticEdit: true, presentationEdit: true },
|
|
221
|
+
}));
|
|
222
|
+
return invalidSourceGraph(source, 'UNSUPPORTED_COMPOSITE_DIALECT', 'Composite source dialect is unsupported.');
|
|
223
|
+
};
|
|
224
|
+
export function compileCompositeWorkflowGraph(input) {
|
|
225
|
+
const graphId = `composite|${fingerprint(input.sources)}`;
|
|
226
|
+
const nodes = [];
|
|
227
|
+
const ports = [];
|
|
228
|
+
const routes = [];
|
|
229
|
+
const edges = [];
|
|
230
|
+
const diagnostics = [];
|
|
231
|
+
const provenance = [];
|
|
232
|
+
const resolvedRouteIds = new Set();
|
|
233
|
+
const routeSourceIds = new Map();
|
|
234
|
+
const sourceIds = new Set();
|
|
235
|
+
for (let sourceIndex = 0; sourceIndex < input.sources.length; sourceIndex += 1) {
|
|
236
|
+
const source = input.sources[sourceIndex];
|
|
237
|
+
if (sourceIds.has(source.sourceId)) {
|
|
238
|
+
diagnostics.push({
|
|
239
|
+
code: 'DUPLICATE_COMPOSITE_SOURCE_ID', severity: 'error', phase: 'compile',
|
|
240
|
+
graphId, message: 'Composite source identity must be unique.',
|
|
241
|
+
source: { adapterId: 'composite', adapterVersion: '1', path: `$.sources[${sourceIndex}].sourceId`, derived: false },
|
|
242
|
+
details: { sourceId: source.sourceId }, recoverable: true,
|
|
243
|
+
});
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
sourceIds.add(source.sourceId);
|
|
247
|
+
const graph = compileSource(source);
|
|
248
|
+
provenance.push(...graph.provenance);
|
|
249
|
+
const idMap = new Map(graph.nodes.map((node) => [node.id, qualify(source.sourceId, node.id)]));
|
|
250
|
+
const portMap = new Map(graph.ports.map((port) => [port.id, qualify(source.sourceId, port.id)]));
|
|
251
|
+
for (const node of graph.nodes)
|
|
252
|
+
nodes.push({
|
|
253
|
+
...node, id: idMap.get(node.id), lane: source.lane,
|
|
254
|
+
registrationKey: `${node.stepRef.dialect}::${node.stepRef.provider}`,
|
|
255
|
+
ports: node.ports.map((port) => ({
|
|
256
|
+
...port, id: portMap.get(port.id), nodeId: idMap.get(port.nodeId),
|
|
257
|
+
})),
|
|
258
|
+
});
|
|
259
|
+
for (const port of graph.ports)
|
|
260
|
+
ports.push({
|
|
261
|
+
...port, id: portMap.get(port.id), nodeId: idMap.get(port.nodeId),
|
|
262
|
+
});
|
|
263
|
+
for (const route of graph.routes) {
|
|
264
|
+
const id = qualify(source.sourceId, route.id);
|
|
265
|
+
routeSourceIds.set(id, source.sourceId);
|
|
266
|
+
routes.push({
|
|
267
|
+
...route, id,
|
|
268
|
+
sourceNodeId: idMap.get(route.sourceNodeId), sourcePortId: portMap.get(route.sourcePortId),
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
for (const edge of graph.edges)
|
|
272
|
+
edges.push({
|
|
273
|
+
...edge, id: qualify(source.sourceId, edge.id),
|
|
274
|
+
source: { nodeId: idMap.get(edge.source.nodeId), portId: portMap.get(edge.source.portId) },
|
|
275
|
+
target: { nodeId: idMap.get(edge.target.nodeId), portId: portMap.get(edge.target.portId) },
|
|
276
|
+
});
|
|
277
|
+
const childByIdentity = new Map(graph.nodes.map((node) => [node.sourceIdentity, node]));
|
|
278
|
+
const childEdgeKeys = new Set(graph.edges.map((edge) => `${edge.source.nodeId}\0${edge.source.portId}\0${edge.target.nodeId}\0${edge.provenance[0]?.path ?? ''}`));
|
|
279
|
+
for (const route of graph.routes) {
|
|
280
|
+
const target = route.targetIdentity === undefined ? undefined : childByIdentity.get(route.targetIdentity);
|
|
281
|
+
const edgeKey = target === undefined ? undefined
|
|
282
|
+
: `${route.sourceNodeId}\0${route.sourcePortId}\0${target.id}\0${route.provenance[0]?.path ?? ''}`;
|
|
283
|
+
if (edgeKey !== undefined && childEdgeKeys.has(edgeKey)) {
|
|
284
|
+
resolvedRouteIds.add(qualify(source.sourceId, route.id));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
diagnostics.push(...graph.diagnostics.map((entry) => ({
|
|
288
|
+
...entry, graphId,
|
|
289
|
+
details: { ...entry.details, sourceId: source.sourceId, childGraphId: graph.graphId },
|
|
290
|
+
...(entry.elementId === undefined ? {} : { elementId: idMap.get(entry.elementId) ?? qualify(source.sourceId, entry.elementId) }),
|
|
291
|
+
})));
|
|
292
|
+
}
|
|
293
|
+
const nodeById = new Map(nodes.map((node) => [node.id, node]));
|
|
294
|
+
const stubById = new Map();
|
|
295
|
+
const missingDiagnosticByKey = new Map(diagnostics
|
|
296
|
+
.filter((entry) => entry.code === 'MISSING_ROUTE_TARGET')
|
|
297
|
+
.map((entry) => [`${entry.details?.sourceId ?? ''}\0${entry.source.path}`, entry]));
|
|
298
|
+
for (const route of routes) {
|
|
299
|
+
if (resolvedRouteIds.has(route.id))
|
|
300
|
+
continue;
|
|
301
|
+
const origin = nodeById.get(route.sourceNodeId);
|
|
302
|
+
if (!origin || !route.targetIdentity)
|
|
303
|
+
continue;
|
|
304
|
+
const stubId = `${origin.id}|exception|${route.targetIdentity.length}:${route.targetIdentity}`;
|
|
305
|
+
let stub = stubById.get(stubId) ?? nodeById.get(stubId);
|
|
306
|
+
if (!stub) {
|
|
307
|
+
const provenance = route.provenance;
|
|
308
|
+
const inputPort = { id: stubId + '|input', nodeId: stubId, direction: 'input', kind: 'input', provenance };
|
|
309
|
+
const outputPort = { id: stubId + '|output', nodeId: stubId, direction: 'output', kind: 'exception', provenance };
|
|
310
|
+
stub = {
|
|
311
|
+
id: stubId, sourceIdentity: route.targetIdentity, sourceAddress: `missing[${route.targetIdentity}]`,
|
|
312
|
+
stepRef: { dialect: origin.stepRef.dialect, provider: 'exception' },
|
|
313
|
+
container: origin.container, kind: 'exception', displayType: 'EXCEPTION', source: {},
|
|
314
|
+
ports: [inputPort, outputPort], provenance,
|
|
315
|
+
capabilities: { semanticEdit: false, presentationEdit: true },
|
|
316
|
+
registrationKey: `${origin.stepRef.dialect}::exception`, lane: origin.lane,
|
|
317
|
+
};
|
|
318
|
+
nodes.push(stub);
|
|
319
|
+
ports.push(inputPort, outputPort);
|
|
320
|
+
nodeById.set(stub.id, stub);
|
|
321
|
+
stubById.set(stub.id, stub);
|
|
322
|
+
}
|
|
323
|
+
const targetPort = stub.ports[0];
|
|
324
|
+
edges.push({
|
|
325
|
+
id: route.id + '|edge|exception', source: { nodeId: route.sourceNodeId, portId: route.sourcePortId },
|
|
326
|
+
target: { nodeId: stub.id, portId: targetPort.id }, kind: route.kind,
|
|
327
|
+
provenance: route.provenance, capabilities: { reconnect: false, delete: false },
|
|
328
|
+
});
|
|
329
|
+
const sourceId = routeSourceIds.get(route.id);
|
|
330
|
+
const existing = missingDiagnosticByKey.get(`${sourceId ?? ''}\0${route.provenance[0]?.path ?? ''}`);
|
|
331
|
+
if (existing)
|
|
332
|
+
diagnostics.splice(diagnostics.indexOf(existing), 1);
|
|
333
|
+
diagnostics.push({
|
|
334
|
+
code: 'MISSING_ROUTE_TARGET', severity: 'error', phase: 'compile',
|
|
335
|
+
graphId, elementId: stub.id, message: 'Route target does not exist.',
|
|
336
|
+
source: route.provenance[0], details: {
|
|
337
|
+
targetIdentity: route.targetIdentity,
|
|
338
|
+
...(sourceId === undefined ? {} : { sourceId }),
|
|
339
|
+
},
|
|
340
|
+
causeCode: 'TARGET_NOT_FOUND', recoverable: true,
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
schemaVersion: CANONICAL_GRAPH_SCHEMA_VERSION, graphId, dialect: 'composite/v1',
|
|
345
|
+
sourceFingerprint: fingerprint(input.sources), nodes, ports, routes, edges,
|
|
346
|
+
capabilities: { semanticEdit: false, presentationEdit: true },
|
|
347
|
+
provenance, diagnostics,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=compositeFlow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositeFlow.js","sourceRoot":"","sources":["../src/compositeFlow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { CommandPolicy, CommandSourceKind } from './capabilityPolicy.js';
|
|
2
|
+
export interface SourcePosition {
|
|
3
|
+
readonly line: number;
|
|
4
|
+
readonly character: number;
|
|
5
|
+
}
|
|
6
|
+
export interface SourceRange {
|
|
7
|
+
readonly uri: string;
|
|
8
|
+
readonly start: SourcePosition;
|
|
9
|
+
readonly end: SourcePosition;
|
|
10
|
+
}
|
|
11
|
+
export interface ConnectionTarget {
|
|
12
|
+
readonly targetNodeId: string;
|
|
13
|
+
readonly targetPortId: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ConnectionRoute extends ConnectionTarget {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly sourceNodeId: string;
|
|
18
|
+
readonly sourcePortId: string;
|
|
19
|
+
readonly ownerDialect: string;
|
|
20
|
+
readonly routeFamily: string;
|
|
21
|
+
readonly routeKey: string;
|
|
22
|
+
readonly sourcePath: string;
|
|
23
|
+
readonly sourceRange: SourceRange;
|
|
24
|
+
}
|
|
25
|
+
export type PreservationFeature = 'comments' | 'aliases' | 'scalarStyle' | 'ordering' | 'unknownFields';
|
|
26
|
+
export interface ConnectionDiagnostic {
|
|
27
|
+
readonly code: string;
|
|
28
|
+
readonly severity: 'error';
|
|
29
|
+
readonly message: string;
|
|
30
|
+
readonly routeId?: string;
|
|
31
|
+
readonly sourceRange?: SourceRange;
|
|
32
|
+
readonly expectedRevision?: string | number;
|
|
33
|
+
readonly actualRevision?: string | number;
|
|
34
|
+
readonly lost?: readonly PreservationFeature[];
|
|
35
|
+
}
|
|
36
|
+
export interface ReconnectPreview {
|
|
37
|
+
readonly status: 'valid' | 'invalid' | 'read-only';
|
|
38
|
+
readonly canCommit: boolean;
|
|
39
|
+
readonly revision: string | number;
|
|
40
|
+
readonly routeKey: string;
|
|
41
|
+
readonly route: ConnectionRoute;
|
|
42
|
+
readonly candidate: ConnectionTarget;
|
|
43
|
+
readonly diagnostics: readonly ConnectionDiagnostic[];
|
|
44
|
+
}
|
|
45
|
+
export interface ConnectionReconnectIntent extends ConnectionTarget {
|
|
46
|
+
readonly kind: 'connection.reconnect';
|
|
47
|
+
readonly revision: string | number;
|
|
48
|
+
readonly routeId: string;
|
|
49
|
+
readonly routeKey: string;
|
|
50
|
+
readonly sourceNodeId: string;
|
|
51
|
+
readonly ownerDialect: string;
|
|
52
|
+
readonly routeFamily: string;
|
|
53
|
+
readonly sourcePath: string;
|
|
54
|
+
}
|
|
55
|
+
export interface SourcePatch {
|
|
56
|
+
readonly kind: string;
|
|
57
|
+
readonly path: string;
|
|
58
|
+
readonly value: string;
|
|
59
|
+
}
|
|
60
|
+
export interface AcceptedConnectionPatch {
|
|
61
|
+
readonly status: 'accepted';
|
|
62
|
+
readonly revision: string | number;
|
|
63
|
+
readonly sourcePatch: SourcePatch;
|
|
64
|
+
readonly source: string;
|
|
65
|
+
readonly diagnostics: readonly ConnectionDiagnostic[];
|
|
66
|
+
}
|
|
67
|
+
export interface RejectedConnectionPatch {
|
|
68
|
+
readonly status: 'rejected';
|
|
69
|
+
readonly diagnostics: readonly ConnectionDiagnostic[];
|
|
70
|
+
}
|
|
71
|
+
export type ConnectionAdapterResult = AcceptedConnectionPatch | RejectedConnectionPatch;
|
|
72
|
+
export interface ConnectionPatchAdapter<Graph = unknown> {
|
|
73
|
+
applyConnectionIntent(intent: ConnectionReconnectIntent): ConnectionAdapterResult;
|
|
74
|
+
validateAcceptedSource(result: AcceptedConnectionPatch): YamlPatchValidationResult;
|
|
75
|
+
reproject(source: string): Graph;
|
|
76
|
+
}
|
|
77
|
+
export interface PreviewReconnectInput {
|
|
78
|
+
readonly sourceKind: CommandSourceKind;
|
|
79
|
+
readonly capabilities: CommandPolicy;
|
|
80
|
+
readonly revision: string | number;
|
|
81
|
+
readonly route: ConnectionRoute;
|
|
82
|
+
readonly candidate: ConnectionTarget;
|
|
83
|
+
readonly knownNodeIds: readonly string[];
|
|
84
|
+
readonly knownPortIds: readonly string[];
|
|
85
|
+
readonly compatibleTargetPortIds: readonly string[];
|
|
86
|
+
readonly routeKeys: readonly string[];
|
|
87
|
+
}
|
|
88
|
+
export declare function previewReconnect(input: PreviewReconnectInput): ReconnectPreview;
|
|
89
|
+
export interface CommitReconnectInput<Graph = unknown> {
|
|
90
|
+
readonly preview: ReconnectPreview;
|
|
91
|
+
readonly expectedRevision: string | number;
|
|
92
|
+
readonly expectedAcceptedRevision?: string | number;
|
|
93
|
+
readonly adapter: ConnectionPatchAdapter<Graph>;
|
|
94
|
+
}
|
|
95
|
+
export type CommitReconnectResult<Graph = unknown> = RejectedConnectionPatch | (AcceptedConnectionPatch & {
|
|
96
|
+
readonly graph: Graph;
|
|
97
|
+
});
|
|
98
|
+
export declare function commitReconnect<Graph>(input: CommitReconnectInput<Graph>): CommitReconnectResult<Graph>;
|
|
99
|
+
export type PreservationEvidence = Readonly<Record<PreservationFeature, boolean>>;
|
|
100
|
+
export interface CompilerResult {
|
|
101
|
+
readonly ok: boolean;
|
|
102
|
+
readonly observedValue?: unknown;
|
|
103
|
+
readonly routes?: readonly unknown[];
|
|
104
|
+
readonly diagnostics?: readonly ConnectionDiagnostic[];
|
|
105
|
+
}
|
|
106
|
+
export interface ValidateYamlSemanticPatchInput {
|
|
107
|
+
readonly source: string;
|
|
108
|
+
readonly patch: SourcePatch;
|
|
109
|
+
readonly preservation: PreservationEvidence;
|
|
110
|
+
readonly compile: (source: string) => CompilerResult;
|
|
111
|
+
}
|
|
112
|
+
export type YamlPatchValidationResult = Readonly<{
|
|
113
|
+
readonly status: 'accepted';
|
|
114
|
+
readonly saveAllowed: true;
|
|
115
|
+
readonly source: string;
|
|
116
|
+
readonly compiledRoutes: readonly unknown[];
|
|
117
|
+
readonly diagnostics: readonly ConnectionDiagnostic[];
|
|
118
|
+
} | {
|
|
119
|
+
readonly status: 'blocked';
|
|
120
|
+
readonly saveAllowed: false;
|
|
121
|
+
readonly diagnostics: readonly ConnectionDiagnostic[];
|
|
122
|
+
}>;
|
|
123
|
+
export declare function validateYamlSemanticPatch(input: ValidateYamlSemanticPatchInput): YamlPatchValidationResult;
|
|
124
|
+
//# sourceMappingURL=connectionEditing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectionEditing.d.ts","sourceRoot":"","sources":["../src/connectionEditing.ts"],"names":[],"mappings":"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"}
|