@prb/effect-evm 1.0.0-beta.5 → 1.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -5
- package/dist/constants/index.js.map +1 -1
- package/dist/contract/pipeline/internal/core.d.ts +2 -2
- package/dist/contract/pipeline/internal/core.d.ts.map +1 -1
- package/dist/contract/pipeline/internal/core.js.map +1 -1
- package/dist/contract/pipeline/internal/receipt.d.ts +2 -2
- package/dist/contract/pipeline/internal/receipt.d.ts.map +1 -1
- package/dist/contract/pipeline/internal/receipt.js +1 -1
- package/dist/contract/pipeline/internal/receipt.js.map +1 -1
- package/dist/contract/pipeline/service.d.ts +3 -3
- package/dist/contract/pipeline/service.d.ts.map +1 -1
- package/dist/contract/pipeline/service.js.map +1 -1
- package/dist/contract/pipeline/types.d.ts +2 -2
- package/dist/contract/pipeline/types.d.ts.map +1 -1
- package/dist/contract/pipeline/types.js.map +1 -1
- package/dist/contract/pipeline/write-and-track.d.ts.map +1 -1
- package/dist/contract/pipeline/write-and-track.js +5 -6
- package/dist/contract/pipeline/write-and-track.js.map +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts.map +1 -1
- package/dist/core/errors/transaction.d.ts +7 -7
- package/dist/core/errors/transaction.d.ts.map +1 -1
- package/dist/core/errors/transaction.js +2 -2
- package/dist/core/errors/transaction.js.map +1 -1
- package/dist/core/errors/viem-mapper.d.ts +3 -3
- package/dist/core/errors/viem-mapper.d.ts.map +1 -1
- package/dist/core/errors/viem-mapper.js +3 -3
- package/dist/core/errors/viem-mapper.js.map +1 -1
- package/dist/deploy/service.d.ts +3 -3
- package/dist/deploy/service.d.ts.map +1 -1
- package/dist/deploy/service.js.map +1 -1
- package/dist/eip7702/errors.d.ts +3 -3
- package/dist/eip7702/errors.d.ts.map +1 -1
- package/dist/eip7702/errors.js +1 -1
- package/dist/eip7702/errors.js.map +1 -1
- package/dist/eip7702/service.d.ts +8 -8
- package/dist/eip7702/service.d.ts.map +1 -1
- package/dist/eip7702/service.js +2 -2
- package/dist/eip7702/service.js.map +1 -1
- package/dist/react-hooks/index.d.ts +0 -4
- package/dist/react-hooks/index.d.ts.map +1 -1
- package/dist/react-hooks/index.js +0 -4
- package/dist/react-hooks/index.js.map +1 -1
- package/dist/subscriptions/pending-tx.d.ts +1 -1
- package/dist/subscriptions/pending-tx.d.ts.map +1 -1
- package/dist/subscriptions/pending-tx.js +1 -1
- package/dist/subscriptions/pending-tx.js.map +1 -1
- package/dist/subscriptions/service.d.ts +2 -2
- package/dist/subscriptions/service.d.ts.map +1 -1
- package/dist/subscriptions/service.js +4 -4
- package/dist/subscriptions/service.js.map +1 -1
- package/dist/testing-kit/mock-subscription-service.d.ts +2 -2
- package/dist/testing-kit/mock-subscription-service.d.ts.map +1 -1
- package/dist/testing-kit/mock-subscription-service.js +5 -5
- package/dist/testing-kit/mock-subscription-service.js.map +1 -1
- package/dist/testing-kit/mock-transfer-service.d.ts +3 -3
- package/dist/testing-kit/mock-transfer-service.d.ts.map +1 -1
- package/dist/testing-kit/mock-transfer-service.js.map +1 -1
- package/dist/transfer/service.d.ts +3 -3
- package/dist/transfer/service.d.ts.map +1 -1
- package/dist/transfer/service.js +3 -3
- package/dist/transfer/service.js.map +1 -1
- package/dist/tx/manager.d.ts +3 -2
- package/dist/tx/manager.d.ts.map +1 -1
- package/dist/tx/manager.js +232 -216
- package/dist/tx/manager.js.map +1 -1
- package/dist/tx/manager.test.integration.js +25 -5
- package/dist/tx/manager.test.integration.js.map +1 -1
- package/dist/tx/policy.d.ts +0 -1
- package/dist/tx/policy.d.ts.map +1 -1
- package/dist/tx/policy.js.map +1 -1
- package/dist/tx/replacement.d.ts +3 -3
- package/dist/tx/replacement.d.ts.map +1 -1
- package/dist/tx/replacement.js +3 -3
- package/dist/tx/replacement.js.map +1 -1
- package/dist/tx/tracker.d.ts +6 -6
- package/dist/tx/tracker.d.ts.map +1 -1
- package/dist/tx/tracker.js +9 -9
- package/dist/tx/tracker.js.map +1 -1
- package/dist/types/params.d.ts +1 -1
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/params.js.map +1 -1
- package/dist/wallet/errors.d.ts +3 -3
- package/dist/wallet/errors.d.ts.map +1 -1
- package/dist/wallet/errors.js +1 -1
- package/dist/wallet/errors.js.map +1 -1
- package/dist/wallet/operations.d.ts +2 -2
- package/dist/wallet/operations.d.ts.map +1 -1
- package/dist/wallet/operations.js +2 -2
- package/dist/wallet/operations.js.map +1 -1
- package/dist/wallet/service.d.ts +2 -2
- package/dist/wallet/service.d.ts.map +1 -1
- package/dist/wallet/service.js.map +1 -1
- package/package.json +1 -6
- package/dist/react-hooks/safe-app-origins.d.ts +0 -8
- package/dist/react-hooks/safe-app-origins.d.ts.map +0 -1
- package/dist/react-hooks/safe-app-origins.js +0 -124
- package/dist/react-hooks/safe-app-origins.js.map +0 -1
- package/dist/react-hooks/use-is-host-safe-app.d.ts +0 -2
- package/dist/react-hooks/use-is-host-safe-app.d.ts.map +0 -1
- package/dist/react-hooks/use-is-host-safe-app.js +0 -16
- package/dist/react-hooks/use-is-host-safe-app.js.map +0 -1
- package/dist/react-hooks/use-is-safe-app-context.d.ts +0 -2
- package/dist/react-hooks/use-is-safe-app-context.d.ts.map +0 -1
- package/dist/react-hooks/use-is-safe-app-context.js +0 -41
- package/dist/react-hooks/use-is-safe-app-context.js.map +0 -1
- package/dist/react-hooks/use-is-safe-multisig-wallet.d.ts +0 -2
- package/dist/react-hooks/use-is-safe-multisig-wallet.d.ts.map +0 -1
- package/dist/react-hooks/use-is-safe-multisig-wallet.js +0 -24
- package/dist/react-hooks/use-is-safe-multisig-wallet.js.map +0 -1
- package/dist/safe/adapter.d.ts +0 -9
- package/dist/safe/adapter.d.ts.map +0 -1
- package/dist/safe/adapter.js +0 -13
- package/dist/safe/adapter.js.map +0 -1
- package/dist/safe/detection.d.ts +0 -26
- package/dist/safe/detection.d.ts.map +0 -1
- package/dist/safe/detection.js +0 -102
- package/dist/safe/detection.js.map +0 -1
- package/dist/safe/detection.test.integration.d.ts +0 -2
- package/dist/safe/detection.test.integration.d.ts.map +0 -1
- package/dist/safe/detection.test.integration.js +0 -92
- package/dist/safe/detection.test.integration.js.map +0 -1
- package/dist/safe/errors.d.ts +0 -79
- package/dist/safe/errors.d.ts.map +0 -1
- package/dist/safe/errors.js +0 -34
- package/dist/safe/errors.js.map +0 -1
- package/dist/safe/index.d.ts +0 -8
- package/dist/safe/index.d.ts.map +0 -1
- package/dist/safe/index.js +0 -6
- package/dist/safe/index.js.map +0 -1
- package/dist/safe/live.d.ts +0 -8
- package/dist/safe/live.d.ts.map +0 -1
- package/dist/safe/live.js +0 -250
- package/dist/safe/live.js.map +0 -1
- package/dist/safe/service.d.ts +0 -26
- package/dist/safe/service.d.ts.map +0 -1
- package/dist/safe/service.js +0 -4
- package/dist/safe/service.js.map +0 -1
- package/dist/safe/service.test.integration.d.ts +0 -2
- package/dist/safe/service.test.integration.d.ts.map +0 -1
- package/dist/safe/service.test.integration.js +0 -171
- package/dist/safe/service.test.integration.js.map +0 -1
- package/dist/safe/simulation/abis.d.ts +0 -73
- package/dist/safe/simulation/abis.d.ts.map +0 -1
- package/dist/safe/simulation/abis.js +0 -61
- package/dist/safe/simulation/abis.js.map +0 -1
- package/dist/safe/simulation/addresses.d.ts +0 -4
- package/dist/safe/simulation/addresses.d.ts.map +0 -1
- package/dist/safe/simulation/addresses.js +0 -54
- package/dist/safe/simulation/addresses.js.map +0 -1
- package/dist/safe/simulation/encoding.d.ts +0 -16
- package/dist/safe/simulation/encoding.d.ts.map +0 -1
- package/dist/safe/simulation/encoding.js +0 -36
- package/dist/safe/simulation/encoding.js.map +0 -1
- package/dist/safe/simulation/errors.d.ts +0 -56
- package/dist/safe/simulation/errors.d.ts.map +0 -1
- package/dist/safe/simulation/errors.js +0 -37
- package/dist/safe/simulation/errors.js.map +0 -1
- package/dist/safe/simulation/index.d.ts +0 -7
- package/dist/safe/simulation/index.d.ts.map +0 -1
- package/dist/safe/simulation/index.js +0 -6
- package/dist/safe/simulation/index.js.map +0 -1
- package/dist/safe/simulation/internal/calldata/calldata.d.ts +0 -5
- package/dist/safe/simulation/internal/calldata/calldata.d.ts.map +0 -1
- package/dist/safe/simulation/internal/calldata/calldata.js +0 -17
- package/dist/safe/simulation/internal/calldata/calldata.js.map +0 -1
- package/dist/safe/simulation/internal/calldata/index.d.ts +0 -2
- package/dist/safe/simulation/internal/calldata/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/calldata/index.js +0 -2
- package/dist/safe/simulation/internal/calldata/index.js.map +0 -1
- package/dist/safe/simulation/internal/contracts/contracts.d.ts +0 -5
- package/dist/safe/simulation/internal/contracts/contracts.d.ts.map +0 -1
- package/dist/safe/simulation/internal/contracts/contracts.js +0 -25
- package/dist/safe/simulation/internal/contracts/contracts.js.map +0 -1
- package/dist/safe/simulation/internal/contracts/index.d.ts +0 -2
- package/dist/safe/simulation/internal/contracts/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/contracts/index.js +0 -2
- package/dist/safe/simulation/internal/contracts/index.js.map +0 -1
- package/dist/safe/simulation/internal/evaluation/evaluation.d.ts +0 -6
- package/dist/safe/simulation/internal/evaluation/evaluation.d.ts.map +0 -1
- package/dist/safe/simulation/internal/evaluation/evaluation.js +0 -20
- package/dist/safe/simulation/internal/evaluation/evaluation.js.map +0 -1
- package/dist/safe/simulation/internal/evaluation/index.d.ts +0 -2
- package/dist/safe/simulation/internal/evaluation/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/evaluation/index.js +0 -2
- package/dist/safe/simulation/internal/evaluation/index.js.map +0 -1
- package/dist/safe/simulation/internal/execution/execution.d.ts +0 -9
- package/dist/safe/simulation/internal/execution/execution.d.ts.map +0 -1
- package/dist/safe/simulation/internal/execution/execution.js +0 -65
- package/dist/safe/simulation/internal/execution/execution.js.map +0 -1
- package/dist/safe/simulation/internal/execution/index.d.ts +0 -2
- package/dist/safe/simulation/internal/execution/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/execution/index.js +0 -2
- package/dist/safe/simulation/internal/execution/index.js.map +0 -1
- package/dist/safe/simulation/internal/limits/index.d.ts +0 -2
- package/dist/safe/simulation/internal/limits/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/limits/index.js +0 -2
- package/dist/safe/simulation/internal/limits/index.js.map +0 -1
- package/dist/safe/simulation/internal/limits/limits.d.ts +0 -5
- package/dist/safe/simulation/internal/limits/limits.d.ts.map +0 -1
- package/dist/safe/simulation/internal/limits/limits.js +0 -18
- package/dist/safe/simulation/internal/limits/limits.js.map +0 -1
- package/dist/safe/simulation/internal/types/index.d.ts +0 -2
- package/dist/safe/simulation/internal/types/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/types/index.js +0 -2
- package/dist/safe/simulation/internal/types/index.js.map +0 -1
- package/dist/safe/simulation/internal/types/types.d.ts +0 -11
- package/dist/safe/simulation/internal/types/types.d.ts.map +0 -1
- package/dist/safe/simulation/internal/types/types.js +0 -2
- package/dist/safe/simulation/internal/types/types.js.map +0 -1
- package/dist/safe/simulation/internal/validation/index.d.ts +0 -2
- package/dist/safe/simulation/internal/validation/index.d.ts.map +0 -1
- package/dist/safe/simulation/internal/validation/index.js +0 -2
- package/dist/safe/simulation/internal/validation/index.js.map +0 -1
- package/dist/safe/simulation/internal/validation/validation.d.ts +0 -5
- package/dist/safe/simulation/internal/validation/validation.d.ts.map +0 -1
- package/dist/safe/simulation/internal/validation/validation.js +0 -27
- package/dist/safe/simulation/internal/validation/validation.js.map +0 -1
- package/dist/safe/simulation/service.d.ts +0 -14
- package/dist/safe/simulation/service.d.ts.map +0 -1
- package/dist/safe/simulation/service.js +0 -25
- package/dist/safe/simulation/service.js.map +0 -1
- package/dist/safe/simulation/types.d.ts +0 -20
- package/dist/safe/simulation/types.d.ts.map +0 -1
- package/dist/safe/simulation/types.js +0 -2
- package/dist/safe/simulation/types.js.map +0 -1
- package/dist/safe/types.d.ts +0 -61
- package/dist/safe/types.d.ts.map +0 -1
- package/dist/safe/types.js +0 -2
- package/dist/safe/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/core/errors/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cause, Effect, Schema } from \"effect\";\nimport { dual } from \"effect/Function\";\n\nimport { isTaggedError } from \"./predicates.js\";\n\nexport type TransactionReplacementReason = \"cancelled\" | \"replaced\" | \"repriced\";\n\nexport class UserRejectedError extends Schema.TaggedError<UserRejectedError>()(\n \"UserRejectedError\",\n {\n message: Schema.String,\n }\n) {}\n\nexport class TransactionFailedError extends Schema.TaggedError<TransactionFailedError>()(\n \"TransactionFailedError\",\n {\n cause: Schema.optional(Schema.Unknown),\n hash: Schema.String,\n message: Schema.String,\n }\n) {}\n\nexport class TransactionReplacedError extends Schema.TaggedError<TransactionReplacedError>()(\n \"TransactionReplacedError\",\n {\n message: Schema.String,\n newHash: Schema.String,\n oldHash: Schema.String,\n reason: Schema.Literal(\"cancelled\", \"replaced\", \"repriced\"),\n }\n) {}\n\nexport class ReceiptTimeoutError extends Schema.TaggedError<ReceiptTimeoutError>()(\n \"ReceiptTimeoutError\",\n {\n hash: Schema.String,\n message: Schema.String,\n timeout: Schema.Number,\n }\n) {}\n\nexport class InsufficientFundsError extends Schema.TaggedError<InsufficientFundsError>()(\n \"InsufficientFundsError\",\n {\n available: Schema.String,\n message: Schema.String,\n required: Schema.String,\n }\n) {}\n\n/**\n * Strict _tag guard for UserRejectedError.\n */\nexport const isTaggedUserRejectedError = isTaggedError<UserRejectedError>(\"UserRejectedError\");\n\nconst USER_REJECTION_CODE = 4001;\nconst USER_REJECTION_MESSAGE_FRAGMENTS = [\n \"user rejected\",\n \"user denied\",\n \"user cancelled\",\n \"rejected by user\",\n \"denied by user\",\n \"rejected the request\",\n];\n\ntype UserRejectionRecord = {\n readonly _tag?: unknown;\n readonly cause?: unknown;\n readonly code?: unknown;\n readonly error?: unknown;\n readonly errors?: unknown;\n readonly name?: unknown;\n};\n\ntype UserRejectionLooseRecord = UserRejectionRecord & {\n readonly message?: unknown;\n};\n\nfunction matchesUserRejectionMessage(message: string): boolean {\n const normalized = message.trim().toLowerCase();\n return USER_REJECTION_MESSAGE_FRAGMENTS.some((fragment) => normalized.includes(fragment));\n}\n\nfunction matchesUserRejectionTag(tag: string): boolean {\n return tag.trim().toLowerCase().includes(\"userrejected\");\n}\n\nfunction matchesUserRejectionName(name: string): boolean {\n return name.trim().toLowerCase().includes(\"userrejected\");\n}\n\nfunction isUserRejectionCode(value: unknown): boolean {\n return value === USER_REJECTION_CODE || value === `${USER_REJECTION_CODE}`;\n}\n\nfunction checkUserRejectionRecord(record: UserRejectionRecord, depth: number): boolean {\n if (typeof record._tag === \"string\" && matchesUserRejectionTag(record._tag)) {\n return true;\n }\n\n if (typeof record.name === \"string\" && matchesUserRejectionName(record.name)) {\n return true;\n }\n\n if (isUserRejectionCode(record.code)) {\n return true;\n }\n\n if (Cause.isCause(record.cause)) {\n return checkUserRejection(Cause.squash(record.cause), depth + 1);\n }\n\n if (record.cause && checkUserRejection(record.cause, depth + 1)) {\n return true;\n }\n\n if (record.error && checkUserRejection(record.error, depth + 1)) {\n return true;\n }\n\n if (Array.isArray(record.errors)) {\n return record.errors.some((error) => checkUserRejection(error, depth + 1));\n }\n\n return false;\n}\n\nfunction checkUserRejection(error: unknown, depth: number): boolean {\n if (!error || depth > 4) {\n return false;\n }\n\n if (isTaggedUserRejectedError(error)) {\n return true;\n }\n\n if (Cause.isCause(error)) {\n return checkUserRejection(Cause.squash(error), depth + 1);\n }\n\n if (error instanceof Error) {\n if (matchesUserRejectionName(error.name)) {\n return true;\n }\n if (isUserRejectionCode((error as { code?: unknown }).code)) {\n return true;\n }\n const tag = (error as { _tag?: unknown })._tag;\n if (typeof tag === \"string\" && matchesUserRejectionTag(tag)) {\n return true;\n }\n return checkUserRejectionRecord(error as UserRejectionRecord, depth);\n }\n\n if (typeof error === \"object\") {\n return checkUserRejectionRecord(error as UserRejectionRecord, depth);\n }\n\n return false;\n}\n\n/**\n * Strict user rejection detection based on tags, names, codes, and nested causes.\n */\nexport function isUserRejectedError(error: unknown): boolean {\n return checkUserRejection(error, 0);\n}\n\n/**\n * Lenient user rejection check based on error messages and nested causes.\n * Useful for UI hints, not for control flow.\n */\nexport function isLikelyUserRejectedError(error: unknown): boolean {\n return checkLikelyUserRejection(error, 0);\n}\n\nfunction checkLikelyUserRejectionRecord(record: UserRejectionLooseRecord, depth: number): boolean {\n if (typeof record.message === \"string\" && matchesUserRejectionMessage(record.message)) {\n return true;\n }\n if (Cause.isCause(record.cause)) {\n return checkLikelyUserRejection(Cause.squash(record.cause), depth + 1);\n }\n if (record.cause && checkLikelyUserRejection(record.cause, depth + 1)) {\n return true;\n }\n if (record.error && checkLikelyUserRejection(record.error, depth + 1)) {\n return true;\n }\n if (Array.isArray(record.errors)) {\n return record.errors.some((err) => checkLikelyUserRejection(err, depth + 1));\n }\n return false;\n}\n\nfunction checkLikelyUserRejection(error: unknown, depth: number): boolean {\n if (!error || depth > 4) {\n return false;\n }\n\n if (isUserRejectedError(error)) {\n return true;\n }\n\n if (typeof error === \"string\") {\n return matchesUserRejectionMessage(error);\n }\n\n if (Cause.isCause(error)) {\n return checkLikelyUserRejection(Cause.squash(error), depth + 1);\n }\n\n if (error instanceof Error) {\n if (matchesUserRejectionMessage(error.message)) {\n return true;\n }\n return checkLikelyUserRejectionRecord(error as UserRejectionLooseRecord, depth);\n }\n\n if (typeof error === \"object\") {\n return checkLikelyUserRejectionRecord(error as UserRejectionLooseRecord, depth);\n }\n\n return false;\n}\n\n/**\n * Catch UserRejectedError and return a fallback value.\n * Useful for treating rejection as \"cancelled\" rather than \"failed\".\n *\n * @example\n * ```ts\n * const result = await Effect.runPromise(\n * pipeline.writeAndWait(request).pipe(catchUserRejection(null))\n * );\n * if (result === null) {\n * // User cancelled - reset to idle\n * }\n * ```\n */\nexport const catchUserRejection: {\n <A2>(\n fallback: A2\n ): <A, E, R>(\n effect: Effect.Effect<A, E, R>\n ) => Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R>;\n <A, E, R, A2>(\n effect: Effect.Effect<A, E, R>,\n fallback: A2\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R>;\n} = dual(\n 2,\n <A, E, R, A2>(\n effect: Effect.Effect<A, E, R>,\n fallback: A2\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R> =>\n Effect.catchIf(effect, isUserRejectedError, () => Effect.succeed(fallback)) as Effect.Effect<\n A | A2,\n Exclude<E, UserRejectedError>,\n R\n >\n);\n\n/**\n * Catch UserRejectedError and run a fallback effect.\n *\n * @example\n * ```ts\n * const result = await Effect.runPromise(\n * pipeline.writeAndWait(request).pipe(\n * catchUserRejectionWith(Effect.succeed({ cancelled: true }))\n * )\n * );\n * ```\n */\nexport const catchUserRejectionWith: {\n <A2, E2, R2>(\n fallback: Effect.Effect<A2, E2, R2>\n ): <A, E, R>(\n effect: Effect.Effect<A, E, R>\n ) => Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2>;\n <A, E, R, A2, E2, R2>(\n effect: Effect.Effect<A, E, R>,\n fallback: Effect.Effect<A2, E2, R2>\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2>;\n} = dual(\n 2,\n <A, E, R, A2, E2, R2>(\n effect: Effect.Effect<A, E, R>,\n fallback: Effect.Effect<A2, E2, R2>\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2> =>\n Effect.catchIf(effect, isUserRejectedError, () => fallback) as Effect.Effect<\n A | A2,\n Exclude<E, UserRejectedError> | E2,\n R | R2\n >\n);\n"]}
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/core/errors/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cause, Effect, Schema } from \"effect\";\nimport { dual } from \"effect/Function\";\n\nimport { isTaggedError } from \"./predicates.js\";\n\nexport type TxReplacementReason = \"cancelled\" | \"replaced\" | \"repriced\";\n\nexport class UserRejectedError extends Schema.TaggedError<UserRejectedError>()(\n \"UserRejectedError\",\n {\n message: Schema.String,\n }\n) {}\n\nexport class TxFailedError extends Schema.TaggedError<TxFailedError>()(\"TxFailedError\", {\n cause: Schema.optional(Schema.Unknown),\n hash: Schema.String,\n message: Schema.String,\n}) {}\n\nexport class TxReplacedError extends Schema.TaggedError<TxReplacedError>()(\"TxReplacedError\", {\n message: Schema.String,\n newHash: Schema.String,\n oldHash: Schema.String,\n reason: Schema.Literal(\"cancelled\", \"replaced\", \"repriced\"),\n}) {}\n\nexport class ReceiptTimeoutError extends Schema.TaggedError<ReceiptTimeoutError>()(\n \"ReceiptTimeoutError\",\n {\n hash: Schema.String,\n message: Schema.String,\n timeout: Schema.Number,\n }\n) {}\n\nexport class InsufficientFundsError extends Schema.TaggedError<InsufficientFundsError>()(\n \"InsufficientFundsError\",\n {\n available: Schema.String,\n message: Schema.String,\n required: Schema.String,\n }\n) {}\n\n/**\n * Strict _tag guard for UserRejectedError.\n */\nexport const isTaggedUserRejectedError = isTaggedError<UserRejectedError>(\"UserRejectedError\");\n\nconst USER_REJECTION_CODE = 4001;\nconst USER_REJECTION_MESSAGE_FRAGMENTS = [\n \"user rejected\",\n \"user denied\",\n \"user cancelled\",\n \"rejected by user\",\n \"denied by user\",\n \"rejected the request\",\n];\n\ntype UserRejectionRecord = {\n readonly _tag?: unknown;\n readonly cause?: unknown;\n readonly code?: unknown;\n readonly error?: unknown;\n readonly errors?: unknown;\n readonly name?: unknown;\n};\n\ntype UserRejectionLooseRecord = UserRejectionRecord & {\n readonly message?: unknown;\n};\n\nfunction matchesUserRejectionMessage(message: string): boolean {\n const normalized = message.trim().toLowerCase();\n return USER_REJECTION_MESSAGE_FRAGMENTS.some((fragment) => normalized.includes(fragment));\n}\n\nfunction matchesUserRejectionTag(tag: string): boolean {\n return tag.trim().toLowerCase().includes(\"userrejected\");\n}\n\nfunction matchesUserRejectionName(name: string): boolean {\n return name.trim().toLowerCase().includes(\"userrejected\");\n}\n\nfunction isUserRejectionCode(value: unknown): boolean {\n return value === USER_REJECTION_CODE || value === `${USER_REJECTION_CODE}`;\n}\n\nfunction checkUserRejectionRecord(record: UserRejectionRecord, depth: number): boolean {\n if (typeof record._tag === \"string\" && matchesUserRejectionTag(record._tag)) {\n return true;\n }\n\n if (typeof record.name === \"string\" && matchesUserRejectionName(record.name)) {\n return true;\n }\n\n if (isUserRejectionCode(record.code)) {\n return true;\n }\n\n if (Cause.isCause(record.cause)) {\n return checkUserRejection(Cause.squash(record.cause), depth + 1);\n }\n\n if (record.cause && checkUserRejection(record.cause, depth + 1)) {\n return true;\n }\n\n if (record.error && checkUserRejection(record.error, depth + 1)) {\n return true;\n }\n\n if (Array.isArray(record.errors)) {\n return record.errors.some((error) => checkUserRejection(error, depth + 1));\n }\n\n return false;\n}\n\nfunction checkUserRejection(error: unknown, depth: number): boolean {\n if (!error || depth > 4) {\n return false;\n }\n\n if (isTaggedUserRejectedError(error)) {\n return true;\n }\n\n if (Cause.isCause(error)) {\n return checkUserRejection(Cause.squash(error), depth + 1);\n }\n\n if (error instanceof Error) {\n if (matchesUserRejectionName(error.name)) {\n return true;\n }\n if (isUserRejectionCode((error as { code?: unknown }).code)) {\n return true;\n }\n const tag = (error as { _tag?: unknown })._tag;\n if (typeof tag === \"string\" && matchesUserRejectionTag(tag)) {\n return true;\n }\n return checkUserRejectionRecord(error as UserRejectionRecord, depth);\n }\n\n if (typeof error === \"object\") {\n return checkUserRejectionRecord(error as UserRejectionRecord, depth);\n }\n\n return false;\n}\n\n/**\n * Strict user rejection detection based on tags, names, codes, and nested causes.\n */\nexport function isUserRejectedError(error: unknown): boolean {\n return checkUserRejection(error, 0);\n}\n\n/**\n * Lenient user rejection check based on error messages and nested causes.\n * Useful for UI hints, not for control flow.\n */\nexport function isLikelyUserRejectedError(error: unknown): boolean {\n return checkLikelyUserRejection(error, 0);\n}\n\nfunction checkLikelyUserRejectionRecord(record: UserRejectionLooseRecord, depth: number): boolean {\n if (typeof record.message === \"string\" && matchesUserRejectionMessage(record.message)) {\n return true;\n }\n if (Cause.isCause(record.cause)) {\n return checkLikelyUserRejection(Cause.squash(record.cause), depth + 1);\n }\n if (record.cause && checkLikelyUserRejection(record.cause, depth + 1)) {\n return true;\n }\n if (record.error && checkLikelyUserRejection(record.error, depth + 1)) {\n return true;\n }\n if (Array.isArray(record.errors)) {\n return record.errors.some((err) => checkLikelyUserRejection(err, depth + 1));\n }\n return false;\n}\n\nfunction checkLikelyUserRejection(error: unknown, depth: number): boolean {\n if (!error || depth > 4) {\n return false;\n }\n\n if (isUserRejectedError(error)) {\n return true;\n }\n\n if (typeof error === \"string\") {\n return matchesUserRejectionMessage(error);\n }\n\n if (Cause.isCause(error)) {\n return checkLikelyUserRejection(Cause.squash(error), depth + 1);\n }\n\n if (error instanceof Error) {\n if (matchesUserRejectionMessage(error.message)) {\n return true;\n }\n return checkLikelyUserRejectionRecord(error as UserRejectionLooseRecord, depth);\n }\n\n if (typeof error === \"object\") {\n return checkLikelyUserRejectionRecord(error as UserRejectionLooseRecord, depth);\n }\n\n return false;\n}\n\n/**\n * Catch UserRejectedError and return a fallback value.\n * Useful for treating rejection as \"cancelled\" rather than \"failed\".\n *\n * @example\n * ```ts\n * const result = await Effect.runPromise(\n * pipeline.writeAndWait(request).pipe(catchUserRejection(null))\n * );\n * if (result === null) {\n * // User cancelled - reset to idle\n * }\n * ```\n */\nexport const catchUserRejection: {\n <A2>(\n fallback: A2\n ): <A, E, R>(\n effect: Effect.Effect<A, E, R>\n ) => Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R>;\n <A, E, R, A2>(\n effect: Effect.Effect<A, E, R>,\n fallback: A2\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R>;\n} = dual(\n 2,\n <A, E, R, A2>(\n effect: Effect.Effect<A, E, R>,\n fallback: A2\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError>, R> =>\n Effect.catchIf(effect, isUserRejectedError, () => Effect.succeed(fallback)) as Effect.Effect<\n A | A2,\n Exclude<E, UserRejectedError>,\n R\n >\n);\n\n/**\n * Catch UserRejectedError and run a fallback effect.\n *\n * @example\n * ```ts\n * const result = await Effect.runPromise(\n * pipeline.writeAndWait(request).pipe(\n * catchUserRejectionWith(Effect.succeed({ cancelled: true }))\n * )\n * );\n * ```\n */\nexport const catchUserRejectionWith: {\n <A2, E2, R2>(\n fallback: Effect.Effect<A2, E2, R2>\n ): <A, E, R>(\n effect: Effect.Effect<A, E, R>\n ) => Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2>;\n <A, E, R, A2, E2, R2>(\n effect: Effect.Effect<A, E, R>,\n fallback: Effect.Effect<A2, E2, R2>\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2>;\n} = dual(\n 2,\n <A, E, R, A2, E2, R2>(\n effect: Effect.Effect<A, E, R>,\n fallback: Effect.Effect<A2, E2, R2>\n ): Effect.Effect<A | A2, Exclude<E, UserRejectedError> | E2, R | R2> =>\n Effect.catchIf(effect, isUserRejectedError, () => fallback) as Effect.Effect<\n A | A2,\n Exclude<E, UserRejectedError> | E2,\n R | R2\n >\n);\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Address, Hash } from "viem";
|
|
2
2
|
import { ContractReadError, ContractWriteError, GasEstimationError, SimulationFailedError } from "../../core/errors/contract.js";
|
|
3
3
|
import { InsufficientFundsError, UserRejectedError } from "../../core/errors/transaction.js";
|
|
4
|
-
import { AddChainError, ChainSwitchError, SignMessageError,
|
|
4
|
+
import { AddChainError, ChainSwitchError, SignMessageError, SignTxError, SignTypedDataError, WalletConnectionError, WatchAssetError } from "../../wallet/index.js";
|
|
5
5
|
export declare function isUserRejection(error: unknown): boolean;
|
|
6
6
|
export declare function isInsufficientFunds(error: unknown): boolean;
|
|
7
7
|
export declare function extractRevertReason(error: unknown): string | undefined;
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function isTxReplaced(error: unknown): {
|
|
9
9
|
newHash: Hash;
|
|
10
10
|
replaced: true;
|
|
11
11
|
} | false;
|
|
@@ -38,7 +38,7 @@ export declare function classifyWalletError(error: unknown, operation: "signType
|
|
|
38
38
|
}): UserRejectedError | SignTypedDataError;
|
|
39
39
|
export declare function classifyWalletError(error: unknown, operation: "signTransaction", context?: {
|
|
40
40
|
chainId?: number;
|
|
41
|
-
}): UserRejectedError |
|
|
41
|
+
}): UserRejectedError | SignTxError;
|
|
42
42
|
export declare function classifyWalletError(error: unknown, operation: "watchAsset", context?: {
|
|
43
43
|
chainId?: number;
|
|
44
44
|
}): UserRejectedError | WatchAssetError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem-mapper.d.ts","sourceRoot":"","sources":["../../../src/core/errors/viem-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAU1C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EAEtB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"viem-mapper.d.ts","sourceRoot":"","sources":["../../../src/core/errors/viem-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ContractFunctionExecutionError, ContractFunctionRevertedError, BaseError as CoreError, EstimateGasExecutionError, TransactionExecutionError, UserRejectedRequestError, InsufficientFundsError as ViemInsufficientFundsError, } from "viem";
|
|
2
2
|
import { ContractReadError, ContractWriteError, GasEstimationError, SimulationFailedError, } from "../../core/errors/contract.js";
|
|
3
3
|
import { InsufficientFundsError, isLikelyUserRejectedError, UserRejectedError, } from "../../core/errors/transaction.js";
|
|
4
|
-
import { AddChainError, ChainSwitchError, SignMessageError,
|
|
4
|
+
import { AddChainError, ChainSwitchError, SignMessageError, SignTxError, SignTypedDataError, WalletConnectionError, WatchAssetError, } from "../../wallet/index.js";
|
|
5
5
|
const REVERT_REASON_RE = /reverted with reason: (.+?)(?:\n|$)/;
|
|
6
6
|
const REVERT_REASON_STRING_RE = /reverted with reason string '(.+?)'/;
|
|
7
7
|
const REVERT_CUSTOM_ERROR_RE = /reverted with custom error '(.+?)'/;
|
|
@@ -72,7 +72,7 @@ export function extractRevertReason(error) {
|
|
|
72
72
|
}
|
|
73
73
|
return undefined;
|
|
74
74
|
}
|
|
75
|
-
export function
|
|
75
|
+
export function isTxReplaced(error) {
|
|
76
76
|
const byExecutionError = error instanceof TransactionExecutionError
|
|
77
77
|
? getReplacementHashFromExecutionError(error)
|
|
78
78
|
: undefined;
|
|
@@ -228,7 +228,7 @@ export function classifyWalletError(error, operation, context) {
|
|
|
228
228
|
message: error instanceof Error ? error.message : "Failed to sign typed data",
|
|
229
229
|
});
|
|
230
230
|
case "signTransaction":
|
|
231
|
-
return new
|
|
231
|
+
return new SignTxError({
|
|
232
232
|
cause: error,
|
|
233
233
|
message: error instanceof Error ? error.message : "Failed to sign transaction",
|
|
234
234
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem-mapper.js","sourceRoot":"","sources":["../../../src/core/errors/viem-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address, Hash } from \"viem\";\nimport {\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n BaseError as CoreError,\n EstimateGasExecutionError,\n TransactionExecutionError,\n UserRejectedRequestError,\n InsufficientFundsError as ViemInsufficientFundsError,\n} from \"viem\";\nimport {\n ContractReadError,\n ContractWriteError,\n GasEstimationError,\n SimulationFailedError,\n} from \"@/src/core/errors/contract.js\";\nimport {\n InsufficientFundsError,\n isLikelyUserRejectedError,\n UserRejectedError,\n} from \"@/src/core/errors/transaction.js\";\nimport {\n AddChainError,\n ChainSwitchError,\n SignMessageError,\n SignTransactionError,\n SignTypedDataError,\n WalletConnectionError,\n WatchAssetError,\n} from \"@/src/wallet/index.js\";\n\nconst REVERT_REASON_RE = /reverted with reason: (.+?)(?:\\n|$)/;\nconst REVERT_REASON_STRING_RE = /reverted with reason string '(.+?)'/;\nconst REVERT_CUSTOM_ERROR_RE = /reverted with custom error '(.+?)'/;\nconst EXECUTION_REVERTED_RE = /execution reverted(?::?\\s*)(.+?)(?:\\n|$)/i;\nconst EXECUTION_REVERTED_GENERIC_RE = /execution reverted/i;\nconst TX_HASH_RE = /0x[a-fA-F0-9]{64}/;\n\n/**\n * Check if an error represents a user rejection (wallet user denied the request)\n */\nexport function isUserRejection(error: unknown): boolean {\n return isLikelyUserRejectedError(error) || error instanceof UserRejectedRequestError;\n}\n\n/**\n * Check if an error represents insufficient funds\n */\nexport function isInsufficientFunds(error: unknown): boolean {\n if (error instanceof ViemInsufficientFundsError) {\n return true;\n }\n\n // Fallback: check error message\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes(\"insufficient funds\") ||\n message.includes(\"insufficient balance\") ||\n message.includes(\"exceeds balance\")\n );\n }\n\n return false;\n}\n\n/**\n * Extract revert reason from Viem errors using walk() to traverse the error chain.\n * See: https://github.com/wevm/viem/discussions/3519\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: error extraction requires multiple conditional branches for different error types\nexport function extractRevertReason(error: unknown): string | undefined {\n // Use walk() to traverse to the deepest error in the chain (undocumented but reliable)\n // This handles nested error structures like ContractFunctionExecutionError wrapping ContractFunctionRevertedError\n if (error instanceof CoreError) {\n // First try to find a ContractFunctionRevertedError in the chain\n const revertError = error.walk(\n (e) => e instanceof ContractFunctionRevertedError\n ) as ContractFunctionRevertedError | null;\n\n if (revertError) {\n // Try reason property (decoded string revert)\n if (revertError.reason) {\n return revertError.reason;\n }\n // Try data.errorName for custom errors\n if (revertError.data?.errorName) {\n return revertError.data.errorName;\n }\n // Try shortMessage which often contains the revert reason\n if (revertError.shortMessage) {\n const match = revertError.shortMessage.match(EXECUTION_REVERTED_RE);\n if (match?.[1]) {\n return match[1].trim();\n }\n return revertError.shortMessage;\n }\n }\n\n // Fall back to the deepest error's shortMessage\n const deepestError = error.walk();\n if (deepestError instanceof CoreError && deepestError.shortMessage) {\n const match = deepestError.shortMessage.match(EXECUTION_REVERTED_RE);\n if (match?.[1]) {\n return match[1].trim();\n }\n }\n }\n\n // Fall back to regex matching on message\n if (error instanceof Error) {\n // Try \"reason string '...'\" format (e.g., \"Transaction reverted with reason string 'Insufficient allowance'\")\n const reasonStringMatch = error.message.match(REVERT_REASON_STRING_RE);\n if (reasonStringMatch?.[1]) {\n return reasonStringMatch[1];\n }\n\n // Try Viem's \"execution reverted:\" format with a reason\n const execMatch = error.message.match(EXECUTION_REVERTED_RE);\n if (execMatch?.[1]) {\n return execMatch[1].trim();\n }\n\n // Try legacy formats\n const revertMatch = error.message.match(REVERT_REASON_RE);\n if (revertMatch?.[1]) {\n return revertMatch[1];\n }\n\n const customMatch = error.message.match(REVERT_CUSTOM_ERROR_RE);\n if (customMatch?.[1]) {\n return customMatch[1];\n }\n\n // Check for generic \"execution reverted\" without specific reason\n if (EXECUTION_REVERTED_GENERIC_RE.test(error.message)) {\n return \"execution reverted\";\n }\n }\n\n return undefined;\n}\n\n/**\n * Check if an error represents a transaction replacement\n * Returns replacement info if replaced, false otherwise\n */\nexport function isTransactionReplaced(error: unknown): { newHash: Hash; replaced: true } | false {\n const byExecutionError =\n error instanceof TransactionExecutionError\n ? getReplacementHashFromExecutionError(error)\n : undefined;\n if (byExecutionError) {\n return { newHash: byExecutionError, replaced: true };\n }\n\n const byMessage =\n error instanceof Error ? getReplacementHashFromMessage(error.message) : undefined;\n if (byMessage) {\n return { newHash: byMessage, replaced: true };\n }\n\n return false;\n}\n\nfunction getReplacementHashFromExecutionError(error: TransactionExecutionError): Hash | undefined {\n const cause = error.cause;\n if (!cause || typeof cause !== \"object\") {\n return;\n }\n\n if (!(\"name\" in cause) || cause.name !== \"TransactionNotFoundError\") {\n return;\n }\n\n const details = (cause as { details?: string }).details;\n if (!details) {\n return;\n }\n\n const hashMatch = details.match(TX_HASH_RE);\n return hashMatch?.[0] ? (hashMatch[0] as Hash) : undefined;\n}\n\nfunction getReplacementHashFromMessage(message: string): Hash | undefined {\n if (!(message.includes(\"replaced\") || message.includes(\"repriced\"))) {\n return;\n }\n\n const hashes = message.match(/0x[a-fA-F0-9]{64}/g);\n if (!hashes || hashes.length === 0) {\n return;\n }\n\n return (hashes.length >= 2 ? hashes[1] : hashes[0]) as Hash;\n}\n\n/**\n * Classify contract read/simulation errors into specific error types\n */\nexport function classifyContractError(\n error: unknown,\n context: { address: Address; functionName: string }\n): ContractReadError | SimulationFailedError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\", // We don't have this info in the error\n message: error instanceof Error ? error.message : \"Insufficient funds\",\n required: \"0\", // We don't have this info in the error\n });\n }\n\n // Check for contract function execution errors (reverts)\n if (\n error instanceof ContractFunctionExecutionError ||\n error instanceof ContractFunctionRevertedError\n ) {\n const revertReason = extractRevertReason(error);\n return new SimulationFailedError({\n address: context.address,\n functionName: context.functionName,\n message: `Failed to simulate ${context.functionName} on ${context.address}${revertReason ? `: ${revertReason}` : \"\"}`,\n revertData: revertReason,\n });\n }\n\n // Default: return generic contract read error\n return new ContractReadError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to read ${context.functionName} from ${context.address}`,\n });\n}\n\n/**\n * Classify contract write errors into specific error types\n */\nexport function classifyWriteError(\n error: unknown,\n context: { address: Address; functionName: string }\n): ContractWriteError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the transaction\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\", // We don't have this info in the error\n message: error instanceof Error ? error.message : \"Insufficient funds for transaction\",\n required: \"0\", // We don't have this info in the error\n });\n }\n\n // Default: return generic contract write error\n return new ContractWriteError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to write ${context.functionName} to ${context.address}`,\n });\n}\n\n/**\n * Classify gas estimation errors into specific error types\n */\nexport function classifyGasEstimationError(\n error: unknown,\n context: { address: Address; functionName: string }\n): GasEstimationError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\",\n message: error instanceof Error ? error.message : \"Insufficient funds for gas estimation\",\n required: \"0\",\n });\n }\n\n // Check for viem's EstimateGasExecutionError\n if (error instanceof EstimateGasExecutionError) {\n const revertReason = extractRevertReason(error.cause);\n return new GasEstimationError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to estimate gas for ${context.functionName} on ${context.address}${revertReason ? `: ${revertReason}` : \"\"}`,\n });\n }\n\n // Default: return generic gas estimation error\n return new GasEstimationError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to estimate gas for ${context.functionName} on ${context.address}`,\n });\n}\n\n/**\n * Classify wallet operation errors into specific error types\n */\nexport function classifyWalletError(\n error: unknown,\n operation: \"connect\",\n context?: { chainId?: number }\n): UserRejectedError | WalletConnectionError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"switchChain\",\n context?: { chainId?: number }\n): UserRejectedError | ChainSwitchError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"addChain\",\n context?: { chainId?: number }\n): UserRejectedError | AddChainError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signMessage\",\n context?: { chainId?: number }\n): UserRejectedError | SignMessageError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signTypedData\",\n context?: { chainId?: number }\n): UserRejectedError | SignTypedDataError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signTransaction\",\n context?: { chainId?: number }\n): UserRejectedError | SignTransactionError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"watchAsset\",\n context?: { chainId?: number }\n): UserRejectedError | WatchAssetError;\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: switch statement complexity is inherent to operation classification\nexport function classifyWalletError(\n error: unknown,\n operation:\n | \"connect\"\n | \"switchChain\"\n | \"addChain\"\n | \"signMessage\"\n | \"signTypedData\"\n | \"signTransaction\"\n | \"watchAsset\",\n context?: { chainId?: number }\n):\n | UserRejectedError\n | WalletConnectionError\n | ChainSwitchError\n | AddChainError\n | SignMessageError\n | SignTypedDataError\n | SignTransactionError\n | WatchAssetError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Return operation-specific error\n switch (operation) {\n case \"connect\":\n return new WalletConnectionError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to connect wallet\",\n });\n\n case \"switchChain\":\n return new ChainSwitchError({\n cause: error,\n chainId: context?.chainId ?? 0,\n message:\n error instanceof Error\n ? error.message\n : `Failed to switch to chain ${context?.chainId ?? \"unknown\"}`,\n });\n\n case \"addChain\":\n return new AddChainError({\n cause: error,\n chainId: context?.chainId ?? 0,\n message:\n error instanceof Error\n ? error.message\n : `Failed to add chain ${context?.chainId ?? \"unknown\"}`,\n });\n\n case \"signMessage\":\n return new SignMessageError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign message\",\n });\n\n case \"signTypedData\":\n return new SignTypedDataError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign typed data\",\n });\n\n case \"signTransaction\":\n return new SignTransactionError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign transaction\",\n });\n\n case \"watchAsset\":\n return new WatchAssetError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to watch asset\",\n });\n default: {\n const _exhaustive: never = operation;\n return new WalletConnectionError({\n cause: error,\n message: `Unhandled wallet operation: ${_exhaustive}`,\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"viem-mapper.js","sourceRoot":"","sources":["../../../src/core/errors/viem-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address, Hash } from \"viem\";\nimport {\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n BaseError as CoreError,\n EstimateGasExecutionError,\n TransactionExecutionError,\n UserRejectedRequestError,\n InsufficientFundsError as ViemInsufficientFundsError,\n} from \"viem\";\nimport {\n ContractReadError,\n ContractWriteError,\n GasEstimationError,\n SimulationFailedError,\n} from \"@/src/core/errors/contract.js\";\nimport {\n InsufficientFundsError,\n isLikelyUserRejectedError,\n UserRejectedError,\n} from \"@/src/core/errors/transaction.js\";\nimport {\n AddChainError,\n ChainSwitchError,\n SignMessageError,\n SignTxError,\n SignTypedDataError,\n WalletConnectionError,\n WatchAssetError,\n} from \"@/src/wallet/index.js\";\n\nconst REVERT_REASON_RE = /reverted with reason: (.+?)(?:\\n|$)/;\nconst REVERT_REASON_STRING_RE = /reverted with reason string '(.+?)'/;\nconst REVERT_CUSTOM_ERROR_RE = /reverted with custom error '(.+?)'/;\nconst EXECUTION_REVERTED_RE = /execution reverted(?::?\\s*)(.+?)(?:\\n|$)/i;\nconst EXECUTION_REVERTED_GENERIC_RE = /execution reverted/i;\nconst TX_HASH_RE = /0x[a-fA-F0-9]{64}/;\n\n/**\n * Check if an error represents a user rejection (wallet user denied the request)\n */\nexport function isUserRejection(error: unknown): boolean {\n return isLikelyUserRejectedError(error) || error instanceof UserRejectedRequestError;\n}\n\n/**\n * Check if an error represents insufficient funds\n */\nexport function isInsufficientFunds(error: unknown): boolean {\n if (error instanceof ViemInsufficientFundsError) {\n return true;\n }\n\n // Fallback: check error message\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes(\"insufficient funds\") ||\n message.includes(\"insufficient balance\") ||\n message.includes(\"exceeds balance\")\n );\n }\n\n return false;\n}\n\n/**\n * Extract revert reason from Viem errors using walk() to traverse the error chain.\n * See: https://github.com/wevm/viem/discussions/3519\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: error extraction requires multiple conditional branches for different error types\nexport function extractRevertReason(error: unknown): string | undefined {\n // Use walk() to traverse to the deepest error in the chain (undocumented but reliable)\n // This handles nested error structures like ContractFunctionExecutionError wrapping ContractFunctionRevertedError\n if (error instanceof CoreError) {\n // First try to find a ContractFunctionRevertedError in the chain\n const revertError = error.walk(\n (e) => e instanceof ContractFunctionRevertedError\n ) as ContractFunctionRevertedError | null;\n\n if (revertError) {\n // Try reason property (decoded string revert)\n if (revertError.reason) {\n return revertError.reason;\n }\n // Try data.errorName for custom errors\n if (revertError.data?.errorName) {\n return revertError.data.errorName;\n }\n // Try shortMessage which often contains the revert reason\n if (revertError.shortMessage) {\n const match = revertError.shortMessage.match(EXECUTION_REVERTED_RE);\n if (match?.[1]) {\n return match[1].trim();\n }\n return revertError.shortMessage;\n }\n }\n\n // Fall back to the deepest error's shortMessage\n const deepestError = error.walk();\n if (deepestError instanceof CoreError && deepestError.shortMessage) {\n const match = deepestError.shortMessage.match(EXECUTION_REVERTED_RE);\n if (match?.[1]) {\n return match[1].trim();\n }\n }\n }\n\n // Fall back to regex matching on message\n if (error instanceof Error) {\n // Try \"reason string '...'\" format (e.g., \"Transaction reverted with reason string 'Insufficient allowance'\")\n const reasonStringMatch = error.message.match(REVERT_REASON_STRING_RE);\n if (reasonStringMatch?.[1]) {\n return reasonStringMatch[1];\n }\n\n // Try Viem's \"execution reverted:\" format with a reason\n const execMatch = error.message.match(EXECUTION_REVERTED_RE);\n if (execMatch?.[1]) {\n return execMatch[1].trim();\n }\n\n // Try legacy formats\n const revertMatch = error.message.match(REVERT_REASON_RE);\n if (revertMatch?.[1]) {\n return revertMatch[1];\n }\n\n const customMatch = error.message.match(REVERT_CUSTOM_ERROR_RE);\n if (customMatch?.[1]) {\n return customMatch[1];\n }\n\n // Check for generic \"execution reverted\" without specific reason\n if (EXECUTION_REVERTED_GENERIC_RE.test(error.message)) {\n return \"execution reverted\";\n }\n }\n\n return undefined;\n}\n\n/**\n * Check if an error represents a transaction replacement\n * Returns replacement info if replaced, false otherwise\n */\nexport function isTxReplaced(error: unknown): { newHash: Hash; replaced: true } | false {\n const byExecutionError =\n error instanceof TransactionExecutionError\n ? getReplacementHashFromExecutionError(error)\n : undefined;\n if (byExecutionError) {\n return { newHash: byExecutionError, replaced: true };\n }\n\n const byMessage =\n error instanceof Error ? getReplacementHashFromMessage(error.message) : undefined;\n if (byMessage) {\n return { newHash: byMessage, replaced: true };\n }\n\n return false;\n}\n\nfunction getReplacementHashFromExecutionError(error: TransactionExecutionError): Hash | undefined {\n const cause = error.cause;\n if (!cause || typeof cause !== \"object\") {\n return;\n }\n\n if (!(\"name\" in cause) || cause.name !== \"TransactionNotFoundError\") {\n return;\n }\n\n const details = (cause as { details?: string }).details;\n if (!details) {\n return;\n }\n\n const hashMatch = details.match(TX_HASH_RE);\n return hashMatch?.[0] ? (hashMatch[0] as Hash) : undefined;\n}\n\nfunction getReplacementHashFromMessage(message: string): Hash | undefined {\n if (!(message.includes(\"replaced\") || message.includes(\"repriced\"))) {\n return;\n }\n\n const hashes = message.match(/0x[a-fA-F0-9]{64}/g);\n if (!hashes || hashes.length === 0) {\n return;\n }\n\n return (hashes.length >= 2 ? hashes[1] : hashes[0]) as Hash;\n}\n\n/**\n * Classify contract read/simulation errors into specific error types\n */\nexport function classifyContractError(\n error: unknown,\n context: { address: Address; functionName: string }\n): ContractReadError | SimulationFailedError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\", // We don't have this info in the error\n message: error instanceof Error ? error.message : \"Insufficient funds\",\n required: \"0\", // We don't have this info in the error\n });\n }\n\n // Check for contract function execution errors (reverts)\n if (\n error instanceof ContractFunctionExecutionError ||\n error instanceof ContractFunctionRevertedError\n ) {\n const revertReason = extractRevertReason(error);\n return new SimulationFailedError({\n address: context.address,\n functionName: context.functionName,\n message: `Failed to simulate ${context.functionName} on ${context.address}${revertReason ? `: ${revertReason}` : \"\"}`,\n revertData: revertReason,\n });\n }\n\n // Default: return generic contract read error\n return new ContractReadError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to read ${context.functionName} from ${context.address}`,\n });\n}\n\n/**\n * Classify contract write errors into specific error types\n */\nexport function classifyWriteError(\n error: unknown,\n context: { address: Address; functionName: string }\n): ContractWriteError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the transaction\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\", // We don't have this info in the error\n message: error instanceof Error ? error.message : \"Insufficient funds for transaction\",\n required: \"0\", // We don't have this info in the error\n });\n }\n\n // Default: return generic contract write error\n return new ContractWriteError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to write ${context.functionName} to ${context.address}`,\n });\n}\n\n/**\n * Classify gas estimation errors into specific error types\n */\nexport function classifyGasEstimationError(\n error: unknown,\n context: { address: Address; functionName: string }\n): GasEstimationError | InsufficientFundsError | UserRejectedError {\n // Check for user rejection\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Check for insufficient funds\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\",\n message: error instanceof Error ? error.message : \"Insufficient funds for gas estimation\",\n required: \"0\",\n });\n }\n\n // Check for viem's EstimateGasExecutionError\n if (error instanceof EstimateGasExecutionError) {\n const revertReason = extractRevertReason(error.cause);\n return new GasEstimationError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to estimate gas for ${context.functionName} on ${context.address}${revertReason ? `: ${revertReason}` : \"\"}`,\n });\n }\n\n // Default: return generic gas estimation error\n return new GasEstimationError({\n address: context.address,\n cause: error,\n functionName: context.functionName,\n message: `Failed to estimate gas for ${context.functionName} on ${context.address}`,\n });\n}\n\n/**\n * Classify wallet operation errors into specific error types\n */\nexport function classifyWalletError(\n error: unknown,\n operation: \"connect\",\n context?: { chainId?: number }\n): UserRejectedError | WalletConnectionError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"switchChain\",\n context?: { chainId?: number }\n): UserRejectedError | ChainSwitchError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"addChain\",\n context?: { chainId?: number }\n): UserRejectedError | AddChainError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signMessage\",\n context?: { chainId?: number }\n): UserRejectedError | SignMessageError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signTypedData\",\n context?: { chainId?: number }\n): UserRejectedError | SignTypedDataError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"signTransaction\",\n context?: { chainId?: number }\n): UserRejectedError | SignTxError;\nexport function classifyWalletError(\n error: unknown,\n operation: \"watchAsset\",\n context?: { chainId?: number }\n): UserRejectedError | WatchAssetError;\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: switch statement complexity is inherent to operation classification\nexport function classifyWalletError(\n error: unknown,\n operation:\n | \"connect\"\n | \"switchChain\"\n | \"addChain\"\n | \"signMessage\"\n | \"signTypedData\"\n | \"signTransaction\"\n | \"watchAsset\",\n context?: { chainId?: number }\n):\n | UserRejectedError\n | WalletConnectionError\n | ChainSwitchError\n | AddChainError\n | SignMessageError\n | SignTypedDataError\n | SignTxError\n | WatchAssetError {\n // Check for user rejection first\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the request\",\n });\n }\n\n // Return operation-specific error\n switch (operation) {\n case \"connect\":\n return new WalletConnectionError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to connect wallet\",\n });\n\n case \"switchChain\":\n return new ChainSwitchError({\n cause: error,\n chainId: context?.chainId ?? 0,\n message:\n error instanceof Error\n ? error.message\n : `Failed to switch to chain ${context?.chainId ?? \"unknown\"}`,\n });\n\n case \"addChain\":\n return new AddChainError({\n cause: error,\n chainId: context?.chainId ?? 0,\n message:\n error instanceof Error\n ? error.message\n : `Failed to add chain ${context?.chainId ?? \"unknown\"}`,\n });\n\n case \"signMessage\":\n return new SignMessageError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign message\",\n });\n\n case \"signTypedData\":\n return new SignTypedDataError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign typed data\",\n });\n\n case \"signTransaction\":\n return new SignTxError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to sign transaction\",\n });\n\n case \"watchAsset\":\n return new WatchAssetError({\n cause: error,\n message: error instanceof Error ? error.message : \"Failed to watch asset\",\n });\n default: {\n const _exhaustive: never = operation;\n return new WalletConnectionError({\n cause: error,\n message: `Unhandled wallet operation: ${_exhaustive}`,\n });\n }\n }\n}\n"]}
|
package/dist/deploy/service.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Scope, SubscriptionRef } from "effect";
|
|
2
2
|
import { Context, Effect, Layer } from "effect";
|
|
3
3
|
import type { Abi, Address, ContractConstructorArgs, Hash, Hex, TransactionReceipt } from "viem";
|
|
4
|
-
import type { ClientNotFoundError, ContractWriteError, ReceiptTimeoutError,
|
|
4
|
+
import type { ClientNotFoundError, ContractWriteError, ReceiptTimeoutError, TxFailedError, TxReplacedError, UserRejectedError, WrongNetworkError } from "../core/index.js";
|
|
5
5
|
import { PublicClientService, WalletClientService, WalletNotConnectedError } from "../core/index.js";
|
|
6
6
|
import { BytecodeMismatchError, DeploymentError, DeploymentRevertedError } from "../deploy/index.js";
|
|
7
7
|
import type { GasPriceUnavailableError } from "../gas/index.js";
|
|
@@ -28,7 +28,7 @@ export type DeployServiceShape = {
|
|
|
28
28
|
value?: bigint;
|
|
29
29
|
account?: Address;
|
|
30
30
|
gas?: bigint;
|
|
31
|
-
} & DeployArgsField<TAbi>) => Effect.Effect<DeployResult, DeploymentError | DeploymentRevertedError | GasPriceUnavailableError | ContractWriteError | UserRejectedError | ClientNotFoundError | WalletNotConnectedError | WrongNetworkError | ReceiptTimeoutError |
|
|
31
|
+
} & DeployArgsField<TAbi>) => Effect.Effect<DeployResult, DeploymentError | DeploymentRevertedError | GasPriceUnavailableError | ContractWriteError | UserRejectedError | ClientNotFoundError | WalletNotConnectedError | WrongNetworkError | ReceiptTimeoutError | TxFailedError | TxReplacedError>;
|
|
32
32
|
readonly deployAndTrack: <TAbi extends Abi>(params: {
|
|
33
33
|
chainId: number;
|
|
34
34
|
abi: TAbi;
|
|
@@ -38,7 +38,7 @@ export type DeployServiceShape = {
|
|
|
38
38
|
policy?: TxPolicy;
|
|
39
39
|
} & DeployArgsField<TAbi>) => Effect.Effect<{
|
|
40
40
|
stateRef: SubscriptionRef.SubscriptionRef<TxState>;
|
|
41
|
-
result: Effect.Effect<DeployResult, DeploymentError | DeploymentRevertedError | GasPriceUnavailableError | ContractWriteError | UserRejectedError | ClientNotFoundError | WalletNotConnectedError | WrongNetworkError | ReceiptTimeoutError |
|
|
41
|
+
result: Effect.Effect<DeployResult, DeploymentError | DeploymentRevertedError | GasPriceUnavailableError | ContractWriteError | UserRejectedError | ClientNotFoundError | WalletNotConnectedError | WrongNetworkError | ReceiptTimeoutError | TxFailedError | TxReplacedError>;
|
|
42
42
|
}, never, Scope.Scope>;
|
|
43
43
|
readonly computeAddress: (params: {
|
|
44
44
|
from: Address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/deploy/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAEjG,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/deploy/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAEjG,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAoD,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhG,KAAK,UAAU,CAAC,IAAI,SAAS,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK,eAAe,CAAC,IAAI,SAAS,GAAG,IACnC,SAAS,EAAE,SAAS,UAAU,CAAC,IAAI,CAAC,GAChC;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gBAAgB,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,GAAG,EAChC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,IAAI,CAAC;QACV,QAAQ,EAAE,GAAG,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,eAAe,CAAC,IAAI,CAAC,KACtB,MAAM,CAAC,MAAM,CAChB,YAAY,EACV,eAAe,GACf,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,eAAe,CAClB,CAAC;IAEF,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,SAAS,GAAG,EACxC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,IAAI,CAAC;QACV,QAAQ,EAAE,GAAG,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;KACnB,GAAG,eAAe,CAAC,IAAI,CAAC,KACtB,MAAM,CAAC,MAAM,CAChB;QACE,QAAQ,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC,MAAM,CACnB,YAAY,EACV,eAAe,GACf,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,eAAe,CAClB,CAAC;KACH,EACD,KAAK,EACL,KAAK,CAAC,KAAK,CACZ,CAAC;IAEF,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE;QAChC,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEpC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE;QAClC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB,CAAC,CAAC;IAEpE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE;QACxC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,GAAG,CAAC;KACvB,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,GAAG,mBAAmB,CAAC,CAAC;CAC7F,CAAC;;AAEF,qBAAa,aAAc,SAAQ,kBAGhC;CAAG;AAEN,eAAO,MAAM,iBAAiB,uGA0U7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/deploy/service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope, SubscriptionRef } from \"effect\";\nimport { Context, Effect, Layer } from \"effect\";\nimport type { Abi, Address, ContractConstructorArgs, Hash, Hex, TransactionReceipt } from \"viem\";\nimport { getContractAddress } from \"viem\";\nimport type {\n ClientNotFoundError,\n ContractWriteError,\n ReceiptTimeoutError,\n TransactionFailedError,\n TransactionReplacedError,\n UserRejectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport {\n PublicClientService,\n WalletClientService,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\nimport {\n BytecodeMismatchError,\n DeploymentError,\n DeploymentRevertedError,\n} from \"@/src/deploy/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport type { TxPolicy, TxState } from \"@/src/tx/index.js\";\nimport { defaultPolicy, deriveFeeOverrides, makeTxTracker, TxManager } from \"@/src/tx/index.js\";\n\ntype DeployArgs<TAbi extends Abi> = ContractConstructorArgs<TAbi>;\ntype DeployArgsField<TAbi extends Abi> =\n readonly [] extends DeployArgs<TAbi>\n ? { args?: DeployArgs<TAbi> | undefined }\n : { args: DeployArgs<TAbi> };\n\nexport type DeployResult = {\n hash: Hash;\n address: Address;\n receipt: TransactionReceipt;\n deployedBytecode: Hex;\n};\n\nexport type DeployServiceShape = {\n readonly deploy: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n gas?: bigint;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<\n DeployResult,\n | DeploymentError\n | DeploymentRevertedError\n | GasPriceUnavailableError\n | ContractWriteError\n | UserRejectedError\n | ClientNotFoundError\n | WalletNotConnectedError\n | WrongNetworkError\n | ReceiptTimeoutError\n | TransactionFailedError\n | TransactionReplacedError\n >;\n\n readonly deployAndTrack: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n policy?: TxPolicy;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<\n {\n stateRef: SubscriptionRef.SubscriptionRef<TxState>;\n result: Effect.Effect<\n DeployResult,\n | DeploymentError\n | DeploymentRevertedError\n | GasPriceUnavailableError\n | ContractWriteError\n | UserRejectedError\n | ClientNotFoundError\n | WalletNotConnectedError\n | WrongNetworkError\n | ReceiptTimeoutError\n | TransactionFailedError\n | TransactionReplacedError\n >;\n },\n never,\n Scope.Scope\n >;\n\n readonly computeAddress: (params: {\n from: Address;\n nonce: bigint;\n }) => Effect.Effect<Address, never>;\n\n readonly verifyDeployment: (params: {\n chainId: number;\n address: Address;\n }) => Effect.Effect<boolean, DeploymentError | ClientNotFoundError>;\n\n readonly verifyDeploymentStrict: (params: {\n chainId: number;\n address: Address;\n expectedBytecode: Hex;\n }) => Effect.Effect<boolean, BytecodeMismatchError | DeploymentError | ClientNotFoundError>;\n};\n\nexport class DeployService extends Context.Tag(\"ew3/DeployService\")<\n DeployService,\n DeployServiceShape\n>() {}\n\nexport const DeployServiceLive = Layer.effect(\n DeployService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const walletClientService = yield* WalletClientService;\n const txManager = yield* TxManager;\n const gasService = yield* GasService;\n\n return {\n computeAddress: Effect.fn(\"DeployService.computeAddress\")(\n (params: { from: Address; nonce: bigint }) => {\n return Effect.sync(() => {\n // Use viem's getContractAddress\n return getContractAddress({\n from: params.from,\n nonce: params.nonce,\n });\n });\n }\n ),\n deploy: Effect.fn(\"DeployService.deploy\")(function* <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n gas?: bigint;\n } & DeployArgsField<TAbi>\n ) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const account = params.account ?? walletClient.account?.address;\n const policy = defaultPolicy;\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No active account found. Provide `account` explicitly.\",\n })\n );\n }\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n policy,\n }).pipe(Effect.provideService(GasService, gasService));\n\n // Deploy the contract\n const hash = yield* Effect.tryPromise({\n catch: (cause) => {\n const error = cause as Error;\n // Check if this is a revert error\n if (error.message.includes(\"revert\") || error.message.includes(\"execution reverted\")) {\n return new DeploymentRevertedError({\n bytecode: params.bytecode,\n message: error.message,\n revertData: undefined, // viem doesn't provide revert data easily\n });\n }\n\n return new DeploymentError({\n cause,\n message: error instanceof Error ? error.message : \"Deployment failed\",\n });\n },\n try: () => {\n const base = {\n abi: params.abi,\n account,\n args: params.args,\n bytecode: params.bytecode,\n chain: walletClient.chain ?? null,\n gas: params.gas,\n value: params.value,\n };\n\n if (\"gasPrice\" in feeOverrides) {\n return walletClient.deployContract({\n ...base,\n gasPrice: feeOverrides.gasPrice,\n type: \"legacy\",\n });\n }\n\n return walletClient.deployContract({\n ...base,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n },\n });\n\n // Wait for receipt\n const receipt = yield* txManager.waitForReceipt(params.chainId, hash);\n\n // Contract address is in the receipt\n const address = receipt.contractAddress;\n if (!address) {\n return yield* Effect.fail(\n new DeploymentError({\n message: \"Contract deployment succeeded but no address was returned\",\n })\n );\n }\n\n // Get deployed bytecode\n const deployedBytecode = yield* Effect.tryPromise({\n catch: (cause) =>\n new DeploymentError({\n cause,\n message: \"Failed to fetch deployed bytecode\",\n }),\n try: () => publicClient.getBytecode({ address }),\n });\n\n if (!deployedBytecode) {\n return yield* Effect.fail(\n new DeploymentError({\n message: `No bytecode found at deployed address ${address}`,\n })\n );\n }\n\n return {\n address,\n deployedBytecode,\n hash,\n receipt,\n };\n }),\n\n deployAndTrack: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n policy?: TxPolicy;\n } & DeployArgsField<TAbi>\n ) =>\n Effect.gen(function* () {\n const tracker = yield* makeTxTracker;\n const policy = params.policy ?? defaultPolicy;\n\n // Set initial state\n yield* tracker.set({ status: \"idle\" });\n\n const result = Effect.gen(function* () {\n // Get clients inside the result Effect so errors stay in the inner channel\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const account = params.account ?? walletClient.account?.address;\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No active account found. Provide `account` explicitly.\",\n })\n );\n }\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n policy,\n }).pipe(Effect.provideService(GasService, gasService));\n\n // Simulate\n yield* tracker.set({ status: \"simulating\" });\n\n // Deploy the contract\n yield* tracker.set({ status: \"signing\" });\n const hash = yield* Effect.tryPromise({\n catch: (cause) => {\n const error = cause as Error;\n if (\n error.message.includes(\"revert\") ||\n error.message.includes(\"execution reverted\")\n ) {\n return new DeploymentRevertedError({\n bytecode: params.bytecode,\n message: error.message,\n revertData: undefined,\n });\n }\n\n return new DeploymentError({\n cause,\n message: error instanceof Error ? error.message : \"Deployment failed\",\n });\n },\n try: () => {\n const base = {\n abi: params.abi,\n account,\n args: params.args,\n bytecode: params.bytecode,\n chain: walletClient.chain ?? null,\n value: params.value,\n };\n\n if (\"gasPrice\" in feeOverrides) {\n return walletClient.deployContract({\n ...base,\n gasPrice: feeOverrides.gasPrice,\n type: \"legacy\",\n });\n }\n\n return walletClient.deployContract({\n ...base,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n },\n });\n\n yield* tracker.set({ hash, status: \"submitted\" });\n\n // Wait for receipt\n const receipt = yield* txManager.waitForReceipt(\n params.chainId,\n hash,\n policy.receiptTimeout\n );\n\n // Contract address is in the receipt\n const address = receipt.contractAddress;\n if (!address) {\n return yield* Effect.fail(\n new DeploymentError({\n message: \"Contract deployment succeeded but no address was returned\",\n })\n );\n }\n\n // Get deployed bytecode\n const deployedBytecode = yield* Effect.tryPromise({\n catch: (cause) =>\n new DeploymentError({\n cause,\n message: \"Failed to fetch deployed bytecode\",\n }),\n try: () => publicClient.getBytecode({ address }),\n });\n\n if (!deployedBytecode) {\n return yield* Effect.fail(\n new DeploymentError({\n message: `No bytecode found at deployed address ${address}`,\n })\n );\n }\n\n yield* tracker.set({ hash, receipt, status: \"mined\" });\n\n return {\n address,\n deployedBytecode,\n hash,\n receipt,\n };\n });\n\n return {\n result,\n stateRef: tracker.ref,\n };\n }),\n\n verifyDeployment: Effect.fn(\"DeployService.verifyDeployment\")(function* (params: {\n chainId: number;\n address: Address;\n }) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n const actualBytecode = yield* Effect.tryPromise({\n catch: () =>\n new DeploymentError({\n message: \"Failed to fetch bytecode for verification\",\n }),\n try: () => publicClient.getBytecode({ address: params.address }),\n });\n\n if (!actualBytecode || actualBytecode === \"0x\") {\n return false;\n }\n\n return true;\n }),\n\n verifyDeploymentStrict: Effect.fn(\"DeployService.verifyDeploymentStrict\")(function* (params: {\n chainId: number;\n address: Address;\n expectedBytecode: Hex;\n }) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n const actualBytecode = yield* Effect.tryPromise({\n catch: () =>\n new DeploymentError({\n message: \"Failed to fetch bytecode for strict verification\",\n }),\n try: () => publicClient.getBytecode({ address: params.address }),\n });\n\n if (!actualBytecode || actualBytecode === \"0x\") {\n return false;\n }\n\n if (actualBytecode !== params.expectedBytecode) {\n return yield* Effect.fail(\n new BytecodeMismatchError({\n actual: actualBytecode,\n address: params.address,\n expected: params.expectedBytecode,\n message: `Bytecode mismatch at ${params.address}`,\n })\n );\n }\n\n return true;\n }),\n };\n })\n);\n"]}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/deploy/service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope, SubscriptionRef } from \"effect\";\nimport { Context, Effect, Layer } from \"effect\";\nimport type { Abi, Address, ContractConstructorArgs, Hash, Hex, TransactionReceipt } from \"viem\";\nimport { getContractAddress } from \"viem\";\nimport type {\n ClientNotFoundError,\n ContractWriteError,\n ReceiptTimeoutError,\n TxFailedError,\n TxReplacedError,\n UserRejectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport {\n PublicClientService,\n WalletClientService,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\nimport {\n BytecodeMismatchError,\n DeploymentError,\n DeploymentRevertedError,\n} from \"@/src/deploy/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport type { TxPolicy, TxState } from \"@/src/tx/index.js\";\nimport { defaultPolicy, deriveFeeOverrides, makeTxTracker, TxManager } from \"@/src/tx/index.js\";\n\ntype DeployArgs<TAbi extends Abi> = ContractConstructorArgs<TAbi>;\ntype DeployArgsField<TAbi extends Abi> =\n readonly [] extends DeployArgs<TAbi>\n ? { args?: DeployArgs<TAbi> | undefined }\n : { args: DeployArgs<TAbi> };\n\nexport type DeployResult = {\n hash: Hash;\n address: Address;\n receipt: TransactionReceipt;\n deployedBytecode: Hex;\n};\n\nexport type DeployServiceShape = {\n readonly deploy: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n gas?: bigint;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<\n DeployResult,\n | DeploymentError\n | DeploymentRevertedError\n | GasPriceUnavailableError\n | ContractWriteError\n | UserRejectedError\n | ClientNotFoundError\n | WalletNotConnectedError\n | WrongNetworkError\n | ReceiptTimeoutError\n | TxFailedError\n | TxReplacedError\n >;\n\n readonly deployAndTrack: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n policy?: TxPolicy;\n } & DeployArgsField<TAbi>\n ) => Effect.Effect<\n {\n stateRef: SubscriptionRef.SubscriptionRef<TxState>;\n result: Effect.Effect<\n DeployResult,\n | DeploymentError\n | DeploymentRevertedError\n | GasPriceUnavailableError\n | ContractWriteError\n | UserRejectedError\n | ClientNotFoundError\n | WalletNotConnectedError\n | WrongNetworkError\n | ReceiptTimeoutError\n | TxFailedError\n | TxReplacedError\n >;\n },\n never,\n Scope.Scope\n >;\n\n readonly computeAddress: (params: {\n from: Address;\n nonce: bigint;\n }) => Effect.Effect<Address, never>;\n\n readonly verifyDeployment: (params: {\n chainId: number;\n address: Address;\n }) => Effect.Effect<boolean, DeploymentError | ClientNotFoundError>;\n\n readonly verifyDeploymentStrict: (params: {\n chainId: number;\n address: Address;\n expectedBytecode: Hex;\n }) => Effect.Effect<boolean, BytecodeMismatchError | DeploymentError | ClientNotFoundError>;\n};\n\nexport class DeployService extends Context.Tag(\"ew3/DeployService\")<\n DeployService,\n DeployServiceShape\n>() {}\n\nexport const DeployServiceLive = Layer.effect(\n DeployService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const walletClientService = yield* WalletClientService;\n const txManager = yield* TxManager;\n const gasService = yield* GasService;\n\n return {\n computeAddress: Effect.fn(\"DeployService.computeAddress\")(\n (params: { from: Address; nonce: bigint }) => {\n return Effect.sync(() => {\n // Use viem's getContractAddress\n return getContractAddress({\n from: params.from,\n nonce: params.nonce,\n });\n });\n }\n ),\n deploy: Effect.fn(\"DeployService.deploy\")(function* <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n gas?: bigint;\n } & DeployArgsField<TAbi>\n ) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const account = params.account ?? walletClient.account?.address;\n const policy = defaultPolicy;\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No active account found. Provide `account` explicitly.\",\n })\n );\n }\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n policy,\n }).pipe(Effect.provideService(GasService, gasService));\n\n // Deploy the contract\n const hash = yield* Effect.tryPromise({\n catch: (cause) => {\n const error = cause as Error;\n // Check if this is a revert error\n if (error.message.includes(\"revert\") || error.message.includes(\"execution reverted\")) {\n return new DeploymentRevertedError({\n bytecode: params.bytecode,\n message: error.message,\n revertData: undefined, // viem doesn't provide revert data easily\n });\n }\n\n return new DeploymentError({\n cause,\n message: error instanceof Error ? error.message : \"Deployment failed\",\n });\n },\n try: () => {\n const base = {\n abi: params.abi,\n account,\n args: params.args,\n bytecode: params.bytecode,\n chain: walletClient.chain ?? null,\n gas: params.gas,\n value: params.value,\n };\n\n if (\"gasPrice\" in feeOverrides) {\n return walletClient.deployContract({\n ...base,\n gasPrice: feeOverrides.gasPrice,\n type: \"legacy\",\n });\n }\n\n return walletClient.deployContract({\n ...base,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n },\n });\n\n // Wait for receipt\n const receipt = yield* txManager.waitForReceipt(params.chainId, hash);\n\n // Contract address is in the receipt\n const address = receipt.contractAddress;\n if (!address) {\n return yield* Effect.fail(\n new DeploymentError({\n message: \"Contract deployment succeeded but no address was returned\",\n })\n );\n }\n\n // Get deployed bytecode\n const deployedBytecode = yield* Effect.tryPromise({\n catch: (cause) =>\n new DeploymentError({\n cause,\n message: \"Failed to fetch deployed bytecode\",\n }),\n try: () => publicClient.getBytecode({ address }),\n });\n\n if (!deployedBytecode) {\n return yield* Effect.fail(\n new DeploymentError({\n message: `No bytecode found at deployed address ${address}`,\n })\n );\n }\n\n return {\n address,\n deployedBytecode,\n hash,\n receipt,\n };\n }),\n\n deployAndTrack: <TAbi extends Abi>(\n params: {\n chainId: number;\n abi: TAbi;\n bytecode: Hex;\n value?: bigint;\n account?: Address;\n policy?: TxPolicy;\n } & DeployArgsField<TAbi>\n ) =>\n Effect.gen(function* () {\n const tracker = yield* makeTxTracker;\n const policy = params.policy ?? defaultPolicy;\n\n // Set initial state\n yield* tracker.set({ status: \"idle\" });\n\n const result = Effect.gen(function* () {\n // Get clients inside the result Effect so errors stay in the inner channel\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const account = params.account ?? walletClient.account?.address;\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No active account found. Provide `account` explicitly.\",\n })\n );\n }\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n policy,\n }).pipe(Effect.provideService(GasService, gasService));\n\n // Simulate\n yield* tracker.set({ status: \"simulating\" });\n\n // Deploy the contract\n yield* tracker.set({ status: \"signing\" });\n const hash = yield* Effect.tryPromise({\n catch: (cause) => {\n const error = cause as Error;\n if (\n error.message.includes(\"revert\") ||\n error.message.includes(\"execution reverted\")\n ) {\n return new DeploymentRevertedError({\n bytecode: params.bytecode,\n message: error.message,\n revertData: undefined,\n });\n }\n\n return new DeploymentError({\n cause,\n message: error instanceof Error ? error.message : \"Deployment failed\",\n });\n },\n try: () => {\n const base = {\n abi: params.abi,\n account,\n args: params.args,\n bytecode: params.bytecode,\n chain: walletClient.chain ?? null,\n value: params.value,\n };\n\n if (\"gasPrice\" in feeOverrides) {\n return walletClient.deployContract({\n ...base,\n gasPrice: feeOverrides.gasPrice,\n type: \"legacy\",\n });\n }\n\n return walletClient.deployContract({\n ...base,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n },\n });\n\n yield* tracker.set({ hash, status: \"submitted\" });\n\n // Wait for receipt\n const receipt = yield* txManager.waitForReceipt(\n params.chainId,\n hash,\n policy.receiptTimeout\n );\n\n // Contract address is in the receipt\n const address = receipt.contractAddress;\n if (!address) {\n return yield* Effect.fail(\n new DeploymentError({\n message: \"Contract deployment succeeded but no address was returned\",\n })\n );\n }\n\n // Get deployed bytecode\n const deployedBytecode = yield* Effect.tryPromise({\n catch: (cause) =>\n new DeploymentError({\n cause,\n message: \"Failed to fetch deployed bytecode\",\n }),\n try: () => publicClient.getBytecode({ address }),\n });\n\n if (!deployedBytecode) {\n return yield* Effect.fail(\n new DeploymentError({\n message: `No bytecode found at deployed address ${address}`,\n })\n );\n }\n\n yield* tracker.set({ hash, receipt, status: \"mined\" });\n\n return {\n address,\n deployedBytecode,\n hash,\n receipt,\n };\n });\n\n return {\n result,\n stateRef: tracker.ref,\n };\n }),\n\n verifyDeployment: Effect.fn(\"DeployService.verifyDeployment\")(function* (params: {\n chainId: number;\n address: Address;\n }) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n const actualBytecode = yield* Effect.tryPromise({\n catch: () =>\n new DeploymentError({\n message: \"Failed to fetch bytecode for verification\",\n }),\n try: () => publicClient.getBytecode({ address: params.address }),\n });\n\n if (!actualBytecode || actualBytecode === \"0x\") {\n return false;\n }\n\n return true;\n }),\n\n verifyDeploymentStrict: Effect.fn(\"DeployService.verifyDeploymentStrict\")(function* (params: {\n chainId: number;\n address: Address;\n expectedBytecode: Hex;\n }) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n const actualBytecode = yield* Effect.tryPromise({\n catch: () =>\n new DeploymentError({\n message: \"Failed to fetch bytecode for strict verification\",\n }),\n try: () => publicClient.getBytecode({ address: params.address }),\n });\n\n if (!actualBytecode || actualBytecode === \"0x\") {\n return false;\n }\n\n if (actualBytecode !== params.expectedBytecode) {\n return yield* Effect.fail(\n new BytecodeMismatchError({\n actual: actualBytecode,\n address: params.address,\n expected: params.expectedBytecode,\n message: `Bytecode mismatch at ${params.address}`,\n })\n );\n }\n\n return true;\n }),\n };\n })\n);\n"]}
|
package/dist/eip7702/errors.d.ts
CHANGED
|
@@ -17,14 +17,14 @@ declare const Eip7702AuthorizationPreparationError_base: Schema.TaggedErrorClass
|
|
|
17
17
|
}>;
|
|
18
18
|
export declare class Eip7702AuthorizationPreparationError extends Eip7702AuthorizationPreparationError_base {
|
|
19
19
|
}
|
|
20
|
-
declare const
|
|
21
|
-
readonly _tag: Schema.tag<"
|
|
20
|
+
declare const Eip7702SendTxError_base: Schema.TaggedErrorClass<Eip7702SendTxError, "Eip7702SendTxError", {
|
|
21
|
+
readonly _tag: Schema.tag<"Eip7702SendTxError">;
|
|
22
22
|
} & {
|
|
23
23
|
cause: Schema.optional<typeof Schema.Unknown>;
|
|
24
24
|
chainId: typeof Schema.Number;
|
|
25
25
|
message: typeof Schema.String;
|
|
26
26
|
}>;
|
|
27
|
-
export declare class
|
|
27
|
+
export declare class Eip7702SendTxError extends Eip7702SendTxError_base {
|
|
28
28
|
}
|
|
29
29
|
export {};
|
|
30
30
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/eip7702/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;AAEhC,qBAAa,gCAAiC,SAAQ,qCAOrD;CAAG;;;;;;;;AAEJ,qBAAa,oCAAqC,SAAQ,yCAOzD;CAAG;;;;;;;;AAEJ,qBAAa,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/eip7702/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;;;AAEhC,qBAAa,gCAAiC,SAAQ,qCAOrD;CAAG;;;;;;;;AAEJ,qBAAa,oCAAqC,SAAQ,yCAOzD;CAAG;;;;;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAOvC;CAAG"}
|
package/dist/eip7702/errors.js
CHANGED
|
@@ -11,7 +11,7 @@ export class Eip7702AuthorizationPreparationError extends Schema.TaggedError()("
|
|
|
11
11
|
message: Schema.String,
|
|
12
12
|
}) {
|
|
13
13
|
}
|
|
14
|
-
export class
|
|
14
|
+
export class Eip7702SendTxError extends Schema.TaggedError()("Eip7702SendTxError", {
|
|
15
15
|
cause: Schema.optional(Schema.Unknown),
|
|
16
16
|
chainId: Schema.Number,
|
|
17
17
|
message: Schema.String,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/eip7702/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,gCAAiC,SAAQ,MAAM,CAAC,WAAW,EAAoC,CAC1G,kCAAkC,EAClC;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,oCAAqC,SAAQ,MAAM,CAAC,WAAW,EAAwC,CAClH,sCAAsC,EACtC;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/eip7702/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,gCAAiC,SAAQ,MAAM,CAAC,WAAW,EAAoC,CAC1G,kCAAkC,EAClC;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,oCAAqC,SAAQ,MAAM,CAAC,WAAW,EAAwC,CAClH,sCAAsC,EACtC;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class Eip7702AuthorizationSigningError extends Schema.TaggedError<Eip7702AuthorizationSigningError>()(\n \"Eip7702AuthorizationSigningError\",\n {\n cause: Schema.optional(Schema.Unknown),\n chainId: Schema.Number,\n message: Schema.String,\n }\n) {}\n\nexport class Eip7702AuthorizationPreparationError extends Schema.TaggedError<Eip7702AuthorizationPreparationError>()(\n \"Eip7702AuthorizationPreparationError\",\n {\n cause: Schema.optional(Schema.Unknown),\n chainId: Schema.Number,\n message: Schema.String,\n }\n) {}\n\nexport class Eip7702SendTxError extends Schema.TaggedError<Eip7702SendTxError>()(\n \"Eip7702SendTxError\",\n {\n cause: Schema.optional(Schema.Unknown),\n chainId: Schema.Number,\n message: Schema.String,\n }\n) {}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import type { AccessList, Account, Address, Authorization, Hash, Hex } from "viem";
|
|
3
|
-
import type { ClientNotFoundError, ReceiptTimeoutError,
|
|
3
|
+
import type { ClientNotFoundError, ReceiptTimeoutError, TxFailedError, TxReplacedError, WrongNetworkError } from "../core/index.js";
|
|
4
4
|
import { InsufficientFundsError, PublicClientService, UserRejectedError, WalletClientService, WalletNotConnectedError } from "../core/index.js";
|
|
5
5
|
import type { TxPolicy } from "../tx/index.js";
|
|
6
6
|
import { TxManager } from "../tx/index.js";
|
|
7
|
-
import type {
|
|
7
|
+
import type { TxResult } from "../types/index.js";
|
|
8
8
|
import type { Erc7579ModeCode } from "./erc7579.js";
|
|
9
|
-
import { Eip7702AuthorizationPreparationError, Eip7702AuthorizationSigningError,
|
|
9
|
+
import { Eip7702AuthorizationPreparationError, Eip7702AuthorizationSigningError, Eip7702SendTxError } from "./errors.js";
|
|
10
10
|
export type Eip7702Call = {
|
|
11
11
|
readonly to: Address;
|
|
12
12
|
readonly data: Hex;
|
|
@@ -39,7 +39,7 @@ export type ApproveAndExecuteParams = {
|
|
|
39
39
|
readonly mode?: Erc7579ModeCode | undefined;
|
|
40
40
|
readonly tx?: Eip7702TxOverrides | undefined;
|
|
41
41
|
};
|
|
42
|
-
export type DelegateAndExecuteResult =
|
|
42
|
+
export type DelegateAndExecuteResult = TxResult;
|
|
43
43
|
export type Eip7702ServiceShape = {
|
|
44
44
|
readonly prepareAuthorization: (params: {
|
|
45
45
|
readonly chainId: number;
|
|
@@ -47,14 +47,14 @@ export type Eip7702ServiceShape = {
|
|
|
47
47
|
readonly contractAddress: Address;
|
|
48
48
|
readonly executor?: Eip7702AuthorizationExecutor | undefined;
|
|
49
49
|
}) => Effect.Effect<Authorization<number>, Eip7702AuthorizationPreparationError | ClientNotFoundError>;
|
|
50
|
-
readonly delegateAndExecuteErc7579Batch: (params: DelegateAndExecuteErc7579BatchParams) => Effect.Effect<Hash, Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError |
|
|
50
|
+
readonly delegateAndExecuteErc7579Batch: (params: DelegateAndExecuteErc7579BatchParams) => Effect.Effect<Hash, Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError | Eip7702SendTxError | InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError>;
|
|
51
51
|
readonly delegateAndExecuteErc7579BatchAndWait: (params: DelegateAndExecuteErc7579BatchParams & {
|
|
52
52
|
readonly policy?: TxPolicy | undefined;
|
|
53
|
-
}) => Effect.Effect<DelegateAndExecuteResult,
|
|
54
|
-
readonly approveAndExecute: (params: ApproveAndExecuteParams) => Effect.Effect<Hash, Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError |
|
|
53
|
+
}) => Effect.Effect<DelegateAndExecuteResult, Eip7702SendTxError | Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError | InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | ReceiptTimeoutError | TxFailedError | TxReplacedError>;
|
|
54
|
+
readonly approveAndExecute: (params: ApproveAndExecuteParams) => Effect.Effect<Hash, Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError | Eip7702SendTxError | InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError>;
|
|
55
55
|
readonly approveAndExecuteAndWait: (params: ApproveAndExecuteParams & {
|
|
56
56
|
readonly policy?: TxPolicy | undefined;
|
|
57
|
-
}) => Effect.Effect<DelegateAndExecuteResult,
|
|
57
|
+
}) => Effect.Effect<DelegateAndExecuteResult, Eip7702SendTxError | Eip7702AuthorizationPreparationError | Eip7702AuthorizationSigningError | InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | ReceiptTimeoutError | TxFailedError | TxReplacedError>;
|
|
58
58
|
};
|
|
59
59
|
declare const Eip7702Service_base: Context.TagClass<Eip7702Service, "ew3/Eip7702Service", Eip7702ServiceShape>;
|
|
60
60
|
export declare class Eip7702Service extends Eip7702Service_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/eip7702/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAGnF,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/eip7702/service.ts"],"names":[],"mappings":"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"}
|
package/dist/eip7702/service.js
CHANGED
|
@@ -4,7 +4,7 @@ import { prepareAuthorization } from "viem/actions";
|
|
|
4
4
|
import { InsufficientFundsError, isInsufficientFunds, isUserRejection, PublicClientService, UserRejectedError, WalletClientService, WalletNotConnectedError, } from "../core/index.js";
|
|
5
5
|
import { defaultPolicy, TxManager } from "../tx/index.js";
|
|
6
6
|
import { ERC7579_MODE_SIMPLE_BATCH, encodeErc7579BatchExecutionCalldata, encodeErc7579ExecuteCalldata, } from "./erc7579.js";
|
|
7
|
-
import { Eip7702AuthorizationPreparationError, Eip7702AuthorizationSigningError,
|
|
7
|
+
import { Eip7702AuthorizationPreparationError, Eip7702AuthorizationSigningError, Eip7702SendTxError, } from "./errors.js";
|
|
8
8
|
function mapSendEip7702TransactionCause(chainId, cause) {
|
|
9
9
|
if (isUserRejection(cause)) {
|
|
10
10
|
return new UserRejectedError({
|
|
@@ -18,7 +18,7 @@ function mapSendEip7702TransactionCause(chainId, cause) {
|
|
|
18
18
|
required: "0",
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
return new
|
|
21
|
+
return new Eip7702SendTxError({
|
|
22
22
|
cause,
|
|
23
23
|
chainId,
|
|
24
24
|
message: cause instanceof Error ? cause.message : "Failed to send EIP-7702 transaction",
|