@prb/effect-solana 1.0.0-beta.3 → 1.0.0-beta.4
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/balance/index.js.map +1 -1
- package/dist/balance/service.js.map +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/core/errors/account.js.map +1 -1
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/predicates.js.map +1 -1
- package/dist/core/errors/rpc.js.map +1 -1
- package/dist/core/errors/transaction.js.map +1 -1
- package/dist/core/errors/wallet.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/kit-effect.js.map +1 -1
- package/dist/pda/index.js.map +1 -1
- package/dist/pda/service.js.map +1 -1
- package/dist/pda/types.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layers.js.map +1 -1
- package/dist/program/index.js.map +1 -1
- package/dist/program/service.js.map +1 -1
- package/dist/program/types.js.map +1 -1
- package/dist/react-hooks/index.js.map +1 -1
- package/dist/react-hooks/internal/error.js.map +1 -1
- package/dist/react-hooks/internal/is-dev.js.map +1 -1
- package/dist/react-hooks/internal/runtime.js.map +1 -1
- package/dist/react-hooks/internal/scoped-run.js.map +1 -1
- package/dist/react-hooks/internal/stable.js.map +1 -1
- package/dist/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
- package/dist/react-hooks/primitives/use-effect.js.map +1 -1
- package/dist/react-hooks/primitives/use-fork-effect.js.map +1 -1
- package/dist/react-hooks/primitives/use-stream.js.map +1 -1
- package/dist/react-hooks/primitives.js.map +1 -1
- package/dist/react-hooks/provider.js.map +1 -1
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/service.js.map +1 -1
- package/dist/signer/index.js.map +1 -1
- package/dist/signer/service.js.map +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/logger.js.map +1 -1
- package/dist/telemetry/tracer.js.map +1 -1
- package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
- package/dist/testing-kit/helpers.js.map +1 -1
- package/dist/testing-kit/index.js.map +1 -1
- package/dist/testing-kit/mock-balance-service.js.map +1 -1
- package/dist/testing-kit/mock-pda-service.js.map +1 -1
- package/dist/testing-kit/mock-rpc-service.js.map +1 -1
- package/dist/testing-kit/mock-signer-service.js.map +1 -1
- package/dist/testing-kit/mock-token-service.js.map +1 -1
- package/dist/testing-kit/mock-transaction-service.js.map +1 -1
- package/dist/testing-kit/test-layer.js.map +1 -1
- package/dist/token/index.js.map +1 -1
- package/dist/token/service.js.map +1 -1
- package/dist/tx/index.js.map +1 -1
- package/dist/tx/service.js.map +1 -1
- package/dist/tx/types.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/web3.js/_fixtures.js.map +1 -1
- package/dist/web3.js/index.js.map +1 -1
- package/dist/web3.js/layers.js.map +1 -1
- package/dist/web3.js/legacy-signer.js.map +1 -1
- package/dist/web3.js/transaction-bridge.js.map +1 -1
- package/dist/web3.js/types.js.map +1 -1
- package/package.json +22 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAA6D,EAAE,EAAE,CAC1F,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA8C,EAAE,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAIvC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA2D,EAAE,EAAE,CAC9F,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA8D,EAAE,EAAE,CACjG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA6C,EAAE,EAAE,CACxE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/telemetry/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAA6D,EAAE,EAAE,CAC1F,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA8C,EAAE,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAIvC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA2D,EAAE,EAAE,CAC9F,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA8D,EAAE,EAAE,CACjG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA6C,EAAE,EAAE,CACxE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\n\n/**\n * Log helpers for Solana operations.\n */\n\nexport const logRpcCall = (params: { method: string; cluster: string; params?: unknown }) =>\n Effect.logDebug(\"RPC call\", params);\n\nexport const logTransactionSent = (params: { signature: string; cluster: string }) =>\n Effect.logInfo(\"Transaction sent\", params);\n\nexport const logTransactionConfirmed = (params: {\n signature: string;\n slot: bigint;\n confirmations?: number;\n}) => Effect.logDebug(\"Transaction confirmed\", params);\n\nexport const logAccountChange = (params: { address: string; lamports: bigint; slot: bigint }) =>\n Effect.logDebug(\"Account change\", params);\n\nexport const logEventReceived = (params: { programId: string; signature: string; slot: bigint }) =>\n Effect.logDebug(\"Event received\", params);\n\nexport const logError = (params: { operation: string; error: unknown }) =>\n Effect.logError(\"Operation failed\", params);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,IAAY,EAAE,UAAoC,EAAE,EAAE,CACvD,CAAU,MAA8B,EAA0B,EAAE,CAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAKlD,MAAM,CAAC,MAAM,SAAS,GAAG;IAEvB,gBAAgB,EAAE,sBAAsB;IACxC,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IAGnC,eAAe,EAAE,qBAAqB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,gBAAgB,EAAE,sBAAsB;IACxC,mBAAmB,EAAE,yBAAyB;IAG9C,UAAU,EAAE,iBAAiB;IAC7B,kBAAkB,EAAE,wBAAwB;IAC5C,eAAe,EAAE,qBAAqB;IACtC,QAAQ,EAAE,eAAe;IAGzB,aAAa,EAAE,oBAAoB;IACnC,yBAAyB,EAAE,+BAA+B;IAC1D,cAAc,EAAE,qBAAqB;IACrC,oBAAoB,EAAE,yBAAyB;IAE/C,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,oBAAoB,EAAE,yBAAyB;IAC/C,kBAAkB,EAAE,uBAAuB;IAC3C,wBAAwB,EAAE,6BAA6B;IACvD,YAAY,EAAE,kBAAkB;IAGhC,kBAAkB,EAAE,wBAAwB;IAC5C,iBAAiB,EAAE,uBAAuB;IAG1C,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IACnC,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,sBAAsB;IACxC,iBAAiB,EAAE,uBAAuB;IAC1C,aAAa,EAAE,mBAAmB;IAClC,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,mBAAmB;IAClC,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,qBAAqB;IAGrC,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,iBAAiB;IAC7B,yBAAyB,EAAE,8BAA8B;IACzD,OAAO,EAAE,cAAc;IACvB,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;CACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/telemetry/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,IAAY,EAAE,UAAoC,EAAE,EAAE,CACvD,CAAU,MAA8B,EAA0B,EAAE,CAClE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAKlD,MAAM,CAAC,MAAM,SAAS,GAAG;IAEvB,gBAAgB,EAAE,sBAAsB;IACxC,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IAGnC,eAAe,EAAE,qBAAqB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAG9C,gBAAgB,EAAE,sBAAsB;IACxC,mBAAmB,EAAE,yBAAyB;IAG9C,UAAU,EAAE,iBAAiB;IAC7B,kBAAkB,EAAE,wBAAwB;IAC5C,eAAe,EAAE,qBAAqB;IACtC,QAAQ,EAAE,eAAe;IAGzB,aAAa,EAAE,oBAAoB;IACnC,yBAAyB,EAAE,+BAA+B;IAC1D,cAAc,EAAE,qBAAqB;IACrC,oBAAoB,EAAE,yBAAyB;IAE/C,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,oBAAoB,EAAE,yBAAyB;IAC/C,kBAAkB,EAAE,uBAAuB;IAC3C,wBAAwB,EAAE,6BAA6B;IACvD,YAAY,EAAE,kBAAkB;IAGhC,kBAAkB,EAAE,wBAAwB;IAC5C,iBAAiB,EAAE,uBAAuB;IAG1C,oBAAoB,EAAE,0BAA0B;IAChD,aAAa,EAAE,oBAAoB;IACnC,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,sBAAsB;IACxC,iBAAiB,EAAE,uBAAuB;IAC1C,aAAa,EAAE,mBAAmB;IAClC,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,mBAAmB;IAClC,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,qBAAqB;IAGrC,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,iBAAiB;IAC7B,yBAAyB,EAAE,8BAA8B;IACzD,OAAO,EAAE,cAAc;IACvB,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;CACvB,CAAC","sourcesContent":["import { Effect } from \"effect\";\n\n/**\n * Wrap an effect with a span for tracing.\n */\nexport const withSpan =\n (name: string, attributes?: Record<string, unknown>) =>\n <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>\n Effect.withSpan(name, { attributes })(effect);\n\n/**\n * Common span names for Solana operations.\n */\nexport const SpanNames = {\n // Account Operations\n ACCOUNT_GET_INFO: \"esol.account.getInfo\",\n ACCOUNT_GET_MULTIPLE: \"esol.account.getMultiple\",\n ACCOUNT_WATCH: \"esol.account.watch\",\n\n // Balance Operations\n BALANCE_GET_SOL: \"esol.balance.getSol\",\n BALANCE_GET_TOKEN: \"esol.balance.getToken\",\n BALANCE_WATCH_SOL: \"esol.balance.watchSol\",\n BALANCE_WATCH_TOKEN: \"esol.balance.watchToken\",\n\n // Compute Budget Operations\n COMPUTE_SET_LIMIT: \"esol.compute.setLimit\",\n COMPUTE_SET_PRICE: \"esol.compute.setPrice\",\n EVENT_WATCH_ACCOUNT: \"esol.event.watchAccount\",\n\n // Event Operations\n EVENT_WATCH_LOGS: \"esol.event.watchLogs\",\n EVENT_WATCH_PROGRAM: \"esol.event.watchProgram\",\n\n // PDA Operations\n PDA_DERIVE: \"esol.pda.derive\",\n PDA_DERIVE_ADDRESS: \"esol.pda.deriveAddress\",\n PDA_DERIVE_BUMP: \"esol.pda.deriveBump\",\n PDA_FIND: \"esol.pda.find\",\n\n // Program Operations\n PROGRAM_BUILD: \"esol.program.build\",\n PROGRAM_BUILD_INSTRUCTION: \"esol.program.buildInstruction\",\n PROGRAM_CREATE: \"esol.program.create\",\n RPC_GET_ACCOUNT_INFO: \"esol.rpc.getAccountInfo\",\n // RPC Operations\n RPC_GET_BALANCE: \"esol.rpc.getBalance\",\n RPC_GET_BLOCK: \"esol.rpc.getBlock\",\n RPC_GET_BLOCK_HEIGHT: \"esol.rpc.getBlockHeight\",\n RPC_GET_BLOCK_TIME: \"esol.rpc.getBlockTime\",\n RPC_GET_PROGRAM_ACCOUNTS: \"esol.rpc.getProgramAccounts\",\n RPC_GET_SLOT: \"esol.rpc.getSlot\",\n\n // Signer Operations\n SIGNER_GET_ADDRESS: \"esol.signer.getAddress\",\n SIGNER_GET_SIGNER: \"esol.signer.getSigner\",\n\n // Token Operations\n TOKEN_ACCOUNT_EXISTS: \"esol.token.accountExists\",\n TOKEN_APPROVE: \"esol.token.approve\",\n TOKEN_BURN: \"esol.token.burn\",\n TOKEN_CREATE_ATA: \"esol.token.createAta\",\n TOKEN_GET_ACCOUNT: \"esol.token.getAccount\",\n TOKEN_GET_ATA: \"esol.token.getAta\",\n TOKEN_GET_MINT: \"esol.token.getMint\",\n TOKEN_MINT_TO: \"esol.token.mintTo\",\n TOKEN_REVOKE: \"esol.token.revoke\",\n TOKEN_TRANSFER: \"esol.token.transfer\",\n\n // Transaction Operations\n TX_BUILD: \"esol.tx.build\",\n TX_CONFIRM: \"esol.tx.confirm\",\n TX_GET_SIGNATURE_STATUSES: \"esol.tx.getSignatureStatuses\",\n TX_SEND: \"esol.tx.send\",\n TX_SEND_AND_CONFIRM: \"esol.tx.sendAndConfirm\",\n TX_SIGN: \"esol.tx.sign\",\n TX_SIMULATE: \"esol.tx.simulate\",\n} as const;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,YAAY,GAAG,kCAA6C,CAAC;AAK1E,MAAM,CAAC,MAAM,cAAc,GAAG,6CAAwD,CAAC;AAKvF,MAAM,CAAC,MAAM,cAAc,GACzB,0FAAuG,CAAC;AAK1G,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAK9C,MAAM,CAAC,MAAM,SAAS,GAAG,8CAAyD,CAAC;AAKnF,MAAM,CAAC,MAAM,WAAW,GAAG,8CAAyD,CAAC"}
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/testing-kit/_fixtures/addresses.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,YAAY,GAAG,kCAA6C,CAAC;AAK1E,MAAM,CAAC,MAAM,cAAc,GAAG,6CAAwD,CAAC;AAKvF,MAAM,CAAC,MAAM,cAAc,GACzB,0FAAuG,CAAC;AAK1G,MAAM,CAAC,MAAM,YAAY,GAAG,QAAiB,CAAC;AAK9C,MAAM,CAAC,MAAM,SAAS,GAAG,8CAAyD,CAAC;AAKnF,MAAM,CAAC,MAAM,WAAW,GAAG,8CAAyD,CAAC","sourcesContent":["/**\n * Test addresses and constants for effect-solana test suite\n */\n\nimport type { Address, Signature } from \"@solana/kit\";\n\n/**\n * Test address - System Program\n */\nexport const TEST_ADDRESS = \"11111111111111111111111111111111\" as Address;\n\n/**\n * Test address 2 - Token Program\n */\nexport const TEST_ADDRESS_2 = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address;\n\n/**\n * Test signature\n */\nexport const TEST_SIGNATURE =\n \"5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW\" as Signature;\n\n/**\n * Test cluster for mock services\n */\nexport const TEST_CLUSTER = \"devnet\" as const;\n\n/**\n * Test mint address (USDC on devnet)\n */\nexport const TEST_MINT = \"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU\" as Address;\n\n/**\n * Test wallet address\n */\nexport const TEST_WALLET = \"DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK\" as Address;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAA2B,EAC3B,WAAsB,EAChB,EAAE;IACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAE,KAAK,CAAC,KAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAO,MAA2B,EAAK,EAAE;IACjE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,MAA2B,EAAK,EAAE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAiCF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAA6B,EAC7B,QAAW,EACX,MAAkB,EAClB,UAA4B,EACZ,EAAE;IAClB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/testing-kit/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAA2B,EAC3B,WAAsB,EAChB,EAAE;IACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAE,KAAK,CAAC,KAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAO,MAA2B,EAAK,EAAE;IACjE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,MAA2B,EAAK,EAAE;IAClE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAiCF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAA6B,EAC7B,QAAW,EACX,MAAkB,EAClB,UAA4B,EACZ,EAAE;IAClB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC","sourcesContent":["/**\n * Test assertion helpers for effect-solana\n *\n * Provides type-safe utilities for asserting on Effect types in tests.\n */\n\nimport type { Context } from \"effect\";\nimport { Cause, Either, Exit, Layer, Option } from \"effect\";\nimport { expect } from \"vitest\";\n\n/**\n * Assert an Exit is a failure with a specific tagged error\n *\n * @param exit - The Exit to assert on\n * @param expectedTag - The expected error tag\n *\n * @example\n * ```typescript\n * const exit = yield* Effect.exit(someEffect);\n * expectTaggedFailure(exit, \"RpcError\");\n * ```\n */\nexport const expectTaggedFailure = <E extends { _tag: string }>(\n exit: Exit.Exit<unknown, E>,\n expectedTag: E[\"_tag\"]\n): void => {\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(Option.isSome(error)).toBe(true);\n if (Option.isSome(error)) {\n expect((error.value as { _tag: string })._tag).toBe(expectedTag);\n }\n }\n};\n\n/**\n * Type-safe assertion for Either.Left - returns the left value for further assertions\n *\n * @param either - The Either to assert on\n * @returns The left value for further assertions\n * @throws Error if Either is Right\n *\n * @example\n * ```typescript\n * const result = Either.left(new RpcError({ ... }));\n * const error = assertLeft(result);\n * expect(error._tag).toBe(\"RpcError\");\n * ```\n */\nexport const assertLeft = <L, R>(either: Either.Either<R, L>): L => {\n expect(Either.isLeft(either)).toBe(true);\n if (!Either.isLeft(either)) {\n throw new Error(\"Expected Left\");\n }\n return either.left;\n};\n\n/**\n * Type-safe assertion for Either.Right - returns the right value for further assertions\n *\n * @param either - The Either to assert on\n * @returns The right value for further assertions\n * @throws Error if Either is Left\n *\n * @example\n * ```typescript\n * const result = Either.right(1000000000n);\n * const value = assertRight(result);\n * expect(value).toBe(1000000000n);\n * ```\n */\nexport const assertRight = <L, R>(either: Either.Either<R, L>): R => {\n expect(Either.isRight(either)).toBe(true);\n if (!Either.isRight(either)) {\n throw new Error(\"Expected Right\");\n }\n return either.right;\n};\n\n/**\n * Generic factory for creating mock service layers.\n * Eliminates boilerplate by abstracting the common pattern of:\n * 1. Merging default config with overrides\n * 2. Mapping merged config to service shape\n * 3. Creating a Layer.succeed\n *\n * @param ServiceTag - The Effect Context.Tag for the service\n * @param defaults - Default configuration object\n * @param config - Partial configuration to override defaults\n * @param mapToShape - Function that maps merged config to the service shape\n * @returns A Layer providing the service\n *\n * @example\n * ```typescript\n * export const makeMockBalanceServiceLayer = (\n * config: MockBalanceServiceConfig = {}\n * ): Layer.Layer<BalanceService> => {\n * const defaults = {\n * getSolBalance: () => Effect.succeed(1000000000n),\n * };\n *\n * return makeMockServiceLayer(\n * BalanceService,\n * defaults,\n * config,\n * (merged) => merged\n * );\n * };\n * ```\n */\nexport const makeMockServiceLayer = <I, S, C extends Record<string, unknown>>(\n ServiceTag: Context.Tag<I, S>,\n defaults: C,\n config: Partial<C>,\n mapToShape: (merged: C) => S\n): Layer.Layer<I> => {\n const merged = { ...defaults, ...config } as C;\n const serviceShape = mapToShape(merged);\n return Layer.succeed(ServiceTag, ServiceTag.of(serviceShape));\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAIhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing-kit/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAIhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["/**\n * Testing Kit for effect-solana\n *\n * This module exports mock builders and test utilities for downstream\n * consumers to easily test code that depends on effect-solana services.\n *\n * @example\n * ```typescript\n * import { makeEffectSolanaTestLayer } from \"@prb/effect-solana/testing-kit\";\n *\n * const testLayer = makeEffectSolanaTestLayer({\n * balanceService: {\n * getSolBalance: () => Effect.succeed(1000000000n as Lamports),\n * },\n * });\n * ```\n */\n\n// Fixtures\nexport {\n TEST_ADDRESS,\n TEST_ADDRESS_2,\n TEST_CLUSTER,\n TEST_MINT,\n TEST_SIGNATURE,\n TEST_WALLET,\n} from \"./_fixtures/addresses.js\";\n\n// Test helpers\nexport { assertLeft, assertRight, expectTaggedFailure, makeMockServiceLayer } from \"./helpers.js\";\nexport type { MockBalanceServiceConfig } from \"./mock-balance-service.js\";\nexport { makeMockBalanceServiceLayer } from \"./mock-balance-service.js\";\nexport type { MockPdaServiceConfig } from \"./mock-pda-service.js\";\nexport { makeMockPdaServiceLayer } from \"./mock-pda-service.js\";\n// Mock layer builders\nexport type { MockRpcServiceConfig } from \"./mock-rpc-service.js\";\nexport { makeMockRpc, makeMockRpcServiceLayer } from \"./mock-rpc-service.js\";\nexport type { MockSignerServiceConfig } from \"./mock-signer-service.js\";\nexport { makeMockSignerServiceLayer } from \"./mock-signer-service.js\";\nexport type { MockTokenServiceConfig } from \"./mock-token-service.js\";\nexport { makeMockTokenServiceLayer } from \"./mock-token-service.js\";\nexport type { MockTransactionServiceConfig } from \"./mock-transaction-service.js\";\nexport { makeMockTransactionServiceLayer } from \"./mock-transaction-service.js\";\n\n// Test layer composer\nexport type { TestLayerConfig } from \"./test-layer.js\";\nexport { makeEffectSolanaTestLayer } from \"./test-layer.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-balance-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,aAAa,GAAuC;IACxD,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAuB,CAAC;IAC5D,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAuB,CAAC,CAAC;CACzE,CAAC;AA2BF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAmC,EAAE,EACR,EAAE,CAC/B,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-balance-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-balance-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,aAAa,GAAuC;IACxD,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAuB,CAAC;IAC5D,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAuB,CAAC,CAAC;CACzE,CAAC;AA2BF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAmC,EAAE,EACR,EAAE,CAC/B,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import type { Address, Lamports } from \"@solana/kit\";\nimport type { Layer } from \"effect\";\nimport { Effect, Stream } from \"effect\";\nimport { BalanceService } from \"@/src/balance/index.js\";\nimport type { RpcError } from \"@/src/core/errors/index.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\n/**\n * Configuration for the mock BalanceService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockBalanceServiceConfig = {\n getSolBalance?: (address: Address) => Effect.Effect<Lamports, RpcError>;\n hasSufficientBalance?: (params: {\n address: Address;\n required: Lamports;\n }) => Effect.Effect<boolean, RpcError>;\n watchBalance?: (params: {\n address: Address;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Lamports, RpcError>>;\n};\n\nconst defaultConfig: Required<MockBalanceServiceConfig> = {\n getSolBalance: () => Effect.succeed(1000000000n as Lamports), // 1 SOL\n hasSufficientBalance: () => Effect.succeed(true),\n watchBalance: () => Effect.succeed(Stream.make(1000000000n as Lamports)),\n};\n\n/**\n * Creates a mock BalanceService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockBalanceServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockBalanceServiceLayer({\n * getSolBalance: () => Effect.succeed(5000000000n as Lamports), // 5 SOL\n * hasSufficientBalance: () => Effect.succeed(false),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const balanceService = yield* BalanceService;\n * const balance = yield* balanceService.getSolBalance(address);\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockBalanceServiceLayer = (\n config: MockBalanceServiceConfig = {}\n): Layer.Layer<BalanceService> =>\n makeMockServiceLayer(BalanceService, defaultConfig, config, (merged) => merged);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-pda-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-pda-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,aAAa,GAAmC;IACpD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,GAAgC,CAAU,CAAC;IACvF,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACjD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAgC,CAAC;CACnE,CAAC;AA0BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACR,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-pda-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-pda-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,aAAa,GAAmC;IACpD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,GAAgC,CAAU,CAAC;IACvF,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACjD,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAgC,CAAC;CACnE,CAAC;AA0BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACR,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import type { Address, ProgramDerivedAddressBump } from \"@solana/addresses\";\nimport type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { PdaSeed, ProgramDerivedAddress } from \"@/src/pda/index.js\";\nimport { PdaService } from \"@/src/pda/index.js\";\nimport { TEST_ADDRESS } from \"./_fixtures/addresses.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\n/**\n * Configuration for the mock PdaService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockPdaServiceConfig = {\n derive?: (\n seeds: readonly PdaSeed[],\n programAddress: Address\n ) => Effect.Effect<ProgramDerivedAddress>;\n deriveAddress?: (seeds: readonly PdaSeed[], programAddress: Address) => Effect.Effect<Address>;\n deriveBump?: (\n seeds: readonly PdaSeed[],\n programAddress: Address\n ) => Effect.Effect<ProgramDerivedAddressBump>;\n};\n\nconst defaultConfig: Required<MockPdaServiceConfig> = {\n derive: () => Effect.succeed([TEST_ADDRESS, 255 as ProgramDerivedAddressBump] as const),\n deriveAddress: () => Effect.succeed(TEST_ADDRESS),\n deriveBump: () => Effect.succeed(255 as ProgramDerivedAddressBump),\n};\n\n/**\n * Creates a mock PdaService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockPdaServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockPdaServiceLayer({\n * derive: () => Effect.succeed([customAddress, 250 as ProgramDerivedAddressBump]),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const pdaService = yield* PdaService;\n * const [pda, bump] = yield* pdaService.derive([seed1, seed2], programId);\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockPdaServiceLayer = (\n config: MockPdaServiceConfig = {}\n): Layer.Layer<PdaService> =>\n makeMockServiceLayer(PdaService, defaultConfig, config, (merged) => merged);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-rpc-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-rpc-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-rpc-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-rpc-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Rpc, RpcSubscriptions, SolanaRpcApi, SolanaRpcSubscriptionsApi } from \"@solana/kit\";\nimport { createSolanaRpc } from \"@solana/kit\";\nimport type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport { ConnectionNotFoundError } from \"@/src/core/errors/index.js\";\nimport { RpcService } from \"@/src/rpc/index.js\";\nimport type { Cluster } from \"@/src/types/index.js\";\nimport { TEST_CLUSTER } from \"./_fixtures/addresses.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\n/**\n * Configuration for the mock RpcService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockRpcServiceConfig = {\n getRpc?: () => Effect.Effect<Rpc<SolanaRpcApi>>;\n getRpcSubscriptions?: () => Effect.Effect<\n RpcSubscriptions<SolanaRpcSubscriptionsApi>,\n ConnectionNotFoundError\n >;\n getCluster?: () => Effect.Effect<Cluster>;\n getRpcUrl?: () => Effect.Effect<string>;\n};\n\n/**\n * Wraps a value with the standard RPC response context structure\n */\nconst wrapResponse = <T>(value: T) => ({ context: { slot: 0n }, value });\n\n/**\n * Create a mock RPC client for testing.\n * Provides a full Rpc<SolanaRpcApi> via createSolanaRpc with safe overrides.\n *\n * Uses type assertion because Solana RPC types use many branded types (Lamports, Signature, etc.)\n * that cannot be created from literals. The mock values are structurally correct at runtime.\n */\nexport const makeMockRpc = (overrides: Partial<Rpc<SolanaRpcApi>> = {}): Rpc<SolanaRpcApi> =>\n ({\n ...createSolanaRpc(\"http://localhost\"),\n getAccountInfo: () => ({\n send: () => Promise.resolve(wrapResponse(null)),\n }),\n getBalance: () => ({\n send: () => Promise.resolve(wrapResponse(1000000000n)),\n }),\n getLatestBlockhash: () => ({\n send: () =>\n Promise.resolve(\n wrapResponse({\n blockhash: \"GH7ome3EiwEr7tu9JuTh2dpYWBJK3z69Xm1ZE3MEE6JC\",\n lastValidBlockHeight: 1000n,\n })\n ),\n }),\n getSignatureStatuses: () => ({\n send: () =>\n Promise.resolve(\n wrapResponse([\n {\n confirmationStatus: \"confirmed\",\n confirmations: 10n,\n err: null,\n slot: 1000n,\n status: { Ok: null },\n },\n ])\n ),\n }),\n getTokenAccountBalance: () => ({\n send: () =>\n Promise.resolve(\n wrapResponse({\n amount: \"1000000000\",\n decimals: 9,\n uiAmount: 1.0,\n uiAmountString: \"1.0\",\n })\n ),\n }),\n sendTransaction: () => ({\n send: () => Promise.resolve(\"mock-signature\"),\n }),\n simulateTransaction: () => ({\n send: () =>\n Promise.resolve(\n wrapResponse({\n err: null,\n logs: [] as string[],\n returnData: null,\n })\n ),\n }),\n ...overrides,\n }) as Rpc<SolanaRpcApi>;\n\nconst defaultConfig: Required<MockRpcServiceConfig> = {\n getCluster: () => Effect.succeed(TEST_CLUSTER),\n getRpc: () => Effect.succeed(makeMockRpc()),\n getRpcSubscriptions: () =>\n Effect.fail(\n new ConnectionNotFoundError({\n cluster: TEST_CLUSTER,\n message: \"WebSocket not configured in mock\",\n })\n ),\n getRpcUrl: () => Effect.succeed(\"https://api.devnet.solana.com\"),\n};\n\n/**\n * Creates a mock RpcService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockRpcServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockRpcServiceLayer({\n * getRpc: () => Effect.succeed(myCustomMockRpc),\n * getCluster: () => Effect.succeed(\"mainnet-beta\"),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const rpcService = yield* RpcService;\n * const rpc = yield* rpcService.getRpc();\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockRpcServiceLayer = (\n config: MockRpcServiceConfig = {}\n): Layer.Layer<RpcService> =>\n makeMockServiceLayer(RpcService, defaultConfig, config, (merged) => merged);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-signer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signer-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAkDvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkC,EAAE,EACR,EAAE;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAE3C,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAC7B,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,sBAAsB,GAAG,CAAkD,EAAK,EAAE,EAAE,CACxF,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,0BAA0B,GAAG,CACjC,GAAiB,EACjB,EAAE,CACF,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,OAAO,CAClB,aAAa,EACb,aAAa,CAAC,EAAE,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,iBAAiB;QAClD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,kBAAkB;QACrD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,0BAA0B;QAC7E,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,sBAAsB;KAClE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-signer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signer-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAkDvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,SAAkC,EAAE,EACR,EAAE;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAE3C,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAC7B,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,sBAAsB,GAAG,CAAkD,EAAK,EAAE,EAAE,CACxF,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,0BAA0B,GAAG,CACjC,GAAiB,EACjB,EAAE,CACF,SAAS;QACP,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAEpF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,OAAO,CAClB,aAAa,EACb,aAAa,CAAC,EAAE,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,iBAAiB;QAClD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,kBAAkB;QACrD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,0BAA0B;QAC7E,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,sBAAsB;KAClE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Address } from \"@solana/addresses\";\nimport type { Transaction, TransactionWithLifetime } from \"@solana/transactions\";\nimport { Effect, Layer } from \"effect\";\nimport type { SignatureError } from \"@/src/core/errors/index.js\";\nimport { WalletNotConnectedError } from \"@/src/core/errors/index.js\";\nimport { SignerService } from \"@/src/signer/index.js\";\nimport { TEST_WALLET } from \"./_fixtures/addresses.js\";\n\n/**\n * Configuration for the mock SignerService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSignerServiceConfig = {\n address?: Address;\n connected?: boolean;\n getAddress?: () => Effect.Effect<Address, WalletNotConnectedError>;\n signTransaction?: <T extends Transaction & TransactionWithLifetime>(\n tx: T\n ) => Effect.Effect<T, SignatureError | WalletNotConnectedError>;\n signAllTransactions?: <T extends Transaction & TransactionWithLifetime>(\n txs: readonly T[]\n ) => Effect.Effect<readonly T[], SignatureError | WalletNotConnectedError>;\n isConnected?: () => Effect.Effect<boolean>;\n};\n\n/**\n * Creates a mock SignerService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults (connected wallet)\n * const layer = makeMockSignerServiceLayer();\n *\n * // Simulate disconnected wallet\n * const disconnectedLayer = makeMockSignerServiceLayer({\n * connected: false,\n * });\n *\n * // Custom address\n * const customLayer = makeMockSignerServiceLayer({\n * address: \"DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK\" as Address,\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const signer = yield* SignerService;\n * const address = yield* signer.getAddress();\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockSignerServiceLayer = (\n config: MockSignerServiceConfig = {}\n): Layer.Layer<SignerService> => {\n const address = config.address ?? TEST_WALLET;\n const connected = config.connected ?? true;\n\n const defaultGetAddress = () =>\n connected\n ? Effect.succeed(address)\n : Effect.fail(new WalletNotConnectedError({ message: \"Wallet not connected\" }));\n\n const defaultSignTransaction = <T extends Transaction & TransactionWithLifetime>(tx: T) =>\n connected\n ? Effect.succeed(tx)\n : Effect.fail(new WalletNotConnectedError({ message: \"Wallet not connected\" }));\n\n const defaultSignAllTransactions = <T extends Transaction & TransactionWithLifetime>(\n txs: readonly T[]\n ) =>\n connected\n ? Effect.succeed(txs)\n : Effect.fail(new WalletNotConnectedError({ message: \"Wallet not connected\" }));\n\n const defaultIsConnected = () => Effect.succeed(connected);\n\n return Layer.succeed(\n SignerService,\n SignerService.of({\n getAddress: config.getAddress ?? defaultGetAddress,\n isConnected: config.isConnected ?? defaultIsConnected,\n signAllTransactions: config.signAllTransactions ?? defaultSignAllTransactions,\n signTransaction: config.signTransaction ?? defaultSignTransaction,\n })\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-token-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-token-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAgCpD,MAAM,aAAa,GAAqC;IACtD,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE;YACJ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACrC,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACnC,MAAM,EAAE,EAAE;SACX;QACD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,cAAc;QAC9B,KAAK,EAAE,EAAE;KACK,CAAC;IACnB,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,SAAS;KACvB,CAAC;IACJ,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE;YACJ,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACpC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC9B,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,CAAC;SACT;QACD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,cAAc;QAC9B,KAAK,EAAE,EAAE;KACM,CAAC;IACpB,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IAClD,sBAAsB,EAAE,GAAG,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC;QACb,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,IAAI,UAAU,EAAE;QACtB,cAAc,EAAE,cAAc;KAChB,CAAC;IACnB,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/C,CAAC;AA2BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACR,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-token-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-token-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAgCpD,MAAM,aAAa,GAAqC;IACtD,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE;YACJ,QAAQ,EAAE,CAAC;YACX,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACrC,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACnC,MAAM,EAAE,EAAE;SACX;QACD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,cAAc;QAC9B,KAAK,EAAE,EAAE;KACK,CAAC;IACnB,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,SAAS;KACvB,CAAC;IACJ,eAAe,EAAE,GAAG,EAAE,CACpB,MAAM,CAAC,OAAO,CAAC;QACb,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE;YACJ,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YACpC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC9B,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,CAAC;SACT;QACD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,cAAc;QAC9B,KAAK,EAAE,EAAE;KACM,CAAC;IACpB,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IAClD,sBAAsB,EAAE,GAAG,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC;QACb,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,IAAI,UAAU,EAAE;QACtB,cAAc,EAAE,cAAc;KAChB,CAAC;IACnB,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/C,CAAC;AA2BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACR,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import type { Address, Instruction } from \"@solana/kit\";\nimport type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { AccountNotFoundError, RpcError } from \"@/src/core/errors/index.js\";\nimport type { ATAParams, MintAccount, TokenAccount } from \"@/src/token/index.js\";\nimport { TokenService } from \"@/src/token/index.js\";\nimport { TEST_ADDRESS_2 } from \"./_fixtures/addresses.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\n/**\n * Configuration for the mock TokenService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockTokenServiceConfig = {\n getAssociatedTokenAddress?: (params: ATAParams) => Effect.Effect<Address>;\n getOrCreateATA?: (params: ATAParams & { payer: Address }) => Effect.Effect<\n {\n address: Address;\n instruction?: Instruction;\n },\n RpcError\n >;\n getTokenBalance?: (ata: Address) => Effect.Effect<bigint, AccountNotFoundError | RpcError>;\n getMint?: (mint: Address) => Effect.Effect<MintAccount, AccountNotFoundError | RpcError>;\n getTokenAccount?: (\n account: Address\n ) => Effect.Effect<TokenAccount, AccountNotFoundError | RpcError>;\n getTransferInstruction?: (params: {\n readonly source: Address;\n readonly destination: Address;\n readonly authority: Address;\n readonly amount: bigint;\n readonly tokenProgram?: Address;\n }) => Effect.Effect<Instruction>;\n tokenAccountExists?: (ata: Address) => Effect.Effect<boolean, RpcError>;\n};\n\nconst defaultConfig: Required<MockTokenServiceConfig> = {\n getAssociatedTokenAddress: () => Effect.succeed(TEST_ADDRESS_2),\n getMint: () =>\n Effect.succeed({\n address: TEST_ADDRESS_2,\n data: {\n decimals: 0,\n freezeAuthority: { __option: \"None\" },\n isInitialized: true,\n mintAuthority: { __option: \"None\" },\n supply: 0n,\n },\n executable: false,\n lamports: 0n,\n programAddress: TEST_ADDRESS_2,\n space: 0n,\n } as MintAccount),\n getOrCreateATA: () =>\n Effect.succeed({\n address: TEST_ADDRESS_2,\n instruction: undefined, // Account already exists\n }),\n getTokenAccount: () =>\n Effect.succeed({\n address: TEST_ADDRESS_2,\n data: {\n amount: 0n,\n closeAuthority: { __option: \"None\" },\n delegate: { __option: \"None\" },\n delegatedAmount: 0n,\n isNative: { __option: \"None\" },\n mint: TEST_ADDRESS_2,\n owner: TEST_ADDRESS_2,\n state: 1,\n },\n executable: false,\n lamports: 0n,\n programAddress: TEST_ADDRESS_2,\n space: 0n,\n } as TokenAccount),\n getTokenBalance: () => Effect.succeed(1000000000n), // 1 token with 9 decimals\n getTransferInstruction: () =>\n Effect.succeed({\n accounts: [],\n data: new Uint8Array(),\n programAddress: TEST_ADDRESS_2,\n } as Instruction),\n tokenAccountExists: () => Effect.succeed(true),\n};\n\n/**\n * Creates a mock TokenService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockTokenServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockTokenServiceLayer({\n * getTokenBalance: () => Effect.succeed(5000000000n),\n * tokenAccountExists: () => Effect.succeed(false),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const tokenService = yield* TokenService;\n * const balance = yield* tokenService.getTokenBalance(ata);\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockTokenServiceLayer = (\n config: MockTokenServiceConfig = {}\n): Layer.Layer<TokenService> =>\n makeMockServiceLayer(TokenService, defaultConfig, config, (merged) => merged);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-transaction-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transaction-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA4DpD,MAAM,aAAa,GAA2C;IAC5D,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAkC,CAAC;IAC/D,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC;QACb,aAAa,EAAE,GAAG;QAClB,SAAS;QACT,IAAI,EAAE,KAAK;KACZ,CAAC;IACJ,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAA2B,CAAC;IACvD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAA2B,CAAC,CAAC;IAC5E,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC;QACb,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,cAA2B;QACtC,IAAI,EAAE,KAAK;KACZ,CAAC;IACJ,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CACZ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACf,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,cAA2B;QACtC,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC,CACJ;IACH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAA2C,CAAC;IACvE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAA0C,CAAC,CAAC;IAC9F,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;CAC5B,CAAC;AAgCF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,SAAuC,EAAE,EACR,EAAE,CACnC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-transaction-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transaction-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA4DpD,MAAM,aAAa,GAA2C;IAC5D,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAkC,CAAC;IAC/D,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC;QACb,aAAa,EAAE,GAAG;QAClB,SAAS;QACT,IAAI,EAAE,KAAK;KACZ,CAAC;IACJ,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,cAA2B,CAAC;IACvD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAA2B,CAAC,CAAC;IAC5E,cAAc,EAAE,GAAG,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC;QACb,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,cAA2B;QACtC,IAAI,EAAE,KAAK;KACZ,CAAC;IACJ,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CACZ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACf,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,cAA2B;QACtC,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC,CACJ;IACH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAA2C,CAAC;IACvE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAA0C,CAAC,CAAC;IAC9F,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;CAC5B,CAAC;AAgCF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,SAAuC,EAAE,EACR,EAAE,CACnC,oBAAoB,CAAC,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import type { Instruction } from \"@solana/instructions\";\nimport type { Signature } from \"@solana/keys\";\nimport type { CompilableTransactionMessage } from \"@solana/transaction-messages\";\nimport type { Transaction, TransactionWithLifetime } from \"@solana/transactions\";\nimport type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type {\n SimulationFailedError,\n TransactionFailedError,\n TransactionSendError,\n TransactionTimeoutError,\n WalletNotConnectedError,\n} from \"@/src/core/errors/index.js\";\nimport type {\n ConfirmOpts,\n TransactionBatchItem,\n TransactionBatchOpts,\n TransactionReceipt,\n} from \"@/src/tx/index.js\";\nimport { TransactionService } from \"@/src/tx/index.js\";\nimport { TEST_SIGNATURE } from \"./_fixtures/addresses.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\n/**\n * Configuration for the mock TransactionService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockTransactionServiceConfig = {\n build?: (\n instructions: readonly Instruction[]\n ) => Effect.Effect<CompilableTransactionMessage, TransactionSendError | WalletNotConnectedError>;\n signAll?: (\n txs: readonly CompilableTransactionMessage[]\n ) => Effect.Effect<\n readonly (Transaction & TransactionWithLifetime)[],\n TransactionSendError | WalletNotConnectedError\n >;\n sign?: <T extends CompilableTransactionMessage>(\n tx: T\n ) => Effect.Effect<\n Transaction & TransactionWithLifetime,\n TransactionSendError | WalletNotConnectedError\n >;\n sendAll?: (\n txs: readonly (Transaction & TransactionWithLifetime)[],\n opts?: TransactionBatchOpts\n ) => Effect.Effect<readonly Signature[], TransactionSendError>;\n send?: (\n tx: Transaction & TransactionWithLifetime\n ) => Effect.Effect<Signature, TransactionSendError>;\n confirm?: (\n signature: Signature,\n opts?: ConfirmOpts\n ) => Effect.Effect<TransactionReceipt, TransactionTimeoutError | TransactionFailedError>;\n sendAndConfirm?: (\n instructions: readonly Instruction[],\n opts?: ConfirmOpts\n ) => Effect.Effect<\n TransactionReceipt,\n | TransactionSendError\n | WalletNotConnectedError\n | TransactionTimeoutError\n | TransactionFailedError\n >;\n sendAndConfirmBatch?: (\n items: readonly TransactionBatchItem[],\n opts?: TransactionBatchOpts\n ) => Effect.Effect<\n readonly TransactionReceipt[],\n | TransactionSendError\n | WalletNotConnectedError\n | TransactionTimeoutError\n | TransactionFailedError\n >;\n simulate?: <T extends CompilableTransactionMessage>(\n tx: T\n ) => Effect.Effect<void, SimulationFailedError | TransactionSendError | WalletNotConnectedError>;\n};\n\nconst defaultConfig: Required<MockTransactionServiceConfig> = {\n build: () => Effect.succeed({} as CompilableTransactionMessage),\n confirm: (signature) =>\n Effect.succeed({\n confirmations: 10n,\n signature,\n slot: 1000n,\n }),\n send: () => Effect.succeed(TEST_SIGNATURE as Signature),\n sendAll: (txs) => Effect.succeed(txs.map(() => TEST_SIGNATURE as Signature)),\n sendAndConfirm: () =>\n Effect.succeed({\n confirmations: 10n,\n signature: TEST_SIGNATURE as Signature,\n slot: 1000n,\n }),\n sendAndConfirmBatch: (items) =>\n Effect.succeed(\n items.map(() => ({\n confirmations: 10n,\n signature: TEST_SIGNATURE as Signature,\n slot: 1000n,\n }))\n ),\n sign: () => Effect.succeed({} as Transaction & TransactionWithLifetime),\n signAll: (txs) => Effect.succeed(txs.map(() => ({}) as Transaction & TransactionWithLifetime)),\n simulate: () => Effect.void,\n};\n\n/**\n * Creates a mock TransactionService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockTransactionServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockTransactionServiceLayer({\n * sendAndConfirm: () => Effect.fail(\n * new TransactionFailedError({\n * signature: TEST_SIGNATURE,\n * message: \"Transaction failed\",\n * logs: [],\n * })\n * ),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const txService = yield* TransactionService;\n * const receipt = yield* txService.sendAndConfirm(instructions);\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockTransactionServiceLayer = (\n config: MockTransactionServiceConfig = {}\n): Layer.Layer<TransactionService> =>\n makeMockServiceLayer(TransactionService, defaultConfig, config, (merged) => merged);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AA4DhF,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CACxC,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,CACf,CAAC;AAuCF,MAAM,UAAU,yBAAyB,CACvC,SAA0B,EAAE;IAK5B,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CACnC,uBAAuB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAChD,0BAA0B,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CACvD,CAAC;IAGF,IAAI,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;IAEnC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,2BAA2B,CAAC,MAAM,CAAC,cAAc,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,+BAA+B,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAC3D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,CAAC;IAGD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAE7C,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AA4DhF,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CACxC,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,CACf,CAAC;AAuCF,MAAM,UAAU,yBAAyB,CACvC,SAA0B,EAAE;IAK5B,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CACnC,uBAAuB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAChD,0BAA0B,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CACvD,CAAC;IAGF,IAAI,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;IAEnC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,2BAA2B,CAAC,MAAM,CAAC,cAAc,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,+BAA+B,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAC3D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/F,CAAC;IAGD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAE1E,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAE7C,CAAC;AACJ,CAAC","sourcesContent":["import { Layer } from \"effect\";\nimport type { BalanceService } from \"@/src/balance/index.js\";\nimport { BalanceServiceLive } from \"@/src/balance/index.js\";\nimport type { PdaService } from \"@/src/pda/index.js\";\nimport { PdaServiceLive } from \"@/src/pda/index.js\";\nimport type { RpcService } from \"@/src/rpc/index.js\";\nimport type { SignerService } from \"@/src/signer/index.js\";\nimport type { TokenService } from \"@/src/token/index.js\";\nimport { TokenServiceLive } from \"@/src/token/index.js\";\nimport type { TransactionService } from \"@/src/tx/index.js\";\nimport { TransactionServiceLive } from \"@/src/tx/index.js\";\nimport type { MockBalanceServiceConfig } from \"./mock-balance-service.js\";\nimport { makeMockBalanceServiceLayer } from \"./mock-balance-service.js\";\nimport type { MockPdaServiceConfig } from \"./mock-pda-service.js\";\nimport { makeMockPdaServiceLayer } from \"./mock-pda-service.js\";\nimport type { MockRpcServiceConfig } from \"./mock-rpc-service.js\";\nimport { makeMockRpcServiceLayer } from \"./mock-rpc-service.js\";\nimport type { MockSignerServiceConfig } from \"./mock-signer-service.js\";\nimport { makeMockSignerServiceLayer } from \"./mock-signer-service.js\";\nimport type { MockTokenServiceConfig } from \"./mock-token-service.js\";\nimport { makeMockTokenServiceLayer } from \"./mock-token-service.js\";\nimport type { MockTransactionServiceConfig } from \"./mock-transaction-service.js\";\nimport { makeMockTransactionServiceLayer } from \"./mock-transaction-service.js\";\n\n/**\n * Configuration for the test layer composer\n *\n * @example\n * ```typescript\n * const layer = makeEffectSolanaTestLayer({\n * rpcService: {\n * getRpc: () => Effect.succeed(myMockRpc),\n * },\n * signerService: {\n * address: \"DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK\" as Address,\n * },\n * balanceService: {\n * getSolBalance: () => Effect.succeed(5000000000n as Lamports),\n * },\n * });\n * ```\n */\nexport type TestLayerConfig = {\n /**\n * Configuration overrides for the mock RpcService\n */\n rpcService?: MockRpcServiceConfig;\n\n /**\n * Configuration overrides for the mock SignerService\n */\n signerService?: MockSignerServiceConfig;\n\n /**\n * Configuration overrides for the mock BalanceService\n */\n balanceService?: MockBalanceServiceConfig;\n\n /**\n * Configuration overrides for the mock TokenService\n */\n tokenService?: MockTokenServiceConfig;\n\n /**\n * Configuration overrides for the mock TransactionService\n */\n transactionService?: MockTransactionServiceConfig;\n\n /**\n * Configuration overrides for the mock PdaService\n */\n pdaService?: MockPdaServiceConfig;\n};\n\n/**\n * Internal layer combining all application services\n * Requires RpcService and SignerService to be provided\n *\n * Layer composition order matters:\n * 1. Base services (directly client-bound, no service deps)\n * 2. Dependent services (require base services)\n */\nconst applicationServices = Layer.mergeAll(\n BalanceServiceLive,\n TokenServiceLive,\n TransactionServiceLive,\n PdaServiceLive\n);\n\n/**\n * Creates a complete effect-solana test layer with mocked boundaries\n *\n * This layer provides all effect-solana services with mocked RpcService\n * and SignerService boundaries. The mock boundaries use sensible defaults\n * that can be overridden via configuration.\n *\n * Use this for integration-style tests where you want real service implementations\n * with controlled network boundaries.\n *\n * @param config - Optional configuration to customize mock behaviors\n * @returns A Layer providing all effect-solana services\n *\n * @example\n * ```typescript\n * import { describe, expect, it } from \"@effect/vitest\";\n * import { Effect, Layer } from \"effect\";\n * import { BalanceService } from \"@prb/effect-solana\";\n * import { makeEffectSolanaTestLayer } from \"@prb/effect-solana/testing-kit\";\n *\n * describe(\"MyFeature\", () => {\n * const testLayer = makeEffectSolanaTestLayer({\n * balanceService: {\n * getSolBalance: () => Effect.succeed(1000000000n as Lamports),\n * },\n * });\n *\n * it.effect(\"reads balance\", () =>\n * Effect.gen(function* () {\n * const balanceService = yield* BalanceService;\n * const balance = yield* balanceService.getSolBalance(address);\n * expect(balance).toBe(1000000000n);\n * }).pipe(Effect.provide(testLayer))\n * );\n * });\n * ```\n */\nexport function makeEffectSolanaTestLayer(\n config: TestLayerConfig = {}\n): Layer.Layer<\n RpcService | SignerService | BalanceService | TokenService | TransactionService | PdaService\n> {\n // Create boundary mocks - use real services if no config provided\n const boundaryLayers = Layer.mergeAll(\n makeMockRpcServiceLayer(config.rpcService ?? {}),\n makeMockSignerServiceLayer(config.signerService ?? {})\n );\n\n // Create service mocks if config is provided, otherwise use real implementations from applicationServices\n let serviceMockLayer = Layer.empty;\n\n if (config.balanceService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockBalanceServiceLayer(config.balanceService)\n );\n }\n if (config.tokenService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockTokenServiceLayer(config.tokenService)\n );\n }\n if (config.transactionService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockTransactionServiceLayer(config.transactionService)\n );\n }\n if (config.pdaService) {\n serviceMockLayer = Layer.merge(serviceMockLayer, makeMockPdaServiceLayer(config.pdaService));\n }\n\n // Provide boundary mocks and service mocks to application services\n const baseLayer = Layer.provideMerge(applicationServices, boundaryLayers);\n\n return Layer.merge(baseLayer, serviceMockLayer) as Layer.Layer<\n RpcService | SignerService | BalanceService | TokenService | TransactionService | PdaService\n >;\n}\n"]}
|
package/dist/token/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/token/index.ts"],"names":[],"mappings":"AAMA,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/token/index.ts"],"names":[],"mappings":"AAMA,cAAc,cAAc,CAAC","sourcesContent":["/**\n * Token service for SPL token operations.\n *\n * @module\n */\n\nexport * from \"./service.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/token/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/token/service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Account, Address, Instruction } from \"@solana/kit\";\nimport { createNoopSigner } from \"@solana/signers\";\nimport type { Mint, Token as TokenAccountData } from \"@solana-program/token\";\nimport {\n fetchMaybeMint,\n fetchMaybeToken,\n findAssociatedTokenPda,\n getCreateAssociatedTokenIdempotentInstructionAsync,\n getTransferInstruction,\n} from \"@solana-program/token\";\nimport { Context, Effect, Layer } from \"effect\";\nimport { TOKEN_PROGRAM_ADDRESS } from \"@/src/constants/index.js\";\nimport { AccountNotFoundError, RpcError } from \"@/src/core/errors/index.js\";\nimport { RpcService } from \"@/src/rpc/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\n\nexport type MintAccount = Account<Mint>;\nexport type TokenAccount = Account<TokenAccountData>;\n\nexport type ATAParams = {\n readonly owner: Address;\n readonly mint: Address;\n readonly tokenProgram?: Address;\n};\n\nexport type TokenServiceShape = {\n /**\n * Get the Associated Token Account address for an owner and mint.\n */\n readonly getAssociatedTokenAddress: (params: ATAParams) => Effect.Effect<Address, Error>;\n\n /**\n * Get or create an Associated Token Account.\n * Returns the address and optionally the instruction to create it.\n */\n readonly getOrCreateATA: (params: ATAParams & { payer: Address }) => Effect.Effect<\n {\n address: Address;\n instruction?: Instruction;\n },\n Error | RpcError\n >;\n\n /**\n * Get the token balance for an Associated Token Account.\n */\n readonly getTokenBalance: (\n ata: Address\n ) => Effect.Effect<bigint, AccountNotFoundError | RpcError>;\n\n /**\n * Get the mint account for a token.\n */\n readonly getMint: (mint: Address) => Effect.Effect<MintAccount, AccountNotFoundError | RpcError>;\n\n /**\n * Get a token account by address.\n */\n readonly getTokenAccount: (\n account: Address\n ) => Effect.Effect<TokenAccount, AccountNotFoundError | RpcError>;\n\n /**\n * Build a token transfer instruction.\n */\n readonly getTransferInstruction: (params: {\n readonly source: Address;\n readonly destination: Address;\n readonly authority: Address;\n readonly amount: bigint;\n readonly tokenProgram?: Address;\n }) => Effect.Effect<Instruction>;\n\n /**\n * Check if a token account exists.\n */\n readonly tokenAccountExists: (ata: Address) => Effect.Effect<boolean, RpcError>;\n};\n\nexport class TokenService extends Context.Tag(\"esolana/TokenService\")<\n TokenService,\n TokenServiceShape\n>() {}\n\nexport const TokenServiceLive = Layer.effect(\n TokenService,\n Effect.gen(function* () {\n const rpcService = yield* RpcService;\n\n return TokenService.of({\n getAssociatedTokenAddress: (params) =>\n Effect.gen(function* () {\n const tokenProgram = params.tokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n const pda = yield* Effect.tryPromise({\n catch: (cause) =>\n new Error(`Failed to derive ATA for mint ${params.mint} and owner ${params.owner}`, {\n cause,\n }),\n try: () =>\n findAssociatedTokenPda({\n mint: params.mint,\n owner: params.owner,\n tokenProgram,\n }),\n });\n return pda[0];\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_GET_ATA, {\n attributes: {\n mint: params.mint,\n owner: params.owner,\n },\n })\n ),\n\n getMint: (mint) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const rpcUrl = yield* rpcService.getRpcUrl();\n\n const account = yield* Effect.tryPromise({\n catch: (cause) =>\n new RpcError({\n cause,\n message: `Failed to fetch mint ${mint}`,\n url: rpcUrl,\n }),\n try: () => fetchMaybeMint(rpc, mint),\n });\n\n if (!account.exists) {\n return yield* Effect.fail(\n new AccountNotFoundError({\n address: mint,\n message: `Mint not found: ${mint}`,\n })\n );\n }\n\n return account;\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_GET_MINT, {\n attributes: { mint },\n })\n ),\n\n getOrCreateATA: (params) =>\n Effect.gen(function* () {\n const tokenProgram = params.tokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n const pda = yield* Effect.tryPromise({\n catch: (cause) =>\n new Error(`Failed to derive ATA for mint ${params.mint} and owner ${params.owner}`, {\n cause,\n }),\n try: () =>\n findAssociatedTokenPda({\n mint: params.mint,\n owner: params.owner,\n tokenProgram,\n }),\n });\n const ata = pda[0];\n\n const rpc = yield* rpcService.getRpc();\n const rpcUrl = yield* rpcService.getRpcUrl();\n\n // Check if account exists\n const accountInfo = yield* Effect.tryPromise({\n catch: (cause) =>\n new RpcError({\n cause,\n message: `Failed to get account info for ${ata}`,\n url: rpcUrl,\n }),\n try: () => rpc.getAccountInfo(ata, { encoding: \"base64\" }).send(),\n });\n\n if (accountInfo.value) {\n // Account exists\n return { address: ata };\n }\n\n // Create instruction using idempotent version (safe to call even if exists)\n // Use NoopSigner since we only need the address for instruction creation\n // The actual signing happens later via TransactionService\n const payerSigner = createNoopSigner(params.payer);\n\n const instruction = yield* Effect.tryPromise({\n catch: (cause) =>\n new Error(\n `Failed to create ATA instruction for mint ${params.mint} and owner ${params.owner}`,\n { cause }\n ),\n try: () =>\n getCreateAssociatedTokenIdempotentInstructionAsync({\n ata,\n mint: params.mint,\n owner: params.owner,\n payer: payerSigner,\n tokenProgram,\n }),\n });\n\n return { address: ata, instruction };\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_CREATE_ATA, {\n attributes: {\n mint: params.mint,\n owner: params.owner,\n },\n })\n ),\n\n getTokenAccount: (accountAddress) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const rpcUrl = yield* rpcService.getRpcUrl();\n\n const account = yield* Effect.tryPromise({\n catch: (cause) =>\n new RpcError({\n cause,\n message: `Failed to fetch token account ${accountAddress}`,\n url: rpcUrl,\n }),\n try: () => fetchMaybeToken(rpc, accountAddress),\n });\n\n if (!account.exists) {\n return yield* Effect.fail(\n new AccountNotFoundError({\n address: accountAddress,\n message: `Token account not found: ${accountAddress}`,\n })\n );\n }\n\n return account;\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_GET_ACCOUNT, {\n attributes: { account: accountAddress },\n })\n ),\n\n getTokenBalance: (ata) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const rpcUrl = yield* rpcService.getRpcUrl();\n const response = yield* Effect.tryPromise({\n catch: (cause) =>\n new RpcError({\n cause,\n message: `Failed to get token balance for ${ata}`,\n url: rpcUrl,\n }),\n try: () => rpc.getTokenAccountBalance(ata).send(),\n });\n\n if (!response.value) {\n return yield* Effect.fail(\n new AccountNotFoundError({\n address: ata,\n message: `Token account not found: ${ata}`,\n })\n );\n }\n\n return BigInt(response.value.amount);\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_GET_TOKEN, {\n attributes: { ata },\n })\n ),\n\n getTransferInstruction: (params) =>\n Effect.sync(() => {\n const tokenProgram = params.tokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n\n return getTransferInstruction(\n {\n amount: params.amount,\n authority: params.authority,\n destination: params.destination,\n source: params.source,\n },\n { programAddress: tokenProgram }\n );\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_TRANSFER, {\n attributes: {\n amount: params.amount.toString(),\n destination: params.destination,\n source: params.source,\n },\n })\n ),\n\n tokenAccountExists: (ata) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const rpcUrl = yield* rpcService.getRpcUrl();\n const response = yield* Effect.tryPromise({\n catch: (cause) =>\n new RpcError({\n cause,\n message: `Failed to check token account ${ata}`,\n url: rpcUrl,\n }),\n try: () => rpc.getAccountInfo(ata, { encoding: \"base64\" }).send(),\n });\n return response.value !== null;\n }).pipe(\n Effect.withSpan(SpanNames.TOKEN_ACCOUNT_EXISTS, {\n attributes: { ata },\n })\n ),\n });\n })\n);\n"]}
|
package/dist/tx/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC","sourcesContent":["export * from \"./service.js\";\nexport * from \"./types.js\";\n"]}
|
package/dist/tx/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/tx/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/tx/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { pipe } from \"@solana/functional\";\nimport type { Instruction } from \"@solana/instructions\";\nimport type { Signature } from \"@solana/keys\";\nimport type { CompilableTransactionMessage } from \"@solana/transaction-messages\";\nimport {\n appendTransactionMessageInstructions,\n createTransactionMessage,\n setTransactionMessageFeePayer,\n setTransactionMessageLifetimeUsingBlockhash,\n} from \"@solana/transaction-messages\";\nimport type { Transaction, TransactionWithLifetime } from \"@solana/transactions\";\nimport {\n compileTransaction,\n getBase64EncodedWireTransaction,\n getSignatureFromTransaction,\n} from \"@solana/transactions\";\nimport {\n getSetComputeUnitLimitInstruction,\n getSetComputeUnitPriceInstruction,\n} from \"@solana-program/compute-budget\";\nimport { Context, Duration, Effect, Layer, Schedule } from \"effect\";\nimport type { WalletNotConnectedError } from \"@/src/core/errors/index.js\";\nimport {\n SignatureError,\n SimulationFailedError,\n TransactionFailedError,\n TransactionSendError,\n TransactionTimeoutError,\n} from \"@/src/core/errors/index.js\";\nimport type { RpcServiceShape } from \"@/src/rpc/index.js\";\nimport { RpcService } from \"@/src/rpc/index.js\";\nimport { SignerService } from \"@/src/signer/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport type {\n ComputeBudgetConfig,\n ConfirmOpts,\n TransactionBatchItem,\n TransactionBatchOpts,\n TransactionBuildOpts,\n TransactionReceipt,\n} from \"./types.js\";\n\n/**\n * Shape of the TransactionService for type inference.\n *\n * @category Services\n */\nexport type TransactionServiceShape = {\n /**\n * Build a transaction from instructions.\n */\n readonly build: (\n instructions: readonly Instruction[],\n opts?: TransactionBuildOpts\n ) => Effect.Effect<CompilableTransactionMessage, TransactionSendError | WalletNotConnectedError>;\n\n /**\n * Sign multiple transactions in a batch.\n */\n readonly signAll: (\n txs: readonly CompilableTransactionMessage[]\n ) => Effect.Effect<\n readonly (Transaction & TransactionWithLifetime)[],\n TransactionSendError | WalletNotConnectedError\n >;\n\n /**\n * Sign a transaction.\n */\n readonly sign: <T extends CompilableTransactionMessage>(\n tx: T\n ) => Effect.Effect<\n Transaction & TransactionWithLifetime,\n TransactionSendError | WalletNotConnectedError\n >;\n\n /**\n * Send multiple signed transactions.\n */\n readonly sendAll: (\n txs: readonly (Transaction & TransactionWithLifetime)[],\n opts?: TransactionBatchOpts\n ) => Effect.Effect<readonly Signature[], TransactionSendError>;\n\n /**\n * Send a signed transaction.\n */\n readonly send: (\n tx: Transaction & TransactionWithLifetime\n ) => Effect.Effect<Signature, TransactionSendError>;\n\n /**\n * Confirm a transaction by signature.\n */\n readonly confirm: (\n signature: Signature,\n opts?: ConfirmOpts\n ) => Effect.Effect<TransactionReceipt, TransactionTimeoutError | TransactionFailedError>;\n\n /**\n * Build, sign, send, and confirm a transaction.\n */\n readonly sendAndConfirm: (\n instructions: readonly Instruction[],\n opts?: ConfirmOpts & { computeBudget?: ComputeBudgetConfig }\n ) => Effect.Effect<\n TransactionReceipt,\n | TransactionSendError\n | WalletNotConnectedError\n | TransactionTimeoutError\n | TransactionFailedError\n >;\n\n /**\n * Build, sign, send, and confirm a batch of transactions.\n */\n readonly sendAndConfirmBatch: (\n items: readonly TransactionBatchItem[],\n opts?: TransactionBatchOpts\n ) => Effect.Effect<\n readonly TransactionReceipt[],\n | TransactionSendError\n | WalletNotConnectedError\n | TransactionTimeoutError\n | TransactionFailedError\n >;\n\n /**\n * Simulate a transaction.\n */\n readonly simulate: <T extends CompilableTransactionMessage>(\n tx: T\n ) => Effect.Effect<void, SimulationFailedError | TransactionSendError | WalletNotConnectedError>;\n};\n\n/**\n * Service tag for transaction operations.\n *\n * @category Services\n */\nexport class TransactionService extends Context.Tag(\"esolana/TransactionService\")<\n TransactionService,\n TransactionServiceShape\n>() {}\n\n/**\n * Check if a transaction has reached the desired confirmation level.\n */\nconst hasReachedConfirmation = (\n status: {\n confirmationStatus?: \"processed\" | \"confirmed\" | \"finalized\" | null;\n },\n commitment: \"processed\" | \"confirmed\" | \"finalized\"\n): boolean => {\n if (commitment === \"processed\") {\n return true;\n }\n if (commitment === \"confirmed\") {\n return status.confirmationStatus === \"confirmed\" || status.confirmationStatus === \"finalized\";\n }\n return status.confirmationStatus === \"finalized\";\n};\n\n/**\n * Check signature status and return receipt if confirmed.\n */\nconst checkSignatureStatus = (\n rpc: Effect.Effect.Success<ReturnType<RpcServiceShape[\"getRpc\"]>>,\n signature: Signature,\n commitment: \"processed\" | \"confirmed\" | \"finalized\"\n): Effect.Effect<TransactionReceipt | null, TransactionFailedError> =>\n Effect.gen(function* () {\n const response = yield* Effect.tryPromise({\n catch: (cause) =>\n new TransactionFailedError({\n cause,\n logs: [],\n message: \"Failed to get signature status\",\n signature,\n }),\n try: () => rpc.getSignatureStatuses([signature]).send(),\n });\n\n const status = response?.value?.[0];\n if (!status) {\n return null;\n }\n\n if (status.err) {\n return yield* Effect.fail(\n new TransactionFailedError({\n logs: [],\n message: \"Transaction failed on-chain\",\n signature,\n })\n );\n }\n\n if (hasReachedConfirmation(status, commitment)) {\n return {\n confirmations: status.confirmations !== null ? BigInt(status.confirmations) : null,\n signature,\n slot: BigInt(status.slot),\n };\n }\n\n return null;\n });\n\nconst buildComputeBudgetInstructions = (config?: ComputeBudgetConfig): readonly Instruction[] => {\n if (!config) {\n return [];\n }\n\n const instructions: Instruction[] = [];\n\n if (config.unitLimit !== undefined) {\n instructions.push(getSetComputeUnitLimitInstruction({ units: config.unitLimit }));\n }\n\n if (config.microLamports !== undefined) {\n instructions.push(getSetComputeUnitPriceInstruction({ microLamports: config.microLamports }));\n }\n\n return instructions;\n};\n\n/**\n * Create a TransactionService layer.\n *\n * @category Layers\n */\nexport const TransactionServiceLive = Layer.effect(\n TransactionService,\n Effect.gen(function* () {\n const rpcService = yield* RpcService;\n const signerService = yield* SignerService;\n\n const service: TransactionServiceShape = {\n build: (instructions, opts) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const address = yield* signerService.getAddress();\n const computeBudgetInstructions = buildComputeBudgetInstructions(opts?.computeBudget);\n\n // Get latest blockhash\n const { value: latestBlockhash } = yield* Effect.tryPromise({\n catch: (cause) =>\n new TransactionSendError({\n cause,\n message: \"Failed to get latest blockhash\",\n }),\n try: () => rpc.getLatestBlockhash().send(),\n });\n\n // Build transaction message\n const message = pipe(\n createTransactionMessage({ version: 0 }),\n (m) => setTransactionMessageFeePayer(address, m),\n (m) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, m),\n (m) =>\n appendTransactionMessageInstructions(\n [...computeBudgetInstructions, ...instructions],\n m\n )\n );\n\n return message;\n }).pipe(Effect.withSpan(SpanNames.TX_BUILD)),\n\n confirm: (signature, opts) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const commitment = opts?.commitment ?? \"confirmed\";\n const timeout = opts?.timeout ?? 60_000;\n\n // Poll for confirmation with retry logic\n const pollEffect = checkSignatureStatus(rpc, signature, commitment).pipe(\n Effect.flatMap((receipt) =>\n receipt ? Effect.succeed(receipt) : Effect.fail(\"not-confirmed\")\n )\n );\n\n // Retry with spaced intervals until timeout\n const retrySchedule = Schedule.spaced(\"2 seconds\");\n\n return yield* pollEffect.pipe(\n Effect.retry(retrySchedule),\n Effect.timeout(`${timeout} millis`),\n Effect.catchTag(\"TimeoutException\", () =>\n Effect.fail(\n new TransactionTimeoutError({\n message: `Transaction confirmation timed out after ${timeout}ms`,\n signature,\n })\n )\n ),\n Effect.catchAll(\n (error): Effect.Effect<never, TransactionFailedError | TransactionTimeoutError> => {\n // Let TransactionFailedError propagate\n if (error instanceof TransactionFailedError) {\n return Effect.fail(error);\n }\n // Convert \"not-confirmed\" string to TransactionTimeoutError\n return Effect.fail(\n new TransactionTimeoutError({\n message: `Transaction confirmation timed out after ${timeout}ms`,\n signature,\n })\n );\n }\n )\n );\n }).pipe(Effect.withSpan(SpanNames.TX_CONFIRM)),\n\n send: (tx) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const signature = getSignatureFromTransaction(tx);\n\n const wireTransaction = getBase64EncodedWireTransaction(tx);\n\n yield* Effect.tryPromise({\n catch: (cause) =>\n new TransactionSendError({\n cause,\n message: \"Failed to send transaction\",\n signature,\n }),\n try: () =>\n rpc\n .sendTransaction(wireTransaction, { encoding: \"base64\", skipPreflight: false })\n .send(),\n });\n\n return signature;\n }).pipe(Effect.withSpan(SpanNames.TX_SEND)),\n\n sendAll: (txs, opts) =>\n Effect.gen(function* () {\n const retries = opts?.sendRetries ?? 0;\n const retryDelay = opts?.sendRetryDelay ?? 500;\n\n const sendWithRetry = (tx: Transaction & TransactionWithLifetime) => {\n const sendEffect = service.send(tx);\n\n if (retries <= 0) {\n return sendEffect;\n }\n\n const retrySchedule = pipe(\n Schedule.recurs(retries),\n Schedule.addDelay(() => Duration.millis(retryDelay))\n );\n\n return sendEffect.pipe(Effect.retry(retrySchedule));\n };\n\n return yield* Effect.forEach(\n txs,\n (tx) => sendWithRetry(tx),\n opts?.concurrency ? { concurrency: opts.concurrency } : undefined\n );\n }).pipe(Effect.withSpan(SpanNames.TX_SEND)),\n\n sendAndConfirm: (instructions, opts) =>\n Effect.gen(function* () {\n const tx = yield* service.build(instructions, {\n computeBudget: opts?.computeBudget,\n });\n const signed = yield* service.sign(tx);\n const signature = yield* service.send(signed);\n return yield* service.confirm(signature, opts);\n }).pipe(Effect.withSpan(SpanNames.TX_SEND_AND_CONFIRM)),\n\n sendAndConfirmBatch: (items, opts) =>\n Effect.gen(function* () {\n const built = yield* Effect.forEach(\n items,\n (item) => service.build(item.instructions, { computeBudget: item.computeBudget }),\n opts?.concurrency ? { concurrency: opts.concurrency } : undefined\n );\n\n const signed = yield* service.signAll(built);\n const signatures = yield* service.sendAll(signed, opts);\n\n return yield* Effect.forEach(\n signatures,\n (signature) => service.confirm(signature, opts?.confirm),\n opts?.concurrency ? { concurrency: opts.concurrency } : undefined\n );\n }).pipe(Effect.withSpan(SpanNames.TX_SEND_AND_CONFIRM)),\n\n sign: (tx) =>\n Effect.gen(function* () {\n const compiled = compileTransaction(tx);\n // Cast to the expected type for signTransaction\n const typed = compiled as unknown as Transaction & TransactionWithLifetime;\n return yield* signerService\n .signTransaction(typed)\n .pipe(\n Effect.mapError((error) =>\n error instanceof SignatureError\n ? new TransactionSendError({ cause: error, message: error.message })\n : error\n )\n );\n }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),\n\n signAll: (txs) =>\n Effect.gen(function* () {\n const compiled = txs.map(\n (tx) => compileTransaction(tx) as Transaction & TransactionWithLifetime\n );\n return (yield* signerService\n .signAllTransactions(compiled)\n .pipe(\n Effect.mapError((error) =>\n error instanceof SignatureError\n ? new TransactionSendError({ cause: error, message: error.message })\n : error\n )\n )) as readonly (Transaction & TransactionWithLifetime)[];\n }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),\n\n simulate: (tx) =>\n Effect.gen(function* () {\n const rpc = yield* rpcService.getRpc();\n const compiled = compileTransaction(tx);\n // Cast to the expected type for signTransaction\n const typed = compiled as unknown as Transaction & TransactionWithLifetime;\n const signed = yield* signerService\n .signTransaction(typed)\n .pipe(\n Effect.mapError((error) =>\n error instanceof SignatureError\n ? new TransactionSendError({ cause: error, message: error.message })\n : error\n )\n );\n\n const wireTransaction = getBase64EncodedWireTransaction(signed);\n\n const result = yield* Effect.tryPromise({\n catch: (cause) =>\n new SimulationFailedError({\n cause,\n message: \"Simulation failed\",\n }),\n try: () => rpc.simulateTransaction(wireTransaction, { encoding: \"base64\" }).send(),\n });\n\n if (result.value.err) {\n return yield* Effect.fail(\n new SimulationFailedError({\n logs: result.value.logs ?? [],\n message: \"Simulation failed with error\",\n })\n );\n }\n }).pipe(Effect.withSpan(SpanNames.TX_SIMULATE)),\n };\n\n return TransactionService.of(service);\n })\n);\n"]}
|
package/dist/tx/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tx/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tx/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Instruction } from \"@solana/instructions\";\nimport type { Signature } from \"@solana/keys\";\n\n/**\n * Options for confirming a transaction.\n *\n * @category Types\n */\nexport type ConfirmOpts = {\n /**\n * Commitment level for confirmation.\n * @default \"confirmed\"\n */\n readonly commitment?: \"processed\" | \"confirmed\" | \"finalized\";\n\n /**\n * Timeout in milliseconds for confirmation.\n * @default 60000 (60 seconds)\n */\n readonly timeout?: number;\n};\n\n/**\n * Compute budget configuration for transactions.\n *\n * @category Types\n */\nexport type ComputeBudgetConfig = {\n /**\n * Compute unit limit.\n */\n readonly unitLimit?: number;\n\n /**\n * Compute unit price in micro-lamports.\n */\n readonly microLamports?: number | bigint;\n};\n\n/**\n * Options for building a transaction.\n *\n * @category Types\n */\nexport type TransactionBuildOpts = {\n /**\n * Optional compute budget settings.\n */\n readonly computeBudget?: ComputeBudgetConfig;\n};\n\n/**\n * A batch item representing a transaction to build.\n *\n * @category Types\n */\nexport type TransactionBatchItem = {\n /**\n * Transaction instructions.\n */\n readonly instructions: readonly Instruction[];\n\n /**\n * Optional compute budget settings.\n */\n readonly computeBudget?: ComputeBudgetConfig;\n};\n\n/**\n * Options for batch transaction orchestration.\n *\n * @category Types\n */\nexport type TransactionBatchOpts = {\n /**\n * Concurrency for sending/confirming transactions.\n * @default 1 (sequential)\n */\n readonly concurrency?: number;\n\n /**\n * Retry count for send failures.\n * @default 0\n */\n readonly sendRetries?: number;\n\n /**\n * Delay between send retries in milliseconds.\n * @default 500\n */\n readonly sendRetryDelay?: number;\n\n /**\n * Confirmation options for each transaction.\n */\n readonly confirm?: ConfirmOpts;\n};\n\n/**\n * Receipt returned after a transaction is confirmed.\n *\n * @category Types\n */\nexport type TransactionReceipt = {\n /**\n * The transaction signature.\n */\n readonly signature: Signature;\n\n /**\n * The slot at which the transaction was confirmed.\n */\n readonly slot: bigint;\n\n /**\n * Number of confirmations. Null if not yet finalized.\n */\n readonly confirmations: bigint | null;\n};\n"]}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type definitions for Solana integration.\n *\n * Re-exports key types from @solana/kit and defines custom types.\n *\n * @module\n */\n\n// =============================================================================\n// Re-exports from @solana/kit\n// =============================================================================\n\nexport type {\n Address,\n Commitment,\n Lamports,\n Signature,\n TransactionError,\n} from \"@solana/kit\";\nexport type { TransactionSigner } from \"@solana/signers\";\n\n// =============================================================================\n// Cluster Configuration\n// =============================================================================\n\n/**\n * Solana cluster environments.\n */\nexport type Cluster = \"mainnet-beta\" | \"devnet\" | \"testnet\" | \"localnet\";\n\n/**\n * Configuration for a Solana cluster connection.\n */\nexport type ClusterConfig = {\n readonly cluster: Cluster;\n readonly rpcUrl: string;\n readonly wsUrl?: string;\n};\n\n// =============================================================================\n// Custom Branded Types\n// =============================================================================\n\n/**\n * Microlamports (1 lamport = 1,000,000 microlamports).\n * Used for priority fees in compute budget instructions.\n */\nexport type Microlamports = bigint & { readonly _brand: \"Microlamports\" };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_fixtures.js","sourceRoot":"","sources":["../../src/web3.js/_fixtures.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,WAAW,IAAI,iBAAiB,EAChC,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAC1C,IAAI,UAAU,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC7F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACvB,CAAC,CACH,CAAC;AAaF,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,EAAE,CAAC,GAAG,CACJ,IAAI,sBAAsB,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC,CACH,CAAC;IACF,EAAE,CAAC,eAAe,GAAG,8CAA8C,CAAC;IACpE,EAAE,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC;AACZ,CAAC;AAaD,MAAM,UAAU,0BAA0B;IACxC,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC;QACvC,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,QAAQ,EAAE,YAAY,CAAC,SAAS;QAChC,eAAe,EAAE,8CAA8C;KAChE,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAExB,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"_fixtures.js","sourceRoot":"","sources":["../../src/web3.js/_fixtures.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,OAAO,EACP,WAAW,IAAI,iBAAiB,EAChC,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAC1C,IAAI,UAAU,CAAC;IACb,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC7F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACvB,CAAC,CACH,CAAC;AAaF,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,EAAE,CAAC,GAAG,CACJ,IAAI,sBAAsB,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC,CACH,CAAC;IACF,EAAE,CAAC,eAAe,GAAG,8CAA8C,CAAC;IACpE,EAAE,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC;AACZ,CAAC;AAaD,MAAM,UAAU,0BAA0B;IACxC,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC;QACvC,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,QAAQ,EAAE,YAAY,CAAC,SAAS;QAChC,eAAe,EAAE,8CAA8C;KAChE,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAExB,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["/**\n * Shared test fixtures for web3.js compatibility tests.\n *\n * @module\n * @internal\n */\n\nimport {\n Keypair,\n Transaction as LegacyTransaction,\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from \"@solana/web3.js\";\n\n/**\n * Deterministic test keypair for signing transactions.\n */\nexport const TEST_KEYPAIR = Keypair.fromSeed(\n new Uint8Array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n 27, 28, 29, 30, 31, 32,\n ])\n);\n\n/**\n * Creates a basic legacy Transaction with a single instruction.\n *\n * @returns A Legacy Transaction ready for testing\n *\n * @example\n * ```typescript\n * const tx = createLegacyTransaction();\n * const kitTx = fromWeb3Transaction(tx);\n * ```\n */\nexport function createLegacyTransaction(): LegacyTransaction {\n const tx = new LegacyTransaction();\n tx.add(\n new TransactionInstruction({\n data: Buffer.from([0, 0, 0, 0]),\n keys: [],\n programId: SystemProgram.programId,\n })\n );\n tx.recentBlockhash = \"GH7ome3EiwEr7tu9JuTh2dpYWBJK3z69Xm1ZE3MEE6JC\";\n tx.feePayer = new PublicKey(\"11111111111111111111111111111111\");\n return tx;\n}\n\n/**\n * Creates a VersionedTransaction with a v0 message.\n *\n * @returns A VersionedTransaction ready for testing\n *\n * @example\n * ```typescript\n * const versionedTx = createVersionedTransaction();\n * const kitTx = fromWeb3Transaction(versionedTx);\n * ```\n */\nexport function createVersionedTransaction(): VersionedTransaction {\n const instruction = new TransactionInstruction({\n data: Buffer.from([0, 0, 0, 0]),\n keys: [],\n programId: SystemProgram.programId,\n });\n\n const messageV0 = new TransactionMessage({\n instructions: [instruction],\n payerKey: TEST_KEYPAIR.publicKey,\n recentBlockhash: \"GH7ome3EiwEr7tu9JuTh2dpYWBJK3z69Xm1ZE3MEE6JC\",\n }).compileToV0Message();\n\n return new VersionedTransaction(messageV0);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web3.js/index.ts"],"names":[],"mappings":"AA2BA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web3.js/index.ts"],"names":[],"mappings":"AA2BA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Legacy @solana/web3.js compatibility layer.\n *\n * This module provides utilities for bridging between legacy @solana/web3.js v1.x\n * wallet adapters and the modern @solana/kit v2.x types used by @prb/effect-solana.\n *\n * @module @prb/effect-solana/compat\n *\n * @remarks\n * Requires `@solana/web3.js` v1.95.0+ to be installed as a peer dependency.\n *\n * @example\n * ```typescript\n * import { makeSolanaLayerWithLegacyAdapter } from \"@prb/effect-solana/compat\";\n *\n * const layer = makeSolanaLayerWithLegacyAdapter(\n * { cluster: \"devnet\" },\n * () => ({\n * publicKey: walletProvider?.publicKey ?? null,\n * connected: !!walletProvider?.publicKey,\n * signTransaction: walletProvider.signTransaction.bind(walletProvider),\n * signAllTransactions: walletProvider.signAllTransactions.bind(walletProvider),\n * })\n * );\n * ```\n */\n\nexport * from \"./layers.js\";\nexport * from \"./legacy-signer.js\";\nexport * from \"./transaction-bridge.js\";\nexport * from \"./types.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/web3.js/layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAI/B,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AA8BxE,MAAM,UAAU,gCAAgC,CAC9C,MAA2B,EAC3B,UAAqC;IAUrC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEzD,OAAO,KAAK,CAAC,YAAY,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/web3.js/layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAI/B,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AA8BxE,MAAM,UAAU,gCAAgC,CAC9C,MAA2B,EAC3B,UAAqC;IAUrC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEzD,OAAO,KAAK,CAAC,YAAY,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import { Layer } from \"effect\";\nimport type { BalanceService } from \"@/src/balance/index.js\";\nimport type { PdaService } from \"@/src/pda/index.js\";\nimport type { SolanaClusterConfig } from \"@/src/presets/index.js\";\nimport { effectSolanaServices, makeRpcLayer } from \"@/src/presets/index.js\";\nimport type { ProgramWriter } from \"@/src/program/index.js\";\nimport type { RpcService } from \"@/src/rpc/index.js\";\nimport type { SignerService } from \"@/src/signer/index.js\";\nimport type { TokenService } from \"@/src/token/index.js\";\nimport type { TransactionService } from \"@/src/tx/index.js\";\nimport { makeSignerServiceFromLegacyAdapter } from \"./legacy-signer.js\";\nimport type { LegacyWalletAdapter } from \"./types.js\";\n\n/**\n * Create a complete Solana layer using a legacy wallet adapter.\n *\n * This is a convenience factory that combines RPC, signer, and all service layers\n * for use with legacy @solana/web3.js wallet adapters (like @reown/appkit-adapter-solana).\n *\n * @param config - Cluster configuration\n * @param getAdapter - Function that returns the current wallet adapter\n * @returns A Layer providing all Solana services\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { makeSolanaLayerWithLegacyAdapter } from \"@prb/effect-solana/compat\";\n *\n * const layer = makeSolanaLayerWithLegacyAdapter(\n * { cluster: \"devnet\" },\n * () => ({\n * publicKey: walletProvider?.publicKey ?? null,\n * connected: !!walletProvider?.publicKey,\n * signTransaction: walletProvider.signTransaction.bind(walletProvider),\n * signAllTransactions: walletProvider.signAllTransactions.bind(walletProvider),\n * })\n * );\n * ```\n */\nexport function makeSolanaLayerWithLegacyAdapter(\n config: SolanaClusterConfig,\n getAdapter: () => LegacyWalletAdapter\n): Layer.Layer<\n | RpcService\n | SignerService\n | BalanceService\n | TokenService\n | TransactionService\n | PdaService\n | ProgramWriter\n> {\n const rpcLayer = makeRpcLayer(config);\n const signerLayer = makeSignerServiceFromLegacyAdapter(getAdapter);\n\n const baseLayers = Layer.mergeAll(rpcLayer, signerLayer);\n\n return Layer.provideMerge(effectSolanaServices, baseLayers);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-signer.js","sourceRoot":"","sources":["../../src/web3.js/legacy-signer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"legacy-signer.js","sourceRoot":"","sources":["../../src/web3.js/legacy-signer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { SignatureError, WalletNotConnectedError } from \"@/src/core/errors/index.js\";\nimport { SignerService } from \"@/src/signer/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { fromWeb3Transaction, toWeb3Transaction } from \"./transaction-bridge.js\";\nimport type { LegacyWalletAdapter } from \"./types.js\";\nimport { publicKeyToAddress } from \"./types.js\";\n\n/**\n * Create a SignerService layer from a legacy wallet adapter.\n *\n * This factory bridges the gap between legacy @solana/web3.js wallet adapters\n * (like @reown/appkit-adapter-solana) and the modern @solana/kit types used\n * by @prb/effect-solana.\n *\n * @param getAdapter - Function that returns the current wallet adapter\n * @returns A Layer providing SignerService\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { makeSignerServiceFromLegacyAdapter } from \"@prb/effect-solana/compat\";\n *\n * const signerLayer = makeSignerServiceFromLegacyAdapter(() => ({\n * publicKey: walletProvider?.publicKey ?? null,\n * connected: !!walletProvider?.publicKey,\n * signTransaction: walletProvider.signTransaction.bind(walletProvider),\n * signAllTransactions: walletProvider.signAllTransactions.bind(walletProvider),\n * }));\n * ```\n */\nexport function makeSignerServiceFromLegacyAdapter(\n getAdapter: () => LegacyWalletAdapter\n): Layer.Layer<SignerService> {\n return Layer.succeed(\n SignerService,\n SignerService.of({\n getAddress: () =>\n Effect.gen(function* () {\n const adapter = getAdapter();\n if (!(adapter.connected && adapter.publicKey)) {\n return yield* Effect.fail(\n new WalletNotConnectedError({ message: \"Wallet not connected\" })\n );\n }\n\n // Runtime validation before type assertion\n if (\n typeof adapter.publicKey !== \"object\" ||\n adapter.publicKey === null ||\n typeof (adapter.publicKey as { toBase58?: unknown }).toBase58 !== \"function\"\n ) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n message: \"Invalid publicKey: missing toBase58 method\",\n })\n );\n }\n\n return publicKeyToAddress(adapter.publicKey as { toBase58(): string });\n }).pipe(Effect.withSpan(SpanNames.SIGNER_GET_ADDRESS)),\n\n isConnected: () => Effect.sync(() => getAdapter().connected),\n\n signAllTransactions: (txs) =>\n Effect.gen(function* () {\n // Early return for empty arrays\n if (txs.length === 0) {\n return [] as typeof txs;\n }\n\n const adapter = getAdapter();\n if (!adapter.connected) {\n return yield* Effect.fail(\n new WalletNotConnectedError({ message: \"Wallet not connected\" })\n );\n }\n\n // Convert all kit → web3.js\n const legacyTxs = yield* Effect.all(\n txs.map((tx) =>\n Effect.tryPromise({\n catch: (cause) =>\n new SignatureError({\n cause,\n message:\n cause instanceof Error ? cause.message : \"Failed to convert transaction\",\n }),\n try: () => toWeb3Transaction(tx),\n })\n )\n );\n\n // Sign all with legacy adapter\n const signedAll = yield* Effect.tryPromise({\n catch: (cause) =>\n new SignatureError({\n cause,\n message: cause instanceof Error ? cause.message : \"Failed to sign transactions\",\n }),\n try: () => adapter.signAllTransactions(legacyTxs),\n });\n\n // Convert all web3.js → kit\n // Cast is necessary because we can't preserve the generic T through web3.js conversion\n return signedAll.map((signed) =>\n fromWeb3Transaction(signed as Parameters<typeof fromWeb3Transaction>[0])\n ) as typeof txs;\n }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),\n\n signTransaction: (tx) =>\n Effect.gen(function* () {\n const adapter = getAdapter();\n if (!adapter.connected) {\n return yield* Effect.fail(\n new WalletNotConnectedError({ message: \"Wallet not connected\" })\n );\n }\n\n // Convert kit → web3.js\n const legacyTx = yield* Effect.tryPromise({\n catch: (cause) =>\n new SignatureError({\n cause,\n message: cause instanceof Error ? cause.message : \"Failed to convert transaction\",\n }),\n try: () => toWeb3Transaction(tx),\n });\n\n // Sign with legacy adapter\n const signed = yield* Effect.tryPromise({\n catch: (cause) =>\n new SignatureError({\n cause,\n message: cause instanceof Error ? cause.message : \"Failed to sign transaction\",\n }),\n try: () => adapter.signTransaction(legacyTx),\n });\n\n // Convert web3.js → kit\n // Cast is necessary because we can't preserve the generic T through web3.js conversion\n return fromWeb3Transaction(\n signed as Parameters<typeof fromWeb3Transaction>[0]\n ) as typeof tx;\n }).pipe(Effect.withSpan(SpanNames.TX_SIGN)),\n })\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-bridge.js","sourceRoot":"","sources":["../../src/web3.js/transaction-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,IAAI,QAAQ,GAAoD,IAAI,CAAC;AACrE,IAAI,QAAQ,GAAoD,IAAI,CAAC;AAErE,SAAS,UAAU;IACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAUD,SAAS,kBAAkB,CAAC,SAAqB;IAE/C,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,GAAG,EAAE,CAAC;IAE9C,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAsBD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAyC;IAEzC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAErC,IAAI,iBAAuD,CAAC;IAC5D,IAAI,oBAAiE,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnD,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;QAC3C,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,EACxF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IAGD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,kBAAkB,CAAC,SAAS,CAAC;QAClC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAsBD,MAAM,UAAU,mBAAmB,CAAC,EAEnC;IACC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpF,IAAI,CAAC;QACH,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAA0C,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"transaction-bridge.js","sourceRoot":"","sources":["../../src/web3.js/transaction-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,IAAI,QAAQ,GAAoD,IAAI,CAAC;AACrE,IAAI,QAAQ,GAAoD,IAAI,CAAC;AAErE,SAAS,UAAU;IACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAUD,SAAS,kBAAkB,CAAC,SAAqB;IAE/C,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,GAAG,EAAE,CAAC;IAE9C,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAsBD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAyC;IAEzC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAErC,IAAI,iBAAuD,CAAC;IAC5D,IAAI,oBAAiE,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnD,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;QAC3C,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,EACxF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IAGD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,kBAAkB,CAAC,SAAS,CAAC;QAClC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAsBD,MAAM,UAAU,mBAAmB,CAAC,EAEnC;IACC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpF,IAAI,CAAC;QACH,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAA0C,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC","sourcesContent":["import type { Transaction, TransactionWithLifetime } from \"@solana/transactions\";\nimport { getTransactionDecoder, getTransactionEncoder } from \"@solana/transactions\";\n\n// Lazy initialization for encoder/decoder\nlet _encoder: ReturnType<typeof getTransactionEncoder> | null = null;\nlet _decoder: ReturnType<typeof getTransactionDecoder> | null = null;\n\nfunction getEncoder() {\n if (_encoder === null) {\n _encoder = getTransactionEncoder();\n }\n return _encoder;\n}\n\nfunction getDecoder() {\n if (_decoder === null) {\n _decoder = getTransactionDecoder();\n }\n return _decoder;\n}\n\n/**\n * Detect if a serialized transaction contains a versioned message.\n *\n * Wire format: [signature_count (compact-u16)] [signatures (64 bytes each)] [message]\n * Versioned messages have bit 7 set (0x80) in the first message byte.\n *\n * @internal\n */\nfunction isVersionedMessage(wireBytes: Uint8Array): boolean {\n // First byte is signature count (compact-u16, but < 128 signatures = 1 byte)\n const signatureCount = wireBytes[0] ?? 0;\n // Message starts after: 1 byte count + (signatureCount * 64 bytes)\n const messageOffset = 1 + signatureCount * 64;\n // biome-ignore lint/suspicious/noBitwiseOperators: Checking version bit\n return ((wireBytes[messageOffset] ?? 0) & 0x80) !== 0;\n}\n\n/**\n * Convert a @solana/kit transaction to a @solana/web3.js Transaction or VersionedTransaction.\n *\n * Uses wire-format bytes as the interchange format. Dynamically imports @solana/web3.js\n * for tree-shaking when legacy compatibility is not needed.\n *\n * @param tx - Transaction from @solana/kit\n * @returns Promise of Transaction or VersionedTransaction from @solana/web3.js\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { toWeb3Transaction } from \"@prb/effect-solana/compat\";\n *\n * const kitTx: Transaction & TransactionWithLifetime = /* ... *\\/;\n * const legacyTx = await toWeb3Transaction(kitTx);\n * // => Transaction or VersionedTransaction instance\n * ```\n */\nexport async function toWeb3Transaction(\n tx: Transaction & TransactionWithLifetime\n): Promise<unknown> {\n const wire = getEncoder().encode(tx);\n\n let LegacyTransaction: { from(bytes: Uint8Array): unknown };\n let VersionedTransaction: { deserialize(bytes: Uint8Array): unknown };\n\n try {\n const web3Module = await import(\"@solana/web3.js\");\n LegacyTransaction = web3Module.Transaction;\n VersionedTransaction = web3Module.VersionedTransaction;\n } catch (error) {\n throw new Error(\n \"@solana/web3.js is required for legacy compatibility. Install it as a peer dependency.\",\n { cause: error }\n );\n }\n\n // Convert ReadonlyUint8Array to Uint8Array for web3.js compatibility\n const wireBytes = new Uint8Array(wire);\n\n return isVersionedMessage(wireBytes)\n ? VersionedTransaction.deserialize(wireBytes)\n : LegacyTransaction.from(wireBytes);\n}\n\n/**\n * Convert a @solana/web3.js Transaction or VersionedTransaction to a @solana/kit transaction.\n *\n * Uses wire-format bytes as the interchange format.\n *\n * @param tx - Transaction or VersionedTransaction from @solana/web3.js\n * @returns Transaction from @solana/kit\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { fromWeb3Transaction } from \"@prb/effect-solana/compat\";\n * import { Transaction } from \"@solana/web3.js\";\n *\n * const legacyTx = new Transaction();\n * const kitTx = fromWeb3Transaction(legacyTx);\n * // => Transaction & TransactionWithLifetime\n * ```\n */\nexport function fromWeb3Transaction(tx: {\n serialize(opts: { requireAllSignatures: boolean; verifySignatures: boolean }): Uint8Array;\n}): Transaction & TransactionWithLifetime {\n const wire = tx.serialize({ requireAllSignatures: false, verifySignatures: false });\n\n try {\n return getDecoder().decode(wire) as Transaction & TransactionWithLifetime;\n } catch (error) {\n throw new Error(\"Failed to decode transaction from web3.js format\", { cause: error });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/web3.js/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA4C5C,MAAM,UAAU,kBAAkB,CAAC,EAA0B;IAC3D,OAAO,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC;AAqBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAa;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,EACxF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/web3.js/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA4C5C,MAAM,UAAU,kBAAkB,CAAC,EAA0B;IAC3D,OAAO,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC;AAqBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAa;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,EACxF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { Address } from \"@solana/addresses\";\nimport { address } from \"@solana/addresses\";\n\n/**\n * Legacy wallet adapter interface matching @solana/web3.js v1.x patterns.\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import type { LegacyWalletAdapter } from \"@prb/effect-solana/compat\";\n *\n * const adapter: LegacyWalletAdapter = {\n * publicKey: walletProvider?.publicKey ?? null,\n * connected: !!walletProvider?.publicKey,\n * signTransaction: walletProvider.signTransaction.bind(walletProvider),\n * signAllTransactions: walletProvider.signAllTransactions.bind(walletProvider),\n * };\n * ```\n */\nexport type LegacyWalletAdapter = {\n readonly publicKey: unknown | null; // PublicKey from @solana/web3.js\n readonly connected: boolean;\n readonly signTransaction: <T>(tx: T) => Promise<T>; // T = Transaction | VersionedTransaction\n readonly signAllTransactions: <T>(txs: T[]) => Promise<T[]>;\n};\n\n/**\n * Convert a legacy PublicKey to a modern Address.\n *\n * @param pk - PublicKey from @solana/web3.js\n * @returns Address string (base58)\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { publicKeyToAddress } from \"@prb/effect-solana/compat\";\n * import { PublicKey } from \"@solana/web3.js\";\n *\n * const pk = new PublicKey(\"11111111111111111111111111111111\");\n * const addr = publicKeyToAddress(pk);\n * // => \"11111111111111111111111111111111\" as Address\n * ```\n */\nexport function publicKeyToAddress(pk: { toBase58(): string }): Address {\n return address(pk.toBase58());\n}\n\n/**\n * Convert a modern Address to a legacy PublicKey.\n *\n * Uses dynamic import for tree-shaking when @solana/web3.js is not needed.\n *\n * @param addr - Address string\n * @returns PublicKey from @solana/web3.js\n *\n * @category Compatibility\n *\n * @example\n * ```typescript\n * import { addressToPublicKey } from \"@prb/effect-solana/compat\";\n *\n * const addr = address(\"11111111111111111111111111111111\");\n * const pk = await addressToPublicKey(addr);\n * // => PublicKey instance\n * ```\n */\nexport async function addressToPublicKey(addr: Address): Promise<unknown> {\n try {\n const { PublicKey } = await import(\"@solana/web3.js\");\n return new PublicKey(addr);\n } catch (error) {\n throw new Error(\n \"@solana/web3.js is required for legacy compatibility. Install it as a peer dependency.\",\n { cause: error }\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prb/effect-solana",
|
|
3
|
-
"description": "Effect-TS integration for Solana",
|
|
4
|
-
"
|
|
3
|
+
"description": "Effect-TS integration for Solana frontend development",
|
|
4
|
+
"homepage": "https://github.com/PaulRBerg/prb-effect/tree/main/solana#readme",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"sideEffects": false,
|
|
5
8
|
"type": "module",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"version": "1.0.0-beta.4",
|
|
6
11
|
"scripts": {
|
|
7
12
|
"build": "just build",
|
|
8
13
|
"prepack": "bun install --frozen-lockfile && just build"
|
|
9
14
|
},
|
|
10
|
-
"main": "./dist/index.js",
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
15
|
"author": {
|
|
13
16
|
"name": "Paul Razvan Berg",
|
|
14
17
|
"url": "https://github.com/PaulRBerg"
|
|
15
18
|
},
|
|
16
|
-
"license": "MIT",
|
|
17
19
|
"repository": {
|
|
20
|
+
"directory": "solana",
|
|
18
21
|
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/PaulRBerg/prb-effect.git"
|
|
20
|
-
"directory": "solana"
|
|
22
|
+
"url": "git+https://github.com/PaulRBerg/prb-effect.git"
|
|
21
23
|
},
|
|
22
24
|
"bugs": {
|
|
23
25
|
"url": "https://github.com/PaulRBerg/prb-effect/issues"
|
|
24
26
|
},
|
|
25
|
-
"homepage": "https://github.com/PaulRBerg/prb-effect/tree/main/solana#readme",
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"bn.js": "^5.2.1"
|
|
28
29
|
},
|
|
@@ -67,15 +68,25 @@
|
|
|
67
68
|
"DOCS.md",
|
|
68
69
|
"CONTRIBUTING.md"
|
|
69
70
|
],
|
|
71
|
+
"keywords": [
|
|
72
|
+
"anchor",
|
|
73
|
+
"effect",
|
|
74
|
+
"effect-ts",
|
|
75
|
+
"react",
|
|
76
|
+
"solana",
|
|
77
|
+
"spl-token",
|
|
78
|
+
"typescript",
|
|
79
|
+
"web3"
|
|
80
|
+
],
|
|
70
81
|
"peerDependencies": {
|
|
71
82
|
"@coral-xyz/anchor": "^0.31.1",
|
|
72
83
|
"@effect/platform": "catalog:peers",
|
|
73
|
-
"
|
|
74
|
-
"@solana/kit": "^2.2.0",
|
|
84
|
+
"@solana-program/compute-budget": "^0.8.0",
|
|
75
85
|
"@solana-program/system": "^0.8.0",
|
|
76
86
|
"@solana-program/token": "^0.8.0",
|
|
77
|
-
"@solana
|
|
87
|
+
"@solana/kit": "^2.2.0",
|
|
78
88
|
"@solana/web3.js": "^1.95.0",
|
|
89
|
+
"effect": "catalog:peers",
|
|
79
90
|
"react": "catalog:peers",
|
|
80
91
|
"react-dom": "catalog:peers"
|
|
81
92
|
},
|