@maxdrellin/xenocline 0.0.4 → 0.0.6

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.
Files changed (37) hide show
  1. package/dist/aggregator.js.map +1 -1
  2. package/dist/event/aggregator.js.map +1 -1
  3. package/dist/event/event.js.map +1 -1
  4. package/dist/event/node.js.map +1 -1
  5. package/dist/event/phase.js.map +1 -1
  6. package/dist/event/process.js.map +1 -1
  7. package/dist/event/transition.js.map +1 -1
  8. package/dist/execution/aggregator.js.map +1 -1
  9. package/dist/execution/event.js.map +1 -1
  10. package/dist/execution/next.js.map +1 -1
  11. package/dist/execution/node.js.map +1 -1
  12. package/dist/execution/phase.js.map +1 -1
  13. package/dist/execution/process.js.map +1 -1
  14. package/dist/input.js.map +1 -1
  15. package/dist/node/aggregatornode.js.map +1 -1
  16. package/dist/node/node.js.map +1 -1
  17. package/dist/node/phasenode.js.map +1 -1
  18. package/dist/phase.js.map +1 -1
  19. package/dist/process.js.map +1 -1
  20. package/dist/transition/beginning.js.map +1 -1
  21. package/dist/transition/connection.js.map +1 -1
  22. package/dist/transition/decision.js.map +1 -1
  23. package/dist/transition/next.js.map +1 -1
  24. package/dist/transition/termination.js.map +1 -1
  25. package/dist/transition/transition.js.map +1 -1
  26. package/dist/util/general.js.map +1 -1
  27. package/dist/utility/event/eventfilter.js.map +1 -1
  28. package/dist/utility/event/filteredhandler.js.map +1 -1
  29. package/dist/xenocline.cjs +0 -0
  30. package/dist/xenocline.cjs.map +1 -1
  31. package/package.json +32 -32
  32. package/scripts/pre-commit-hook.sh +52 -0
  33. package/.doccident-setup.mjs +0 -36
  34. package/.kodrdriv/config.yaml +0 -10
  35. package/.kodrdriv/context/content.md +0 -26
  36. package/__mocks__/src/execution/event.js +0 -8
  37. package/eslint.config.mjs +0 -82
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sources":["../src/process.ts"],"sourcesContent":["//import * as ClassifyPhase from './phases/classify';\n// import * as TranscribePhase from './phases/transcribe';\n// import * as ComposePhase from './phases/compose';\n// import * as CompletePhase from './phases/complete';\nimport { AggregatorNode } from './node/aggregatornode';\nimport { validateNode } from './node/node';\nimport { PhaseNode } from './node/phasenode';\nimport { Connection, isConnection } from './transition/connection';\nimport { clean } from './util/general';\n// Removed: import { Phase } from './phase';\n// Removed: import { Event, EventHandler, EventState, createEventState } from './event';\n\nexport interface ProcessOptions {\n phases: Record<string, PhaseNode | AggregatorNode>;\n // Removed: eventHandlers?: ReadonlyArray<EventHandler<Event, C>>;\n}\n\nexport interface Process {\n name: string;\n phases: Record<string, PhaseNode | AggregatorNode>;\n // Removed: readonly eventState: Readonly<EventState<C>>;\n}\n\nexport const createProcess = (\n name: string,\n options: Partial<ProcessOptions>\n): Readonly<Process> => {\n const defaultOptions: ProcessOptions = {\n phases: {},\n // Removed: eventHandlers: [],\n };\n\n const processOptions: ProcessOptions = { ...defaultOptions, ...clean(options) };\n\n // Removed: const eventState = createEventState<C>(processOptions.eventHandlers);\n\n return {\n name,\n phases: processOptions.phases,\n // Removed: eventState\n };\n}\n\nexport const isProcess = (obj: any): obj is Process => {\n return obj !== undefined && obj !== null && typeof obj === 'object' && typeof obj.name === 'string' && typeof obj.phases === 'object';\n}\n\nexport const validateProcess = (\n item: any,\n coordinates?: string[]\n): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Process'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Process is undefined or null.' });\n return errors;\n }\n\n if (item.name === undefined || typeof item.name !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Process name is undefined or not a string.' });\n }\n\n const processNameForPath = typeof item.name === 'string' ? item.name : 'UnnamedProcess';\n const basePath = [...currentCoordinates, `name:${processNameForPath}`];\n\n if (item.phases === undefined || typeof item.phases !== 'object') {\n errors.push({ coordinates: [...basePath, 'phases'], error: 'Process phases is undefined or not an object.' });\n } else {\n for (const phaseId in item.phases) {\n const node = item.phases[phaseId];\n if (Object.prototype.hasOwnProperty.call(item.phases, phaseId)) {\n errors.push(...validateNode(node, [...basePath, 'phases', phaseId]));\n }\n }\n\n for (const phaseId in item.phases) {\n if (Object.prototype.hasOwnProperty.call(item.phases, phaseId)) {\n const node = item.phases[phaseId];\n if (node && typeof node === 'object' && node.next) {\n if (Array.isArray(node.next)) {\n const transitions = node.next as any[];\n if (transitions.length > 0 && transitions.every(t => isConnection(t))) {\n (transitions as Connection[]).forEach((connection, index) => {\n if (connection && typeof connection.targetNodeId === 'string') {\n if (!(connection.targetNodeId in item.phases)) {\n errors.push({\n coordinates: [...basePath, 'phases', phaseId, 'next', connection.id || `connection-at-index-${index}`],\n error: `Node \"${phaseId}\" has a connection to non-existent targetNodeId \"${connection.targetNodeId}\".`\n });\n }\n } else if (!connection || connection.targetNodeId === undefined) {\n // This case should ideally be caught by validateConnection within validateNode's call to validateNext\n // but adding a fallback or note if connection structure itself is broken at this stage.\n // errors.push({\n // coordinates: [...basePath, 'phases', phaseId, 'next', `connection-at-index-${index}`],\n // error: `Connection at index ${index} for node \"${phaseId}\" is malformed or missing targetNodeId.`\n // });\n }\n });\n }\n }\n }\n }\n }\n }\n\n return errors;\n}"],"names":["createProcess","name","options","defaultOptions","phases","processOptions","clean","isProcess","obj","undefined","validateProcess","item","coordinates","errors","currentCoordinates","push","error","processNameForPath","basePath","phaseId","node","Object","prototype","hasOwnProperty","call","validateNode","next","Array","isArray","transitions","length","every","t","isConnection","forEach","connection","index","targetNodeId","id"],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sources":["../src/process.ts"],"sourcesContent":["//import * as ClassifyPhase from './phases/classify';\n// import * as TranscribePhase from './phases/transcribe';\n// import * as ComposePhase from './phases/compose';\n// import * as CompletePhase from './phases/complete';\nimport { AggregatorNode } from './node/aggregatornode';\nimport { validateNode } from './node/node';\nimport { PhaseNode } from './node/phasenode';\nimport { Connection, isConnection } from './transition/connection';\nimport { clean } from './util/general';\n// Removed: import { Phase } from './phase';\n// Removed: import { Event, EventHandler, EventState, createEventState } from './event';\n\nexport interface ProcessOptions {\n phases: Record<string, PhaseNode | AggregatorNode>;\n // Removed: eventHandlers?: ReadonlyArray<EventHandler<Event, C>>;\n}\n\nexport interface Process {\n name: string;\n phases: Record<string, PhaseNode | AggregatorNode>;\n // Removed: readonly eventState: Readonly<EventState<C>>;\n}\n\nexport const createProcess = (\n name: string,\n options: Partial<ProcessOptions>\n): Readonly<Process> => {\n const defaultOptions: ProcessOptions = {\n phases: {},\n // Removed: eventHandlers: [],\n };\n\n const processOptions: ProcessOptions = { ...defaultOptions, ...clean(options) };\n\n // Removed: const eventState = createEventState<C>(processOptions.eventHandlers);\n\n return {\n name,\n phases: processOptions.phases,\n // Removed: eventState\n };\n}\n\nexport const isProcess = (obj: any): obj is Process => {\n return obj !== undefined && obj !== null && typeof obj === 'object' && typeof obj.name === 'string' && typeof obj.phases === 'object';\n}\n\nexport const validateProcess = (\n item: any,\n coordinates?: string[]\n): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Process'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Process is undefined or null.' });\n return errors;\n }\n\n if (item.name === undefined || typeof item.name !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Process name is undefined or not a string.' });\n }\n\n const processNameForPath = typeof item.name === 'string' ? item.name : 'UnnamedProcess';\n const basePath = [...currentCoordinates, `name:${processNameForPath}`];\n\n if (item.phases === undefined || typeof item.phases !== 'object') {\n errors.push({ coordinates: [...basePath, 'phases'], error: 'Process phases is undefined or not an object.' });\n } else {\n for (const phaseId in item.phases) {\n const node = item.phases[phaseId];\n if (Object.prototype.hasOwnProperty.call(item.phases, phaseId)) {\n errors.push(...validateNode(node, [...basePath, 'phases', phaseId]));\n }\n }\n\n for (const phaseId in item.phases) {\n if (Object.prototype.hasOwnProperty.call(item.phases, phaseId)) {\n const node = item.phases[phaseId];\n if (node && typeof node === 'object' && node.next) {\n if (Array.isArray(node.next)) {\n const transitions = node.next as any[];\n if (transitions.length > 0 && transitions.every(t => isConnection(t))) {\n (transitions as Connection[]).forEach((connection, index) => {\n if (connection && typeof connection.targetNodeId === 'string') {\n if (!(connection.targetNodeId in item.phases)) {\n errors.push({\n coordinates: [...basePath, 'phases', phaseId, 'next', connection.id || `connection-at-index-${index}`],\n error: `Node \"${phaseId}\" has a connection to non-existent targetNodeId \"${connection.targetNodeId}\".`\n });\n }\n } else if (!connection || connection.targetNodeId === undefined) {\n // This case should ideally be caught by validateConnection within validateNode's call to validateNext\n // but adding a fallback or note if connection structure itself is broken at this stage.\n // errors.push({\n // coordinates: [...basePath, 'phases', phaseId, 'next', `connection-at-index-${index}`],\n // error: `Connection at index ${index} for node \"${phaseId}\" is malformed or missing targetNodeId.`\n // });\n }\n });\n }\n }\n }\n }\n }\n }\n\n return errors;\n}"],"names":["createProcess","name","options","defaultOptions","phases","processOptions","clean","isProcess","obj","undefined","validateProcess","item","coordinates","errors","currentCoordinates","push","error","processNameForPath","basePath","phaseId","node","Object","prototype","hasOwnProperty","call","validateNode","next","Array","isArray","transitions","length","every","t","isConnection","forEach","connection","index","targetNodeId","id"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"beginning.js","sources":["../../src/transition/beginning.ts"],"sourcesContent":["// NEW: Termination type extending Transition\n/**\n * Represents a termination point in the process flow, consuming a phase's output.\n */\n\nimport { clean } from '../util/general';\nimport { Context } from '../context';\nimport { Input } from '../input';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type BeginFunction<I extends Input = Input, C extends Context = Context> = (input: I, context: C) => Promise<Input>;\n\nexport interface Beginning<\n I extends Input = Input,\n C extends Context = Context,\n> extends Transition {\n type: 'beginning';\n targetNodeId: string;\n // Currently, Termination is a marker type.\n // Future properties could include:\n // reason?: string; // To describe why termination occurred\n begin: BeginFunction<I, C>; // A function to execute upon beginning\n}\n\nexport interface BeginningOptions<I extends Input = Input, C extends Context = Context> {\n begin: BeginFunction<I, C>;\n}\n\nexport const DEFAULT_BEGINNING_OPTIONS: BeginningOptions<Input, Context> = {\n begin: async (input) => {\n return input;\n }\n};\n\nexport const createBeginning = <I extends Input = Input, C extends Context = Context>(\n id: string,\n targetNodeId: string,\n options?: Partial<BeginningOptions<I, C>>\n): Readonly<Beginning<I, C>> => {\n let beginningOptions: BeginningOptions<I, C> = { ...DEFAULT_BEGINNING_OPTIONS };\n if (options) {\n beginningOptions = { ...beginningOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('beginning', id),\n targetNodeId,\n begin: beginningOptions.begin,\n } as Beginning<I, C>;\n};\n\nexport const isBeginning = <I extends Input = Input, C extends Context = Context>(item: any): item is Beginning<I, C> => {\n return isTransition(item) &&\n item.type === 'beginning' &&\n ((item as Beginning<I, C>).begin === undefined || typeof (item as Beginning<I, C>).begin === 'function');\n};\n\nexport const validateBeginning = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Beginning'];\n\n errors.push(...validateTransition(item, currentCoordinates));\n\n if (errors.length === 0) {\n currentCoordinates.push(`Termination: ${item.id}`);\n\n if (item.begin !== undefined && typeof item.begin !== 'function') {\n errors.push({ coordinates: [...currentCoordinates], error: 'begin is not a function.' });\n }\n }\n\n return errors;\n};\n"],"names":["DEFAULT_BEGINNING_OPTIONS","begin","input","createBeginning","id","targetNodeId","options","beginningOptions","clean","createTransition","isBeginning","item","isTransition","type","undefined"],"mappings":";;;AAAA;MA4BaA,yBAA8D,GAAA;AACvEC,IAAAA,KAAAA,EAAO,OAAOC,KAAAA,GAAAA;QACV,OAAOA,KAAAA;AACX;AACJ;AAEaC,MAAAA,eAAAA,GAAkB,CAC3BC,EAAAA,EACAC,YACAC,EAAAA,OAAAA,GAAAA;AAEA,IAAA,IAAIC,gBAA2C,GAAA;AAAE,QAAA,GAAGP;AAA0B,KAAA;AAC9E,IAAA,IAAIM,OAAS,EAAA;QACTC,gBAAmB,GAAA;AAAE,YAAA,GAAGA,gBAAgB;AAAE,YAAA,GAAGC,MAAMF,OAAQ;AAAC,SAAA;AAChE;IAEA,OAAO;QACH,GAAGG,gBAAAA,CAAiB,aAAaL,EAAG,CAAA;AACpCC,QAAAA,YAAAA;AACAJ,QAAAA,KAAAA,EAAOM,iBAAiBN;AAC5B,KAAA;AACJ;AAEO,MAAMS,cAAc,CAAuDC,IAAAA,GAAAA;AAC9E,IAAA,OAAOC,aAAaD,IAChBA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK,gBACZF,IAAyBV,CAAAA,KAAK,KAAKa,SAAa,IAAA,OAAO,IAA0Bb,CAAAA,KAAK,KAAK,UAAS,CAAA;AAC9G;;;;"}
1
+ {"version":3,"file":"beginning.js","sources":["../../src/transition/beginning.ts"],"sourcesContent":["// NEW: Termination type extending Transition\n/**\n * Represents a termination point in the process flow, consuming a phase's output.\n */\n\nimport { clean } from '../util/general';\nimport { Context } from '../context';\nimport { Input } from '../input';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type BeginFunction<I extends Input = Input, C extends Context = Context> = (input: I, context: C) => Promise<Input>;\n\nexport interface Beginning<\n I extends Input = Input,\n C extends Context = Context,\n> extends Transition {\n type: 'beginning';\n targetNodeId: string;\n // Currently, Termination is a marker type.\n // Future properties could include:\n // reason?: string; // To describe why termination occurred\n begin: BeginFunction<I, C>; // A function to execute upon beginning\n}\n\nexport interface BeginningOptions<I extends Input = Input, C extends Context = Context> {\n begin: BeginFunction<I, C>;\n}\n\nexport const DEFAULT_BEGINNING_OPTIONS: BeginningOptions<Input, Context> = {\n begin: async (input) => {\n return input;\n }\n};\n\nexport const createBeginning = <I extends Input = Input, C extends Context = Context>(\n id: string,\n targetNodeId: string,\n options?: Partial<BeginningOptions<I, C>>\n): Readonly<Beginning<I, C>> => {\n let beginningOptions: BeginningOptions<I, C> = { ...DEFAULT_BEGINNING_OPTIONS };\n if (options) {\n beginningOptions = { ...beginningOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('beginning', id),\n targetNodeId,\n begin: beginningOptions.begin,\n } as Beginning<I, C>;\n};\n\nexport const isBeginning = <I extends Input = Input, C extends Context = Context>(item: any): item is Beginning<I, C> => {\n return isTransition(item) &&\n item.type === 'beginning' &&\n ((item as Beginning<I, C>).begin === undefined || typeof (item as Beginning<I, C>).begin === 'function');\n};\n\nexport const validateBeginning = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Beginning'];\n\n errors.push(...validateTransition(item, currentCoordinates));\n\n if (errors.length === 0) {\n currentCoordinates.push(`Termination: ${item.id}`);\n\n if (item.begin !== undefined && typeof item.begin !== 'function') {\n errors.push({ coordinates: [...currentCoordinates], error: 'begin is not a function.' });\n }\n }\n\n return errors;\n};\n"],"names":["DEFAULT_BEGINNING_OPTIONS","begin","input","createBeginning","id","targetNodeId","options","beginningOptions","clean","createTransition","isBeginning","item","isTransition","type","undefined"],"mappings":";;;AAAA;MA4BaA,yBAAAA,GAA8D;AACvEC,IAAAA,KAAAA,EAAO,OAAOC,KAAAA,GAAAA;QACV,OAAOA,KAAAA;AACX,IAAA;AACJ;AAEO,MAAMC,eAAAA,GAAkB,CAC3BC,EAAAA,EACAC,YAAAA,EACAC,OAAAA,GAAAA;AAEA,IAAA,IAAIC,gBAAAA,GAA2C;AAAE,QAAA,GAAGP;AAA0B,KAAA;AAC9E,IAAA,IAAIM,OAAAA,EAAS;QACTC,gBAAAA,GAAmB;AAAE,YAAA,GAAGA,gBAAgB;AAAE,YAAA,GAAGC,MAAMF,OAAAA;AAAS,SAAA;AAChE,IAAA;IAEA,OAAO;QACH,GAAGG,gBAAAA,CAAiB,aAAaL,EAAAA,CAAG;AACpCC,QAAAA,YAAAA;AACAJ,QAAAA,KAAAA,EAAOM,iBAAiBN;AAC5B,KAAA;AACJ;AAEO,MAAMS,cAAc,CAAuDC,IAAAA,GAAAA;AAC9E,IAAA,OAAOC,aAAaD,IAAAA,CAAAA,IAChBA,IAAAA,CAAKE,IAAI,KAAK,gBACZF,IAAAA,CAAyBV,KAAK,KAAKa,SAAAA,IAAa,OAAO,IAACH,CAAyBV,KAAK,KAAK,UAAS,CAAA;AAC9G;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sources":["../../src/transition/connection.ts"],"sourcesContent":["import { Input } from '../input';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\nimport { clean } from '../util/general';\n\nexport type TransformFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<[Input, C]>;\n\n// MODIFIED: Connection to extend Transition\nexport interface Connection<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'connection';\n targetNodeId: string; // ID of the target PhaseNode in the process's phases collection\n // Optional function to transform the output of the current phase\n // to the input of the target phase.\n // If not provided, the output is assumed to be compatible directly.\n transform: TransformFunction<O, C>;\n}\n\nexport interface ConnectionOptions<O extends Output = Output, C extends Context = Context> {\n transform: TransformFunction<O, C>;\n}\n\nexport const DEFAULT_CONNECTION_OPTIONS: ConnectionOptions = {\n transform: async (output, context) => {\n return [output as Input, context];\n }\n};\n\nexport const createConnection = <O extends Output = Output, C extends Context = Context>(\n id: string,\n targetNodeId: string,\n options?: Partial<ConnectionOptions<O, C>>\n): Readonly<Connection<O, C>> => {\n\n let connectionOptions: ConnectionOptions<O, C> = { ...DEFAULT_CONNECTION_OPTIONS } as unknown as ConnectionOptions<O, C>;\n\n if (options) {\n connectionOptions = { ...connectionOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('connection', id),\n targetNodeId,\n transform: connectionOptions.transform,\n } as Connection<O, C>;\n};\n\nexport const isConnection = <O extends Output = Output, C extends Context = Context>(item: any): item is Connection<O, C> => {\n return isTransition(item) && item.type === 'connection' && (item as Connection<O, C>).targetNodeId !== undefined;\n};\n\nexport const validateConnection = (\n item: any,\n coordinates?: string[]\n): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const connectionBaseCoordinates = [...(coordinates || []), 'Connection'];\n\n errors.push(...validateTransition(item, coordinates));\n\n if (errors.length === 0) {\n if (item && typeof item === 'object') {\n const connectionSpecificErrorPath = [...connectionBaseCoordinates, `Connection: ${item.id}`];\n\n if (item.type === 'connection') {\n if (typeof item.targetNodeId !== 'string') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"targetNodeId\" must be a string when type is \"connection\".' });\n }\n // transform is optional, but if present, must be a function.\n if (item.transform !== undefined && typeof item.transform !== 'function') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Optional property \"transform\" must be a function if present.' });\n }\n } else {\n // If type is not 'connection', but these properties exist and are malformed.\n // This primarily helps catch if a non-connection object has these fields incorrectly defined.\n if (item.targetNodeId !== undefined && typeof item.targetNodeId !== 'string') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"targetNodeId\" is present but is not a string.' });\n }\n if (item.transform !== undefined && typeof item.transform !== 'function') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"transform\" is present but is not a function.' });\n }\n }\n }\n }\n return errors;\n};\n\n/**\n * Event emitted specifically for connection transitions.\n */\nexport interface ConnectionEvent extends TransitionEvent {\n transitionType: 'connection';\n}\n"],"names":["DEFAULT_CONNECTION_OPTIONS","transform","output","context","createConnection","id","targetNodeId","options","connectionOptions","clean","createTransition","isConnection","item","isTransition","type","undefined","validateConnection","coordinates","errors","connectionBaseCoordinates","push","validateTransition","length","connectionSpecificErrorPath","error"],"mappings":";;;MAyBaA,0BAAgD,GAAA;AACzDC,IAAAA,SAAAA,EAAW,OAAOC,MAAQC,EAAAA,OAAAA,GAAAA;QACtB,OAAO;AAACD,YAAAA,MAAAA;AAAiBC,YAAAA;AAAQ,SAAA;AACrC;AACJ;AAEaC,MAAAA,gBAAAA,GAAmB,CAC5BC,EAAAA,EACAC,YACAC,EAAAA,OAAAA,GAAAA;AAGA,IAAA,IAAIC,iBAA6C,GAAA;AAAE,QAAA,GAAGR;AAA2B,KAAA;AAEjF,IAAA,IAAIO,OAAS,EAAA;QACTC,iBAAoB,GAAA;AAAE,YAAA,GAAGA,iBAAiB;AAAE,YAAA,GAAGC,MAAMF,OAAQ;AAAC,SAAA;AAClE;IAEA,OAAO;QACH,GAAGG,gBAAAA,CAAiB,cAAcL,EAAG,CAAA;AACrCC,QAAAA,YAAAA;AACAL,QAAAA,SAAAA,EAAWO,kBAAkBP;AACjC,KAAA;AACJ;AAEO,MAAMU,eAAe,CAAyDC,IAAAA,GAAAA;IACjF,OAAOC,YAAAA,CAAaD,SAASA,IAAKE,CAAAA,IAAI,KAAK,YAAgB,IAACF,IAA0BN,CAAAA,YAAY,KAAKS,SAAAA;AAC3G;AAEO,MAAMC,kBAAqB,GAAA,CAC9BJ,IACAK,EAAAA,WAAAA,GAAAA;AAEA,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,yBAA4B,GAAA;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAa,KAAA;IAExEC,MAAOE,CAAAA,IAAI,CAAIC,GAAAA,kBAAAA,CAAmBT,IAAMK,EAAAA,WAAAA,CAAAA,CAAAA;IAExC,IAAIC,MAAAA,CAAOI,MAAM,KAAK,CAAG,EAAA;QACrB,IAAIV,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAU,EAAA;AAClC,YAAA,MAAMW,2BAA8B,GAAA;AAAIJ,gBAAAA,GAAAA,yBAAAA;AAA2B,gBAAA,CAAC,YAAY,EAAEP,IAAKP,CAAAA,EAAE,CAAE;AAAC,aAAA;YAE5F,IAAIO,IAAAA,CAAKE,IAAI,KAAK,YAAc,EAAA;AAC5B,gBAAA,IAAI,OAAOF,IAAAA,CAAKN,YAAY,KAAK,QAAU,EAAA;AACvCY,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,2BAAAA;wBAA6BC,KAAO,EAAA;AAAsE,qBAAA,CAAA;AACzI;;gBAEA,IAAIZ,IAAAA,CAAKX,SAAS,KAAKc,SAAAA,IAAa,OAAOH,IAAKX,CAAAA,SAAS,KAAK,UAAY,EAAA;AACtEiB,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,2BAAAA;wBAA6BC,KAAO,EAAA;AAA+D,qBAAA,CAAA;AAClI;aACG,MAAA;;;gBAGH,IAAIZ,IAAAA,CAAKN,YAAY,KAAKS,SAAAA,IAAa,OAAOH,IAAKN,CAAAA,YAAY,KAAK,QAAU,EAAA;AAC1EY,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,2BAAAA;wBAA6BC,KAAO,EAAA;AAA0D,qBAAA,CAAA;AAC7H;gBACA,IAAIZ,IAAAA,CAAKX,SAAS,KAAKc,SAAAA,IAAa,OAAOH,IAAKX,CAAAA,SAAS,KAAK,UAAY,EAAA;AACtEiB,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,2BAAAA;wBAA6BC,KAAO,EAAA;AAAyD,qBAAA,CAAA;AAC5H;AACJ;AACJ;AACJ;IACA,OAAON,MAAAA;AACX;;;;"}
1
+ {"version":3,"file":"connection.js","sources":["../../src/transition/connection.ts"],"sourcesContent":["import { Input } from '../input';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\nimport { clean } from '../util/general';\n\nexport type TransformFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<[Input, C]>;\n\n// MODIFIED: Connection to extend Transition\nexport interface Connection<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'connection';\n targetNodeId: string; // ID of the target PhaseNode in the process's phases collection\n // Optional function to transform the output of the current phase\n // to the input of the target phase.\n // If not provided, the output is assumed to be compatible directly.\n transform: TransformFunction<O, C>;\n}\n\nexport interface ConnectionOptions<O extends Output = Output, C extends Context = Context> {\n transform: TransformFunction<O, C>;\n}\n\nexport const DEFAULT_CONNECTION_OPTIONS: ConnectionOptions = {\n transform: async (output, context) => {\n return [output as Input, context];\n }\n};\n\nexport const createConnection = <O extends Output = Output, C extends Context = Context>(\n id: string,\n targetNodeId: string,\n options?: Partial<ConnectionOptions<O, C>>\n): Readonly<Connection<O, C>> => {\n\n let connectionOptions: ConnectionOptions<O, C> = { ...DEFAULT_CONNECTION_OPTIONS } as unknown as ConnectionOptions<O, C>;\n\n if (options) {\n connectionOptions = { ...connectionOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('connection', id),\n targetNodeId,\n transform: connectionOptions.transform,\n } as Connection<O, C>;\n};\n\nexport const isConnection = <O extends Output = Output, C extends Context = Context>(item: any): item is Connection<O, C> => {\n return isTransition(item) && item.type === 'connection' && (item as Connection<O, C>).targetNodeId !== undefined;\n};\n\nexport const validateConnection = (\n item: any,\n coordinates?: string[]\n): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const connectionBaseCoordinates = [...(coordinates || []), 'Connection'];\n\n errors.push(...validateTransition(item, coordinates));\n\n if (errors.length === 0) {\n if (item && typeof item === 'object') {\n const connectionSpecificErrorPath = [...connectionBaseCoordinates, `Connection: ${item.id}`];\n\n if (item.type === 'connection') {\n if (typeof item.targetNodeId !== 'string') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"targetNodeId\" must be a string when type is \"connection\".' });\n }\n // transform is optional, but if present, must be a function.\n if (item.transform !== undefined && typeof item.transform !== 'function') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Optional property \"transform\" must be a function if present.' });\n }\n } else {\n // If type is not 'connection', but these properties exist and are malformed.\n // This primarily helps catch if a non-connection object has these fields incorrectly defined.\n if (item.targetNodeId !== undefined && typeof item.targetNodeId !== 'string') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"targetNodeId\" is present but is not a string.' });\n }\n if (item.transform !== undefined && typeof item.transform !== 'function') {\n errors.push({ coordinates: connectionSpecificErrorPath, error: 'Property \"transform\" is present but is not a function.' });\n }\n }\n }\n }\n return errors;\n};\n\n/**\n * Event emitted specifically for connection transitions.\n */\nexport interface ConnectionEvent extends TransitionEvent {\n transitionType: 'connection';\n}\n"],"names":["DEFAULT_CONNECTION_OPTIONS","transform","output","context","createConnection","id","targetNodeId","options","connectionOptions","clean","createTransition","isConnection","item","isTransition","type","undefined","validateConnection","coordinates","errors","connectionBaseCoordinates","push","validateTransition","length","connectionSpecificErrorPath","error"],"mappings":";;;MAyBaA,0BAAAA,GAAgD;AACzDC,IAAAA,SAAAA,EAAW,OAAOC,MAAAA,EAAQC,OAAAA,GAAAA;QACtB,OAAO;AAACD,YAAAA,MAAAA;AAAiBC,YAAAA;AAAQ,SAAA;AACrC,IAAA;AACJ;AAEO,MAAMC,gBAAAA,GAAmB,CAC5BC,EAAAA,EACAC,YAAAA,EACAC,OAAAA,GAAAA;AAGA,IAAA,IAAIC,iBAAAA,GAA6C;AAAE,QAAA,GAAGR;AAA2B,KAAA;AAEjF,IAAA,IAAIO,OAAAA,EAAS;QACTC,iBAAAA,GAAoB;AAAE,YAAA,GAAGA,iBAAiB;AAAE,YAAA,GAAGC,MAAMF,OAAAA;AAAS,SAAA;AAClE,IAAA;IAEA,OAAO;QACH,GAAGG,gBAAAA,CAAiB,cAAcL,EAAAA,CAAG;AACrCC,QAAAA,YAAAA;AACAL,QAAAA,SAAAA,EAAWO,kBAAkBP;AACjC,KAAA;AACJ;AAEO,MAAMU,eAAe,CAAyDC,IAAAA,GAAAA;IACjF,OAAOC,YAAAA,CAAaD,SAASA,IAAAA,CAAKE,IAAI,KAAK,YAAA,IAAiBF,IAAAA,CAA0BN,YAAY,KAAKS,SAAAA;AAC3G;AAEO,MAAMC,kBAAAA,GAAqB,CAC9BJ,IAAAA,EACAK,WAAAA,GAAAA;AAEA,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,yBAAAA,GAA4B;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAa,KAAA;IAExEC,MAAAA,CAAOE,IAAI,CAAA,GAAIC,kBAAAA,CAAmBT,IAAAA,EAAMK,WAAAA,CAAAA,CAAAA;IAExC,IAAIC,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;QACrB,IAAIV,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAA,EAAU;AAClC,YAAA,MAAMW,2BAAAA,GAA8B;AAAIJ,gBAAAA,GAAAA,yBAAAA;AAA2B,gBAAA,CAAC,YAAY,EAAEP,IAAAA,CAAKP,EAAE,CAAA;AAAG,aAAA;YAE5F,IAAIO,IAAAA,CAAKE,IAAI,KAAK,YAAA,EAAc;AAC5B,gBAAA,IAAI,OAAOF,IAAAA,CAAKN,YAAY,KAAK,QAAA,EAAU;AACvCY,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,2BAAAA;wBAA6BC,KAAAA,EAAO;AAAsE,qBAAA,CAAA;AACzI,gBAAA;;gBAEA,IAAIZ,IAAAA,CAAKX,SAAS,KAAKc,SAAAA,IAAa,OAAOH,IAAAA,CAAKX,SAAS,KAAK,UAAA,EAAY;AACtEiB,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,2BAAAA;wBAA6BC,KAAAA,EAAO;AAA+D,qBAAA,CAAA;AAClI,gBAAA;YACJ,CAAA,MAAO;;;gBAGH,IAAIZ,IAAAA,CAAKN,YAAY,KAAKS,SAAAA,IAAa,OAAOH,IAAAA,CAAKN,YAAY,KAAK,QAAA,EAAU;AAC1EY,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,2BAAAA;wBAA6BC,KAAAA,EAAO;AAA0D,qBAAA,CAAA;AAC7H,gBAAA;gBACA,IAAIZ,IAAAA,CAAKX,SAAS,KAAKc,SAAAA,IAAa,OAAOH,IAAAA,CAAKX,SAAS,KAAK,UAAA,EAAY;AACtEiB,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,2BAAAA;wBAA6BC,KAAAA,EAAO;AAAyD,qBAAA,CAAA;AAC5H,gBAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA;IACA,OAAON,MAAAA;AACX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"decision.js","sources":["../../src/transition/decision.ts"],"sourcesContent":["import { Termination } from '../xenocline';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { Connection } from './connection';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type DecideFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<Termination<O, C> | Connection<O, C>[]>;\n\n/**\n * Represents a decision point in the process flow, taking a phase's output and context\n * to determine the next step.\n */\nexport interface Decision<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'decision';\n decide: DecideFunction<O, C>;\n}\n\n\nexport const createDecision = <O extends Output = Output, C extends Context = Context>(\n id: string,\n decide: DecideFunction<O, C>\n): Readonly<Decision<O, C>> => {\n\n return {\n ...createTransition('decision', id),\n decide,\n } as Decision<O, C>;\n};\n\nexport const isDecision = <O extends Output = Output, C extends Context = Context>(item: any): item is Decision<O, C> => {\n return isTransition(item) && item.type === 'decision' && typeof (item as Decision<O, C>).decide === 'function';\n};\n\nexport const validateDecision = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const decisionBaseCoordinates = [...(coordinates || []), 'Decision'];\n\n errors.push(...validateTransition(item, coordinates));\n\n if (errors.length === 0) {\n if (item && typeof item === 'object') {\n const decisionSpecificErrorPath = [...decisionBaseCoordinates, `Decision: ${item.id}`];\n\n if (item.type === 'decision') {\n if (typeof item.decide !== 'function') {\n errors.push({ coordinates: decisionSpecificErrorPath, error: 'Property \"decide\" must be a function when type is \"decision\".' });\n }\n } else {\n // If type is not 'decision', but 'decide' property exists and is malformed.\n if (item.decide !== undefined && typeof item.decide !== 'function') {\n errors.push({ coordinates: decisionSpecificErrorPath, error: 'Property \"decide\" is present but is not a function.' });\n }\n }\n }\n }\n return errors;\n};"],"names":["createDecision","id","decide","createTransition","isDecision","item","isTransition","type","validateDecision","coordinates","errors","decisionBaseCoordinates","push","validateTransition","length","decisionSpecificErrorPath","error","undefined"],"mappings":";;AAqBO,MAAMA,cAAiB,GAAA,CAC1BC,EACAC,EAAAA,MAAAA,GAAAA;IAGA,OAAO;QACH,GAAGC,gBAAAA,CAAiB,YAAYF,EAAG,CAAA;AACnCC,QAAAA;AACJ,KAAA;AACJ;AAEO,MAAME,aAAa,CAAyDC,IAAAA,GAAAA;IAC/E,OAAOC,YAAAA,CAAaD,IAASA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK,cAAc,OAAQF,IAAwBH,CAAAA,MAAM,KAAK,UAAA;AACxG;AAEO,MAAMM,gBAAmB,GAAA,CAACH,IAAWI,EAAAA,WAAAA,GAAAA;AACxC,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,uBAA0B,GAAA;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAW,KAAA;IAEpEC,MAAOE,CAAAA,IAAI,CAAIC,GAAAA,kBAAAA,CAAmBR,IAAMI,EAAAA,WAAAA,CAAAA,CAAAA;IAExC,IAAIC,MAAAA,CAAOI,MAAM,KAAK,CAAG,EAAA;QACrB,IAAIT,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAU,EAAA;AAClC,YAAA,MAAMU,yBAA4B,GAAA;AAAIJ,gBAAAA,GAAAA,uBAAAA;AAAyB,gBAAA,CAAC,UAAU,EAAEN,IAAKJ,CAAAA,EAAE,CAAE;AAAC,aAAA;YAEtF,IAAII,IAAAA,CAAKE,IAAI,KAAK,UAAY,EAAA;AAC1B,gBAAA,IAAI,OAAOF,IAAAA,CAAKH,MAAM,KAAK,UAAY,EAAA;AACnCQ,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,yBAAAA;wBAA2BC,KAAO,EAAA;AAAgE,qBAAA,CAAA;AACjI;aACG,MAAA;;gBAEH,IAAIX,IAAAA,CAAKH,MAAM,KAAKe,SAAAA,IAAa,OAAOZ,IAAKH,CAAAA,MAAM,KAAK,UAAY,EAAA;AAChEQ,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAaM,EAAAA,yBAAAA;wBAA2BC,KAAO,EAAA;AAAsD,qBAAA,CAAA;AACvH;AACJ;AACJ;AACJ;IACA,OAAON,MAAAA;AACX;;;;"}
1
+ {"version":3,"file":"decision.js","sources":["../../src/transition/decision.ts"],"sourcesContent":["import { Termination } from '../xenocline';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { Connection } from './connection';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type DecideFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<Termination<O, C> | Connection<O, C>[]>;\n\n/**\n * Represents a decision point in the process flow, taking a phase's output and context\n * to determine the next step.\n */\nexport interface Decision<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'decision';\n decide: DecideFunction<O, C>;\n}\n\n\nexport const createDecision = <O extends Output = Output, C extends Context = Context>(\n id: string,\n decide: DecideFunction<O, C>\n): Readonly<Decision<O, C>> => {\n\n return {\n ...createTransition('decision', id),\n decide,\n } as Decision<O, C>;\n};\n\nexport const isDecision = <O extends Output = Output, C extends Context = Context>(item: any): item is Decision<O, C> => {\n return isTransition(item) && item.type === 'decision' && typeof (item as Decision<O, C>).decide === 'function';\n};\n\nexport const validateDecision = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const decisionBaseCoordinates = [...(coordinates || []), 'Decision'];\n\n errors.push(...validateTransition(item, coordinates));\n\n if (errors.length === 0) {\n if (item && typeof item === 'object') {\n const decisionSpecificErrorPath = [...decisionBaseCoordinates, `Decision: ${item.id}`];\n\n if (item.type === 'decision') {\n if (typeof item.decide !== 'function') {\n errors.push({ coordinates: decisionSpecificErrorPath, error: 'Property \"decide\" must be a function when type is \"decision\".' });\n }\n } else {\n // If type is not 'decision', but 'decide' property exists and is malformed.\n if (item.decide !== undefined && typeof item.decide !== 'function') {\n errors.push({ coordinates: decisionSpecificErrorPath, error: 'Property \"decide\" is present but is not a function.' });\n }\n }\n }\n }\n return errors;\n};"],"names":["createDecision","id","decide","createTransition","isDecision","item","isTransition","type","validateDecision","coordinates","errors","decisionBaseCoordinates","push","validateTransition","length","decisionSpecificErrorPath","error","undefined"],"mappings":";;AAqBO,MAAMA,cAAAA,GAAiB,CAC1BC,EAAAA,EACAC,MAAAA,GAAAA;IAGA,OAAO;QACH,GAAGC,gBAAAA,CAAiB,YAAYF,EAAAA,CAAG;AACnCC,QAAAA;AACJ,KAAA;AACJ;AAEO,MAAME,aAAa,CAAyDC,IAAAA,GAAAA;IAC/E,OAAOC,YAAAA,CAAaD,IAAAA,CAAAA,IAASA,IAAAA,CAAKE,IAAI,KAAK,cAAc,OAAQF,IAAAA,CAAwBH,MAAM,KAAK,UAAA;AACxG;AAEO,MAAMM,gBAAAA,GAAmB,CAACH,IAAAA,EAAWI,WAAAA,GAAAA;AACxC,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,uBAAAA,GAA0B;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAW,KAAA;IAEpEC,MAAAA,CAAOE,IAAI,CAAA,GAAIC,kBAAAA,CAAmBR,IAAAA,EAAMI,WAAAA,CAAAA,CAAAA;IAExC,IAAIC,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;QACrB,IAAIT,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAA,EAAU;AAClC,YAAA,MAAMU,yBAAAA,GAA4B;AAAIJ,gBAAAA,GAAAA,uBAAAA;AAAyB,gBAAA,CAAC,UAAU,EAAEN,IAAAA,CAAKJ,EAAE,CAAA;AAAG,aAAA;YAEtF,IAAII,IAAAA,CAAKE,IAAI,KAAK,UAAA,EAAY;AAC1B,gBAAA,IAAI,OAAOF,IAAAA,CAAKH,MAAM,KAAK,UAAA,EAAY;AACnCQ,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,yBAAAA;wBAA2BC,KAAAA,EAAO;AAAgE,qBAAA,CAAA;AACjI,gBAAA;YACJ,CAAA,MAAO;;gBAEH,IAAIX,IAAAA,CAAKH,MAAM,KAAKe,SAAAA,IAAa,OAAOZ,IAAAA,CAAKH,MAAM,KAAK,UAAA,EAAY;AAChEQ,oBAAAA,MAAAA,CAAOE,IAAI,CAAC;wBAAEH,WAAAA,EAAaM,yBAAAA;wBAA2BC,KAAAA,EAAO;AAAsD,qBAAA,CAAA;AACvH,gBAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA;IACA,OAAON,MAAAA;AACX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sources":["../../src/transition/next.ts"],"sourcesContent":["import { Output } from '../output';\nimport { Context } from '../context';\nimport { isTermination, Termination, validateTermination } from './termination';\nimport { Connection, isConnection, validateConnection } from './connection';\nimport { Decision, isDecision, validateDecision } from './decision';\n\ntype NonEmptyArray<T> = [T, ...T[]];\n\nexport type Next<O extends Output = Output, C extends Context = Context> = Termination<O, C> | Readonly<NonEmptyArray<Connection<O, C>>> | Readonly<NonEmptyArray<Decision<O, C>>>;\n\nexport const isNext = <O extends Output = Output, C extends Context = Context>(item: any): item is Next<O, C> => {\n if (isTermination<O, C>(item)) {\n return true;\n }\n\n if (!Array.isArray(item)) {\n return false;\n }\n\n if (item.length === 0) {\n return true;\n }\n\n const firstElement = item[0];\n if (isConnection<O, C>(firstElement)) {\n return item.every((el: any) => isConnection<O, C>(el));\n }\n if (isDecision<O, C>(firstElement)) {\n return item.every((el: any) => isDecision<O, C>(el));\n }\n\n return false;\n};\n\nconst validateDecisionOrConnectionArray = <O extends Output = Output, C extends Context = Context>(item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || [])];\n\n if (item.length === 0) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next Array is empty.' });\n return errors;\n }\n\n const firstElement = item[0];\n if (isConnection<O, C>(firstElement)) {\n for (const element of item) {\n errors.push(...validateConnection(element, currentCoordinates));\n }\n } else if (isDecision<O, C>(firstElement)) {\n for (const element of item) {\n errors.push(...validateDecision(element, currentCoordinates));\n }\n } else {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next Array contains invalid element types. Expected all Connections or all Decisions.' });\n }\n\n return errors;\n}\n\nexport const validateNext = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n\n const currentCoordinates = [...(coordinates || []), 'Next'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next is undefined or null.' });\n return errors;\n }\n\n if (Array.isArray(item)) {\n errors.push(...validateDecisionOrConnectionArray(item, currentCoordinates));\n } else {\n errors.push(...validateTermination(item, currentCoordinates));\n }\n\n return errors;\n}"],"names":["isNext","item","isTermination","Array","isArray","length","firstElement","isConnection","every","el","isDecision","validateDecisionOrConnectionArray","coordinates","errors","currentCoordinates","push","error","element","validateConnection","validateDecision","validateNext","undefined","validateTermination"],"mappings":"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"}
1
+ {"version":3,"file":"next.js","sources":["../../src/transition/next.ts"],"sourcesContent":["import { Output } from '../output';\nimport { Context } from '../context';\nimport { isTermination, Termination, validateTermination } from './termination';\nimport { Connection, isConnection, validateConnection } from './connection';\nimport { Decision, isDecision, validateDecision } from './decision';\n\ntype NonEmptyArray<T> = [T, ...T[]];\n\nexport type Next<O extends Output = Output, C extends Context = Context> = Termination<O, C> | Readonly<NonEmptyArray<Connection<O, C>>> | Readonly<NonEmptyArray<Decision<O, C>>>;\n\nexport const isNext = <O extends Output = Output, C extends Context = Context>(item: any): item is Next<O, C> => {\n if (isTermination<O, C>(item)) {\n return true;\n }\n\n if (!Array.isArray(item)) {\n return false;\n }\n\n if (item.length === 0) {\n return true;\n }\n\n const firstElement = item[0];\n if (isConnection<O, C>(firstElement)) {\n return item.every((el: any) => isConnection<O, C>(el));\n }\n if (isDecision<O, C>(firstElement)) {\n return item.every((el: any) => isDecision<O, C>(el));\n }\n\n return false;\n};\n\nconst validateDecisionOrConnectionArray = <O extends Output = Output, C extends Context = Context>(item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || [])];\n\n if (item.length === 0) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next Array is empty.' });\n return errors;\n }\n\n const firstElement = item[0];\n if (isConnection<O, C>(firstElement)) {\n for (const element of item) {\n errors.push(...validateConnection(element, currentCoordinates));\n }\n } else if (isDecision<O, C>(firstElement)) {\n for (const element of item) {\n errors.push(...validateDecision(element, currentCoordinates));\n }\n } else {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next Array contains invalid element types. Expected all Connections or all Decisions.' });\n }\n\n return errors;\n}\n\nexport const validateNext = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n\n const currentCoordinates = [...(coordinates || []), 'Next'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Next is undefined or null.' });\n return errors;\n }\n\n if (Array.isArray(item)) {\n errors.push(...validateDecisionOrConnectionArray(item, currentCoordinates));\n } else {\n errors.push(...validateTermination(item, currentCoordinates));\n }\n\n return errors;\n}"],"names":["isNext","item","isTermination","Array","isArray","length","firstElement","isConnection","every","el","isDecision","validateDecisionOrConnectionArray","coordinates","errors","currentCoordinates","push","error","element","validateConnection","validateDecision","validateNext","undefined","validateTermination"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"termination.js","sources":["../../src/transition/termination.ts"],"sourcesContent":["// NEW: Termination type extending Transition\n/**\n * Represents a termination point in the process flow, consuming a phase's output.\n */\n\nimport { clean } from '../util/general';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type TerminateFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<Output>;\n\nexport interface Termination<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'termination';\n // Currently, Termination is a marker type.\n // Future properties could include:\n // reason?: string; // To describe why termination occurred\n terminate: TerminateFunction<O, C>; // A function to execute upon termination\n}\n\nexport interface TerminationOptions<O extends Output = Output, C extends Context = Context> {\n terminate: TerminateFunction<O, C>;\n}\n\nexport const createTermination = <O extends Output = Output, C extends Context = Context>(\n id: string,\n options?: Partial<TerminationOptions<O, C>>\n): Readonly<Termination<O, C>> => {\n\n const defaultOptions: TerminationOptions<O, C> = {\n terminate: async (output) => {\n return output;\n }\n };\n\n let terminationOptions: TerminationOptions<O, C> = { ...defaultOptions };\n if (options) {\n terminationOptions = { ...terminationOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('termination', id),\n terminate: terminationOptions.terminate,\n } as Termination<O, C>;\n};\n\nexport const isTermination = <O extends Output = Output, C extends Context = Context>(item: any): item is Termination<O, C> => {\n return isTransition(item) &&\n item.type === 'termination' &&\n ((item as Termination<O, C>).terminate === undefined || typeof (item as Termination<O, C>).terminate === 'function');\n};\n\nexport const validateTermination = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Termination'];\n\n errors.push(...validateTransition(item, currentCoordinates));\n\n if (errors.length === 0) {\n currentCoordinates.push(`Termination: ${item.id}`);\n\n if (item.terminate !== undefined && typeof item.terminate !== 'function') {\n errors.push({ coordinates: [...currentCoordinates], error: 'terminate is not a function.' });\n }\n }\n\n return errors;\n};\n"],"names":["createTermination","id","options","defaultOptions","terminate","output","terminationOptions","clean","createTransition","isTermination","item","isTransition","type","undefined","validateTermination","coordinates","errors","currentCoordinates","push","validateTransition","length","error"],"mappings":";;;AAAA;AA2BO,MAAMA,iBAAoB,GAAA,CAC7BC,EACAC,EAAAA,OAAAA,GAAAA;AAGA,IAAA,MAAMC,cAA2C,GAAA;AAC7CC,QAAAA,SAAAA,EAAW,OAAOC,MAAAA,GAAAA;YACd,OAAOA,MAAAA;AACX;AACJ,KAAA;AAEA,IAAA,IAAIC,kBAA+C,GAAA;AAAE,QAAA,GAAGH;AAAe,KAAA;AACvE,IAAA,IAAID,OAAS,EAAA;QACTI,kBAAqB,GAAA;AAAE,YAAA,GAAGA,kBAAkB;AAAE,YAAA,GAAGC,MAAML,OAAQ;AAAC,SAAA;AACpE;IAEA,OAAO;QACH,GAAGM,gBAAAA,CAAiB,eAAeP,EAAG,CAAA;AACtCG,QAAAA,SAAAA,EAAWE,mBAAmBF;AAClC,KAAA;AACJ;AAEO,MAAMK,gBAAgB,CAAyDC,IAAAA,GAAAA;AAClF,IAAA,OAAOC,aAAaD,IAChBA,CAAAA,IAAAA,IAAAA,CAAKE,IAAI,KAAK,kBACZF,IAA2BN,CAAAA,SAAS,KAAKS,SAAa,IAAA,OAAO,IAA4BT,CAAAA,SAAS,KAAK,UAAS,CAAA;AAC1H;AAEO,MAAMU,mBAAsB,GAAA,CAACJ,IAAWK,EAAAA,WAAAA,GAAAA;AAC3C,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,kBAAqB,GAAA;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAc,KAAA;IAElEC,MAAOE,CAAAA,IAAI,CAAIC,GAAAA,kBAAAA,CAAmBT,IAAMO,EAAAA,kBAAAA,CAAAA,CAAAA;IAExC,IAAID,MAAAA,CAAOI,MAAM,KAAK,CAAG,EAAA;AACrBH,QAAAA,kBAAAA,CAAmBC,IAAI,CAAC,CAAC,aAAa,EAAER,IAAAA,CAAKT,EAAE,CAAE,CAAA,CAAA;QAEjD,IAAIS,IAAAA,CAAKN,SAAS,KAAKS,SAAAA,IAAa,OAAOH,IAAKN,CAAAA,SAAS,KAAK,UAAY,EAAA;AACtEY,YAAAA,MAAAA,CAAOE,IAAI,CAAC;gBAAEH,WAAa,EAAA;AAAIE,oBAAAA,GAAAA;AAAmB,iBAAA;gBAAEI,KAAO,EAAA;AAA+B,aAAA,CAAA;AAC9F;AACJ;IAEA,OAAOL,MAAAA;AACX;;;;"}
1
+ {"version":3,"file":"termination.js","sources":["../../src/transition/termination.ts"],"sourcesContent":["// NEW: Termination type extending Transition\n/**\n * Represents a termination point in the process flow, consuming a phase's output.\n */\n\nimport { clean } from '../util/general';\nimport { Context } from '../context';\nimport { Output } from '../output';\nimport { createTransition, isTransition, Transition, validateTransition } from './transition';\n\nexport type TerminateFunction<O extends Output = Output, C extends Context = Context> = (output: O, context: C) => Promise<Output>;\n\nexport interface Termination<\n O extends Output = Output,\n C extends Context = Context,\n> extends Transition {\n type: 'termination';\n // Currently, Termination is a marker type.\n // Future properties could include:\n // reason?: string; // To describe why termination occurred\n terminate: TerminateFunction<O, C>; // A function to execute upon termination\n}\n\nexport interface TerminationOptions<O extends Output = Output, C extends Context = Context> {\n terminate: TerminateFunction<O, C>;\n}\n\nexport const createTermination = <O extends Output = Output, C extends Context = Context>(\n id: string,\n options?: Partial<TerminationOptions<O, C>>\n): Readonly<Termination<O, C>> => {\n\n const defaultOptions: TerminationOptions<O, C> = {\n terminate: async (output) => {\n return output;\n }\n };\n\n let terminationOptions: TerminationOptions<O, C> = { ...defaultOptions };\n if (options) {\n terminationOptions = { ...terminationOptions, ...clean(options) };\n }\n\n return {\n ...createTransition('termination', id),\n terminate: terminationOptions.terminate,\n } as Termination<O, C>;\n};\n\nexport const isTermination = <O extends Output = Output, C extends Context = Context>(item: any): item is Termination<O, C> => {\n return isTransition(item) &&\n item.type === 'termination' &&\n ((item as Termination<O, C>).terminate === undefined || typeof (item as Termination<O, C>).terminate === 'function');\n};\n\nexport const validateTermination = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Termination'];\n\n errors.push(...validateTransition(item, currentCoordinates));\n\n if (errors.length === 0) {\n currentCoordinates.push(`Termination: ${item.id}`);\n\n if (item.terminate !== undefined && typeof item.terminate !== 'function') {\n errors.push({ coordinates: [...currentCoordinates], error: 'terminate is not a function.' });\n }\n }\n\n return errors;\n};\n"],"names":["createTermination","id","options","defaultOptions","terminate","output","terminationOptions","clean","createTransition","isTermination","item","isTransition","type","undefined","validateTermination","coordinates","errors","currentCoordinates","push","validateTransition","length","error"],"mappings":";;;AAAA;AA2BO,MAAMA,iBAAAA,GAAoB,CAC7BC,EAAAA,EACAC,OAAAA,GAAAA;AAGA,IAAA,MAAMC,cAAAA,GAA2C;AAC7CC,QAAAA,SAAAA,EAAW,OAAOC,MAAAA,GAAAA;YACd,OAAOA,MAAAA;AACX,QAAA;AACJ,KAAA;AAEA,IAAA,IAAIC,kBAAAA,GAA+C;AAAE,QAAA,GAAGH;AAAe,KAAA;AACvE,IAAA,IAAID,OAAAA,EAAS;QACTI,kBAAAA,GAAqB;AAAE,YAAA,GAAGA,kBAAkB;AAAE,YAAA,GAAGC,MAAML,OAAAA;AAAS,SAAA;AACpE,IAAA;IAEA,OAAO;QACH,GAAGM,gBAAAA,CAAiB,eAAeP,EAAAA,CAAG;AACtCG,QAAAA,SAAAA,EAAWE,mBAAmBF;AAClC,KAAA;AACJ;AAEO,MAAMK,gBAAgB,CAAyDC,IAAAA,GAAAA;AAClF,IAAA,OAAOC,aAAaD,IAAAA,CAAAA,IAChBA,IAAAA,CAAKE,IAAI,KAAK,kBACZF,IAAAA,CAA2BN,SAAS,KAAKS,SAAAA,IAAa,OAAO,IAACH,CAA2BN,SAAS,KAAK,UAAS,CAAA;AAC1H;AAEO,MAAMU,mBAAAA,GAAsB,CAACJ,IAAAA,EAAWK,WAAAA,GAAAA;AAC3C,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,kBAAAA,GAAqB;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAc,KAAA;IAElEC,MAAAA,CAAOE,IAAI,CAAA,GAAIC,kBAAAA,CAAmBT,IAAAA,EAAMO,kBAAAA,CAAAA,CAAAA;IAExC,IAAID,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;AACrBH,QAAAA,kBAAAA,CAAmBC,IAAI,CAAC,CAAC,aAAa,EAAER,IAAAA,CAAKT,EAAE,CAAA,CAAE,CAAA;QAEjD,IAAIS,IAAAA,CAAKN,SAAS,KAAKS,SAAAA,IAAa,OAAOH,IAAAA,CAAKN,SAAS,KAAK,UAAA,EAAY;AACtEY,YAAAA,MAAAA,CAAOE,IAAI,CAAC;gBAAEH,WAAAA,EAAa;AAAIE,oBAAAA,GAAAA;AAAmB,iBAAA;gBAAEI,KAAAA,EAAO;AAA+B,aAAA,CAAA;AAC9F,QAAA;AACJ,IAAA;IAEA,OAAOL,MAAAA;AACX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"transition.js","sources":["../../src/transition/transition.ts"],"sourcesContent":["export type TransitionType = 'connection' | 'decision' | 'termination' | 'beginning';\n\n/**\n * Base interface for transitions between nodes in a process.\n * It is primarily a marker interface that allows Connection,\n * Decision and Termination to share common generics.\n */\nexport interface Transition {\n id: string;\n type: TransitionType;\n}\n\nexport const createTransition = (type: TransitionType, id: string): Readonly<Transition> => {\n return {\n id,\n type,\n };\n};\n\nexport const isTransition = (item: any): item is Transition => {\n return item !== null && typeof item === 'object' && typeof item.id === 'string' && (item.type === 'connection' || item.type === 'decision' || item.type === 'termination' || item.type === 'beginning');\n};\n\nexport const validateTransition = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Transition'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition is undefined or null.' });\n return errors;\n }\n\n if (typeof item !== 'object') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition is not an object.' });\n return errors;\n }\n\n if (item.id === undefined || typeof item.id !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition id is undefined or not a string.' });\n }\n\n if (item.type === undefined || typeof item.type !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is undefined or not a string.' });\n }\n\n if (item.type !== 'connection' && item.type !== 'decision' && item.type !== 'termination' && item.type !== 'beginning') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is not a valid type.' });\n }\n\n // We have an id, push to current coordinates\n currentCoordinates.push(`Transition: ${item.id}`);\n\n if (item.type === undefined || typeof item.type !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is undefined or not a string.' });\n }\n\n return errors;\n};"],"names":["createTransition","type","id","isTransition","item","validateTransition","coordinates","errors","currentCoordinates","undefined","push","error"],"mappings":"AAYO,MAAMA,gBAAmB,GAAA,CAACC,IAAsBC,EAAAA,EAAAA,GAAAA;IACnD,OAAO;AACHA,QAAAA,EAAAA;AACAD,QAAAA;AACJ,KAAA;AACJ;AAEO,MAAME,eAAe,CAACC,IAAAA,GAAAA;IACzB,OAAOA,IAAAA,KAAS,IAAQ,IAAA,OAAOA,IAAS,KAAA,QAAA,IAAY,OAAOA,IAAAA,CAAKF,EAAE,KAAK,QAAaE,KAAAA,IAAKH,CAAAA,IAAI,KAAK,YAAgBG,IAAAA,IAAAA,CAAKH,IAAI,KAAK,UAAcG,IAAAA,IAAAA,CAAKH,IAAI,KAAK,aAAiBG,IAAAA,IAAAA,CAAKH,IAAI,KAAK,WAAU,CAAA;AACzM;AAEO,MAAMI,kBAAqB,GAAA,CAACD,IAAWE,EAAAA,WAAAA,GAAAA;AAC1C,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,kBAAqB,GAAA;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAa,KAAA;IAEjE,IAAIF,IAAAA,KAASK,SAAaL,IAAAA,IAAAA,KAAS,IAAM,EAAA;AACrCG,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAAmC,SAAA,CAAA;QAC9F,OAAOJ,MAAAA;AACX;IAEA,IAAI,OAAOH,SAAS,QAAU,EAAA;AAC1BG,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAA+B,SAAA,CAAA;QAC1F,OAAOJ,MAAAA;AACX;IAEA,IAAIH,IAAAA,CAAKF,EAAE,KAAKO,SAAAA,IAAa,OAAOL,IAAKF,CAAAA,EAAE,KAAK,QAAU,EAAA;AACtDK,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAA8C,SAAA,CAAA;AAC7G;IAEA,IAAIP,IAAAA,CAAKH,IAAI,KAAKQ,SAAAA,IAAa,OAAOL,IAAKH,CAAAA,IAAI,KAAK,QAAU,EAAA;AAC1DM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAAgD,SAAA,CAAA;AAC/G;AAEA,IAAA,IAAIP,IAAKH,CAAAA,IAAI,KAAK,YAAA,IAAgBG,KAAKH,IAAI,KAAK,UAAcG,IAAAA,IAAAA,CAAKH,IAAI,KAAK,aAAA,IAAiBG,IAAKH,CAAAA,IAAI,KAAK,WAAa,EAAA;AACpHM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAAuC,SAAA,CAAA;AACtG;;AAGAH,IAAAA,kBAAAA,CAAmBE,IAAI,CAAC,CAAC,YAAY,EAAEN,IAAAA,CAAKF,EAAE,CAAE,CAAA,CAAA;IAEhD,IAAIE,IAAAA,CAAKH,IAAI,KAAKQ,SAAAA,IAAa,OAAOL,IAAKH,CAAAA,IAAI,KAAK,QAAU,EAAA;AAC1DM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAa,EAAA;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAO,EAAA;AAAgD,SAAA,CAAA;AAC/G;IAEA,OAAOJ,MAAAA;AACX;;;;"}
1
+ {"version":3,"file":"transition.js","sources":["../../src/transition/transition.ts"],"sourcesContent":["export type TransitionType = 'connection' | 'decision' | 'termination' | 'beginning';\n\n/**\n * Base interface for transitions between nodes in a process.\n * It is primarily a marker interface that allows Connection,\n * Decision and Termination to share common generics.\n */\nexport interface Transition {\n id: string;\n type: TransitionType;\n}\n\nexport const createTransition = (type: TransitionType, id: string): Readonly<Transition> => {\n return {\n id,\n type,\n };\n};\n\nexport const isTransition = (item: any): item is Transition => {\n return item !== null && typeof item === 'object' && typeof item.id === 'string' && (item.type === 'connection' || item.type === 'decision' || item.type === 'termination' || item.type === 'beginning');\n};\n\nexport const validateTransition = (item: any, coordinates?: string[]): Array<{ coordinates: string[], error: string }> => {\n const errors: Array<{ coordinates: string[], error: string }> = [];\n const currentCoordinates = [...(coordinates || []), 'Transition'];\n\n if (item === undefined || item === null) {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition is undefined or null.' });\n return errors;\n }\n\n if (typeof item !== 'object') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition is not an object.' });\n return errors;\n }\n\n if (item.id === undefined || typeof item.id !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition id is undefined or not a string.' });\n }\n\n if (item.type === undefined || typeof item.type !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is undefined or not a string.' });\n }\n\n if (item.type !== 'connection' && item.type !== 'decision' && item.type !== 'termination' && item.type !== 'beginning') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is not a valid type.' });\n }\n\n // We have an id, push to current coordinates\n currentCoordinates.push(`Transition: ${item.id}`);\n\n if (item.type === undefined || typeof item.type !== 'string') {\n errors.push({ coordinates: [...currentCoordinates], error: 'Transition type is undefined or not a string.' });\n }\n\n return errors;\n};"],"names":["createTransition","type","id","isTransition","item","validateTransition","coordinates","errors","currentCoordinates","undefined","push","error"],"mappings":"AAYO,MAAMA,gBAAAA,GAAmB,CAACC,IAAAA,EAAsBC,EAAAA,GAAAA;IACnD,OAAO;AACHA,QAAAA,EAAAA;AACAD,QAAAA;AACJ,KAAA;AACJ;AAEO,MAAME,eAAe,CAACC,IAAAA,GAAAA;IACzB,OAAOA,IAAAA,KAAS,IAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAA,IAAY,OAAOA,IAAAA,CAAKF,EAAE,KAAK,QAAA,KAAaE,IAAAA,CAAKH,IAAI,KAAK,YAAA,IAAgBG,IAAAA,CAAKH,IAAI,KAAK,UAAA,IAAcG,IAAAA,CAAKH,IAAI,KAAK,aAAA,IAAiBG,IAAAA,CAAKH,IAAI,KAAK,WAAU,CAAA;AACzM;AAEO,MAAMI,kBAAAA,GAAqB,CAACD,IAAAA,EAAWE,WAAAA,GAAAA;AAC1C,IAAA,MAAMC,SAA0D,EAAE;AAClE,IAAA,MAAMC,kBAAAA,GAAqB;AAAKF,QAAAA,GAAAA,WAAAA,IAAe,EAAE;AAAG,QAAA;AAAa,KAAA;IAEjE,IAAIF,IAAAA,KAASK,SAAAA,IAAaL,IAAAA,KAAS,IAAA,EAAM;AACrCG,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAAmC,SAAA,CAAA;QAC9F,OAAOJ,MAAAA;AACX,IAAA;IAEA,IAAI,OAAOH,SAAS,QAAA,EAAU;AAC1BG,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAA+B,SAAA,CAAA;QAC1F,OAAOJ,MAAAA;AACX,IAAA;IAEA,IAAIH,IAAAA,CAAKF,EAAE,KAAKO,SAAAA,IAAa,OAAOL,IAAAA,CAAKF,EAAE,KAAK,QAAA,EAAU;AACtDK,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAA8C,SAAA,CAAA;AAC7G,IAAA;IAEA,IAAIP,IAAAA,CAAKH,IAAI,KAAKQ,SAAAA,IAAa,OAAOL,IAAAA,CAAKH,IAAI,KAAK,QAAA,EAAU;AAC1DM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAAgD,SAAA,CAAA;AAC/G,IAAA;AAEA,IAAA,IAAIP,IAAAA,CAAKH,IAAI,KAAK,YAAA,IAAgBG,KAAKH,IAAI,KAAK,UAAA,IAAcG,IAAAA,CAAKH,IAAI,KAAK,aAAA,IAAiBG,IAAAA,CAAKH,IAAI,KAAK,WAAA,EAAa;AACpHM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAAuC,SAAA,CAAA;AACtG,IAAA;;AAGAH,IAAAA,kBAAAA,CAAmBE,IAAI,CAAC,CAAC,YAAY,EAAEN,IAAAA,CAAKF,EAAE,CAAA,CAAE,CAAA;IAEhD,IAAIE,IAAAA,CAAKH,IAAI,KAAKQ,SAAAA,IAAa,OAAOL,IAAAA,CAAKH,IAAI,KAAK,QAAA,EAAU;AAC1DM,QAAAA,MAAAA,CAAOG,IAAI,CAAC;YAAEJ,WAAAA,EAAa;AAAIE,gBAAAA,GAAAA;AAAmB,aAAA;YAAEG,KAAAA,EAAO;AAAgD,SAAA,CAAA;AAC/G,IAAA;IAEA,OAAOJ,MAAAA;AACX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sources":["../../src/util/general.ts"],"sourcesContent":["export const clean = (obj: any) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, v]) => v !== undefined)\n );\n}\n\n//Recursive implementation of jSON.stringify;\nexport const stringifyJSON = function (obj: any, visited: Set<any> = new Set()): string {\n const arrOfKeyVals: string[] = [];\n const arrVals: string[] = [];\n let objKeys: string[] = [];\n\n /*********CHECK FOR PRIMITIVE TYPES**********/\n if (typeof obj === 'number' || typeof obj === 'boolean' || obj === null)\n return '' + obj;\n else if (typeof obj === 'string')\n return '\"' + obj + '\"';\n\n /*********DETECT CIRCULAR REFERENCES**********/\n if (obj instanceof Object && visited.has(obj)) {\n return '\"(circular)\"';\n }\n\n /*********CHECK FOR ARRAY**********/\n else if (Array.isArray(obj)) {\n //check for empty array\n if (obj[0] === undefined)\n return '[]';\n else {\n // Add array to visited before processing its elements\n visited.add(obj);\n obj.forEach(function (el) {\n arrVals.push(stringifyJSON(el, visited));\n });\n return '[' + arrVals + ']';\n }\n }\n /*********CHECK FOR OBJECT**********/\n else if (obj instanceof Object) {\n // Add object to visited before processing its properties\n visited.add(obj);\n //get object keys\n objKeys = Object.keys(obj);\n //set key output;\n objKeys.forEach(function (key) {\n const keyOut = '\"' + key + '\":';\n const keyValOut = obj[key];\n //skip functions and undefined properties\n if (keyValOut instanceof Function || keyValOut === undefined)\n return; // Skip this entry entirely instead of pushing an empty string\n else if (typeof keyValOut === 'string')\n arrOfKeyVals.push(keyOut + '\"' + keyValOut + '\"');\n else if (typeof keyValOut === 'boolean' || typeof keyValOut === 'number' || keyValOut === null)\n arrOfKeyVals.push(keyOut + keyValOut);\n //check for nested objects, call recursively until no more objects\n else if (keyValOut instanceof Object) {\n arrOfKeyVals.push(keyOut + stringifyJSON(keyValOut, visited));\n }\n });\n return '{' + arrOfKeyVals + '}';\n }\n return '';\n};"],"names":["clean","obj","Object","fromEntries","entries","filter","_","v","undefined"],"mappings":"AAAO,MAAMA,QAAQ,CAACC,GAAAA,GAAAA;AAClB,IAAA,OAAOC,MAAOC,CAAAA,WAAW,CACrBD,MAAAA,CAAOE,OAAO,CAACH,GAAAA,CAAAA,CAAKI,MAAM,CAAC,CAAC,CAACC,CAAGC,EAAAA,CAAAA,CAAE,GAAKA,CAAMC,KAAAA,SAAAA,CAAAA,CAAAA;AAErD;;;;"}
1
+ {"version":3,"file":"general.js","sources":["../../src/util/general.ts"],"sourcesContent":["export const clean = (obj: any) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, v]) => v !== undefined)\n );\n}\n\n//Recursive implementation of jSON.stringify;\nexport const stringifyJSON = function (obj: any, visited: Set<any> = new Set()): string {\n const arrOfKeyVals: string[] = [];\n const arrVals: string[] = [];\n let objKeys: string[] = [];\n\n /*********CHECK FOR PRIMITIVE TYPES**********/\n if (typeof obj === 'number' || typeof obj === 'boolean' || obj === null)\n return '' + obj;\n else if (typeof obj === 'string')\n return '\"' + obj + '\"';\n\n /*********DETECT CIRCULAR REFERENCES**********/\n if (obj instanceof Object && visited.has(obj)) {\n return '\"(circular)\"';\n }\n\n /*********CHECK FOR ARRAY**********/\n else if (Array.isArray(obj)) {\n //check for empty array\n if (obj[0] === undefined)\n return '[]';\n else {\n // Add array to visited before processing its elements\n visited.add(obj);\n obj.forEach(function (el) {\n arrVals.push(stringifyJSON(el, visited));\n });\n return '[' + arrVals + ']';\n }\n }\n /*********CHECK FOR OBJECT**********/\n else if (obj instanceof Object) {\n // Add object to visited before processing its properties\n visited.add(obj);\n //get object keys\n objKeys = Object.keys(obj);\n //set key output;\n objKeys.forEach(function (key) {\n const keyOut = '\"' + key + '\":';\n const keyValOut = obj[key];\n //skip functions and undefined properties\n if (keyValOut instanceof Function || keyValOut === undefined)\n return; // Skip this entry entirely instead of pushing an empty string\n else if (typeof keyValOut === 'string')\n arrOfKeyVals.push(keyOut + '\"' + keyValOut + '\"');\n else if (typeof keyValOut === 'boolean' || typeof keyValOut === 'number' || keyValOut === null)\n arrOfKeyVals.push(keyOut + keyValOut);\n //check for nested objects, call recursively until no more objects\n else if (keyValOut instanceof Object) {\n arrOfKeyVals.push(keyOut + stringifyJSON(keyValOut, visited));\n }\n });\n return '{' + arrOfKeyVals + '}';\n }\n return '';\n};"],"names":["clean","obj","Object","fromEntries","entries","filter","_","v","undefined"],"mappings":"AAAO,MAAMA,QAAQ,CAACC,GAAAA,GAAAA;AAClB,IAAA,OAAOC,MAAAA,CAAOC,WAAW,CACrBD,MAAAA,CAAOE,OAAO,CAACH,GAAAA,CAAAA,CAAKI,MAAM,CAAC,CAAC,CAACC,CAAAA,EAAGC,CAAAA,CAAE,GAAKA,CAAAA,KAAMC,SAAAA,CAAAA,CAAAA;AAErD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eventfilter.js","sources":["../../../src/utility/event/eventfilter.ts"],"sourcesContent":["import type { Event } from '../../event/event';\n\nexport interface EventFilter<E extends Event = Event> {\n type?: string[];\n stage?: string[];\n filter: (event: E) => boolean;\n}\n\nexport const createEventFilter = <E extends Event = Event>(\n type?: string[],\n stage?: string[]\n): EventFilter<E> => {\n const filterFn = (event: E): boolean => {\n const typeMatch = !type || type.includes(event.type);\n const stageMatch = !stage || stage.includes(event.stage);\n return typeMatch && stageMatch;\n };\n\n return {\n type,\n stage,\n filter: filterFn,\n };\n};\n"],"names":["createEventFilter","type","stage","filterFn","event","typeMatch","includes","stageMatch","filter"],"mappings":"AAQO,MAAMA,iBAAoB,GAAA,CAC7BC,IACAC,EAAAA,KAAAA,GAAAA;AAEA,IAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;AACd,QAAA,MAAMC,YAAY,CAACJ,IAAAA,IAAQA,KAAKK,QAAQ,CAACF,MAAMH,IAAI,CAAA;AACnD,QAAA,MAAMM,aAAa,CAACL,KAAAA,IAASA,MAAMI,QAAQ,CAACF,MAAMF,KAAK,CAAA;AACvD,QAAA,OAAOG,SAAaE,IAAAA,UAAAA;AACxB,KAAA;IAEA,OAAO;AACHN,QAAAA,IAAAA;AACAC,QAAAA,KAAAA;QACAM,MAAQL,EAAAA;AACZ,KAAA;AACJ;;;;"}
1
+ {"version":3,"file":"eventfilter.js","sources":["../../../src/utility/event/eventfilter.ts"],"sourcesContent":["import type { Event } from '../../event/event';\n\nexport interface EventFilter<E extends Event = Event> {\n type?: string[];\n stage?: string[];\n filter: (event: E) => boolean;\n}\n\nexport const createEventFilter = <E extends Event = Event>(\n type?: string[],\n stage?: string[]\n): EventFilter<E> => {\n const filterFn = (event: E): boolean => {\n const typeMatch = !type || type.includes(event.type);\n const stageMatch = !stage || stage.includes(event.stage);\n return typeMatch && stageMatch;\n };\n\n return {\n type,\n stage,\n filter: filterFn,\n };\n};\n"],"names":["createEventFilter","type","stage","filterFn","event","typeMatch","includes","stageMatch","filter"],"mappings":"AAQO,MAAMA,iBAAAA,GAAoB,CAC7BC,IAAAA,EACAC,KAAAA,GAAAA;AAEA,IAAA,MAAMC,WAAW,CAACC,KAAAA,GAAAA;AACd,QAAA,MAAMC,YAAY,CAACJ,IAAAA,IAAQA,KAAKK,QAAQ,CAACF,MAAMH,IAAI,CAAA;AACnD,QAAA,MAAMM,aAAa,CAACL,KAAAA,IAASA,MAAMI,QAAQ,CAACF,MAAMF,KAAK,CAAA;AACvD,QAAA,OAAOG,SAAAA,IAAaE,UAAAA;AACxB,IAAA,CAAA;IAEA,OAAO;AACHN,QAAAA,IAAAA;AACAC,QAAAA,KAAAA;QACAM,MAAAA,EAAQL;AACZ,KAAA;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"filteredhandler.js","sources":["../../../src/utility/event/filteredhandler.ts"],"sourcesContent":["import type { Event } from '../../event/event';\nimport type { Context } from '../../context';\nimport { createEventHandler, EventHandler, HandleMethod } from '../../event/handler';\nimport type { EventFilter } from './eventfilter';\n\nexport interface FilteredHandler<E extends Event = Event, C extends Context = Context> extends EventHandler<E, C> {\n filter: EventFilter<E>;\n handler: EventHandler<E, C>;\n}\n\nexport const createFilteredHandler = <E extends Event = Event, C extends Context = Context>(\n filter: EventFilter<E>,\n options: { handler: EventHandler<E, C> } | { handle: HandleMethod<E, C> }\n): FilteredHandler<E, C> => {\n const handler: EventHandler<E, C> = 'handler' in options ? options.handler : createEventHandler<E, C>(options.handle);\n\n const handle: HandleMethod<E, C> = async (event, context) => {\n if (filter.filter(event)) {\n await handler.handle(event, context);\n }\n };\n\n return {\n filter,\n handler,\n handle,\n };\n};\n"],"names":["createFilteredHandler","filter","options","handler","createEventHandler","handle","event","context"],"mappings":";;AAUO,MAAMA,qBAAwB,GAAA,CACjCC,MACAC,EAAAA,OAAAA,GAAAA;IAEA,MAAMC,OAAAA,GAA8B,aAAaD,OAAUA,GAAAA,OAAAA,CAAQC,OAAO,GAAGC,kBAAAA,CAAyBF,QAAQG,MAAM,CAAA;IAEpH,MAAMA,MAAAA,GAA6B,OAAOC,KAAOC,EAAAA,OAAAA,GAAAA;QAC7C,IAAIN,MAAAA,CAAOA,MAAM,CAACK,KAAQ,CAAA,EAAA;YACtB,MAAMH,OAAAA,CAAQE,MAAM,CAACC,KAAOC,EAAAA,OAAAA,CAAAA;AAChC;AACJ,KAAA;IAEA,OAAO;AACHN,QAAAA,MAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA;AACJ,KAAA;AACJ;;;;"}
1
+ {"version":3,"file":"filteredhandler.js","sources":["../../../src/utility/event/filteredhandler.ts"],"sourcesContent":["import type { Event } from '../../event/event';\nimport type { Context } from '../../context';\nimport { createEventHandler, EventHandler, HandleMethod } from '../../event/handler';\nimport type { EventFilter } from './eventfilter';\n\nexport interface FilteredHandler<E extends Event = Event, C extends Context = Context> extends EventHandler<E, C> {\n filter: EventFilter<E>;\n handler: EventHandler<E, C>;\n}\n\nexport const createFilteredHandler = <E extends Event = Event, C extends Context = Context>(\n filter: EventFilter<E>,\n options: { handler: EventHandler<E, C> } | { handle: HandleMethod<E, C> }\n): FilteredHandler<E, C> => {\n const handler: EventHandler<E, C> = 'handler' in options ? options.handler : createEventHandler<E, C>(options.handle);\n\n const handle: HandleMethod<E, C> = async (event, context) => {\n if (filter.filter(event)) {\n await handler.handle(event, context);\n }\n };\n\n return {\n filter,\n handler,\n handle,\n };\n};\n"],"names":["createFilteredHandler","filter","options","handler","createEventHandler","handle","event","context"],"mappings":";;AAUO,MAAMA,qBAAAA,GAAwB,CACjCC,MAAAA,EACAC,OAAAA,GAAAA;IAEA,MAAMC,OAAAA,GAA8B,aAAaD,OAAAA,GAAUA,OAAAA,CAAQC,OAAO,GAAGC,kBAAAA,CAAyBF,QAAQG,MAAM,CAAA;IAEpH,MAAMA,MAAAA,GAA6B,OAAOC,KAAAA,EAAOC,OAAAA,GAAAA;QAC7C,IAAIN,MAAAA,CAAOA,MAAM,CAACK,KAAAA,CAAAA,EAAQ;YACtB,MAAMH,OAAAA,CAAQE,MAAM,CAACC,KAAAA,EAAOC,OAAAA,CAAAA;AAChC,QAAA;AACJ,IAAA,CAAA;IAEA,OAAO;AACHN,QAAAA,MAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA;AACJ,KAAA;AACJ;;;;"}
File without changes