@metamask/snap-networks-utils 1.0.0 → 2.0.0
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/CHANGELOG.md +63 -1
- package/README.md +4 -10
- package/dist/index.cjs +102 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +51 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +51 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +32 -1
- package/dist/index.mjs.map +1 -1
- package/dist/providers/assets/AssetsProvider.cjs +36 -18
- package/dist/providers/assets/AssetsProvider.cjs.map +1 -1
- package/dist/providers/assets/AssetsProvider.d.cts +30 -2
- package/dist/providers/assets/AssetsProvider.d.cts.map +1 -1
- package/dist/providers/assets/AssetsProvider.d.mts +30 -2
- package/dist/providers/assets/AssetsProvider.d.mts.map +1 -1
- package/dist/providers/assets/AssetsProvider.mjs +36 -18
- package/dist/providers/assets/AssetsProvider.mjs.map +1 -1
- package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs +4 -17
- package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.cjs.map +1 -1
- package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs +4 -17
- package/dist/providers/remote-feature-flags/RemoteFeatureFlagsProvider.mjs.map +1 -1
- package/dist/services/analytics/AnalyticsService.cjs +225 -0
- package/dist/services/analytics/AnalyticsService.cjs.map +1 -0
- package/dist/services/analytics/AnalyticsService.d.cts +175 -0
- package/dist/services/analytics/AnalyticsService.d.cts.map +1 -0
- package/dist/services/analytics/AnalyticsService.d.mts +175 -0
- package/dist/services/analytics/AnalyticsService.d.mts.map +1 -0
- package/dist/services/analytics/AnalyticsService.mjs +221 -0
- package/dist/services/analytics/AnalyticsService.mjs.map +1 -0
- package/dist/ui/ActionHeader/ActionHeader.cjs +23 -0
- package/dist/ui/ActionHeader/ActionHeader.cjs.map +1 -0
- package/dist/ui/ActionHeader/ActionHeader.d.cts +27 -0
- package/dist/ui/ActionHeader/ActionHeader.d.cts.map +1 -0
- package/dist/ui/ActionHeader/ActionHeader.d.mts +27 -0
- package/dist/ui/ActionHeader/ActionHeader.d.mts.map +1 -0
- package/dist/ui/ActionHeader/ActionHeader.mjs +19 -0
- package/dist/ui/ActionHeader/ActionHeader.mjs.map +1 -0
- package/dist/ui/Asset/Asset.cjs +68 -0
- package/dist/ui/Asset/Asset.cjs.map +1 -0
- package/dist/ui/Asset/Asset.d.cts +83 -0
- package/dist/ui/Asset/Asset.d.cts.map +1 -0
- package/dist/ui/Asset/Asset.d.mts +83 -0
- package/dist/ui/Asset/Asset.d.mts.map +1 -0
- package/dist/ui/Asset/Asset.mjs +60 -0
- package/dist/ui/Asset/Asset.mjs.map +1 -0
- package/dist/ui/Asset/question-mark.svg +3 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.cjs +57 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.cjs.map +1 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.d.cts +50 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.d.cts.map +1 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.d.mts +50 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.d.mts.map +1 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.mjs +53 -0
- package/dist/ui/EstimatedChanges/EstimatedChanges.mjs.map +1 -0
- package/dist/ui/TransactionAlert/TransactionAlert.cjs +72 -0
- package/dist/ui/TransactionAlert/TransactionAlert.cjs.map +1 -0
- package/dist/ui/TransactionAlert/TransactionAlert.d.cts +58 -0
- package/dist/ui/TransactionAlert/TransactionAlert.d.cts.map +1 -0
- package/dist/ui/TransactionAlert/TransactionAlert.d.mts +58 -0
- package/dist/ui/TransactionAlert/TransactionAlert.d.mts.map +1 -0
- package/dist/ui/TransactionAlert/TransactionAlert.mjs +68 -0
- package/dist/ui/TransactionAlert/TransactionAlert.mjs.map +1 -0
- package/dist/utils/async/async.cjs +95 -0
- package/dist/utils/async/async.cjs.map +1 -0
- package/dist/utils/async/async.d.cts +51 -0
- package/dist/utils/async/async.d.cts.map +1 -0
- package/dist/utils/async/async.d.mts +51 -0
- package/dist/utils/async/async.d.mts.map +1 -0
- package/dist/utils/async/async.mjs +88 -0
- package/dist/utils/async/async.mjs.map +1 -0
- package/dist/utils/buildUrl/buildUrl.cjs +54 -0
- package/dist/utils/buildUrl/buildUrl.cjs.map +1 -0
- package/dist/utils/buildUrl/buildUrl.d.cts +15 -0
- package/dist/utils/buildUrl/buildUrl.d.cts.map +1 -0
- package/dist/utils/buildUrl/buildUrl.d.mts +15 -0
- package/dist/utils/buildUrl/buildUrl.d.mts.map +1 -0
- package/dist/utils/buildUrl/buildUrl.mjs +51 -0
- package/dist/utils/buildUrl/buildUrl.mjs.map +1 -0
- package/dist/utils/cache/InMemoryCache.cjs +134 -0
- package/dist/utils/cache/InMemoryCache.cjs.map +1 -0
- package/dist/utils/cache/InMemoryCache.d.cts +29 -0
- package/dist/utils/cache/InMemoryCache.d.cts.map +1 -0
- package/dist/utils/cache/InMemoryCache.d.mts +29 -0
- package/dist/utils/cache/InMemoryCache.d.mts.map +1 -0
- package/dist/utils/cache/InMemoryCache.mjs +130 -0
- package/dist/utils/cache/InMemoryCache.mjs.map +1 -0
- package/dist/utils/cache/StateCache.cjs +193 -0
- package/dist/utils/cache/StateCache.cjs.map +1 -0
- package/dist/utils/cache/StateCache.d.cts +96 -0
- package/dist/utils/cache/StateCache.d.cts.map +1 -0
- package/dist/utils/cache/StateCache.d.mts +96 -0
- package/dist/utils/cache/StateCache.d.mts.map +1 -0
- package/dist/utils/cache/StateCache.mjs +189 -0
- package/dist/utils/cache/StateCache.mjs.map +1 -0
- package/dist/utils/cache/types.cjs +3 -0
- package/dist/utils/cache/types.cjs.map +1 -0
- package/dist/utils/cache/types.d.cts +99 -0
- package/dist/utils/cache/types.d.cts.map +1 -0
- package/dist/utils/cache/types.d.mts +99 -0
- package/dist/utils/cache/types.d.mts.map +1 -0
- package/dist/utils/cache/types.mjs +2 -0
- package/dist/utils/cache/types.mjs.map +1 -0
- package/dist/utils/cache/useCache.cjs +82 -0
- package/dist/utils/cache/useCache.cjs.map +1 -0
- package/dist/utils/cache/useCache.d.cts +57 -0
- package/dist/utils/cache/useCache.d.cts.map +1 -0
- package/dist/utils/cache/useCache.d.mts +57 -0
- package/dist/utils/cache/useCache.d.mts.map +1 -0
- package/dist/utils/cache/useCache.mjs +78 -0
- package/dist/utils/cache/useCache.mjs.map +1 -0
- package/dist/utils/cache/useCacheUntil.cjs +80 -0
- package/dist/utils/cache/useCacheUntil.cjs.map +1 -0
- package/dist/utils/cache/useCacheUntil.d.cts +54 -0
- package/dist/utils/cache/useCacheUntil.d.cts.map +1 -0
- package/dist/utils/cache/useCacheUntil.d.mts +54 -0
- package/dist/utils/cache/useCacheUntil.d.mts.map +1 -0
- package/dist/utils/cache/useCacheUntil.mjs +76 -0
- package/dist/utils/cache/useCacheUntil.mjs.map +1 -0
- package/dist/utils/config/BaseConfigProvider.cjs +62 -0
- package/dist/utils/config/BaseConfigProvider.cjs.map +1 -0
- package/dist/utils/config/BaseConfigProvider.d.cts +54 -0
- package/dist/utils/config/BaseConfigProvider.d.cts.map +1 -0
- package/dist/utils/config/BaseConfigProvider.d.mts +54 -0
- package/dist/utils/config/BaseConfigProvider.d.mts.map +1 -0
- package/dist/utils/config/BaseConfigProvider.mjs +58 -0
- package/dist/utils/config/BaseConfigProvider.mjs.map +1 -0
- package/dist/utils/config/envStructs.cjs +69 -0
- package/dist/utils/config/envStructs.cjs.map +1 -0
- package/dist/utils/config/envStructs.d.cts +57 -0
- package/dist/utils/config/envStructs.d.cts.map +1 -0
- package/dist/utils/config/envStructs.d.mts +57 -0
- package/dist/utils/config/envStructs.d.mts.map +1 -0
- package/dist/utils/config/envStructs.mjs +61 -0
- package/dist/utils/config/envStructs.mjs.map +1 -0
- package/dist/utils/config/environmentStruct.cjs +19 -0
- package/dist/utils/config/environmentStruct.cjs.map +1 -0
- package/dist/utils/config/environmentStruct.d.cts +20 -0
- package/dist/utils/config/environmentStruct.d.cts.map +1 -0
- package/dist/utils/config/environmentStruct.d.mts +20 -0
- package/dist/utils/config/environmentStruct.d.mts.map +1 -0
- package/dist/utils/config/environmentStruct.mjs +16 -0
- package/dist/utils/config/environmentStruct.mjs.map +1 -0
- package/dist/utils/config/logLevelStruct.cjs +14 -0
- package/dist/utils/config/logLevelStruct.cjs.map +1 -0
- package/dist/utils/config/logLevelStruct.d.cts +17 -0
- package/dist/utils/config/logLevelStruct.d.cts.map +1 -0
- package/dist/utils/config/logLevelStruct.d.mts +17 -0
- package/dist/utils/config/logLevelStruct.d.mts.map +1 -0
- package/dist/utils/config/logLevelStruct.mjs +11 -0
- package/dist/utils/config/logLevelStruct.mjs.map +1 -0
- package/dist/utils/config/parseEnv.cjs +30 -0
- package/dist/utils/config/parseEnv.cjs.map +1 -0
- package/dist/utils/config/parseEnv.d.cts +19 -0
- package/dist/utils/config/parseEnv.d.cts.map +1 -0
- package/dist/utils/config/parseEnv.d.mts +19 -0
- package/dist/utils/config/parseEnv.d.mts.map +1 -0
- package/dist/utils/config/parseEnv.mjs +26 -0
- package/dist/utils/config/parseEnv.mjs.map +1 -0
- package/dist/utils/dedupe/InFlightCoalescer.cjs +28 -0
- package/dist/utils/dedupe/InFlightCoalescer.cjs.map +1 -0
- package/dist/utils/dedupe/InFlightCoalescer.d.cts +12 -0
- package/dist/utils/dedupe/InFlightCoalescer.d.cts.map +1 -0
- package/dist/utils/dedupe/InFlightCoalescer.d.mts +12 -0
- package/dist/utils/dedupe/InFlightCoalescer.d.mts.map +1 -0
- package/dist/utils/dedupe/InFlightCoalescer.mjs +24 -0
- package/dist/utils/dedupe/InFlightCoalescer.mjs.map +1 -0
- package/dist/utils/errors/errors.cjs +44 -0
- package/dist/utils/errors/errors.cjs.map +1 -0
- package/dist/utils/errors/errors.d.cts +37 -0
- package/dist/utils/errors/errors.d.cts.map +1 -0
- package/dist/utils/errors/errors.d.mts +37 -0
- package/dist/utils/errors/errors.d.mts.map +1 -0
- package/dist/utils/errors/errors.mjs +40 -0
- package/dist/utils/errors/errors.mjs.map +1 -0
- package/dist/utils/errors/index.cjs +18 -0
- package/dist/utils/errors/index.cjs.map +1 -0
- package/dist/utils/errors/index.d.cts +10 -0
- package/dist/utils/errors/index.d.cts.map +1 -0
- package/dist/utils/errors/index.d.mts +10 -0
- package/dist/utils/errors/index.d.mts.map +1 -0
- package/dist/utils/errors/index.mjs +6 -0
- package/dist/utils/errors/index.mjs.map +1 -0
- package/dist/utils/errors/snapRpcError.cjs +33 -0
- package/dist/utils/errors/snapRpcError.cjs.map +1 -0
- package/dist/utils/errors/snapRpcError.d.cts +11 -0
- package/dist/utils/errors/snapRpcError.d.cts.map +1 -0
- package/dist/utils/errors/snapRpcError.d.mts +11 -0
- package/dist/utils/errors/snapRpcError.d.mts.map +1 -0
- package/dist/utils/errors/snapRpcError.mjs +30 -0
- package/dist/utils/errors/snapRpcError.mjs.map +1 -0
- package/dist/utils/errors/stringifyReason.cjs +36 -0
- package/dist/utils/errors/stringifyReason.cjs.map +1 -0
- package/dist/utils/errors/stringifyReason.d.cts +15 -0
- package/dist/utils/errors/stringifyReason.d.cts.map +1 -0
- package/dist/utils/errors/stringifyReason.d.mts +15 -0
- package/dist/utils/errors/stringifyReason.d.mts.map +1 -0
- package/dist/utils/errors/stringifyReason.mjs +33 -0
- package/dist/utils/errors/stringifyReason.mjs.map +1 -0
- package/dist/utils/errors/syncError.cjs +98 -0
- package/dist/utils/errors/syncError.cjs.map +1 -0
- package/dist/utils/errors/syncError.d.cts +60 -0
- package/dist/utils/errors/syncError.d.cts.map +1 -0
- package/dist/utils/errors/syncError.d.mts +60 -0
- package/dist/utils/errors/syncError.d.mts.map +1 -0
- package/dist/utils/errors/syncError.mjs +92 -0
- package/dist/utils/errors/syncError.mjs.map +1 -0
- package/dist/utils/errors/trackError.cjs +76 -0
- package/dist/utils/errors/trackError.cjs.map +1 -0
- package/dist/utils/errors/trackError.d.cts +64 -0
- package/dist/utils/errors/trackError.d.cts.map +1 -0
- package/dist/utils/errors/trackError.d.mts +64 -0
- package/dist/utils/errors/trackError.d.mts.map +1 -0
- package/dist/utils/errors/trackError.mjs +72 -0
- package/dist/utils/errors/trackError.mjs.map +1 -0
- package/dist/utils/handlers/wrapSnapHandlers.cjs +57 -0
- package/dist/utils/handlers/wrapSnapHandlers.cjs.map +1 -0
- package/dist/utils/handlers/wrapSnapHandlers.d.cts +74 -0
- package/dist/utils/handlers/wrapSnapHandlers.d.cts.map +1 -0
- package/dist/utils/handlers/wrapSnapHandlers.d.mts +74 -0
- package/dist/utils/handlers/wrapSnapHandlers.d.mts.map +1 -0
- package/dist/utils/handlers/wrapSnapHandlers.mjs +53 -0
- package/dist/utils/handlers/wrapSnapHandlers.mjs.map +1 -0
- package/dist/utils/keyringAccount/keyringAccount.cjs +25 -0
- package/dist/utils/keyringAccount/keyringAccount.cjs.map +1 -0
- package/dist/utils/keyringAccount/keyringAccount.d.cts +29 -0
- package/dist/utils/keyringAccount/keyringAccount.d.cts.map +1 -0
- package/dist/utils/keyringAccount/keyringAccount.d.mts +29 -0
- package/dist/utils/keyringAccount/keyringAccount.d.mts.map +1 -0
- package/dist/utils/keyringAccount/keyringAccount.mjs +22 -0
- package/dist/utils/keyringAccount/keyringAccount.mjs.map +1 -0
- package/dist/utils/logger/Logger.cjs +140 -0
- package/dist/utils/logger/Logger.cjs.map +1 -0
- package/dist/utils/logger/Logger.d.cts +118 -0
- package/dist/utils/logger/Logger.d.cts.map +1 -0
- package/dist/utils/logger/Logger.d.mts +118 -0
- package/dist/utils/logger/Logger.d.mts.map +1 -0
- package/dist/utils/logger/Logger.mjs +136 -0
- package/dist/utils/logger/Logger.mjs.map +1 -0
- package/dist/utils/logger/__mocks__/Logger.cjs +26 -0
- package/dist/utils/logger/__mocks__/Logger.cjs.map +1 -0
- package/dist/utils/logger/__mocks__/Logger.d.cts +3 -0
- package/dist/utils/logger/__mocks__/Logger.d.cts.map +1 -0
- package/dist/utils/logger/__mocks__/Logger.d.mts +3 -0
- package/dist/utils/logger/__mocks__/Logger.d.mts.map +1 -0
- package/dist/utils/logger/__mocks__/Logger.mjs +23 -0
- package/dist/utils/logger/__mocks__/Logger.mjs.map +1 -0
- package/dist/utils/originPermissions/createOriginPermissions.cjs +30 -0
- package/dist/utils/originPermissions/createOriginPermissions.cjs.map +1 -0
- package/dist/utils/originPermissions/createOriginPermissions.d.cts +24 -0
- package/dist/utils/originPermissions/createOriginPermissions.d.cts.map +1 -0
- package/dist/utils/originPermissions/createOriginPermissions.d.mts +24 -0
- package/dist/utils/originPermissions/createOriginPermissions.d.mts.map +1 -0
- package/dist/utils/originPermissions/createOriginPermissions.mjs +26 -0
- package/dist/utils/originPermissions/createOriginPermissions.mjs.map +1 -0
- package/dist/utils/originPermissions/validateOrigin.cjs +23 -0
- package/dist/utils/originPermissions/validateOrigin.cjs.map +1 -0
- package/dist/utils/originPermissions/validateOrigin.d.cts +10 -0
- package/dist/utils/originPermissions/validateOrigin.d.cts.map +1 -0
- package/dist/utils/originPermissions/validateOrigin.d.mts +10 -0
- package/dist/utils/originPermissions/validateOrigin.d.mts.map +1 -0
- package/dist/utils/originPermissions/validateOrigin.mjs +19 -0
- package/dist/utils/originPermissions/validateOrigin.mjs.map +1 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.cjs +89 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.cjs.map +1 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.d.cts +143 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.d.cts.map +1 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.d.mts +143 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.d.mts.map +1 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.mjs +85 -0
- package/dist/utils/proofOfOwnership/proofOfOwnership.mjs.map +1 -0
- package/dist/utils/safeMerge/safeMerge.cjs +26 -0
- package/dist/utils/safeMerge/safeMerge.cjs.map +1 -0
- package/dist/utils/safeMerge/safeMerge.d.cts +17 -0
- package/dist/utils/safeMerge/safeMerge.d.cts.map +1 -0
- package/dist/utils/safeMerge/safeMerge.d.mts +17 -0
- package/dist/utils/safeMerge/safeMerge.d.mts.map +1 -0
- package/dist/utils/safeMerge/safeMerge.mjs +22 -0
- package/dist/utils/safeMerge/safeMerge.mjs.map +1 -0
- package/dist/utils/sanitize/sanitize.cjs +42 -0
- package/dist/utils/sanitize/sanitize.cjs.map +1 -0
- package/dist/utils/sanitize/sanitize.d.cts +15 -0
- package/dist/utils/sanitize/sanitize.d.cts.map +1 -0
- package/dist/utils/sanitize/sanitize.d.mts +15 -0
- package/dist/utils/sanitize/sanitize.d.mts.map +1 -0
- package/dist/utils/sanitize/sanitize.mjs +38 -0
- package/dist/utils/sanitize/sanitize.mjs.map +1 -0
- package/dist/utils/serialization/serialization.cjs +73 -0
- package/dist/utils/serialization/serialization.cjs.map +1 -0
- package/dist/utils/serialization/serialization.d.cts +19 -0
- package/dist/utils/serialization/serialization.d.cts.map +1 -0
- package/dist/utils/serialization/serialization.d.mts +19 -0
- package/dist/utils/serialization/serialization.d.mts.map +1 -0
- package/dist/utils/serialization/serialization.mjs +69 -0
- package/dist/utils/serialization/serialization.mjs.map +1 -0
- package/dist/utils/serialization/types.cjs +3 -0
- package/dist/utils/serialization/types.cjs.map +1 -0
- package/dist/utils/serialization/types.d.cts +8 -0
- package/dist/utils/serialization/types.d.cts.map +1 -0
- package/dist/utils/serialization/types.d.mts +8 -0
- package/dist/utils/serialization/types.d.mts.map +1 -0
- package/dist/utils/serialization/types.mjs +2 -0
- package/dist/utils/serialization/types.mjs.map +1 -0
- package/dist/utils/state/IStateManager.cjs +3 -0
- package/dist/utils/state/IStateManager.cjs.map +1 -0
- package/dist/utils/state/IStateManager.d.cts +69 -0
- package/dist/utils/state/IStateManager.d.cts.map +1 -0
- package/dist/utils/state/IStateManager.d.mts +69 -0
- package/dist/utils/state/IStateManager.d.mts.map +1 -0
- package/dist/utils/state/IStateManager.mjs +2 -0
- package/dist/utils/state/IStateManager.mjs.map +1 -0
- package/dist/utils/state/InMemoryState.cjs +41 -0
- package/dist/utils/state/InMemoryState.cjs.map +1 -0
- package/dist/utils/state/InMemoryState.d.cts +18 -0
- package/dist/utils/state/InMemoryState.d.cts.map +1 -0
- package/dist/utils/state/InMemoryState.d.mts +18 -0
- package/dist/utils/state/InMemoryState.d.mts.map +1 -0
- package/dist/utils/state/InMemoryState.mjs +38 -0
- package/dist/utils/state/InMemoryState.mjs.map +1 -0
- package/dist/utils/state/State.cjs +159 -0
- package/dist/utils/state/State.cjs.map +1 -0
- package/dist/utils/state/State.d.cts +25 -0
- package/dist/utils/state/State.d.cts.map +1 -0
- package/dist/utils/state/State.d.mts +25 -0
- package/dist/utils/state/State.d.mts.map +1 -0
- package/dist/utils/state/State.mjs +156 -0
- package/dist/utils/state/State.mjs.map +1 -0
- package/dist/utils/transactionType/transactionType.cjs +32 -0
- package/dist/utils/transactionType/transactionType.cjs.map +1 -0
- package/dist/utils/transactionType/transactionType.d.cts +17 -0
- package/dist/utils/transactionType/transactionType.d.cts.map +1 -0
- package/dist/utils/transactionType/transactionType.d.mts +17 -0
- package/dist/utils/transactionType/transactionType.d.mts.map +1 -0
- package/dist/utils/transactionType/transactionType.mjs +28 -0
- package/dist/utils/transactionType/transactionType.mjs.map +1 -0
- package/dist/utils/urlStruct/urlStruct.cjs +96 -0
- package/dist/utils/urlStruct/urlStruct.cjs.map +1 -0
- package/dist/utils/urlStruct/urlStruct.d.cts +25 -0
- package/dist/utils/urlStruct/urlStruct.d.cts.map +1 -0
- package/dist/utils/urlStruct/urlStruct.d.mts +25 -0
- package/dist/utils/urlStruct/urlStruct.d.mts.map +1 -0
- package/dist/utils/urlStruct/urlStruct.mjs +93 -0
- package/dist/utils/urlStruct/urlStruct.mjs.map +1 -0
- package/dist/utils/uuidStruct/uuidStruct.cjs +12 -0
- package/dist/utils/uuidStruct/uuidStruct.cjs.map +1 -0
- package/dist/utils/uuidStruct/uuidStruct.d.cts +8 -0
- package/dist/utils/uuidStruct/uuidStruct.d.cts.map +1 -0
- package/dist/utils/uuidStruct/uuidStruct.d.mts +8 -0
- package/dist/utils/uuidStruct/uuidStruct.d.mts.map +1 -0
- package/dist/utils/uuidStruct/uuidStruct.mjs +9 -0
- package/dist/utils/uuidStruct/uuidStruct.mjs.map +1 -0
- package/package.json +33 -13
- package/dist/logger.cjs +0 -57
- package/dist/logger.cjs.map +0 -1
- package/dist/logger.d.cts +0 -30
- package/dist/logger.d.cts.map +0 -1
- package/dist/logger.d.mts +0 -30
- package/dist/logger.d.mts.map +0 -1
- package/dist/logger.mjs +0 -53
- package/dist/logger.mjs.map +0 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UrlStruct = void 0;
|
|
4
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
5
|
+
/**
|
|
6
|
+
* Validates that a string is a valid and safe URL.
|
|
7
|
+
*
|
|
8
|
+
* It rejects:
|
|
9
|
+
* - Non-HTTP/HTTPS/WSS protocols
|
|
10
|
+
* - Malformed URL format or incorrect protocol format
|
|
11
|
+
* - Invalid hostname format (must follow proper domain naming conventions)
|
|
12
|
+
* - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
|
|
13
|
+
* - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
|
|
14
|
+
* - Directory traversal attempts (../, ..%2f, ..%2F)
|
|
15
|
+
*
|
|
16
|
+
* Dangerous patterns including:
|
|
17
|
+
* - HTML tags.
|
|
18
|
+
* - JavaScript protocol.
|
|
19
|
+
* - Data URI scheme.
|
|
20
|
+
* - Template injection (${...}, #{...}).
|
|
21
|
+
* - Command injection (|, ;).
|
|
22
|
+
* - CRLF injection.
|
|
23
|
+
* - URL credential injection.
|
|
24
|
+
* - SQL injection attempts.
|
|
25
|
+
* - Open redirect parameters.
|
|
26
|
+
* - Non-printable characters.
|
|
27
|
+
*/
|
|
28
|
+
exports.UrlStruct = (0, superstruct_1.refine)((0, superstruct_1.string)(), 'safe-url', (value) => {
|
|
29
|
+
try {
|
|
30
|
+
// Basic URL validation
|
|
31
|
+
const url = new URL(value);
|
|
32
|
+
// Protocol check
|
|
33
|
+
const supportedProtocols = ['http:', 'https:', 'wss:'];
|
|
34
|
+
if (!supportedProtocols.includes(url.protocol)) {
|
|
35
|
+
return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;
|
|
36
|
+
}
|
|
37
|
+
// Validate URL format
|
|
38
|
+
if (!value.match(/^(https?|wss):\/\/[^/]+\/?/u)) {
|
|
39
|
+
return 'Malformed URL - incorrect protocol format';
|
|
40
|
+
}
|
|
41
|
+
// Validate hostname format. Accepts localhost and ports (needed for tests)
|
|
42
|
+
const hostname = url.hostname.toLowerCase();
|
|
43
|
+
if (hostname !== 'localhost' &&
|
|
44
|
+
(!hostname.includes('.') ||
|
|
45
|
+
!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(hostname))) {
|
|
46
|
+
return 'Invalid hostname format';
|
|
47
|
+
}
|
|
48
|
+
// Check for protocol pollution in the entire URL
|
|
49
|
+
const decodedValue = decodeURIComponent(value.toLowerCase());
|
|
50
|
+
if (value.includes('\\') ||
|
|
51
|
+
value.includes('@') ||
|
|
52
|
+
decodedValue.includes('\\') ||
|
|
53
|
+
decodedValue.includes('@') ||
|
|
54
|
+
value.toLowerCase().includes('%2f@') ||
|
|
55
|
+
value.toLowerCase().includes('%5c@')) {
|
|
56
|
+
return 'URL contains protocol pollution attempts';
|
|
57
|
+
}
|
|
58
|
+
// Check for directory traversal
|
|
59
|
+
if (value.includes('../') ||
|
|
60
|
+
value.includes('..%2f') ||
|
|
61
|
+
value.includes('..%2F')) {
|
|
62
|
+
return 'Directory traversal attempts are not allowed';
|
|
63
|
+
}
|
|
64
|
+
// Check for dangerous patterns
|
|
65
|
+
const dangerousPatterns = [
|
|
66
|
+
/<[^>]*>/u, // HTML tags
|
|
67
|
+
/javascript:/u, // JavaScript protocol
|
|
68
|
+
/data:/u, // Data URI scheme
|
|
69
|
+
/\\[@\\]/u, // Enhanced protocol pollution check
|
|
70
|
+
/%2f@/u, // Protocol pollution
|
|
71
|
+
/[^\x20-\x7E]/u, // Non-printable characters
|
|
72
|
+
/\$\{.*?\}/u, // Template injection
|
|
73
|
+
/#\{.*?\}/u, // Template injection
|
|
74
|
+
/[|;]/u, // Command injection
|
|
75
|
+
/%0[acd]|%0[acd]/u, // CRLF injection
|
|
76
|
+
/\/\/\w+@/u, // URL credential injection
|
|
77
|
+
// Enhanced SQL injection patterns
|
|
78
|
+
/(?:[^a-z]|^)(?:union\s+(?:all\s+)?select|select\s+(?:.*\s+)?from|insert\s+into|update\s+.*\s+set|delete\s+from|drop\s+table|alter\s+table|create\s+table|exec(?:ute)?|union|where\s+[\d\w]\s*=\s*[\d\w]|\bor\b\s*[\d\w]\s*=\s*[\d\w])/iu,
|
|
79
|
+
/'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection
|
|
80
|
+
/%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection
|
|
81
|
+
/%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords
|
|
82
|
+
/[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\/\/|https?:)/iu, // Open redirect parameters
|
|
83
|
+
/[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\/\/|https?:)/iu, // URL-encoded open redirect parameters
|
|
84
|
+
];
|
|
85
|
+
for (const patt of dangerousPatterns) {
|
|
86
|
+
if (patt.test(decodedValue)) {
|
|
87
|
+
return 'URL contains potentially malicious patterns';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return `Invalid URL format: ${error.message}`;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=urlStruct.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlStruct.cjs","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"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","sourcesContent":["import { refine, string } from '@metamask/superstruct';\n\n/**\n * Validates that a string is a valid and safe URL.\n *\n * It rejects:\n * - Non-HTTP/HTTPS/WSS protocols\n * - Malformed URL format or incorrect protocol format\n * - Invalid hostname format (must follow proper domain naming conventions)\n * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)\n * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)\n * - Directory traversal attempts (../, ..%2f, ..%2F)\n *\n * Dangerous patterns including:\n * - HTML tags.\n * - JavaScript protocol.\n * - Data URI scheme.\n * - Template injection (${...}, #{...}).\n * - Command injection (|, ;).\n * - CRLF injection.\n * - URL credential injection.\n * - SQL injection attempts.\n * - Open redirect parameters.\n * - Non-printable characters.\n */\nexport const UrlStruct = refine(string(), 'safe-url', (value) => {\n try {\n // Basic URL validation\n const url = new URL(value);\n\n // Protocol check\n const supportedProtocols = ['http:', 'https:', 'wss:'];\n if (!supportedProtocols.includes(url.protocol)) {\n return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;\n }\n\n // Validate URL format\n if (!value.match(/^(https?|wss):\\/\\/[^/]+\\/?/u)) {\n return 'Malformed URL - incorrect protocol format';\n }\n\n // Validate hostname format. Accepts localhost and ports (needed for tests)\n const hostname = url.hostname.toLowerCase();\n if (\n hostname !== 'localhost' &&\n (!hostname.includes('.') ||\n !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(\n hostname,\n ))\n ) {\n return 'Invalid hostname format';\n }\n\n // Check for protocol pollution in the entire URL\n const decodedValue = decodeURIComponent(value.toLowerCase());\n if (\n value.includes('\\\\') ||\n value.includes('@') ||\n decodedValue.includes('\\\\') ||\n decodedValue.includes('@') ||\n value.toLowerCase().includes('%2f@') ||\n value.toLowerCase().includes('%5c@')\n ) {\n return 'URL contains protocol pollution attempts';\n }\n\n // Check for directory traversal\n if (\n value.includes('../') ||\n value.includes('..%2f') ||\n value.includes('..%2F')\n ) {\n return 'Directory traversal attempts are not allowed';\n }\n\n // Check for dangerous patterns\n const dangerousPatterns = [\n /<[^>]*>/u, // HTML tags\n /javascript:/u, // JavaScript protocol\n /data:/u, // Data URI scheme\n /\\\\[@\\\\]/u, // Enhanced protocol pollution check\n /%2f@/u, // Protocol pollution\n /[^\\x20-\\x7E]/u, // Non-printable characters\n /\\$\\{.*?\\}/u, // Template injection\n /#\\{.*?\\}/u, // Template injection\n /[|;]/u, // Command injection\n /%0[acd]|%0[acd]/u, // CRLF injection\n /\\/\\/\\w+@/u, // URL credential injection\n // Enhanced SQL injection patterns\n /(?:[^a-z]|^)(?:union\\s+(?:all\\s+)?select|select\\s+(?:.*\\s+)?from|insert\\s+into|update\\s+.*\\s+set|delete\\s+from|drop\\s+table|alter\\s+table|create\\s+table|exec(?:ute)?|union|where\\s+[\\d\\w]\\s*=\\s*[\\d\\w]|\\bor\\b\\s*[\\d\\w]\\s*=\\s*[\\d\\w])/iu,\n /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection\n /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection\n /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\\/\\/|https?:)/iu, // Open redirect parameters\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\\/\\/|https?:)/iu, // URL-encoded open redirect parameters\n ];\n\n for (const patt of dangerousPatterns) {\n if (patt.test(decodedValue)) {\n return 'URL contains potentially malicious patterns';\n }\n }\n\n return true;\n } catch (error) {\n return `Invalid URL format: ${(error as Error).message}`;\n }\n});\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates that a string is a valid and safe URL.
|
|
3
|
+
*
|
|
4
|
+
* It rejects:
|
|
5
|
+
* - Non-HTTP/HTTPS/WSS protocols
|
|
6
|
+
* - Malformed URL format or incorrect protocol format
|
|
7
|
+
* - Invalid hostname format (must follow proper domain naming conventions)
|
|
8
|
+
* - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
|
|
9
|
+
* - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
|
|
10
|
+
* - Directory traversal attempts (../, ..%2f, ..%2F)
|
|
11
|
+
*
|
|
12
|
+
* Dangerous patterns including:
|
|
13
|
+
* - HTML tags.
|
|
14
|
+
* - JavaScript protocol.
|
|
15
|
+
* - Data URI scheme.
|
|
16
|
+
* - Template injection (${...}, #{...}).
|
|
17
|
+
* - Command injection (|, ;).
|
|
18
|
+
* - CRLF injection.
|
|
19
|
+
* - URL credential injection.
|
|
20
|
+
* - SQL injection attempts.
|
|
21
|
+
* - Open redirect parameters.
|
|
22
|
+
* - Non-printable characters.
|
|
23
|
+
*/
|
|
24
|
+
export declare const UrlStruct: import("@metamask/superstruct").Struct<string, null>;
|
|
25
|
+
//# sourceMappingURL=urlStruct.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlStruct.d.cts","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,SAAS,sDAkFpB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates that a string is a valid and safe URL.
|
|
3
|
+
*
|
|
4
|
+
* It rejects:
|
|
5
|
+
* - Non-HTTP/HTTPS/WSS protocols
|
|
6
|
+
* - Malformed URL format or incorrect protocol format
|
|
7
|
+
* - Invalid hostname format (must follow proper domain naming conventions)
|
|
8
|
+
* - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
|
|
9
|
+
* - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
|
|
10
|
+
* - Directory traversal attempts (../, ..%2f, ..%2F)
|
|
11
|
+
*
|
|
12
|
+
* Dangerous patterns including:
|
|
13
|
+
* - HTML tags.
|
|
14
|
+
* - JavaScript protocol.
|
|
15
|
+
* - Data URI scheme.
|
|
16
|
+
* - Template injection (${...}, #{...}).
|
|
17
|
+
* - Command injection (|, ;).
|
|
18
|
+
* - CRLF injection.
|
|
19
|
+
* - URL credential injection.
|
|
20
|
+
* - SQL injection attempts.
|
|
21
|
+
* - Open redirect parameters.
|
|
22
|
+
* - Non-printable characters.
|
|
23
|
+
*/
|
|
24
|
+
export declare const UrlStruct: import("@metamask/superstruct").Struct<string, null>;
|
|
25
|
+
//# sourceMappingURL=urlStruct.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlStruct.d.mts","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,SAAS,sDAkFpB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { refine, string } from "@metamask/superstruct";
|
|
2
|
+
/**
|
|
3
|
+
* Validates that a string is a valid and safe URL.
|
|
4
|
+
*
|
|
5
|
+
* It rejects:
|
|
6
|
+
* - Non-HTTP/HTTPS/WSS protocols
|
|
7
|
+
* - Malformed URL format or incorrect protocol format
|
|
8
|
+
* - Invalid hostname format (must follow proper domain naming conventions)
|
|
9
|
+
* - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)
|
|
10
|
+
* - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)
|
|
11
|
+
* - Directory traversal attempts (../, ..%2f, ..%2F)
|
|
12
|
+
*
|
|
13
|
+
* Dangerous patterns including:
|
|
14
|
+
* - HTML tags.
|
|
15
|
+
* - JavaScript protocol.
|
|
16
|
+
* - Data URI scheme.
|
|
17
|
+
* - Template injection (${...}, #{...}).
|
|
18
|
+
* - Command injection (|, ;).
|
|
19
|
+
* - CRLF injection.
|
|
20
|
+
* - URL credential injection.
|
|
21
|
+
* - SQL injection attempts.
|
|
22
|
+
* - Open redirect parameters.
|
|
23
|
+
* - Non-printable characters.
|
|
24
|
+
*/
|
|
25
|
+
export const UrlStruct = refine(string(), 'safe-url', (value) => {
|
|
26
|
+
try {
|
|
27
|
+
// Basic URL validation
|
|
28
|
+
const url = new URL(value);
|
|
29
|
+
// Protocol check
|
|
30
|
+
const supportedProtocols = ['http:', 'https:', 'wss:'];
|
|
31
|
+
if (!supportedProtocols.includes(url.protocol)) {
|
|
32
|
+
return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;
|
|
33
|
+
}
|
|
34
|
+
// Validate URL format
|
|
35
|
+
if (!value.match(/^(https?|wss):\/\/[^/]+\/?/u)) {
|
|
36
|
+
return 'Malformed URL - incorrect protocol format';
|
|
37
|
+
}
|
|
38
|
+
// Validate hostname format. Accepts localhost and ports (needed for tests)
|
|
39
|
+
const hostname = url.hostname.toLowerCase();
|
|
40
|
+
if (hostname !== 'localhost' &&
|
|
41
|
+
(!hostname.includes('.') ||
|
|
42
|
+
!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(hostname))) {
|
|
43
|
+
return 'Invalid hostname format';
|
|
44
|
+
}
|
|
45
|
+
// Check for protocol pollution in the entire URL
|
|
46
|
+
const decodedValue = decodeURIComponent(value.toLowerCase());
|
|
47
|
+
if (value.includes('\\') ||
|
|
48
|
+
value.includes('@') ||
|
|
49
|
+
decodedValue.includes('\\') ||
|
|
50
|
+
decodedValue.includes('@') ||
|
|
51
|
+
value.toLowerCase().includes('%2f@') ||
|
|
52
|
+
value.toLowerCase().includes('%5c@')) {
|
|
53
|
+
return 'URL contains protocol pollution attempts';
|
|
54
|
+
}
|
|
55
|
+
// Check for directory traversal
|
|
56
|
+
if (value.includes('../') ||
|
|
57
|
+
value.includes('..%2f') ||
|
|
58
|
+
value.includes('..%2F')) {
|
|
59
|
+
return 'Directory traversal attempts are not allowed';
|
|
60
|
+
}
|
|
61
|
+
// Check for dangerous patterns
|
|
62
|
+
const dangerousPatterns = [
|
|
63
|
+
/<[^>]*>/u, // HTML tags
|
|
64
|
+
/javascript:/u, // JavaScript protocol
|
|
65
|
+
/data:/u, // Data URI scheme
|
|
66
|
+
/\\[@\\]/u, // Enhanced protocol pollution check
|
|
67
|
+
/%2f@/u, // Protocol pollution
|
|
68
|
+
/[^\x20-\x7E]/u, // Non-printable characters
|
|
69
|
+
/\$\{.*?\}/u, // Template injection
|
|
70
|
+
/#\{.*?\}/u, // Template injection
|
|
71
|
+
/[|;]/u, // Command injection
|
|
72
|
+
/%0[acd]|%0[acd]/u, // CRLF injection
|
|
73
|
+
/\/\/\w+@/u, // URL credential injection
|
|
74
|
+
// Enhanced SQL injection patterns
|
|
75
|
+
/(?:[^a-z]|^)(?:union\s+(?:all\s+)?select|select\s+(?:.*\s+)?from|insert\s+into|update\s+.*\s+set|delete\s+from|drop\s+table|alter\s+table|create\s+table|exec(?:ute)?|union|where\s+[\d\w]\s*=\s*[\d\w]|\bor\b\s*[\d\w]\s*=\s*[\d\w])/iu,
|
|
76
|
+
/'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection
|
|
77
|
+
/%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection
|
|
78
|
+
/%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords
|
|
79
|
+
/[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\/\/|https?:)/iu, // Open redirect parameters
|
|
80
|
+
/[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\/\/|https?:)/iu, // URL-encoded open redirect parameters
|
|
81
|
+
];
|
|
82
|
+
for (const patt of dangerousPatterns) {
|
|
83
|
+
if (patt.test(decodedValue)) {
|
|
84
|
+
return 'URL contains potentially malicious patterns';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return `Invalid URL format: ${error.message}`;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=urlStruct.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlStruct.mjs","sourceRoot":"","sources":["../../../src/utils/urlStruct/urlStruct.ts"],"names":[],"mappings":"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","sourcesContent":["import { refine, string } from '@metamask/superstruct';\n\n/**\n * Validates that a string is a valid and safe URL.\n *\n * It rejects:\n * - Non-HTTP/HTTPS/WSS protocols\n * - Malformed URL format or incorrect protocol format\n * - Invalid hostname format (must follow proper domain naming conventions)\n * - Protocol pollution attempts (backslashes, @ symbol, %2f@, %5c@)\n * - Invalid hostname characters (backslashes, @ symbol, forward slashes, encoded forward slashes)\n * - Directory traversal attempts (../, ..%2f, ..%2F)\n *\n * Dangerous patterns including:\n * - HTML tags.\n * - JavaScript protocol.\n * - Data URI scheme.\n * - Template injection (${...}, #{...}).\n * - Command injection (|, ;).\n * - CRLF injection.\n * - URL credential injection.\n * - SQL injection attempts.\n * - Open redirect parameters.\n * - Non-printable characters.\n */\nexport const UrlStruct = refine(string(), 'safe-url', (value) => {\n try {\n // Basic URL validation\n const url = new URL(value);\n\n // Protocol check\n const supportedProtocols = ['http:', 'https:', 'wss:'];\n if (!supportedProtocols.includes(url.protocol)) {\n return `URL must use one of the following protocols: ${supportedProtocols.join(', ')}`;\n }\n\n // Validate URL format\n if (!value.match(/^(https?|wss):\\/\\/[^/]+\\/?/u)) {\n return 'Malformed URL - incorrect protocol format';\n }\n\n // Validate hostname format. Accepts localhost and ports (needed for tests)\n const hostname = url.hostname.toLowerCase();\n if (\n hostname !== 'localhost' &&\n (!hostname.includes('.') ||\n !/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/u.test(\n hostname,\n ))\n ) {\n return 'Invalid hostname format';\n }\n\n // Check for protocol pollution in the entire URL\n const decodedValue = decodeURIComponent(value.toLowerCase());\n if (\n value.includes('\\\\') ||\n value.includes('@') ||\n decodedValue.includes('\\\\') ||\n decodedValue.includes('@') ||\n value.toLowerCase().includes('%2f@') ||\n value.toLowerCase().includes('%5c@')\n ) {\n return 'URL contains protocol pollution attempts';\n }\n\n // Check for directory traversal\n if (\n value.includes('../') ||\n value.includes('..%2f') ||\n value.includes('..%2F')\n ) {\n return 'Directory traversal attempts are not allowed';\n }\n\n // Check for dangerous patterns\n const dangerousPatterns = [\n /<[^>]*>/u, // HTML tags\n /javascript:/u, // JavaScript protocol\n /data:/u, // Data URI scheme\n /\\\\[@\\\\]/u, // Enhanced protocol pollution check\n /%2f@/u, // Protocol pollution\n /[^\\x20-\\x7E]/u, // Non-printable characters\n /\\$\\{.*?\\}/u, // Template injection\n /#\\{.*?\\}/u, // Template injection\n /[|;]/u, // Command injection\n /%0[acd]|%0[acd]/u, // CRLF injection\n /\\/\\/\\w+@/u, // URL credential injection\n // Enhanced SQL injection patterns\n /(?:[^a-z]|^)(?:union\\s+(?:all\\s+)?select|select\\s+(?:.*\\s+)?from|insert\\s+into|update\\s+.*\\s+set|delete\\s+from|drop\\s+table|alter\\s+table|create\\s+table|exec(?:ute)?|union|where\\s+[\\d\\w]\\s*=\\s*[\\d\\w]|\\bor\\b\\s*[\\d\\w]\\s*=\\s*[\\d\\w])/iu,\n /'.*?(?:OR|UNION|SELECT|FROM|WHERE).*?'/iu, // SQL injection\n /%27.*?(?:OR|UNION|SELECT|FROM|WHERE).*?(?:%27|')/iu, // URL-encoded SQL injection\n /%20(?:OR|UNION|SELECT|FROM|WHERE)%20/iu, // URL-encoded SQL keywords\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=(?:[^&]*\\/\\/|https?:)/iu, // Open redirect parameters\n /[?&](?:url|redirect|next|return_to|return_url|goto|destination|continue|redirect_uri)=%(?:[^&]*\\/\\/|https?:)/iu, // URL-encoded open redirect parameters\n ];\n\n for (const patt of dangerousPatterns) {\n if (patt.test(decodedValue)) {\n return 'URL contains potentially malicious patterns';\n }\n }\n\n return true;\n } catch (error) {\n return `Invalid URL format: ${(error as Error).message}`;\n }\n});\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UuidStruct = void 0;
|
|
4
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
5
|
+
/**
|
|
6
|
+
* Superstruct for a UUID v4 string.
|
|
7
|
+
*
|
|
8
|
+
* Accepts lowercase and uppercase hex. Rejects other UUID versions and
|
|
9
|
+
* non-UUID strings.
|
|
10
|
+
*/
|
|
11
|
+
exports.UuidStruct = (0, superstruct_1.pattern)((0, superstruct_1.string)(), /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu);
|
|
12
|
+
//# sourceMappingURL=uuidStruct.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuidStruct.cjs","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAExD;;;;;GAKG;AACU,QAAA,UAAU,GAAG,IAAA,qBAAO,EAC/B,IAAA,oBAAM,GAAE,EACR,yEAAyE,CAC1E,CAAC","sourcesContent":["import { pattern, string } from '@metamask/superstruct';\n\n/**\n * Superstruct for a UUID v4 string.\n *\n * Accepts lowercase and uppercase hex. Rejects other UUID versions and\n * non-UUID strings.\n */\nexport const UuidStruct = pattern(\n string(),\n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n);\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Superstruct for a UUID v4 string.
|
|
3
|
+
*
|
|
4
|
+
* Accepts lowercase and uppercase hex. Rejects other UUID versions and
|
|
5
|
+
* non-UUID strings.
|
|
6
|
+
*/
|
|
7
|
+
export declare const UuidStruct: import("@metamask/superstruct").Struct<string, null>;
|
|
8
|
+
//# sourceMappingURL=uuidStruct.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuidStruct.d.cts","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sDAGtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Superstruct for a UUID v4 string.
|
|
3
|
+
*
|
|
4
|
+
* Accepts lowercase and uppercase hex. Rejects other UUID versions and
|
|
5
|
+
* non-UUID strings.
|
|
6
|
+
*/
|
|
7
|
+
export declare const UuidStruct: import("@metamask/superstruct").Struct<string, null>;
|
|
8
|
+
//# sourceMappingURL=uuidStruct.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuidStruct.d.mts","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sDAGtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { pattern, string } from "@metamask/superstruct";
|
|
2
|
+
/**
|
|
3
|
+
* Superstruct for a UUID v4 string.
|
|
4
|
+
*
|
|
5
|
+
* Accepts lowercase and uppercase hex. Rejects other UUID versions and
|
|
6
|
+
* non-UUID strings.
|
|
7
|
+
*/
|
|
8
|
+
export const UuidStruct = pattern(string(), /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu);
|
|
9
|
+
//# sourceMappingURL=uuidStruct.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuidStruct.mjs","sourceRoot":"","sources":["../../../src/utils/uuidStruct/uuidStruct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,MAAM,EAAE,EACR,yEAAyE,CAC1E,CAAC","sourcesContent":["import { pattern, string } from '@metamask/superstruct';\n\n/**\n * Superstruct for a UUID v4 string.\n *\n * Accepts lowercase and uppercase hex. Rejects other UUID versions and\n * non-UUID strings.\n */\nexport const UuidStruct = pattern(\n string(),\n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/snap-networks-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Shared utilities for MetaMask network snaps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -32,14 +32,24 @@
|
|
|
32
32
|
"default": "./dist/index.cjs"
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
|
+
"./dedupe": {
|
|
36
|
+
"import": {
|
|
37
|
+
"types": "./dist/utils/dedupe/InFlightCoalescer.d.mts",
|
|
38
|
+
"default": "./dist/utils/dedupe/InFlightCoalescer.mjs"
|
|
39
|
+
},
|
|
40
|
+
"require": {
|
|
41
|
+
"types": "./dist/utils/dedupe/InFlightCoalescer.d.cts",
|
|
42
|
+
"default": "./dist/utils/dedupe/InFlightCoalescer.cjs"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
35
45
|
"./logger": {
|
|
36
46
|
"import": {
|
|
37
|
-
"types": "./dist/logger.d.mts",
|
|
38
|
-
"default": "./dist/logger.mjs"
|
|
47
|
+
"types": "./dist/utils/logger/Logger.d.mts",
|
|
48
|
+
"default": "./dist/utils/logger/Logger.mjs"
|
|
39
49
|
},
|
|
40
50
|
"require": {
|
|
41
|
-
"types": "./dist/logger.d.cts",
|
|
42
|
-
"default": "./dist/logger.cjs"
|
|
51
|
+
"types": "./dist/utils/logger/Logger.d.cts",
|
|
52
|
+
"default": "./dist/utils/logger/Logger.cjs"
|
|
43
53
|
}
|
|
44
54
|
},
|
|
45
55
|
"./package.json": "./package.json"
|
|
@@ -49,30 +59,40 @@
|
|
|
49
59
|
"registry": "https://registry.npmjs.org/"
|
|
50
60
|
},
|
|
51
61
|
"scripts": {
|
|
52
|
-
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
|
|
53
|
-
"build:all": "ts-bridge --project tsconfig.build.json --verbose --clean",
|
|
62
|
+
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references && yarn build:assets",
|
|
63
|
+
"build:all": "ts-bridge --project tsconfig.build.json --verbose --clean && yarn build:assets",
|
|
64
|
+
"build:assets": "rsync -a --prune-empty-dirs --include='*/' --include='*.svg' --exclude='*' src/ dist/",
|
|
54
65
|
"build:docs": "typedoc",
|
|
55
66
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/snap-networks-utils",
|
|
56
67
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/snap-networks-utils",
|
|
57
68
|
"since-latest-release": "../../scripts/since-latest-release.sh",
|
|
58
|
-
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
|
|
69
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter && yarn coverage:ratchet",
|
|
70
|
+
"coverage:ratchet": "[ -n \"$CI\" ] || jest-it-up",
|
|
59
71
|
"test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
|
|
60
72
|
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
|
|
61
73
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
|
|
62
74
|
},
|
|
63
75
|
"dependencies": {
|
|
64
|
-
"@metamask/assets-controller": "^
|
|
76
|
+
"@metamask/assets-controller": "^15.0.0",
|
|
77
|
+
"@metamask/keyring-api": "^24.1.0",
|
|
78
|
+
"@metamask/keyring-internal-api": "^12.0.0",
|
|
65
79
|
"@metamask/remote-feature-flag-controller": "^5.0.0",
|
|
66
|
-
"@metamask/snaps-sdk": "^
|
|
67
|
-
"@metamask/
|
|
80
|
+
"@metamask/snaps-sdk": "^12.0.1",
|
|
81
|
+
"@metamask/superstruct": "^3.4.1",
|
|
82
|
+
"@metamask/utils": "^11.11.0",
|
|
83
|
+
"async-mutex": "^0.5.0",
|
|
84
|
+
"bignumber.js": "^9.3.1",
|
|
85
|
+
"lodash": "^4.17.21"
|
|
68
86
|
},
|
|
69
87
|
"devDependencies": {
|
|
70
|
-
"@metamask/auto-changelog": "^6.
|
|
88
|
+
"@metamask/auto-changelog": "^6.2.1",
|
|
71
89
|
"@metamask/messenger": "^2.0.0",
|
|
72
90
|
"@ts-bridge/cli": "^0.6.4",
|
|
73
91
|
"@types/jest": "^30.0.0",
|
|
92
|
+
"@types/lodash": "^4.17.15",
|
|
74
93
|
"deepmerge": "^4.2.2",
|
|
75
94
|
"jest": "30.0.3",
|
|
95
|
+
"jest-it-up": "^2.0.2",
|
|
76
96
|
"ts-jest": "^29.4.1",
|
|
77
97
|
"tsx": "^4.20.5",
|
|
78
98
|
"typedoc": "^0.25.13",
|
|
@@ -80,6 +100,6 @@
|
|
|
80
100
|
"typescript": "~5.8.3"
|
|
81
101
|
},
|
|
82
102
|
"engines": {
|
|
83
|
-
"node": "
|
|
103
|
+
"node": "^22.14.0 || ^24"
|
|
84
104
|
}
|
|
85
105
|
}
|
package/dist/logger.cjs
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Minimal console logger shared by network snaps.
|
|
4
|
-
*
|
|
5
|
-
* This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
|
|
6
|
-
* tickets will expand shared utilities; snaps can start importing from here.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.noOpLogger = exports.logger = void 0;
|
|
10
|
-
exports.createPrefixedLogger = createPrefixedLogger;
|
|
11
|
-
/**
|
|
12
|
-
* Default logger that forwards to `console`.
|
|
13
|
-
*/
|
|
14
|
-
exports.logger = {
|
|
15
|
-
log: (...args) => {
|
|
16
|
-
console.log(...args);
|
|
17
|
-
},
|
|
18
|
-
info: (...args) => {
|
|
19
|
-
console.info(...args);
|
|
20
|
-
},
|
|
21
|
-
warn: (...args) => {
|
|
22
|
-
console.warn(...args);
|
|
23
|
-
},
|
|
24
|
-
error: (...args) => {
|
|
25
|
-
console.error(...args);
|
|
26
|
-
},
|
|
27
|
-
debug: (...args) => {
|
|
28
|
-
console.debug(...args);
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Logger that discards all messages. Useful in unit tests.
|
|
33
|
-
*/
|
|
34
|
-
exports.noOpLogger = {
|
|
35
|
-
log: () => undefined,
|
|
36
|
-
info: () => undefined,
|
|
37
|
-
warn: () => undefined,
|
|
38
|
-
error: () => undefined,
|
|
39
|
-
debug: () => undefined,
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Returns a logger that prefixes every message.
|
|
43
|
-
*
|
|
44
|
-
* @param baseLogger - Logger to wrap.
|
|
45
|
-
* @param prefix - Prefix prepended to each call.
|
|
46
|
-
* @returns Prefixed logger.
|
|
47
|
-
*/
|
|
48
|
-
function createPrefixedLogger(baseLogger, prefix) {
|
|
49
|
-
return {
|
|
50
|
-
log: (...args) => baseLogger.log(prefix, ...args),
|
|
51
|
-
info: (...args) => baseLogger.info(prefix, ...args),
|
|
52
|
-
warn: (...args) => baseLogger.warn(prefix, ...args),
|
|
53
|
-
error: (...args) => baseLogger.error(prefix, ...args),
|
|
54
|
-
debug: (...args) => baseLogger.debug(prefix, ...args),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=logger.cjs.map
|
package/dist/logger.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.cjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiDH,oDAWC;AAlDD;;GAEG;AACU,QAAA,MAAM,GAAW;IAC5B,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF;;GAEG;AACU,QAAA,UAAU,GAAW;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,UAAkB,EAClB,MAAc;IAEd,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACjE,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Minimal console logger shared by network snaps.\n *\n * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2\n * tickets will expand shared utilities; snaps can start importing from here.\n */\n\nexport type Logger = {\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n};\n\n/**\n * Default logger that forwards to `console`.\n */\nexport const logger: Logger = {\n log: (...args: unknown[]) => {\n console.log(...args);\n },\n info: (...args: unknown[]) => {\n console.info(...args);\n },\n warn: (...args: unknown[]) => {\n console.warn(...args);\n },\n error: (...args: unknown[]) => {\n console.error(...args);\n },\n debug: (...args: unknown[]) => {\n console.debug(...args);\n },\n};\n\n/**\n * Logger that discards all messages. Useful in unit tests.\n */\nexport const noOpLogger: Logger = {\n log: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n debug: () => undefined,\n};\n\n/**\n * Returns a logger that prefixes every message.\n *\n * @param baseLogger - Logger to wrap.\n * @param prefix - Prefix prepended to each call.\n * @returns Prefixed logger.\n */\nexport function createPrefixedLogger(\n baseLogger: Logger,\n prefix: string,\n): Logger {\n return {\n log: (...args: unknown[]) => baseLogger.log(prefix, ...args),\n info: (...args: unknown[]) => baseLogger.info(prefix, ...args),\n warn: (...args: unknown[]) => baseLogger.warn(prefix, ...args),\n error: (...args: unknown[]) => baseLogger.error(prefix, ...args),\n debug: (...args: unknown[]) => baseLogger.debug(prefix, ...args),\n };\n}\n"]}
|
package/dist/logger.d.cts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal console logger shared by network snaps.
|
|
3
|
-
*
|
|
4
|
-
* This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
|
|
5
|
-
* tickets will expand shared utilities; snaps can start importing from here.
|
|
6
|
-
*/
|
|
7
|
-
export type Logger = {
|
|
8
|
-
log: (...args: unknown[]) => void;
|
|
9
|
-
info: (...args: unknown[]) => void;
|
|
10
|
-
warn: (...args: unknown[]) => void;
|
|
11
|
-
error: (...args: unknown[]) => void;
|
|
12
|
-
debug: (...args: unknown[]) => void;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Default logger that forwards to `console`.
|
|
16
|
-
*/
|
|
17
|
-
export declare const logger: Logger;
|
|
18
|
-
/**
|
|
19
|
-
* Logger that discards all messages. Useful in unit tests.
|
|
20
|
-
*/
|
|
21
|
-
export declare const noOpLogger: Logger;
|
|
22
|
-
/**
|
|
23
|
-
* Returns a logger that prefixes every message.
|
|
24
|
-
*
|
|
25
|
-
* @param baseLogger - Logger to wrap.
|
|
26
|
-
* @param prefix - Prefix prepended to each call.
|
|
27
|
-
* @returns Prefixed logger.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createPrefixedLogger(baseLogger: Logger, prefix: string): Logger;
|
|
30
|
-
//# sourceMappingURL=logger.d.cts.map
|
package/dist/logger.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.cts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR"}
|
package/dist/logger.d.mts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal console logger shared by network snaps.
|
|
3
|
-
*
|
|
4
|
-
* This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
|
|
5
|
-
* tickets will expand shared utilities; snaps can start importing from here.
|
|
6
|
-
*/
|
|
7
|
-
export type Logger = {
|
|
8
|
-
log: (...args: unknown[]) => void;
|
|
9
|
-
info: (...args: unknown[]) => void;
|
|
10
|
-
warn: (...args: unknown[]) => void;
|
|
11
|
-
error: (...args: unknown[]) => void;
|
|
12
|
-
debug: (...args: unknown[]) => void;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Default logger that forwards to `console`.
|
|
16
|
-
*/
|
|
17
|
-
export declare const logger: Logger;
|
|
18
|
-
/**
|
|
19
|
-
* Logger that discards all messages. Useful in unit tests.
|
|
20
|
-
*/
|
|
21
|
-
export declare const noOpLogger: Logger;
|
|
22
|
-
/**
|
|
23
|
-
* Returns a logger that prefixes every message.
|
|
24
|
-
*
|
|
25
|
-
* @param baseLogger - Logger to wrap.
|
|
26
|
-
* @param prefix - Prefix prepended to each call.
|
|
27
|
-
* @returns Prefixed logger.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createPrefixedLogger(baseLogger: Logger, prefix: string): Logger;
|
|
30
|
-
//# sourceMappingURL=logger.d.mts.map
|
package/dist/logger.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.mts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAgBpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAQR"}
|
package/dist/logger.mjs
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal console logger shared by network snaps.
|
|
3
|
-
*
|
|
4
|
-
* This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2
|
|
5
|
-
* tickets will expand shared utilities; snaps can start importing from here.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Default logger that forwards to `console`.
|
|
9
|
-
*/
|
|
10
|
-
export const logger = {
|
|
11
|
-
log: (...args) => {
|
|
12
|
-
console.log(...args);
|
|
13
|
-
},
|
|
14
|
-
info: (...args) => {
|
|
15
|
-
console.info(...args);
|
|
16
|
-
},
|
|
17
|
-
warn: (...args) => {
|
|
18
|
-
console.warn(...args);
|
|
19
|
-
},
|
|
20
|
-
error: (...args) => {
|
|
21
|
-
console.error(...args);
|
|
22
|
-
},
|
|
23
|
-
debug: (...args) => {
|
|
24
|
-
console.debug(...args);
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Logger that discards all messages. Useful in unit tests.
|
|
29
|
-
*/
|
|
30
|
-
export const noOpLogger = {
|
|
31
|
-
log: () => undefined,
|
|
32
|
-
info: () => undefined,
|
|
33
|
-
warn: () => undefined,
|
|
34
|
-
error: () => undefined,
|
|
35
|
-
debug: () => undefined,
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Returns a logger that prefixes every message.
|
|
39
|
-
*
|
|
40
|
-
* @param baseLogger - Logger to wrap.
|
|
41
|
-
* @param prefix - Prefix prepended to each call.
|
|
42
|
-
* @returns Prefixed logger.
|
|
43
|
-
*/
|
|
44
|
-
export function createPrefixedLogger(baseLogger, prefix) {
|
|
45
|
-
return {
|
|
46
|
-
log: (...args) => baseLogger.log(prefix, ...args),
|
|
47
|
-
info: (...args) => baseLogger.info(prefix, ...args),
|
|
48
|
-
warn: (...args) => baseLogger.warn(prefix, ...args),
|
|
49
|
-
error: (...args) => baseLogger.error(prefix, ...args),
|
|
50
|
-
debug: (...args) => baseLogger.debug(prefix, ...args),
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=logger.mjs.map
|
package/dist/logger.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.mjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,MAAc;IAEd,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9D,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACjE,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Minimal console logger shared by network snaps.\n *\n * This is a scaffold example for `@metamask/snap-networks-utils`. Later MONO-2\n * tickets will expand shared utilities; snaps can start importing from here.\n */\n\nexport type Logger = {\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n};\n\n/**\n * Default logger that forwards to `console`.\n */\nexport const logger: Logger = {\n log: (...args: unknown[]) => {\n console.log(...args);\n },\n info: (...args: unknown[]) => {\n console.info(...args);\n },\n warn: (...args: unknown[]) => {\n console.warn(...args);\n },\n error: (...args: unknown[]) => {\n console.error(...args);\n },\n debug: (...args: unknown[]) => {\n console.debug(...args);\n },\n};\n\n/**\n * Logger that discards all messages. Useful in unit tests.\n */\nexport const noOpLogger: Logger = {\n log: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n debug: () => undefined,\n};\n\n/**\n * Returns a logger that prefixes every message.\n *\n * @param baseLogger - Logger to wrap.\n * @param prefix - Prefix prepended to each call.\n * @returns Prefixed logger.\n */\nexport function createPrefixedLogger(\n baseLogger: Logger,\n prefix: string,\n): Logger {\n return {\n log: (...args: unknown[]) => baseLogger.log(prefix, ...args),\n info: (...args: unknown[]) => baseLogger.info(prefix, ...args),\n warn: (...args: unknown[]) => baseLogger.warn(prefix, ...args),\n error: (...args: unknown[]) => baseLogger.error(prefix, ...args),\n debug: (...args: unknown[]) => baseLogger.debug(prefix, ...args),\n };\n}\n"]}
|