@agirails/sdk 2.0.1-beta → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +116 -108
- package/bin/actp +10 -0
- package/dist/ACTPClient.d.ts +456 -33
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +477 -93
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/AgentRegistry.json +782 -0
- package/dist/abi/EscrowVault.json +106 -38
- package/dist/abi/IdentityRegistry.json +316 -0
- package/dist/adapters/BaseAdapter.d.ts +231 -0
- package/dist/adapters/BaseAdapter.d.ts.map +1 -0
- package/dist/adapters/BaseAdapter.js +393 -0
- package/dist/adapters/BaseAdapter.js.map +1 -0
- package/dist/adapters/BeginnerAdapter.d.ts +152 -0
- package/dist/adapters/BeginnerAdapter.d.ts.map +1 -0
- package/dist/adapters/BeginnerAdapter.js +168 -0
- package/dist/adapters/BeginnerAdapter.js.map +1 -0
- package/dist/adapters/IntermediateAdapter.d.ts +211 -0
- package/dist/adapters/IntermediateAdapter.d.ts.map +1 -0
- package/dist/adapters/IntermediateAdapter.js +260 -0
- package/dist/adapters/IntermediateAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +15 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +26 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/builders/DeliveryProofBuilder.d.ts +60 -1
- package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
- package/dist/builders/DeliveryProofBuilder.js +81 -5
- package/dist/builders/DeliveryProofBuilder.js.map +1 -1
- package/dist/builders/QuoteBuilder.d.ts +101 -0
- package/dist/builders/QuoteBuilder.d.ts.map +1 -1
- package/dist/builders/QuoteBuilder.js +120 -3
- package/dist/builders/QuoteBuilder.js.map +1 -1
- package/dist/builders/index.d.ts +4 -0
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +4 -0
- package/dist/builders/index.js.map +1 -1
- package/dist/cli/commands/balance.d.ts +13 -0
- package/dist/cli/commands/balance.d.ts.map +1 -0
- package/dist/cli/commands/balance.js +89 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +24 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +424 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/config.d.ts +13 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +192 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +143 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mint.d.ts +13 -0
- package/dist/cli/commands/mint.d.ts.map +1 -0
- package/dist/cli/commands/mint.js +91 -0
- package/dist/cli/commands/mint.js.map +1 -0
- package/dist/cli/commands/pay.d.ts +18 -0
- package/dist/cli/commands/pay.d.ts.map +1 -0
- package/dist/cli/commands/pay.js +87 -0
- package/dist/cli/commands/pay.js.map +1 -0
- package/dist/cli/commands/simulate.d.ts +32 -0
- package/dist/cli/commands/simulate.d.ts.map +1 -0
- package/dist/cli/commands/simulate.js +290 -0
- package/dist/cli/commands/simulate.js.map +1 -0
- package/dist/cli/commands/time.d.ts +29 -0
- package/dist/cli/commands/time.d.ts.map +1 -0
- package/dist/cli/commands/time.js +252 -0
- package/dist/cli/commands/time.js.map +1 -0
- package/dist/cli/commands/tx.d.ts +16 -0
- package/dist/cli/commands/tx.d.ts.map +1 -0
- package/dist/cli/commands/tx.js +379 -0
- package/dist/cli/commands/tx.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +20 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +160 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +104 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/client.d.ts +70 -0
- package/dist/cli/utils/client.d.ts.map +1 -0
- package/dist/cli/utils/client.js +240 -0
- package/dist/cli/utils/client.js.map +1 -0
- package/dist/cli/utils/config.d.ts +91 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +240 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/output.d.ts +174 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +380 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/config/networks.d.ts +28 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +60 -12
- package/dist/config/networks.js.map +1 -1
- package/dist/errors/index.d.ts +165 -2
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +260 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +61 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -36
- package/dist/index.js.map +1 -1
- package/dist/level0/Provider.d.ts +106 -0
- package/dist/level0/Provider.d.ts.map +1 -0
- package/dist/level0/Provider.js +10 -0
- package/dist/level0/Provider.js.map +1 -0
- package/dist/level0/ServiceDirectory.d.ts +74 -0
- package/dist/level0/ServiceDirectory.d.ts.map +1 -0
- package/dist/level0/ServiceDirectory.js +122 -0
- package/dist/level0/ServiceDirectory.js.map +1 -0
- package/dist/level0/index.d.ts +10 -0
- package/dist/level0/index.d.ts.map +1 -0
- package/dist/level0/index.js +15 -0
- package/dist/level0/index.js.map +1 -0
- package/dist/level0/provide.d.ts +51 -0
- package/dist/level0/provide.d.ts.map +1 -0
- package/dist/level0/provide.js +113 -0
- package/dist/level0/provide.js.map +1 -0
- package/dist/level0/request.d.ts +53 -0
- package/dist/level0/request.d.ts.map +1 -0
- package/dist/level0/request.js +462 -0
- package/dist/level0/request.js.map +1 -0
- package/dist/level1/Agent.d.ts +472 -0
- package/dist/level1/Agent.d.ts.map +1 -0
- package/dist/level1/Agent.js +1091 -0
- package/dist/level1/Agent.js.map +1 -0
- package/dist/level1/index.d.ts +10 -0
- package/dist/level1/index.d.ts.map +1 -0
- package/dist/level1/index.js +30 -0
- package/dist/level1/index.js.map +1 -0
- package/dist/level1/pricing/PriceCalculator.d.ts +62 -0
- package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -0
- package/dist/level1/pricing/PriceCalculator.js +237 -0
- package/dist/level1/pricing/PriceCalculator.js.map +1 -0
- package/dist/level1/pricing/PricingStrategy.d.ts +179 -0
- package/dist/level1/pricing/PricingStrategy.d.ts.map +1 -0
- package/dist/level1/pricing/PricingStrategy.js +11 -0
- package/dist/level1/pricing/PricingStrategy.js.map +1 -0
- package/dist/level1/types/Job.d.ts +166 -0
- package/dist/level1/types/Job.d.ts.map +1 -0
- package/dist/level1/types/Job.js +11 -0
- package/dist/level1/types/Job.js.map +1 -0
- package/dist/level1/types/Options.d.ts +258 -0
- package/dist/level1/types/Options.d.ts.map +1 -0
- package/dist/level1/types/Options.js +8 -0
- package/dist/level1/types/Options.js.map +1 -0
- package/dist/level1/types/index.d.ts +8 -0
- package/dist/level1/types/index.d.ts.map +1 -0
- package/dist/level1/types/index.js +8 -0
- package/dist/level1/types/index.js.map +1 -0
- package/dist/protocol/ACTPKernel.d.ts +229 -2
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +367 -33
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/AgentRegistry.d.ts +177 -0
- package/dist/protocol/AgentRegistry.d.ts.map +1 -0
- package/dist/protocol/AgentRegistry.js +449 -0
- package/dist/protocol/AgentRegistry.js.map +1 -0
- package/dist/protocol/DIDManager.d.ts +289 -0
- package/dist/protocol/DIDManager.d.ts.map +1 -0
- package/dist/protocol/DIDManager.js +481 -0
- package/dist/protocol/DIDManager.js.map +1 -0
- package/dist/protocol/DIDResolver.d.ts +236 -0
- package/dist/protocol/DIDResolver.d.ts.map +1 -0
- package/dist/protocol/DIDResolver.js +495 -0
- package/dist/protocol/DIDResolver.js.map +1 -0
- package/dist/protocol/EASHelper.d.ts +57 -2
- package/dist/protocol/EASHelper.d.ts.map +1 -1
- package/dist/protocol/EASHelper.js +230 -37
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +93 -2
- package/dist/protocol/EscrowVault.d.ts.map +1 -1
- package/dist/protocol/EscrowVault.js +122 -33
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +45 -1
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +64 -8
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +116 -2
- package/dist/protocol/MessageSigner.d.ts.map +1 -1
- package/dist/protocol/MessageSigner.js +215 -9
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +93 -0
- package/dist/protocol/ProofGenerator.d.ts.map +1 -1
- package/dist/protocol/ProofGenerator.js +194 -9
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/protocol/QuoteBuilder.d.ts +8 -0
- package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
- package/dist/protocol/QuoteBuilder.js +8 -0
- package/dist/protocol/QuoteBuilder.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +360 -0
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -0
- package/dist/runtime/BlockchainRuntime.js +767 -0
- package/dist/runtime/BlockchainRuntime.js.map +1 -0
- package/dist/runtime/IACTPRuntime.d.ts +271 -0
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -0
- package/dist/runtime/IACTPRuntime.js +15 -0
- package/dist/runtime/IACTPRuntime.js.map +1 -0
- package/dist/runtime/MockRuntime.d.ts +445 -0
- package/dist/runtime/MockRuntime.d.ts.map +1 -0
- package/dist/runtime/MockRuntime.js +1065 -0
- package/dist/runtime/MockRuntime.js.map +1 -0
- package/dist/runtime/MockStateManager.d.ts +233 -0
- package/dist/runtime/MockStateManager.d.ts.map +1 -0
- package/dist/runtime/MockStateManager.js +533 -0
- package/dist/runtime/MockStateManager.js.map +1 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +42 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/types/MockState.d.ts +167 -0
- package/dist/runtime/types/MockState.d.ts.map +1 -0
- package/dist/runtime/types/MockState.js +43 -0
- package/dist/runtime/types/MockState.js.map +1 -0
- package/dist/types/agent.d.ts +76 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +8 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/did.d.ts +192 -0
- package/dist/types/did.d.ts.map +1 -0
- package/dist/types/did.js +38 -0
- package/dist/types/did.js.map +1 -0
- package/dist/types/eip712.d.ts +34 -0
- package/dist/types/eip712.d.ts.map +1 -1
- package/dist/types/eip712.js +31 -5
- package/dist/types/eip712.js.map +1 -1
- package/dist/types/escrow.d.ts +17 -10
- package/dist/types/escrow.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/message.d.ts +32 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +4 -0
- package/dist/types/message.js.map +1 -1
- package/dist/types/state.d.ts +28 -0
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/state.js +37 -6
- package/dist/types/state.js.map +1 -1
- package/dist/types/transaction.d.ts +17 -0
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +125 -0
- package/dist/utils/ErrorRecoveryGuide.d.ts.map +1 -0
- package/dist/utils/ErrorRecoveryGuide.js +579 -0
- package/dist/utils/ErrorRecoveryGuide.js.map +1 -0
- package/dist/utils/Helpers.d.ts +453 -0
- package/dist/utils/Helpers.d.ts.map +1 -0
- package/dist/utils/Helpers.js +623 -0
- package/dist/utils/Helpers.js.map +1 -0
- package/dist/utils/IPFSClient.d.ts +113 -0
- package/dist/utils/IPFSClient.d.ts.map +1 -1
- package/dist/utils/IPFSClient.js +128 -7
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/Logger.d.ts +195 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +382 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/NonceManager.d.ts +234 -1
- package/dist/utils/NonceManager.d.ts.map +1 -1
- package/dist/utils/NonceManager.js +372 -7
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/RateLimiter.d.ts +253 -0
- package/dist/utils/RateLimiter.d.ts.map +1 -0
- package/dist/utils/RateLimiter.js +424 -0
- package/dist/utils/RateLimiter.js.map +1 -0
- package/dist/utils/ReceivedNonceTracker.d.ts +175 -0
- package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
- package/dist/utils/ReceivedNonceTracker.js +261 -5
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/SDKLifecycle.d.ts +156 -0
- package/dist/utils/SDKLifecycle.d.ts.map +1 -0
- package/dist/utils/SDKLifecycle.js +347 -0
- package/dist/utils/SDKLifecycle.js.map +1 -0
- package/dist/utils/SecureNonce.d.ts +57 -0
- package/dist/utils/SecureNonce.d.ts.map +1 -0
- package/dist/utils/SecureNonce.js +80 -0
- package/dist/utils/SecureNonce.js.map +1 -0
- package/dist/utils/Semaphore.d.ts +123 -0
- package/dist/utils/Semaphore.d.ts.map +1 -0
- package/dist/utils/Semaphore.js +247 -0
- package/dist/utils/Semaphore.js.map +1 -0
- package/dist/utils/UsedAttestationTracker.d.ts +167 -0
- package/dist/utils/UsedAttestationTracker.d.ts.map +1 -0
- package/dist/utils/UsedAttestationTracker.js +309 -0
- package/dist/utils/UsedAttestationTracker.js.map +1 -0
- package/dist/utils/canonicalJson.d.ts +22 -0
- package/dist/utils/canonicalJson.d.ts.map +1 -1
- package/dist/utils/canonicalJson.js +26 -3
- package/dist/utils/canonicalJson.js.map +1 -1
- package/dist/utils/computeTypeHash.d.ts +14 -0
- package/dist/utils/computeTypeHash.d.ts.map +1 -1
- package/dist/utils/computeTypeHash.js +19 -2
- package/dist/utils/computeTypeHash.js.map +1 -1
- package/dist/utils/fsSafe.d.ts +14 -0
- package/dist/utils/fsSafe.d.ts.map +1 -0
- package/dist/utils/fsSafe.js +89 -0
- package/dist/utils/fsSafe.js.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +51 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/security.d.ts +147 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +391 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/validation.d.ts +40 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +184 -7
- package/dist/utils/validation.js.map +1 -1
- package/package.json +54 -37
- package/src/ACTPClient.ts +692 -178
- package/src/abi/AgentRegistry.json +782 -0
- package/src/abi/EscrowVault.json +106 -38
- package/src/abi/IdentityRegistry.json +316 -0
- package/src/adapters/BaseAdapter.ts +473 -0
- package/src/adapters/BeginnerAdapter.ts +232 -0
- package/src/adapters/IntermediateAdapter.ts +316 -0
- package/src/adapters/index.ts +25 -0
- package/src/builders/DeliveryProofBuilder.ts +3 -2
- package/src/cli/commands/balance.ts +110 -0
- package/src/cli/commands/batch.ts +487 -0
- package/src/cli/commands/config.ts +231 -0
- package/src/cli/commands/init.ts +161 -0
- package/src/cli/commands/mint.ts +116 -0
- package/src/cli/commands/pay.ts +113 -0
- package/src/cli/commands/simulate.ts +345 -0
- package/src/cli/commands/time.ts +303 -0
- package/src/cli/commands/tx.ts +448 -0
- package/src/cli/commands/watch.ts +211 -0
- package/src/cli/index.ts +116 -0
- package/src/cli/utils/client.ts +249 -0
- package/src/cli/utils/config.ts +282 -0
- package/src/cli/utils/output.ts +465 -0
- package/src/config/networks.ts +32 -9
- package/src/errors/index.ts +298 -1
- package/src/index.ts +207 -71
- package/src/level0/Provider.ts +117 -0
- package/src/level0/ServiceDirectory.ts +131 -0
- package/src/level0/index.ts +10 -0
- package/src/level0/provide.ts +131 -0
- package/src/level0/request.ts +494 -0
- package/src/level1/Agent.ts +1432 -0
- package/src/level1/index.ts +10 -0
- package/src/level1/pricing/PriceCalculator.ts +255 -0
- package/src/level1/pricing/PricingStrategy.ts +198 -0
- package/src/level1/types/Job.ts +179 -0
- package/src/level1/types/Options.ts +291 -0
- package/src/level1/types/index.ts +8 -0
- package/src/protocol/ACTPKernel.ts +175 -23
- package/src/protocol/AgentRegistry.ts +559 -0
- package/src/protocol/DIDManager.ts +629 -0
- package/src/protocol/DIDResolver.ts +554 -0
- package/src/protocol/EASHelper.ts +230 -46
- package/src/protocol/EscrowVault.ts +68 -50
- package/src/protocol/EventMonitor.ts +44 -15
- package/src/protocol/MessageSigner.ts +193 -13
- package/src/protocol/ProofGenerator.ts +223 -4
- package/src/runtime/BlockchainRuntime.ts +993 -0
- package/src/runtime/IACTPRuntime.ts +284 -0
- package/src/runtime/MockRuntime.ts +1244 -0
- package/src/runtime/MockStateManager.ts +576 -0
- package/src/runtime/index.ts +25 -0
- package/src/runtime/types/MockState.ts +227 -0
- package/src/types/agent.ts +79 -0
- package/src/types/did.ts +223 -0
- package/src/types/escrow.ts +12 -11
- package/src/types/index.ts +5 -1
- package/src/types/state.ts +12 -3
- package/src/types/transaction.ts +4 -1
- package/src/utils/ErrorRecoveryGuide.ts +675 -0
- package/src/utils/Helpers.ts +688 -0
- package/src/utils/IPFSClient.ts +122 -5
- package/src/utils/Logger.ts +484 -0
- package/src/utils/NonceManager.ts +305 -8
- package/src/utils/RateLimiter.ts +534 -0
- package/src/utils/ReceivedNonceTracker.ts +170 -0
- package/src/utils/SDKLifecycle.ts +416 -0
- package/src/utils/SecureNonce.ts +78 -0
- package/src/utils/Semaphore.ts +276 -0
- package/src/utils/UsedAttestationTracker.ts +387 -0
- package/src/utils/fsSafe.ts +75 -0
- package/src/utils/index.ts +80 -0
- package/src/utils/security.ts +418 -0
- package/src/utils/validation.ts +164 -0
- package/src/__tests__/ProofGenerator.test.ts +0 -124
- package/src/__tests__/QuoteBuilder.test.ts +0 -516
- package/src/__tests__/StateMachine.test.ts +0 -82
- package/src/__tests__/builders/DeliveryProofBuilder.test.ts +0 -581
- package/src/__tests__/integration/ACTPClient.test.ts +0 -263
- package/src/__tests__/integration.test.ts +0 -289
- package/src/__tests__/protocol/EASHelper.test.ts +0 -472
- package/src/__tests__/protocol/EventMonitor.test.ts +0 -382
- package/src/__tests__/security/ACTPKernel.security.test.ts +0 -1167
- package/src/__tests__/security/EscrowVault.security.test.ts +0 -570
- package/src/__tests__/security/MessageSigner.security.test.ts +0 -286
- package/src/__tests__/security/NonceReplay.security.test.ts +0 -501
- package/src/__tests__/security/validation.security.test.ts +0 -376
- package/src/__tests__/utils/IPFSClient.test.ts +0 -262
- package/src/__tests__/utils/NonceManager.test.ts +0 -205
- package/src/__tests__/utils/canonicalJson.test.ts +0 -153
|
@@ -1,17 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPFS Client Implementation
|
|
3
|
+
* Wrapper around kubo-rpc-client (formerly ipfs-http-client) for AIP-4 delivery proof uploads
|
|
4
|
+
*/
|
|
5
|
+
/// <reference types="node" />
|
|
6
|
+
/**
|
|
7
|
+
* IPFS Client Interface (from DeliveryProofBuilder)
|
|
8
|
+
*/
|
|
1
9
|
export interface IPFSClient {
|
|
10
|
+
/**
|
|
11
|
+
* Upload data to IPFS
|
|
12
|
+
* @param data - JSON string or buffer
|
|
13
|
+
* @returns CIDv1 string (base32, e.g., "bafybeig...")
|
|
14
|
+
*/
|
|
2
15
|
add(data: string | Buffer): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Pin content to prevent garbage collection
|
|
18
|
+
* @param cid - IPFS CID
|
|
19
|
+
*/
|
|
3
20
|
pin(cid: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Retrieve content from IPFS
|
|
23
|
+
* @param cid - IPFS CID
|
|
24
|
+
* @returns Content as string
|
|
25
|
+
*/
|
|
4
26
|
get(cid: string): Promise<string>;
|
|
5
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* IPFS Client Configuration
|
|
30
|
+
*/
|
|
6
31
|
export interface IPFSClientConfig {
|
|
32
|
+
/**
|
|
33
|
+
* IPFS HTTP API endpoint
|
|
34
|
+
* Default: http://localhost:5001 (local IPFS daemon)
|
|
35
|
+
* Production: https://ipfs.infura.io:5001/api/v0 (Infura)
|
|
36
|
+
*/
|
|
7
37
|
url?: string;
|
|
38
|
+
/**
|
|
39
|
+
* API authentication (for Infura, Pinata, etc.)
|
|
40
|
+
*/
|
|
8
41
|
auth?: {
|
|
9
42
|
username: string;
|
|
10
43
|
password: string;
|
|
11
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* HTTP headers (for API keys)
|
|
47
|
+
*/
|
|
12
48
|
headers?: Record<string, string>;
|
|
49
|
+
/**
|
|
50
|
+
* Request timeout (ms)
|
|
51
|
+
* Default: 60000 (60 seconds)
|
|
52
|
+
*/
|
|
13
53
|
timeout?: number;
|
|
54
|
+
/**
|
|
55
|
+
* SECURITY FIX (MEDIUM-3): Maximum content size in bytes
|
|
56
|
+
* Default: 50MB (50 * 1024 * 1024)
|
|
57
|
+
*/
|
|
58
|
+
maxSize?: number;
|
|
59
|
+
/**
|
|
60
|
+
* SECURITY FIX (MEDIUM-3): Allowed URL protocols
|
|
61
|
+
* Default: ['http:', 'https:'] (http for localhost, https for remote)
|
|
62
|
+
*/
|
|
63
|
+
allowedProtocols?: string[];
|
|
64
|
+
/**
|
|
65
|
+
* SECURITY FIX (MEDIUM-3): Allow localhost URLs
|
|
66
|
+
* Default: true (required for local IPFS daemon)
|
|
67
|
+
*/
|
|
68
|
+
allowLocalhost?: boolean;
|
|
14
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Default IPFS configurations
|
|
72
|
+
*/
|
|
15
73
|
export declare const IPFS_CONFIGS: {
|
|
16
74
|
local: {
|
|
17
75
|
url: string;
|
|
@@ -23,15 +81,70 @@ export declare const IPFS_CONFIGS: {
|
|
|
23
81
|
url: string;
|
|
24
82
|
};
|
|
25
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* IPFS HTTP Client Implementation
|
|
86
|
+
* Uses ipfs-http-client library
|
|
87
|
+
*
|
|
88
|
+
* SECURITY FIX (MEDIUM-3): Now includes URL and size validation
|
|
89
|
+
*/
|
|
26
90
|
export declare class IPFSHTTPClientImpl implements IPFSClient {
|
|
27
91
|
private client;
|
|
28
92
|
private config;
|
|
93
|
+
private static readonly DEFAULT_MAX_SIZE;
|
|
94
|
+
private static readonly DEFAULT_ALLOWED_PROTOCOLS;
|
|
95
|
+
private static readonly BLOCKED_HOSTS;
|
|
96
|
+
/**
|
|
97
|
+
* Create IPFS client
|
|
98
|
+
*
|
|
99
|
+
* SECURITY FIX (MEDIUM-3): Validates URL and adds size limits
|
|
100
|
+
*
|
|
101
|
+
* @param config - IPFS client configuration
|
|
102
|
+
* @throws Error if URL is invalid or blocked
|
|
103
|
+
*/
|
|
29
104
|
constructor(config?: IPFSClientConfig);
|
|
105
|
+
/**
|
|
106
|
+
* SECURITY FIX (MEDIUM-3): Validate IPFS endpoint URL
|
|
107
|
+
*/
|
|
108
|
+
private validateUrl;
|
|
109
|
+
/**
|
|
110
|
+
* Upload data to IPFS
|
|
111
|
+
*
|
|
112
|
+
* SECURITY FIX (MEDIUM-3): Validates size before upload
|
|
113
|
+
*
|
|
114
|
+
* @param data - JSON string or buffer
|
|
115
|
+
* @returns CIDv1 string (base32)
|
|
116
|
+
* @throws Error if data exceeds maxSize
|
|
117
|
+
*/
|
|
30
118
|
add(data: string | Buffer): Promise<string>;
|
|
119
|
+
/**
|
|
120
|
+
* Pin content to prevent garbage collection
|
|
121
|
+
* @param cid - IPFS CID
|
|
122
|
+
*/
|
|
31
123
|
pin(cid: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Retrieve content from IPFS
|
|
126
|
+
*
|
|
127
|
+
* SECURITY FIX (MEDIUM-3): Validates size during retrieval
|
|
128
|
+
*
|
|
129
|
+
* @param cid - IPFS CID
|
|
130
|
+
* @returns Content as string
|
|
131
|
+
* @throws Error if content exceeds maxSize
|
|
132
|
+
*/
|
|
32
133
|
get(cid: string): Promise<string>;
|
|
134
|
+
/**
|
|
135
|
+
* Check if IPFS daemon is reachable
|
|
136
|
+
* @returns true if connected, false otherwise
|
|
137
|
+
*/
|
|
33
138
|
isOnline(): Promise<boolean>;
|
|
139
|
+
/**
|
|
140
|
+
* Get IPFS node ID
|
|
141
|
+
* @returns IPFS node ID
|
|
142
|
+
*/
|
|
34
143
|
getNodeId(): Promise<string>;
|
|
35
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Create IPFS client with environment-based configuration
|
|
147
|
+
* Checks for IPFS_URL, INFURA_PROJECT_ID, PINATA_API_KEY env vars
|
|
148
|
+
*/
|
|
36
149
|
export declare function createIPFSClient(): IPFSClient;
|
|
37
150
|
//# sourceMappingURL=IPFSClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPFSClient.d.ts","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IPFSClient.d.ts","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAYxB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA6B;IAG3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAuB;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAInC;IAEF;;;;;;;OAOG;gBACS,MAAM,GAAE,gBAAqB;IAoCzC;;OAEG;IACH,OAAO,CAAC,WAAW;IA+CnB;;;;;;;;OAQG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBjD;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC;;;;;;;;OAQG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCvC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IASlC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAQnC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAkC7C"}
|
package/dist/utils/IPFSClient.js
CHANGED
|
@@ -1,30 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IPFS Client Implementation
|
|
4
|
+
* Wrapper around kubo-rpc-client (formerly ipfs-http-client) for AIP-4 delivery proof uploads
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IPFSHTTPClientImpl = exports.IPFS_CONFIGS = void 0;
|
|
4
|
-
exports.createIPFSClient = createIPFSClient;
|
|
7
|
+
exports.createIPFSClient = exports.IPFSHTTPClientImpl = exports.IPFS_CONFIGS = void 0;
|
|
5
8
|
const kubo_rpc_client_1 = require("kubo-rpc-client");
|
|
9
|
+
/**
|
|
10
|
+
* Default IPFS configurations
|
|
11
|
+
*/
|
|
6
12
|
exports.IPFS_CONFIGS = {
|
|
7
13
|
local: {
|
|
8
14
|
url: 'http://localhost:5001'
|
|
9
15
|
},
|
|
10
16
|
infura: {
|
|
11
17
|
url: 'https://ipfs.infura.io:5001/api/v0'
|
|
18
|
+
// Auth required: Set INFURA_PROJECT_ID and INFURA_PROJECT_SECRET
|
|
12
19
|
},
|
|
13
20
|
pinata: {
|
|
14
21
|
url: 'https://api.pinata.cloud'
|
|
22
|
+
// Headers required: Set pinata_api_key and pinata_secret_api_key
|
|
15
23
|
}
|
|
16
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* IPFS HTTP Client Implementation
|
|
27
|
+
* Uses ipfs-http-client library
|
|
28
|
+
*
|
|
29
|
+
* SECURITY FIX (MEDIUM-3): Now includes URL and size validation
|
|
30
|
+
*/
|
|
17
31
|
class IPFSHTTPClientImpl {
|
|
32
|
+
/**
|
|
33
|
+
* Create IPFS client
|
|
34
|
+
*
|
|
35
|
+
* SECURITY FIX (MEDIUM-3): Validates URL and adds size limits
|
|
36
|
+
*
|
|
37
|
+
* @param config - IPFS client configuration
|
|
38
|
+
* @throws Error if URL is invalid or blocked
|
|
39
|
+
*/
|
|
18
40
|
constructor(config = {}) {
|
|
41
|
+
const url = config.url || 'http://localhost:5001';
|
|
42
|
+
// SECURITY FIX (MEDIUM-3): Validate URL
|
|
43
|
+
this.validateUrl(url, config.allowLocalhost ?? true, config.allowedProtocols);
|
|
19
44
|
this.config = {
|
|
20
|
-
url
|
|
45
|
+
url,
|
|
21
46
|
timeout: config.timeout || 60000,
|
|
22
|
-
|
|
47
|
+
maxSize: config.maxSize || IPFSHTTPClientImpl.DEFAULT_MAX_SIZE,
|
|
48
|
+
allowedProtocols: config.allowedProtocols || IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS,
|
|
49
|
+
allowLocalhost: config.allowLocalhost ?? true,
|
|
50
|
+
auth: config.auth,
|
|
51
|
+
headers: config.headers,
|
|
23
52
|
};
|
|
24
53
|
const options = {
|
|
25
54
|
url: this.config.url,
|
|
26
55
|
timeout: this.config.timeout
|
|
27
56
|
};
|
|
57
|
+
// Add authentication if provided
|
|
28
58
|
if (this.config.auth) {
|
|
29
59
|
options.headers = {
|
|
30
60
|
...this.config.headers,
|
|
@@ -36,20 +66,70 @@ class IPFSHTTPClientImpl {
|
|
|
36
66
|
}
|
|
37
67
|
this.client = (0, kubo_rpc_client_1.create)(options);
|
|
38
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* SECURITY FIX (MEDIUM-3): Validate IPFS endpoint URL
|
|
71
|
+
*/
|
|
72
|
+
validateUrl(url, allowLocalhost, allowedProtocols) {
|
|
73
|
+
let parsed;
|
|
74
|
+
try {
|
|
75
|
+
parsed = new URL(url);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
throw new Error(`Invalid IPFS endpoint URL: ${url}`);
|
|
79
|
+
}
|
|
80
|
+
const protocols = allowedProtocols || IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS;
|
|
81
|
+
if (!protocols.includes(parsed.protocol)) {
|
|
82
|
+
throw new Error(`IPFS endpoint protocol "${parsed.protocol}" not allowed. ` +
|
|
83
|
+
`Allowed protocols: ${protocols.join(', ')}`);
|
|
84
|
+
}
|
|
85
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
86
|
+
// Check blocked hosts (cloud metadata endpoints)
|
|
87
|
+
if (IPFSHTTPClientImpl.BLOCKED_HOSTS.includes(hostname)) {
|
|
88
|
+
throw new Error(`IPFS endpoint hostname "${hostname}" is blocked for security reasons.`);
|
|
89
|
+
}
|
|
90
|
+
// Check localhost
|
|
91
|
+
const isLocalhost = ['localhost', '127.0.0.1', '0.0.0.0', '[::1]'].includes(hostname);
|
|
92
|
+
if (isLocalhost && !allowLocalhost) {
|
|
93
|
+
throw new Error(`Localhost IPFS endpoints are disabled. Set allowLocalhost: true to enable.`);
|
|
94
|
+
}
|
|
95
|
+
// For remote hosts, require HTTPS
|
|
96
|
+
if (!isLocalhost && parsed.protocol !== 'https:') {
|
|
97
|
+
console.warn(`[SECURITY WARNING] Using non-HTTPS protocol "${parsed.protocol}" for remote IPFS endpoint "${hostname}". ` +
|
|
98
|
+
`This may expose data in transit. Consider using HTTPS.`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Upload data to IPFS
|
|
103
|
+
*
|
|
104
|
+
* SECURITY FIX (MEDIUM-3): Validates size before upload
|
|
105
|
+
*
|
|
106
|
+
* @param data - JSON string or buffer
|
|
107
|
+
* @returns CIDv1 string (base32)
|
|
108
|
+
* @throws Error if data exceeds maxSize
|
|
109
|
+
*/
|
|
39
110
|
async add(data) {
|
|
40
111
|
try {
|
|
41
112
|
const content = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
|
|
113
|
+
// SECURITY FIX (MEDIUM-3): Check size before upload
|
|
114
|
+
if (content.length > this.config.maxSize) {
|
|
115
|
+
throw new Error(`Content too large: ${content.length} bytes exceeds maximum of ${this.config.maxSize} bytes`);
|
|
116
|
+
}
|
|
42
117
|
const result = await this.client.add(content, {
|
|
43
|
-
cidVersion: 1,
|
|
118
|
+
cidVersion: 1, // Use CIDv1 (base32)
|
|
44
119
|
hashAlg: 'sha2-256',
|
|
45
|
-
pin: true
|
|
120
|
+
pin: true // Auto-pin on upload
|
|
46
121
|
});
|
|
122
|
+
// Convert CID to base32 string (e.g., "bafybeig...")
|
|
47
123
|
return result.cid.toString();
|
|
48
124
|
}
|
|
49
125
|
catch (error) {
|
|
50
126
|
throw new Error(`IPFS upload failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
127
|
}
|
|
52
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Pin content to prevent garbage collection
|
|
131
|
+
* @param cid - IPFS CID
|
|
132
|
+
*/
|
|
53
133
|
async pin(cid) {
|
|
54
134
|
try {
|
|
55
135
|
await this.client.pin.add(cid);
|
|
@@ -58,13 +138,29 @@ class IPFSHTTPClientImpl {
|
|
|
58
138
|
throw new Error(`IPFS pin failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
59
139
|
}
|
|
60
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Retrieve content from IPFS
|
|
143
|
+
*
|
|
144
|
+
* SECURITY FIX (MEDIUM-3): Validates size during retrieval
|
|
145
|
+
*
|
|
146
|
+
* @param cid - IPFS CID
|
|
147
|
+
* @returns Content as string
|
|
148
|
+
* @throws Error if content exceeds maxSize
|
|
149
|
+
*/
|
|
61
150
|
async get(cid) {
|
|
62
151
|
try {
|
|
63
152
|
const chunks = [];
|
|
153
|
+
let totalLength = 0;
|
|
64
154
|
for await (const chunk of this.client.cat(cid)) {
|
|
155
|
+
totalLength += chunk.length;
|
|
156
|
+
// SECURITY FIX (MEDIUM-3): Check size during streaming to prevent DoS
|
|
157
|
+
if (totalLength > this.config.maxSize) {
|
|
158
|
+
throw new Error(`Content too large: ${totalLength}+ bytes exceeds maximum of ${this.config.maxSize} bytes. ` +
|
|
159
|
+
`Consider increasing maxSize in IPFSClientConfig if this is expected.`);
|
|
160
|
+
}
|
|
65
161
|
chunks.push(chunk);
|
|
66
162
|
}
|
|
67
|
-
|
|
163
|
+
// Concatenate all chunks
|
|
68
164
|
const result = new Uint8Array(totalLength);
|
|
69
165
|
let offset = 0;
|
|
70
166
|
for (const chunk of chunks) {
|
|
@@ -77,6 +173,10 @@ class IPFSHTTPClientImpl {
|
|
|
77
173
|
throw new Error(`IPFS retrieval failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
78
174
|
}
|
|
79
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if IPFS daemon is reachable
|
|
178
|
+
* @returns true if connected, false otherwise
|
|
179
|
+
*/
|
|
80
180
|
async isOnline() {
|
|
81
181
|
try {
|
|
82
182
|
await this.client.id();
|
|
@@ -86,6 +186,10 @@ class IPFSHTTPClientImpl {
|
|
|
86
186
|
return false;
|
|
87
187
|
}
|
|
88
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Get IPFS node ID
|
|
191
|
+
* @returns IPFS node ID
|
|
192
|
+
*/
|
|
89
193
|
async getNodeId() {
|
|
90
194
|
try {
|
|
91
195
|
const id = await this.client.id();
|
|
@@ -97,7 +201,20 @@ class IPFSHTTPClientImpl {
|
|
|
97
201
|
}
|
|
98
202
|
}
|
|
99
203
|
exports.IPFSHTTPClientImpl = IPFSHTTPClientImpl;
|
|
204
|
+
// SECURITY FIX (MEDIUM-3): Default security settings
|
|
205
|
+
IPFSHTTPClientImpl.DEFAULT_MAX_SIZE = 50 * 1024 * 1024; // 50MB
|
|
206
|
+
IPFSHTTPClientImpl.DEFAULT_ALLOWED_PROTOCOLS = ['http:', 'https:'];
|
|
207
|
+
IPFSHTTPClientImpl.BLOCKED_HOSTS = [
|
|
208
|
+
'metadata.google.internal',
|
|
209
|
+
'169.254.169.254',
|
|
210
|
+
'metadata.aws.internal',
|
|
211
|
+
];
|
|
212
|
+
/**
|
|
213
|
+
* Create IPFS client with environment-based configuration
|
|
214
|
+
* Checks for IPFS_URL, INFURA_PROJECT_ID, PINATA_API_KEY env vars
|
|
215
|
+
*/
|
|
100
216
|
function createIPFSClient() {
|
|
217
|
+
// Check for Infura credentials
|
|
101
218
|
if (process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET) {
|
|
102
219
|
return new IPFSHTTPClientImpl({
|
|
103
220
|
url: 'https://ipfs.infura.io:5001/api/v0',
|
|
@@ -107,6 +224,7 @@ function createIPFSClient() {
|
|
|
107
224
|
}
|
|
108
225
|
});
|
|
109
226
|
}
|
|
227
|
+
// Check for Pinata credentials
|
|
110
228
|
if (process.env.PINATA_API_KEY && process.env.PINATA_SECRET_API_KEY) {
|
|
111
229
|
return new IPFSHTTPClientImpl({
|
|
112
230
|
url: 'https://api.pinata.cloud',
|
|
@@ -116,13 +234,16 @@ function createIPFSClient() {
|
|
|
116
234
|
}
|
|
117
235
|
});
|
|
118
236
|
}
|
|
237
|
+
// Check for custom IPFS URL
|
|
119
238
|
if (process.env.IPFS_URL) {
|
|
120
239
|
return new IPFSHTTPClientImpl({
|
|
121
240
|
url: process.env.IPFS_URL
|
|
122
241
|
});
|
|
123
242
|
}
|
|
243
|
+
// Default to local IPFS daemon
|
|
124
244
|
return new IPFSHTTPClientImpl({
|
|
125
245
|
url: 'http://localhost:5001'
|
|
126
246
|
});
|
|
127
247
|
}
|
|
248
|
+
exports.createIPFSClient = createIPFSClient;
|
|
128
249
|
//# sourceMappingURL=IPFSClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPFSClient.js","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IPFSClient.js","sourceRoot":"","sources":["../../src/utils/IPFSClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger - Structured Logging Framework for ACTP SDK
|
|
3
|
+
*
|
|
4
|
+
* SECURITY FIX (M-6): Comprehensive logging with:
|
|
5
|
+
* - Log levels (debug, info, warn, error)
|
|
6
|
+
* - Structured metadata
|
|
7
|
+
* - Sensitive data filtering
|
|
8
|
+
* - Configurable output
|
|
9
|
+
*
|
|
10
|
+
* @module utils/Logger
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Log levels in order of severity
|
|
14
|
+
*/
|
|
15
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
16
|
+
/**
|
|
17
|
+
* Log entry structure
|
|
18
|
+
*/
|
|
19
|
+
export interface LogEntry {
|
|
20
|
+
/** Timestamp */
|
|
21
|
+
timestamp: string;
|
|
22
|
+
/** Log level */
|
|
23
|
+
level: LogLevel;
|
|
24
|
+
/** Log message */
|
|
25
|
+
message: string;
|
|
26
|
+
/** Source module/component */
|
|
27
|
+
source?: string;
|
|
28
|
+
/** Additional metadata */
|
|
29
|
+
metadata?: Record<string, unknown>;
|
|
30
|
+
/** Error details (if applicable) */
|
|
31
|
+
error?: {
|
|
32
|
+
name: string;
|
|
33
|
+
message: string;
|
|
34
|
+
stack?: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Logger configuration
|
|
39
|
+
*/
|
|
40
|
+
export interface LoggerConfig {
|
|
41
|
+
/** Minimum log level to output */
|
|
42
|
+
minLevel?: LogLevel;
|
|
43
|
+
/** Source identifier for this logger */
|
|
44
|
+
source?: string;
|
|
45
|
+
/** Whether to include timestamps */
|
|
46
|
+
timestamps?: boolean;
|
|
47
|
+
/** Whether to filter sensitive data */
|
|
48
|
+
filterSensitive?: boolean;
|
|
49
|
+
/** Custom output handler */
|
|
50
|
+
output?: (entry: LogEntry) => void;
|
|
51
|
+
/** Whether logging is enabled */
|
|
52
|
+
enabled?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Structured Logger for ACTP SDK
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const logger = new Logger({ source: 'BlockchainRuntime', minLevel: 'info' });
|
|
60
|
+
*
|
|
61
|
+
* logger.info('Transaction created', { txId: '0x...' });
|
|
62
|
+
* logger.error('Transaction failed', { txId: '0x...' }, error);
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class Logger {
|
|
66
|
+
private config;
|
|
67
|
+
constructor(config?: LoggerConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Create child logger with inherited config
|
|
70
|
+
*/
|
|
71
|
+
child(source: string): Logger;
|
|
72
|
+
/**
|
|
73
|
+
* Log debug message
|
|
74
|
+
*/
|
|
75
|
+
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
76
|
+
/**
|
|
77
|
+
* Log info message
|
|
78
|
+
*/
|
|
79
|
+
info(message: string, metadata?: Record<string, unknown>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Log warning message
|
|
82
|
+
*/
|
|
83
|
+
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Log error message
|
|
86
|
+
*/
|
|
87
|
+
error(message: string, metadata?: Record<string, unknown>, error?: Error): void;
|
|
88
|
+
/**
|
|
89
|
+
* Core logging method
|
|
90
|
+
*/
|
|
91
|
+
private log;
|
|
92
|
+
/**
|
|
93
|
+
* Filter sensitive data from metadata
|
|
94
|
+
*
|
|
95
|
+
* SECURITY FIX (NEW-HIGH-3): Uses separate pattern arrays for keys and values.
|
|
96
|
+
* Key patterns have no /g flag (used with .test()).
|
|
97
|
+
* Value patterns are strings converted to fresh RegExp instances per call.
|
|
98
|
+
*/
|
|
99
|
+
private filterSensitiveData;
|
|
100
|
+
/**
|
|
101
|
+
* Redact sensitive patterns from a string value
|
|
102
|
+
*
|
|
103
|
+
* SECURITY FIX (NEW-HIGH-3): Creates fresh RegExp instances with /gi flag
|
|
104
|
+
* for each call, avoiding lastIndex state pollution.
|
|
105
|
+
*/
|
|
106
|
+
private redactSensitiveValues;
|
|
107
|
+
/**
|
|
108
|
+
* Default console output handler
|
|
109
|
+
*/
|
|
110
|
+
private defaultOutput;
|
|
111
|
+
/**
|
|
112
|
+
* Enable logging
|
|
113
|
+
*/
|
|
114
|
+
enable(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Disable logging
|
|
117
|
+
*/
|
|
118
|
+
disable(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Set minimum log level
|
|
121
|
+
*/
|
|
122
|
+
setLevel(level: LogLevel): void;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Global SDK logger instance
|
|
126
|
+
*/
|
|
127
|
+
export declare const sdkLogger: Logger;
|
|
128
|
+
/**
|
|
129
|
+
* Metrics/monitoring hook interface
|
|
130
|
+
*
|
|
131
|
+
* SECURITY FIX (M-7): Metrics and monitoring hooks
|
|
132
|
+
*/
|
|
133
|
+
export interface MetricsHook {
|
|
134
|
+
/** Called when a transaction is created */
|
|
135
|
+
onTransactionCreated?: (txId: string, metadata: Record<string, unknown>) => void;
|
|
136
|
+
/** Called when escrow is linked */
|
|
137
|
+
onEscrowLinked?: (txId: string, escrowId: string, amount: string) => void;
|
|
138
|
+
/** Called when state transitions */
|
|
139
|
+
onStateTransition?: (txId: string, fromState: string, toState: string) => void;
|
|
140
|
+
/** Called when escrow is released */
|
|
141
|
+
onEscrowReleased?: (escrowId: string, amount: string) => void;
|
|
142
|
+
/** Called on errors */
|
|
143
|
+
onError?: (error: Error, context: Record<string, unknown>) => void;
|
|
144
|
+
/** Called for performance metrics */
|
|
145
|
+
onPerformance?: (operation: string, durationMs: number, metadata?: Record<string, unknown>) => void;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Metrics collector for SDK operations
|
|
149
|
+
*/
|
|
150
|
+
export declare class MetricsCollector {
|
|
151
|
+
private hooks;
|
|
152
|
+
private readonly logger;
|
|
153
|
+
constructor(logger?: Logger);
|
|
154
|
+
/**
|
|
155
|
+
* Register a metrics hook
|
|
156
|
+
*/
|
|
157
|
+
addHook(hook: MetricsHook): void;
|
|
158
|
+
/**
|
|
159
|
+
* Remove a metrics hook
|
|
160
|
+
*/
|
|
161
|
+
removeHook(hook: MetricsHook): void;
|
|
162
|
+
/**
|
|
163
|
+
* Emit transaction created event
|
|
164
|
+
*/
|
|
165
|
+
transactionCreated(txId: string, metadata: Record<string, unknown>): void;
|
|
166
|
+
/**
|
|
167
|
+
* Emit escrow linked event
|
|
168
|
+
*/
|
|
169
|
+
escrowLinked(txId: string, escrowId: string, amount: string): void;
|
|
170
|
+
/**
|
|
171
|
+
* Emit state transition event
|
|
172
|
+
*/
|
|
173
|
+
stateTransition(txId: string, fromState: string, toState: string): void;
|
|
174
|
+
/**
|
|
175
|
+
* Emit escrow released event
|
|
176
|
+
*/
|
|
177
|
+
escrowReleased(escrowId: string, amount: string): void;
|
|
178
|
+
/**
|
|
179
|
+
* Emit error event
|
|
180
|
+
*/
|
|
181
|
+
recordError(error: Error, context: Record<string, unknown>): void;
|
|
182
|
+
/**
|
|
183
|
+
* Emit performance metric
|
|
184
|
+
*/
|
|
185
|
+
recordPerformance(operation: string, durationMs: number, metadata?: Record<string, unknown>): void;
|
|
186
|
+
/**
|
|
187
|
+
* Helper to time an operation
|
|
188
|
+
*/
|
|
189
|
+
timeOperation<T>(operation: string, fn: () => Promise<T>, metadata?: Record<string, unknown>): Promise<T>;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Global metrics collector instance
|
|
193
|
+
*/
|
|
194
|
+
export declare const sdkMetrics: MetricsCollector;
|
|
195
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"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"}
|