@onereach/step-execute-state-machine-function 1.0.0-framework.6 → 1.0.0-framework.7
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/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/schemas/data-in.ts","../src/threads/base/types.ts","../src/threads/base/base.ts","../src/threads/main/types.ts","../src/threads/main/step.ts","../src/index.ts"],"mappings":";;;;;cAea,cAAY,EAAA;;;;;;;;;;;;;;;;;;;;;;;GAiCvB,EAAA,KAAA;KAEU,SAAS,EAAE,aAAa;;;UC9CnB,mBAAmB;EAClC,QAAQ;;;;cCGG,SAAS,UAAU,oBAAoB,KAAK;EAE1C,iBAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;KCNhB;EACV;EACA;;KAGU;EACV,MAAM;EACN,QAAQ;EACR,UAAU;;UAGK,0CAA0C;EACzD,SAAS;EACT,OAAO;;KAIG,4BAA4B;;;cCT3B,wCAAwC,SAAS;cAChD;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/schemas/data-in.ts","../src/threads/base/types.ts","../src/threads/base/base.ts","../src/threads/main/types.ts","../src/threads/main/step.ts","../src/index.ts"],"mappings":";;;;;cAea,cAAY,EAAA;;;;;;;;;;;;;;;;;;;;;;;GAiCvB,EAAA,KAAA;KAEU,SAAS,EAAE,aAAa;;;UC9CnB,mBAAmB;EAClC,QAAQ;;;;cCGG,SAAS,UAAU,oBAAoB,KAAK;EAE1C,iBAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;KCNhB;EACV;EACA;;KAGU;EACV,MAAM;EACN,QAAQ;EACR,UAAU;;UAGK,0CAA0C;EACzD,SAAS;EACT,OAAO;;KAIG,4BAA4B;;;cCT3B,wCAAwC,SAAS;cAChD;UAWJ;EAgCK,WAAW;;;;cClDb"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import{install as t}from"source-map-support";import{StateMachineThreadService as n}from"@onereach/state-machine-step-service";import{TimeoutError as r}from"@onereach/flow-sdk/errors/timeout.js";import*as i from"zod/mini";import{BasicError as a}from"@onereach/flow-sdk/errors/base.js";import{readFile as o}from"node:fs/promises";import{Step as s}from"@onereach/flow-sdk/step.js";const c={UNKNOWN:`UNKNOWN`,STEP_LOGIC_ISSUE:`STEP_LOGIC_ISSUE`,TIMEOUT:`TIMEOUT`,VALIDATION:`VALIDATION`,SERVER_ERROR:`SERVER_ERROR`,UNSUPPORTED:`UNSUPPORTED`};var l=class extends a{};i.config(i.locales.en());const u=[l,r];function d(e,t={}){let{preserveErrors:n=u,unknownMessage:a=`Unknown error`,unknownCode:o=c.UNKNOWN}=t;if(n?.some(t=>e instanceof t))return e;if(e instanceof i.core.$ZodError)return new l(i.prettifyError(e),e,{code:c.VALIDATION});if(typeof e==`string`)return new l(e,{code:c.UNKNOWN});if(e instanceof Error){if(e.message.includes(`Request timed out`))return new r(`Timeout`,e,{code:c.TIMEOUT});let t=e?.response?.data?.error?.message;return t==null?new l(a,e,{code:o}):new l(t,e,{code:c.SERVER_ERROR})}return new l(a,{code:o,data:e})}function f(e,t){function n(t,n,r,i){let a=e(t,n,r,i);if(typeof a==`function`){let e=i.value,t=a;if(e?.name!=null)try{Object.defineProperty(t,"name",{value:e.name})}catch{}return i.value=t,i}return a??i}return function(e,r,i){if(e!==null&&i!==null&&typeof e==`object`&&typeof i==`object`&&(typeof r==`string`||typeof r==`symbol`))return n(t,e,r,i);let a=e??t;return(e,t,r)=>n(a,e,t,r)}}const p=f((e,t,n,r)=>{let i=r.value;if(!(!i||typeof i!=`function`))return function(...e){try{let t=i.apply(this,e);return t instanceof Promise?t.catch(e=>{let t=n.toString();throw this.log.DEBUG?.(`Error in method '${t}'`,e),d(e)}):t}catch(e){let t=n.toString();throw this.log.DEBUG?.(`Error in method '${t}'`,e),d(e)}}},{}),m=e(import.meta.url);async function h(e){if(typeof e!=`string`||!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid minimum version format: ${e}`);let t=m.resolve(`@onereach/flow-sdk/package.json`);if(!t)throw Error(`Could not find package.json for @onereach/flow-sdk`);let n=await o(t,`utf8`),{version:r}=JSON.parse(n),{groups:i}=/^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)/.exec(r)||{};if(!i)throw Error(`Invalid Flow SDK version format: ${r}`);let a=Math.trunc(Number(i.major??`0`)),s=Math.trunc(Number(i.minor??`0`)),c=Math.trunc(Number(i.patch??`0`));if(a==null||s==null||c==null||Number.isNaN(a)||Number.isNaN(s)||Number.isNaN(c))throw Error(`Invalid version format: ${r}`);let[l,u,d]=e.split(`.`).map(e=>Math.trunc(Number(e)));if(l==null||u==null||d==null||Number.isNaN(l)||Number.isNaN(u)||Number.isNaN(d))throw Error(`Invalid minimum version format: ${e}`);if(a<l||a===l&&s<u||a===l&&s===u&&c<d)throw Error(`Flow SDK version '${r}' is lower than required minimum version '${e}' for the step`)}i.config(i.locales.en());const g=i.string().check(i.trim(),i.refine(e=>![`undefined`,`null`].includes(e),{error:`Unexpected undefined or null merge-field value`})),_=i.object({functionName:g.check(i.minLength(1),i.maxLength(64)),functionArgs:i.optional(i.record(i.string(),i.any())),functionContext:i.optional(i.record(i.string(),i.any())),stateId:v(g.check(i.minLength(1),i.maxLength(64))),remoteBroadcast:i.optional(i.boolean()),localBroadcast:i.optional(i.boolean()),stateMachineStep:i.optional(g.check(i.minLength(1),i.maxLength(64))),stateMachineStepData:i.optional(i.object({step:i.object({data:i.object({dataOut:i.object({name:g.check(i.minLength(1),i.maxLength(64))})})})})),processError:i.boolean(),processTimeout:i.boolean(),timeoutDuration:g.check(i.trim(),i.minLength(1)),_testSettings:i.optional(i.object({cache:i.optional(i.custom())}))});function v(e){return i.optional(i.pipe(i.union([i.undefined(),i.literal(``),e]),i.transform(e=>e===``?void 0:e)))}function y(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function b(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var x=class extends s{async resolveDataIn(){let e=await super.resolveDataIn();return _.parse(e)}};b([p,y(`design:type`,Function),y(`design:paramtypes`,[]),y(`design:returntype`,Promise)],x.prototype,`resolveDataIn`,null);var S=class extends x{get stateMachine(){return new n(this.thread,{cache:this.data._testSettings?.cache}).stateMachine}
|
|
1
|
+
import{createRequire as e}from"node:module";import{install as t}from"source-map-support";import{StateMachineThreadService as n}from"@onereach/state-machine-step-service";import{TimeoutError as r}from"@onereach/flow-sdk/errors/timeout.js";import*as i from"zod/mini";import{BasicError as a}from"@onereach/flow-sdk/errors/base.js";import{readFile as o}from"node:fs/promises";import{Step as s}from"@onereach/flow-sdk/step.js";const c={UNKNOWN:`UNKNOWN`,STEP_LOGIC_ISSUE:`STEP_LOGIC_ISSUE`,TIMEOUT:`TIMEOUT`,VALIDATION:`VALIDATION`,SERVER_ERROR:`SERVER_ERROR`,UNSUPPORTED:`UNSUPPORTED`};var l=class extends a{};i.config(i.locales.en());const u=[l,r];function d(e,t={}){let{preserveErrors:n=u,unknownMessage:a=`Unknown error`,unknownCode:o=c.UNKNOWN}=t;if(n?.some(t=>e instanceof t))return e;if(e instanceof i.core.$ZodError)return new l(i.prettifyError(e),e,{code:c.VALIDATION});if(typeof e==`string`)return new l(e,{code:c.UNKNOWN});if(e instanceof Error){if(e.message.includes(`Request timed out`))return new r(`Timeout`,e,{code:c.TIMEOUT});let t=e?.response?.data?.error?.message;return t==null?new l(a,e,{code:o}):new l(t,e,{code:c.SERVER_ERROR})}return new l(a,{code:o,data:e})}function f(e,t){function n(t,n,r,i){let a=e(t,n,r,i);if(typeof a==`function`){let e=i.value,t=a;if(e?.name!=null)try{Object.defineProperty(t,"name",{value:e.name})}catch{}return i.value=t,i}return a??i}return function(e,r,i){if(e!==null&&i!==null&&typeof e==`object`&&typeof i==`object`&&(typeof r==`string`||typeof r==`symbol`))return n(t,e,r,i);let a=e??t;return(e,t,r)=>n(a,e,t,r)}}const p=f((e,t,n,r)=>{let i=r.value;if(!(!i||typeof i!=`function`))return function(...e){try{let t=i.apply(this,e);return t instanceof Promise?t.catch(e=>{let t=n.toString();throw this.log.DEBUG?.(`Error in method '${t}'`,e),d(e)}):t}catch(e){let t=n.toString();throw this.log.DEBUG?.(`Error in method '${t}'`,e),d(e)}}},{}),m=e(import.meta.url);async function h(e){if(typeof e!=`string`||!/^\d+\.\d+\.\d+$/.test(e))throw Error(`Invalid minimum version format: ${e}`);let t=m.resolve(`@onereach/flow-sdk/package.json`);if(!t)throw Error(`Could not find package.json for @onereach/flow-sdk`);let n=await o(t,`utf8`),{version:r}=JSON.parse(n),{groups:i}=/^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)/.exec(r)||{};if(!i)throw Error(`Invalid Flow SDK version format: ${r}`);let a=Math.trunc(Number(i.major??`0`)),s=Math.trunc(Number(i.minor??`0`)),c=Math.trunc(Number(i.patch??`0`));if(a==null||s==null||c==null||Number.isNaN(a)||Number.isNaN(s)||Number.isNaN(c))throw Error(`Invalid version format: ${r}`);let[l,u,d]=e.split(`.`).map(e=>Math.trunc(Number(e)));if(l==null||u==null||d==null||Number.isNaN(l)||Number.isNaN(u)||Number.isNaN(d))throw Error(`Invalid minimum version format: ${e}`);if(a<l||a===l&&s<u||a===l&&s===u&&c<d)throw Error(`Flow SDK version '${r}' is lower than required minimum version '${e}' for the step`)}i.config(i.locales.en());const g=i.string().check(i.trim(),i.refine(e=>![`undefined`,`null`].includes(e),{error:`Unexpected undefined or null merge-field value`})),_=i.object({functionName:g.check(i.minLength(1),i.maxLength(64)),functionArgs:i.optional(i.record(i.string(),i.any())),functionContext:i.optional(i.record(i.string(),i.any())),stateId:v(g.check(i.minLength(1),i.maxLength(64))),remoteBroadcast:i.optional(i.boolean()),localBroadcast:i.optional(i.boolean()),stateMachineStep:i.optional(g.check(i.minLength(1),i.maxLength(64))),stateMachineStepData:i.optional(i.object({step:i.object({data:i.object({dataOut:i.object({name:g.check(i.minLength(1),i.maxLength(64))})})})})),processError:i.boolean(),processTimeout:i.boolean(),timeoutDuration:g.check(i.trim(),i.minLength(1)),_testSettings:i.optional(i.object({cache:i.optional(i.custom())}))});function v(e){return i.optional(i.pipe(i.union([i.undefined(),i.literal(``),e]),i.transform(e=>e===``?void 0:e)))}function y(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}function b(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var x=class extends s{async resolveDataIn(){let e=await super.resolveDataIn();return _.parse(e)}};b([p,y(`design:type`,Function),y(`design:paramtypes`,[]),y(`design:returntype`,Promise)],x.prototype,`resolveDataIn`,null);var S=class extends x{get stateMachine(){return new n(this.thread,{cache:this.data._testSettings?.cache}).stateMachine}getStateId(){let{stateId:e}=this.data,t;if(t===void 0&&e&&(t=e),t===void 0)throw new l(`State Machine instance ID not defined`,{code:c.VALIDATION});return t}async runStep(){await h(`8.0.72`);let{functionName:e,functionArgs:t,functionContext:n,localBroadcast:r,remoteBroadcast:i,stateMachineStep:a}=this.data,o=n??{},s=await this.stateMachine.execute({id:this.getStateId()},e,t,o);s.kind===`mutation`&&(r&&a&&await this.process.enqueueAndRun({name:`st_cgd`,thread:`sm_mgr_cng_lnr_${a}`,params:{ts:Date.now()}}),i&&await this.thread.emitAsync({name:`sm/${s.instance.instance.template.id}/${s.instance.instance.id}`,params:{ts:Date.now()}})),this.exitStep(`next`,{kind:s.kind,output:s.output,snapshot:s.instance})}};b([p,y(`design:type`,Function),y(`design:paramtypes`,[]),y(`design:returntype`,Promise)],S.prototype,`runStep`,null),t();const C={};export{S as ExecuteStateMachineFunctionStep,S as step,C as states};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors/step-error.ts","../src/errors/error-filter.ts","../src/utils/create-method-decorator.ts","../src/decorators/error-filter.ts","../src/utils/validate-flow-sdk-version.ts","../src/schemas/data-in.ts","../src/threads/base/base.ts","../src/threads/main/step.ts","../src/index.ts"],"sourcesContent":["import { BasicError } from '@onereach/flow-sdk/errors/base.js';\n\nexport const ErrorCode = {\n UNKNOWN: 'UNKNOWN',\n STEP_LOGIC_ISSUE: 'STEP_LOGIC_ISSUE',\n TIMEOUT: 'TIMEOUT',\n VALIDATION: 'VALIDATION',\n SERVER_ERROR: 'SERVER_ERROR',\n UNSUPPORTED: 'UNSUPPORTED',\n} as const;\n\nexport class ExecuteStateMachineFunctionStepError extends BasicError<{\n code: keyof typeof ErrorCode;\n data?: unknown;\n}> {}\n\nexport class AbortRequestError extends BasicError {}\n","import { TimeoutError } from '@onereach/flow-sdk/errors/timeout.js';\nimport * as z from 'zod/mini';\n\nimport { ExecuteStateMachineFunctionStepError, ErrorCode } from './step-error.ts';\n\n// eslint-disable-next-line unicorn/no-top-level-side-effects\nz.config(z.locales.en());\n\nconst defaultPreserveErrors = [ExecuteStateMachineFunctionStepError, TimeoutError] as const;\nexport function errorFilter<P extends readonly AnyErrorClass[] = typeof defaultPreserveErrors>(\n error: unknown,\n options: ErrorFilterOptions<P> = {},\n): InstancesOf<P> | ExecuteStateMachineFunctionStepError | TimeoutError {\n const {\n preserveErrors = defaultPreserveErrors,\n unknownMessage = 'Unknown error',\n unknownCode = ErrorCode.UNKNOWN,\n } = options;\n\n // if error is CreateChatCompletionStepError or TimeoutError, return it directly\n if (preserveErrors?.some((ErrorClass) => error instanceof ErrorClass)) {\n return error as InstancesOf<P>;\n }\n\n // validation errors\n if (error instanceof z.core.$ZodError) {\n return new ExecuteStateMachineFunctionStepError(z.prettifyError(error), error, {\n code: ErrorCode.VALIDATION,\n });\n }\n\n // if error is a string assume it's an error message\n if (typeof error === 'string') {\n return new ExecuteStateMachineFunctionStepError(error, {\n code: ErrorCode.UNKNOWN,\n });\n }\n\n if (error instanceof Error) {\n // timeout errors\n if (error.message.includes('Request timed out')) {\n return new TimeoutError('Timeout', error, { code: ErrorCode.TIMEOUT });\n }\n\n // TODO: fix interpreting of this kind of errors\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const responseErrorMessage: string | undefined = (error as unknown as any)?.response?.data?.error?.message;\n if (responseErrorMessage != undefined) {\n return new ExecuteStateMachineFunctionStepError(responseErrorMessage, error, {\n code: ErrorCode.SERVER_ERROR,\n });\n }\n\n return new ExecuteStateMachineFunctionStepError(unknownMessage, error, {\n code: unknownCode,\n });\n }\n\n // catch all for unknown errors\n return new ExecuteStateMachineFunctionStepError(unknownMessage, {\n code: unknownCode,\n data: error,\n });\n}\n\nexport type ErrorFilterOptions<P extends readonly AnyErrorClass[]> = {\n /**\n Array of error classes that should not be wrapped\n */\n preserveErrors?: P;\n /**\n Error message to use when message is unknown\n */\n unknownMessage?: string;\n /**\n Error code to use when message is unknown\n */\n unknownCode?: keyof typeof ErrorCode;\n};\n\n/**\nAny Error class\n*/\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyErrorClass<E extends Error = Error> = new (...arguments_: any[]) => E;\n\n/**\nTurn a tuple/array of constructors into a union of their instance types.\n*/\nexport type InstancesOf<Ctors extends readonly AnyErrorClass[]> =\n Ctors[number] extends AnyErrorClass<infer I> ? I : never;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Creates a method decorator that can be used with or without options.\n * @param apply - Function that applies the decorator logic with given options.\n * @param defaultOptions - Default options to use if none are provided.\n */\nexport function createMethodDecoratorWithOptionalArguments<A, T extends AnyFunction = AnyFunction>(\n apply: (\n options: A,\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => T | TypedPropertyDescriptor<T> | void,\n defaultOptions: A,\n): MethodDecoratorWithOptionalArguments<A, T> {\n function runApply(\n options: A,\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ): TypedPropertyDescriptor<T> | void {\n const maybe = apply(options, target, propertyKey, descriptor);\n\n // If the decorator factory returned a wrapped function, assign it to the descriptor here\n if (typeof maybe === 'function') {\n const originalMethod = descriptor.value;\n const wrappedMethod = maybe as typeof originalMethod;\n\n if (originalMethod?.name != undefined) {\n try {\n Object.defineProperty(wrappedMethod, 'name', { value: originalMethod.name });\n } catch {\n // ignore if name is non-configurable\n }\n }\n\n descriptor.value = wrappedMethod;\n return descriptor;\n }\n\n // If a descriptor was returned or decorator mutated descriptor in-place, use that\n return maybe ?? descriptor;\n }\n\n return function decoratorOrFactory(\n argument0?: object | A,\n argument1?: string | symbol,\n argument2?: TypedPropertyDescriptor<T>,\n ): any {\n if (\n argument0 !== null &&\n argument2 !== null &&\n typeof argument0 === 'object' &&\n typeof argument2 === 'object' &&\n (typeof argument1 === 'string' || typeof argument1 === 'symbol')\n ) {\n // Called as plain decorator: @Decorator\n return runApply(defaultOptions, argument0, argument1, argument2);\n }\n\n // Called as decorator factory: @Decorator(options)\n const options = (argument0 as A) ?? defaultOptions;\n return (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => {\n return runApply(options, target, propertyKey, descriptor);\n };\n };\n}\n\nexport type AnyFunction = (...arguments_: any[]) => any;\n\nexport type MethodDecoratorWithOptionalArguments<A, T extends AnyFunction = AnyFunction> =\n // Plain method decorator (three arguments)\n ((\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => TypedPropertyDescriptor<T> | void) &\n // Decorator factory (optional options argument)\n ((options?: A) => MethodDecorator);\n","/* eslint-disable unicorn/prefer-await */\n\nimport type { Step } from '@onereach/flow-sdk/step.js';\n\nimport { errorFilter } from '../errors/error-filter.ts';\nimport { createMethodDecoratorWithOptionalArguments } from '../utils/create-method-decorator.ts';\n\nconst defaultOptions = {};\n\n/**\n * Will wrap method with `errorFilter` for every error.\n */\nexport const ErrorFilter = createMethodDecoratorWithOptionalArguments((_options, _target, propertyKey, descriptor) => {\n const originalMethod = descriptor.value;\n\n if (!originalMethod || typeof originalMethod !== 'function') return;\n\n return function (this: Step, ...arguments_: Parameters<typeof originalMethod>): ReturnType<typeof originalMethod> {\n try {\n const result: unknown = originalMethod.apply(this, arguments_);\n\n if (result instanceof Promise) {\n return result.catch((error: unknown) => {\n const methodName = propertyKey.toString();\n this.log.DEBUG?.(`Error in method '${methodName}'`, error);\n throw errorFilter(error);\n }) as ReturnType<typeof originalMethod>;\n }\n\n return result;\n } catch (error) {\n const methodName = propertyKey.toString();\n this.log.DEBUG?.(`Error in method '${methodName}'`, error);\n throw errorFilter(error);\n }\n };\n}, defaultOptions);\n","import { readFile } from 'node:fs/promises';\nimport { createRequire } from 'node:module';\n\nconst require = createRequire(import.meta.url);\n\nexport async function validateFlowSdkVersion(minVersion: string): Promise<void> {\n if (typeof minVersion !== 'string' || !/^\\d+\\.\\d+\\.\\d+$/.test(minVersion)) {\n throw new Error(`Invalid minimum version format: ${minVersion}`);\n }\n\n const packageJsonPath = require.resolve('@onereach/flow-sdk/package.json');\n if (!packageJsonPath) {\n throw new Error(`Could not find package.json for @onereach/flow-sdk`);\n }\n // Read the package.json file to get the version\n const packageJsonContent = await readFile(packageJsonPath, 'utf8');\n\n const { version } = JSON.parse(packageJsonContent) as { version: string };\n const { groups } = /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)/.exec(version) || {};\n\n if (!groups) throw new Error(`Invalid Flow SDK version format: ${version}`);\n\n const major = Math.trunc(Number(groups.major ?? '0'));\n const minor = Math.trunc(Number(groups.minor ?? '0'));\n const patch = Math.trunc(Number(groups.patch ?? '0'));\n\n if (\n major == undefined ||\n minor == undefined ||\n patch == undefined ||\n Number.isNaN(major) ||\n Number.isNaN(minor) ||\n Number.isNaN(patch)\n ) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n const [minMajor, minMinor, minPatch] = minVersion.split('.').map((x) => Math.trunc(Number(x)));\n\n if (\n minMajor == undefined ||\n minMinor == undefined ||\n minPatch == undefined ||\n Number.isNaN(minMajor) ||\n Number.isNaN(minMinor) ||\n Number.isNaN(minPatch)\n ) {\n throw new Error(`Invalid minimum version format: ${minVersion}`);\n }\n\n if (\n major < minMajor ||\n (major === minMajor && minor < minMinor) ||\n (major === minMajor && minor === minMinor && patch < minPatch)\n ) {\n throw new Error(\n `Flow SDK version '${version}' is lower than required minimum version '${minVersion}' for the step`,\n );\n }\n}\n","/* eslint-disable unicorn/max-nested-calls */\nimport type { ICacheFacade } from '@onereach/flow-sdk/types/index.js';\nimport * as z from 'zod/mini';\n\n// eslint-disable-next-line unicorn/no-top-level-side-effects\nz.config(z.locales.en());\n\n// string that prevents\nconst stringNoUndefinedSchema = z.string().check(\n z.trim(),\n z.refine((value) => !['undefined', 'null'].includes(value), {\n error: 'Unexpected undefined or null merge-field value',\n }),\n);\n\nexport const dataInSchema = z.object({\n functionName: stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64)),\n functionArgs: z.optional(z.record(z.string(), z.any())),\n functionContext: z.optional(z.record(z.string(), z.any())),\n\n stateId: optionalStringValue(stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64))),\n\n remoteBroadcast: z.optional(z.boolean()),\n\n localBroadcast: z.optional(z.boolean()),\n stateMachineStep: z.optional(stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64))),\n stateMachineStepData: z.optional(\n z.object({\n step: z.object({\n data: z.object({\n dataOut: z.object({\n name: stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64)),\n }),\n }),\n }),\n }),\n ),\n\n processError: z.boolean(),\n processTimeout: z.boolean(),\n timeoutDuration: stringNoUndefinedSchema.check(z.trim(), z.minLength(1)),\n\n // for integration tests\n _testSettings: z.optional(\n z.object({\n cache: z.optional(z.custom<ICacheFacade>()),\n }),\n ),\n});\n\nexport type DataIn = z.infer<typeof dataInSchema>;\n\n/**\n * Convert empty string to undefined before running schema validation\n * @param schema schema to validate against\n * @param defaultValue optional default value\n */\nfunction optionalStringValue<T extends z.core.SomeType>(schema: T) {\n return z.optional(\n z.pipe(\n z.union([z.undefined(), z.literal(''), schema]),\n z.transform((value) => (value === '' ? undefined : value)),\n ),\n );\n}\n","import { Step } from '@onereach/flow-sdk/step.js';\n\nimport { ErrorFilter } from '../../decorators/error-filter.ts';\nimport { dataInSchema } from '../../schemas/data-in.ts';\n\nimport type { BaseConfig } from './types.ts';\n\n// TODO: convert it into class decorator\nexport class BaseStep<T extends BaseConfig> extends Step<T> {\n @ErrorFilter\n public async resolveDataIn() {\n const dataIn = await super.resolveDataIn();\n return dataInSchema.parse(dataIn);\n }\n}\n","import { StateMachineThreadService } from '@onereach/state-machine-step-service';\nimport type { InitializeStateMachineContext, StateMachineService } from '@onereach/state-machine-step-service';\n\nimport { ErrorFilter } from '../../decorators/error-filter.ts';\nimport { ErrorCode, ExecuteStateMachineFunctionStepError } from '../../errors/step-error.ts';\nimport { validateFlowSdkVersion } from '../../utils/validate-flow-sdk-version.ts';\nimport { BaseStep } from '../base/base.ts';\n\nimport type { ExecuteStateMachineFunctionConfig, InitializeStateMachineOut } from './types.ts';\n\nconst MINIMAL_FLOW_SDK_VERSION = '8.0.72'; // TODO: move requirement to step-service\n\nexport class ExecuteStateMachineFunctionStep extends BaseStep<ExecuteStateMachineFunctionConfig> {\n private get stateMachine(): StateMachineService<InitializeStateMachineContext> {\n const service = new StateMachineThreadService<ExecuteStateMachineFunctionConfig, InitializeStateMachineContext>(\n this.thread,\n {\n cache: this.data._testSettings?.cache,\n // instanceTtl: this.instanceTtl,\n },\n );\n return service.stateMachine;\n }\n\n private async getStateId(): Promise<string> {\n const { stateId, stateMachineStepData } = this.data;\n\n let stateIdResult: string | undefined;\n\n if (stateMachineStepData) {\n const stateMachineStepDataOut = stateMachineStepData.step.data.dataOut.name;\n const stateMachineDataOut = await this.get<InitializeStateMachineOut>(stateMachineStepDataOut);\n stateIdResult = stateMachineDataOut?.id;\n }\n\n if (stateIdResult === undefined && stateId) stateIdResult = stateId;\n\n if (stateIdResult === undefined)\n throw new ExecuteStateMachineFunctionStepError('State Machine instance ID not defined', {\n code: ErrorCode.VALIDATION,\n data: {\n stateId,\n dataOut: stateMachineStepData?.step.data.dataOut.name,\n },\n });\n\n return stateIdResult;\n }\n\n // private get instanceTtl(): number | undefined {\n // const { stateTtl } = this.data;\n // return stateTtl?.input ? timestring(stateTtl.input, stateTtl.outputMode) : undefined;\n // }\n\n @ErrorFilter\n public async runStep(): Promise<void> {\n await validateFlowSdkVersion(MINIMAL_FLOW_SDK_VERSION);\n\n const { functionName, functionArgs, functionContext, localBroadcast, remoteBroadcast, stateMachineStep } =\n this.data;\n\n // execute the state machine\n const context = functionContext ?? {};\n const result = await this.stateMachine.execute(\n { id: await this.getStateId() },\n functionName,\n functionArgs,\n context,\n );\n\n if (result.kind === 'mutation') {\n if (localBroadcast && stateMachineStep) {\n // notify change listener\n await this.process.enqueueAndRun({\n name: 'st_cgd', // TODO: move constant to step-service\n thread: `sm_mgr_cng_lnr_${stateMachineStep}`, // TODO: move function to step-service\n params: { ts: Date.now() },\n });\n }\n if (remoteBroadcast) {\n // notify remote change listeners\n await this.thread.emitAsync({\n name: `sm/${result.instance.instance.template.id}/${result.instance.instance.id}`, // TODO: move function to step-service\n params: { ts: Date.now() },\n });\n }\n }\n\n this.exitStep('next', {\n kind: result.kind,\n output: result.output,\n snapshot: result.instance,\n });\n }\n}\n","import { install } from 'source-map-support';\n\n// enable source map support for better error stack traces\n// eslint-disable-next-line unicorn/no-top-level-side-effects\ninstall();\n\nexport const states = {};\n\nexport { ExecuteStateMachineFunctionStep as step, ExecuteStateMachineFunctionStep } from './threads/main/step.ts';\n\nexport type * from './types.ts';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors/step-error.ts","../src/errors/error-filter.ts","../src/utils/create-method-decorator.ts","../src/decorators/error-filter.ts","../src/utils/validate-flow-sdk-version.ts","../src/schemas/data-in.ts","../src/threads/base/base.ts","../src/threads/main/step.ts","../src/index.ts"],"sourcesContent":["import { BasicError } from '@onereach/flow-sdk/errors/base.js';\n\nexport const ErrorCode = {\n UNKNOWN: 'UNKNOWN',\n STEP_LOGIC_ISSUE: 'STEP_LOGIC_ISSUE',\n TIMEOUT: 'TIMEOUT',\n VALIDATION: 'VALIDATION',\n SERVER_ERROR: 'SERVER_ERROR',\n UNSUPPORTED: 'UNSUPPORTED',\n} as const;\n\nexport class ExecuteStateMachineFunctionStepError extends BasicError<{\n code: keyof typeof ErrorCode;\n data?: unknown;\n}> {}\n\nexport class AbortRequestError extends BasicError {}\n","import { TimeoutError } from '@onereach/flow-sdk/errors/timeout.js';\nimport * as z from 'zod/mini';\n\nimport { ExecuteStateMachineFunctionStepError, ErrorCode } from './step-error.ts';\n\n// eslint-disable-next-line unicorn/no-top-level-side-effects\nz.config(z.locales.en());\n\nconst defaultPreserveErrors = [ExecuteStateMachineFunctionStepError, TimeoutError] as const;\nexport function errorFilter<P extends readonly AnyErrorClass[] = typeof defaultPreserveErrors>(\n error: unknown,\n options: ErrorFilterOptions<P> = {},\n): InstancesOf<P> | ExecuteStateMachineFunctionStepError | TimeoutError {\n const {\n preserveErrors = defaultPreserveErrors,\n unknownMessage = 'Unknown error',\n unknownCode = ErrorCode.UNKNOWN,\n } = options;\n\n // if error is CreateChatCompletionStepError or TimeoutError, return it directly\n if (preserveErrors?.some((ErrorClass) => error instanceof ErrorClass)) {\n return error as InstancesOf<P>;\n }\n\n // validation errors\n if (error instanceof z.core.$ZodError) {\n return new ExecuteStateMachineFunctionStepError(z.prettifyError(error), error, {\n code: ErrorCode.VALIDATION,\n });\n }\n\n // if error is a string assume it's an error message\n if (typeof error === 'string') {\n return new ExecuteStateMachineFunctionStepError(error, {\n code: ErrorCode.UNKNOWN,\n });\n }\n\n if (error instanceof Error) {\n // timeout errors\n if (error.message.includes('Request timed out')) {\n return new TimeoutError('Timeout', error, { code: ErrorCode.TIMEOUT });\n }\n\n // TODO: fix interpreting of this kind of errors\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const responseErrorMessage: string | undefined = (error as unknown as any)?.response?.data?.error?.message;\n if (responseErrorMessage != undefined) {\n return new ExecuteStateMachineFunctionStepError(responseErrorMessage, error, {\n code: ErrorCode.SERVER_ERROR,\n });\n }\n\n return new ExecuteStateMachineFunctionStepError(unknownMessage, error, {\n code: unknownCode,\n });\n }\n\n // catch all for unknown errors\n return new ExecuteStateMachineFunctionStepError(unknownMessage, {\n code: unknownCode,\n data: error,\n });\n}\n\nexport type ErrorFilterOptions<P extends readonly AnyErrorClass[]> = {\n /**\n Array of error classes that should not be wrapped\n */\n preserveErrors?: P;\n /**\n Error message to use when message is unknown\n */\n unknownMessage?: string;\n /**\n Error code to use when message is unknown\n */\n unknownCode?: keyof typeof ErrorCode;\n};\n\n/**\nAny Error class\n*/\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyErrorClass<E extends Error = Error> = new (...arguments_: any[]) => E;\n\n/**\nTurn a tuple/array of constructors into a union of their instance types.\n*/\nexport type InstancesOf<Ctors extends readonly AnyErrorClass[]> =\n Ctors[number] extends AnyErrorClass<infer I> ? I : never;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Creates a method decorator that can be used with or without options.\n * @param apply - Function that applies the decorator logic with given options.\n * @param defaultOptions - Default options to use if none are provided.\n */\nexport function createMethodDecoratorWithOptionalArguments<A, T extends AnyFunction = AnyFunction>(\n apply: (\n options: A,\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => T | TypedPropertyDescriptor<T> | void,\n defaultOptions: A,\n): MethodDecoratorWithOptionalArguments<A, T> {\n function runApply(\n options: A,\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ): TypedPropertyDescriptor<T> | void {\n const maybe = apply(options, target, propertyKey, descriptor);\n\n // If the decorator factory returned a wrapped function, assign it to the descriptor here\n if (typeof maybe === 'function') {\n const originalMethod = descriptor.value;\n const wrappedMethod = maybe as typeof originalMethod;\n\n if (originalMethod?.name != undefined) {\n try {\n Object.defineProperty(wrappedMethod, 'name', { value: originalMethod.name });\n } catch {\n // ignore if name is non-configurable\n }\n }\n\n descriptor.value = wrappedMethod;\n return descriptor;\n }\n\n // If a descriptor was returned or decorator mutated descriptor in-place, use that\n return maybe ?? descriptor;\n }\n\n return function decoratorOrFactory(\n argument0?: object | A,\n argument1?: string | symbol,\n argument2?: TypedPropertyDescriptor<T>,\n ): any {\n if (\n argument0 !== null &&\n argument2 !== null &&\n typeof argument0 === 'object' &&\n typeof argument2 === 'object' &&\n (typeof argument1 === 'string' || typeof argument1 === 'symbol')\n ) {\n // Called as plain decorator: @Decorator\n return runApply(defaultOptions, argument0, argument1, argument2);\n }\n\n // Called as decorator factory: @Decorator(options)\n const options = (argument0 as A) ?? defaultOptions;\n return (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => {\n return runApply(options, target, propertyKey, descriptor);\n };\n };\n}\n\nexport type AnyFunction = (...arguments_: any[]) => any;\n\nexport type MethodDecoratorWithOptionalArguments<A, T extends AnyFunction = AnyFunction> =\n // Plain method decorator (three arguments)\n ((\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => TypedPropertyDescriptor<T> | void) &\n // Decorator factory (optional options argument)\n ((options?: A) => MethodDecorator);\n","/* eslint-disable unicorn/prefer-await */\n\nimport type { Step } from '@onereach/flow-sdk/step.js';\n\nimport { errorFilter } from '../errors/error-filter.ts';\nimport { createMethodDecoratorWithOptionalArguments } from '../utils/create-method-decorator.ts';\n\nconst defaultOptions = {};\n\n/**\n * Will wrap method with `errorFilter` for every error.\n */\nexport const ErrorFilter = createMethodDecoratorWithOptionalArguments((_options, _target, propertyKey, descriptor) => {\n const originalMethod = descriptor.value;\n\n if (!originalMethod || typeof originalMethod !== 'function') return;\n\n return function (this: Step, ...arguments_: Parameters<typeof originalMethod>): ReturnType<typeof originalMethod> {\n try {\n const result: unknown = originalMethod.apply(this, arguments_);\n\n if (result instanceof Promise) {\n return result.catch((error: unknown) => {\n const methodName = propertyKey.toString();\n this.log.DEBUG?.(`Error in method '${methodName}'`, error);\n throw errorFilter(error);\n }) as ReturnType<typeof originalMethod>;\n }\n\n return result;\n } catch (error) {\n const methodName = propertyKey.toString();\n this.log.DEBUG?.(`Error in method '${methodName}'`, error);\n throw errorFilter(error);\n }\n };\n}, defaultOptions);\n","import { readFile } from 'node:fs/promises';\nimport { createRequire } from 'node:module';\n\nconst require = createRequire(import.meta.url);\n\nexport async function validateFlowSdkVersion(minVersion: string): Promise<void> {\n if (typeof minVersion !== 'string' || !/^\\d+\\.\\d+\\.\\d+$/.test(minVersion)) {\n throw new Error(`Invalid minimum version format: ${minVersion}`);\n }\n\n const packageJsonPath = require.resolve('@onereach/flow-sdk/package.json');\n if (!packageJsonPath) {\n throw new Error(`Could not find package.json for @onereach/flow-sdk`);\n }\n // Read the package.json file to get the version\n const packageJsonContent = await readFile(packageJsonPath, 'utf8');\n\n const { version } = JSON.parse(packageJsonContent) as { version: string };\n const { groups } = /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)/.exec(version) || {};\n\n if (!groups) throw new Error(`Invalid Flow SDK version format: ${version}`);\n\n const major = Math.trunc(Number(groups.major ?? '0'));\n const minor = Math.trunc(Number(groups.minor ?? '0'));\n const patch = Math.trunc(Number(groups.patch ?? '0'));\n\n if (\n major == undefined ||\n minor == undefined ||\n patch == undefined ||\n Number.isNaN(major) ||\n Number.isNaN(minor) ||\n Number.isNaN(patch)\n ) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n const [minMajor, minMinor, minPatch] = minVersion.split('.').map((x) => Math.trunc(Number(x)));\n\n if (\n minMajor == undefined ||\n minMinor == undefined ||\n minPatch == undefined ||\n Number.isNaN(minMajor) ||\n Number.isNaN(minMinor) ||\n Number.isNaN(minPatch)\n ) {\n throw new Error(`Invalid minimum version format: ${minVersion}`);\n }\n\n if (\n major < minMajor ||\n (major === minMajor && minor < minMinor) ||\n (major === minMajor && minor === minMinor && patch < minPatch)\n ) {\n throw new Error(\n `Flow SDK version '${version}' is lower than required minimum version '${minVersion}' for the step`,\n );\n }\n}\n","/* eslint-disable unicorn/max-nested-calls */\nimport type { ICacheFacade } from '@onereach/flow-sdk/types/index.js';\nimport * as z from 'zod/mini';\n\n// eslint-disable-next-line unicorn/no-top-level-side-effects\nz.config(z.locales.en());\n\n// string that prevents\nconst stringNoUndefinedSchema = z.string().check(\n z.trim(),\n z.refine((value) => !['undefined', 'null'].includes(value), {\n error: 'Unexpected undefined or null merge-field value',\n }),\n);\n\nexport const dataInSchema = z.object({\n functionName: stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64)),\n functionArgs: z.optional(z.record(z.string(), z.any())),\n functionContext: z.optional(z.record(z.string(), z.any())),\n\n stateId: optionalStringValue(stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64))),\n\n remoteBroadcast: z.optional(z.boolean()),\n\n localBroadcast: z.optional(z.boolean()),\n stateMachineStep: z.optional(stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64))),\n stateMachineStepData: z.optional(\n z.object({\n step: z.object({\n data: z.object({\n dataOut: z.object({\n name: stringNoUndefinedSchema.check(z.minLength(1), z.maxLength(64)),\n }),\n }),\n }),\n }),\n ),\n\n processError: z.boolean(),\n processTimeout: z.boolean(),\n timeoutDuration: stringNoUndefinedSchema.check(z.trim(), z.minLength(1)),\n\n // for integration tests\n _testSettings: z.optional(\n z.object({\n cache: z.optional(z.custom<ICacheFacade>()),\n }),\n ),\n});\n\nexport type DataIn = z.infer<typeof dataInSchema>;\n\n/**\n * Convert empty string to undefined before running schema validation\n * @param schema schema to validate against\n * @param defaultValue optional default value\n */\nfunction optionalStringValue<T extends z.core.SomeType>(schema: T) {\n return z.optional(\n z.pipe(\n z.union([z.undefined(), z.literal(''), schema]),\n z.transform((value) => (value === '' ? undefined : value)),\n ),\n );\n}\n","import { Step } from '@onereach/flow-sdk/step.js';\n\nimport { ErrorFilter } from '../../decorators/error-filter.ts';\nimport { dataInSchema } from '../../schemas/data-in.ts';\n\nimport type { BaseConfig } from './types.ts';\n\n// TODO: convert it into class decorator\nexport class BaseStep<T extends BaseConfig> extends Step<T> {\n @ErrorFilter\n public async resolveDataIn() {\n const dataIn = await super.resolveDataIn();\n return dataInSchema.parse(dataIn);\n }\n}\n","import { StateMachineThreadService } from '@onereach/state-machine-step-service';\nimport type { InitializeStateMachineContext, StateMachineService } from '@onereach/state-machine-step-service';\n\nimport { ErrorFilter } from '../../decorators/error-filter.ts';\nimport { ErrorCode, ExecuteStateMachineFunctionStepError } from '../../errors/step-error.ts';\nimport { validateFlowSdkVersion } from '../../utils/validate-flow-sdk-version.ts';\nimport { BaseStep } from '../base/base.ts';\n\nimport type { ExecuteStateMachineFunctionConfig, InitializeStateMachineOut } from './types.ts';\n\nconst MINIMAL_FLOW_SDK_VERSION = '8.0.72'; // TODO: move requirement to step-service\n\nexport class ExecuteStateMachineFunctionStep extends BaseStep<ExecuteStateMachineFunctionConfig> {\n private get stateMachine(): StateMachineService<InitializeStateMachineContext> {\n const service = new StateMachineThreadService<ExecuteStateMachineFunctionConfig, InitializeStateMachineContext>(\n this.thread,\n {\n cache: this.data._testSettings?.cache,\n // instanceTtl: this.instanceTtl,\n },\n );\n return service.stateMachine;\n }\n\n private getStateId(): string {\n // const { stateId, stateMachineStepData } = this.data;\n const { stateId } = this.data;\n\n let stateIdResult: string | undefined;\n\n // if (stateMachineStepData) {\n // const stateMachineStepDataOut = stateMachineStepData.step.data.dataOut.name;\n // const stateMachineDataOut = await this.get<InitializeStateMachineOut>(stateMachineStepDataOut);\n // stateIdResult = stateMachineDataOut?.id;\n // }\n\n if (stateIdResult === undefined && stateId) stateIdResult = stateId;\n\n if (stateIdResult === undefined)\n throw new ExecuteStateMachineFunctionStepError('State Machine instance ID not defined', {\n code: ErrorCode.VALIDATION,\n // data: {\n // stateId,\n // // dataOut: stateMachineStepData?.step.data.dataOut.name,\n // },\n });\n\n return stateIdResult;\n }\n\n // private get instanceTtl(): number | undefined {\n // const { stateTtl } = this.data;\n // return stateTtl?.input ? timestring(stateTtl.input, stateTtl.outputMode) : undefined;\n // }\n\n @ErrorFilter\n public async runStep(): Promise<void> {\n await validateFlowSdkVersion(MINIMAL_FLOW_SDK_VERSION);\n\n const { functionName, functionArgs, functionContext, localBroadcast, remoteBroadcast, stateMachineStep } =\n this.data;\n\n // execute the state machine\n const context = functionContext ?? {};\n const result = await this.stateMachine.execute({ id: this.getStateId() }, functionName, functionArgs, context);\n\n if (result.kind === 'mutation') {\n if (localBroadcast && stateMachineStep) {\n // notify change listener\n await this.process.enqueueAndRun({\n name: 'st_cgd', // TODO: move constant to step-service\n thread: `sm_mgr_cng_lnr_${stateMachineStep}`, // TODO: move function to step-service\n params: { ts: Date.now() },\n });\n }\n if (remoteBroadcast) {\n // notify remote change listeners\n await this.thread.emitAsync({\n name: `sm/${result.instance.instance.template.id}/${result.instance.instance.id}`, // TODO: move function to step-service\n params: { ts: Date.now() },\n });\n }\n }\n\n this.exitStep('next', {\n kind: result.kind,\n output: result.output,\n snapshot: result.instance,\n });\n }\n}\n","import { install } from 'source-map-support';\n\n// enable source map support for better error stack traces\n// eslint-disable-next-line unicorn/no-top-level-side-effects\ninstall();\n\nexport const states = {};\n\nexport { ExecuteStateMachineFunctionStep as step, ExecuteStateMachineFunctionStep } from './threads/main/step.ts';\n\nexport type * from './types.ts';\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onereach/step-execute-state-machine-function",
|
|
3
|
-
"version": "1.0.0-framework.
|
|
3
|
+
"version": "1.0.0-framework.7",
|
|
4
4
|
"description": "Logic for Executing State Machine Function step",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"vitest": "^4.1.11"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@onereach/state-machine-step-service": "1.0.0-framework.
|
|
39
|
+
"@onereach/state-machine-step-service": "1.0.0-framework.7",
|
|
40
40
|
"source-map-support": "^0.5.21",
|
|
41
41
|
"timestring": "^7.0.0",
|
|
42
42
|
"tslib": "2.8.1",
|