@gala-chain/launchpad-sdk 5.0.3 → 5.0.4-beta.1
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/EXAMPLES.md +141 -7
- package/README.md +68 -36
- package/dist/ai-docs.json +7357 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +70 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/src/LaunchpadSDK.d.ts +3288 -214
- package/dist/src/LaunchpadSDK.d.ts.map +1 -1
- package/dist/src/api/LaunchpadAPI.d.ts +21 -41
- package/dist/src/api/LaunchpadAPI.d.ts.map +1 -1
- package/dist/src/api/dto/BurnTokensDto.d.ts.map +1 -1
- package/dist/src/api/dto/LockTokenDto.d.ts.map +1 -1
- package/dist/src/api/dto/TransferTokenDto.d.ts.map +1 -1
- package/dist/src/api/dto/UnlockTokenDto.d.ts.map +1 -1
- package/dist/src/auth/JwtAuth.d.ts +145 -0
- package/dist/src/auth/JwtAuth.d.ts.map +1 -0
- package/dist/src/auth/SessionAuthService.d.ts +146 -0
- package/dist/src/auth/SessionAuthService.d.ts.map +1 -0
- package/dist/src/auth/SignatureAuth.d.ts.map +1 -1
- package/dist/src/bridge/BridgeService.d.ts.map +1 -1
- package/dist/src/bridge/GalaConnectClient.d.ts.map +1 -1
- package/dist/src/bridge/constants/tokens.d.ts +4 -3
- package/dist/src/bridge/constants/tokens.d.ts.map +1 -1
- package/dist/src/bridge/index.d.ts +1 -0
- package/dist/src/bridge/index.d.ts.map +1 -1
- package/dist/src/bridge/strategies/BridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts +1 -38
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts +1 -21
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts.map +1 -1
- package/dist/src/bridge/types/bridge.dto.d.ts +15 -2
- package/dist/src/bridge/types/bridge.dto.d.ts.map +1 -1
- package/dist/src/bridge/utils/RateLimiter.d.ts +1 -1
- package/dist/src/bridge/utils/RateLimiter.d.ts.map +1 -1
- package/dist/src/bridge/utils/address-formatter.d.ts +25 -0
- package/dist/src/bridge/utils/address-formatter.d.ts.map +1 -0
- package/dist/src/bridge/utils/addressValidation.d.ts +200 -0
- package/dist/src/bridge/utils/addressValidation.d.ts.map +1 -0
- package/dist/src/bridge/utils/balanceHelpers.d.ts +215 -0
- package/dist/src/bridge/utils/balanceHelpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeErrors.d.ts +98 -0
- package/dist/src/bridge/utils/bridgeErrors.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeOutHelpers.d.ts +68 -0
- package/dist/src/bridge/utils/bridgeOutHelpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgePayload.d.ts +107 -0
- package/dist/src/bridge/utils/bridgePayload.d.ts.map +1 -0
- package/dist/src/bridge/utils/bridgeStatusParser.d.ts +75 -0
- package/dist/src/bridge/utils/bridgeStatusParser.d.ts.map +1 -0
- package/dist/src/bridge/utils/eip712Helpers.d.ts +66 -0
- package/dist/src/bridge/utils/eip712Helpers.d.ts.map +1 -0
- package/dist/src/bridge/utils/index.d.ts +9 -0
- package/dist/src/bridge/utils/index.d.ts.map +1 -1
- package/dist/src/bridge/utils/retry.d.ts +16 -0
- package/dist/src/bridge/utils/retry.d.ts.map +1 -1
- package/dist/src/bridge/utils/strategyDelegation.d.ts +69 -0
- package/dist/src/bridge/utils/strategyDelegation.d.ts.map +1 -0
- package/dist/src/bridge/utils/tokenIdUtils.d.ts +7 -0
- package/dist/src/bridge/utils/tokenIdUtils.d.ts.map +1 -1
- package/dist/src/bridge/utils/tokenMath.d.ts.map +1 -1
- package/dist/src/bridge/utils/tokenMetadataResolver.d.ts +97 -0
- package/dist/src/bridge/utils/tokenMetadataResolver.d.ts.map +1 -0
- package/dist/src/constants/endpoints.d.ts +453 -0
- package/dist/src/constants/endpoints.d.ts.map +1 -1
- package/dist/src/constants/error-messages.d.ts +1 -1
- package/dist/src/constants/error-messages.d.ts.map +1 -1
- package/dist/src/constants/jwt.d.ts +41 -0
- package/dist/src/constants/jwt.d.ts.map +1 -0
- package/dist/src/constants/sdk-defaults.d.ts +37 -0
- package/dist/src/constants/sdk-defaults.d.ts.map +1 -0
- package/dist/src/constants/version.generated.d.ts +1 -1
- package/dist/src/constants/version.generated.d.ts.map +1 -1
- package/dist/src/helpers/sdk.d.ts.map +1 -1
- package/dist/src/helpers/wallet.d.ts +4 -3
- package/dist/src/helpers/wallet.d.ts.map +1 -1
- package/dist/src/index.d.ts +70 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/schemas/files.d.ts +2 -2
- package/dist/src/schemas/launchpad.d.ts +40 -8
- package/dist/src/schemas/launchpad.d.ts.map +1 -1
- package/dist/src/schemas/pagination.d.ts +7 -7
- package/dist/src/schemas/primitives.d.ts.map +1 -1
- package/dist/src/schemas/trade.d.ts +6 -6
- package/dist/src/schemas/user.d.ts +4 -4
- package/dist/src/schemas/validators.d.ts +15 -7
- package/dist/src/schemas/validators.d.ts.map +1 -1
- package/dist/src/services/AbstractCacheService.d.ts +227 -0
- package/dist/src/services/AbstractCacheService.d.ts.map +1 -0
- package/dist/src/services/AbstractTokenFetchService.d.ts +150 -0
- package/dist/src/services/AbstractTokenFetchService.d.ts.map +1 -0
- package/dist/src/services/ApiKeyService.d.ts +205 -0
- package/dist/src/services/ApiKeyService.d.ts.map +1 -0
- package/dist/src/services/BanService.d.ts +195 -0
- package/dist/src/services/BanService.d.ts.map +1 -0
- package/dist/src/services/BaseService.d.ts +50 -3
- package/dist/src/services/BaseService.d.ts.map +1 -1
- package/dist/src/services/BatchedCacheService.d.ts +132 -0
- package/dist/src/services/BatchedCacheService.d.ts.map +1 -0
- package/dist/src/services/BridgeableTokenCache.d.ts +32 -98
- package/dist/src/services/BridgeableTokenCache.d.ts.map +1 -1
- package/dist/src/services/BridgeableTokenService.d.ts +18 -13
- package/dist/src/services/BridgeableTokenService.d.ts.map +1 -1
- package/dist/src/services/BundleService.d.ts.map +1 -1
- package/dist/src/services/BundlerClientFactory.d.ts +32 -0
- package/dist/src/services/BundlerClientFactory.d.ts.map +1 -0
- package/dist/src/services/ChatMessagesService.d.ts +152 -0
- package/dist/src/services/ChatMessagesService.d.ts.map +1 -0
- package/dist/src/services/CommentService.d.ts +119 -0
- package/dist/src/services/CommentService.d.ts.map +1 -0
- package/dist/src/services/CommentsService.d.ts +155 -0
- package/dist/src/services/CommentsService.d.ts.map +1 -0
- package/dist/src/services/ContentFlagService.d.ts +212 -0
- package/dist/src/services/ContentFlagService.d.ts.map +1 -0
- package/dist/src/services/ContentReactionService.d.ts +175 -0
- package/dist/src/services/ContentReactionService.d.ts.map +1 -0
- package/dist/src/services/DexBackendClient.d.ts.map +1 -1
- package/dist/src/services/DexPoolService.d.ts +3 -3
- package/dist/src/services/DexPoolService.d.ts.map +1 -1
- package/dist/src/services/DexQuoteService.d.ts.map +1 -1
- package/dist/src/services/DexService.d.ts +2 -5
- package/dist/src/services/DexService.d.ts.map +1 -1
- package/dist/src/services/GSwapAssetService.d.ts +80 -0
- package/dist/src/services/GSwapAssetService.d.ts.map +1 -0
- package/dist/src/services/GSwapLiquidityMutationService.d.ts +140 -0
- package/dist/src/services/GSwapLiquidityMutationService.d.ts.map +1 -0
- package/dist/src/services/GSwapLiquidityQueryService.d.ts +87 -0
- package/dist/src/services/GSwapLiquidityQueryService.d.ts.map +1 -0
- package/dist/src/services/GSwapPoolCalculationService.d.ts +200 -0
- package/dist/src/services/GSwapPoolCalculationService.d.ts.map +1 -0
- package/dist/src/services/GSwapPoolQueryService.d.ts +116 -0
- package/dist/src/services/GSwapPoolQueryService.d.ts.map +1 -0
- package/dist/src/services/GSwapService.d.ts +14 -0
- package/dist/src/services/GSwapService.d.ts.map +1 -1
- package/dist/src/services/GSwapSwapService.d.ts +68 -0
- package/dist/src/services/GSwapSwapService.d.ts.map +1 -0
- package/dist/src/services/GalaChainBalanceService.d.ts +155 -0
- package/dist/src/services/GalaChainBalanceService.d.ts.map +1 -0
- package/dist/src/services/GalaChainGatewayClient.d.ts +32 -1
- package/dist/src/services/GalaChainGatewayClient.d.ts.map +1 -1
- package/dist/src/services/GalaChainLockService.d.ts +144 -0
- package/dist/src/services/GalaChainLockService.d.ts.map +1 -0
- package/dist/src/services/GalaChainService.d.ts +23 -106
- package/dist/src/services/GalaChainService.d.ts.map +1 -1
- package/dist/src/services/GalaChainTokenService.d.ts +108 -0
- package/dist/src/services/GalaChainTokenService.d.ts.map +1 -0
- package/dist/src/services/GalaChainTransferService.d.ts +205 -0
- package/dist/src/services/GalaChainTransferService.d.ts.map +1 -0
- package/dist/src/services/ImageService.d.ts +24 -8
- package/dist/src/services/ImageService.d.ts.map +1 -1
- package/dist/src/services/LaunchpadService.d.ts +77 -5
- package/dist/src/services/LaunchpadService.d.ts.map +1 -1
- package/dist/src/services/ModeratorService.d.ts +269 -0
- package/dist/src/services/ModeratorService.d.ts.map +1 -0
- package/dist/src/services/MultiPoolStateManager.d.ts +4 -6
- package/dist/src/services/MultiPoolStateManager.d.ts.map +1 -1
- package/dist/src/services/NetworkKeyedCacheService.d.ts +185 -0
- package/dist/src/services/NetworkKeyedCacheService.d.ts.map +1 -0
- package/dist/src/services/OverseerService.d.ts +322 -0
- package/dist/src/services/OverseerService.d.ts.map +1 -0
- package/dist/src/services/PoolCacheManager.d.ts +2 -2
- package/dist/src/services/PoolCacheManager.d.ts.map +1 -1
- package/dist/src/services/PoolService.d.ts +61 -7
- package/dist/src/services/PoolService.d.ts.map +1 -1
- package/dist/src/services/PoolStateManager.d.ts +2 -2
- package/dist/src/services/PoolStateManager.d.ts.map +1 -1
- package/dist/src/services/PriceHistoryService.d.ts.map +1 -1
- package/dist/src/services/SignatureService.d.ts.map +1 -1
- package/dist/src/services/StreamChatService.d.ts +378 -0
- package/dist/src/services/StreamChatService.d.ts.map +1 -0
- package/dist/src/services/StreamTokenServiceBase.d.ts +371 -0
- package/dist/src/services/StreamTokenServiceBase.d.ts.map +1 -0
- package/dist/src/services/StreamWebSocketService.d.ts +268 -0
- package/dist/src/services/StreamWebSocketService.d.ts.map +1 -0
- package/dist/src/services/StreamingEventService.d.ts +431 -0
- package/dist/src/services/StreamingEventService.d.ts.map +1 -0
- package/dist/src/services/StreamingService.d.ts +547 -0
- package/dist/src/services/StreamingService.d.ts.map +1 -0
- package/dist/src/services/SwapEventQueue.d.ts +2 -2
- package/dist/src/services/SwapEventQueue.d.ts.map +1 -1
- package/dist/src/services/TokenBanService.d.ts +214 -0
- package/dist/src/services/TokenBanService.d.ts.map +1 -0
- package/dist/src/services/TokenClassKeyService.d.ts.map +1 -1
- package/dist/src/services/TokenMetadataCache.d.ts +36 -27
- package/dist/src/services/TokenMetadataCache.d.ts.map +1 -1
- package/dist/src/services/TokenMetadataService.d.ts +24 -4
- package/dist/src/services/TokenMetadataService.d.ts.map +1 -1
- package/dist/src/services/TokenResolverService.d.ts.map +1 -1
- package/dist/src/services/TradeService.d.ts +73 -0
- package/dist/src/services/TradeService.d.ts.map +1 -1
- package/dist/src/services/UserService.d.ts +56 -3
- package/dist/src/services/UserService.d.ts.map +1 -1
- package/dist/src/services/WebSocketService.d.ts +3 -3
- package/dist/src/services/WebSocketService.d.ts.map +1 -1
- package/dist/src/services/WrapService.d.ts +18 -5
- package/dist/src/services/WrapService.d.ts.map +1 -1
- package/dist/src/services/WrappableTokenCache.d.ts +8 -36
- package/dist/src/services/WrappableTokenCache.d.ts.map +1 -1
- package/dist/src/services/WrappableTokenService.d.ts +18 -12
- package/dist/src/services/WrappableTokenService.d.ts.map +1 -1
- package/dist/src/services/shared/cache-helpers.d.ts +188 -0
- package/dist/src/services/shared/cache-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/http-helpers.d.ts +146 -0
- package/dist/src/services/shared/http-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/pagination-helpers.d.ts +157 -0
- package/dist/src/services/shared/pagination-helpers.d.ts.map +1 -0
- package/dist/src/services/shared/service-validators.d.ts +137 -0
- package/dist/src/services/shared/service-validators.d.ts.map +1 -0
- package/dist/src/services/shared/websocket-helpers.d.ts +158 -0
- package/dist/src/services/shared/websocket-helpers.d.ts.map +1 -0
- package/dist/src/test-constants.d.ts +29 -0
- package/dist/src/test-constants.d.ts.map +1 -0
- package/dist/src/types/api-key.dto.d.ts +300 -0
- package/dist/src/types/api-key.dto.d.ts.map +1 -0
- package/dist/src/types/backend-responses.d.ts +12 -0
- package/dist/src/types/backend-responses.d.ts.map +1 -1
- package/dist/src/types/ban.dto.d.ts +413 -0
- package/dist/src/types/ban.dto.d.ts.map +1 -0
- package/dist/src/types/burn.dto.d.ts +21 -0
- package/dist/src/types/burn.dto.d.ts.map +1 -1
- package/dist/src/types/chat-messages.dto.d.ts +193 -0
- package/dist/src/types/chat-messages.dto.d.ts.map +1 -0
- package/dist/src/types/comment.dto.d.ts +180 -0
- package/dist/src/types/comment.dto.d.ts.map +1 -0
- package/dist/src/types/comments.dto.d.ts +210 -0
- package/dist/src/types/comments.dto.d.ts.map +1 -0
- package/dist/src/types/common.d.ts +369 -0
- package/dist/src/types/common.d.ts.map +1 -1
- package/dist/src/types/constraints.d.ts +374 -0
- package/dist/src/types/constraints.d.ts.map +1 -0
- package/dist/src/types/content-flag.dto.d.ts +310 -0
- package/dist/src/types/content-flag.dto.d.ts.map +1 -0
- package/dist/src/types/content-reactions.dto.d.ts +132 -0
- package/dist/src/types/content-reactions.dto.d.ts.map +1 -0
- package/dist/src/types/dex-pool.dto.d.ts +13 -37
- package/dist/src/types/dex-pool.dto.d.ts.map +1 -1
- package/dist/src/types/dto.d.ts +8 -0
- package/dist/src/types/dto.d.ts.map +1 -1
- package/dist/src/types/galachain-api.types.d.ts +30 -0
- package/dist/src/types/galachain-api.types.d.ts.map +1 -1
- package/dist/src/types/gswap-responses.types.d.ts.map +1 -1
- package/dist/src/types/launchpad.dto.d.ts +234 -131
- package/dist/src/types/launchpad.dto.d.ts.map +1 -1
- package/dist/src/types/launchpad.validation.d.ts.map +1 -1
- package/dist/src/types/lock.dto.d.ts +20 -35
- package/dist/src/types/lock.dto.d.ts.map +1 -1
- package/dist/src/types/moderator.dto.d.ts +581 -0
- package/dist/src/types/moderator.dto.d.ts.map +1 -0
- package/dist/src/types/options.dto.d.ts +25 -115
- package/dist/src/types/options.dto.d.ts.map +1 -1
- package/dist/src/types/overseer.dto.d.ts +420 -0
- package/dist/src/types/overseer.dto.d.ts.map +1 -0
- package/dist/src/types/pool.dto.d.ts +106 -0
- package/dist/src/types/pool.dto.d.ts.map +1 -0
- package/dist/src/types/result.types.d.ts +3 -2
- package/dist/src/types/result.types.d.ts.map +1 -1
- package/dist/src/types/session-auth.dto.d.ts +91 -0
- package/dist/src/types/session-auth.dto.d.ts.map +1 -0
- package/dist/src/types/stream-chat.dto.d.ts +815 -0
- package/dist/src/types/stream-chat.dto.d.ts.map +1 -0
- package/dist/src/types/streaming-events.dto.d.ts +586 -0
- package/dist/src/types/streaming-events.dto.d.ts.map +1 -0
- package/dist/src/types/streaming.dto.d.ts +1141 -0
- package/dist/src/types/streaming.dto.d.ts.map +1 -0
- package/dist/src/types/token-ban.dto.d.ts +195 -0
- package/dist/src/types/token-ban.dto.d.ts.map +1 -0
- package/dist/src/types/trade.dto.d.ts +21 -61
- package/dist/src/types/trade.dto.d.ts.map +1 -1
- package/dist/src/types/trades-query.dto.d.ts +127 -0
- package/dist/src/types/trades-query.dto.d.ts.map +1 -0
- package/dist/src/types/transfer.dto.d.ts +20 -15
- package/dist/src/types/transfer.dto.d.ts.map +1 -1
- package/dist/src/types/user.dto.d.ts +185 -73
- package/dist/src/types/user.dto.d.ts.map +1 -1
- package/dist/src/types/wrappable-token.dto.d.ts +6 -2
- package/dist/src/types/wrappable-token.dto.d.ts.map +1 -1
- package/dist/src/utils/LiquidityEventExtractor.d.ts.map +1 -1
- package/dist/src/utils/Logger.d.ts.map +1 -1
- package/dist/src/utils/MonitoringMetrics.d.ts.map +1 -1
- package/dist/src/utils/PoolKeyNormalizer.d.ts.map +1 -1
- package/dist/src/utils/ReconnectionManager.d.ts +142 -0
- package/dist/src/utils/ReconnectionManager.d.ts.map +1 -0
- package/dist/src/utils/SignatureHelper.d.ts +9 -0
- package/dist/src/utils/SignatureHelper.d.ts.map +1 -1
- package/dist/src/utils/SwapEventExtractor.d.ts.map +1 -1
- package/dist/src/utils/adapters.d.ts.map +1 -1
- package/dist/src/utils/address-formatter.d.ts +317 -0
- package/dist/src/utils/address-formatter.d.ts.map +1 -0
- package/dist/src/utils/agent-config.d.ts.map +1 -1
- package/dist/src/utils/amount-validator.d.ts +268 -0
- package/dist/src/utils/amount-validator.d.ts.map +1 -0
- package/dist/src/utils/api-patterns.d.ts +347 -0
- package/dist/src/utils/api-patterns.d.ts.map +1 -0
- package/dist/src/utils/array-helpers.d.ts +115 -0
- package/dist/src/utils/array-helpers.d.ts.map +1 -0
- package/dist/src/utils/async-patterns.d.ts +272 -0
- package/dist/src/utils/async-patterns.d.ts.map +1 -0
- package/dist/src/utils/auto-pagination.d.ts +195 -2
- package/dist/src/utils/auto-pagination.d.ts.map +1 -1
- package/dist/src/utils/bignumber-helpers.d.ts +119 -13
- package/dist/src/utils/bignumber-helpers.d.ts.map +1 -1
- package/dist/src/utils/bignumber-pool-cache.d.ts.map +1 -1
- package/dist/src/utils/bondingCurveCalculations.d.ts.map +1 -1
- package/dist/src/utils/cacheWarmingHelpers.d.ts +2 -2
- package/dist/src/utils/cacheWarmingHelpers.d.ts.map +1 -1
- package/dist/src/utils/data-transform-patterns.d.ts +393 -0
- package/dist/src/utils/data-transform-patterns.d.ts.map +1 -0
- package/dist/src/utils/date-utils.d.ts +166 -0
- package/dist/src/utils/date-utils.d.ts.map +1 -1
- package/dist/src/utils/delimiter-parser.d.ts +139 -0
- package/dist/src/utils/delimiter-parser.d.ts.map +1 -0
- package/dist/src/utils/error-factories.d.ts +346 -1
- package/dist/src/utils/error-factories.d.ts.map +1 -1
- package/dist/src/utils/error-handling-patterns.d.ts +390 -0
- package/dist/src/utils/error-handling-patterns.d.ts.map +1 -0
- package/dist/src/utils/error-patterns.d.ts +360 -0
- package/dist/src/utils/error-patterns.d.ts.map +1 -0
- package/dist/src/utils/error-utils.d.ts +250 -0
- package/dist/src/utils/error-utils.d.ts.map +1 -1
- package/dist/src/utils/error-wrapper.d.ts +208 -0
- package/dist/src/utils/error-wrapper.d.ts.map +1 -0
- package/dist/src/utils/errors.d.ts +70 -0
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/utils/http-factory.d.ts +36 -0
- package/dist/src/utils/http-factory.d.ts.map +1 -0
- package/dist/src/utils/http.d.ts.map +1 -1
- package/dist/src/utils/load-env.d.ts.map +1 -1
- package/dist/src/utils/multipart.d.ts.map +1 -1
- package/dist/src/utils/numeric-patterns.d.ts +289 -0
- package/dist/src/utils/numeric-patterns.d.ts.map +1 -0
- package/dist/src/utils/numeric-wrappers.d.ts +146 -0
- package/dist/src/utils/numeric-wrappers.d.ts.map +1 -0
- package/dist/src/utils/object-extractors.d.ts +115 -0
- package/dist/src/utils/object-extractors.d.ts.map +1 -0
- package/dist/src/utils/object-patterns.d.ts +81 -0
- package/dist/src/utils/object-patterns.d.ts.map +1 -0
- package/dist/src/utils/pagination-helpers.d.ts +230 -0
- package/dist/src/utils/pagination-helpers.d.ts.map +1 -0
- package/dist/src/utils/pool-pair-parser.d.ts +3 -1
- package/dist/src/utils/pool-pair-parser.d.ts.map +1 -1
- package/dist/src/utils/pool-state-validator.d.ts.map +1 -1
- package/dist/src/utils/position-filters.d.ts +1 -2
- package/dist/src/utils/position-filters.d.ts.map +1 -1
- package/dist/src/utils/query-params.d.ts +0 -16
- package/dist/src/utils/query-params.d.ts.map +1 -1
- package/dist/src/utils/response-handlers.d.ts +149 -20
- package/dist/src/utils/response-handlers.d.ts.map +1 -1
- package/dist/src/utils/response-helpers.d.ts +28 -0
- package/dist/src/utils/response-helpers.d.ts.map +1 -0
- package/dist/src/utils/response-normalizers.d.ts +27 -49
- package/dist/src/utils/response-normalizers.d.ts.map +1 -1
- package/dist/src/utils/safe-parsers.d.ts +487 -0
- package/dist/src/utils/safe-parsers.d.ts.map +1 -0
- package/dist/src/utils/service-validators.d.ts +268 -0
- package/dist/src/utils/service-validators.d.ts.map +1 -0
- package/dist/src/utils/slippage-utils.d.ts.map +1 -1
- package/dist/src/utils/string-patterns.d.ts +404 -0
- package/dist/src/utils/string-patterns.d.ts.map +1 -0
- package/dist/src/utils/string-transforms.d.ts +89 -0
- package/dist/src/utils/string-transforms.d.ts.map +1 -0
- package/dist/src/utils/string-utils.d.ts +108 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/swap-delta-calculator.d.ts.map +1 -1
- package/dist/src/utils/tick-crossing-handler.d.ts.map +1 -1
- package/dist/src/utils/token-format-converter.d.ts +22 -8
- package/dist/src/utils/token-format-converter.d.ts.map +1 -1
- package/dist/src/utils/token-parser.d.ts +2 -2
- package/dist/src/utils/token-parser.d.ts.map +1 -1
- package/dist/src/utils/token-stringification.d.ts +168 -0
- package/dist/src/utils/token-stringification.d.ts.map +1 -0
- package/dist/src/utils/tokenNameNormalizer.d.ts +96 -0
- package/dist/src/utils/tokenNameNormalizer.d.ts.map +1 -0
- package/dist/src/utils/tokenNormalizer.d.ts +8 -45
- package/dist/src/utils/tokenNormalizer.d.ts.map +1 -1
- package/dist/src/utils/transfer-validation.d.ts +1 -1
- package/dist/src/utils/transfer-validation.d.ts.map +1 -1
- package/dist/src/utils/type-guard-factory.d.ts +260 -0
- package/dist/src/utils/type-guard-factory.d.ts.map +1 -0
- package/dist/src/utils/unique-key-generator.d.ts +148 -0
- package/dist/src/utils/unique-key-generator.d.ts.map +1 -0
- package/dist/src/utils/validation-helpers.d.ts +906 -183
- package/dist/src/utils/validation-helpers.d.ts.map +1 -1
- package/dist/src/utils/validation-patterns.d.ts +745 -0
- package/dist/src/utils/validation-patterns.d.ts.map +1 -0
- package/dist/src/utils/validation.d.ts +2 -30
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/wallet.d.ts +12 -1
- package/dist/src/utils/wallet.d.ts.map +1 -1
- package/dist/src/utils/websocket-patterns.d.ts +681 -0
- package/dist/src/utils/websocket-patterns.d.ts.map +1 -0
- package/dist/src/utils/websocket-validators.d.ts.map +1 -1
- package/package.json +86 -19
- package/dist/src/bridge/strategies/index.d.ts +0 -9
- package/dist/src/bridge/strategies/index.d.ts.map +0 -1
- package/dist/src/constants/counts.d.ts +0 -66
- package/dist/src/constants/counts.d.ts.map +0 -1
- package/dist/src/services/WebSocketManager.d.ts +0 -99
- package/dist/src/services/WebSocketManager.d.ts.map +0 -1
- package/dist/src/types/eip712-types.d.ts +0 -140
- package/dist/src/types/eip712-types.d.ts.map +0 -1
- package/dist/src/types/pool-state-manager-config.dto.d.ts +0 -103
- package/dist/src/types/pool-state-manager-config.dto.d.ts.map +0 -1
- package/dist/src/utils/number-utils.d.ts +0 -94
- package/dist/src/utils/number-utils.d.ts.map +0 -1
- package/dist/src/utils/precision-math.d.ts +0 -37
- package/dist/src/utils/precision-math.d.ts.map +0 -1
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream Token Service Base
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class providing shared functionality for streaming-related services.
|
|
5
|
+
* Contains common helper methods for token validation, endpoint building,
|
|
6
|
+
* admin authentication, JWT authentication, and response handling.
|
|
7
|
+
*
|
|
8
|
+
* @category Services
|
|
9
|
+
* @since 5.1.1
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
import { HttpClient } from '../utils/http';
|
|
13
|
+
import { BaseService } from './BaseService';
|
|
14
|
+
import { TokenNameConstraint, InternalApiResponse } from '../types/common';
|
|
15
|
+
import type { JwtAuth } from '../auth/JwtAuth';
|
|
16
|
+
/**
|
|
17
|
+
* Admin API key header name
|
|
18
|
+
*/
|
|
19
|
+
export declare const ADMIN_API_KEY_HEADER = "x-api-key";
|
|
20
|
+
/**
|
|
21
|
+
* Stream Token Service Base Class
|
|
22
|
+
*
|
|
23
|
+
* Provides shared functionality for StreamingService and StreamChatService:
|
|
24
|
+
* - Token name validation
|
|
25
|
+
* - Endpoint URL building with path parameters
|
|
26
|
+
* - Admin header management
|
|
27
|
+
* - JWT authentication support
|
|
28
|
+
* - Response data extraction
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* class MyStreamService extends StreamTokenServiceBase {
|
|
33
|
+
* constructor(http: HttpClient, adminApiKey?: string, jwtAuth?: JwtAuth) {
|
|
34
|
+
* super(http, adminApiKey, jwtAuth, false);
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* async getStatus(tokenName: string) {
|
|
38
|
+
* this.validateTokenName(tokenName, MY_CONSTRAINTS.TOKEN_NAME);
|
|
39
|
+
* const endpoint = this.buildEndpoint('/api/:tokenName/status', { tokenName });
|
|
40
|
+
* const response = await this.http.get(endpoint, this.getAdminHeaders());
|
|
41
|
+
* return this.extractData(response);
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* async startStream(tokenName: string) {
|
|
45
|
+
* // JWT-protected endpoint
|
|
46
|
+
* const endpoint = this.buildEndpoint('/api/:tokenName/start', { tokenName });
|
|
47
|
+
* const response = await this.http.post(endpoint, {}, { headers: this.getJwtHeaders() });
|
|
48
|
+
* return this.extractData(response);
|
|
49
|
+
* }
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare abstract class StreamTokenServiceBase extends BaseService {
|
|
54
|
+
/**
|
|
55
|
+
* Admin API key for authenticated endpoints
|
|
56
|
+
*/
|
|
57
|
+
protected readonly adminApiKey: string | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* JWT authentication manager for session-based auth
|
|
60
|
+
*/
|
|
61
|
+
protected jwtAuth: JwtAuth | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Create a new stream token service instance
|
|
64
|
+
*
|
|
65
|
+
* @param http - HTTP client for API requests
|
|
66
|
+
* @param adminApiKey - Optional admin API key for admin-only endpoints
|
|
67
|
+
* @param jwtAuth - Optional JWT auth manager for session-based auth
|
|
68
|
+
* @param debugMode - Enable debug logging
|
|
69
|
+
*/
|
|
70
|
+
constructor(http: HttpClient, adminApiKey?: string, jwtAuth?: JwtAuth, debugMode?: boolean);
|
|
71
|
+
/**
|
|
72
|
+
* Set the JWT authentication manager
|
|
73
|
+
*
|
|
74
|
+
* This allows dynamic configuration of JWT auth after service creation.
|
|
75
|
+
*
|
|
76
|
+
* @param jwtAuth - JWT auth manager instance
|
|
77
|
+
*/
|
|
78
|
+
setJwtAuth(jwtAuth: JwtAuth): void;
|
|
79
|
+
/**
|
|
80
|
+
* Validate token name format against provided constraints
|
|
81
|
+
*
|
|
82
|
+
* @param tokenName - Token name to validate
|
|
83
|
+
* @param constraints - Token name validation constraints
|
|
84
|
+
* @throws {ValidationError} If token name is invalid
|
|
85
|
+
*/
|
|
86
|
+
protected validateTokenName(tokenName: string, constraints: TokenNameConstraint): void;
|
|
87
|
+
/**
|
|
88
|
+
* Validate a required string parameter
|
|
89
|
+
*
|
|
90
|
+
* @param value - Value to validate
|
|
91
|
+
* @param fieldName - Technical field name for error details
|
|
92
|
+
* @param displayName - Human-readable name for error message
|
|
93
|
+
* @throws {ValidationError} If value is missing or not a string
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* this.validateRequiredString(assetId, 'assetId', 'Asset ID');
|
|
98
|
+
* // Throws: ValidationError('Asset ID is required', 'assetId', 'REQUIRED')
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
protected validateRequiredString(value: string | undefined, fieldName: string, displayName: string): void;
|
|
102
|
+
/**
|
|
103
|
+
* Validate an optional string parameter with max length constraint
|
|
104
|
+
*
|
|
105
|
+
* @param value - Value to validate (undefined/null allowed)
|
|
106
|
+
* @param fieldName - Technical field name for error details
|
|
107
|
+
* @param displayName - Human-readable name for error message
|
|
108
|
+
* @param maxLength - Maximum allowed string length
|
|
109
|
+
* @throws {ValidationError} If value is not a string or exceeds maxLength
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* this.validateOptionalString(description, 'description', 'Description', 255);
|
|
114
|
+
* this.validateOptionalString(reason, 'reason', 'Reason', 500);
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
protected validateOptionalString(value: string | undefined | null, fieldName: string, displayName: string, maxLength: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* Validate an optional number parameter with min/max constraints
|
|
120
|
+
*
|
|
121
|
+
* @param value - Value to validate (undefined/null allowed)
|
|
122
|
+
* @param fieldName - Technical field name for error details
|
|
123
|
+
* @param displayName - Human-readable name for error message
|
|
124
|
+
* @param min - Minimum allowed value
|
|
125
|
+
* @param max - Maximum allowed value
|
|
126
|
+
* @param minMessage - Custom message suffix for minimum violation
|
|
127
|
+
* @param maxMessage - Custom message suffix for maximum violation
|
|
128
|
+
* @throws {ValidationError} If value is not a number or out of range
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* this.validateOptionalNumber(durationSeconds, 'durationSeconds', 'Duration', 60, 31536000, '1 minute', '1 year');
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
protected validateOptionalNumber(value: number | undefined | null, fieldName: string, displayName: string, min: number, max: number, minMessage?: string, maxMessage?: string): void;
|
|
136
|
+
/**
|
|
137
|
+
* Validate an optional ISO 8601 date string
|
|
138
|
+
*
|
|
139
|
+
* @param value - Value to validate (undefined/null allowed)
|
|
140
|
+
* @param fieldName - Technical field name for error details
|
|
141
|
+
* @param displayName - Human-readable name for error message
|
|
142
|
+
* @throws {ValidationError} If value is not a valid ISO 8601 date
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* this.validateOptionalDate(expiresAt, 'expiresAt', 'Expiration date');
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
protected validateOptionalDate(value: string | undefined | null, fieldName: string, displayName: string): void;
|
|
150
|
+
/**
|
|
151
|
+
* Validate a positive integer (for IDs)
|
|
152
|
+
*
|
|
153
|
+
* @param value - Value to validate
|
|
154
|
+
* @param fieldName - Technical field name for error details
|
|
155
|
+
* @param displayName - Human-readable name for error message
|
|
156
|
+
* @throws {ValidationError} If value is not a positive integer
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* this.validatePositiveInteger(id, 'id', 'API key ID');
|
|
161
|
+
* this.validatePositiveInteger(inviteId, 'inviteId', 'Invite ID');
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
protected validatePositiveInteger(value: number, fieldName: string, displayName: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* Validate a status filter against an enum object
|
|
167
|
+
*
|
|
168
|
+
* Generic validator for status filters used in list operations.
|
|
169
|
+
* Works with any enum-like const object (OVERSEER_STATUS, INVITE_STATUS, etc.)
|
|
170
|
+
*
|
|
171
|
+
* @param status - Status value to validate (undefined allowed)
|
|
172
|
+
* @param validStatusEnum - Enum-like const object to validate against
|
|
173
|
+
* @param fieldName - Field name for error message (default: 'status')
|
|
174
|
+
* @throws {ValidationError} If status is not a valid enum value
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* this.validateStatusFilter(options.status, OVERSEER_INVITE_STATUS);
|
|
179
|
+
* this.validateStatusFilter(options.status, OVERSEER_STATUS);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
protected validateStatusFilter<T extends Record<string, string>>(status: string | undefined, validStatusEnum: T, fieldName?: string): void;
|
|
183
|
+
/**
|
|
184
|
+
* Build pagination query parameters with max limit enforcement
|
|
185
|
+
*
|
|
186
|
+
* Consolidates the common pagination building pattern used across services:
|
|
187
|
+
* - Converts page/limit to strings
|
|
188
|
+
* - Enforces max limit constraint
|
|
189
|
+
* - Only includes params that are defined
|
|
190
|
+
*
|
|
191
|
+
* @param options - Options object with optional page and limit
|
|
192
|
+
* @param maxLimit - Maximum allowed limit value
|
|
193
|
+
* @returns Query params object with stringified page and limit
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const params = this.buildPaginationParams(
|
|
198
|
+
* { page: 1, limit: 50 },
|
|
199
|
+
* CONSTRAINTS.PAGINATION.MAX_LIMIT
|
|
200
|
+
* );
|
|
201
|
+
* // Result: { page: '1', limit: '20' } if max is 20
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
protected buildPaginationParams(options: {
|
|
205
|
+
page?: number;
|
|
206
|
+
limit?: number;
|
|
207
|
+
}, maxLimit: number): Record<string, string>;
|
|
208
|
+
/**
|
|
209
|
+
* Add optional filter parameters to a query params object
|
|
210
|
+
*
|
|
211
|
+
* Consolidates the common pattern of conditionally adding filter params.
|
|
212
|
+
* Only adds params that have truthy values (not undefined, null, or empty string).
|
|
213
|
+
*
|
|
214
|
+
* @param params - Query params object to add to (mutated)
|
|
215
|
+
* @param options - Options object containing filter values
|
|
216
|
+
* @param fields - Array of field names to extract from options
|
|
217
|
+
* @returns The mutated params object (for chaining)
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const params = this.buildPaginationParams(options, MAX_LIMIT);
|
|
222
|
+
* this.addOptionalFilterParams(params, options, ['search', 'name', 'userAddress']);
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
protected addOptionalFilterParams<T>(params: Record<string, string>, options: T, fields: (keyof T & string)[]): Record<string, string>;
|
|
226
|
+
/**
|
|
227
|
+
* Build endpoint URL with path parameters
|
|
228
|
+
*
|
|
229
|
+
* @param template - URL template with :param placeholders
|
|
230
|
+
* @param params - Parameters to substitute (values are lowercased and encoded)
|
|
231
|
+
* @returns Built URL with substituted parameters
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* const url = this.buildEndpoint('/api/:tokenName/status', { tokenName: 'MyToken' });
|
|
236
|
+
* // Returns: '/api/mytoken/status'
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
protected buildEndpoint(template: string, params: Record<string, string>): string;
|
|
240
|
+
/**
|
|
241
|
+
* Build endpoint URL with an ID parameter (case-preserved)
|
|
242
|
+
*
|
|
243
|
+
* Unlike buildEndpoint which lowercases values (for tokenName),
|
|
244
|
+
* this preserves the ID case for message IDs and other identifiers.
|
|
245
|
+
*
|
|
246
|
+
* This consolidates the duplicate buildEndpointWithId methods found in
|
|
247
|
+
* CommentsService and ChatMessagesService.
|
|
248
|
+
*
|
|
249
|
+
* @param template - URL template with :id placeholder
|
|
250
|
+
* @param id - ID value to substitute (case-preserved, URI-encoded)
|
|
251
|
+
* @returns Built URL with ID substituted
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* const url = this.buildEndpointWithId('/api/messages/:id', 'msg-1234567890123-abc');
|
|
256
|
+
* // Returns: '/api/messages/msg-1234567890123-abc'
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
protected buildEndpointWithId(template: string, id: string): string;
|
|
260
|
+
/**
|
|
261
|
+
* Validate token name and build endpoint URL in one step
|
|
262
|
+
*
|
|
263
|
+
* Consolidates the common pattern of validating token name then building endpoint:
|
|
264
|
+
* ```typescript
|
|
265
|
+
* this.validateTokenName(tokenName, constraints);
|
|
266
|
+
* const endpoint = this.buildEndpoint(template, { tokenName });
|
|
267
|
+
* ```
|
|
268
|
+
*
|
|
269
|
+
* @param tokenName - Token name to validate
|
|
270
|
+
* @param constraints - Token name validation constraints
|
|
271
|
+
* @param template - URL template with :tokenName placeholder
|
|
272
|
+
* @returns Built endpoint URL with validated, normalized token name
|
|
273
|
+
* @throws {ValidationError} If token name is invalid
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```typescript
|
|
277
|
+
* const endpoint = this.validateAndBuildTokenEndpoint(
|
|
278
|
+
* tokenName,
|
|
279
|
+
* STREAMING_CONSTRAINTS.TOKEN_NAME,
|
|
280
|
+
* STREAMING_ENDPOINTS.GET_STREAM_INFO
|
|
281
|
+
* );
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
protected validateAndBuildTokenEndpoint(tokenName: string, constraints: TokenNameConstraint, template: string): string;
|
|
285
|
+
/**
|
|
286
|
+
* Get admin headers for admin-only endpoints
|
|
287
|
+
*
|
|
288
|
+
* @returns Headers object with admin API key
|
|
289
|
+
* @throws {ConfigurationError} If admin API key is not configured
|
|
290
|
+
*/
|
|
291
|
+
protected getAdminHeaders(): Record<string, string>;
|
|
292
|
+
/**
|
|
293
|
+
* Get JWT headers for session-authenticated endpoints
|
|
294
|
+
*
|
|
295
|
+
* @returns Headers object with Authorization: Bearer token
|
|
296
|
+
* @throws {ConfigurationError} If JWT auth is not configured or no token
|
|
297
|
+
*/
|
|
298
|
+
protected getJwtHeaders(): Record<string, string>;
|
|
299
|
+
/**
|
|
300
|
+
* Check if JWT authentication is available
|
|
301
|
+
*
|
|
302
|
+
* @returns true if JWT auth is configured with a valid token
|
|
303
|
+
*/
|
|
304
|
+
protected hasJwtAuth(): boolean;
|
|
305
|
+
/**
|
|
306
|
+
* Check if admin API key is configured
|
|
307
|
+
*
|
|
308
|
+
* @returns true if admin API key is set
|
|
309
|
+
*/
|
|
310
|
+
protected hasAdminApiKey(): boolean;
|
|
311
|
+
/**
|
|
312
|
+
* Get headers for dual-auth endpoints (API key OR JWT).
|
|
313
|
+
*
|
|
314
|
+
* Dual-auth endpoints accept either admin API key or JWT authentication.
|
|
315
|
+
* This allows both admins and owners to perform the same operation with
|
|
316
|
+
* different authorization levels.
|
|
317
|
+
*
|
|
318
|
+
* Priority:
|
|
319
|
+
* 1. Admin API key (if configured) - takes precedence
|
|
320
|
+
* 2. JWT auth (if authenticated) - fallback for owners
|
|
321
|
+
*
|
|
322
|
+
* @returns Headers for authentication
|
|
323
|
+
* @throws ConfigurationError if neither auth method is available
|
|
324
|
+
*
|
|
325
|
+
* @example
|
|
326
|
+
* ```typescript
|
|
327
|
+
* // In a subclass
|
|
328
|
+
* async toggleFeatureWithDualAuth(tokenName: string) {
|
|
329
|
+
* const headers = this.getDualAuthHeaders();
|
|
330
|
+
* // If admin API key is set, uses admin headers
|
|
331
|
+
* // Otherwise, requires valid JWT authentication
|
|
332
|
+
* return this.http.post(endpoint, {}, headers);
|
|
333
|
+
* }
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
protected getDualAuthHeaders(): Record<string, string>;
|
|
337
|
+
/**
|
|
338
|
+
* Extract data from backend response wrapper
|
|
339
|
+
*
|
|
340
|
+
* @param response - Response object with data, error, and message fields
|
|
341
|
+
* @returns Extracted data
|
|
342
|
+
* @throws {Error} If response indicates an error or has no data
|
|
343
|
+
*/
|
|
344
|
+
protected extractData<T>(response: InternalApiResponse<T>): T;
|
|
345
|
+
/**
|
|
346
|
+
* Toggle a feature (enable/disable) for a token
|
|
347
|
+
*
|
|
348
|
+
* Shared implementation for enable/disable patterns in streaming services.
|
|
349
|
+
* Handles validation, endpoint building, admin auth, and response extraction.
|
|
350
|
+
*
|
|
351
|
+
* @param tokenName - Token name to toggle feature for
|
|
352
|
+
* @param endpoint - API endpoint template with :tokenName placeholder
|
|
353
|
+
* @param constraints - Token name validation constraints
|
|
354
|
+
* @returns Toggle result with enabled status and token name
|
|
355
|
+
* @throws {ValidationError} If token name is invalid
|
|
356
|
+
* @throws {ConfigurationError} If admin API key is not configured
|
|
357
|
+
*
|
|
358
|
+
* @example
|
|
359
|
+
* ```typescript
|
|
360
|
+
* // In StreamingService
|
|
361
|
+
* async disableStream(tokenName: string) {
|
|
362
|
+
* return this.toggleFeature(tokenName, STREAMING_ENDPOINTS.DISABLE_STREAM, STREAMING_CONSTRAINTS.TOKEN_NAME);
|
|
363
|
+
* }
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
protected toggleFeature(tokenName: string, endpoint: string, constraints: TokenNameConstraint): Promise<{
|
|
367
|
+
enabled: boolean;
|
|
368
|
+
tokenName: string;
|
|
369
|
+
}>;
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=StreamTokenServiceBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamTokenServiceBase.d.ts","sourceRoot":"","sources":["../../../src/services/StreamTokenServiceBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream WebSocket Service
|
|
3
|
+
*
|
|
4
|
+
* Handles real-time streaming and chat events via Socket.IO including:
|
|
5
|
+
* - Stream status updates (IDLE/ACTIVE/DISABLED)
|
|
6
|
+
* - Viewer count updates
|
|
7
|
+
* - Chat messages
|
|
8
|
+
* - Subscription management
|
|
9
|
+
*
|
|
10
|
+
* @category Services
|
|
11
|
+
* @since 5.1.0
|
|
12
|
+
*/
|
|
13
|
+
import { Socket } from 'socket.io-client';
|
|
14
|
+
import { LoggerBase } from './BaseService';
|
|
15
|
+
import { StreamStatusEvent, StreamSubscribedEvent, StreamUnsubscribedEvent, ViewerCountEvent, StreamGlobalStatusEvent, StreamCountdownEvent, StreamLanguageEvent } from '../types/streaming.dto';
|
|
16
|
+
import { StreamChatMessageEvent, StreamChatSentEvent, StreamChatErrorEvent, StreamChatStatusEvent, StreamChatGlobalStatusEvent, StreamChatAuthenticatedEvent, StreamChatAuthErrorEvent, StreamReactionEvent, StreamReactionErrorEvent, StreamChatPinnedEvent, StreamChatUnpinnedEvent, TypingIndicatorEvent } from '../types/stream-chat.dto';
|
|
17
|
+
/**
|
|
18
|
+
* Stream WebSocket configuration
|
|
19
|
+
*/
|
|
20
|
+
export interface StreamWebSocketConfig {
|
|
21
|
+
/** Stream WebSocket server URL (SEPARATE from bundleBaseUrl) */
|
|
22
|
+
url: string;
|
|
23
|
+
/** JWT token for authentication (optional - required for chat) */
|
|
24
|
+
authToken?: string;
|
|
25
|
+
/** Maximum reconnection attempts (default: 5) */
|
|
26
|
+
reconnectAttempts?: number;
|
|
27
|
+
/** Delay between reconnection attempts in ms (default: 2000) */
|
|
28
|
+
reconnectDelay?: number;
|
|
29
|
+
/** Subscription timeout in ms (default: 10000) */
|
|
30
|
+
subscriptionTimeout?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stream event names used by the backend
|
|
34
|
+
*/
|
|
35
|
+
export declare const STREAM_EVENTS: {
|
|
36
|
+
readonly SUBSCRIBE: "subscribe_token";
|
|
37
|
+
readonly UNSUBSCRIBE: "unsubscribe_token";
|
|
38
|
+
readonly AUTHENTICATE: "authenticate";
|
|
39
|
+
readonly SEND_CHAT: "send_stream_chat";
|
|
40
|
+
readonly SEND_REACTION: "send_stream_reaction";
|
|
41
|
+
readonly TYPING_START: "typing_start";
|
|
42
|
+
readonly TYPING_STOP: "typing_stop";
|
|
43
|
+
readonly STREAM_STATUS: "stream_status";
|
|
44
|
+
readonly STREAM_SUBSCRIBED: "token_subscribed";
|
|
45
|
+
readonly STREAM_UNSUBSCRIBED: "token_unsubscribed";
|
|
46
|
+
readonly VIEWER_COUNT: "viewer_count";
|
|
47
|
+
readonly STREAM_GLOBAL_STATUS: "stream_global_status";
|
|
48
|
+
readonly CHAT_MESSAGE: "stream_chat_message";
|
|
49
|
+
readonly CHAT_SENT: "stream_chat_sent";
|
|
50
|
+
readonly CHAT_ERROR: "stream_chat_error";
|
|
51
|
+
readonly CHAT_STATUS: "stream_chat_status";
|
|
52
|
+
readonly CHAT_GLOBAL_STATUS: "stream_chat_global_status";
|
|
53
|
+
readonly CHAT_AUTHENTICATED: "stream_chat_authenticated";
|
|
54
|
+
readonly CHAT_AUTH_ERROR: "stream_chat_auth_error";
|
|
55
|
+
readonly REACTION: "stream_reaction";
|
|
56
|
+
readonly REACTION_ERROR: "stream_reaction_error";
|
|
57
|
+
readonly USER_TYPING: "user_typing";
|
|
58
|
+
readonly CHAT_PINNED: "stream_chat_pinned";
|
|
59
|
+
readonly CHAT_UNPINNED: "stream_chat_unpinned";
|
|
60
|
+
readonly COUNTDOWN_UPDATED: "stream_countdown_updated";
|
|
61
|
+
readonly LANGUAGE_UPDATED: "stream_language_updated";
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Callback types for stream events
|
|
65
|
+
*/
|
|
66
|
+
export interface StreamEventCallbacks {
|
|
67
|
+
onStreamStatus?: (event: StreamStatusEvent) => void;
|
|
68
|
+
onStreamSubscribed?: (event: StreamSubscribedEvent) => void;
|
|
69
|
+
onStreamUnsubscribed?: (event: StreamUnsubscribedEvent) => void;
|
|
70
|
+
onViewerCount?: (event: ViewerCountEvent) => void;
|
|
71
|
+
onStreamGlobalStatus?: (event: StreamGlobalStatusEvent) => void;
|
|
72
|
+
onChatMessage?: (event: StreamChatMessageEvent) => void;
|
|
73
|
+
onChatSent?: (event: StreamChatSentEvent) => void;
|
|
74
|
+
onChatError?: (event: StreamChatErrorEvent) => void;
|
|
75
|
+
onChatStatus?: (event: StreamChatStatusEvent) => void;
|
|
76
|
+
onChatGlobalStatus?: (event: StreamChatGlobalStatusEvent) => void;
|
|
77
|
+
onChatAuthenticated?: (event: StreamChatAuthenticatedEvent) => void;
|
|
78
|
+
onChatAuthError?: (event: StreamChatAuthErrorEvent) => void;
|
|
79
|
+
onReaction?: (event: StreamReactionEvent) => void;
|
|
80
|
+
onReactionError?: (event: StreamReactionErrorEvent) => void;
|
|
81
|
+
onTypingIndicator?: (event: TypingIndicatorEvent) => void;
|
|
82
|
+
onChatPinned?: (event: StreamChatPinnedEvent) => void;
|
|
83
|
+
onChatUnpinned?: (event: StreamChatUnpinnedEvent) => void;
|
|
84
|
+
onCountdownUpdated?: (event: StreamCountdownEvent) => void;
|
|
85
|
+
onLanguageUpdated?: (event: StreamLanguageEvent) => void;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stream WebSocket Service
|
|
89
|
+
*
|
|
90
|
+
* Manages real-time connections for streaming and chat functionality.
|
|
91
|
+
* Uses a SEPARATE WebSocket endpoint from the bundle backend.
|
|
92
|
+
*
|
|
93
|
+
* Key features:
|
|
94
|
+
* - Event buffering to prevent race conditions
|
|
95
|
+
* - Room-based subscriptions per token
|
|
96
|
+
* - Automatic reconnection with re-subscription
|
|
97
|
+
* - Memory-safe listener cleanup
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const wsService = new StreamWebSocketService({
|
|
102
|
+
* url: 'wss://stream.gala.com',
|
|
103
|
+
* authToken: 'jwt-token-here'
|
|
104
|
+
* });
|
|
105
|
+
*
|
|
106
|
+
* await wsService.connect();
|
|
107
|
+
*
|
|
108
|
+
* // Subscribe to a stream
|
|
109
|
+
* await wsService.subscribeToStream('mytoken', {
|
|
110
|
+
* onStreamStatus: (event) => console.log('Status:', event.status),
|
|
111
|
+
* onViewerCount: (event) => console.log('Viewers:', event.count),
|
|
112
|
+
* onChatMessage: (event) => console.log('Chat:', event.message.content)
|
|
113
|
+
* });
|
|
114
|
+
*
|
|
115
|
+
* // Send a chat message
|
|
116
|
+
* wsService.sendChatMessage('mytoken', 'Hello everyone!');
|
|
117
|
+
*
|
|
118
|
+
* // Cleanup
|
|
119
|
+
* wsService.unsubscribeFromStream('mytoken');
|
|
120
|
+
* wsService.disconnect();
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare class StreamWebSocketService extends LoggerBase {
|
|
124
|
+
private socket;
|
|
125
|
+
private config;
|
|
126
|
+
private isSocketIOAvailable;
|
|
127
|
+
private reconnectionManager;
|
|
128
|
+
private isAuthenticated;
|
|
129
|
+
private subscribedRooms;
|
|
130
|
+
private roomCallbacks;
|
|
131
|
+
private pendingSubscriptions;
|
|
132
|
+
private eventBuffer;
|
|
133
|
+
private eventBufferTimeouts;
|
|
134
|
+
private readonly MAX_BUFFER_SIZE;
|
|
135
|
+
private readonly BUFFER_CLEANUP_MS;
|
|
136
|
+
private globalCallbacks;
|
|
137
|
+
constructor(config: StreamWebSocketConfig, debug?: boolean);
|
|
138
|
+
/**
|
|
139
|
+
* Check if Socket.IO is available
|
|
140
|
+
*/
|
|
141
|
+
private checkSocketIOAvailability;
|
|
142
|
+
/**
|
|
143
|
+
* Get room name for token
|
|
144
|
+
*/
|
|
145
|
+
private getRoomName;
|
|
146
|
+
/**
|
|
147
|
+
* Buffer an event for potential late listeners
|
|
148
|
+
*/
|
|
149
|
+
private bufferEvent;
|
|
150
|
+
/**
|
|
151
|
+
* Process buffered events for a newly subscribed token
|
|
152
|
+
*/
|
|
153
|
+
private processBufferedEvents;
|
|
154
|
+
/**
|
|
155
|
+
* Setup global event listeners
|
|
156
|
+
*/
|
|
157
|
+
private setupGlobalListeners;
|
|
158
|
+
/**
|
|
159
|
+
* Re-subscribe to all active rooms after reconnection
|
|
160
|
+
*/
|
|
161
|
+
private resubscribeAll;
|
|
162
|
+
/**
|
|
163
|
+
* Connect to the stream WebSocket server
|
|
164
|
+
*
|
|
165
|
+
* @returns Promise that resolves when connected
|
|
166
|
+
* @throws ConfigurationError if Socket.IO is not available
|
|
167
|
+
*/
|
|
168
|
+
connect(): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Authenticate with the stream server for chat operations
|
|
171
|
+
*
|
|
172
|
+
* @param token JWT token for authentication
|
|
173
|
+
*/
|
|
174
|
+
authenticate(token: string): void;
|
|
175
|
+
/**
|
|
176
|
+
* Subscribe to a token's stream events
|
|
177
|
+
*
|
|
178
|
+
* @param tokenName Token name to subscribe to
|
|
179
|
+
* @param callbacks Event callbacks for this subscription
|
|
180
|
+
* @returns Promise that resolves when subscription is confirmed
|
|
181
|
+
* @throws ValidationError if WebSocket is not connected
|
|
182
|
+
* @throws Error if subscription times out
|
|
183
|
+
*/
|
|
184
|
+
subscribeToStream(tokenName: string, callbacks?: StreamEventCallbacks): Promise<StreamSubscribedEvent>;
|
|
185
|
+
/**
|
|
186
|
+
* Unsubscribe from a token's stream events
|
|
187
|
+
*
|
|
188
|
+
* @param tokenName Token name to unsubscribe from
|
|
189
|
+
*/
|
|
190
|
+
unsubscribeFromStream(tokenName: string): void;
|
|
191
|
+
/**
|
|
192
|
+
* Send a chat message via WebSocket (faster than REST)
|
|
193
|
+
*
|
|
194
|
+
* @param tokenName Token name for the chat room
|
|
195
|
+
* @param content Message content
|
|
196
|
+
* @throws ValidationError if not authenticated or not connected
|
|
197
|
+
*/
|
|
198
|
+
sendChatMessage(tokenName: string, content: string): void;
|
|
199
|
+
/**
|
|
200
|
+
* Send an ephemeral emoji reaction to a live stream
|
|
201
|
+
*
|
|
202
|
+
* Reactions are broadcast to all viewers but NOT persisted to database.
|
|
203
|
+
* Rate limiting is enforced server-side (burst of 10, then 0.5/sec refill).
|
|
204
|
+
*
|
|
205
|
+
* @param tokenName Token name for the stream
|
|
206
|
+
* @param emoji Emoji to send (single emoji or short sequence, max 15 chars)
|
|
207
|
+
* @param streamTime Current stream timecode in seconds (for viewer sync)
|
|
208
|
+
* @throws ValidationError if not authenticated or not connected
|
|
209
|
+
* @since 5.2.0
|
|
210
|
+
*/
|
|
211
|
+
sendReaction(tokenName: string, emoji: string, streamTime?: number): void;
|
|
212
|
+
/**
|
|
213
|
+
* Send typing indicator start event
|
|
214
|
+
*
|
|
215
|
+
* Indicates user has started typing in chat. Server broadcasts typing
|
|
216
|
+
* status to all viewers in the room except the sender.
|
|
217
|
+
*
|
|
218
|
+
* Auto-expires after 5 seconds if no typing activity.
|
|
219
|
+
* Use sendTypingStop() to explicitly stop the indicator.
|
|
220
|
+
*
|
|
221
|
+
* @param tokenName Token name for the chat room
|
|
222
|
+
* @throws ValidationError if not authenticated or not connected
|
|
223
|
+
* @since 5.11.0
|
|
224
|
+
*/
|
|
225
|
+
sendTypingStart(tokenName: string): void;
|
|
226
|
+
/**
|
|
227
|
+
* Send typing indicator stop event
|
|
228
|
+
*
|
|
229
|
+
* Indicates user has stopped typing (e.g., message sent, input cleared, blur).
|
|
230
|
+
* Call this when user sends message, clears input, or loses focus.
|
|
231
|
+
*
|
|
232
|
+
* @param tokenName Token name for the chat room
|
|
233
|
+
* @throws ValidationError if not authenticated or not connected
|
|
234
|
+
* @since 5.11.0
|
|
235
|
+
*/
|
|
236
|
+
sendTypingStop(tokenName: string): void;
|
|
237
|
+
/**
|
|
238
|
+
* Set global event callbacks (not per-room)
|
|
239
|
+
*
|
|
240
|
+
* @param callbacks Global event callbacks
|
|
241
|
+
*/
|
|
242
|
+
setGlobalCallbacks(callbacks: StreamEventCallbacks): void;
|
|
243
|
+
/**
|
|
244
|
+
* Get list of currently subscribed tokens
|
|
245
|
+
*/
|
|
246
|
+
getSubscribedTokens(): string[];
|
|
247
|
+
/**
|
|
248
|
+
* Check if connected to the WebSocket server
|
|
249
|
+
*/
|
|
250
|
+
isConnected(): boolean;
|
|
251
|
+
/**
|
|
252
|
+
* Check if authenticated for chat operations
|
|
253
|
+
*/
|
|
254
|
+
isAuthenticatedForChat(): boolean;
|
|
255
|
+
/**
|
|
256
|
+
* Get the underlying Socket.IO instance
|
|
257
|
+
*/
|
|
258
|
+
getSocket(): Socket | null;
|
|
259
|
+
/**
|
|
260
|
+
* Disconnect from the stream WebSocket server
|
|
261
|
+
*
|
|
262
|
+
* Cleans up all listeners, subscriptions, and buffers.
|
|
263
|
+
* All cleanup operations are wrapped in try-catch to ensure
|
|
264
|
+
* complete cleanup even if individual steps fail.
|
|
265
|
+
*/
|
|
266
|
+
disconnect(): void;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=StreamWebSocketService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamWebSocketService.d.ts","sourceRoot":"","sources":["../../../src/services/StreamWebSocketService.ts"],"names":[],"mappings":"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"}
|