@levrbet/shared 0.0.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/LICENSE +201 -0
- package/README.md +92 -0
- package/bin/setup-prisma.js +44 -0
- package/dist/core/config/dotenv.d.ts +16 -0
- package/dist/core/config/dotenv.js +77 -0
- package/dist/core/config/dotenv.js.map +1 -0
- package/dist/core/config/index.d.ts +2 -0
- package/dist/core/config/index.js +19 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/urls.d.ts +55 -0
- package/dist/core/config/urls.js +61 -0
- package/dist/core/config/urls.js.map +1 -0
- package/dist/core/contracts/abis/LevrBaseMarket.d.ts +1009 -0
- package/dist/core/contracts/abis/LevrBaseMarket.js +976 -0
- package/dist/core/contracts/abis/LevrBaseMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrConfigProvider.d.ts +2671 -0
- package/dist/core/contracts/abis/LevrConfigProvider.js +2551 -0
- package/dist/core/contracts/abis/LevrConfigProvider.js.map +1 -0
- package/dist/core/contracts/abis/LevrFeeCollector.d.ts +259 -0
- package/dist/core/contracts/abis/LevrFeeCollector.js +143 -0
- package/dist/core/contracts/abis/LevrFeeCollector.js.map +1 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.d.ts +1050 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.js +462 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrFundManager.d.ts +51 -0
- package/dist/core/contracts/abis/LevrFundManager.js +4 -0
- package/dist/core/contracts/abis/LevrFundManager.js.map +1 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.d.ts +244 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.js +231 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.js.map +1 -0
- package/dist/core/contracts/abis/LevrManager.d.ts +1281 -0
- package/dist/core/contracts/abis/LevrManager.js +1090 -0
- package/dist/core/contracts/abis/LevrManager.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketFeed.d.ts +902 -0
- package/dist/core/contracts/abis/LevrMarketFeed.js +775 -0
- package/dist/core/contracts/abis/LevrMarketFeed.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketMaker.d.ts +175 -0
- package/dist/core/contracts/abis/LevrMarketMaker.js +108 -0
- package/dist/core/contracts/abis/LevrMarketMaker.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.d.ts +682 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.js +323 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketRouter.d.ts +281 -0
- package/dist/core/contracts/abis/LevrMarketRouter.js +262 -0
- package/dist/core/contracts/abis/LevrMarketRouter.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpDepository.d.ts +766 -0
- package/dist/core/contracts/abis/LevrMvpDepository.js +396 -0
- package/dist/core/contracts/abis/LevrMvpDepository.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpRouter.d.ts +305 -0
- package/dist/core/contracts/abis/LevrMvpRouter.js +291 -0
- package/dist/core/contracts/abis/LevrMvpRouter.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpStaker.d.ts +746 -0
- package/dist/core/contracts/abis/LevrMvpStaker.js +386 -0
- package/dist/core/contracts/abis/LevrMvpStaker.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpToken.d.ts +341 -0
- package/dist/core/contracts/abis/LevrMvpToken.js +183 -0
- package/dist/core/contracts/abis/LevrMvpToken.js.map +1 -0
- package/dist/core/contracts/abis/LevrOrderbook.d.ts +471 -0
- package/dist/core/contracts/abis/LevrOrderbook.js +486 -0
- package/dist/core/contracts/abis/LevrOrderbook.js.map +1 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.d.ts +167 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.js +103 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.js.map +1 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.d.ts +1054 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.js +463 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrPythFeed.d.ts +225 -0
- package/dist/core/contracts/abis/LevrPythFeed.js +131 -0
- package/dist/core/contracts/abis/LevrPythFeed.js.map +1 -0
- package/dist/core/contracts/abis/LevrUtil.d.ts +485 -0
- package/dist/core/contracts/abis/LevrUtil.js +226 -0
- package/dist/core/contracts/abis/LevrUtil.js.map +1 -0
- package/dist/core/contracts/abis/Storage.d.ts +34 -0
- package/dist/core/contracts/abis/Storage.js +47 -0
- package/dist/core/contracts/abis/Storage.js.map +1 -0
- package/dist/core/contracts/abis/index.d.ts +12174 -0
- package/dist/core/contracts/abis/index.js +51 -0
- package/dist/core/contracts/abis/index.js.map +1 -0
- package/dist/core/contracts/addresses.d.ts +154 -0
- package/dist/core/contracts/addresses.js +160 -0
- package/dist/core/contracts/addresses.js.map +1 -0
- package/dist/core/contracts/chains.d.ts +4 -0
- package/dist/core/contracts/chains.js +14 -0
- package/dist/core/contracts/chains.js.map +1 -0
- package/dist/core/contracts/clients/index.d.ts +1 -0
- package/dist/core/contracts/clients/index.js +18 -0
- package/dist/core/contracts/clients/index.js.map +1 -0
- package/dist/core/contracts/clients/publicClients.d.ts +24 -0
- package/dist/core/contracts/clients/publicClients.js +123 -0
- package/dist/core/contracts/clients/publicClients.js.map +1 -0
- package/dist/core/contracts/constants.d.ts +15 -0
- package/dist/core/contracts/constants.js +30 -0
- package/dist/core/contracts/constants.js.map +1 -0
- package/dist/core/contracts/index.d.ts +6 -0
- package/dist/core/contracts/index.js +23 -0
- package/dist/core/contracts/index.js.map +1 -0
- package/dist/core/contracts/instances.d.ts +48 -0
- package/dist/core/contracts/instances.js +101 -0
- package/dist/core/contracts/instances.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/indexers/envio.test.query.d.ts +5 -0
- package/dist/core/indexers/envio.test.query.js +32 -0
- package/dist/core/indexers/envio.test.query.js.map +1 -0
- package/dist/core/indexers/index.d.ts +1 -0
- package/dist/core/indexers/index.js +18 -0
- package/dist/core/indexers/index.js.map +1 -0
- package/dist/core/indexers/indexers.service.d.ts +19 -0
- package/dist/core/indexers/indexers.service.js +104 -0
- package/dist/core/indexers/indexers.service.js.map +1 -0
- package/dist/core/indexers/subsquid.test.query.d.ts +4 -0
- package/dist/core/indexers/subsquid.test.query.js +42 -0
- package/dist/core/indexers/subsquid.test.query.js.map +1 -0
- package/dist/core/prisma/index.d.ts +1 -0
- package/dist/core/prisma/index.js +21 -0
- package/dist/core/prisma/index.js.map +1 -0
- package/dist/core/prisma/schema.prisma +360 -0
- package/dist/core/privy/constants.d.ts +19 -0
- package/dist/core/privy/constants.js +28 -0
- package/dist/core/privy/constants.js.map +1 -0
- package/dist/core/privy/index.d.ts +1 -0
- package/dist/core/privy/index.js +18 -0
- package/dist/core/privy/index.js.map +1 -0
- package/dist/core/socket.io/events.d.ts +20 -0
- package/dist/core/socket.io/events.js +20 -0
- package/dist/core/socket.io/events.js.map +1 -0
- package/dist/core/socket.io/index.d.ts +2 -0
- package/dist/core/socket.io/index.js +19 -0
- package/dist/core/socket.io/index.js.map +1 -0
- package/dist/core/socket.io/rooms.d.ts +6 -0
- package/dist/core/socket.io/rooms.js +10 -0
- package/dist/core/socket.io/rooms.js.map +1 -0
- package/dist/core/types/auth/auth.types.d.ts +31 -0
- package/dist/core/types/auth/auth.types.js +15 -0
- package/dist/core/types/auth/auth.types.js.map +1 -0
- package/dist/core/types/auth/index.d.ts +2 -0
- package/dist/core/types/auth/index.js +19 -0
- package/dist/core/types/auth/index.js.map +1 -0
- package/dist/core/types/auth/request.types.d.ts +19 -0
- package/dist/core/types/auth/request.types.js +15 -0
- package/dist/core/types/auth/request.types.js.map +1 -0
- package/dist/core/types/blockchain/chains.types.d.ts +3 -0
- package/dist/core/types/blockchain/chains.types.js +8 -0
- package/dist/core/types/blockchain/chains.types.js.map +1 -0
- package/dist/core/types/blockchain/contract.types.d.ts +8 -0
- package/dist/core/types/blockchain/contract.types.js +13 -0
- package/dist/core/types/blockchain/contract.types.js.map +1 -0
- package/dist/core/types/blockchain/index.d.ts +3 -0
- package/dist/core/types/blockchain/index.js +20 -0
- package/dist/core/types/blockchain/index.js.map +1 -0
- package/dist/core/types/blockchain/oz.relayer.types.d.ts +7 -0
- package/dist/core/types/blockchain/oz.relayer.types.js +13 -0
- package/dist/core/types/blockchain/oz.relayer.types.js.map +1 -0
- package/dist/core/types/index.d.ts +6 -0
- package/dist/core/types/index.js +23 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/indexers.types.d.ts +4 -0
- package/dist/core/types/indexers.types.js +9 -0
- package/dist/core/types/indexers.types.js.map +1 -0
- package/dist/core/types/misc.types.d.ts +6 -0
- package/dist/core/types/misc.types.js +11 -0
- package/dist/core/types/misc.types.js.map +1 -0
- package/dist/core/types/oracle/fixture.types.d.ts +75 -0
- package/dist/core/types/oracle/fixture.types.js +4 -0
- package/dist/core/types/oracle/fixture.types.js.map +1 -0
- package/dist/core/types/oracle/game/game.types.d.ts +108 -0
- package/dist/core/types/oracle/game/game.types.js +64 -0
- package/dist/core/types/oracle/game/game.types.js.map +1 -0
- package/dist/core/types/oracle/game/index.d.ts +2 -0
- package/dist/core/types/oracle/game/index.js +19 -0
- package/dist/core/types/oracle/game/index.js.map +1 -0
- package/dist/core/types/oracle/game/zod.game.types.d.ts +31 -0
- package/dist/core/types/oracle/game/zod.game.types.js +22 -0
- package/dist/core/types/oracle/game/zod.game.types.js.map +1 -0
- package/dist/core/types/oracle/index.d.ts +4 -0
- package/dist/core/types/oracle/index.js +21 -0
- package/dist/core/types/oracle/index.js.map +1 -0
- package/dist/core/types/oracle/market/index.d.ts +3 -0
- package/dist/core/types/oracle/market/index.js +20 -0
- package/dist/core/types/oracle/market/index.js.map +1 -0
- package/dist/core/types/oracle/market/markets.types.d.ts +95 -0
- package/dist/core/types/oracle/market/markets.types.js +35 -0
- package/dist/core/types/oracle/market/markets.types.js.map +1 -0
- package/dist/core/types/oracle/market/odds.types.d.ts +14 -0
- package/dist/core/types/oracle/market/odds.types.js +3 -0
- package/dist/core/types/oracle/market/odds.types.js.map +1 -0
- package/dist/core/types/oracle/market/positions.types.d.ts +57 -0
- package/dist/core/types/oracle/market/positions.types.js +3 -0
- package/dist/core/types/oracle/market/positions.types.js.map +1 -0
- package/dist/core/types/oracle/requests/game.request.types.d.ts +170 -0
- package/dist/core/types/oracle/requests/game.request.types.js +126 -0
- package/dist/core/types/oracle/requests/game.request.types.js.map +1 -0
- package/dist/core/types/oracle/requests/game.response.types.d.ts +8 -0
- package/dist/core/types/oracle/requests/game.response.types.js +3 -0
- package/dist/core/types/oracle/requests/game.response.types.js.map +1 -0
- package/dist/core/types/oracle/requests/index.d.ts +5 -0
- package/dist/core/types/oracle/requests/index.js +22 -0
- package/dist/core/types/oracle/requests/index.js.map +1 -0
- package/dist/core/types/oracle/requests/market.request.types.d.ts +63 -0
- package/dist/core/types/oracle/requests/market.request.types.js +41 -0
- package/dist/core/types/oracle/requests/market.request.types.js.map +1 -0
- package/dist/core/types/oracle/requests/odds.response.types.d.ts +2 -0
- package/dist/core/types/oracle/requests/odds.response.types.js +3 -0
- package/dist/core/types/oracle/requests/odds.response.types.js.map +1 -0
- package/dist/core/types/oracle/requests/user.request.type.d.ts +4 -0
- package/dist/core/types/oracle/requests/user.request.type.js +3 -0
- package/dist/core/types/oracle/requests/user.request.type.js.map +1 -0
- package/dist/core/types/privy.types.d.ts +4 -0
- package/dist/core/types/privy.types.js +9 -0
- package/dist/core/types/privy.types.js.map +1 -0
- package/dist/core/utils/converters.utils.d.ts +29 -0
- package/dist/core/utils/converters.utils.js +97 -0
- package/dist/core/utils/converters.utils.js.map +1 -0
- package/dist/core/utils/game.utils.d.ts +4 -0
- package/dist/core/utils/game.utils.js +79 -0
- package/dist/core/utils/game.utils.js.map +1 -0
- package/dist/core/utils/index.d.ts +4 -0
- package/dist/core/utils/index.js +21 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/misc.utils.d.ts +14 -0
- package/dist/core/utils/misc.utils.js +33 -0
- package/dist/core/utils/misc.utils.js.map +1 -0
- package/dist/core/utils/position.utils.d.ts +18 -0
- package/dist/core/utils/position.utils.js +68 -0
- package/dist/core/utils/position.utils.js.map +1 -0
- package/dist/core/validators/bytes.validators.d.ts +32 -0
- package/dist/core/validators/bytes.validators.js +47 -0
- package/dist/core/validators/bytes.validators.js.map +1 -0
- package/dist/core/validators/index.d.ts +2 -0
- package/dist/core/validators/index.js +19 -0
- package/dist/core/validators/index.js.map +1 -0
- package/dist/core/validators/mongo.validators.d.ts +2 -0
- package/dist/core/validators/mongo.validators.js +10 -0
- package/dist/core/validators/mongo.validators.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/auth/index.d.ts +1 -0
- package/dist/react/hooks/auth/index.js +18 -0
- package/dist/react/hooks/auth/index.js.map +1 -0
- package/dist/react/hooks/auth/useAuthHeaders.d.ts +45 -0
- package/dist/react/hooks/auth/useAuthHeaders.js +58 -0
- package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/index.d.ts +6 -0
- package/dist/react/hooks/contracts/erc20/index.js +23 -0
- package/dist/react/hooks/contracts/erc20/index.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.d.ts +13 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.js +28 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.d.ts +10 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.js +34 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.d.ts +22 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.js +95 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.d.ts +8 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.js +28 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.d.ts +8 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.js +28 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.d.ts +13 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.js +31 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.js.map +1 -0
- package/dist/react/hooks/contracts/index.d.ts +3 -0
- package/dist/react/hooks/contracts/index.js +20 -0
- package/dist/react/hooks/contracts/index.js.map +1 -0
- package/dist/react/hooks/contracts/useContracts.d.ts +120 -0
- package/dist/react/hooks/contracts/useContracts.js +81 -0
- package/dist/react/hooks/contracts/useContracts.js.map +1 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.d.ts +3 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.js +27 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.js.map +1 -0
- package/dist/react/hooks/index.d.ts +2 -0
- package/dist/react/hooks/index.js +19 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/index.d.ts +6 -0
- package/dist/react/index.js +23 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/injectedDependencies.d.ts +78 -0
- package/dist/react/injectedDependencies.js +94 -0
- package/dist/react/injectedDependencies.js.map +1 -0
- package/dist/react/queryClient.d.ts +9 -0
- package/dist/react/queryClient.js +13 -0
- package/dist/react/queryClient.js.map +1 -0
- package/dist/react/queryKeys.d.ts +17 -0
- package/dist/react/queryKeys.js +23 -0
- package/dist/react/queryKeys.js.map +1 -0
- package/dist/react/types/contracts.types.d.ts +4 -0
- package/dist/react/types/contracts.types.js +3 -0
- package/dist/react/types/contracts.types.js.map +1 -0
- package/dist/react/types/index.d.ts +1 -0
- package/dist/react/types/index.js +18 -0
- package/dist/react/types/index.js.map +1 -0
- package/dist/server/config/cloudflare.d.ts +30 -0
- package/dist/server/config/cloudflare.js +45 -0
- package/dist/server/config/cloudflare.js.map +1 -0
- package/dist/server/config/constants.d.ts +1 -0
- package/dist/server/config/constants.js +7 -0
- package/dist/server/config/constants.js.map +1 -0
- package/dist/server/config/dotenv.d.ts +35 -0
- package/dist/server/config/dotenv.js +42 -0
- package/dist/server/config/dotenv.js.map +1 -0
- package/dist/server/config/index.d.ts +9 -0
- package/dist/server/config/index.js +31 -0
- package/dist/server/config/index.js.map +1 -0
- package/dist/server/config/kms.d.ts +22 -0
- package/dist/server/config/kms.js +54 -0
- package/dist/server/config/kms.js.map +1 -0
- package/dist/server/config/prisma.d.ts +20 -0
- package/dist/server/config/prisma.js +40 -0
- package/dist/server/config/prisma.js.map +1 -0
- package/dist/server/config/redis.d.ts +57 -0
- package/dist/server/config/redis.js +121 -0
- package/dist/server/config/redis.js.map +1 -0
- package/dist/server/config/urls.d.ts +49 -0
- package/dist/server/config/urls.js +7 -0
- package/dist/server/config/urls.js.map +1 -0
- package/dist/server/config/winston.d.ts +3 -0
- package/dist/server/config/winston.js +14 -0
- package/dist/server/config/winston.js.map +1 -0
- package/dist/server/contracts/clients/index.d.ts +1 -0
- package/dist/server/contracts/clients/index.js +18 -0
- package/dist/server/contracts/clients/index.js.map +1 -0
- package/dist/server/contracts/clients/ozRelayerService.d.ts +18 -0
- package/dist/server/contracts/clients/ozRelayerService.js +167 -0
- package/dist/server/contracts/clients/ozRelayerService.js.map +1 -0
- package/dist/server/contracts/index.d.ts +2 -0
- package/dist/server/contracts/index.js +19 -0
- package/dist/server/contracts/index.js.map +1 -0
- package/dist/server/contracts/instances.d.ts +20 -0
- package/dist/server/contracts/instances.js +28 -0
- package/dist/server/contracts/instances.js.map +1 -0
- package/dist/server/index.d.ts +11 -0
- package/dist/server/index.js +36 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/instrumentation.d.ts +9 -0
- package/dist/server/instrumentation.js +37 -0
- package/dist/server/instrumentation.js.map +1 -0
- package/dist/server/liquidation-engine/index.d.ts +3 -0
- package/dist/server/liquidation-engine/index.js +20 -0
- package/dist/server/liquidation-engine/index.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.d.ts +10 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.js +15 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.d.ts +124 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.js +242 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.d.ts +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js +115 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js.map +1 -0
- package/dist/server/liquidation-engine/types/index.d.ts +1 -0
- package/dist/server/liquidation-engine/types/index.js +3 -0
- package/dist/server/liquidation-engine/types/index.js.map +1 -0
- package/dist/server/middleware/auth/cloudflare.handler.d.ts +6 -0
- package/dist/server/middleware/auth/cloudflare.handler.js +37 -0
- package/dist/server/middleware/auth/cloudflare.handler.js.map +1 -0
- package/dist/server/middleware/auth/hmac.handler.d.ts +11 -0
- package/dist/server/middleware/auth/hmac.handler.js +157 -0
- package/dist/server/middleware/auth/hmac.handler.js.map +1 -0
- package/dist/server/middleware/auth/index.d.ts +3 -0
- package/dist/server/middleware/auth/index.js +20 -0
- package/dist/server/middleware/auth/index.js.map +1 -0
- package/dist/server/middleware/auth/privy.handler.d.ts +7 -0
- package/dist/server/middleware/auth/privy.handler.js +31 -0
- package/dist/server/middleware/auth/privy.handler.js.map +1 -0
- package/dist/server/middleware/index.d.ts +2 -0
- package/dist/server/middleware/index.js +19 -0
- package/dist/server/middleware/index.js.map +1 -0
- package/dist/server/middleware/multiAuth.examples.d.ts +46 -0
- package/dist/server/middleware/multiAuth.examples.js +123 -0
- package/dist/server/middleware/multiAuth.examples.js.map +1 -0
- package/dist/server/middleware/multiAuth.middleware.d.ts +30 -0
- package/dist/server/middleware/multiAuth.middleware.js +90 -0
- package/dist/server/middleware/multiAuth.middleware.js.map +1 -0
- package/dist/server/middleware/rateLimit.middleware.d.ts +1 -0
- package/dist/server/middleware/rateLimit.middleware.js +19 -0
- package/dist/server/middleware/rateLimit.middleware.js.map +1 -0
- package/dist/server/oracle/index.d.ts +3 -0
- package/dist/server/oracle/index.js +20 -0
- package/dist/server/oracle/index.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.d.ts +90 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js +147 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/channels.d.ts +2 -0
- package/dist/server/oracle/redis-cache-manager/channels.js +11 -0
- package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.d.ts +184 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js +698 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/index.d.ts +4 -0
- package/dist/server/oracle/redis-cache-manager/index.js +21 -0
- package/dist/server/oracle/redis-cache-manager/index.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.d.ts +115 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js +279 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js.map +1 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.d.ts +21 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.js +128 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.js.map +1 -0
- package/dist/server/oracle/rmq-manager/index.d.ts +2 -0
- package/dist/server/oracle/rmq-manager/index.js +19 -0
- package/dist/server/oracle/rmq-manager/index.js.map +1 -0
- package/dist/server/oracle/rmq-manager/queue.configs.d.ts +5 -0
- package/dist/server/oracle/rmq-manager/queue.configs.js +38 -0
- package/dist/server/oracle/rmq-manager/queue.configs.js.map +1 -0
- package/dist/server/oracle/types/index.d.ts +2 -0
- package/dist/server/oracle/types/index.js +19 -0
- package/dist/server/oracle/types/index.js.map +1 -0
- package/dist/server/oracle/types/providers/index.d.ts +4 -0
- package/dist/server/oracle/types/providers/index.js +21 -0
- package/dist/server/oracle/types/providers/index.js.map +1 -0
- package/dist/server/oracle/types/providers/lsports.types.d.ts +148 -0
- package/dist/server/oracle/types/providers/lsports.types.js +13 -0
- package/dist/server/oracle/types/providers/lsports.types.js.map +1 -0
- package/dist/server/oracle/types/providers/optic.odds.types.d.ts +293 -0
- package/dist/server/oracle/types/providers/optic.odds.types.js +140 -0
- package/dist/server/oracle/types/providers/optic.odds.types.js.map +1 -0
- package/dist/server/oracle/types/providers/providers.types.d.ts +5 -0
- package/dist/server/oracle/types/providers/providers.types.js +10 -0
- package/dist/server/oracle/types/providers/providers.types.js.map +1 -0
- package/dist/server/oracle/types/providers/rundown.types.d.ts +194 -0
- package/dist/server/oracle/types/providers/rundown.types.js +22 -0
- package/dist/server/oracle/types/providers/rundown.types.js.map +1 -0
- package/dist/server/oracle/types/queue/index.d.ts +2 -0
- package/dist/server/oracle/types/queue/index.js +19 -0
- package/dist/server/oracle/types/queue/index.js.map +1 -0
- package/dist/server/oracle/types/queue/queue.constant.d.ts +10 -0
- package/dist/server/oracle/types/queue/queue.constant.js +14 -0
- package/dist/server/oracle/types/queue/queue.constant.js.map +1 -0
- package/dist/server/oracle/types/queue/queue.types.d.ts +5 -0
- package/dist/server/oracle/types/queue/queue.types.js +3 -0
- package/dist/server/oracle/types/queue/queue.types.js.map +1 -0
- package/dist/server/prisma/index.d.ts +2 -0
- package/dist/server/prisma/index.js +24 -0
- package/dist/server/prisma/index.js.map +1 -0
- package/dist/server/repositories/apiKey.repository.d.ts +7 -0
- package/dist/server/repositories/apiKey.repository.js +19 -0
- package/dist/server/repositories/apiKey.repository.js.map +1 -0
- package/dist/server/repositories/index.d.ts +1 -0
- package/dist/server/repositories/index.js +18 -0
- package/dist/server/repositories/index.js.map +1 -0
- package/dist/server/services/cloudflare.service.d.ts +12 -0
- package/dist/server/services/cloudflare.service.js +24 -0
- package/dist/server/services/cloudflare.service.js.map +1 -0
- package/dist/server/services/crypto.service.d.ts +17 -0
- package/dist/server/services/crypto.service.js +50 -0
- package/dist/server/services/crypto.service.js.map +1 -0
- package/dist/server/services/hmac.service.d.ts +52 -0
- package/dist/server/services/hmac.service.js +115 -0
- package/dist/server/services/hmac.service.js.map +1 -0
- package/dist/server/services/index.d.ts +5 -0
- package/dist/server/services/index.js +22 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/presigned.urls.d.ts +11 -0
- package/dist/server/services/presigned.urls.js +41 -0
- package/dist/server/services/presigned.urls.js.map +1 -0
- package/dist/server/services/privy.service.d.ts +30 -0
- package/dist/server/services/privy.service.js +122 -0
- package/dist/server/services/privy.service.js.map +1 -0
- package/dist/server/test-relayers.d.ts +1 -0
- package/dist/server/test-relayers.js +17 -0
- package/dist/server/test-relayers.js.map +1 -0
- package/dist/server/types/auth.types.d.ts +8 -0
- package/dist/server/types/auth.types.js +3 -0
- package/dist/server/types/auth.types.js.map +1 -0
- package/dist/server/types/global.types.d.ts +35 -0
- package/dist/server/types/global.types.js +4 -0
- package/dist/server/types/global.types.js.map +1 -0
- package/dist/server/types/index.d.ts +2 -0
- package/dist/server/types/index.js +19 -0
- package/dist/server/types/index.js.map +1 -0
- package/dist/server/utils/express.utils.d.ts +24 -0
- package/dist/server/utils/express.utils.js +36 -0
- package/dist/server/utils/express.utils.js.map +1 -0
- package/dist/server/utils/index.d.ts +2 -0
- package/dist/server/utils/index.js +19 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/tracing/index.d.ts +2 -0
- package/dist/server/utils/tracing/index.js +19 -0
- package/dist/server/utils/tracing/index.js.map +1 -0
- package/dist/server/utils/tracing/trace.d.ts +12 -0
- package/dist/server/utils/tracing/trace.js +50 -0
- package/dist/server/utils/tracing/trace.js.map +1 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.d.ts +126 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.js +202 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.js.map +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkChangeOverActive = exports.setChangeOverActive = exports.getStreamData = exports.deleteStream = exports.addPrices = exports.streamsOfMarketsBeingWatched = exports.removeStreamFromSet = exports.updateStreamSetsRoundRobin = void 0;
|
|
4
|
+
const core_1 = require("../../../core");
|
|
5
|
+
const config_1 = require("../../config");
|
|
6
|
+
const cache_keys_util_1 = require("./cache.keys.util");
|
|
7
|
+
/**
|
|
8
|
+
* Updates the round-robin assignment of a market's price stream to a Redis set.
|
|
9
|
+
*
|
|
10
|
+
* This function manages the distribution of market price streams across a fixed number of Redis sets,
|
|
11
|
+
* using a round-robin strategy to balance load and ensure even distribution. It performs the following steps atomically:
|
|
12
|
+
* 1. Retrieves the current round-robin index from Redis.
|
|
13
|
+
* 2. Calculates the next index, wrapping around based on `LE_STREAMS_SETS_MAX_COUNT`.
|
|
14
|
+
* 3. Adds the given `marketId` to the corresponding Redis set for the next round.
|
|
15
|
+
* 4. Updates the round-robin index in Redis.
|
|
16
|
+
* 5. Maps the `marketId` to its assigned set index in a Redis hash for quick lookup.
|
|
17
|
+
*
|
|
18
|
+
* All Redis operations are executed in a single pipeline to ensure atomicity and performance.
|
|
19
|
+
*
|
|
20
|
+
* @param redis - The Redis client instance used for executing commands.
|
|
21
|
+
* @param marketId - The unique identifier for the market, represented as a 16-byte value.
|
|
22
|
+
* @returns A promise that resolves when the operation is complete.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* - Assumes that `LE_STREAMS_SETS_MAX_COUNT`, `lastUpdatedStreamSetCountKey`, `marketsBeingWatched`, `PRICE_STREAM_KEY`,
|
|
26
|
+
* and `MARKET_TO_SET_ID` are defined and accessible in the module scope.
|
|
27
|
+
* - Ensures that each market is always assigned to a set, and the mapping is kept up-to-date for efficient retrieval.
|
|
28
|
+
* - Designed for high-throughput environments where market assignments need to be balanced dynamically.
|
|
29
|
+
*/
|
|
30
|
+
const updateStreamSetsRoundRobin = async (redis, marketId) => {
|
|
31
|
+
// Get the current Id for round robin
|
|
32
|
+
let Id = await redis.get(cache_keys_util_1.lastUpdatedStreamSetCountKey);
|
|
33
|
+
Id ?? (Id = "0");
|
|
34
|
+
const nextId = (parseInt(Id, 10) + 1) % cache_keys_util_1.LE_STREAMS_SETS_MAX_COUNT;
|
|
35
|
+
const pipeline = redis.pipeline();
|
|
36
|
+
// Add marketId to the watched set
|
|
37
|
+
pipeline.sadd((0, cache_keys_util_1.marketsBeingWatched)(nextId), (0, cache_keys_util_1.PRICE_STREAM_KEY)(marketId));
|
|
38
|
+
// Update the last updated Id
|
|
39
|
+
pipeline.set(cache_keys_util_1.lastUpdatedStreamSetCountKey, nextId.toString());
|
|
40
|
+
// Key = MARKET_TO_SET_ID
|
|
41
|
+
// Value = nextId
|
|
42
|
+
// FIELD = marketId
|
|
43
|
+
pipeline.hset(cache_keys_util_1.MARKET_TO_SET_ID, marketId, nextId.toString());
|
|
44
|
+
await pipeline.exec();
|
|
45
|
+
};
|
|
46
|
+
exports.updateStreamSetsRoundRobin = updateStreamSetsRoundRobin;
|
|
47
|
+
// use this at market completed/settlement to remove it from being watched
|
|
48
|
+
/**
|
|
49
|
+
* Removes a market's price stream from its associated Redis set and deletes its mapping.
|
|
50
|
+
*
|
|
51
|
+
* This function performs the following steps atomically using a Redis pipeline:
|
|
52
|
+
* 1. Retrieves the set ID associated with the given `marketId` from the `MARKET_TO_SET_ID` hash.
|
|
53
|
+
* 2. If the mapping does not exist, logs a warning and exits.
|
|
54
|
+
* 3. Removes the market's price stream key from the corresponding watched set.
|
|
55
|
+
* 4. Deletes the mapping of `marketId` from the `MARKET_TO_SET_ID` hash.
|
|
56
|
+
* 5. Executes the pipeline and checks for errors, logging and rethrowing if any occur.
|
|
57
|
+
* 6. Logs successful removal of the market from the set.
|
|
58
|
+
*
|
|
59
|
+
* @param redis - The Redis client instance used for executing commands.
|
|
60
|
+
* @param marketId - The unique identifier for the market whose stream should be removed.
|
|
61
|
+
* @returns A promise that resolves when the operation is complete.
|
|
62
|
+
* @throws If any Redis operation in the pipeline fails, the error is logged and rethrown.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* - Ensures atomicity and consistency by using Redis pipelines.
|
|
66
|
+
* - Designed for use in environments where market-to-set mappings are dynamically managed.
|
|
67
|
+
* - Logging is performed at both warning and error levels for observability.
|
|
68
|
+
*/
|
|
69
|
+
const removeStreamFromSet = async (redis, marketId) => {
|
|
70
|
+
const setIdStr = await redis.hget(cache_keys_util_1.MARKET_TO_SET_ID, marketId);
|
|
71
|
+
if (!setIdStr) {
|
|
72
|
+
config_1.logger.warn(`Market ${marketId} mapping not found`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Remove marketId from the watched set
|
|
76
|
+
const setId = parseInt(setIdStr, 10);
|
|
77
|
+
const pipeline = redis.pipeline();
|
|
78
|
+
pipeline.srem((0, cache_keys_util_1.marketsBeingWatched)(setId), (0, cache_keys_util_1.PRICE_STREAM_KEY)(marketId));
|
|
79
|
+
pipeline.hdel(cache_keys_util_1.MARKET_TO_SET_ID, marketId);
|
|
80
|
+
const results = await pipeline.exec();
|
|
81
|
+
if (results) {
|
|
82
|
+
for (const [err] of results) {
|
|
83
|
+
if (err) {
|
|
84
|
+
config_1.logger.error(`Error removing market ${marketId} from set ${setId}: ${err.message}`);
|
|
85
|
+
throw err;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
config_1.logger.info(`Market ${marketId} removed from set ${setId}`);
|
|
90
|
+
};
|
|
91
|
+
exports.removeStreamFromSet = removeStreamFromSet;
|
|
92
|
+
// gets the stream to add to xread for a worker
|
|
93
|
+
const streamsOfMarketsBeingWatched = async (redis, Id) => {
|
|
94
|
+
return await redis.smembers((0, cache_keys_util_1.marketsBeingWatched)(Id));
|
|
95
|
+
};
|
|
96
|
+
exports.streamsOfMarketsBeingWatched = streamsOfMarketsBeingWatched;
|
|
97
|
+
/**
|
|
98
|
+
* Adds an array of price objects to a Redis stream for a specific market.
|
|
99
|
+
*
|
|
100
|
+
* This function ensures the Redis consumer group for the price stream exists,
|
|
101
|
+
* creating it if necessary. It then adds each price to the stream using a pipeline
|
|
102
|
+
* for efficiency, enforcing a maximum stream length. The first entry in the stream
|
|
103
|
+
* is guaranteed to create the stream if it does not exist. If no prices are provided,
|
|
104
|
+
* the function logs and exits early.
|
|
105
|
+
*
|
|
106
|
+
* @param redis - The Redis client instance used for stream operations.
|
|
107
|
+
* @param prices - An array of Odds objects to be added to the stream.
|
|
108
|
+
* @param marketId - The unique identifier for the market, used to derive the stream key.
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* - The function is idempotent with respect to consumer group creation; it will not throw
|
|
112
|
+
* if the group already exists.
|
|
113
|
+
* - Each price is validated against the OddsSchema before being added.
|
|
114
|
+
* - Uses Redis pipelining for batch efficiency.
|
|
115
|
+
* - Logs the number of prices added for observability.
|
|
116
|
+
*
|
|
117
|
+
* @throws
|
|
118
|
+
* Throws any unexpected errors encountered during consumer group creation or pipeline execution.
|
|
119
|
+
*/
|
|
120
|
+
const addPrices = async (redis, prices, marketId) => {
|
|
121
|
+
const streamKey = (0, cache_keys_util_1.PRICE_STREAM_KEY)(marketId);
|
|
122
|
+
// Ensure the consumer group exists once
|
|
123
|
+
try {
|
|
124
|
+
await redis.xgroup("CREATE", streamKey, cache_keys_util_1.LE_CONSUMER_GROUP, "$", "MKSTREAM");
|
|
125
|
+
await (0, exports.updateStreamSetsRoundRobin)(redis, marketId); // will work once
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
if (err instanceof Error && err.message.includes("BUSYGROUP")) {
|
|
129
|
+
// Group already exists
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (prices.length === 0) {
|
|
136
|
+
config_1.logger.info("No prices to add for market:", marketId);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const pipeline = redis.pipeline();
|
|
140
|
+
let isFirst = true;
|
|
141
|
+
for (const price of prices) {
|
|
142
|
+
const oddsData = core_1.OddsSchema.parse(price);
|
|
143
|
+
pipeline.xadd(streamKey, "MAXLEN", "~", cache_keys_util_1.STREAM_MAX_LENGTH, "*", "odds", JSON.stringify(oddsData), ...(isFirst ? ["MKSTREAM"] : []));
|
|
144
|
+
isFirst = false;
|
|
145
|
+
}
|
|
146
|
+
await pipeline.exec();
|
|
147
|
+
config_1.logger.info(`Added ${prices.length} prices to stream ${streamKey}`);
|
|
148
|
+
};
|
|
149
|
+
exports.addPrices = addPrices;
|
|
150
|
+
/**
|
|
151
|
+
* Deletes the price stream associated with a specific market from Redis.
|
|
152
|
+
*
|
|
153
|
+
* This function performs two main operations:
|
|
154
|
+
* 1. Removes the stream reference from the set of active streams for the given market.
|
|
155
|
+
* 2. Deletes the actual Redis key that stores the price stream data for the market.
|
|
156
|
+
*
|
|
157
|
+
* @param redis - An instance of the Redis client used to perform cache operations.
|
|
158
|
+
* @param marketId - The unique identifier (Bytes16) of the market whose price stream should be deleted.
|
|
159
|
+
* @returns A promise that resolves when the stream and its references have been fully removed.
|
|
160
|
+
*
|
|
161
|
+
* @remarks
|
|
162
|
+
* - Use this function when a market is being decommissioned or its price stream is no longer required.
|
|
163
|
+
* - Ensure that no other process is concurrently writing to the same stream to avoid race conditions.
|
|
164
|
+
*/
|
|
165
|
+
const deleteStream = async (redis, marketId) => {
|
|
166
|
+
await (0, exports.removeStreamFromSet)(redis, marketId);
|
|
167
|
+
const streamKey = (0, cache_keys_util_1.PRICE_STREAM_KEY)(marketId);
|
|
168
|
+
await redis.del(streamKey);
|
|
169
|
+
};
|
|
170
|
+
exports.deleteStream = deleteStream;
|
|
171
|
+
/**
|
|
172
|
+
* Retrieves and aggregates all odds data from a Redis stream for a given market.
|
|
173
|
+
*
|
|
174
|
+
* This function iteratively reads batches of messages from the specified Redis stream,
|
|
175
|
+
* deserializes each message into an `Odds` object, and accumulates the results. It continues
|
|
176
|
+
* fetching until the stream is exhausted or an error occurs. The function also tracks the
|
|
177
|
+
* snapshot state, marking it as `"INCOMPLETE"` if any error is encountered during the read process.
|
|
178
|
+
*
|
|
179
|
+
* @param redis - An instance of the Redis client used to interact with the stream.
|
|
180
|
+
* @param marketId - The unique identifier for the market whose price stream is being read.
|
|
181
|
+
* @returns An object containing:
|
|
182
|
+
* - `odds`: An array of all `Odds` objects retrieved from the stream.
|
|
183
|
+
* - `snapshotState`: The final state of the snapshot read operation, either `"COMPLETE"` or `"INCOMPLETE"`.
|
|
184
|
+
*
|
|
185
|
+
* @remarks
|
|
186
|
+
* - The function reads the stream in batches to optimize memory usage and performance.
|
|
187
|
+
* - If the stream contains no messages, an empty array is returned with a `"COMPLETE"` state.
|
|
188
|
+
* - Errors during stream processing are logged and result in an `"INCOMPLETE"` snapshot state.
|
|
189
|
+
* - The function assumes that the second field in each stream entry contains a JSON-encoded `Odds` object.
|
|
190
|
+
*
|
|
191
|
+
* @throws Never throws; errors are caught internally and reflected in the `snapshotState`.
|
|
192
|
+
*/
|
|
193
|
+
const getStreamData = async (redis, marketId) => {
|
|
194
|
+
let start = "-";
|
|
195
|
+
const batchSize = 100;
|
|
196
|
+
const streamKey = (0, cache_keys_util_1.PRICE_STREAM_KEY)(marketId);
|
|
197
|
+
const results = [];
|
|
198
|
+
let snapshotState = "COMPLETE";
|
|
199
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
200
|
+
while (true) {
|
|
201
|
+
try {
|
|
202
|
+
const batch = await redis.xrange(streamKey, start, "+", "COUNT", batchSize);
|
|
203
|
+
if (batch.length === 0)
|
|
204
|
+
break;
|
|
205
|
+
for (const [, fields] of batch) {
|
|
206
|
+
// process message
|
|
207
|
+
const oddsData = JSON.parse(fields[1]);
|
|
208
|
+
results.push(oddsData);
|
|
209
|
+
}
|
|
210
|
+
// update start to last id + 1
|
|
211
|
+
start = batch[batch.length - 1][0];
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
config_1.logger.error("Error reading stream:", error);
|
|
215
|
+
snapshotState = "INCOMPLETE";
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
odds: results,
|
|
221
|
+
snapshotState,
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
exports.getStreamData = getStreamData;
|
|
225
|
+
/**
|
|
226
|
+
* Sets the change-over active marker in Redis.
|
|
227
|
+
*/
|
|
228
|
+
const setChangeOverActive = async (redis, status) => {
|
|
229
|
+
await redis.set(cache_keys_util_1.switchOnPriceMarkerLiquidationKey, status.toString(), "EX", cache_keys_util_1.MAKER_DURATION_EXPIRY);
|
|
230
|
+
};
|
|
231
|
+
exports.setChangeOverActive = setChangeOverActive;
|
|
232
|
+
/**
|
|
233
|
+
* Checks whether the changeover for active liquidation is enabled in Redis.
|
|
234
|
+
*/
|
|
235
|
+
const checkChangeOverActive = async (redis) => {
|
|
236
|
+
const result = await redis.get(cache_keys_util_1.switchOnPriceMarkerLiquidationKey);
|
|
237
|
+
return result === "true";
|
|
238
|
+
};
|
|
239
|
+
exports.checkChangeOverActive = checkChangeOverActive;
|
|
240
|
+
//produce stream
|
|
241
|
+
// read stream and ack
|
|
242
|
+
//# sourceMappingURL=prices.set.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prices.set.manager.js","sourceRoot":"","sources":["../../../../src/server/liquidation-engine/redis.cache.manager/prices.set.manager.ts"],"names":[],"mappings":";;;AACA,wCAAmE;AACnE,yCAAqC;AAErC,uDAU0B;AAC1B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAY,EAAE,QAAiB,EAAiB,EAAE;IAC/F,qCAAqC;IACrC,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,8CAA4B,CAAC,CAAA;IACtD,EAAE,KAAF,EAAE,GAAK,GAAG,EAAA;IAEV,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,2CAAyB,CAAA;IACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,CAAC,IAAA,qCAAmB,EAAC,MAAM,CAAC,EAAE,IAAA,kCAAgB,EAAC,QAAQ,CAAC,CAAC,CAAA;IACtE,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,CAAC,8CAA4B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE7D,yBAAyB;IACzB,iBAAiB;IACjB,mBAAmB;IACnB,QAAQ,CAAC,IAAI,CAAC,kCAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE5D,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACzB,CAAC,CAAA;AAlBY,QAAA,0BAA0B,8BAkBtC;AAED,0EAA0E;AAC1E;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAY,EAAE,QAAiB,EAAiB,EAAE;IACxF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,kCAAgB,EAAE,QAAQ,CAAC,CAAA;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,oBAAoB,CAAC,CAAA;QACnD,OAAM;IACV,CAAC;IAED,uCAAuC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAEjC,QAAQ,CAAC,IAAI,CAAC,IAAA,qCAAmB,EAAC,KAAK,CAAC,EAAE,IAAA,kCAAgB,EAAC,QAAQ,CAAC,CAAC,CAAA;IACrE,QAAQ,CAAC,IAAI,CAAC,kCAAgB,EAAE,QAAQ,CAAC,CAAA;IAEzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrC,IAAI,OAAO,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG,EAAE,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,yBAAyB,QAAQ,aAAa,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBACnF,MAAM,GAAG,CAAA;YACb,CAAC;QACL,CAAC;IACL,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,qBAAqB,KAAK,EAAE,CAAC,CAAA;AAC/D,CAAC,CAAA;AAxBY,QAAA,mBAAmB,uBAwB/B;AAED,+CAA+C;AACxC,MAAM,4BAA4B,GAAG,KAAK,EAAE,KAAY,EAAE,EAAU,EAAqB,EAAE;IAC9F,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAA,qCAAmB,EAAC,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC,CAAA;AAFY,QAAA,4BAA4B,gCAExC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,MAAM,SAAS,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,QAAiB,EAAiB,EAAE;IAC9F,MAAM,SAAS,GAAG,IAAA,kCAAgB,EAAC,QAAQ,CAAC,CAAA;IAE5C,wCAAwC;IACxC,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,mCAAiB,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;QAC3E,MAAM,IAAA,kCAA0B,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA,CAAC,iBAAiB;IACvE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,uBAAuB;QAC3B,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,CAAA;QACb,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,eAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAA;QACrD,OAAM;IACV,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,iBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxC,QAAQ,CAAC,IAAI,CACT,SAAS,EACT,QAAQ,EACR,GAAG,EACH,mCAAiB,EACjB,GAAG,EACH,MAAM,EACN,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACnC,CAAA;QACD,OAAO,GAAG,KAAK,CAAA;IACnB,CAAC;IAED,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrB,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,qBAAqB,SAAS,EAAE,CAAC,CAAA;AACvE,CAAC,CAAA;AAxCY,QAAA,SAAS,aAwCrB;AAED;;;;;;;;;;;;;;GAcG;AACI,MAAM,YAAY,GAAG,KAAK,EAAE,KAAY,EAAE,QAAiB,EAAiB,EAAE;IACjF,MAAM,IAAA,2BAAmB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,IAAA,kCAAgB,EAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAC9B,CAAC,CAAA;AAJY,QAAA,YAAY,gBAIxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,MAAM,aAAa,GAAG,KAAK,EAC9B,KAAY,EACZ,QAAiB,EAIlB,EAAE;IACD,IAAI,KAAK,GAAG,GAAG,CAAA;IACf,MAAM,SAAS,GAAG,GAAG,CAAA;IACrB,MAAM,SAAS,GAAG,IAAA,kCAAgB,EAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAW,EAAE,CAAA;IAC1B,IAAI,aAAa,GAAsB,UAAU,CAAA;IACjD,uEAAuE;IACvE,OAAO,IAAI,EAAE,CAAC;QACV,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAK;YAE7B,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC7B,kBAAkB;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,CAAS,CAAA;gBAC/C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC;YAED,8BAA8B;YAC9B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;YAC5C,aAAa,GAAG,YAAY,CAAA;YAC5B,MAAK;QACT,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,EAAE,OAAO;QACb,aAAa;KAChB,CAAA;AACL,CAAC,CAAA;AArCY,QAAA,aAAa,iBAqCzB;AAED;;GAEG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAY,EAAE,MAAe,EAAiB,EAAE;IACtF,MAAM,KAAK,CAAC,GAAG,CAAC,mDAAiC,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,uCAAqB,CAAC,CAAA;AACtG,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAED;;GAEG;AACI,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAY,EAAoB,EAAE;IAC1E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,mDAAiC,CAAC,CAAA;IACjE,OAAO,MAAM,KAAK,MAAM,CAAA;AAC5B,CAAC,CAAA;AAHY,QAAA,qBAAqB,yBAGjC;AAED,gBAAgB;AAChB,sBAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { Redis } from "ioredis"
|
|
3
|
+
// import { Bytes16, Odds } from "../../oracle"
|
|
4
|
+
// import { addPrices, getFirstRandomUnProcessedPrices, isSetEmpty, removeRandomUnProcessedPrice } from "./prices.set.manager"
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// jest.mock("ioredis")
|
|
7
|
+
// const mockRedis = () => {
|
|
8
|
+
// const data: Record<string, Set<string>> = {}
|
|
9
|
+
// const list: string[] = []
|
|
10
|
+
// return {
|
|
11
|
+
// pipeline: jest.fn(() => {
|
|
12
|
+
// const ops: any[] = []
|
|
13
|
+
// return {
|
|
14
|
+
// sadd: jest.fn((key: string, value: string) => {
|
|
15
|
+
// ops.push(() => {
|
|
16
|
+
// data[key] = new Set()
|
|
17
|
+
// data[key].add(value)
|
|
18
|
+
// return 1
|
|
19
|
+
// })
|
|
20
|
+
// }),
|
|
21
|
+
// lpush: jest.fn((key: string, value: string) => {
|
|
22
|
+
// ops.push(() => {
|
|
23
|
+
// list.unshift(value)
|
|
24
|
+
// return 1
|
|
25
|
+
// })
|
|
26
|
+
// }),
|
|
27
|
+
// srandmember: jest.fn((key: string, count: number) => {
|
|
28
|
+
// ops.push(() => {
|
|
29
|
+
// const arr = Array.from(data[key])
|
|
30
|
+
// return arr.slice(0, count)
|
|
31
|
+
// })
|
|
32
|
+
// }),
|
|
33
|
+
// srem: jest.fn((key: string, value: string) => {
|
|
34
|
+
// ops.push(() => {
|
|
35
|
+
// if (data[key].has(value)) {
|
|
36
|
+
// data[key].delete(value)
|
|
37
|
+
// return 1
|
|
38
|
+
// }
|
|
39
|
+
// return 0
|
|
40
|
+
// })
|
|
41
|
+
// }),
|
|
42
|
+
// lrem: jest.fn((key: string, _count: number, value: string) => {
|
|
43
|
+
// ops.push(() => {
|
|
44
|
+
// let removed = 0
|
|
45
|
+
// for (let i = list.length - 1; i >= 0; i--) {
|
|
46
|
+
// if (list[i] === value) {
|
|
47
|
+
// list.splice(i, 1)
|
|
48
|
+
// removed++
|
|
49
|
+
// }
|
|
50
|
+
// }
|
|
51
|
+
// return removed
|
|
52
|
+
// })
|
|
53
|
+
// }),
|
|
54
|
+
// exec: jest.fn(() => ops.map((fn) => [null, fn()])),
|
|
55
|
+
// }
|
|
56
|
+
// }),
|
|
57
|
+
// lrange: jest.fn(async (key: string, _start: number, _end: number) => {
|
|
58
|
+
// if (key === "liquidation:prices:set:keys") return [...list]
|
|
59
|
+
// return []
|
|
60
|
+
// }),
|
|
61
|
+
// scard: jest.fn(async (key: string) => {
|
|
62
|
+
// return data[key] ? data[key].size : 0
|
|
63
|
+
// }),
|
|
64
|
+
// } as unknown as Redis
|
|
65
|
+
// }
|
|
66
|
+
// describe("prices.set.manager", () => {
|
|
67
|
+
// let redis: Redis
|
|
68
|
+
// const marketId: Bytes16 = "0x1234567890abcdef"
|
|
69
|
+
// const odds: Odds = { id: "odds-1", value: 2.5 }
|
|
70
|
+
// const odds2: Odds = { id: "odds-2", value: 3.1 }
|
|
71
|
+
// beforeEach(() => {
|
|
72
|
+
// redis = mockRedis()
|
|
73
|
+
// })
|
|
74
|
+
// it("addPrices adds prices to the set and updates keys list", async () => {
|
|
75
|
+
// await addPrices(redis, [odds, odds2], marketId)
|
|
76
|
+
// // Check that lrange returns the key
|
|
77
|
+
// const keys = await redis.lrange("liquidation:prices:set:keys", 0, -1)
|
|
78
|
+
// expect(keys).toContain(`liquidation:prices:set:${marketId}`)
|
|
79
|
+
// // Check that scard returns 2
|
|
80
|
+
// const count = await redis.scard(`liquidation:prices:set:${marketId}`)
|
|
81
|
+
// expect(count).toBe(2)
|
|
82
|
+
// })
|
|
83
|
+
// it("getFirstRandomUnProcessedPrices returns a random price", async () => {
|
|
84
|
+
// await addPrices(redis, [odds], marketId)
|
|
85
|
+
// const result = await getFirstRandomUnProcessedPrices(redis, 1)
|
|
86
|
+
// expect(result).toBeTruthy()
|
|
87
|
+
// expect(Array.isArray(result)).toBe(true)
|
|
88
|
+
// expect(result![0]).toMatchObject(odds)
|
|
89
|
+
// })
|
|
90
|
+
// it("getFirstRandomUnProcessedPrices returns null if no prices", async () => {
|
|
91
|
+
// const result = await getFirstRandomUnProcessedPrices(redis, 1)
|
|
92
|
+
// expect(result).toBeNull()
|
|
93
|
+
// })
|
|
94
|
+
// it("removeRandomUnProcessedPrice removes a price from the set and keys list", async () => {
|
|
95
|
+
// await addPrices(redis, [odds], marketId)
|
|
96
|
+
// await removeRandomUnProcessedPrice(redis, marketId, odds)
|
|
97
|
+
// const count = await redis.scard(`liquidation:prices:set:${marketId}`)
|
|
98
|
+
// expect(count).toBe(0)
|
|
99
|
+
// const keys = await redis.lrange("liquidation:prices:set:keys", 0, -1)
|
|
100
|
+
// expect(keys).not.toContain(`liquidation:prices:set:${marketId}`)
|
|
101
|
+
// })
|
|
102
|
+
// it("removeRandomUnProcessedPrice throws if price not found", async () => {
|
|
103
|
+
// await expect(removeRandomUnProcessedPrice(redis, marketId, odds)).rejects.toThrow()
|
|
104
|
+
// })
|
|
105
|
+
// it("isSetEmpty returns true if set is empty", async () => {
|
|
106
|
+
// const empty = await isSetEmpty(redis, marketId)
|
|
107
|
+
// expect(empty).toBe(true)
|
|
108
|
+
// })
|
|
109
|
+
// it("isSetEmpty returns false if set is not empty", async () => {
|
|
110
|
+
// await addPrices(redis, [odds], marketId)
|
|
111
|
+
// const empty = await isSetEmpty(redis, marketId)
|
|
112
|
+
// expect(empty).toBe(false)
|
|
113
|
+
// })
|
|
114
|
+
// })
|
|
115
|
+
//# sourceMappingURL=prices.set.manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prices.set.manager.test.js","sourceRoot":"","sources":["../../../../src/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,+CAA+C;AAC/C,8HAA8H;;AAE9H,uBAAuB;AAEvB,4BAA4B;AAC5B,mDAAmD;AACnD,gCAAgC;AAEhC,eAAe;AACf,oCAAoC;AACpC,oCAAoC;AACpC,uBAAuB;AACvB,kEAAkE;AAClE,uCAAuC;AACvC,gDAAgD;AAChD,+CAA+C;AAC/C,mCAAmC;AACnC,yBAAyB;AACzB,sBAAsB;AACtB,mEAAmE;AACnE,uCAAuC;AACvC,8CAA8C;AAC9C,mCAAmC;AACnC,yBAAyB;AACzB,sBAAsB;AACtB,yEAAyE;AACzE,uCAAuC;AACvC,4DAA4D;AAC5D,qDAAqD;AACrD,yBAAyB;AACzB,sBAAsB;AACtB,kEAAkE;AAClE,uCAAuC;AACvC,sDAAsD;AACtD,sDAAsD;AACtD,uCAAuC;AACvC,4BAA4B;AAC5B,mCAAmC;AACnC,yBAAyB;AACzB,sBAAsB;AACtB,kFAAkF;AAClF,uCAAuC;AACvC,0CAA0C;AAC1C,uEAAuE;AACvE,uDAAuD;AACvD,oDAAoD;AACpD,4CAA4C;AAC5C,gCAAgC;AAChC,4BAA4B;AAC5B,yCAAyC;AACzC,yBAAyB;AACzB,sBAAsB;AACtB,sEAAsE;AACtE,gBAAgB;AAChB,cAAc;AACd,iFAAiF;AACjF,0EAA0E;AAC1E,wBAAwB;AACxB,cAAc;AACd,kDAAkD;AAClD,oDAAoD;AACpD,cAAc;AACd,4BAA4B;AAC5B,IAAI;AAEJ,yCAAyC;AACzC,uBAAuB;AACvB,qDAAqD;AACrD,sDAAsD;AACtD,uDAAuD;AAEvD,yBAAyB;AACzB,8BAA8B;AAC9B,SAAS;AAET,iFAAiF;AACjF,0DAA0D;AAC1D,+CAA+C;AAC/C,gFAAgF;AAChF,uEAAuE;AACvE,wCAAwC;AACxC,gFAAgF;AAChF,gCAAgC;AAChC,SAAS;AAET,iFAAiF;AACjF,mDAAmD;AACnD,yEAAyE;AACzE,sCAAsC;AACtC,mDAAmD;AACnD,iDAAiD;AACjD,SAAS;AAET,oFAAoF;AACpF,yEAAyE;AACzE,oCAAoC;AACpC,SAAS;AAET,kGAAkG;AAClG,mDAAmD;AACnD,oEAAoE;AACpE,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAChF,2EAA2E;AAC3E,SAAS;AAET,iFAAiF;AACjF,8FAA8F;AAC9F,SAAS;AAET,kEAAkE;AAClE,0DAA0D;AAC1D,mCAAmC;AACnC,SAAS;AAET,uEAAuE;AACvE,mDAAmD;AACnD,0DAA0D;AAC1D,oCAAoC;AACpC,SAAS;AACT,KAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SnapShotReadState = "COMPLETE" | "INCOMPLETE";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/liquidation-engine/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleCloudflareAuth = handleCloudflareAuth;
|
|
7
|
+
const core_1 = require("../../../core");
|
|
8
|
+
const services_1 = require("../../services");
|
|
9
|
+
const winston_1 = __importDefault(require("../../config/winston"));
|
|
10
|
+
/**
|
|
11
|
+
* Handles Cloudflare Access authentication
|
|
12
|
+
*/
|
|
13
|
+
async function handleCloudflareAuth(req) {
|
|
14
|
+
const jwt = req.headers["cf-access-jwt-assertion"]?.toString();
|
|
15
|
+
if (!jwt) {
|
|
16
|
+
return {
|
|
17
|
+
success: false,
|
|
18
|
+
error: "Missing CF-Access-JWT-Assertion header",
|
|
19
|
+
statusCode: 401,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
await services_1.cloudflareAuthService.verifyJwt(jwt);
|
|
24
|
+
req.authMethod = core_1.LevrAuth.CLOUDFLARE;
|
|
25
|
+
return { success: true };
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
29
|
+
winston_1.default.error("Cloudflare JWT verification error:", errorMsg);
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: `Invalid Cloudflare JWT: ${errorMsg}`,
|
|
33
|
+
statusCode: 401,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=cloudflare.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/cloudflare.handler.ts"],"names":[],"mappings":";;;;;AASA,oDAwBC;AAhCD,wCAAwC;AACxC,6CAAsD;AAEtD,mEAAyC;AAEzC;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,GAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAA;IAE9D,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,wCAAwC;YAC/C,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;IAED,IAAI,CAAC;QACD,MAAM,gCAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC1C,GAAG,CAAC,UAAU,GAAG,eAAQ,CAAC,UAAU,CAAA;QACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjE,iBAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAA;QAC5D,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B,QAAQ,EAAE;YAC5C,UAAU,EAAE,GAAG;SAClB,CAAA;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
import { MultiAuthOptions } from "../../../core";
|
|
3
|
+
import type { AuthResult } from "../../types/auth.types";
|
|
4
|
+
/**
|
|
5
|
+
* Handles HMAC authentication (user API keys)
|
|
6
|
+
*/
|
|
7
|
+
export declare function handleHmacAuth(req: Request, options: MultiAuthOptions): Promise<AuthResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Handles SERVICE_HMAC authentication (service-to-service API keys)
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleServiceHmacAuth(req: Request, options: MultiAuthOptions): Promise<AuthResult>;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleHmacAuth = handleHmacAuth;
|
|
7
|
+
exports.handleServiceHmacAuth = handleServiceHmacAuth;
|
|
8
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
+
const ms_1 = __importDefault(require("ms"));
|
|
10
|
+
const core_1 = require("../../../core");
|
|
11
|
+
const config_1 = require("../../config");
|
|
12
|
+
const repositories_1 = require("../../repositories");
|
|
13
|
+
const services_1 = require("../../services");
|
|
14
|
+
/**
|
|
15
|
+
* Validates that the API key has all the required scopes
|
|
16
|
+
*/
|
|
17
|
+
function validateScopes(apiKeyScopes, requiredScopes) {
|
|
18
|
+
if (!requiredScopes || requiredScopes.length === 0)
|
|
19
|
+
return true;
|
|
20
|
+
return requiredScopes.every((scope) => apiKeyScopes.includes(scope));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Determines required scopes based on HTTP method and options
|
|
24
|
+
*/
|
|
25
|
+
function getRequiredScopes(method, options) {
|
|
26
|
+
const scopes = options.requiredScopes || [];
|
|
27
|
+
const autoEnforce = options.autoEnforceWriteScope !== false; // default true
|
|
28
|
+
if (autoEnforce && ["POST", "PUT", "PATCH", "DELETE"].includes(method.toUpperCase())) {
|
|
29
|
+
if (!scopes.includes(core_1.ApiKeyScope.Write)) {
|
|
30
|
+
return [...scopes, core_1.ApiKeyScope.Write];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return scopes;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Prevents nonce replay attacks by ensuring each nonce is only used once per API key
|
|
37
|
+
*/
|
|
38
|
+
async function validateNonce(apiKeyId, nonce) {
|
|
39
|
+
const key = `hmac_nonce:${apiKeyId}:${nonce}`;
|
|
40
|
+
try {
|
|
41
|
+
// Set nonce with 2 minute expiry, NX ensures it's only set if it doesn't exist
|
|
42
|
+
const result = await config_1.redisClientManager.primaryClient.set(key, "1", "EX", 120, "NX");
|
|
43
|
+
return result === "OK"; // Returns OK only if key was set (nonce not used before)
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
config_1.logger.error("Nonce validation error:", err);
|
|
47
|
+
// Fail open on Redis errors to avoid blocking legitimate requests
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Shared HMAC authentication logic for both user and service API keys
|
|
53
|
+
*/
|
|
54
|
+
async function handleHmacAuthBase(req, options, isServiceAuth) {
|
|
55
|
+
// Parse Authorization header
|
|
56
|
+
const auth = req.header("Authorization");
|
|
57
|
+
if (!auth)
|
|
58
|
+
return { success: false, error: "Missing Authorization header", statusCode: 401 };
|
|
59
|
+
const m = auth.match(/^HMAC\s+([A-Za-z0-9-]+):(.+)$/);
|
|
60
|
+
if (!m)
|
|
61
|
+
return { success: false, error: "Invalid Authorization header format", statusCode: 401 };
|
|
62
|
+
const [, apiKeyId, sigB64] = m;
|
|
63
|
+
if (!apiKeyId || !sigB64)
|
|
64
|
+
return { success: false, error: "Invalid Authorization header format", statusCode: 401 };
|
|
65
|
+
const apiKey = await repositories_1.apiKeyRepository.getApiKey({ apiKeyId });
|
|
66
|
+
if (!apiKey)
|
|
67
|
+
return { success: false, error: "Unknown API key", statusCode: 401 };
|
|
68
|
+
if (isServiceAuth && !apiKey.service) {
|
|
69
|
+
return { success: false, error: "This endpoint requires a service API key", statusCode: 403 };
|
|
70
|
+
}
|
|
71
|
+
if (!isServiceAuth && apiKey.service) {
|
|
72
|
+
return { success: false, error: "Service API keys cannot be used with HMAC auth", statusCode: 403 };
|
|
73
|
+
}
|
|
74
|
+
// Check expiration
|
|
75
|
+
if (apiKey.expiresAt && apiKey.expiresAt < new Date()) {
|
|
76
|
+
return { success: false, error: "API key has expired", statusCode: 401 };
|
|
77
|
+
}
|
|
78
|
+
// Validate service restriction (SERVICE_HMAC only)
|
|
79
|
+
if (isServiceAuth) {
|
|
80
|
+
// If no allowed services specified, reject all service auth requests
|
|
81
|
+
if (!options.allowedServices || options.allowedServices.length === 0) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
error: "Service authentication requires allowedServices configuration",
|
|
85
|
+
statusCode: 403,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (!apiKey.service || !options.allowedServices.includes(apiKey.service)) {
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
error: `Service not allowed. Allowed: [${options.allowedServices.join(", ")}], Got: ${apiKey.service}`,
|
|
92
|
+
statusCode: 403,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Validate scopes
|
|
97
|
+
const requiredScopes = getRequiredScopes(req.method, options);
|
|
98
|
+
if (!validateScopes(apiKey.scopes, requiredScopes)) {
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
error: `Insufficient scopes. Required: ${requiredScopes.join(", ")}`,
|
|
102
|
+
statusCode: 403,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Verify HMAC signature
|
|
106
|
+
try {
|
|
107
|
+
const secretKey = await services_1.cryptoService.getSecretKey(apiKeyId, apiKey.ciphertext);
|
|
108
|
+
const method = req.method.toUpperCase();
|
|
109
|
+
const path = req.originalUrl.split("?")[0];
|
|
110
|
+
const timestamp = req.header("x-request-timestamp");
|
|
111
|
+
const nonce = req.header("x-request-nonce");
|
|
112
|
+
if (!timestamp) {
|
|
113
|
+
return { success: false, error: "Missing x-request-timestamp header", statusCode: 400 };
|
|
114
|
+
}
|
|
115
|
+
if (!nonce || nonce.length === 0) {
|
|
116
|
+
return { success: false, error: "Missing x-request-nonce header", statusCode: 400 };
|
|
117
|
+
}
|
|
118
|
+
const ts = parseInt(timestamp, 10);
|
|
119
|
+
if (Number.isNaN(ts))
|
|
120
|
+
return { success: false, error: "Invalid timestamp format", statusCode: 400 };
|
|
121
|
+
if (Math.abs(Date.now() - ts) > (0, ms_1.default)("2m")) {
|
|
122
|
+
return { success: false, error: "Request timestamp expired", statusCode: 401 };
|
|
123
|
+
}
|
|
124
|
+
const expectedSig = services_1.cryptoService.signRequest({ method, path, ts, body: req.body, nonce, secretKey });
|
|
125
|
+
const providedSig = sigB64;
|
|
126
|
+
const ok = crypto_1.default.timingSafeEqual(Buffer.from(expectedSig, "base64"), Buffer.from(providedSig, "base64"));
|
|
127
|
+
if (!ok)
|
|
128
|
+
return { success: false, error: "Invalid signature", statusCode: 401 };
|
|
129
|
+
// Prevent nonce replay attacks
|
|
130
|
+
const nonceValid = await validateNonce(apiKeyId, nonce);
|
|
131
|
+
if (!nonceValid)
|
|
132
|
+
return { success: false, error: "Nonce has already been used", statusCode: 401 };
|
|
133
|
+
req.apiUser = { id: apiKey.userId, service: apiKey.service };
|
|
134
|
+
req.ethAddress = apiKey.ethAddress;
|
|
135
|
+
req.authMethod = isServiceAuth ? core_1.LevrAuth.SERVICE_HMAC : core_1.LevrAuth.HMAC;
|
|
136
|
+
req.privyUser = await services_1.privyService.getUserById(apiKey.userId);
|
|
137
|
+
await repositories_1.apiKeyRepository.updateApiKey({ apiKeyId }, { lastUsedAt: new Date(), usageCount: { increment: 1 } });
|
|
138
|
+
return { success: true };
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
config_1.logger.error(`HMAC verification error:`, err);
|
|
142
|
+
return { success: false, error: "Signature verification failed", statusCode: 401 };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Handles HMAC authentication (user API keys)
|
|
147
|
+
*/
|
|
148
|
+
async function handleHmacAuth(req, options) {
|
|
149
|
+
return handleHmacAuthBase(req, options, false);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Handles SERVICE_HMAC authentication (service-to-service API keys)
|
|
153
|
+
*/
|
|
154
|
+
async function handleServiceHmacAuth(req, options) {
|
|
155
|
+
return handleHmacAuthBase(req, options, true);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=hmac.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.handler.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/hmac.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cloudflare.handler"), exports);
|
|
18
|
+
__exportStar(require("./hmac.handler"), exports);
|
|
19
|
+
__exportStar(require("./privy.handler"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/middleware/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,iDAA8B;AAC9B,kDAA+B"}
|