@agirails/sdk 2.0.0 → 2.0.1-beta
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/README.md +108 -116
- package/dist/ACTPClient.d.ts +33 -456
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +93 -477
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/EscrowVault.json +38 -106
- package/dist/builders/DeliveryProofBuilder.d.ts +1 -60
- package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
- package/dist/builders/DeliveryProofBuilder.js +5 -81
- package/dist/builders/DeliveryProofBuilder.js.map +1 -1
- package/dist/builders/QuoteBuilder.d.ts +0 -101
- package/dist/builders/QuoteBuilder.d.ts.map +1 -1
- package/dist/builders/QuoteBuilder.js +3 -120
- package/dist/builders/QuoteBuilder.js.map +1 -1
- package/dist/builders/index.d.ts +0 -4
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +0 -4
- package/dist/builders/index.js.map +1 -1
- package/dist/config/networks.d.ts +0 -28
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +12 -60
- package/dist/config/networks.js.map +1 -1
- package/dist/errors/index.d.ts +2 -165
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -260
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +13 -61
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -141
- package/dist/index.js.map +1 -1
- package/dist/protocol/ACTPKernel.d.ts +2 -229
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +33 -367
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/EASHelper.d.ts +2 -57
- package/dist/protocol/EASHelper.d.ts.map +1 -1
- package/dist/protocol/EASHelper.js +37 -230
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +2 -93
- package/dist/protocol/EscrowVault.d.ts.map +1 -1
- package/dist/protocol/EscrowVault.js +33 -122
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +1 -45
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +8 -64
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +2 -116
- package/dist/protocol/MessageSigner.d.ts.map +1 -1
- package/dist/protocol/MessageSigner.js +9 -215
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +0 -93
- package/dist/protocol/ProofGenerator.d.ts.map +1 -1
- package/dist/protocol/ProofGenerator.js +9 -194
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/protocol/QuoteBuilder.d.ts +0 -8
- package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
- package/dist/protocol/QuoteBuilder.js +0 -8
- package/dist/protocol/QuoteBuilder.js.map +1 -1
- package/dist/types/eip712.d.ts +0 -34
- package/dist/types/eip712.d.ts.map +1 -1
- package/dist/types/eip712.js +5 -31
- package/dist/types/eip712.js.map +1 -1
- package/dist/types/escrow.d.ts +10 -17
- package/dist/types/escrow.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +1 -1
- package/dist/types/message.d.ts +0 -32
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +0 -4
- package/dist/types/message.js.map +1 -1
- package/dist/types/state.d.ts +0 -28
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/state.js +6 -37
- package/dist/types/state.js.map +1 -1
- package/dist/types/transaction.d.ts +0 -17
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/utils/IPFSClient.d.ts +0 -113
- package/dist/utils/IPFSClient.d.ts.map +1 -1
- package/dist/utils/IPFSClient.js +7 -128
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/NonceManager.d.ts +1 -234
- package/dist/utils/NonceManager.d.ts.map +1 -1
- package/dist/utils/NonceManager.js +7 -372
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/ReceivedNonceTracker.d.ts +0 -175
- package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
- package/dist/utils/ReceivedNonceTracker.js +5 -261
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/canonicalJson.d.ts +0 -22
- package/dist/utils/canonicalJson.d.ts.map +1 -1
- package/dist/utils/canonicalJson.js +3 -26
- package/dist/utils/canonicalJson.js.map +1 -1
- package/dist/utils/computeTypeHash.d.ts +0 -14
- package/dist/utils/computeTypeHash.d.ts.map +1 -1
- package/dist/utils/computeTypeHash.js +2 -19
- package/dist/utils/computeTypeHash.js.map +1 -1
- package/dist/utils/validation.d.ts +0 -40
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +7 -184
- package/dist/utils/validation.js.map +1 -1
- package/package.json +37 -54
- package/src/ACTPClient.ts +178 -692
- package/src/__tests__/ProofGenerator.test.ts +124 -0
- package/src/__tests__/QuoteBuilder.test.ts +516 -0
- package/src/__tests__/StateMachine.test.ts +82 -0
- package/src/__tests__/builders/DeliveryProofBuilder.test.ts +581 -0
- package/src/__tests__/integration/ACTPClient.test.ts +263 -0
- package/src/__tests__/integration.test.ts +289 -0
- package/src/__tests__/protocol/EASHelper.test.ts +472 -0
- package/src/__tests__/protocol/EventMonitor.test.ts +382 -0
- package/src/__tests__/security/ACTPKernel.security.test.ts +1167 -0
- package/src/__tests__/security/EscrowVault.security.test.ts +570 -0
- package/src/__tests__/security/MessageSigner.security.test.ts +286 -0
- package/src/__tests__/security/NonceReplay.security.test.ts +501 -0
- package/src/__tests__/security/validation.security.test.ts +376 -0
- package/src/__tests__/utils/IPFSClient.test.ts +262 -0
- package/src/__tests__/utils/NonceManager.test.ts +205 -0
- package/src/__tests__/utils/canonicalJson.test.ts +153 -0
- package/src/abi/EscrowVault.json +38 -106
- package/src/builders/DeliveryProofBuilder.ts +2 -3
- package/src/config/networks.ts +9 -32
- package/src/errors/index.ts +1 -298
- package/src/index.ts +71 -207
- package/src/protocol/ACTPKernel.ts +23 -175
- package/src/protocol/EASHelper.ts +46 -230
- package/src/protocol/EscrowVault.ts +50 -68
- package/src/protocol/EventMonitor.ts +15 -44
- package/src/protocol/MessageSigner.ts +13 -193
- package/src/protocol/ProofGenerator.ts +4 -223
- package/src/types/escrow.ts +11 -12
- package/src/types/index.ts +1 -5
- package/src/types/state.ts +3 -12
- package/src/types/transaction.ts +1 -4
- package/src/utils/IPFSClient.ts +5 -122
- package/src/utils/NonceManager.ts +8 -305
- package/src/utils/ReceivedNonceTracker.ts +0 -170
- package/src/utils/validation.ts +0 -164
- package/LICENSE +0 -190
- package/bin/actp +0 -10
- package/dist/abi/AgentRegistry.json +0 -782
- package/dist/abi/IdentityRegistry.json +0 -316
- package/dist/adapters/BaseAdapter.d.ts +0 -231
- package/dist/adapters/BaseAdapter.d.ts.map +0 -1
- package/dist/adapters/BaseAdapter.js +0 -393
- package/dist/adapters/BaseAdapter.js.map +0 -1
- package/dist/adapters/BeginnerAdapter.d.ts +0 -152
- package/dist/adapters/BeginnerAdapter.d.ts.map +0 -1
- package/dist/adapters/BeginnerAdapter.js +0 -168
- package/dist/adapters/BeginnerAdapter.js.map +0 -1
- package/dist/adapters/IntermediateAdapter.d.ts +0 -211
- package/dist/adapters/IntermediateAdapter.d.ts.map +0 -1
- package/dist/adapters/IntermediateAdapter.js +0 -260
- package/dist/adapters/IntermediateAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -15
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -26
- package/dist/adapters/index.js.map +0 -1
- package/dist/cli/commands/balance.d.ts +0 -13
- package/dist/cli/commands/balance.d.ts.map +0 -1
- package/dist/cli/commands/balance.js +0 -89
- package/dist/cli/commands/balance.js.map +0 -1
- package/dist/cli/commands/batch.d.ts +0 -24
- package/dist/cli/commands/batch.d.ts.map +0 -1
- package/dist/cli/commands/batch.js +0 -424
- package/dist/cli/commands/batch.js.map +0 -1
- package/dist/cli/commands/config.d.ts +0 -13
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -192
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -19
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -143
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/mint.d.ts +0 -13
- package/dist/cli/commands/mint.d.ts.map +0 -1
- package/dist/cli/commands/mint.js +0 -91
- package/dist/cli/commands/mint.js.map +0 -1
- package/dist/cli/commands/pay.d.ts +0 -18
- package/dist/cli/commands/pay.d.ts.map +0 -1
- package/dist/cli/commands/pay.js +0 -87
- package/dist/cli/commands/pay.js.map +0 -1
- package/dist/cli/commands/simulate.d.ts +0 -32
- package/dist/cli/commands/simulate.d.ts.map +0 -1
- package/dist/cli/commands/simulate.js +0 -290
- package/dist/cli/commands/simulate.js.map +0 -1
- package/dist/cli/commands/time.d.ts +0 -29
- package/dist/cli/commands/time.d.ts.map +0 -1
- package/dist/cli/commands/time.js +0 -252
- package/dist/cli/commands/time.js.map +0 -1
- package/dist/cli/commands/tx.d.ts +0 -16
- package/dist/cli/commands/tx.d.ts.map +0 -1
- package/dist/cli/commands/tx.js +0 -379
- package/dist/cli/commands/tx.js.map +0 -1
- package/dist/cli/commands/watch.d.ts +0 -20
- package/dist/cli/commands/watch.d.ts.map +0 -1
- package/dist/cli/commands/watch.js +0 -160
- package/dist/cli/commands/watch.js.map +0 -1
- package/dist/cli/index.d.ts +0 -17
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -104
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/utils/client.d.ts +0 -70
- package/dist/cli/utils/client.d.ts.map +0 -1
- package/dist/cli/utils/client.js +0 -240
- package/dist/cli/utils/client.js.map +0 -1
- package/dist/cli/utils/config.d.ts +0 -91
- package/dist/cli/utils/config.d.ts.map +0 -1
- package/dist/cli/utils/config.js +0 -240
- package/dist/cli/utils/config.js.map +0 -1
- package/dist/cli/utils/output.d.ts +0 -174
- package/dist/cli/utils/output.d.ts.map +0 -1
- package/dist/cli/utils/output.js +0 -380
- package/dist/cli/utils/output.js.map +0 -1
- package/dist/level0/Provider.d.ts +0 -106
- package/dist/level0/Provider.d.ts.map +0 -1
- package/dist/level0/Provider.js +0 -10
- package/dist/level0/Provider.js.map +0 -1
- package/dist/level0/ServiceDirectory.d.ts +0 -74
- package/dist/level0/ServiceDirectory.d.ts.map +0 -1
- package/dist/level0/ServiceDirectory.js +0 -122
- package/dist/level0/ServiceDirectory.js.map +0 -1
- package/dist/level0/index.d.ts +0 -10
- package/dist/level0/index.d.ts.map +0 -1
- package/dist/level0/index.js +0 -15
- package/dist/level0/index.js.map +0 -1
- package/dist/level0/provide.d.ts +0 -51
- package/dist/level0/provide.d.ts.map +0 -1
- package/dist/level0/provide.js +0 -113
- package/dist/level0/provide.js.map +0 -1
- package/dist/level0/request.d.ts +0 -53
- package/dist/level0/request.d.ts.map +0 -1
- package/dist/level0/request.js +0 -462
- package/dist/level0/request.js.map +0 -1
- package/dist/level1/Agent.d.ts +0 -472
- package/dist/level1/Agent.d.ts.map +0 -1
- package/dist/level1/Agent.js +0 -1091
- package/dist/level1/Agent.js.map +0 -1
- package/dist/level1/index.d.ts +0 -10
- package/dist/level1/index.d.ts.map +0 -1
- package/dist/level1/index.js +0 -30
- package/dist/level1/index.js.map +0 -1
- package/dist/level1/pricing/PriceCalculator.d.ts +0 -62
- package/dist/level1/pricing/PriceCalculator.d.ts.map +0 -1
- package/dist/level1/pricing/PriceCalculator.js +0 -237
- package/dist/level1/pricing/PriceCalculator.js.map +0 -1
- package/dist/level1/pricing/PricingStrategy.d.ts +0 -179
- package/dist/level1/pricing/PricingStrategy.d.ts.map +0 -1
- package/dist/level1/pricing/PricingStrategy.js +0 -11
- package/dist/level1/pricing/PricingStrategy.js.map +0 -1
- package/dist/level1/types/Job.d.ts +0 -166
- package/dist/level1/types/Job.d.ts.map +0 -1
- package/dist/level1/types/Job.js +0 -11
- package/dist/level1/types/Job.js.map +0 -1
- package/dist/level1/types/Options.d.ts +0 -258
- package/dist/level1/types/Options.d.ts.map +0 -1
- package/dist/level1/types/Options.js +0 -8
- package/dist/level1/types/Options.js.map +0 -1
- package/dist/level1/types/index.d.ts +0 -8
- package/dist/level1/types/index.d.ts.map +0 -1
- package/dist/level1/types/index.js +0 -8
- package/dist/level1/types/index.js.map +0 -1
- package/dist/protocol/AgentRegistry.d.ts +0 -177
- package/dist/protocol/AgentRegistry.d.ts.map +0 -1
- package/dist/protocol/AgentRegistry.js +0 -449
- package/dist/protocol/AgentRegistry.js.map +0 -1
- package/dist/protocol/DIDManager.d.ts +0 -289
- package/dist/protocol/DIDManager.d.ts.map +0 -1
- package/dist/protocol/DIDManager.js +0 -481
- package/dist/protocol/DIDManager.js.map +0 -1
- package/dist/protocol/DIDResolver.d.ts +0 -236
- package/dist/protocol/DIDResolver.d.ts.map +0 -1
- package/dist/protocol/DIDResolver.js +0 -495
- package/dist/protocol/DIDResolver.js.map +0 -1
- package/dist/runtime/BlockchainRuntime.d.ts +0 -360
- package/dist/runtime/BlockchainRuntime.d.ts.map +0 -1
- package/dist/runtime/BlockchainRuntime.js +0 -767
- package/dist/runtime/BlockchainRuntime.js.map +0 -1
- package/dist/runtime/IACTPRuntime.d.ts +0 -271
- package/dist/runtime/IACTPRuntime.d.ts.map +0 -1
- package/dist/runtime/IACTPRuntime.js +0 -15
- package/dist/runtime/IACTPRuntime.js.map +0 -1
- package/dist/runtime/MockRuntime.d.ts +0 -445
- package/dist/runtime/MockRuntime.d.ts.map +0 -1
- package/dist/runtime/MockRuntime.js +0 -1065
- package/dist/runtime/MockRuntime.js.map +0 -1
- package/dist/runtime/MockStateManager.d.ts +0 -233
- package/dist/runtime/MockStateManager.d.ts.map +0 -1
- package/dist/runtime/MockStateManager.js +0 -533
- package/dist/runtime/MockStateManager.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -14
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -42
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/types/MockState.d.ts +0 -167
- package/dist/runtime/types/MockState.d.ts.map +0 -1
- package/dist/runtime/types/MockState.js +0 -43
- package/dist/runtime/types/MockState.js.map +0 -1
- package/dist/types/agent.d.ts +0 -76
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -8
- package/dist/types/agent.js.map +0 -1
- package/dist/types/did.d.ts +0 -192
- package/dist/types/did.d.ts.map +0 -1
- package/dist/types/did.js +0 -38
- package/dist/types/did.js.map +0 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +0 -125
- package/dist/utils/ErrorRecoveryGuide.d.ts.map +0 -1
- package/dist/utils/ErrorRecoveryGuide.js +0 -579
- package/dist/utils/ErrorRecoveryGuide.js.map +0 -1
- package/dist/utils/Helpers.d.ts +0 -453
- package/dist/utils/Helpers.d.ts.map +0 -1
- package/dist/utils/Helpers.js +0 -623
- package/dist/utils/Helpers.js.map +0 -1
- package/dist/utils/Logger.d.ts +0 -195
- package/dist/utils/Logger.d.ts.map +0 -1
- package/dist/utils/Logger.js +0 -382
- package/dist/utils/Logger.js.map +0 -1
- package/dist/utils/RateLimiter.d.ts +0 -253
- package/dist/utils/RateLimiter.d.ts.map +0 -1
- package/dist/utils/RateLimiter.js +0 -424
- package/dist/utils/RateLimiter.js.map +0 -1
- package/dist/utils/SDKLifecycle.d.ts +0 -156
- package/dist/utils/SDKLifecycle.d.ts.map +0 -1
- package/dist/utils/SDKLifecycle.js +0 -347
- package/dist/utils/SDKLifecycle.js.map +0 -1
- package/dist/utils/SecureNonce.d.ts +0 -57
- package/dist/utils/SecureNonce.d.ts.map +0 -1
- package/dist/utils/SecureNonce.js +0 -80
- package/dist/utils/SecureNonce.js.map +0 -1
- package/dist/utils/Semaphore.d.ts +0 -123
- package/dist/utils/Semaphore.d.ts.map +0 -1
- package/dist/utils/Semaphore.js +0 -247
- package/dist/utils/Semaphore.js.map +0 -1
- package/dist/utils/UsedAttestationTracker.d.ts +0 -167
- package/dist/utils/UsedAttestationTracker.d.ts.map +0 -1
- package/dist/utils/UsedAttestationTracker.js +0 -309
- package/dist/utils/UsedAttestationTracker.js.map +0 -1
- package/dist/utils/fsSafe.d.ts +0 -14
- package/dist/utils/fsSafe.d.ts.map +0 -1
- package/dist/utils/fsSafe.js +0 -89
- package/dist/utils/fsSafe.js.map +0 -1
- package/dist/utils/index.d.ts +0 -15
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -51
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/security.d.ts +0 -147
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/security.js +0 -391
- package/dist/utils/security.js.map +0 -1
- package/src/abi/AgentRegistry.json +0 -782
- package/src/abi/IdentityRegistry.json +0 -316
- package/src/adapters/BaseAdapter.ts +0 -473
- package/src/adapters/BeginnerAdapter.ts +0 -232
- package/src/adapters/IntermediateAdapter.ts +0 -316
- package/src/adapters/index.ts +0 -25
- package/src/cli/commands/balance.ts +0 -110
- package/src/cli/commands/batch.ts +0 -487
- package/src/cli/commands/config.ts +0 -231
- package/src/cli/commands/init.ts +0 -161
- package/src/cli/commands/mint.ts +0 -116
- package/src/cli/commands/pay.ts +0 -113
- package/src/cli/commands/simulate.ts +0 -345
- package/src/cli/commands/time.ts +0 -303
- package/src/cli/commands/tx.ts +0 -448
- package/src/cli/commands/watch.ts +0 -211
- package/src/cli/index.ts +0 -116
- package/src/cli/utils/client.ts +0 -249
- package/src/cli/utils/config.ts +0 -282
- package/src/cli/utils/output.ts +0 -465
- package/src/level0/Provider.ts +0 -117
- package/src/level0/ServiceDirectory.ts +0 -131
- package/src/level0/index.ts +0 -10
- package/src/level0/provide.ts +0 -131
- package/src/level0/request.ts +0 -494
- package/src/level1/Agent.ts +0 -1432
- package/src/level1/index.ts +0 -10
- package/src/level1/pricing/PriceCalculator.ts +0 -255
- package/src/level1/pricing/PricingStrategy.ts +0 -198
- package/src/level1/types/Job.ts +0 -179
- package/src/level1/types/Options.ts +0 -291
- package/src/level1/types/index.ts +0 -8
- package/src/protocol/AgentRegistry.ts +0 -559
- package/src/protocol/DIDManager.ts +0 -629
- package/src/protocol/DIDResolver.ts +0 -554
- package/src/runtime/BlockchainRuntime.ts +0 -993
- package/src/runtime/IACTPRuntime.ts +0 -284
- package/src/runtime/MockRuntime.ts +0 -1244
- package/src/runtime/MockStateManager.ts +0 -576
- package/src/runtime/index.ts +0 -25
- package/src/runtime/types/MockState.ts +0 -227
- package/src/types/agent.ts +0 -79
- package/src/types/did.ts +0 -223
- package/src/utils/ErrorRecoveryGuide.ts +0 -675
- package/src/utils/Helpers.ts +0 -688
- package/src/utils/Logger.ts +0 -484
- package/src/utils/RateLimiter.ts +0 -534
- package/src/utils/SDKLifecycle.ts +0 -416
- package/src/utils/SecureNonce.ts +0 -78
- package/src/utils/Semaphore.ts +0 -276
- package/src/utils/UsedAttestationTracker.ts +0 -387
- package/src/utils/fsSafe.ts +0 -75
- package/src/utils/index.ts +0 -80
- package/src/utils/security.ts +0 -418
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* UsedAttestationTracker - Prevents EAS Attestation Replay Attacks (C-1)
|
|
4
|
-
*
|
|
5
|
-
* Tracks which attestation UIDs have been used for which transaction IDs.
|
|
6
|
-
* This prevents a malicious provider from reusing an attestation from
|
|
7
|
-
* Transaction A to settle Transaction B.
|
|
8
|
-
*
|
|
9
|
-
* SECURITY: ACTPKernel V1 contract accepts any attestationUID without validation.
|
|
10
|
-
* This tracker provides SDK-side protection until contract is upgraded.
|
|
11
|
-
*
|
|
12
|
-
* @module utils/UsedAttestationTracker
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.createUsedAttestationTracker = exports.FileBasedUsedAttestationTracker = exports.InMemoryUsedAttestationTracker = void 0;
|
|
16
|
-
const fsSafe_1 = require("./fsSafe");
|
|
17
|
-
/**
|
|
18
|
-
* In-Memory Used Attestation Tracker
|
|
19
|
-
*
|
|
20
|
-
* SECURITY FIX (C-1): Prevents attestation replay attacks by tracking
|
|
21
|
-
* which attestation UIDs have been used for which transactions.
|
|
22
|
-
*
|
|
23
|
-
* SECURITY FIX (NEW-H-2): LRU-style cache with max size to prevent DoS
|
|
24
|
-
*
|
|
25
|
-
* WARNING: In-memory only. For production:
|
|
26
|
-
* - Use persistent storage (Redis, PostgreSQL, etc.)
|
|
27
|
-
* - Implement recovery from blockchain events
|
|
28
|
-
*/
|
|
29
|
-
class InMemoryUsedAttestationTracker {
|
|
30
|
-
/**
|
|
31
|
-
* Create in-memory tracker with optional max size
|
|
32
|
-
* @param maxSize - Maximum entries to store (default: 100,000)
|
|
33
|
-
*/
|
|
34
|
-
constructor(maxSize = 100000) {
|
|
35
|
-
// Map: attestationUID -> txId
|
|
36
|
-
this.usedAttestations = new Map();
|
|
37
|
-
if (maxSize <= 0) {
|
|
38
|
-
throw new Error('maxSize must be positive');
|
|
39
|
-
}
|
|
40
|
-
this.maxSize = maxSize;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Record that an attestation was used for a transaction
|
|
44
|
-
* @param attestationUID - EAS attestation UID (bytes32)
|
|
45
|
-
* @param txId - Transaction ID (bytes32)
|
|
46
|
-
* @returns true if recorded, false if already used for different transaction
|
|
47
|
-
*
|
|
48
|
-
* SECURITY FIX (NEW-H-2): LRU eviction when max size reached
|
|
49
|
-
* SECURITY FIX (HIGH-1): Now async for interface consistency
|
|
50
|
-
*/
|
|
51
|
-
async recordUsage(attestationUID, txId) {
|
|
52
|
-
return this.recordUsageSync(attestationUID, txId);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Synchronous version of recordUsage (for backward compatibility)
|
|
56
|
-
* @param attestationUID - EAS attestation UID (bytes32)
|
|
57
|
-
* @param txId - Transaction ID (bytes32)
|
|
58
|
-
* @returns true if recorded, false if already used for different transaction
|
|
59
|
-
*/
|
|
60
|
-
recordUsageSync(attestationUID, txId) {
|
|
61
|
-
const normalizedUID = attestationUID.toLowerCase();
|
|
62
|
-
const normalizedTxId = txId.toLowerCase();
|
|
63
|
-
const existingTxId = this.usedAttestations.get(normalizedUID);
|
|
64
|
-
// If attestation was already used for a different transaction, reject
|
|
65
|
-
if (existingTxId && existingTxId !== normalizedTxId) {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
// SECURITY FIX (NEW-H-2): Enforce max size limit with true LRU behavior
|
|
69
|
-
if (this.usedAttestations.size >= this.maxSize && !existingTxId) {
|
|
70
|
-
// Remove oldest entry (first entry in Map)
|
|
71
|
-
const firstKey = this.usedAttestations.keys().next().value;
|
|
72
|
-
if (firstKey) {
|
|
73
|
-
this.usedAttestations.delete(firstKey);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else if (existingTxId) {
|
|
77
|
-
// SECURITY FIX (M-3): True LRU - delete and re-add to move to end
|
|
78
|
-
this.usedAttestations.delete(normalizedUID);
|
|
79
|
-
}
|
|
80
|
-
// Record the usage (at end for LRU)
|
|
81
|
-
this.usedAttestations.set(normalizedUID, normalizedTxId);
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Check if attestation has been used
|
|
86
|
-
* @param attestationUID - EAS attestation UID (bytes32)
|
|
87
|
-
* @returns Transaction ID if used, null if not used
|
|
88
|
-
*
|
|
89
|
-
* SECURITY FIX (MEDIUM-4): Updates access order for true LRU behavior
|
|
90
|
-
* Accessed items are moved to end of Map (most recently used)
|
|
91
|
-
*/
|
|
92
|
-
getUsageForAttestation(attestationUID) {
|
|
93
|
-
const normalizedUID = attestationUID.toLowerCase();
|
|
94
|
-
const txId = this.usedAttestations.get(normalizedUID);
|
|
95
|
-
// SECURITY FIX (MEDIUM-4): True LRU - move accessed item to end
|
|
96
|
-
// Without this, eviction uses insertion order, not access order
|
|
97
|
-
if (txId !== undefined) {
|
|
98
|
-
this.usedAttestations.delete(normalizedUID);
|
|
99
|
-
this.usedAttestations.set(normalizedUID, txId);
|
|
100
|
-
}
|
|
101
|
-
return txId || null;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Check if attestation is valid for transaction
|
|
105
|
-
* @param attestationUID - EAS attestation UID
|
|
106
|
-
* @param txId - Transaction ID
|
|
107
|
-
* @returns true if attestation is unused or already used for this txId
|
|
108
|
-
*
|
|
109
|
-
* SECURITY FIX (MEDIUM-4): Updates access order for true LRU behavior
|
|
110
|
-
*/
|
|
111
|
-
isValidForTransaction(attestationUID, txId) {
|
|
112
|
-
const normalizedUID = attestationUID.toLowerCase();
|
|
113
|
-
const normalizedTxId = txId.toLowerCase();
|
|
114
|
-
const existingTxId = this.usedAttestations.get(normalizedUID);
|
|
115
|
-
// SECURITY FIX (MEDIUM-4): True LRU - move accessed item to end
|
|
116
|
-
if (existingTxId !== undefined) {
|
|
117
|
-
this.usedAttestations.delete(normalizedUID);
|
|
118
|
-
this.usedAttestations.set(normalizedUID, existingTxId);
|
|
119
|
-
}
|
|
120
|
-
// Valid if: not used OR used for same transaction
|
|
121
|
-
return !existingTxId || existingTxId === normalizedTxId;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Clear all tracked attestations
|
|
125
|
-
*/
|
|
126
|
-
clear() {
|
|
127
|
-
this.usedAttestations.clear();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get all tracked attestations (for debugging/persistence)
|
|
131
|
-
*/
|
|
132
|
-
getAllUsages() {
|
|
133
|
-
return Object.fromEntries(this.usedAttestations.entries());
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Get count of tracked attestations
|
|
137
|
-
*/
|
|
138
|
-
getCount() {
|
|
139
|
-
return this.usedAttestations.size;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Cleanup old entries based on timestamp (optional)
|
|
143
|
-
*
|
|
144
|
-
* SECURITY FIX (NEW-H-2): Manual cleanup for old entries
|
|
145
|
-
* Note: This requires external timestamp tracking. For automatic cleanup,
|
|
146
|
-
* use FileBasedUsedAttestationTracker with periodic cleanup.
|
|
147
|
-
*
|
|
148
|
-
* @param maxAgeHours - Remove entries older than this many hours
|
|
149
|
-
*/
|
|
150
|
-
cleanupOldEntries(maxAgeHours) {
|
|
151
|
-
// In-memory tracker doesn't track timestamps
|
|
152
|
-
// This is a placeholder for future enhancement
|
|
153
|
-
console.warn('cleanupOldEntries not implemented for InMemoryUsedAttestationTracker. ' +
|
|
154
|
-
'Consider using FileBasedUsedAttestationTracker for time-based cleanup.');
|
|
155
|
-
return 0;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.InMemoryUsedAttestationTracker = InMemoryUsedAttestationTracker;
|
|
159
|
-
/**
|
|
160
|
-
* File-based Used Attestation Tracker for persistence
|
|
161
|
-
*
|
|
162
|
-
* SECURITY FIX (C-1): Persistent storage for attestation tracking
|
|
163
|
-
* SECURITY FIX (NEW-H-4): File locking to prevent concurrent write corruption
|
|
164
|
-
*
|
|
165
|
-
* Survives process restarts.
|
|
166
|
-
*/
|
|
167
|
-
class FileBasedUsedAttestationTracker {
|
|
168
|
-
constructor(stateDirectory) {
|
|
169
|
-
this.inMemory = new InMemoryUsedAttestationTracker();
|
|
170
|
-
this.fs = require('fs');
|
|
171
|
-
this.path = require('path');
|
|
172
|
-
// SECURITY FIX (NEW-H-4): File locking to prevent race conditions
|
|
173
|
-
this.lockfile = require('proper-lockfile');
|
|
174
|
-
// Ensure directory exists
|
|
175
|
-
const actpDir = this.path.join(stateDirectory, '.actp');
|
|
176
|
-
(0, fsSafe_1.ensureSafeDir)(actpDir, 0o755);
|
|
177
|
-
this.filePath = this.path.join(actpDir, 'used-attestations.json');
|
|
178
|
-
// Load existing data
|
|
179
|
-
this.loadFromFile();
|
|
180
|
-
}
|
|
181
|
-
loadFromFile() {
|
|
182
|
-
if (!this.fs.existsSync(this.filePath))
|
|
183
|
-
return;
|
|
184
|
-
// SECURITY: Refuse to read from symlinked tracker files
|
|
185
|
-
(0, fsSafe_1.assertSafeFileForRead)(this.filePath);
|
|
186
|
-
// Basic size limit to avoid memory DoS on parse
|
|
187
|
-
const MAX_TRACKER_FILE_SIZE = 10 * 1024 * 1024; // 10MB
|
|
188
|
-
const st = this.fs.statSync(this.filePath);
|
|
189
|
-
if (st.size > MAX_TRACKER_FILE_SIZE) {
|
|
190
|
-
throw new Error(`used-attestations.json exceeds ${MAX_TRACKER_FILE_SIZE / 1024 / 1024}MB limit: ${this.filePath}`);
|
|
191
|
-
}
|
|
192
|
-
try {
|
|
193
|
-
const data = JSON.parse(this.fs.readFileSync(this.filePath, 'utf-8'));
|
|
194
|
-
for (const [uid, txId] of Object.entries(data)) {
|
|
195
|
-
this.inMemory.recordUsageSync(uid, txId);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
catch (e) {
|
|
199
|
-
// Fail closed: losing replay-protection state is a security issue.
|
|
200
|
-
throw new Error(`Failed to parse used-attestations.json (replay protection would be disabled). ` +
|
|
201
|
-
`Fix/delete the file: ${this.filePath}. Error: ${e?.message || String(e)}`);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Save data to file with file locking
|
|
206
|
-
*
|
|
207
|
-
* SECURITY FIX (NEW-H-4): File locking prevents concurrent write corruption
|
|
208
|
-
* SECURITY FIX (NEW-HIGH-1): Create file before locking if it doesn't exist
|
|
209
|
-
*/
|
|
210
|
-
async saveToFile() {
|
|
211
|
-
const data = this.inMemory.getAllUsages();
|
|
212
|
-
const tempPath = `${this.filePath}.tmp`;
|
|
213
|
-
// SECURITY FIX (NEW-HIGH-1): Ensure file exists before locking
|
|
214
|
-
// proper-lockfile.lock() fails on non-existent files
|
|
215
|
-
(0, fsSafe_1.ensureSafeFile)(this.filePath, '{}', 0o644);
|
|
216
|
-
// SECURITY FIX (NEW-H-4): Acquire file lock before writing
|
|
217
|
-
let release = null;
|
|
218
|
-
try {
|
|
219
|
-
release = await this.lockfile.lock(this.filePath, {
|
|
220
|
-
stale: 10000, // Lock expires after 10 seconds if process crashes
|
|
221
|
-
retries: {
|
|
222
|
-
retries: 5,
|
|
223
|
-
minTimeout: 100,
|
|
224
|
-
maxTimeout: 500
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
// Atomic write: temp file + rename
|
|
228
|
-
if (this.fs.existsSync(tempPath)) {
|
|
229
|
-
this.fs.unlinkSync(tempPath);
|
|
230
|
-
}
|
|
231
|
-
this.fs.writeFileSync(tempPath, JSON.stringify(data, null, 2), {
|
|
232
|
-
encoding: 'utf-8',
|
|
233
|
-
mode: 0o644,
|
|
234
|
-
flag: 'wx'
|
|
235
|
-
});
|
|
236
|
-
this.fs.renameSync(tempPath, this.filePath);
|
|
237
|
-
}
|
|
238
|
-
catch (error) {
|
|
239
|
-
// Clean up temp file on error
|
|
240
|
-
if (this.fs.existsSync(tempPath)) {
|
|
241
|
-
try {
|
|
242
|
-
this.fs.unlinkSync(tempPath);
|
|
243
|
-
}
|
|
244
|
-
catch {
|
|
245
|
-
// Ignore cleanup errors
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
throw error;
|
|
249
|
-
}
|
|
250
|
-
finally {
|
|
251
|
-
// Always release lock if acquired
|
|
252
|
-
if (release) {
|
|
253
|
-
await release();
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Record attestation usage with guaranteed persistence
|
|
259
|
-
*
|
|
260
|
-
* SECURITY FIX (HIGH-1): Now properly awaits persistence to prevent data loss
|
|
261
|
-
*/
|
|
262
|
-
async recordUsage(attestationUID, txId) {
|
|
263
|
-
const result = this.inMemory.recordUsageSync(attestationUID, txId);
|
|
264
|
-
if (result) {
|
|
265
|
-
// SECURITY FIX (HIGH-1): Await persistence to ensure data is saved
|
|
266
|
-
await this.saveToFile();
|
|
267
|
-
}
|
|
268
|
-
return result;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Fire-and-forget version for backward compatibility
|
|
272
|
-
* WARNING: May lose data if process crashes before save completes
|
|
273
|
-
*/
|
|
274
|
-
recordUsageSync(attestationUID, txId) {
|
|
275
|
-
const result = this.inMemory.recordUsageSync(attestationUID, txId);
|
|
276
|
-
if (result) {
|
|
277
|
-
this.saveToFile().catch((err) => {
|
|
278
|
-
console.error('Failed to save attestation tracker state:', err);
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
return result;
|
|
282
|
-
}
|
|
283
|
-
getUsageForAttestation(attestationUID) {
|
|
284
|
-
return this.inMemory.getUsageForAttestation(attestationUID);
|
|
285
|
-
}
|
|
286
|
-
isValidForTransaction(attestationUID, txId) {
|
|
287
|
-
return this.inMemory.isValidForTransaction(attestationUID, txId);
|
|
288
|
-
}
|
|
289
|
-
clear() {
|
|
290
|
-
this.inMemory.clear();
|
|
291
|
-
if (this.fs.existsSync(this.filePath)) {
|
|
292
|
-
this.fs.unlinkSync(this.filePath);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
exports.FileBasedUsedAttestationTracker = FileBasedUsedAttestationTracker;
|
|
297
|
-
/**
|
|
298
|
-
* Factory to create attestation tracker
|
|
299
|
-
* @param stateDirectory - Optional directory for persistent storage
|
|
300
|
-
* @returns IUsedAttestationTracker instance
|
|
301
|
-
*/
|
|
302
|
-
function createUsedAttestationTracker(stateDirectory) {
|
|
303
|
-
if (stateDirectory) {
|
|
304
|
-
return new FileBasedUsedAttestationTracker(stateDirectory);
|
|
305
|
-
}
|
|
306
|
-
return new InMemoryUsedAttestationTracker();
|
|
307
|
-
}
|
|
308
|
-
exports.createUsedAttestationTracker = createUsedAttestationTracker;
|
|
309
|
-
//# sourceMappingURL=UsedAttestationTracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UsedAttestationTracker.js","sourceRoot":"","sources":["../../src/utils/UsedAttestationTracker.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fsSafe.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fsSafe - minimal filesystem hardening helpers
|
|
3
|
-
*
|
|
4
|
-
* Focus:
|
|
5
|
-
* - Prevent symlink-based path escapes when persisting local state
|
|
6
|
-
* - Avoid clobbering arbitrary files via pre-created symlink temp files
|
|
7
|
-
*
|
|
8
|
-
* NOTE: This is not a complete TOCTOU-proof sandbox, but it eliminates the
|
|
9
|
-
* most common local symlink/hardlink footguns for SDK-managed state files.
|
|
10
|
-
*/
|
|
11
|
-
export declare function ensureSafeDir(dirPath: string, mode?: number): void;
|
|
12
|
-
export declare function assertSafeFileForRead(filePath: string): void;
|
|
13
|
-
export declare function ensureSafeFile(filePath: string, contents: string, mode?: number): void;
|
|
14
|
-
//# sourceMappingURL=fsSafe.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fsSafe.d.ts","sourceRoot":"","sources":["../../src/utils/fsSafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,GAAG,IAAI,CAmBzE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS5D;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAc,GACnB,IAAI,CAmBN"}
|
package/dist/utils/fsSafe.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* fsSafe - minimal filesystem hardening helpers
|
|
4
|
-
*
|
|
5
|
-
* Focus:
|
|
6
|
-
* - Prevent symlink-based path escapes when persisting local state
|
|
7
|
-
* - Avoid clobbering arbitrary files via pre-created symlink temp files
|
|
8
|
-
*
|
|
9
|
-
* NOTE: This is not a complete TOCTOU-proof sandbox, but it eliminates the
|
|
10
|
-
* most common local symlink/hardlink footguns for SDK-managed state files.
|
|
11
|
-
*/
|
|
12
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ensureSafeFile = exports.assertSafeFileForRead = exports.ensureSafeDir = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
function ensureSafeDir(dirPath, mode = 0o755) {
|
|
39
|
-
if (fs.existsSync(dirPath)) {
|
|
40
|
-
const st = fs.lstatSync(dirPath);
|
|
41
|
-
if (st.isSymbolicLink()) {
|
|
42
|
-
throw new Error(`Refusing to use symlink directory: ${dirPath}`);
|
|
43
|
-
}
|
|
44
|
-
if (!st.isDirectory()) {
|
|
45
|
-
throw new Error(`Expected directory but found non-directory: ${dirPath}`);
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
fs.mkdirSync(dirPath, { recursive: true, mode });
|
|
50
|
-
// Post-create sanity: ensure it didn't become a symlink (defense-in-depth)
|
|
51
|
-
const st = fs.lstatSync(dirPath);
|
|
52
|
-
if (st.isSymbolicLink() || !st.isDirectory()) {
|
|
53
|
-
throw new Error(`Created unsafe directory (symlink or non-dir): ${dirPath}`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.ensureSafeDir = ensureSafeDir;
|
|
57
|
-
function assertSafeFileForRead(filePath) {
|
|
58
|
-
if (!fs.existsSync(filePath))
|
|
59
|
-
return;
|
|
60
|
-
const st = fs.lstatSync(filePath);
|
|
61
|
-
if (st.isSymbolicLink()) {
|
|
62
|
-
throw new Error(`Refusing to read from symlink file: ${filePath}`);
|
|
63
|
-
}
|
|
64
|
-
if (!st.isFile()) {
|
|
65
|
-
throw new Error(`Expected file but found non-file: ${filePath}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
exports.assertSafeFileForRead = assertSafeFileForRead;
|
|
69
|
-
function ensureSafeFile(filePath, contents, mode = 0o644) {
|
|
70
|
-
if (fs.existsSync(filePath)) {
|
|
71
|
-
const st = fs.lstatSync(filePath);
|
|
72
|
-
if (st.isSymbolicLink()) {
|
|
73
|
-
throw new Error(`Refusing to use symlink file: ${filePath}`);
|
|
74
|
-
}
|
|
75
|
-
if (!st.isFile()) {
|
|
76
|
-
throw new Error(`Expected file but found non-file: ${filePath}`);
|
|
77
|
-
}
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
// Use exclusive create to avoid clobbering a file that appears between
|
|
81
|
-
// existsSync() and writeFileSync().
|
|
82
|
-
fs.writeFileSync(filePath, contents, {
|
|
83
|
-
encoding: 'utf-8',
|
|
84
|
-
mode,
|
|
85
|
-
flag: 'wx',
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
exports.ensureSafeFile = ensureSafeFile;
|
|
89
|
-
//# sourceMappingURL=fsSafe.js.map
|
package/dist/utils/fsSafe.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fsSafe.js","sourceRoot":"","sources":["../../src/utils/fsSafe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,SAAgB,aAAa,CAAC,OAAe,EAAE,OAAe,KAAK;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,2EAA2E;IAC3E,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAnBD,sCAmBC;AAED,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AATD,sDASC;AAED,SAAgB,cAAc,CAC5B,QAAgB,EAChB,QAAgB,EAChB,OAAe,KAAK;IAEpB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,oCAAoC;IACpC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACnC,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAvBD,wCAuBC"}
|
package/dist/utils/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ACTP SDK Utilities
|
|
3
|
-
*
|
|
4
|
-
* This module exports all utility classes for the ACTP SDK.
|
|
5
|
-
*
|
|
6
|
-
* @module utils
|
|
7
|
-
*/
|
|
8
|
-
export { ErrorRecoveryGuide, withRecoveryGuidance, type ErrorRecoveryInfo, type ErrorSeverity, type ErrorCategory, } from './ErrorRecoveryGuide';
|
|
9
|
-
export { RateLimiter, CircuitBreaker, APIProtector, type RateLimiterConfig, type RateLimitResult, type CircuitBreakerConfig, type CircuitBreakerResult, type CircuitState, } from './RateLimiter';
|
|
10
|
-
export { Logger, MetricsCollector, sdkLogger, sdkMetrics, type LogLevel, type LogEntry, type LoggerConfig, type MetricsHook, } from './Logger';
|
|
11
|
-
export { SDKLifecycle, sdkLifecycle, onShutdown, registerDisposable, shutdownSDK, type Disposable, type ShutdownHandler, type LifecycleEvent, type LifecycleListener, } from './SDKLifecycle';
|
|
12
|
-
export { InMemoryReceivedNonceTracker, SetBasedReceivedNonceTracker, createReceivedNonceTracker, type IReceivedNonceTracker, type NonceValidationResult, } from './ReceivedNonceTracker';
|
|
13
|
-
export { InMemoryUsedAttestationTracker, FileBasedUsedAttestationTracker, createUsedAttestationTracker, type IUsedAttestationTracker, } from './UsedAttestationTracker';
|
|
14
|
-
export { USDC, Deadline, Address, Bytes32, State, DisputeWindow, } from './Helpers';
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,aAAa,GACd,MAAM,WAAW,CAAC"}
|
package/dist/utils/index.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ACTP SDK Utilities
|
|
4
|
-
*
|
|
5
|
-
* This module exports all utility classes for the ACTP SDK.
|
|
6
|
-
*
|
|
7
|
-
* @module utils
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.DisputeWindow = exports.State = exports.Bytes32 = exports.Address = exports.Deadline = exports.USDC = exports.createUsedAttestationTracker = exports.FileBasedUsedAttestationTracker = exports.InMemoryUsedAttestationTracker = exports.createReceivedNonceTracker = exports.SetBasedReceivedNonceTracker = exports.InMemoryReceivedNonceTracker = exports.shutdownSDK = exports.registerDisposable = exports.onShutdown = exports.sdkLifecycle = exports.SDKLifecycle = exports.sdkMetrics = exports.sdkLogger = exports.MetricsCollector = exports.Logger = exports.APIProtector = exports.CircuitBreaker = exports.RateLimiter = exports.withRecoveryGuidance = exports.ErrorRecoveryGuide = void 0;
|
|
11
|
-
// Error Recovery (HIGH-6)
|
|
12
|
-
var ErrorRecoveryGuide_1 = require("./ErrorRecoveryGuide");
|
|
13
|
-
Object.defineProperty(exports, "ErrorRecoveryGuide", { enumerable: true, get: function () { return ErrorRecoveryGuide_1.ErrorRecoveryGuide; } });
|
|
14
|
-
Object.defineProperty(exports, "withRecoveryGuidance", { enumerable: true, get: function () { return ErrorRecoveryGuide_1.withRecoveryGuidance; } });
|
|
15
|
-
// Rate Limiting & Circuit Breaker (M-4, M-5)
|
|
16
|
-
var RateLimiter_1 = require("./RateLimiter");
|
|
17
|
-
Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return RateLimiter_1.RateLimiter; } });
|
|
18
|
-
Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return RateLimiter_1.CircuitBreaker; } });
|
|
19
|
-
Object.defineProperty(exports, "APIProtector", { enumerable: true, get: function () { return RateLimiter_1.APIProtector; } });
|
|
20
|
-
// Logging & Metrics (M-6, M-7)
|
|
21
|
-
var Logger_1 = require("./Logger");
|
|
22
|
-
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_1.Logger; } });
|
|
23
|
-
Object.defineProperty(exports, "MetricsCollector", { enumerable: true, get: function () { return Logger_1.MetricsCollector; } });
|
|
24
|
-
Object.defineProperty(exports, "sdkLogger", { enumerable: true, get: function () { return Logger_1.sdkLogger; } });
|
|
25
|
-
Object.defineProperty(exports, "sdkMetrics", { enumerable: true, get: function () { return Logger_1.sdkMetrics; } });
|
|
26
|
-
// SDK Lifecycle (M-8)
|
|
27
|
-
var SDKLifecycle_1 = require("./SDKLifecycle");
|
|
28
|
-
Object.defineProperty(exports, "SDKLifecycle", { enumerable: true, get: function () { return SDKLifecycle_1.SDKLifecycle; } });
|
|
29
|
-
Object.defineProperty(exports, "sdkLifecycle", { enumerable: true, get: function () { return SDKLifecycle_1.sdkLifecycle; } });
|
|
30
|
-
Object.defineProperty(exports, "onShutdown", { enumerable: true, get: function () { return SDKLifecycle_1.onShutdown; } });
|
|
31
|
-
Object.defineProperty(exports, "registerDisposable", { enumerable: true, get: function () { return SDKLifecycle_1.registerDisposable; } });
|
|
32
|
-
Object.defineProperty(exports, "shutdownSDK", { enumerable: true, get: function () { return SDKLifecycle_1.shutdownSDK; } });
|
|
33
|
-
// Nonce Tracking (Security)
|
|
34
|
-
var ReceivedNonceTracker_1 = require("./ReceivedNonceTracker");
|
|
35
|
-
Object.defineProperty(exports, "InMemoryReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.InMemoryReceivedNonceTracker; } });
|
|
36
|
-
Object.defineProperty(exports, "SetBasedReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.SetBasedReceivedNonceTracker; } });
|
|
37
|
-
Object.defineProperty(exports, "createReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.createReceivedNonceTracker; } });
|
|
38
|
-
// Attestation Tracking (Security)
|
|
39
|
-
var UsedAttestationTracker_1 = require("./UsedAttestationTracker");
|
|
40
|
-
Object.defineProperty(exports, "InMemoryUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.InMemoryUsedAttestationTracker; } });
|
|
41
|
-
Object.defineProperty(exports, "FileBasedUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.FileBasedUsedAttestationTracker; } });
|
|
42
|
-
Object.defineProperty(exports, "createUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.createUsedAttestationTracker; } });
|
|
43
|
-
// Helper Utilities (L-7)
|
|
44
|
-
var Helpers_1 = require("./Helpers");
|
|
45
|
-
Object.defineProperty(exports, "USDC", { enumerable: true, get: function () { return Helpers_1.USDC; } });
|
|
46
|
-
Object.defineProperty(exports, "Deadline", { enumerable: true, get: function () { return Helpers_1.Deadline; } });
|
|
47
|
-
Object.defineProperty(exports, "Address", { enumerable: true, get: function () { return Helpers_1.Address; } });
|
|
48
|
-
Object.defineProperty(exports, "Bytes32", { enumerable: true, get: function () { return Helpers_1.Bytes32; } });
|
|
49
|
-
Object.defineProperty(exports, "State", { enumerable: true, get: function () { return Helpers_1.State; } });
|
|
50
|
-
Object.defineProperty(exports, "DisputeWindow", { enumerable: true, get: function () { return Helpers_1.DisputeWindow; } });
|
|
51
|
-
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,0BAA0B;AAC1B,2DAM8B;AAL5B,wHAAA,kBAAkB,OAAA;AAClB,0HAAA,oBAAoB,OAAA;AAMtB,6CAA6C;AAC7C,6CASuB;AARrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AAQd,+BAA+B;AAC/B,mCASkB;AARhB,gGAAA,MAAM,OAAA;AACN,0GAAA,gBAAgB,OAAA;AAChB,mGAAA,SAAS,OAAA;AACT,oGAAA,UAAU,OAAA;AAOZ,sBAAsB;AACtB,+CAUwB;AATtB,4GAAA,YAAY,OAAA;AACZ,4GAAA,YAAY,OAAA;AACZ,0GAAA,UAAU,OAAA;AACV,kHAAA,kBAAkB,OAAA;AAClB,2GAAA,WAAW,OAAA;AAOb,4BAA4B;AAC5B,+DAMgC;AAL9B,oIAAA,4BAA4B,OAAA;AAC5B,oIAAA,4BAA4B,OAAA;AAC5B,kIAAA,0BAA0B,OAAA;AAK5B,kCAAkC;AAClC,mEAKkC;AAJhC,wIAAA,8BAA8B,OAAA;AAC9B,yIAAA,+BAA+B,OAAA;AAC/B,sIAAA,4BAA4B,OAAA;AAI9B,yBAAyB;AACzB,qCAOmB;AANjB,+FAAA,IAAI,OAAA;AACJ,mGAAA,QAAQ,OAAA;AACR,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,wGAAA,aAAa,OAAA"}
|
package/dist/utils/security.d.ts
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Security Utilities for ACTP SDK
|
|
3
|
-
*
|
|
4
|
-
* SECURITY FIXES:
|
|
5
|
-
* - H-7: Constant-time string comparison (timing attack prevention)
|
|
6
|
-
* - H-6: Path traversal prevention
|
|
7
|
-
* - H-2: Input validation and sanitization
|
|
8
|
-
* - C-3: Safe JSON parsing with schema validation
|
|
9
|
-
*
|
|
10
|
-
* @module utils/security
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* H-7: Constant-time string comparison to prevent timing attacks
|
|
14
|
-
*
|
|
15
|
-
* Never use === for comparing signatures, hashes, or other security-sensitive strings
|
|
16
|
-
* as it can leak timing information that attackers can exploit.
|
|
17
|
-
*
|
|
18
|
-
* @param a - First string to compare
|
|
19
|
-
* @param b - Second string to compare
|
|
20
|
-
* @returns true if strings are equal, false otherwise
|
|
21
|
-
*/
|
|
22
|
-
export declare function timingSafeEqual(a: string, b: string): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* H-6: Validate and sanitize directory path to prevent path traversal
|
|
25
|
-
*
|
|
26
|
-
* Ensures that the provided path:
|
|
27
|
-
* 1. Does not contain '..' sequences
|
|
28
|
-
* 2. Resolves to a location within the allowed base directory
|
|
29
|
-
* 3. Does not follow symlinks (optional)
|
|
30
|
-
*
|
|
31
|
-
* @param requestedPath - The path to validate
|
|
32
|
-
* @param baseDirectory - The base directory to restrict paths to
|
|
33
|
-
* @returns Sanitized absolute path
|
|
34
|
-
* @throws Error if path is invalid or contains traversal attempts
|
|
35
|
-
*/
|
|
36
|
-
export declare function validatePath(requestedPath: string, baseDirectory: string): string;
|
|
37
|
-
/**
|
|
38
|
-
* H-2: Validate and sanitize service name
|
|
39
|
-
*
|
|
40
|
-
* Ensures service name:
|
|
41
|
-
* 1. Contains only safe characters (alphanumeric, dash, dot, underscore)
|
|
42
|
-
* 2. Does not exceed maximum length
|
|
43
|
-
* 3. Does not contain special characters that could cause injection
|
|
44
|
-
*
|
|
45
|
-
* @param serviceName - The service name to validate
|
|
46
|
-
* @returns Sanitized service name
|
|
47
|
-
* @throws Error if service name is invalid
|
|
48
|
-
*/
|
|
49
|
-
export declare function validateServiceName(serviceName: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* H-5: Validate Ethereum address format
|
|
52
|
-
*
|
|
53
|
-
* Ensures address:
|
|
54
|
-
* 1. Is a valid hex string
|
|
55
|
-
* 2. Has correct length (42 chars including '0x' prefix)
|
|
56
|
-
* 3. Uses valid checksum if provided (EIP-55)
|
|
57
|
-
*
|
|
58
|
-
* @param address - The Ethereum address to validate
|
|
59
|
-
* @returns true if address is valid, false otherwise
|
|
60
|
-
*/
|
|
61
|
-
export declare function isValidAddress(address: string): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* C-3: Safe JSON parsing with schema validation
|
|
64
|
-
*
|
|
65
|
-
* Prevents code injection and prototype pollution attacks by:
|
|
66
|
-
* 1. Safely parsing JSON with error handling
|
|
67
|
-
* 2. Validating the parsed object against an expected schema
|
|
68
|
-
* 3. Removing __proto__, constructor, and prototype properties
|
|
69
|
-
* 4. Returning only whitelisted fields
|
|
70
|
-
*
|
|
71
|
-
* @param jsonString - The JSON string to parse
|
|
72
|
-
* @param schema - Expected schema (object with field names and types)
|
|
73
|
-
* @returns Parsed and validated object, or null if invalid
|
|
74
|
-
*/
|
|
75
|
-
export declare function safeJSONParse<T = any>(jsonString: string, schema?: Record<string, string>): T | null;
|
|
76
|
-
/**
|
|
77
|
-
* LRU (Least Recently Used) cache with maximum size
|
|
78
|
-
* Used for preventing unbounded memory growth
|
|
79
|
-
*
|
|
80
|
-
* @template K - Key type
|
|
81
|
-
* @template V - Value type
|
|
82
|
-
*/
|
|
83
|
-
export declare class LRUCache<K, V> {
|
|
84
|
-
private cache;
|
|
85
|
-
private readonly maxSize;
|
|
86
|
-
constructor(maxSize?: number);
|
|
87
|
-
/**
|
|
88
|
-
* Get value from cache
|
|
89
|
-
*
|
|
90
|
-
* @param key - Cache key
|
|
91
|
-
* @returns Cached value or undefined
|
|
92
|
-
*/
|
|
93
|
-
get(key: K): V | undefined;
|
|
94
|
-
/**
|
|
95
|
-
* Set value in cache
|
|
96
|
-
*
|
|
97
|
-
* @param key - Cache key
|
|
98
|
-
* @param value - Value to cache
|
|
99
|
-
*/
|
|
100
|
-
set(key: K, value: V): void;
|
|
101
|
-
/**
|
|
102
|
-
* Check if key exists in cache
|
|
103
|
-
*
|
|
104
|
-
* SECURITY FIX (N-1): Use Map's native has() instead of get()
|
|
105
|
-
* to avoid modifying LRU order on read-only operations.
|
|
106
|
-
*
|
|
107
|
-
* @param key - Cache key
|
|
108
|
-
* @returns true if key exists
|
|
109
|
-
*/
|
|
110
|
-
has(key: K): boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Delete key from cache
|
|
113
|
-
*
|
|
114
|
-
* @param key - Cache key
|
|
115
|
-
*/
|
|
116
|
-
delete(key: K): void;
|
|
117
|
-
/**
|
|
118
|
-
* Clear all entries
|
|
119
|
-
*/
|
|
120
|
-
clear(): void;
|
|
121
|
-
/**
|
|
122
|
-
* Get current cache size
|
|
123
|
-
*/
|
|
124
|
-
get size(): number;
|
|
125
|
-
/**
|
|
126
|
-
* Get all values from cache
|
|
127
|
-
*
|
|
128
|
-
* SECURITY FIX (N-2): Add iterator support for LRUCache.
|
|
129
|
-
* Returns values in LRU order (oldest to newest).
|
|
130
|
-
*
|
|
131
|
-
* @returns Array of all cached values
|
|
132
|
-
*/
|
|
133
|
-
values(): V[];
|
|
134
|
-
/**
|
|
135
|
-
* Get all keys from cache
|
|
136
|
-
*
|
|
137
|
-
* @returns Array of all cached keys
|
|
138
|
-
*/
|
|
139
|
-
keys(): K[];
|
|
140
|
-
/**
|
|
141
|
-
* Get all entries from cache
|
|
142
|
-
*
|
|
143
|
-
* @returns Array of all cached [key, value] pairs
|
|
144
|
-
*/
|
|
145
|
-
entries(): [K, V][];
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=security.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAkB7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CA4BjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAyBvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EACnC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,CAAC,GAAG,IAAI,CAoEV;AAqCD;;;;;;GAMG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,MAAa;IAOlC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAmB3B;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAIpB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,IAAI,CAAC,EAAE;IAIb;;;;OAIG;IACH,IAAI,IAAI,CAAC,EAAE;IAIX;;;;OAIG;IACH,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;CAGpB"}
|