@prb/effect-xstate 1.0.0-beta.1 → 1.0.0-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/errors/extract.ts"],"names":[],"mappings":"AAkBA,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAA0B,CAAC,IAAI,KAAK,QAAQ;QACpD,SAAS,IAAI,KAAK;QAClB,OAAQ,KAA0B,CAAC,OAAO,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,eAAe,GAAG,kBAAkB;IAEpC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,EAAE,KAAK,CAAC,IAAI;aAChB;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/errors/extract.ts"],"names":[],"mappings":"AAkBA,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAA0B,CAAC,IAAI,KAAK,QAAQ;QACpD,SAAS,IAAI,KAAK;QAClB,OAAQ,KAA0B,CAAC,OAAO,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAC9B,KAAc,EACd,eAAe,GAAG,kBAAkB;IAEpC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,EAAE,KAAK,CAAC,IAAI;aAChB;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import type { TransactionError } from \"./types.js\";\n\n/**\n * Shape of a tagged error with common fields\n */\ntype TaggedErrorShape = {\n _tag: string;\n message: string;\n address?: string;\n calldata?: string;\n functionName?: string;\n sender?: string;\n cause?: unknown;\n};\n\n/**\n * Type guard to check if an error has the tagged error shape.\n */\nfunction hasTaggedErrorShape(error: unknown): error is TaggedErrorShape {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"_tag\" in error &&\n typeof (error as TaggedErrorShape)._tag === \"string\" &&\n \"message\" in error &&\n typeof (error as TaggedErrorShape).message === \"string\"\n );\n}\n\n/**\n * Extract structured error data from various error types.\n *\n * Preserves address, functionName, cause, and tag from Effect-TS tagged errors.\n */\nexport function extractErrorData(\n error: unknown,\n fallbackMessage = \"Operation failed\"\n): TransactionError {\n if (hasTaggedErrorShape(error)) {\n return {\n details: {\n address: error.address,\n calldata: error.calldata,\n cause: error.cause,\n functionName: error.functionName,\n sender: error.sender,\n tag: error._tag,\n },\n message: error.message,\n };\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return fallbackMessage;\n}\n\nexport { hasTaggedErrorShape };\nexport type { TaggedErrorShape };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC","sourcesContent":["export * from \"./extract.js\";\nexport * from \"./types.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/errors/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/errors/types.ts"],"names":[],"mappings":"","sourcesContent":["/** Structured error details for display in UI */\nexport type ErrorDetails = {\n /** Contract address (if applicable) */\n address?: string;\n /** Encoded calldata for the failed transaction */\n calldata?: string;\n /** Raw cause/details from viem or other sources */\n cause?: unknown;\n /** Function name that failed */\n functionName?: string;\n /** Sender address (wallet that initiated the transaction) */\n sender?: string;\n /** Error tag/type identifier */\n tag?: string;\n};\n\n/** Error state supporting both simple strings and structured data */\nexport type TransactionError =\n | string\n | {\n details?: ErrorDetails;\n message: string;\n };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./useFacilitatorWorkflow.js\";\nexport * from \"./useFormWorkflow.js\";\nexport * from \"./useTxWorkflow.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useFacilitatorWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useFacilitatorWorkflow.ts"],"names":[],"mappings":"AAMA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAuEzC,MAAM,UAAU,sBAAsB,CACpC,OAAsB,EACtB,OAAuC;IAEvC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,OAAoC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzF,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,QAAmD,CAAC;IAC1E,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;IAEjD,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;QAC9C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;QAC9C,UAAU,EAAE,WAAW,KAAK,MAAM;QAClC,SAAS,EAAE,WAAW,KAAK,SAAS;QACpC,QAAQ,EAAE,aAAa,CAAC,KAAK,KAAK,QAAQ;QAC1C,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,MAAM;QACtC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACjE,aAAa,EAAE,WAAW,KAAK,OAAO;KACvC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM;QACN,WAAW;QACX,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;QAClC,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,MAAM;QACN,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useFacilitatorWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useFacilitatorWorkflow.ts"],"names":[],"mappings":"AAMA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAuEzC,MAAM,UAAU,sBAAsB,CACpC,OAAsB,EACtB,OAAuC;IAEvC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,OAAoC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzF,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,QAAmD,CAAC;IAC1E,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;IAEjD,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;QAC9C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;QAC9C,UAAU,EAAE,WAAW,KAAK,MAAM;QAClC,SAAS,EAAE,WAAW,KAAK,SAAS;QACpC,QAAQ,EAAE,aAAa,CAAC,KAAK,KAAK,QAAQ;QAC1C,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,MAAM;QACtC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACjE,aAAa,EAAE,WAAW,KAAK,OAAO;KACvC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM;QACN,WAAW;QACX,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;QAClC,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,MAAM;QACN,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU;KAC7C,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Hook for managing xState facilitator machines.\n *\n * Provides a React-friendly interface to xState facilitator state machines.\n * Handles eligibility checking, creation workflows, and transitive state management.\n */\n\"use client\";\n\nimport { useActor } from \"@xstate/react\";\nimport type { AnyActorLogic, InspectionEvent, Observer } from \"xstate\";\nimport type { EligibilityStatus, FacilitatorMachineContext } from \"@/src/machines/index.js\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype FacilitatorMachineSnapshot<TTransitive> = {\n value: string;\n context: FacilitatorMachineContext<TTransitive>;\n};\n\ntype UseFacilitatorWorkflowReturn<TCheck, TCreate, TTransitive> = {\n /** Current state value */\n state: string;\n\n /** Full machine context */\n context: FacilitatorMachineContext<TTransitive>;\n\n /** Error message if operation failed */\n error: string | null;\n\n /** Eligibility status */\n eligibility: EligibilityStatus;\n\n /** Transitive data from eligibility check */\n transitive: TTransitive | null;\n\n /** Convenient status flags */\n status: {\n isIdle: boolean;\n isChecking: boolean;\n isChecked: boolean;\n isCreating: boolean;\n isCreated: boolean;\n isFailed: boolean;\n isEligible: boolean;\n isNotEligible: boolean;\n isExpired: boolean;\n isLoading: boolean;\n };\n\n /** Trigger eligibility check */\n check: (payload: TCheck & { soft?: boolean }) => void;\n\n /** Trigger creation workflow */\n create: (payload: TCreate) => void;\n\n /** Reset to initial state */\n reset: () => void;\n\n /** Raw send function for custom events */\n send: (event: unknown) => void;\n\n /** Raw snapshot for advanced use cases */\n snapshot: FacilitatorMachineSnapshot<TTransitive>;\n};\n\ntype UseFacilitatorWorkflowOptions = {\n /** Inspector function for xState Studio visualization */\n inspect?: Observer<InspectionEvent> | ((event: InspectionEvent) => void);\n};\n\n// =============================================================================\n// Hook\n// =============================================================================\n\n/**\n * Manage xState facilitator machines for eligibility and creation workflows.\n */\nexport function useFacilitatorWorkflow<TCheck = unknown, TCreate = unknown, TTransitive = unknown>(\n machine: AnyActorLogic,\n options?: UseFacilitatorWorkflowOptions\n): UseFacilitatorWorkflowReturn<TCheck, TCreate, TTransitive> {\n const [snapshot, send] = useActor(machine, { inspect: options?.inspect });\n\n const check = (payload: TCheck & { soft?: boolean }) => send({ payload, type: \"CHECK\" });\n\n const create = (payload: TCreate) => send({ payload, type: \"CREATE\" });\n\n const reset = () => send({ type: \"RESET\" });\n\n const typedSnapshot = snapshot as FacilitatorMachineSnapshot<TTransitive>;\n const eligibility = typedSnapshot.context.status;\n\n const status = {\n isChecked: typedSnapshot.value === \"checked\",\n isChecking: typedSnapshot.value === \"checking\",\n isCreated: typedSnapshot.value === \"created\",\n isCreating: typedSnapshot.value === \"creating\",\n isEligible: eligibility === \"true\",\n isExpired: eligibility === \"expired\",\n isFailed: typedSnapshot.value === \"failed\",\n isIdle: typedSnapshot.value === \"idle\",\n isLoading: [\"checking\", \"creating\"].includes(typedSnapshot.value),\n isNotEligible: eligibility === \"false\",\n };\n\n return {\n check,\n context: typedSnapshot.context,\n create,\n eligibility,\n error: typedSnapshot.context.error,\n reset,\n send,\n snapshot: typedSnapshot,\n state: typedSnapshot.value,\n status,\n transitive: typedSnapshot.context.transitive,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useFormWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useFormWorkflow.ts"],"names":[],"mappings":"AAmCA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAiFzC,MAAM,UAAU,eAAe,CAM7B,OAAsB,EACtB,OAAgC;IAEhC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpE,MAAM,IAAI,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,QAA+D,CAAC;IAEtF,MAAM,MAAM,GAAG;QACb,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,OAAO;QAC3C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QACzC,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACzE,YAAY,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC/C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,YAAY,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;KACjD,CAAC;IAEF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;QAClC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU;QAC5C,KAAK;QACL,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;QACpC,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useFormWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useFormWorkflow.ts"],"names":[],"mappings":"AAmCA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAiFzC,MAAM,UAAU,eAAe,CAM7B,OAAsB,EACtB,OAAgC;IAEhC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpE,MAAM,IAAI,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,QAA+D,CAAC;IAEtF,MAAM,MAAM,GAAG;QACb,UAAU,EAAE,aAAa,CAAC,KAAK,KAAK,OAAO;QAC3C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,MAAM,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QACzC,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACzE,YAAY,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC/C,SAAS,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS;QAC5C,YAAY,EAAE,aAAa,CAAC,KAAK,KAAK,UAAU;KACjD,CAAC;IAEF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;QAClC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU;QAC5C,KAAK;QACL,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;QACpC,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Hook for managing xState form machines.\n *\n * Provides a React-friendly interface to xState form state machines.\n * Handles form validation, preprocessing, submission, and error handling.\n *\n * @example\n * ```typescript\n * function CreateStreamForm() {\n * const { status, check, save, reset, error, preprocess } = useFormWorkflow<\n * CheckPayload,\n * SavePayload,\n * Result,\n * PreprocessedData\n * >(createStreamMachine);\n *\n * if (status.isSuccess) {\n * return <div>Stream created successfully!</div>;\n * }\n *\n * return (\n * <form onSubmit={(e) => {\n * e.preventDefault();\n * save(formData);\n * }}>\n * {status.isLoading && <Spinner />}\n * {error && <ErrorMessage>{error}</ErrorMessage>}\n * <button type=\"submit\" disabled={status.isLoading}>\n * Create Stream\n * </button>\n * </form>\n * );\n * }\n * ```\n */\n\"use client\";\n\nimport { useActor } from \"@xstate/react\";\nimport type { AnyActorLogic, InspectionEvent, Observer } from \"xstate\";\nimport type { FormMachineContext } from \"@/src/machines/index.js\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype FormMachineSnapshot<TPayload, TResult, TPreprocess> = {\n value: string;\n context: FormMachineContext<TPayload, TResult, TPreprocess>;\n};\n\ntype UseFormWorkflowReturn<TCheck, TPayload, TResult, TPreprocess> = {\n /** Current state value */\n state: string;\n\n /** Full machine context */\n context: FormMachineContext<TPayload, TResult, TPreprocess>;\n\n /** Error message if operation failed */\n error: string | null;\n\n /** Preprocessed data from validation step */\n preprocess: TPreprocess;\n\n /** Result from successful processing step */\n result: TResult | null;\n\n /** Convenient status flags */\n status: {\n isIdle: boolean;\n isChecking: boolean;\n isValidating: boolean;\n isProcessing: boolean;\n isSuccess: boolean;\n isFailure: boolean;\n isLoading: boolean;\n };\n\n /** Trigger validation check */\n check: (payload: TCheck) => void;\n\n /** Submit form data */\n save: (payload: TPayload) => void;\n\n /** Reset to initial state */\n reset: () => void;\n\n /** Raw send function for custom events */\n send: (event: unknown) => void;\n\n /** Raw snapshot for advanced use cases */\n snapshot: FormMachineSnapshot<TPayload, TResult, TPreprocess>;\n};\n\ntype UseFormWorkflowOptions = {\n /** Inspector function for xState Studio visualization */\n inspect?: Observer<InspectionEvent> | ((event: InspectionEvent) => void);\n};\n\n// =============================================================================\n// Hook\n// =============================================================================\n\n/**\n * Manage xState form machines with validation and preprocessing.\n *\n * This hook wraps an xState form machine to provide a React-friendly API.\n * It handles the typical form workflow: check → validate → process → success/failure.\n *\n * Features:\n * - Automatic state management via xState\n * - Validation with preprocessing\n * - Error handling and recovery\n * - Full TypeScript type safety\n *\n * @param machine - xState form machine instance\n * @param options - Optional configuration including inspector\n * @returns Form state and control functions\n */\nexport function useFormWorkflow<\n TCheck = unknown,\n TPayload = unknown,\n TResult = unknown,\n TPreprocess = unknown,\n>(\n machine: AnyActorLogic,\n options?: UseFormWorkflowOptions\n): UseFormWorkflowReturn<TCheck, TPayload, TResult, TPreprocess> {\n const [snapshot, send] = useActor(machine, { inspect: options?.inspect });\n\n const check = (payload: TCheck) => send({ payload, type: \"CHECK\" });\n\n const save = (payload: TPayload) => send({ payload, type: \"SAVE\" });\n\n const reset = () => send({ type: \"RESET\" });\n\n const typedSnapshot = snapshot as FormMachineSnapshot<TPayload, TResult, TPreprocess>;\n\n const status = {\n isChecking: typedSnapshot.value === \"check\",\n isFailure: typedSnapshot.value === \"failure\",\n isIdle: typedSnapshot.value === \"initial\",\n isLoading: [\"check\", \"validate\", \"process\"].includes(typedSnapshot.value),\n isProcessing: typedSnapshot.value === \"process\",\n isSuccess: typedSnapshot.value === \"success\",\n isValidating: typedSnapshot.value === \"validate\",\n };\n\n return {\n check,\n context: typedSnapshot.context,\n error: typedSnapshot.context.error,\n preprocess: typedSnapshot.context.preprocess,\n reset,\n result: typedSnapshot.context.result,\n save,\n send,\n snapshot: typedSnapshot,\n state: typedSnapshot.value,\n status,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useTxWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useTxWorkflow.ts"],"names":[],"mappings":"AAuCA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA+FzC,MAAM,UAAU,aAAa,CAM3B,OAAsB,EACtB,OAA8B;IAE9B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE,CACnC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAA+B,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAA+B,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,QAA0E,CAAC;IACjG,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAEtC,MAAM,MAAM,GAAG;QACb,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,kBAAkB,EAAE,KAAK,KAAK,kBAAkB;QAChD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACnF,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CACxB;QACD,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;KAC3C,CAAC;IAEF,OAAO;QACL,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,IAAkD;QACxD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,aAAa;QACvB,KAAK;QACL,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useTxWorkflow.js","sourceRoot":"","sources":["../../src/hooks/useTxWorkflow.ts"],"names":[],"mappings":"AAuCA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA+FzC,MAAM,UAAU,aAAa,CAM3B,OAAsB,EACtB,OAA8B;IAE9B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE,CACnC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAA+B,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAA+B,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,QAA0E,CAAC;IACjG,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAEtC,MAAM,MAAM,GAAG;QACb,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,kBAAkB,EAAE,KAAK,KAAK,kBAAkB;QAChD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACnF,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CACxB;QACD,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,SAAS,EAAE,KAAK,KAAK,SAAS;QAC9B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;KAC3C,CAAC;IAEF,OAAO;QACL,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,IAAkD;QACxD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,aAAa;QACvB,KAAK;QACL,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Hook for managing xState transaction machines.\n *\n * Provides a React-friendly interface to xState transaction state machines.\n * Handles gas estimation, simulation, signing, and transaction confirmation.\n *\n * @example\n * ```typescript\n * function SendTransaction() {\n * const { status, submit, reset, error, hash, gasLimit } = useTxWorkflow<\n * TransferPayload,\n * PreprocessedData,\n * SignatureResult,\n * TransactionReceipt\n * >(transferMachine);\n *\n * if (status.isSuccess) {\n * return <div>Transaction confirmed: {hash}</div>;\n * }\n *\n * if (status.isGasLimitOverflow) {\n * return <div>Gas limit too high for this chain</div>;\n * }\n *\n * return (\n * <form onSubmit={(e) => {\n * e.preventDefault();\n * submit(formData);\n * }}>\n * {status.isLoading && <Spinner />}\n * {error && <ErrorMessage>{error}</ErrorMessage>}\n * <button type=\"submit\" disabled={status.isLoading}>\n * Send Transaction\n * </button>\n * </form>\n * );\n * }\n * ```\n */\n\"use client\";\n\nimport { useActor } from \"@xstate/react\";\nimport type { AnyActorLogic, InspectionEvent, Observer } from \"xstate\";\nimport type { GasLimitOverflow, TxMachineContext, TxMachineEvents } from \"@/src/machines/index.js\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype TxMachineSnapshot<TPayload, TPreprocess, TSignResult, TResult> = {\n value: string;\n context: TxMachineContext<TPayload, TPreprocess, TSignResult, TResult>;\n};\n\ntype UseTxWorkflowReturn<TPayload, TPreprocess, TSignResult, TResult> = {\n /** Current state value */\n state: string;\n\n /** Full machine context */\n context: TxMachineContext<TPayload, TPreprocess, TSignResult, TResult>;\n\n /** Raw snapshot for advanced use cases */\n snapshot: TxMachineSnapshot<TPayload, TPreprocess, TSignResult, TResult>;\n\n /** Raw send function for custom events */\n send: (event: TxMachineEvents<TPayload>) => void;\n\n /** Error message if operation failed */\n error: string | null;\n\n /** Estimated gas limit */\n gasLimit: bigint | undefined;\n\n /** Gas limit overflow information */\n gasLimitOverflow: GasLimitOverflow | null;\n\n /** Transaction hash */\n hash: string | null;\n\n /** Preprocessed data from validation step */\n preprocess: TPreprocess | null;\n\n /** Result from signing step */\n signResult: TSignResult | null;\n\n /** Final result from transaction confirmation */\n result: TResult | null;\n\n /** Convenient status flags */\n status: {\n isIdle: boolean;\n isValidating: boolean;\n isCheckingGas: boolean;\n isSimulating: boolean;\n isSigning: boolean;\n isPending: boolean;\n isSuccess: boolean;\n isFailure: boolean;\n isGasLimitOverflow: boolean;\n isLoading: boolean;\n };\n\n /** Submit transaction payload */\n submit: (payload: TPayload) => void;\n\n /** Reset to initial state */\n reset: () => void;\n};\n\ntype UseTxWorkflowOptions = {\n /** Inspector function for xState Studio visualization */\n inspect?: Observer<InspectionEvent> | ((event: InspectionEvent) => void);\n};\n\n// =============================================================================\n// Hook\n// =============================================================================\n\n/**\n * Manage xState transaction machines with gas estimation and signing.\n *\n * This hook wraps an xState transaction machine to provide a React-friendly API.\n * It handles the typical transaction workflow: validate → check gas → simulate → sign → pending → success/failure.\n *\n * Features:\n * - Automatic state management via xState\n * - Gas estimation with overflow detection\n * - Transaction simulation\n * - Signing and confirmation tracking\n * - Error handling and recovery\n * - Full TypeScript type safety\n *\n * @param machine - xState transaction machine instance\n * @param options - Optional configuration including inspector\n * @returns Transaction state and control functions\n */\nexport function useTxWorkflow<\n TPayload = unknown,\n TPreprocess = unknown,\n TSignResult = unknown,\n TResult = unknown,\n>(\n machine: AnyActorLogic,\n options?: UseTxWorkflowOptions\n): UseTxWorkflowReturn<TPayload, TPreprocess, TSignResult, TResult> {\n const [snapshot, send] = useActor(machine, { inspect: options?.inspect });\n\n const submit = (payload: TPayload) =>\n send({ payload, type: \"SUBMIT\" } as TxMachineEvents<TPayload>);\n\n const reset = () => send({ type: \"RESET\" } as TxMachineEvents<TPayload>);\n\n const typedSnapshot = snapshot as TxMachineSnapshot<TPayload, TPreprocess, TSignResult, TResult>;\n const state = typedSnapshot.value;\n const context = typedSnapshot.context;\n\n const status = {\n isCheckingGas: snapshot.matches(\"gasCheck\"),\n isFailure: state === \"failure\",\n isGasLimitOverflow: state === \"gasLimitOverflow\",\n isIdle: snapshot.matches(\"initial\"),\n isLoading: [\"validate\", \"gasCheck\", \"simulate\", \"signing\", \"pending\"].some((value) =>\n snapshot.matches(value)\n ),\n isPending: state === \"pending\",\n isSigning: state === \"signing\",\n isSimulating: snapshot.matches(\"simulate\"),\n isSuccess: state === \"success\",\n isValidating: snapshot.matches(\"validate\"),\n };\n\n return {\n context,\n error: context.error,\n gasLimit: context.gasLimit,\n gasLimitOverflow: context.gasLimitOverflow,\n hash: context.hash,\n preprocess: context.preprocess,\n reset,\n result: context.result,\n send: send as (event: TxMachineEvents<TPayload>) => void,\n signResult: context.signResult,\n snapshot: typedSnapshot,\n state,\n status,\n submit,\n };\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from \"./errors/index.js\";\nexport * from \"./hooks/index.js\";\nexport * from \"./machines/index.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/machines/facilitator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/machines/facilitator.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\n/**\n * Eligibility status for facilitated resources\n */\ntype EligibilityStatus = \"idle\" | \"true\" | \"false\" | \"expired\";\n\n/**\n * Result from checking eligibility\n */\ntype FacilitatedResult<TTransitive> = {\n status: EligibilityStatus;\n transitive: TTransitive | null;\n};\n\n/**\n * Machine context for facilitator workflow\n */\ntype FacilitatorMachineContext<TTransitive> = {\n /** Error message from failed operations */\n error: string | null;\n /** Eligibility status */\n status: EligibilityStatus;\n /** Transitive data cached between check and create phases */\n transitive: TTransitive | null;\n};\n\n/**\n * Events that can be sent to the facilitator machine\n */\ntype FacilitatorMachineEvents<TCheck, TCreate> =\n | {\n type: \"CHECK\";\n payload: TCheck & { soft?: boolean };\n }\n | {\n type: \"CREATE\";\n payload: TCreate;\n }\n | { type: \"RESET\" };\n\n/**\n * Services configuration for facilitator machine\n */\ntype FacilitatorMachineServices<TCheck, TCreate, TTransitive> = {\n onCheck: (\n payload: TCheck & { soft?: boolean }\n ) => Effect.Effect<FacilitatedResult<TTransitive>, Error>;\n onCreate: (input: {\n create: TCreate;\n transitive: TTransitive | null;\n }) => Effect.Effect<void, Error>;\n};\n\n/**\n * Configuration for creating a facilitator machine\n */\ntype FacilitatorMachineConfig<TCheck, TCreate, TTransitive> = {\n id: string;\n services: FacilitatorMachineServices<TCheck, TCreate, TTransitive>;\n};\n\n/**\n * Creates a check-then-create workflow state machine\n *\n * Flow:\n * 1. idle -> checking (on CHECK event) - checks eligibility/preconditions\n * 2. checking -> checked - eligibility confirmed, transitive data cached\n * 3. checked -> creating (on CREATE event) - creates the resource\n * 4. creating -> created - resource created successfully\n * 5. Any error state -> failed - operation failed (can retry)\n *\n * Key features:\n * - Checks can self-transition to handle dependency updates\n * - Transitive data flows from check to create phase\n * - EligibilityStatus tracks: idle, true, false, expired\n * - Terminal states can transition back to idle or retry operations\n *\n * @example\n * ```ts\n * const machine = createFacilitatorMachine({\n * id: \"claim-airdrop\",\n * services: {\n * onCheck: (payload) =>\n * Effect.succeed({ status: \"true\", transitive: { proof: \"0x...\" } }),\n * onCreate: ({ create, transitive }) => Effect.succeed(undefined),\n * },\n * });\n * ```\n */\nfunction createFacilitatorMachine<TCheck, TCreate, TTransitive>({\n id,\n services,\n}: FacilitatorMachineConfig<TCheck, TCreate, TTransitive>) {\n return setup({\n actions: {\n doCache: assign({\n error: () => null,\n status: ({ event }) => {\n if (\"output\" in event) {\n const result = event.output as FacilitatedResult<TTransitive>;\n return result.status;\n }\n return \"idle\" as const;\n },\n transitive: ({ event }) => {\n if (\"output\" in event) {\n const result = event.output as FacilitatedResult<TTransitive>;\n return result.transitive;\n }\n return null;\n },\n }),\n doClean: assign({\n error: () => null,\n status: () => \"idle\" as const,\n transitive: () => null,\n }),\n doError: assign({\n error: ({ event }) => {\n if (\"error\" in event && event.error instanceof Error) {\n return event.error.message;\n }\n return \"An unknown error occurred\";\n },\n }),\n },\n actors: {\n doCheck: fromPromise(async ({ input }: { input: TCheck & { soft?: boolean } }) =>\n Effect.runPromise(services.onCheck(input))\n ),\n doCreate: fromPromise(\n async ({ input }: { input: { create: TCreate; transitive: TTransitive | null } }) =>\n Effect.runPromise(services.onCreate(input))\n ),\n },\n types: {\n context: {} as FacilitatorMachineContext<TTransitive>,\n events: {} as FacilitatorMachineEvents<TCheck, TCreate>,\n },\n }).createMachine({\n context: {\n error: null,\n status: \"idle\",\n transitive: null,\n },\n id: `facilitator-${id}`,\n initial: \"idle\",\n states: {\n checked: {\n on: {\n CHECK: {\n target: \"checking\",\n },\n CREATE: {\n target: \"creating\",\n },\n RESET: {\n target: \"idle\",\n },\n },\n },\n checking: {\n entry: \"doClean\",\n // @ts-expect-error - xState v5 type inference limitation with generic functions\n invoke: {\n id: \"check\",\n input: ({ event }) => {\n if (event.type === \"CHECK\") {\n return event.payload;\n }\n throw new Error(\"Invalid event type for check\");\n },\n onDone: {\n actions: \"doCache\",\n target: \"checked\",\n },\n onError: {\n actions: \"doError\",\n target: \"failed\",\n },\n src: \"doCheck\",\n },\n on: {\n CHECK: {\n target: \"checking\",\n },\n RESET: {\n target: \"idle\",\n },\n },\n },\n created: {\n on: {\n RESET: {\n target: \"idle\",\n },\n },\n },\n creating: {\n invoke: {\n id: \"create\",\n input: ({ event, context }) => {\n if (event.type === \"CREATE\") {\n return {\n create: event.payload,\n transitive: context.transitive,\n };\n }\n throw new Error(\"Invalid event type for create\");\n },\n onDone: {\n target: \"created\",\n },\n onError: {\n actions: \"doError\",\n target: \"failed\",\n },\n src: \"doCreate\",\n },\n on: {\n RESET: {\n target: \"idle\",\n },\n },\n },\n failed: {\n on: {\n CHECK: {\n target: \"checking\",\n },\n CREATE: {\n target: \"creating\",\n },\n RESET: {\n target: \"idle\",\n },\n },\n },\n idle: {\n entry: \"doClean\",\n on: {\n CHECK: {\n target: \"checking\",\n },\n },\n },\n },\n });\n}\n\nexport { createFacilitatorMachine };\nexport type {\n EligibilityStatus,\n FacilitatedResult,\n FacilitatorMachineConfig,\n FacilitatorMachineContext,\n FacilitatorMachineEvents,\n FacilitatorMachineServices,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/machines/form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/machines/form.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\n/**\n * Machine context for form workflow\n */\ntype FormMachineContext<TPayload, TResult, TPreprocess> = {\n /** Error message from failed operations */\n error: string | null;\n /** The form payload to be processed */\n payload: TPayload;\n /** Preprocessed data from validation */\n preprocess: TPreprocess;\n /** Result from successful processing */\n result: TResult | null;\n};\n\n/**\n * Events that can be sent to the form machine\n */\ntype FormMachineEvents<TCheck, TPayload> =\n | { type: \"SAVE\"; payload: TPayload }\n | { type: \"CHECK\"; payload: TCheck }\n | { type: \"RESET\" };\n\n/**\n * Services configuration for form machine.\n *\n * All service functions receive plain values and return Effects with no requirements.\n * If your service needs dependencies (like ContractWriterService), provide them\n * before passing to the machine:\n *\n * @example\n * ```ts\n * // Wrap service with its layer before passing to machine\n * const wrappedProcess = (input) =>\n * Effect.provide(processLockupCreate(input), ContractWriterLive);\n * ```\n */\ntype FormMachineServices<TCheck, TPayload, TResult, TPreprocess> = {\n onCheck: (payload: TCheck) => Effect.Effect<void, Error>;\n onValidate: (payload: TPayload) => Effect.Effect<TPreprocess, Error>;\n onProcess: (input: {\n payload: TPayload;\n preprocess: TPreprocess;\n }) => Effect.Effect<TResult, Error>;\n};\n\n/**\n * Configuration for creating a form machine\n */\ntype FormMachineConfig<TCheck, TPayload, TResult, TPreprocess> = {\n id: string;\n services: FormMachineServices<TCheck, TPayload, TResult, TPreprocess>;\n /**\n * Optional predicate to detect user rejection errors.\n * When provided, user rejections will reset to initial state instead of going to failure.\n * Useful for wallet interactions where users can cancel.\n */\n isUserRejectedError?: (error: unknown) => boolean;\n};\n\n/**\n * Creates a generic form workflow state machine\n *\n * Flow:\n * 1. initial -> check (on CHECK event) - validates dependencies/preconditions\n * 2. initial -> validate (on SAVE event) - validates payload\n * 3. validate -> process - executes main operation\n * 4. process -> success - operation completed\n * 5. process -> failure - operation failed (can retry via SAVE)\n *\n * Key features:\n * - Check state supports self-transitions to handle dependency updates\n * - Validation preprocesses data before processing\n * - Terminal states (success/failure) can transition back to validate or initial\n *\n * @example\n * ```ts\n * const machine = createFormMachine({\n * id: \"create-stream\",\n * services: {\n * onCheck: (payload) => Effect.succeed(undefined),\n * onValidate: (payload) => Effect.succeed({ validated: true }),\n * onProcess: ({ payload, preprocess }) => Effect.succeed(undefined),\n * },\n * });\n * ```\n */\nfunction createFormMachine<TCheck, TPayload, TResult, TPreprocess = undefined>({\n id,\n services,\n isUserRejectedError,\n}: FormMachineConfig<TCheck, TPayload, TResult, TPreprocess>) {\n return setup({\n actions: {\n doCache: assign({\n payload: ({ event }) => {\n if (event.type === \"SAVE\") {\n return event.payload;\n }\n return {} as TPayload;\n },\n }),\n doError: assign({\n error: ({ event }) => {\n if (\"error\" in event && event.error instanceof Error) {\n return event.error.message;\n }\n return \"An unknown error occurred\";\n },\n }),\n doPreprocess: assign({\n preprocess: ({ event }) => {\n if (\"output\" in event) {\n return event.output as TPreprocess;\n }\n return {} as TPreprocess;\n },\n }),\n doReset: assign({\n error: () => null,\n payload: () => ({}) as TPayload,\n preprocess: () => ({}) as TPreprocess,\n result: () => null,\n }),\n doResult: assign({\n result: ({ event }) => {\n if (\"output\" in event) {\n return event.output as TResult;\n }\n return null;\n },\n }),\n },\n actors: {\n doCheck: fromPromise(async ({ input }: { input: TCheck }) =>\n Effect.runPromise(services.onCheck(input))\n ),\n doProcess: fromPromise(\n async ({ input }: { input: { payload: TPayload; preprocess: TPreprocess } }) =>\n Effect.runPromise(services.onProcess(input))\n ),\n doValidate: fromPromise(async ({ input }: { input: TPayload }) =>\n Effect.runPromise(services.onValidate(input))\n ),\n },\n types: {\n context: {} as FormMachineContext<TPayload, TResult, TPreprocess>,\n events: {} as FormMachineEvents<TCheck, TPayload>,\n },\n }).createMachine({\n context: {\n error: null,\n payload: {} as TPayload,\n preprocess: {} as TPreprocess,\n result: null,\n },\n id: `formMachine-${id}`,\n initial: \"initial\",\n states: {\n check: {\n // @ts-expect-error - xState v5 type inference limitation with generic functions\n invoke: {\n id: \"check\",\n input: ({ event }) => {\n if (event.type === \"CHECK\") {\n return event.payload;\n }\n throw new Error(\"Invalid event type for check\");\n },\n onDone: {\n actions: \"doReset\",\n target: \"initial\",\n },\n onError: {\n actions: \"doError\",\n target: \"initial\",\n },\n src: \"doCheck\",\n },\n on: {\n CHECK: {\n actions: \"doReset\",\n target: \"check\",\n },\n },\n },\n failure: {\n on: {\n RESET: {\n target: \"initial\",\n },\n SAVE: {\n target: \"validate\",\n },\n },\n },\n initial: {\n exit: \"doReset\",\n on: {\n CHECK: {\n target: \"check\",\n },\n SAVE: {\n target: \"validate\",\n },\n },\n },\n process: {\n invoke: {\n id: \"process\",\n input: ({ context }) => ({\n payload: context.payload,\n preprocess: context.preprocess,\n }),\n onDone: {\n actions: \"doResult\",\n target: \"success\",\n },\n onError: isUserRejectedError\n ? [\n {\n actions: \"doReset\",\n guard: ({ event }) => isUserRejectedError(event.error),\n target: \"initial\",\n },\n {\n actions: \"doError\",\n target: \"failure\",\n },\n ]\n : {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doProcess\",\n },\n },\n success: {\n on: {\n RESET: {\n target: \"initial\",\n },\n SAVE: {\n target: \"validate\",\n },\n },\n },\n validate: {\n entry: \"doCache\",\n // @ts-expect-error - xState v5 type inference limitation with generic functions\n invoke: {\n id: \"validate\",\n input: ({ context }) => context.payload,\n onDone: {\n actions: \"doPreprocess\",\n target: \"process\",\n },\n onError: {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doValidate\",\n },\n },\n },\n });\n}\n\nexport { createFormMachine };\nexport type { FormMachineConfig, FormMachineContext, FormMachineEvents, FormMachineServices };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machines/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machines/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC","sourcesContent":["export * from \"./facilitator.js\";\nexport * from \"./form.js\";\nexport * from \"./tx.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tx.js","sourceRoot":"","sources":["../../src/machines/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAuHpD,SAAS,eAAe,CAA8C,EACpE,EAAE,EACF,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GACsC;IAC7D,OAAO,KAAK,CAAC;QACX,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC/E,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC1F,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CACvC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC3D,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC7E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAC9B,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBACzF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACjF,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;aAC1F,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACnB,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;wBACrD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC7B,CAAC;oBACD,OAAO,2BAA2B,CAAC;gBACrC,CAAC;aACF,CAAC;YACF,UAAU,EAAE,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtB,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAA+B,CAAC;wBACrD,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;4BACzB,OAAO,MAAM,CAAC,QAAQ,CAAC;wBACzB,CAAC;oBACH,CAAC;oBACD,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC;YACF,kBAAkB,EAAE,MAAM,CAAC;gBACzB,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC9B,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyC,CAAC;wBAC/D,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;4BAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC;wBACzB,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,2BAA2B,EAAE,MAAM,CAAC;gBAClC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC9B,IAAI,uBAAuB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;wBAChD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACtD,IAAI,QAAQ,EAAE,CAAC;4BACb,OAAO,QAAQ,CAAC;wBAClB,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;gBACnB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACxB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAqB,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;gBACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;gBACzB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;gBAChB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;gBACtB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;gBAClB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;aACvB,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC;gBACf,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACpB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAiB,CAAC;oBACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;gBACnB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACxB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAqB,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;SACH;QACD,MAAM,EAAE;YACN,SAAS,EAAE,WAAW,CACpB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE,CAC7E,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC/C;YACD,UAAU,EAAE,WAAW,CACrB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE;gBAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;gBACjC,CAAC;gBACD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC,CACF;YACD,MAAM,EAAE,WAAW,CACjB,KAAK,EAAE,EACL,KAAK,GAGN,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAChD;YACD,UAAU,EAAE,WAAW,CACrB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE;gBAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC,CACF;YACD,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,EAAuB,EAAE,EAAE,CAC/D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC9C;SACF;QACD,MAAM,EAAE;YACN,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjC,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyC,CAAC;oBAC/D,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;gBAC/D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;YAClD,CAAC;YACD,uBAAuB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACrC,IAAI,uBAAuB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;gBAC5D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;YACnD,CAAC;YACD,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjC,IAAI,mBAAmB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC5C,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,EAAmE;YAC5E,MAAM,EAAE,EAA+B;SACxC;KACF,CAAC,CAAC,aAAa,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,IAAI;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;SACjB;QACD,EAAE,EAAE,aAAa,EAAE,EAAE;QACrB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;wBACnD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;wBAC3D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,oBAAoB;4BAC7B,KAAK,EAAE,qBAAqB;4BAC5B,MAAM,EAAE,kBAAkB;yBAC3B;wBACD;4BACE,OAAO,EAAE,YAAY;4BACrB,MAAM,EAAE,SAAS;yBAClB;qBACF;oBACD,OAAO,EAAE,uBAAuB;wBAC9B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,6BAA6B;gCACtC,KAAK,EAAE,yBAAyB;gCAChC,MAAM,EAAE,kBAAkB;6BAC3B;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,YAAY;iBAClB;aACF;YACD,gBAAgB,EAAE;gBAChB,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;YACD,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;wBACtD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBAC1D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,SAAS;qBAClB;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,GAAG,EAAE,WAAW;iBACjB;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,MAAM;oBACV,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBACjD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;wBACzD,CAAC;wBACD,OAAO;4BACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE,cAAc;wBACvB,MAAM,EAAE,SAAS;qBAClB;oBACD,OAAO,EAAE,mBAAmB;wBAC1B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,SAAS;gCAClB,KAAK,EAAE,qBAAqB;gCAC5B,MAAM,EAAE,SAAS;6BAClB;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,QAAQ;iBACd;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;wBAC5D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,oBAAoB;4BAC7B,KAAK,EAAE,qBAAqB;4BAC5B,MAAM,EAAE,kBAAkB;yBAC3B;wBACD;4BACE,MAAM,EAAE,SAAS;yBAClB;qBACF;oBACD,OAAO,EAAE,uBAAuB;wBAC9B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,6BAA6B;gCACtC,KAAK,EAAE,yBAAyB;gCAChC,MAAM,EAAE,kBAAkB;6BAC3B;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,YAAY;iBAClB;aACF;YACD,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,SAAS;gBAEhB,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;wBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBACvD,CAAC;wBACD,OAAO,KAAK,CAAC,OAAO,CAAC;oBACvB,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,cAAc;4BACrB,MAAM,EAAE,UAAU;yBACnB;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,aAAa;4BACpB,MAAM,EAAE,UAAU;yBACnB;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,MAAM,EAAE,UAAU;yBACnB;qBACF;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,GAAG,EAAE,YAAY;iBAClB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"tx.js","sourceRoot":"","sources":["../../src/machines/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAuHpD,SAAS,eAAe,CAA8C,EACpE,EAAE,EACF,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GACsC;IAC7D,OAAO,KAAK,CAAC;QACX,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC/E,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC1F,gBAAgB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CACvC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC3D,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC7E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAC9B,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBACzF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACjF,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;aAC1F,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACnB,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;wBACrD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC7B,CAAC;oBACD,OAAO,2BAA2B,CAAC;gBACrC,CAAC;aACF,CAAC;YACF,UAAU,EAAE,MAAM,CAAC;gBACjB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtB,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAA+B,CAAC;wBACrD,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;4BACzB,OAAO,MAAM,CAAC,QAAQ,CAAC;wBACzB,CAAC;oBACH,CAAC;oBACD,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC;YACF,kBAAkB,EAAE,MAAM,CAAC;gBACzB,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC9B,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyC,CAAC;wBAC/D,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;4BAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC;wBACzB,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,2BAA2B,EAAE,MAAM,CAAC;gBAClC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC9B,IAAI,uBAAuB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;wBAChD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACtD,IAAI,QAAQ,EAAE,CAAC;4BACb,OAAO,QAAQ,CAAC;wBAClB,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;gBACnB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACxB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAqB,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;gBACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;gBACzB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;gBAChB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;gBACtB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;gBAClB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;aACvB,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC;gBACf,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACpB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAiB,CAAC;oBACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;gBACnB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;oBACxB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,KAAK,CAAC,MAAqB,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;SACH;QACD,MAAM,EAAE;YACN,SAAS,EAAE,WAAW,CACpB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE,CAC7E,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC/C;YACD,UAAU,EAAE,WAAW,CACrB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE;gBAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;gBACjC,CAAC;gBACD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC,CACF;YACD,MAAM,EAAE,WAAW,CACjB,KAAK,EAAE,EACL,KAAK,GAGN,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAChD;YACD,UAAU,EAAE,WAAW,CACrB,KAAK,EAAE,EAAE,KAAK,EAA6D,EAAE,EAAE;gBAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC,CACF;YACD,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,EAAuB,EAAE,EAAE,CAC/D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC9C;SACF;QACD,MAAM,EAAE;YACN,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjC,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAyC,CAAC;oBAC/D,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;gBAC/D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;YAClD,CAAC;YACD,uBAAuB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACrC,IAAI,uBAAuB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;gBAC5D,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;YACnD,CAAC;YACD,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjC,IAAI,mBAAmB,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC5C,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,EAAmE;YAC5E,MAAM,EAAE,EAA+B;SACxC;KACF,CAAC,CAAC,aAAa,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,IAAI;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;SACjB;QACD,EAAE,EAAE,aAAa,EAAE,EAAE;QACrB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;wBACnD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;wBAC3D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,oBAAoB;4BAC7B,KAAK,EAAE,qBAAqB;4BAC5B,MAAM,EAAE,kBAAkB;yBAC3B;wBACD;4BACE,OAAO,EAAE,YAAY;4BACrB,MAAM,EAAE,SAAS;yBAClB;qBACF;oBACD,OAAO,EAAE,uBAAuB;wBAC9B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,6BAA6B;gCACtC,KAAK,EAAE,yBAAyB;gCAChC,MAAM,EAAE,kBAAkB;6BAC3B;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,YAAY;iBAClB;aACF;YACD,gBAAgB,EAAE;gBAChB,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;iBACF;aACF;YACD,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;wBACtD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBAC1D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE,UAAU;wBACnB,MAAM,EAAE,SAAS;qBAClB;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,GAAG,EAAE,WAAW;iBACjB;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,EAAE,EAAE,MAAM;oBACV,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBACjD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;wBACzD,CAAC;wBACD,OAAO;4BACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN,OAAO,EAAE,cAAc;wBACvB,MAAM,EAAE,SAAS;qBAClB;oBACD,OAAO,EAAE,mBAAmB;wBAC1B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,SAAS;gCAClB,KAAK,EAAE,qBAAqB;gCAC5B,MAAM,EAAE,SAAS;6BAClB;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,QAAQ;iBACd;aACF;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBACpD,CAAC;wBACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;wBAC5D,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,OAAO,CAAC,UAAU;yBAC/B,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,oBAAoB;4BAC7B,KAAK,EAAE,qBAAqB;4BAC5B,MAAM,EAAE,kBAAkB;yBAC3B;wBACD;4BACE,MAAM,EAAE,SAAS;yBAClB;qBACF;oBACD,OAAO,EAAE,uBAAuB;wBAC9B,CAAC,CAAC;4BACE;gCACE,OAAO,EAAE,6BAA6B;gCACtC,KAAK,EAAE,yBAAyB;gCAChC,MAAM,EAAE,kBAAkB;6BAC3B;4BACD;gCACE,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,SAAS;6BAClB;yBACF;wBACH,CAAC,CAAC;4BACE,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,SAAS;yBAClB;oBACL,GAAG,EAAE,YAAY;iBAClB;aACF;YACD,OAAO,EAAE;gBACP,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,MAAM,EAAE;wBACN,MAAM,EAAE,UAAU;qBACnB;iBACF;aACF;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,SAAS;gBAEhB,MAAM,EAAE;oBACN,EAAE,EAAE,UAAU;oBACd,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;wBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBACvD,CAAC;wBACD,OAAO,KAAK,CAAC,OAAO,CAAC;oBACvB,CAAC;oBACD,MAAM,EAAE;wBACN;4BACE,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,cAAc;4BACrB,MAAM,EAAE,UAAU;yBACnB;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,aAAa;4BACpB,MAAM,EAAE,UAAU;yBACnB;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,MAAM,EAAE,UAAU;yBACnB;qBACF;oBACD,OAAO,EAAE;wBACP,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,SAAS;qBAClB;oBACD,GAAG,EAAE,YAAY;iBAClB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\n/**\n * Gas limit overflow information\n */\ntype GasLimitOverflow = {\n /** Block gas limit for the target chain */\n blockGasLimit: bigint;\n /** Effective limit after applying per-tx caps */\n effectiveLimit: bigint;\n /** Estimated gas required for the transaction */\n estimatedGas: bigint;\n /** Reason for overflow: exceeded block limit or per-tx cap */\n reason: \"exceeded\" | \"tx-cap\";\n};\n\n/**\n * Machine context for transaction workflow\n */\ntype TxMachineContext<TPayload, TPreprocess, TSignResult, TResult> = {\n /** Error message from failed operations */\n error: string | null;\n /** Gas limit to use for the transaction */\n gasLimit: bigint | undefined;\n /** Gas limit overflow details when transaction exceeds limits */\n gasLimitOverflow: GasLimitOverflow | null;\n /** Transaction hash after signing */\n hash: string | null;\n /** The transaction payload */\n payload: TPayload | null;\n /** Preprocessed data from validation */\n preprocess: TPreprocess | null;\n /** Sign result (hash for EOA, Safe tx details for Safe) */\n signResult: TSignResult | null;\n /** Final transaction result after confirmation */\n result: TResult | null;\n};\n\n/**\n * Events that can be sent to the transaction machine\n */\ntype TxMachineEvents<TPayload> = { type: \"SUBMIT\"; payload: TPayload } | { type: \"RESET\" };\n\n/**\n * Services configuration for transaction machine.\n *\n * All service functions receive plain values and return Effects with no requirements.\n * If your service needs dependencies, provide them before passing to the machine.\n */\ntype TxMachineServices<TPayload, TPreprocess, TSignResult, TResult> = {\n /** Validates the payload and returns preprocessed data */\n onValidate: (payload: TPayload) => Effect.Effect<TPreprocess, Error>;\n /** Gas check for EOA wallets - returns gas limit or overflow */\n onGasCheck?: (input: {\n payload: TPayload;\n preprocess: TPreprocess;\n }) => Effect.Effect<{ gasLimit: bigint } | { overflow: GasLimitOverflow }, Error>;\n /** Simulation for Safe wallets - may return overflow */\n onSimulate?: (input: {\n payload: TPayload;\n preprocess: TPreprocess;\n }) => Effect.Effect<undefined | { overflow: GasLimitOverflow }, Error>;\n /** Signs the transaction */\n onSign: (input: {\n payload: TPayload;\n preprocess: TPreprocess;\n gasLimit?: bigint;\n }) => Effect.Effect<TSignResult, Error>;\n /** Confirms the transaction and returns final result */\n onConfirm: (input: {\n payload: TPayload;\n signResult: TSignResult;\n }) => Effect.Effect<TResult, Error>;\n};\n\n/**\n * Configuration for creating a transaction machine\n */\ntype TxMachineConfig<TPayload, TPreprocess, TSignResult, TResult> = {\n /** Unique identifier for the machine */\n id: string;\n /** Service implementations */\n services: TxMachineServices<TPayload, TPreprocess, TSignResult, TResult>;\n /** Determines wallet type from payload for branching logic */\n getWalletType: (payload: TPayload) => \"safe\" | \"eoa\";\n /** Optional predicate to detect user rejection errors */\n isUserRejectedError?: (error: unknown) => boolean;\n /** Optional function to extract overflow info from errors */\n isGasLimitOverflowError?: (error: unknown) => GasLimitOverflow | undefined;\n};\n\n/**\n * Creates a transaction workflow state machine with branching paths for Safe vs EOA wallets.\n *\n * Flow:\n * - EOA: initial → validate → gasCheck → signing → pending → success\n * - Safe: initial → validate → simulate → signing → pending → success\n * - Gas overflow: → gasLimitOverflow (terminal, requires RESET)\n *\n * Key features:\n * - Branching based on wallet type (Safe vs EOA)\n * - Gas limit checking with overflow detection\n * - Two-phase execution (sign → confirm)\n * - User rejection handling returns to initial state\n *\n * @example\n * ```ts\n * const machine = createTxMachine({\n * id: \"create-stream\",\n * services: {\n * onValidate: (payload) => Effect.succeed({ validated: true }),\n * onGasCheck: ({ payload, preprocess }) => Effect.succeed({ gasLimit: 100000n }),\n * onSign: ({ payload, preprocess, gasLimit }) => Effect.succeed(\"0x...\"),\n * onConfirm: ({ payload, signResult }) => Effect.succeed({ txHash: \"0x...\" }),\n * },\n * getWalletType: (payload) => payload.isSafe ? \"safe\" : \"eoa\",\n * });\n * ```\n */\nfunction createTxMachine<TPayload, TPreprocess, TSignResult, TResult>({\n id,\n services,\n getWalletType,\n isUserRejectedError,\n isGasLimitOverflowError,\n}: TxMachineConfig<TPayload, TPreprocess, TSignResult, TResult>) {\n return setup({\n actions: {\n doCache: assign({\n error: ({ context, event }) => (event.type === \"SUBMIT\" ? null : context.error),\n gasLimit: ({ context, event }) => (event.type === \"SUBMIT\" ? undefined : context.gasLimit),\n gasLimitOverflow: ({ context, event }) =>\n event.type === \"SUBMIT\" ? null : context.gasLimitOverflow,\n hash: ({ context, event }) => (event.type === \"SUBMIT\" ? null : context.hash),\n payload: ({ context, event }) =>\n event.type === \"SUBMIT\" ? event.payload : context.payload,\n preprocess: ({ context, event }) => (event.type === \"SUBMIT\" ? null : context.preprocess),\n result: ({ context, event }) => (event.type === \"SUBMIT\" ? null : context.result),\n signResult: ({ context, event }) => (event.type === \"SUBMIT\" ? null : context.signResult),\n }),\n doError: assign({\n error: ({ event }) => {\n if (\"error\" in event && event.error instanceof Error) {\n return event.error.message;\n }\n return \"An unknown error occurred\";\n },\n }),\n doGasLimit: assign({\n gasLimit: ({ event }) => {\n if (\"output\" in event && event.output && typeof event.output === \"object\") {\n const output = event.output as { gasLimit?: bigint };\n if (\"gasLimit\" in output) {\n return output.gasLimit;\n }\n }\n return undefined;\n },\n }),\n doGasLimitOverflow: assign({\n gasLimitOverflow: ({ event }) => {\n if (\"output\" in event && event.output && typeof event.output === \"object\") {\n const output = event.output as { overflow?: GasLimitOverflow };\n if (\"overflow\" in output && output.overflow) {\n return output.overflow;\n }\n }\n return null;\n },\n }),\n doGasLimitOverflowFromError: assign({\n gasLimitOverflow: ({ event }) => {\n if (isGasLimitOverflowError && \"error\" in event) {\n const overflow = isGasLimitOverflowError(event.error);\n if (overflow) {\n return overflow;\n }\n }\n return null;\n },\n }),\n doPreprocess: assign({\n preprocess: ({ event }) => {\n if (\"output\" in event) {\n return event.output as TPreprocess;\n }\n return null;\n },\n }),\n doReset: assign({\n error: () => null,\n gasLimit: () => undefined,\n gasLimitOverflow: () => null,\n hash: () => null,\n payload: () => null,\n preprocess: () => null,\n result: () => null,\n signResult: () => null,\n }),\n doResult: assign({\n result: ({ event }) => {\n if (\"output\" in event) {\n return event.output as TResult;\n }\n return null;\n },\n }),\n doSignResult: assign({\n signResult: ({ event }) => {\n if (\"output\" in event) {\n return event.output as TSignResult;\n }\n return null;\n },\n }),\n },\n actors: {\n doConfirm: fromPromise(\n async ({ input }: { input: { payload: TPayload; signResult: TSignResult } }) =>\n Effect.runPromise(services.onConfirm(input))\n ),\n doGasCheck: fromPromise(\n async ({ input }: { input: { payload: TPayload; preprocess: TPreprocess } }) => {\n if (!services.onGasCheck) {\n return { gasLimit: undefined };\n }\n return await Effect.runPromise(services.onGasCheck(input));\n }\n ),\n doSign: fromPromise(\n async ({\n input,\n }: {\n input: { payload: TPayload; preprocess: TPreprocess; gasLimit?: bigint };\n }) => Effect.runPromise(services.onSign(input))\n ),\n doSimulate: fromPromise(\n async ({ input }: { input: { payload: TPayload; preprocess: TPreprocess } }) => {\n if (!services.onSimulate) {\n return undefined;\n }\n return await Effect.runPromise(services.onSimulate(input));\n }\n ),\n doValidate: fromPromise(async ({ input }: { input: TPayload }) =>\n Effect.runPromise(services.onValidate(input))\n ),\n },\n guards: {\n hasGasLimitOverflow: ({ event }) => {\n if (\"output\" in event && event.output && typeof event.output === \"object\") {\n const output = event.output as { overflow?: GasLimitOverflow };\n return \"overflow\" in output && output.overflow !== undefined;\n }\n return false;\n },\n isEoaWallet: ({ context }) => {\n if (!context.payload) {\n return false;\n }\n return getWalletType(context.payload) === \"eoa\";\n },\n isGasLimitOverflowError: ({ event }) => {\n if (isGasLimitOverflowError && \"error\" in event) {\n return isGasLimitOverflowError(event.error) !== undefined;\n }\n return false;\n },\n isSafeWallet: ({ context }) => {\n if (!context.payload) {\n return false;\n }\n return getWalletType(context.payload) === \"safe\";\n },\n isUserRejectedError: ({ event }) => {\n if (isUserRejectedError && \"error\" in event) {\n return isUserRejectedError(event.error);\n }\n return false;\n },\n },\n types: {\n context: {} as TxMachineContext<TPayload, TPreprocess, TSignResult, TResult>,\n events: {} as TxMachineEvents<TPayload>,\n },\n }).createMachine({\n context: {\n error: null,\n gasLimit: undefined,\n gasLimitOverflow: null,\n hash: null,\n payload: null,\n preprocess: null,\n result: null,\n signResult: null,\n },\n id: `txMachine-${id}`,\n initial: \"initial\",\n states: {\n failure: {\n on: {\n RESET: {\n actions: \"doReset\",\n target: \"initial\",\n },\n SUBMIT: {\n target: \"validate\",\n },\n },\n },\n gasCheck: {\n invoke: {\n id: \"gasCheck\",\n input: ({ context }) => {\n if (context.payload === null) {\n throw new Error(\"Missing payload for gas check\");\n }\n if (context.preprocess === null) {\n throw new Error(\"Missing preprocess data for gas check\");\n }\n return {\n payload: context.payload,\n preprocess: context.preprocess,\n };\n },\n onDone: [\n {\n actions: \"doGasLimitOverflow\",\n guard: \"hasGasLimitOverflow\",\n target: \"gasLimitOverflow\",\n },\n {\n actions: \"doGasLimit\",\n target: \"signing\",\n },\n ],\n onError: isGasLimitOverflowError\n ? [\n {\n actions: \"doGasLimitOverflowFromError\",\n guard: \"isGasLimitOverflowError\",\n target: \"gasLimitOverflow\",\n },\n {\n actions: \"doError\",\n target: \"failure\",\n },\n ]\n : {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doGasCheck\",\n },\n },\n gasLimitOverflow: {\n on: {\n RESET: {\n actions: \"doReset\",\n target: \"initial\",\n },\n },\n },\n initial: {\n on: {\n SUBMIT: {\n target: \"validate\",\n },\n },\n },\n pending: {\n invoke: {\n id: \"confirm\",\n input: ({ context }) => {\n if (context.payload === null) {\n throw new Error(\"Missing payload for confirmation\");\n }\n if (context.signResult === null) {\n throw new Error(\"Missing sign result for confirmation\");\n }\n return {\n payload: context.payload,\n signResult: context.signResult,\n };\n },\n onDone: {\n actions: \"doResult\",\n target: \"success\",\n },\n onError: {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doConfirm\",\n },\n },\n signing: {\n invoke: {\n id: \"sign\",\n input: ({ context }) => {\n if (context.payload === null) {\n throw new Error(\"Missing payload for signing\");\n }\n if (context.preprocess === null) {\n throw new Error(\"Missing preprocess data for signing\");\n }\n return {\n gasLimit: context.gasLimit,\n payload: context.payload,\n preprocess: context.preprocess,\n };\n },\n onDone: {\n actions: \"doSignResult\",\n target: \"pending\",\n },\n onError: isUserRejectedError\n ? [\n {\n actions: \"doReset\",\n guard: \"isUserRejectedError\",\n target: \"initial\",\n },\n {\n actions: \"doError\",\n target: \"failure\",\n },\n ]\n : {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doSign\",\n },\n },\n simulate: {\n invoke: {\n id: \"simulate\",\n input: ({ context }) => {\n if (context.payload === null) {\n throw new Error(\"Missing payload for simulation\");\n }\n if (context.preprocess === null) {\n throw new Error(\"Missing preprocess data for simulation\");\n }\n return {\n payload: context.payload,\n preprocess: context.preprocess,\n };\n },\n onDone: [\n {\n actions: \"doGasLimitOverflow\",\n guard: \"hasGasLimitOverflow\",\n target: \"gasLimitOverflow\",\n },\n {\n target: \"signing\",\n },\n ],\n onError: isGasLimitOverflowError\n ? [\n {\n actions: \"doGasLimitOverflowFromError\",\n guard: \"isGasLimitOverflowError\",\n target: \"gasLimitOverflow\",\n },\n {\n actions: \"doError\",\n target: \"failure\",\n },\n ]\n : {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doSimulate\",\n },\n },\n success: {\n on: {\n RESET: {\n actions: \"doReset\",\n target: \"initial\",\n },\n SUBMIT: {\n target: \"validate\",\n },\n },\n },\n validate: {\n entry: \"doCache\",\n // @ts-expect-error - xState v5 type inference limitation with generic functions\n invoke: {\n id: \"validate\",\n input: ({ event }) => {\n if (event.type !== \"SUBMIT\") {\n throw new Error(\"Invalid event type for validation\");\n }\n return event.payload;\n },\n onDone: [\n {\n actions: \"doPreprocess\",\n guard: \"isSafeWallet\",\n target: \"simulate\",\n },\n {\n actions: \"doPreprocess\",\n guard: \"isEoaWallet\",\n target: \"gasCheck\",\n },\n {\n actions: \"doPreprocess\",\n target: \"gasCheck\",\n },\n ],\n onError: {\n actions: \"doError\",\n target: \"failure\",\n },\n src: \"doValidate\",\n },\n },\n },\n });\n}\n\nexport { createTxMachine };\nexport type {\n GasLimitOverflow,\n TxMachineConfig,\n TxMachineContext,\n TxMachineEvents,\n TxMachineServices,\n};\n"]}
package/package.json CHANGED
@@ -1,19 +1,29 @@
1
1
  {
2
2
  "name": "@prb/effect-xstate",
3
3
  "description": "Effect-TS and xState v5 workflow utilities",
4
- "version": "1.0.0-beta.1",
4
+ "homepage": "https://github.com/PaulRBerg/prb-effect/tree/main/xstate#readme",
5
+ "license": "MIT",
6
+ "main": "./dist/index.js",
7
+ "sideEffects": false,
5
8
  "type": "module",
9
+ "types": "./dist/index.d.ts",
10
+ "version": "1.0.0-beta.2",
6
11
  "scripts": {
7
12
  "build": "just build",
8
13
  "prepack": "bun install --frozen-lockfile && just build"
9
14
  },
10
- "main": "./dist/index.js",
11
- "types": "./dist/index.d.ts",
12
15
  "author": {
13
16
  "name": "Paul Razvan Berg",
14
17
  "url": "https://github.com/PaulRBerg"
15
18
  },
16
- "license": "MIT",
19
+ "repository": {
20
+ "directory": "xstate",
21
+ "type": "git",
22
+ "url": "git+https://github.com/PaulRBerg/prb-effect.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/PaulRBerg/prb-effect/issues"
26
+ },
17
27
  "devDependencies": {
18
28
  "@biomejs/biome": "catalog:dev",
19
29
  "@effect/vitest": "catalog:dev",
@@ -45,6 +55,15 @@
45
55
  "dist/**",
46
56
  "README.md"
47
57
  ],
58
+ "keywords": [
59
+ "effect",
60
+ "effect-ts",
61
+ "react",
62
+ "state-machine",
63
+ "typescript",
64
+ "workflow",
65
+ "xstate"
66
+ ],
48
67
  "peerDependencies": {
49
68
  "@xstate/react": "catalog:peers",
50
69
  "effect": "catalog:peers",