|
import { getConnectedOutputNodesAndFilterPassThroughs } from "../utils.js"; |
|
export let SERVICE; |
|
const OWNED_PREFIX = "+"; |
|
const REGEX_PREFIX = /^[\+⚠️]\s*/; |
|
const REGEX_EMPTY_INPUT = /^\+\s*$/; |
|
export function stripContextInputPrefixes(name) { |
|
return name.replace(REGEX_PREFIX, ""); |
|
} |
|
export function getContextOutputName(inputName) { |
|
if (inputName === "base_ctx") |
|
return "CONTEXT"; |
|
return stripContextInputPrefixes(inputName).toUpperCase(); |
|
} |
|
export var InputMutationOperation; |
|
(function (InputMutationOperation) { |
|
InputMutationOperation[InputMutationOperation["UNKNOWN"] = 0] = "UNKNOWN"; |
|
InputMutationOperation[InputMutationOperation["ADDED"] = 1] = "ADDED"; |
|
InputMutationOperation[InputMutationOperation["REMOVED"] = 2] = "REMOVED"; |
|
InputMutationOperation[InputMutationOperation["RENAMED"] = 3] = "RENAMED"; |
|
})(InputMutationOperation || (InputMutationOperation = {})); |
|
export class ContextService { |
|
constructor() { |
|
if (SERVICE) { |
|
throw new Error("ContextService was already instantiated."); |
|
} |
|
} |
|
onInputChanges(node, mutation) { |
|
const childCtxs = getConnectedOutputNodesAndFilterPassThroughs(node, node, 0); |
|
for (const childCtx of childCtxs) { |
|
childCtx.handleUpstreamMutation(mutation); |
|
} |
|
} |
|
getDynamicContextInputsData(node) { |
|
return node |
|
.getContextInputsList() |
|
.map((input, index) => ({ |
|
name: stripContextInputPrefixes(input.name), |
|
type: String(input.type), |
|
index, |
|
})) |
|
.filter((i) => i.type !== "*"); |
|
} |
|
getDynamicContextOutputsData(node) { |
|
return node.outputs.map((output, index) => ({ |
|
name: stripContextInputPrefixes(output.name), |
|
type: String(output.type), |
|
index, |
|
})); |
|
} |
|
} |
|
SERVICE = new ContextService(); |
|
|