{"version":3,"sources":["jsdelivr-header.js","/npm/sequential-workflow-machine@0.7.1/lib/esm/index.js"],"names":[],"mappings":"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","file":"/npm/sequential-workflow-machine@0.7.1/lib/esm/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/sequential-workflow-machine@0.7.1/lib/esm/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { InterpreterStatus, interpret, State, createMachine } from 'xstate';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\n\nconst STATE_INTERRUPTED_ID = 'INTERRUPTED';\r\nconst STATE_INTERRUPTED_TARGET = `#${STATE_INTERRUPTED_ID}`;\r\nconst STATE_FINISHED_ID = 'FINISHED';\r\nconst STATE_FINISHED_TARGET = `#${STATE_FINISHED_ID}`;\r\nconst STATE_FAILED_ID = 'FAILED';\r\nconst STATE_FAILED_TARGET = `#${STATE_FAILED_ID}`;\n\nclass ActivityStateProvider {\r\n    constructor(step, init) {\r\n        this.step = step;\r\n        this.init = init;\r\n    }\r\n    get(context, nodeId) {\r\n        let activityState = context.activityStates[nodeId];\r\n        if (!activityState) {\r\n            activityState = this.init(this.step, context.globalState);\r\n            context.activityStates[nodeId] = activityState;\r\n        }\r\n        return activityState;\r\n    }\r\n}\n\nclass MachineUnhandledError extends Error {\r\n    constructor(message, cause, stepId) {\r\n        super(message);\r\n        this.cause = cause;\r\n        this.stepId = stepId;\r\n    }\r\n}\n\nconst STATE_STEP_ID_PREFIX = 'STEP_';\r\nconst STATE_BRANCH_ID_PREFIX = 'BRANCH_';\r\nfunction getStepNodeId(stepId) {\r\n    return STATE_STEP_ID_PREFIX + stepId;\r\n}\r\nfunction getBranchNodeId(stepId, branchName) {\r\n    return STATE_BRANCH_ID_PREFIX + stepId + '_' + branchName;\r\n}\n\nfunction readMetaPath(meta) {\r\n    const path = meta.src.type;\r\n    let start = path.lastIndexOf(STATE_STEP_ID_PREFIX);\r\n    if (start < 0) {\r\n        return null;\r\n    }\r\n    start += STATE_STEP_ID_PREFIX.length;\r\n    let end = path.indexOf('.', start);\r\n    if (end < 0) {\r\n        end = path.indexOf(':', start);\r\n    }\r\n    return end < 0 ? path.substring(start) : path.substring(start, end);\r\n}\n\nfunction catchUnhandledError(callback) {\r\n    return (context, event, meta) => __awaiter(this, void 0, void 0, function* () {\r\n        try {\r\n            yield callback(context, event, meta);\r\n        }\r\n        catch (e) {\r\n            const message = e instanceof Error ? e.message : String(e);\r\n            const stepId = readMetaPath(meta);\r\n            context.unhandledError = new MachineUnhandledError(message, e, stepId);\r\n            throw e;\r\n        }\r\n    });\r\n}\n\nfunction isInterruptResult(result) {\r\n    return typeof result === 'object' && result.interrupt === true;\r\n}\r\nfunction interrupt() {\r\n    return { interrupt: true };\r\n}\n\nclass AtomActivityNodeBuilder {\r\n    constructor(config) {\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget) {\r\n        const activityStateProvider = new ActivityStateProvider(step, this.config.init);\r\n        const nodeId = getStepNodeId(step.id);\r\n        return {\r\n            id: nodeId,\r\n            invoke: {\r\n                src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                    const activityState = activityStateProvider.get(context, nodeId);\r\n                    const result = yield this.config.handler(step, context.globalState, activityState);\r\n                    if (isInterruptResult(result)) {\r\n                        context.interrupted = nodeId;\r\n                        return;\r\n                    }\r\n                })),\r\n                onDone: [\r\n                    {\r\n                        target: STATE_INTERRUPTED_TARGET,\r\n                        cond: (context) => Boolean(context.interrupted)\r\n                    },\r\n                    {\r\n                        target: nextNodeTarget\r\n                    }\r\n                ],\r\n                onError: STATE_FAILED_TARGET\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createAtomActivity(stepType, config) {\r\n    return {\r\n        stepType: stepType,\r\n        nodeBuilderFactory: () => new AtomActivityNodeBuilder(config)\r\n    };\r\n}\r\nfunction createAtomActivityFromHandler(stepType, handler) {\r\n    return createAtomActivity(stepType, {\r\n        init: () => ({}),\r\n        handler\r\n    });\r\n}\n\nconst stackKey = 'loopStack';\r\nfunction getLoopStack(buildingContext) {\r\n    let stack = buildingContext[stackKey];\r\n    if (!stack) {\r\n        stack = new LoopStack();\r\n        buildingContext[stackKey] = stack;\r\n    }\r\n    return stack;\r\n}\r\nclass LoopStack {\r\n    constructor() {\r\n        this.stack = [];\r\n    }\r\n    push(name, leaveNodeTarget) {\r\n        if (this.stack.some(item => item.name === name)) {\r\n            throw new Error(`Loop with name \"${name}\" is already used in the stack`);\r\n        }\r\n        this.stack.push({\r\n            name,\r\n            leaveNodeTarget\r\n        });\r\n    }\r\n    pop() {\r\n        this.stack.pop();\r\n    }\r\n    getCurrentName() {\r\n        const item = this.stack[this.stack.length - 1];\r\n        return item ? item.name : null;\r\n    }\r\n    getNodeTarget(nameOrIndex) {\r\n        let item;\r\n        if (typeof nameOrIndex === 'number') {\r\n            if (nameOrIndex !== -1) {\r\n                throw new Error(`Index ${nameOrIndex} is not supported`);\r\n            }\r\n            item = this.stack[this.stack.length - 1];\r\n            if (!item) {\r\n                throw new Error('Cannot find any parent loop');\r\n            }\r\n        }\r\n        else {\r\n            item = this.stack.find(item => item.name === nameOrIndex);\r\n            if (!item) {\r\n                throw new Error(`Loop \"${nameOrIndex}\" not found`);\r\n            }\r\n        }\r\n        return item.leaveNodeTarget;\r\n    }\r\n}\n\nclass ActivitySet {\r\n    constructor(activities) {\r\n        this.activities = activities;\r\n    }\r\n    get(stepType) {\r\n        const provider = this.activities.get(stepType);\r\n        if (!provider) {\r\n            throw new Error(`Cannot find activity for step type: ${stepType}`);\r\n        }\r\n        return provider;\r\n    }\r\n    getTypes() {\r\n        return Array.from(this.activities.keys());\r\n    }\r\n}\r\nfunction createActivitySet(activities) {\r\n    const map = new Map();\r\n    for (const activity of activities) {\r\n        if (map.has(activity.stepType)) {\r\n            throw new Error(`Duplicate step type: ${activity.stepType}`);\r\n        }\r\n        map.set(activity.stepType, activity);\r\n    }\r\n    return new ActivitySet(map);\r\n}\n\nclass ActivityNodeBuilderResolver {\r\n    constructor(activitiesSet, sequenceNodeBuilder) {\r\n        this.activitiesSet = activitiesSet;\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n        this.builders = new Map();\r\n    }\r\n    resolve(stepType) {\r\n        let builder = this.builders.get(stepType);\r\n        if (builder) {\r\n            return builder;\r\n        }\r\n        const activity = this.activitiesSet.get(stepType);\r\n        builder = activity.nodeBuilderFactory(this.sequenceNodeBuilder);\r\n        this.builders.set(stepType, builder);\r\n        return builder;\r\n    }\r\n}\n\nclass SequenceNodeBuilder {\r\n    constructor(activitySet) {\r\n        this.activitySet = activitySet;\r\n        this.resolver = new ActivityNodeBuilderResolver(this.activitySet, this);\r\n    }\r\n    build(buildingContext, sequence, nextNodeTarget) {\r\n        if (sequence.length === 0) {\r\n            return {\r\n                invoke: {\r\n                    src: () => Promise.resolve(),\r\n                    onDone: { target: nextNodeTarget }\r\n                }\r\n            };\r\n        }\r\n        const states = {};\r\n        for (let index = 0; index < sequence.length; index++) {\r\n            const step = sequence[index];\r\n            const nodeId = getStepNodeId(step.id);\r\n            const nextStep = sequence[index + 1];\r\n            let itemNextTarget;\r\n            if (nextStep) {\r\n                const nextNodeId = getStepNodeId(nextStep.id);\r\n                itemNextTarget = `#${nextNodeId}`;\r\n            }\r\n            else {\r\n                itemNextTarget = nextNodeTarget;\r\n            }\r\n            const nodeBuilder = this.resolver.resolve(step.type);\r\n            states[nodeId] = nodeBuilder.build(step, itemNextTarget, buildingContext);\r\n        }\r\n        const firstNodeId = Object.keys(states)[0];\r\n        return {\r\n            initial: firstNodeId,\r\n            states\r\n        };\r\n    }\r\n}\n\nfunction branchName(branchName) {\r\n    return { branchName };\r\n}\r\nfunction isBranchNameResult(result) {\r\n    return typeof result === 'object' && Boolean(result.branchName);\r\n}\n\nfunction isSkipResult(result) {\r\n    return typeof result === 'object' && result.skip === true;\r\n}\r\nfunction skip() {\r\n    return { skip: true };\r\n}\n\nfunction isBreakResult(result) {\r\n    return typeof result === 'object' && result.break;\r\n}\r\nfunction break_() {\r\n    return { break: true };\r\n}\n\nclass BreakActivityNodeBuilder {\r\n    constructor(config) {\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget, buildingContext) {\r\n        const activityStateProvider = new ActivityStateProvider(step, (s, g) => {\r\n            return {\r\n                activityState: this.config.init(s, g)\r\n            };\r\n        });\r\n        const nodeId = getStepNodeId(step.id);\r\n        const loopNameOrIndex = this.config.loopName(step);\r\n        const leaveNodeTarget = getLoopStack(buildingContext).getNodeTarget(loopNameOrIndex);\r\n        return {\r\n            id: nodeId,\r\n            invoke: {\r\n                src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                    const internalState = activityStateProvider.get(context, nodeId);\r\n                    const result = yield this.config.handler(step, context.globalState, internalState.activityState);\r\n                    if (isInterruptResult(result)) {\r\n                        context.interrupted = nodeId;\r\n                        return;\r\n                    }\r\n                    internalState.break = isBreakResult(result);\r\n                })),\r\n                onDone: [\r\n                    {\r\n                        target: STATE_INTERRUPTED_TARGET,\r\n                        cond: (context) => Boolean(context.interrupted)\r\n                    },\r\n                    {\r\n                        target: leaveNodeTarget,\r\n                        cond: (context) => {\r\n                            const internalState = activityStateProvider.get(context, nodeId);\r\n                            return Boolean(internalState.break);\r\n                        }\r\n                    },\r\n                    {\r\n                        target: nextNodeTarget\r\n                    }\r\n                ],\r\n                onError: STATE_FAILED_TARGET\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createBreakActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: () => new BreakActivityNodeBuilder(config)\r\n    };\r\n}\n\nclass ContainerActivityNodeBuilder {\r\n    constructor(sequenceNodeBuilder, config) {\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget, buildingContext) {\r\n        const activityStateProvider = new ActivityStateProvider(step, this.config.init);\r\n        const nodeId = getStepNodeId(step.id);\r\n        const enterNodeId = `ENTER.${nodeId}`;\r\n        const leaveNodeId = `LEAVE.${nodeId}`;\r\n        const leaveNodeTarget = `#${leaveNodeId}`;\r\n        const createState = (id, handle, nextStateNodeTarget) => {\r\n            return {\r\n                id,\r\n                invoke: {\r\n                    src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                        if (handle) {\r\n                            const activityState = activityStateProvider.get(context, nodeId);\r\n                            const result = yield handle(step, context.globalState, activityState);\r\n                            if (isInterruptResult(result)) {\r\n                                context.interrupted = nodeId;\r\n                                return;\r\n                            }\r\n                        }\r\n                    })),\r\n                    onDone: [\r\n                        {\r\n                            target: STATE_INTERRUPTED_TARGET,\r\n                            cond: (context) => Boolean(context.interrupted)\r\n                        },\r\n                        {\r\n                            target: nextStateNodeTarget\r\n                        }\r\n                    ],\r\n                    onError: STATE_FAILED_TARGET\r\n                }\r\n            };\r\n        };\r\n        return {\r\n            id: nodeId,\r\n            initial: 'ENTER',\r\n            states: {\r\n                ENTER: createState(enterNodeId, this.config.onEnter, 'SEQUENCE'),\r\n                SEQUENCE: this.sequenceNodeBuilder.build(buildingContext, step.sequence, leaveNodeTarget),\r\n                LEAVE: createState(leaveNodeId, this.config.onLeave, nextNodeTarget)\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createContainerActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: sequenceNodeBuilder => new ContainerActivityNodeBuilder(sequenceNodeBuilder, config)\r\n    };\r\n}\n\nclass ForkActivityNodeBuilder {\r\n    constructor(sequenceNodeBuilder, config) {\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget, buildingContext) {\r\n        const activityStateProvider = new ActivityStateProvider(step, (s, g) => {\r\n            return {\r\n                activityState: this.config.init(s, g)\r\n            };\r\n        });\r\n        const nodeId = getStepNodeId(step.id);\r\n        const branchNames = Object.keys(step.branches);\r\n        const states = {};\r\n        for (const branchName of branchNames) {\r\n            const branchNodeId = getBranchNodeId(step.id, branchName);\r\n            states[branchNodeId] = this.sequenceNodeBuilder.build(buildingContext, step.branches[branchName], nextNodeTarget);\r\n        }\r\n        const CONDITION = {\r\n            invoke: {\r\n                src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                    const internalState = activityStateProvider.get(context, nodeId);\r\n                    const result = yield this.config.handler(step, context.globalState, internalState.activityState);\r\n                    if (isInterruptResult(result)) {\r\n                        context.interrupted = nodeId;\r\n                        return;\r\n                    }\r\n                    if (isBranchNameResult(result)) {\r\n                        if (!branchNames.includes(result.branchName)) {\r\n                            throw new Error(`Branch ${result.branchName} does not exist`);\r\n                        }\r\n                        internalState.targetBranchName = result.branchName;\r\n                        internalState.skipped = undefined;\r\n                        return;\r\n                    }\r\n                    if (isSkipResult(result)) {\r\n                        internalState.targetBranchName = undefined;\r\n                        internalState.skipped = true;\r\n                        return;\r\n                    }\r\n                    throw new Error('Not supported result for conditional activity');\r\n                })),\r\n                onDone: [\r\n                    {\r\n                        target: STATE_INTERRUPTED_TARGET,\r\n                        cond: (context) => Boolean(context.interrupted)\r\n                    },\r\n                    {\r\n                        target: nextNodeTarget,\r\n                        cond: (context) => {\r\n                            const activityState = activityStateProvider.get(context, nodeId);\r\n                            return Boolean(activityState.skipped);\r\n                        }\r\n                    },\r\n                    ...branchNames.map(branchName => {\r\n                        return {\r\n                            target: getBranchNodeId(step.id, branchName),\r\n                            cond: (context) => {\r\n                                const activityState = activityStateProvider.get(context, nodeId);\r\n                                return activityState.targetBranchName === branchName;\r\n                            }\r\n                        };\r\n                    })\r\n                ],\r\n                onError: STATE_FAILED_TARGET\r\n            }\r\n        };\r\n        return {\r\n            id: nodeId,\r\n            initial: 'CONDITION',\r\n            states: Object.assign({ CONDITION }, states)\r\n        };\r\n    }\r\n}\n\nfunction createForkActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: sequenceNodeBuilder => new ForkActivityNodeBuilder(sequenceNodeBuilder, config)\r\n    };\r\n}\n\nclass InterruptionActivityNodeBuilder {\r\n    constructor(config) {\r\n        this.config = config;\r\n    }\r\n    build(step) {\r\n        const nodeId = getStepNodeId(step.id);\r\n        return {\r\n            id: nodeId,\r\n            invoke: {\r\n                src: catchUnhandledError((context) => this.config.handler(step, context.globalState)),\r\n                onDone: [\r\n                    {\r\n                        target: STATE_INTERRUPTED_TARGET\r\n                    }\r\n                ],\r\n                onError: STATE_FAILED_TARGET\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createInterruptionActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: () => new InterruptionActivityNodeBuilder(config)\r\n    };\r\n}\n\nclass LoopActivityNodeBuilder {\r\n    constructor(sequenceNodeBuilder, config) {\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget, buildingContext) {\r\n        const activityStateProvider = new ActivityStateProvider(step, (s, g) => ({\r\n            activityState: this.config.init(s, g)\r\n        }));\r\n        const nodeId = getStepNodeId(step.id);\r\n        const conditionNodeId = `CONDITION.${nodeId}`;\r\n        const conditionNodeTarget = `#${conditionNodeId}`;\r\n        const leaveNodeId = `LEAVE.${nodeId}`;\r\n        const leaveNodeTarget = `#${leaveNodeId}`;\r\n        const loopName = this.config.loopName(step);\r\n        const loopStack = getLoopStack(buildingContext);\r\n        loopStack.push(loopName, leaveNodeTarget);\r\n        const LOOP = this.sequenceNodeBuilder.build(buildingContext, step.sequence, conditionNodeTarget);\r\n        loopStack.pop();\r\n        return {\r\n            id: nodeId,\r\n            initial: 'ENTER',\r\n            states: {\r\n                ENTER: {\r\n                    invoke: {\r\n                        src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                            if (this.config.onEnter) {\r\n                                const internalState = activityStateProvider.get(context, nodeId);\r\n                                const promise = this.config.onEnter(step, context.globalState, internalState.activityState);\r\n                                if (promise) {\r\n                                    yield promise;\r\n                                }\r\n                            }\r\n                        })),\r\n                        onDone: 'CONDITION',\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                },\r\n                CONDITION: {\r\n                    id: conditionNodeId,\r\n                    invoke: {\r\n                        src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                            const internalState = activityStateProvider.get(context, nodeId);\r\n                            const result = yield this.config.condition(step, context.globalState, internalState.activityState);\r\n                            if (isInterruptResult(result)) {\r\n                                context.interrupted = nodeId;\r\n                                return;\r\n                            }\r\n                            internalState.continue = result;\r\n                        })),\r\n                        onDone: [\r\n                            {\r\n                                target: STATE_INTERRUPTED_TARGET,\r\n                                cond: (context) => Boolean(context.interrupted)\r\n                            },\r\n                            {\r\n                                target: 'LOOP',\r\n                                cond: (context) => {\r\n                                    const activityState = activityStateProvider.get(context, nodeId);\r\n                                    return Boolean(activityState.continue);\r\n                                }\r\n                            },\r\n                            {\r\n                                target: 'LEAVE'\r\n                            }\r\n                        ],\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                },\r\n                LOOP,\r\n                LEAVE: {\r\n                    id: leaveNodeId,\r\n                    invoke: {\r\n                        src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                            if (this.config.onLeave) {\r\n                                const internalState = activityStateProvider.get(context, nodeId);\r\n                                const promise = this.config.onLeave(step, context.globalState, internalState.activityState);\r\n                                if (promise) {\r\n                                    yield promise;\r\n                                }\r\n                            }\r\n                        })),\r\n                        onDone: nextNodeTarget,\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createLoopActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: sequenceNodeBuilder => new LoopActivityNodeBuilder(sequenceNodeBuilder, config)\r\n    };\r\n}\n\nclass ParallelActivityNodeBuilder {\r\n    constructor(sequenceNodeBuilder, config) {\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget, buildingContext) {\r\n        const activityStateProvider = new ActivityStateProvider(step, (s, g) => ({ activityState: this.config.init(s, g) }));\r\n        const nodeId = getStepNodeId(step.id);\r\n        const branchNames = Object.keys(step.branches);\r\n        const states = {};\r\n        for (const branchName of branchNames) {\r\n            const branchNodeId = getBranchNodeId(step.id, branchName);\r\n            const leaveNodeId = branchNodeId + '_LEAVE';\r\n            const leaveNodeTarget = '#' + leaveNodeId;\r\n            states[branchNodeId] = {\r\n                initial: 'TRY_LEAVE',\r\n                states: {\r\n                    TRY_LEAVE: {\r\n                        invoke: {\r\n                            src: catchUnhandledError(() => __awaiter(this, void 0, void 0, function* () {\r\n                                // TODO: emit on enter?\r\n                            })),\r\n                            onDone: [\r\n                                {\r\n                                    target: 'SEQUENCE',\r\n                                    cond: (context) => {\r\n                                        var _a, _b;\r\n                                        const activityState = activityStateProvider.get(context, nodeId);\r\n                                        return (_b = (_a = activityState.branchNames) === null || _a === void 0 ? void 0 : _a.includes(branchName)) !== null && _b !== void 0 ? _b : false;\r\n                                    }\r\n                                },\r\n                                {\r\n                                    target: 'LEAVE'\r\n                                }\r\n                            ],\r\n                            onError: STATE_FAILED_TARGET\r\n                        }\r\n                    },\r\n                    SEQUENCE: this.sequenceNodeBuilder.build(buildingContext, step.branches[branchName], leaveNodeTarget),\r\n                    LEAVE: {\r\n                        id: leaveNodeId,\r\n                        type: 'final'\r\n                    }\r\n                }\r\n            };\r\n        }\r\n        const CONDITION = {\r\n            invoke: {\r\n                src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                    const internalState = activityStateProvider.get(context, nodeId);\r\n                    const result = yield this.config.handler(step, context.globalState, internalState.activityState);\r\n                    if (isInterruptResult(result)) {\r\n                        context.interrupted = nodeId;\r\n                        return;\r\n                    }\r\n                    if (isSkipResult(result)) {\r\n                        internalState.branchNames = [];\r\n                        return;\r\n                    }\r\n                    if (Array.isArray(result)) {\r\n                        internalState.branchNames = result.map(r => r.branchName);\r\n                        return;\r\n                    }\r\n                    throw new Error('Not supported result for parallel activity');\r\n                })),\r\n                onDone: [\r\n                    {\r\n                        target: STATE_INTERRUPTED_TARGET,\r\n                        cond: (context) => Boolean(context.interrupted)\r\n                    },\r\n                    {\r\n                        target: 'PARALLEL'\r\n                    }\r\n                ],\r\n                onError: STATE_FAILED_TARGET\r\n            }\r\n        };\r\n        return {\r\n            id: nodeId,\r\n            initial: 'CONDITION',\r\n            states: {\r\n                CONDITION,\r\n                PARALLEL: {\r\n                    type: 'parallel',\r\n                    states,\r\n                    onDone: 'JOIN'\r\n                },\r\n                JOIN: {\r\n                    invoke: {\r\n                        src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                            const internalState = activityStateProvider.get(context, nodeId);\r\n                            internalState.branchNames = undefined;\r\n                        })),\r\n                        onDone: nextNodeTarget,\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createParallelActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: sequenceNodeBuilder => new ParallelActivityNodeBuilder(sequenceNodeBuilder, config)\r\n    };\r\n}\n\nclass SignalActivityNodeBuilder {\r\n    constructor(config) {\r\n        this.config = config;\r\n    }\r\n    build(step, nextNodeTarget) {\r\n        const activityStateProvider = new ActivityStateProvider(step, this.config.init);\r\n        const nodeId = getStepNodeId(step.id);\r\n        return {\r\n            id: nodeId,\r\n            initial: 'BEFORE_SIGNAL',\r\n            states: {\r\n                BEFORE_SIGNAL: {\r\n                    invoke: {\r\n                        src: catchUnhandledError((context) => __awaiter(this, void 0, void 0, function* () {\r\n                            const activityState = activityStateProvider.get(context, nodeId);\r\n                            const result = yield this.config.beforeSignal(step, context.globalState, activityState);\r\n                            if (isInterruptResult(result)) {\r\n                                context.interrupted = nodeId;\r\n                                return;\r\n                            }\r\n                        })),\r\n                        onDone: [\r\n                            {\r\n                                target: STATE_INTERRUPTED_TARGET,\r\n                                cond: (context) => Boolean(context.interrupted)\r\n                            },\r\n                            {\r\n                                target: 'WAIT_FOR_SIGNAL'\r\n                            }\r\n                        ],\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                },\r\n                WAIT_FOR_SIGNAL: {\r\n                    on: {\r\n                        SIGNAL_RECEIVED: {\r\n                            target: 'AFTER_SIGNAL'\r\n                        }\r\n                    }\r\n                },\r\n                AFTER_SIGNAL: {\r\n                    invoke: {\r\n                        src: catchUnhandledError((context, event) => __awaiter(this, void 0, void 0, function* () {\r\n                            const activityState = activityStateProvider.get(context, nodeId);\r\n                            const ev = event;\r\n                            const result = yield this.config.afterSignal(step, context.globalState, activityState, ev.payload);\r\n                            if (isInterruptResult(result)) {\r\n                                context.interrupted = nodeId;\r\n                                return;\r\n                            }\r\n                        })),\r\n                        onDone: [\r\n                            {\r\n                                target: STATE_INTERRUPTED_TARGET,\r\n                                cond: (context) => Boolean(context.interrupted)\r\n                            },\r\n                            {\r\n                                target: nextNodeTarget\r\n                            }\r\n                        ],\r\n                        onError: STATE_FAILED_TARGET\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\r\n}\n\nfunction createSignalActivity(stepType, config) {\r\n    return {\r\n        stepType,\r\n        nodeBuilderFactory: () => new SignalActivityNodeBuilder(config)\r\n    };\r\n}\r\nfunction signalSignalActivity(interpreter, payload) {\r\n    interpreter.sendSignal('SIGNAL_RECEIVED', payload);\r\n}\n\nfunction readStatePaths(stateValue) {\r\n    const result = [];\r\n    processPath(result, [], stateValue);\r\n    return result;\r\n}\r\nfunction processPath(result, path, stateValue) {\r\n    if (typeof stateValue === 'string') {\r\n        path.push(stateValue);\r\n        result.push(path);\r\n    }\r\n    else if (typeof stateValue === 'object') {\r\n        const keys = Object.keys(stateValue);\r\n        for (let i = 0; i < keys.length; i++) {\r\n            const key = keys[i];\r\n            const childPath = i === key.length - 1 ? path : [...path, key];\r\n            processPath(result, childPath, stateValue[key]);\r\n        }\r\n    }\r\n    else {\r\n        throw new Error('Invalid state value');\r\n    }\r\n}\n\nclass WorkflowMachineSnapshot {\r\n    constructor(globalState, unhandledError, stateValue) {\r\n        this.globalState = globalState;\r\n        this.unhandledError = unhandledError;\r\n        this.stateValue = stateValue;\r\n    }\r\n    /**\r\n     * @returns The paths of all currently executing states.\r\n     * @example `[ ['MAIN', 'STEP_1'], ['MAIN', 'STEP_2'] ]`\r\n     */\r\n    getStatePaths() {\r\n        if (!this.statePaths) {\r\n            this.statePaths = readStatePaths(this.stateValue);\r\n        }\r\n        return this.statePaths;\r\n    }\r\n    /**\r\n     * @returns The path of the currently executing state.\r\n     * If multiple states are currently executing, it returns `null`.\r\n     * To get all paths of executing states, use the `getStatePaths` method.\r\n     * @example `['MAIN', 'STEP_1']`\r\n     * @example `null`\r\n     */\r\n    tryGetStatePath() {\r\n        const paths = this.getStatePaths();\r\n        return paths.length === 1 ? paths[0] : null;\r\n    }\r\n    /**\r\n     * @returns The ID of the currently executing state.\r\n     * If multiple states are currently executing, it returns `null`.\r\n     */\r\n    tryGetCurrentStepId() {\r\n        const path = this.tryGetStatePath();\r\n        return path ? tryExtractStepId(path) : null;\r\n    }\r\n    /**\r\n     * @returns the list of ID of the currently executing steps.\r\n     */\r\n    getCurrentStepIds() {\r\n        const ids = new Set();\r\n        const paths = this.getStatePaths();\r\n        for (const path of paths) {\r\n            const id = tryExtractStepId(path);\r\n            if (id) {\r\n                ids.add(id);\r\n            }\r\n        }\r\n        return [...ids];\r\n    }\r\n    /**\r\n     * @returns `true` if the workflow machine is finished, otherwise `false`.\r\n     */\r\n    isFinished() {\r\n        const path = this.tryGetStatePath();\r\n        return path !== null && path[0] === STATE_FINISHED_ID;\r\n    }\r\n    /**\r\n     * @returns `true` if the workflow has failed, otherwise `false`.\r\n     */\r\n    isFailed() {\r\n        const path = this.tryGetStatePath();\r\n        return path !== null && path[0] === STATE_FAILED_ID;\r\n    }\r\n    /**\r\n     * @returns `true` if the workflow is interrupted, otherwise `false`.\r\n     */\r\n    isInterrupted() {\r\n        const path = this.tryGetStatePath();\r\n        return path !== null && path[0] === STATE_INTERRUPTED_ID;\r\n    }\r\n}\r\nfunction tryExtractStepId(path) {\r\n    for (let i = path.length - 1; i >= 0; i--) {\r\n        const item = path[i];\r\n        if (item.startsWith(STATE_STEP_ID_PREFIX)) {\r\n            return item.substring(STATE_STEP_ID_PREFIX.length);\r\n        }\r\n    }\r\n    return null;\r\n}\n\nclass WorkflowMachineInterpreter {\r\n    constructor(interpreter, initState) {\r\n        this.interpreter = interpreter;\r\n        this.initState = initState;\r\n    }\r\n    start() {\r\n        this.interpreter.start(this.initState);\r\n        return this;\r\n    }\r\n    getSnapshot() {\r\n        const snapshot = this.interpreter.getSnapshot();\r\n        return new WorkflowMachineSnapshot(snapshot.context.globalState, snapshot.context.unhandledError, snapshot.value);\r\n    }\r\n    serializeSnapshot() {\r\n        return this.interpreter.getSnapshot().toJSON();\r\n    }\r\n    onDone(callback) {\r\n        this.interpreter.onStop(callback);\r\n        return this;\r\n    }\r\n    onChange(callback) {\r\n        this.interpreter.onChange(callback);\r\n        return this;\r\n    }\r\n    isRunning() {\r\n        return this.interpreter.status === InterpreterStatus.Running;\r\n    }\r\n    tryStop() {\r\n        if (this.isRunning()) {\r\n            this.interpreter.stop();\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    sendSignal(event, payload) {\r\n        this.interpreter.send(event, {\r\n            payload\r\n        });\r\n        return this;\r\n    }\r\n    getNative() {\r\n        return this.interpreter;\r\n    }\r\n}\n\nclass WorkflowMachine {\r\n    constructor(definition, machine) {\r\n        this.definition = definition;\r\n        this.machine = machine;\r\n    }\r\n    create(config) {\r\n        return this.restore({\r\n            globalState: config.init(this.definition),\r\n            activityStates: {}\r\n        });\r\n    }\r\n    restore(context) {\r\n        const machine = this.machine.withContext(context);\r\n        return new WorkflowMachineInterpreter(interpret(machine), undefined);\r\n    }\r\n    deserializeSnapshot(serializedSnapshot) {\r\n        const initState = this.machine.resolveState(State.create(serializedSnapshot));\r\n        return new WorkflowMachineInterpreter(interpret(this.machine), initState);\r\n    }\r\n    getNative() {\r\n        return this.machine;\r\n    }\r\n}\n\nclass WorkflowMachineBuilder {\r\n    constructor(sequenceNodeBuilder) {\r\n        this.sequenceNodeBuilder = sequenceNodeBuilder;\r\n    }\r\n    build(definition, config) {\r\n        const buildingContext = {};\r\n        const initial = (config === null || config === void 0 ? void 0 : config.initialStepId) ? getStepNodeId(config.initialStepId) : 'MAIN';\r\n        const machine = createMachine({\r\n            initial,\r\n            predictableActionArguments: true,\r\n            states: {\r\n                MAIN: this.sequenceNodeBuilder.build(buildingContext, definition.sequence, STATE_FINISHED_TARGET),\r\n                FINISHED: {\r\n                    id: STATE_FINISHED_ID,\r\n                    type: 'final'\r\n                },\r\n                INTERRUPTED: {\r\n                    id: STATE_INTERRUPTED_ID,\r\n                    type: 'final'\r\n                },\r\n                FAILED: {\r\n                    id: STATE_FAILED_ID,\r\n                    type: 'final'\r\n                }\r\n            }\r\n        });\r\n        return new WorkflowMachine(definition, machine);\r\n    }\r\n}\r\nfunction createWorkflowMachineBuilder(activitySet) {\r\n    return new WorkflowMachineBuilder(new SequenceNodeBuilder(activitySet));\r\n}\n\nexport { ActivityNodeBuilderResolver, ActivitySet, ActivityStateProvider, MachineUnhandledError, STATE_BRANCH_ID_PREFIX, STATE_FAILED_ID, STATE_FAILED_TARGET, STATE_FINISHED_ID, STATE_FINISHED_TARGET, STATE_INTERRUPTED_ID, STATE_INTERRUPTED_TARGET, STATE_STEP_ID_PREFIX, SequenceNodeBuilder, WorkflowMachine, WorkflowMachineBuilder, WorkflowMachineInterpreter, branchName, break_, catchUnhandledError, createActivitySet, createAtomActivity, createAtomActivityFromHandler, createBreakActivity, createContainerActivity, createForkActivity, createInterruptionActivity, createLoopActivity, createParallelActivity, createSignalActivity, createWorkflowMachineBuilder, getBranchNodeId, getStepNodeId, interrupt, isBranchNameResult, isBreakResult, isInterruptResult, isSkipResult, signalSignalActivity, skip };\n"]}