@polyester/sdk 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/LICENSE +7 -0
- package/README.md +55 -0
- package/SECURITY.md +14 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/account-signer/create-polyester-account-signer.d.ts +28 -0
- package/dist/account-signer/create-polyester-account-signer.d.ts.map +1 -0
- package/dist/account-signer/create-polyester-account-signer.js +101 -0
- package/dist/account-signer/create-polyester-account-signer.js.map +1 -0
- package/dist/account-signer/index.d.ts +3 -0
- package/dist/account-signer/index.js +3 -0
- package/dist/account-signer/predict-safe-address.js +230 -0
- package/dist/account-signer/predict-safe-address.js.map +1 -0
- package/dist/account-signer/types.d.ts +40 -0
- package/dist/account-signer/types.d.ts.map +1 -0
- package/dist/account-signer/types.js +29 -0
- package/dist/account-signer/types.js.map +1 -0
- package/dist/browser-client.d.ts +37 -0
- package/dist/browser-client.d.ts.map +1 -0
- package/dist/browser-client.js +69 -0
- package/dist/browser-client.js.map +1 -0
- package/dist/catalogs/client-catalog.d.ts +6 -0
- package/dist/catalogs/client-catalog.d.ts.map +1 -0
- package/dist/catalogs/client-catalog.js +88 -0
- package/dist/catalogs/client-catalog.js.map +1 -0
- package/dist/catalogs/decimal.js +92 -0
- package/dist/catalogs/decimal.js.map +1 -0
- package/dist/catalogs/index.d.ts +10 -0
- package/dist/catalogs/index.js +8 -0
- package/dist/catalogs/indexes.js +36 -0
- package/dist/catalogs/indexes.js.map +1 -0
- package/dist/catalogs/market-data-catalog.d.ts +37 -0
- package/dist/catalogs/market-data-catalog.d.ts.map +1 -0
- package/dist/catalogs/market-data-catalog.js +49 -0
- package/dist/catalogs/market-data-catalog.js.map +1 -0
- package/dist/catalogs/readers.d.ts +6 -0
- package/dist/catalogs/readers.d.ts.map +1 -0
- package/dist/catalogs/readers.js +545 -0
- package/dist/catalogs/readers.js.map +1 -0
- package/dist/catalogs/snapshot.d.ts +18 -0
- package/dist/catalogs/snapshot.d.ts.map +1 -0
- package/dist/catalogs/snapshot.js +16 -0
- package/dist/catalogs/snapshot.js.map +1 -0
- package/dist/catalogs/types.d.ts +268 -0
- package/dist/catalogs/types.d.ts.map +1 -0
- package/dist/catalogs/types.js +48 -0
- package/dist/catalogs/types.js.map +1 -0
- package/dist/catalogs/unknown-asset.d.ts +27 -0
- package/dist/catalogs/unknown-asset.d.ts.map +1 -0
- package/dist/catalogs/unknown-asset.js +38 -0
- package/dist/catalogs/unknown-asset.js.map +1 -0
- package/dist/catalogs/zipper-catalog.d.ts +33 -0
- package/dist/catalogs/zipper-catalog.d.ts.map +1 -0
- package/dist/catalogs/zipper-catalog.js +54 -0
- package/dist/catalogs/zipper-catalog.js.map +1 -0
- package/dist/catalogs/zipper-supply.d.ts +10 -0
- package/dist/catalogs/zipper-supply.d.ts.map +1 -0
- package/dist/catalogs/zipper-supply.js +40 -0
- package/dist/catalogs/zipper-supply.js.map +1 -0
- package/dist/core-client.d.ts +155 -0
- package/dist/core-client.d.ts.map +1 -0
- package/dist/core-client.js +266 -0
- package/dist/core-client.js.map +1 -0
- package/dist/environment.d.ts +57 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +153 -0
- package/dist/environment.js.map +1 -0
- package/dist/gen/auth/v1/address_book_pb.d.ts +2012 -0
- package/dist/gen/auth/v1/address_book_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/address_book_pb.js +505 -0
- package/dist/gen/auth/v1/address_book_pb.js.map +1 -0
- package/dist/gen/auth/v1/api_keys_pb.d.ts +496 -0
- package/dist/gen/auth/v1/api_keys_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/api_keys_pb.js +137 -0
- package/dist/gen/auth/v1/api_keys_pb.js.map +1 -0
- package/dist/gen/auth/v1/auth_pb.d.ts +523 -0
- package/dist/gen/auth/v1/auth_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/auth_pb.js +313 -0
- package/dist/gen/auth/v1/auth_pb.js.map +1 -0
- package/dist/gen/auth/v1/mfa_pb.d.ts +1020 -0
- package/dist/gen/auth/v1/mfa_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/mfa_pb.js +315 -0
- package/dist/gen/auth/v1/mfa_pb.js.map +1 -0
- package/dist/gen/auth/v1/policies_pb.d.ts +1410 -0
- package/dist/gen/auth/v1/policies_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/policies_pb.js +341 -0
- package/dist/gen/auth/v1/policies_pb.js.map +1 -0
- package/dist/gen/auth/v1/profile_pb.d.ts +370 -0
- package/dist/gen/auth/v1/profile_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/profile_pb.js +114 -0
- package/dist/gen/auth/v1/profile_pb.js.map +1 -0
- package/dist/gen/auth/v1/resolve_pb.d.ts +174 -0
- package/dist/gen/auth/v1/resolve_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/resolve_pb.js +80 -0
- package/dist/gen/auth/v1/resolve_pb.js.map +1 -0
- package/dist/gen/auth/v1/social_verification_pb.d.ts +408 -0
- package/dist/gen/auth/v1/social_verification_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/social_verification_pb.js +196 -0
- package/dist/gen/auth/v1/social_verification_pb.js.map +1 -0
- package/dist/gen/auth/v1/subaccounts_pb.d.ts +1490 -0
- package/dist/gen/auth/v1/subaccounts_pb.d.ts.map +1 -0
- package/dist/gen/auth/v1/subaccounts_pb.js +574 -0
- package/dist/gen/auth/v1/subaccounts_pb.js.map +1 -0
- package/dist/gen/chain/analytics/v1/analytics_read_pb.d.ts +426 -0
- package/dist/gen/chain/analytics/v1/analytics_read_pb.d.ts.map +1 -0
- package/dist/gen/chain/analytics/v1/analytics_read_pb.js +119 -0
- package/dist/gen/chain/analytics/v1/analytics_read_pb.js.map +1 -0
- package/dist/gen/chain/deposit/v1/deposit_pb.d.ts +158 -0
- package/dist/gen/chain/deposit/v1/deposit_pb.d.ts.map +1 -0
- package/dist/gen/chain/deposit/v1/deposit_pb.js +52 -0
- package/dist/gen/chain/deposit/v1/deposit_pb.js.map +1 -0
- package/dist/gen/chain/guard/v1/guard_signer_pb.d.ts +588 -0
- package/dist/gen/chain/guard/v1/guard_signer_pb.d.ts.map +1 -0
- package/dist/gen/chain/guard/v1/guard_signer_pb.js +195 -0
- package/dist/gen/chain/guard/v1/guard_signer_pb.js.map +1 -0
- package/dist/gen/chain/lifecycle/v1/lifecycle_read_pb.d.ts +1297 -0
- package/dist/gen/chain/lifecycle/v1/lifecycle_read_pb.d.ts.map +1 -0
- package/dist/gen/chain/lifecycle/v1/lifecycle_read_pb.js +408 -0
- package/dist/gen/chain/lifecycle/v1/lifecycle_read_pb.js.map +1 -0
- package/dist/gen/chain/lifecycle/v1/types_pb.d.ts +359 -0
- package/dist/gen/chain/lifecycle/v1/types_pb.d.ts.map +1 -0
- package/dist/gen/chain/lifecycle/v1/types_pb.js +322 -0
- package/dist/gen/chain/lifecycle/v1/types_pb.js.map +1 -0
- package/dist/gen/chain/withdraw/v1/withdraw_pb.d.ts +236 -0
- package/dist/gen/chain/withdraw/v1/withdraw_pb.d.ts.map +1 -0
- package/dist/gen/chain/withdraw/v1/withdraw_pb.js +79 -0
- package/dist/gen/chain/withdraw/v1/withdraw_pb.js.map +1 -0
- package/dist/gen/chain/zipper/v1/reason_pb.d.ts +349 -0
- package/dist/gen/chain/zipper/v1/reason_pb.d.ts.map +1 -0
- package/dist/gen/chain/zipper/v1/reason_pb.js +330 -0
- package/dist/gen/chain/zipper/v1/reason_pb.js.map +1 -0
- package/dist/gen/chain/zipper/v1/zipper_pb.d.ts +396 -0
- package/dist/gen/chain/zipper/v1/zipper_pb.d.ts.map +1 -0
- package/dist/gen/chain/zipper/v1/zipper_pb.js +70 -0
- package/dist/gen/chain/zipper/v1/zipper_pb.js.map +1 -0
- package/dist/gen/collab/v1/whiteboard_pb.d.ts +829 -0
- package/dist/gen/collab/v1/whiteboard_pb.d.ts.map +1 -0
- package/dist/gen/collab/v1/whiteboard_pb.js +250 -0
- package/dist/gen/collab/v1/whiteboard_pb.js.map +1 -0
- package/dist/gen/index.d.ts +35 -0
- package/dist/gen/index.js +35 -0
- package/dist/gen/layout/v1/layout_pb.d.ts +1289 -0
- package/dist/gen/layout/v1/layout_pb.d.ts.map +1 -0
- package/dist/gen/layout/v1/layout_pb.js +313 -0
- package/dist/gen/layout/v1/layout_pb.js.map +1 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts +1000 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts.map +1 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.js +347 -0
- package/dist/gen/ledger/read/v1/ledger_read_pb.js.map +1 -0
- package/dist/gen/ledger/v1/catalog_pb.d.ts +129 -0
- package/dist/gen/ledger/v1/catalog_pb.d.ts.map +1 -0
- package/dist/gen/ledger/v1/catalog_pb.js +138 -0
- package/dist/gen/ledger/v1/catalog_pb.js.map +1 -0
- package/dist/gen/marketdata/v1/heatmap_pb.d.ts +571 -0
- package/dist/gen/marketdata/v1/heatmap_pb.d.ts.map +1 -0
- package/dist/gen/marketdata/v1/heatmap_pb.js +194 -0
- package/dist/gen/marketdata/v1/heatmap_pb.js.map +1 -0
- package/dist/gen/marketdata/v1/marketdata_pb.d.ts +1015 -0
- package/dist/gen/marketdata/v1/marketdata_pb.d.ts.map +1 -0
- package/dist/gen/marketdata/v1/marketdata_pb.js +274 -0
- package/dist/gen/marketdata/v1/marketdata_pb.js.map +1 -0
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +419 -0
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -0
- package/dist/gen/marketoverview/v1/marketoverview_pb.js +212 -0
- package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -0
- package/dist/gen/orderbook/v1/orderbook_pb.d.ts +260 -0
- package/dist/gen/orderbook/v1/orderbook_pb.d.ts.map +1 -0
- package/dist/gen/orderbook/v1/orderbook_pb.js +119 -0
- package/dist/gen/orderbook/v1/orderbook_pb.js.map +1 -0
- package/dist/gen/orders/v1/orders_pb.d.ts +2497 -0
- package/dist/gen/orders/v1/orders_pb.d.ts.map +1 -0
- package/dist/gen/orders/v1/orders_pb.js +1043 -0
- package/dist/gen/orders/v1/orders_pb.js.map +1 -0
- package/dist/gen/orders/v1/orders_read_pb.d.ts +1322 -0
- package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -0
- package/dist/gen/orders/v1/orders_read_pb.js +408 -0
- package/dist/gen/orders/v1/orders_read_pb.js.map +1 -0
- package/dist/gen/polychart/events/v1/polychart_events_pb.d.ts +192 -0
- package/dist/gen/polychart/events/v1/polychart_events_pb.d.ts.map +1 -0
- package/dist/gen/polychart/events/v1/polychart_events_pb.js +57 -0
- package/dist/gen/polychart/events/v1/polychart_events_pb.js.map +1 -0
- package/dist/gen/polychart/v1/polychart_pb.d.ts +1208 -0
- package/dist/gen/polychart/v1/polychart_pb.d.ts.map +1 -0
- package/dist/gen/polychart/v1/polychart_pb.js +244 -0
- package/dist/gen/polychart/v1/polychart_pb.js.map +1 -0
- package/dist/gen/polyester/api/options_pb.d.ts +67 -0
- package/dist/gen/polyester/api/options_pb.d.ts.map +1 -0
- package/dist/gen/polyester/api/options_pb.js +76 -0
- package/dist/gen/polyester/api/options_pb.js.map +1 -0
- package/dist/gen/polyester/type/v1/u128_pb.d.ts +42 -0
- package/dist/gen/polyester/type/v1/u128_pb.d.ts.map +1 -0
- package/dist/gen/polyester/type/v1/u128_pb.js +20 -0
- package/dist/gen/polyester/type/v1/u128_pb.js.map +1 -0
- package/dist/gen/tradews/v1/trade_ws_pb.d.ts +316 -0
- package/dist/gen/tradews/v1/trade_ws_pb.d.ts.map +1 -0
- package/dist/gen/tradews/v1/trade_ws_pb.js +63 -0
- package/dist/gen/tradews/v1/trade_ws_pb.js.map +1 -0
- package/dist/gen/transfer/v1/internal_transfer_pb.d.ts +235 -0
- package/dist/gen/transfer/v1/internal_transfer_pb.d.ts.map +1 -0
- package/dist/gen/transfer/v1/internal_transfer_pb.js +81 -0
- package/dist/gen/transfer/v1/internal_transfer_pb.js.map +1 -0
- package/dist/gen/triggers/v1/triggers_pb.d.ts +1731 -0
- package/dist/gen/triggers/v1/triggers_pb.d.ts.map +1 -0
- package/dist/gen/triggers/v1/triggers_pb.js +413 -0
- package/dist/gen/triggers/v1/triggers_pb.js.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.js +18 -0
- package/dist/realtime/client.d.ts +18 -0
- package/dist/realtime/client.d.ts.map +1 -0
- package/dist/realtime/client.js +420 -0
- package/dist/realtime/client.js.map +1 -0
- package/dist/realtime/index.d.ts +3 -0
- package/dist/realtime/snapshot-then-stream.js +144 -0
- package/dist/realtime/snapshot-then-stream.js.map +1 -0
- package/dist/realtime/types.d.ts +41 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/server-client.d.ts +73 -0
- package/dist/server-client.d.ts.map +1 -0
- package/dist/server-client.js +126 -0
- package/dist/server-client.js.map +1 -0
- package/dist/server-session.d.ts +4 -0
- package/dist/server-session.js +3 -0
- package/dist/services/accounts/accounts.codecs.js +17 -0
- package/dist/services/accounts/accounts.codecs.js.map +1 -0
- package/dist/services/accounts/accounts.d.ts +18 -0
- package/dist/services/accounts/accounts.d.ts.map +1 -0
- package/dist/services/accounts/accounts.js +27 -0
- package/dist/services/accounts/accounts.js.map +1 -0
- package/dist/services/accounts/accounts.schemas.d.ts +20 -0
- package/dist/services/accounts/accounts.schemas.d.ts.map +1 -0
- package/dist/services/accounts/accounts.schemas.js +28 -0
- package/dist/services/accounts/accounts.schemas.js.map +1 -0
- package/dist/services/accounts/accounts.types.d.ts +2 -0
- package/dist/services/accounts/index.d.ts +3 -0
- package/dist/services/address-book/address-book.codecs.d.ts +1 -0
- package/dist/services/address-book/address-book.codecs.js +61 -0
- package/dist/services/address-book/address-book.codecs.js.map +1 -0
- package/dist/services/address-book/address-book.d.ts +95 -0
- package/dist/services/address-book/address-book.d.ts.map +1 -0
- package/dist/services/address-book/address-book.js +166 -0
- package/dist/services/address-book/address-book.js.map +1 -0
- package/dist/services/address-book/address-book.schemas.d.ts +1140 -0
- package/dist/services/address-book/address-book.schemas.d.ts.map +1 -0
- package/dist/services/address-book/address-book.schemas.js +343 -0
- package/dist/services/address-book/address-book.schemas.js.map +1 -0
- package/dist/services/address-book/address-book.types.d.ts +2 -0
- package/dist/services/address-book/index.d.ts +4 -0
- package/dist/services/api-keys/api-keys.codecs.js +24 -0
- package/dist/services/api-keys/api-keys.codecs.js.map +1 -0
- package/dist/services/api-keys/api-keys.d.ts +62 -0
- package/dist/services/api-keys/api-keys.d.ts.map +1 -0
- package/dist/services/api-keys/api-keys.js +104 -0
- package/dist/services/api-keys/api-keys.js.map +1 -0
- package/dist/services/api-keys/api-keys.schemas.d.ts +181 -0
- package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -0
- package/dist/services/api-keys/api-keys.schemas.js +111 -0
- package/dist/services/api-keys/api-keys.schemas.js.map +1 -0
- package/dist/services/api-keys/api-keys.types.d.ts +2 -0
- package/dist/services/api-keys/index.d.ts +3 -0
- package/dist/services/auth/account-signer-auth.d.ts +131 -0
- package/dist/services/auth/account-signer-auth.d.ts.map +1 -0
- package/dist/services/auth/account-signer-auth.js +337 -0
- package/dist/services/auth/account-signer-auth.js.map +1 -0
- package/dist/services/auth/auth.d.ts +91 -0
- package/dist/services/auth/auth.d.ts.map +1 -0
- package/dist/services/auth/auth.js +71 -0
- package/dist/services/auth/auth.js.map +1 -0
- package/dist/services/auth/auth.types.d.ts +3 -0
- package/dist/services/auth/cookie-constants.d.ts +6 -0
- package/dist/services/auth/cookie-constants.d.ts.map +1 -0
- package/dist/services/auth/cookie-constants.js +8 -0
- package/dist/services/auth/cookie-constants.js.map +1 -0
- package/dist/services/auth/profile/profile.d.ts +35 -0
- package/dist/services/auth/profile/profile.d.ts.map +1 -0
- package/dist/services/auth/profile/profile.js +61 -0
- package/dist/services/auth/profile/profile.js.map +1 -0
- package/dist/services/auth/profile/profile.schemas.d.ts +58 -0
- package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -0
- package/dist/services/auth/profile/profile.schemas.js +39 -0
- package/dist/services/auth/profile/profile.schemas.js.map +1 -0
- package/dist/services/auth/profile/profile.types.d.ts +2 -0
- package/dist/services/auth/session-codec.js +22 -0
- package/dist/services/auth/session-codec.js.map +1 -0
- package/dist/services/auth/session.d.ts +51 -0
- package/dist/services/auth/session.d.ts.map +1 -0
- package/dist/services/auth/session.js +200 -0
- package/dist/services/auth/session.js.map +1 -0
- package/dist/services/auth/session.schemas.js +41 -0
- package/dist/services/auth/session.schemas.js.map +1 -0
- package/dist/services/auth/session.types.d.ts +70 -0
- package/dist/services/auth/session.types.d.ts.map +1 -0
- package/dist/services/auth/token-storage.d.ts +27 -0
- package/dist/services/auth/token-storage.d.ts.map +1 -0
- package/dist/services/auth/token-storage.js +61 -0
- package/dist/services/auth/token-storage.js.map +1 -0
- package/dist/services/balances/balances.codecs.js +29 -0
- package/dist/services/balances/balances.codecs.js.map +1 -0
- package/dist/services/balances/balances.d.ts +39 -0
- package/dist/services/balances/balances.d.ts.map +1 -0
- package/dist/services/balances/balances.js +85 -0
- package/dist/services/balances/balances.js.map +1 -0
- package/dist/services/balances/balances.merge.d.ts +9 -0
- package/dist/services/balances/balances.merge.d.ts.map +1 -0
- package/dist/services/balances/balances.merge.js +31 -0
- package/dist/services/balances/balances.merge.js.map +1 -0
- package/dist/services/balances/balances.schemas.d.ts +265 -0
- package/dist/services/balances/balances.schemas.d.ts.map +1 -0
- package/dist/services/balances/balances.schemas.js +167 -0
- package/dist/services/balances/balances.schemas.js.map +1 -0
- package/dist/services/balances/balances.types.d.ts +2 -0
- package/dist/services/balances/index.d.ts +4 -0
- package/dist/services/candles/candles.codecs.js +48 -0
- package/dist/services/candles/candles.codecs.js.map +1 -0
- package/dist/services/candles/candles.d.ts +45 -0
- package/dist/services/candles/candles.d.ts.map +1 -0
- package/dist/services/candles/candles.js +108 -0
- package/dist/services/candles/candles.js.map +1 -0
- package/dist/services/candles/candles.schemas.d.ts +182 -0
- package/dist/services/candles/candles.schemas.d.ts.map +1 -0
- package/dist/services/candles/candles.schemas.js +154 -0
- package/dist/services/candles/candles.schemas.js.map +1 -0
- package/dist/services/candles/candles.types.d.ts +2 -0
- package/dist/services/candles/index.d.ts +3 -0
- package/dist/services/chain-analytics/chain-analytics.codecs.d.ts +1 -0
- package/dist/services/chain-analytics/chain-analytics.codecs.js +33 -0
- package/dist/services/chain-analytics/chain-analytics.codecs.js.map +1 -0
- package/dist/services/chain-analytics/chain-analytics.d.ts +27 -0
- package/dist/services/chain-analytics/chain-analytics.d.ts.map +1 -0
- package/dist/services/chain-analytics/chain-analytics.js +48 -0
- package/dist/services/chain-analytics/chain-analytics.js.map +1 -0
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +192 -0
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -0
- package/dist/services/chain-analytics/chain-analytics.schemas.js +100 -0
- package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -0
- package/dist/services/chain-analytics/chain-analytics.types.d.ts +2 -0
- package/dist/services/chain-analytics/index.d.ts +4 -0
- package/dist/services/deposit/deposit.d.ts +23 -0
- package/dist/services/deposit/deposit.d.ts.map +1 -0
- package/dist/services/deposit/deposit.js +42 -0
- package/dist/services/deposit/deposit.js.map +1 -0
- package/dist/services/deposit/deposit.schemas.d.ts +40 -0
- package/dist/services/deposit/deposit.schemas.d.ts.map +1 -0
- package/dist/services/deposit/deposit.schemas.js +27 -0
- package/dist/services/deposit/deposit.schemas.js.map +1 -0
- package/dist/services/deposit/deposit.types.d.ts +2 -0
- package/dist/services/deposit/index.d.ts +3 -0
- package/dist/services/guard-signer/guard-signer.codecs.d.ts +1 -0
- package/dist/services/guard-signer/guard-signer.codecs.js +33 -0
- package/dist/services/guard-signer/guard-signer.codecs.js.map +1 -0
- package/dist/services/guard-signer/guard-signer.d.ts +40 -0
- package/dist/services/guard-signer/guard-signer.d.ts.map +1 -0
- package/dist/services/guard-signer/guard-signer.js +85 -0
- package/dist/services/guard-signer/guard-signer.js.map +1 -0
- package/dist/services/guard-signer/guard-signer.schemas.d.ts +269 -0
- package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -0
- package/dist/services/guard-signer/guard-signer.schemas.js +93 -0
- package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -0
- package/dist/services/guard-signer/guard-signer.types.d.ts +2 -0
- package/dist/services/guard-signer/index.d.ts +4 -0
- package/dist/services/heatmap/heatmap.codecs.d.ts +11 -0
- package/dist/services/heatmap/heatmap.codecs.d.ts.map +1 -0
- package/dist/services/heatmap/heatmap.codecs.js +76 -0
- package/dist/services/heatmap/heatmap.codecs.js.map +1 -0
- package/dist/services/heatmap/heatmap.d.ts +33 -0
- package/dist/services/heatmap/heatmap.d.ts.map +1 -0
- package/dist/services/heatmap/heatmap.js +79 -0
- package/dist/services/heatmap/heatmap.js.map +1 -0
- package/dist/services/heatmap/heatmap.schemas.d.ts +412 -0
- package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -0
- package/dist/services/heatmap/heatmap.schemas.js +174 -0
- package/dist/services/heatmap/heatmap.schemas.js.map +1 -0
- package/dist/services/heatmap/heatmap.types.d.ts +3 -0
- package/dist/services/heatmap/index.d.ts +4 -0
- package/dist/services/internal-transfers/index.d.ts +3 -0
- package/dist/services/internal-transfers/internal-transfers.codecs.js +10 -0
- package/dist/services/internal-transfers/internal-transfers.codecs.js.map +1 -0
- package/dist/services/internal-transfers/internal-transfers.d.ts +20 -0
- package/dist/services/internal-transfers/internal-transfers.d.ts.map +1 -0
- package/dist/services/internal-transfers/internal-transfers.js +39 -0
- package/dist/services/internal-transfers/internal-transfers.js.map +1 -0
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +174 -0
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -0
- package/dist/services/internal-transfers/internal-transfers.schemas.js +90 -0
- package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -0
- package/dist/services/internal-transfers/internal-transfers.types.d.ts +2 -0
- package/dist/services/lifecycle/index.d.ts +4 -0
- package/dist/services/lifecycle/lifecycle.codecs.d.ts +23 -0
- package/dist/services/lifecycle/lifecycle.codecs.d.ts.map +1 -0
- package/dist/services/lifecycle/lifecycle.codecs.js +171 -0
- package/dist/services/lifecycle/lifecycle.codecs.js.map +1 -0
- package/dist/services/lifecycle/lifecycle.d.ts +42 -0
- package/dist/services/lifecycle/lifecycle.d.ts.map +1 -0
- package/dist/services/lifecycle/lifecycle.js +87 -0
- package/dist/services/lifecycle/lifecycle.js.map +1 -0
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +2107 -0
- package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -0
- package/dist/services/lifecycle/lifecycle.schemas.js +282 -0
- package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -0
- package/dist/services/lifecycle/lifecycle.types.d.ts +2 -0
- package/dist/services/market-data/index.d.ts +4 -0
- package/dist/services/market-data/market-data.codecs.js +18 -0
- package/dist/services/market-data/market-data.codecs.js.map +1 -0
- package/dist/services/market-data/market-data.d.ts +40 -0
- package/dist/services/market-data/market-data.d.ts.map +1 -0
- package/dist/services/market-data/market-data.js +75 -0
- package/dist/services/market-data/market-data.js.map +1 -0
- package/dist/services/market-data/market-data.schemas.d.ts +56 -0
- package/dist/services/market-data/market-data.schemas.d.ts.map +1 -0
- package/dist/services/market-data/market-data.schemas.js +178 -0
- package/dist/services/market-data/market-data.schemas.js.map +1 -0
- package/dist/services/market-data/market-data.types.d.ts +3 -0
- package/dist/services/market-overview/index.d.ts +4 -0
- package/dist/services/market-overview/market-overview.codecs.d.ts +1 -0
- package/dist/services/market-overview/market-overview.codecs.js +44 -0
- package/dist/services/market-overview/market-overview.codecs.js.map +1 -0
- package/dist/services/market-overview/market-overview.d.ts +32 -0
- package/dist/services/market-overview/market-overview.d.ts.map +1 -0
- package/dist/services/market-overview/market-overview.js +100 -0
- package/dist/services/market-overview/market-overview.js.map +1 -0
- package/dist/services/market-overview/market-overview.schemas.d.ts +85 -0
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -0
- package/dist/services/market-overview/market-overview.schemas.js +71 -0
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -0
- package/dist/services/market-overview/market-overview.types.d.ts +2 -0
- package/dist/services/mfa/index.d.ts +4 -0
- package/dist/services/mfa/mfa.codecs.d.ts +1 -0
- package/dist/services/mfa/mfa.codecs.js +44 -0
- package/dist/services/mfa/mfa.codecs.js.map +1 -0
- package/dist/services/mfa/mfa.d.ts +74 -0
- package/dist/services/mfa/mfa.d.ts.map +1 -0
- package/dist/services/mfa/mfa.js +139 -0
- package/dist/services/mfa/mfa.js.map +1 -0
- package/dist/services/mfa/mfa.schemas.d.ts +392 -0
- package/dist/services/mfa/mfa.schemas.d.ts.map +1 -0
- package/dist/services/mfa/mfa.schemas.js +132 -0
- package/dist/services/mfa/mfa.schemas.js.map +1 -0
- package/dist/services/mfa/mfa.types.d.ts +2 -0
- package/dist/services/orderbook/index.d.ts +3 -0
- package/dist/services/orderbook/orderbook.codecs.js +45 -0
- package/dist/services/orderbook/orderbook.codecs.js.map +1 -0
- package/dist/services/orderbook/orderbook.d.ts +42 -0
- package/dist/services/orderbook/orderbook.d.ts.map +1 -0
- package/dist/services/orderbook/orderbook.js +193 -0
- package/dist/services/orderbook/orderbook.js.map +1 -0
- package/dist/services/orderbook/orderbook.schemas.d.ts +68 -0
- package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -0
- package/dist/services/orderbook/orderbook.schemas.js +43 -0
- package/dist/services/orderbook/orderbook.schemas.js.map +1 -0
- package/dist/services/orderbook/orderbook.types.d.ts +3 -0
- package/dist/services/orders/index.d.ts +9 -0
- package/dist/services/orders/order-enums.codecs.js +85 -0
- package/dist/services/orders/order-enums.codecs.js.map +1 -0
- package/dist/services/orders/order-errors.schemas.d.ts +7 -0
- package/dist/services/orders/order-errors.schemas.d.ts.map +1 -0
- package/dist/services/orders/order-errors.schemas.js +20 -0
- package/dist/services/orders/order-errors.schemas.js.map +1 -0
- package/dist/services/orders/orders-batch.schemas.d.ts +2979 -0
- package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -0
- package/dist/services/orders/orders-batch.schemas.js +282 -0
- package/dist/services/orders/orders-batch.schemas.js.map +1 -0
- package/dist/services/orders/orders-identifiers.schemas.js +11 -0
- package/dist/services/orders/orders-identifiers.schemas.js.map +1 -0
- package/dist/services/orders/orders-input.schemas.d.ts +3738 -0
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -0
- package/dist/services/orders/orders-input.schemas.js +267 -0
- package/dist/services/orders/orders-input.schemas.js.map +1 -0
- package/dist/services/orders/orders-modify.schemas.d.ts +1774 -0
- package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -0
- package/dist/services/orders/orders-modify.schemas.js +132 -0
- package/dist/services/orders/orders-modify.schemas.js.map +1 -0
- package/dist/services/orders/orders-output.schemas.d.ts +598 -0
- package/dist/services/orders/orders-output.schemas.d.ts.map +1 -0
- package/dist/services/orders/orders-output.schemas.js +139 -0
- package/dist/services/orders/orders-output.schemas.js.map +1 -0
- package/dist/services/orders/orders-risk.schemas.d.ts +1041 -0
- package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -0
- package/dist/services/orders/orders-risk.schemas.js +251 -0
- package/dist/services/orders/orders-risk.schemas.js.map +1 -0
- package/dist/services/orders/orders.codecs.js +75 -0
- package/dist/services/orders/orders.codecs.js.map +1 -0
- package/dist/services/orders/orders.d.ts +88 -0
- package/dist/services/orders/orders.d.ts.map +1 -0
- package/dist/services/orders/orders.js +242 -0
- package/dist/services/orders/orders.js.map +1 -0
- package/dist/services/orders/orders.schemas.d.ts +7 -0
- package/dist/services/orders/orders.types.d.ts +8 -0
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts +39 -0
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -0
- package/dist/services/policies/api-key-policies/api-key-policies.js +74 -0
- package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -0
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +392 -0
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -0
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +169 -0
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -0
- package/dist/services/policies/api-key-policies/api-key-policies.types.d.ts +2 -0
- package/dist/services/policies/api-key-policies/index.d.ts +3 -0
- package/dist/services/policies/policies.types.d.ts +2 -0
- package/dist/services/policies/shared.codecs.js +61 -0
- package/dist/services/policies/shared.codecs.js.map +1 -0
- package/dist/services/policies/shared.d.ts +10 -0
- package/dist/services/policies/shared.d.ts.map +1 -0
- package/dist/services/policies/shared.js +33 -0
- package/dist/services/policies/shared.js.map +1 -0
- package/dist/services/policies/subaccount-policies/index.d.ts +3 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +50 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.js +93 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +429 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +300 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -0
- package/dist/services/policies/subaccount-policies/subaccount-policies.types.d.ts +2 -0
- package/dist/services/shared.js +24 -0
- package/dist/services/shared.js.map +1 -0
- package/dist/services/social-verification/index.d.ts +3 -0
- package/dist/services/social-verification/social-verification.codecs.d.ts +1 -0
- package/dist/services/social-verification/social-verification.codecs.js +55 -0
- package/dist/services/social-verification/social-verification.codecs.js.map +1 -0
- package/dist/services/social-verification/social-verification.d.ts +27 -0
- package/dist/services/social-verification/social-verification.d.ts.map +1 -0
- package/dist/services/social-verification/social-verification.js +43 -0
- package/dist/services/social-verification/social-verification.js.map +1 -0
- package/dist/services/social-verification/social-verification.schemas.d.ts +96 -0
- package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -0
- package/dist/services/social-verification/social-verification.schemas.js +69 -0
- package/dist/services/social-verification/social-verification.schemas.js.map +1 -0
- package/dist/services/social-verification/social-verification.types.d.ts +2 -0
- package/dist/services/subaccount-resolver.d.ts +14 -0
- package/dist/services/subaccount-resolver.d.ts.map +1 -0
- package/dist/services/subaccount-resolver.js +33 -0
- package/dist/services/subaccount-resolver.js.map +1 -0
- package/dist/services/subaccounts/index.d.ts +3 -0
- package/dist/services/subaccounts/subaccounts.codecs.js +94 -0
- package/dist/services/subaccounts/subaccounts.codecs.js.map +1 -0
- package/dist/services/subaccounts/subaccounts.d.ts +102 -0
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -0
- package/dist/services/subaccounts/subaccounts.js +196 -0
- package/dist/services/subaccounts/subaccounts.js.map +1 -0
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +257 -0
- package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -0
- package/dist/services/subaccounts/subaccounts.schemas.js +178 -0
- package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -0
- package/dist/services/subaccounts/subaccounts.types.d.ts +2 -0
- package/dist/services/trades/index.d.ts +3 -0
- package/dist/services/trades/trades.codecs.js +10 -0
- package/dist/services/trades/trades.codecs.js.map +1 -0
- package/dist/services/trades/trades.d.ts +33 -0
- package/dist/services/trades/trades.d.ts.map +1 -0
- package/dist/services/trades/trades.js +64 -0
- package/dist/services/trades/trades.js.map +1 -0
- package/dist/services/trades/trades.schemas.d.ts +80 -0
- package/dist/services/trades/trades.schemas.d.ts.map +1 -0
- package/dist/services/trades/trades.schemas.js +66 -0
- package/dist/services/trades/trades.schemas.js.map +1 -0
- package/dist/services/trades/trades.types.d.ts +2 -0
- package/dist/services/trading-withdraws/index.d.ts +4 -0
- package/dist/services/trading-withdraws/trading-withdraws.codecs.d.ts +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.codecs.js +10 -0
- package/dist/services/trading-withdraws/trading-withdraws.codecs.js.map +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.d.ts +124 -0
- package/dist/services/trading-withdraws/trading-withdraws.d.ts.map +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.js +218 -0
- package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +73 -0
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js +95 -0
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -0
- package/dist/services/trading-withdraws/trading-withdraws.types.d.ts +3 -0
- package/dist/services/trailing-oneof-inputs.js +49 -0
- package/dist/services/trailing-oneof-inputs.js.map +1 -0
- package/dist/services/transfers/index.d.ts +4 -0
- package/dist/services/transfers/transfers.codecs.d.ts +6 -0
- package/dist/services/transfers/transfers.codecs.d.ts.map +1 -0
- package/dist/services/transfers/transfers.codecs.js +15 -0
- package/dist/services/transfers/transfers.codecs.js.map +1 -0
- package/dist/services/transfers/transfers.d.ts +33 -0
- package/dist/services/transfers/transfers.d.ts.map +1 -0
- package/dist/services/transfers/transfers.js +63 -0
- package/dist/services/transfers/transfers.js.map +1 -0
- package/dist/services/transfers/transfers.schemas.d.ts +121 -0
- package/dist/services/transfers/transfers.schemas.d.ts.map +1 -0
- package/dist/services/transfers/transfers.schemas.js +77 -0
- package/dist/services/transfers/transfers.schemas.js.map +1 -0
- package/dist/services/transfers/transfers.types.d.ts +3 -0
- package/dist/services/triggers/index.d.ts +5 -0
- package/dist/services/triggers/trigger-child-order.schemas.js +89 -0
- package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -0
- package/dist/services/triggers/trigger-input.schemas.d.ts +1009 -0
- package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -0
- package/dist/services/triggers/trigger-input.schemas.js +270 -0
- package/dist/services/triggers/trigger-input.schemas.js.map +1 -0
- package/dist/services/triggers/triggers-output.schemas.d.ts +688 -0
- package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -0
- package/dist/services/triggers/triggers-output.schemas.js +372 -0
- package/dist/services/triggers/triggers-output.schemas.js.map +1 -0
- package/dist/services/triggers/triggers.codecs.js +100 -0
- package/dist/services/triggers/triggers.codecs.js.map +1 -0
- package/dist/services/triggers/triggers.d.ts +71 -0
- package/dist/services/triggers/triggers.d.ts.map +1 -0
- package/dist/services/triggers/triggers.js +176 -0
- package/dist/services/triggers/triggers.js.map +1 -0
- package/dist/services/triggers/triggers.schemas.d.ts +3 -0
- package/dist/services/triggers/triggers.types.d.ts +5 -0
- package/dist/services/whiteboard/index.d.ts +3 -0
- package/dist/services/whiteboard/whiteboard.codecs.js +55 -0
- package/dist/services/whiteboard/whiteboard.codecs.js.map +1 -0
- package/dist/services/whiteboard/whiteboard.d.ts +42 -0
- package/dist/services/whiteboard/whiteboard.d.ts.map +1 -0
- package/dist/services/whiteboard/whiteboard.js +76 -0
- package/dist/services/whiteboard/whiteboard.js.map +1 -0
- package/dist/services/whiteboard/whiteboard.schemas.d.ts +771 -0
- package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -0
- package/dist/services/whiteboard/whiteboard.schemas.js +133 -0
- package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -0
- package/dist/services/whiteboard/whiteboard.types.d.ts +2 -0
- package/dist/services/zipper/index.d.ts +4 -0
- package/dist/services/zipper/zipper.d.ts +28 -0
- package/dist/services/zipper/zipper.d.ts.map +1 -0
- package/dist/services/zipper/zipper.js +84 -0
- package/dist/services/zipper/zipper.js.map +1 -0
- package/dist/services/zipper/zipper.schemas.d.ts +13 -0
- package/dist/services/zipper/zipper.schemas.d.ts.map +1 -0
- package/dist/services/zipper/zipper.schemas.js +89 -0
- package/dist/services/zipper/zipper.schemas.js.map +1 -0
- package/dist/services/zipper/zipper.types.d.ts +4 -0
- package/dist/shared/account-scope.d.ts +17 -0
- package/dist/shared/account-scope.d.ts.map +1 -0
- package/dist/shared/account-scope.js +14 -0
- package/dist/shared/account-scope.js.map +1 -0
- package/dist/shared/catalog-config.d.ts +95 -0
- package/dist/shared/catalog-config.d.ts.map +1 -0
- package/dist/shared/catalog-config.js +12 -0
- package/dist/shared/catalog-config.js.map +1 -0
- package/dist/shared/connect-error-mapping.d.ts +23 -0
- package/dist/shared/connect-error-mapping.d.ts.map +1 -0
- package/dist/shared/connect-error-mapping.js +147 -0
- package/dist/shared/connect-error-mapping.js.map +1 -0
- package/dist/shared/decimal-surface.d.ts +18 -0
- package/dist/shared/decimal-surface.d.ts.map +1 -0
- package/dist/shared/decimal-surface.js +89 -0
- package/dist/shared/decimal-surface.js.map +1 -0
- package/dist/shared/errors.d.ts +242 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +271 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/ledger-codes.d.ts +9 -0
- package/dist/shared/ledger-codes.d.ts.map +1 -0
- package/dist/shared/ledger-codes.js +63 -0
- package/dist/shared/ledger-codes.js.map +1 -0
- package/dist/shared/proto-enum-codec.js +13 -0
- package/dist/shared/proto-enum-codec.js.map +1 -0
- package/dist/shared/reconciliation.d.ts +14 -0
- package/dist/shared/reconciliation.d.ts.map +1 -0
- package/dist/shared/reconciliation.js +30 -0
- package/dist/shared/reconciliation.js.map +1 -0
- package/dist/shared/request-options.d.ts +10 -0
- package/dist/shared/request-options.d.ts.map +1 -0
- package/dist/shared/request-options.js +22 -0
- package/dist/shared/request-options.js.map +1 -0
- package/dist/shared/schemas.js +65 -0
- package/dist/shared/schemas.js.map +1 -0
- package/dist/shared/subscription-errors.d.ts +14 -0
- package/dist/shared/subscription-errors.d.ts.map +1 -0
- package/dist/shared/subscription-errors.js +49 -0
- package/dist/shared/subscription-errors.js.map +1 -0
- package/dist/shared/transports.d.ts +28 -0
- package/dist/shared/transports.d.ts.map +1 -0
- package/dist/shared/transports.js +111 -0
- package/dist/shared/transports.js.map +1 -0
- package/dist/shared/types.d.ts +11 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/smart-account/index.d.ts +2 -0
- package/dist/smart-account/index.js +2 -0
- package/dist/smart-account/smart-account.d.ts +3093 -0
- package/dist/smart-account/smart-account.d.ts.map +1 -0
- package/dist/smart-account/smart-account.js +94 -0
- package/dist/smart-account/smart-account.js.map +1 -0
- package/dist/utils/base58-id.js +110 -0
- package/dist/utils/base58-id.js.map +1 -0
- package/dist/utils/columnar-time.d.ts +11 -0
- package/dist/utils/columnar-time.d.ts.map +1 -0
- package/dist/utils/columnar-time.js +30 -0
- package/dist/utils/columnar-time.js.map +1 -0
- package/dist/utils/connect-mfa-errors.d.ts +23 -0
- package/dist/utils/connect-mfa-errors.d.ts.map +1 -0
- package/dist/utils/connect-mfa-errors.js +34 -0
- package/dist/utils/connect-mfa-errors.js.map +1 -0
- package/dist/utils/connect-order-errors.d.ts +9 -0
- package/dist/utils/connect-order-errors.d.ts.map +1 -0
- package/dist/utils/connect-order-errors.js +20 -0
- package/dist/utils/connect-order-errors.js.map +1 -0
- package/dist/utils/cookie-es/_utils.js +41 -0
- package/dist/utils/cookie-es/_utils.js.map +1 -0
- package/dist/utils/cookie-es/cookie/parse.js +53 -0
- package/dist/utils/cookie-es/cookie/parse.js.map +1 -0
- package/dist/utils/cookie-es/cookie/serialize.js +145 -0
- package/dist/utils/cookie-es/cookie/serialize.js.map +1 -0
- package/dist/utils/cookies.d.ts +7 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/cookies.js +110 -0
- package/dist/utils/cookies.js.map +1 -0
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +111 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/event-emitter.d.ts +31 -0
- package/dist/utils/event-emitter.d.ts.map +1 -0
- package/dist/utils/event-emitter.js +51 -0
- package/dist/utils/event-emitter.js.map +1 -0
- package/dist/utils/evm.d.ts +33 -0
- package/dist/utils/evm.d.ts.map +1 -0
- package/dist/utils/evm.js +53 -0
- package/dist/utils/evm.js.map +1 -0
- package/dist/utils/is-dev.js +57 -0
- package/dist/utils/is-dev.js.map +1 -0
- package/dist/utils/jwt.d.ts +8 -0
- package/dist/utils/jwt.d.ts.map +1 -0
- package/dist/utils/jwt.js +74 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/numbers.js +60 -0
- package/dist/utils/numbers.js.map +1 -0
- package/dist/utils/proto-patch.js +29 -0
- package/dist/utils/proto-patch.js.map +1 -0
- package/dist/utils/remove-undefined.js +12 -0
- package/dist/utils/remove-undefined.js.map +1 -0
- package/dist/utils/streams.js +19 -0
- package/dist/utils/streams.js.map +1 -0
- package/dist/utils/time.d.ts +22 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +71 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/timestamp.js +52 -0
- package/dist/utils/timestamp.js.map +1 -0
- package/dist/utils/types.d.ts +6 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/u128.d.ts +8 -0
- package/dist/utils/u128.d.ts.map +1 -0
- package/dist/utils/u128.js +43 -0
- package/dist/utils/u128.js.map +1 -0
- package/dist/wired-services.d.ts +15 -0
- package/dist/wired-services.d.ts.map +1 -0
- package/dist/wired-services.js +67 -0
- package/dist/wired-services.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ConfigurationError } from "../shared/errors.js";
|
|
2
|
+
import { bytesToHex, hexToBytes, utf8ToBytes } from "@noble/hashes/utils.js";
|
|
3
|
+
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
4
|
+
//#region src/utils/evm.ts
|
|
5
|
+
const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
|
|
6
|
+
/** Format-only address check (viem `isAddress(value, { strict: false })`). */
|
|
7
|
+
function isEvmAddress(value) {
|
|
8
|
+
return ADDRESS_RE.test(value);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* viem `isAddress(value)` default-mode parity: format check plus EIP-55
|
|
12
|
+
* checksum validation for any address that is not all-lowercase.
|
|
13
|
+
*/
|
|
14
|
+
function isEvmAddressStrict(value) {
|
|
15
|
+
if (!isEvmAddress(value)) return false;
|
|
16
|
+
const body = value.slice(2);
|
|
17
|
+
if (body === body.toLowerCase()) return true;
|
|
18
|
+
return checksumEvmAddress(value) === value;
|
|
19
|
+
}
|
|
20
|
+
/** EIP-55 checksummed address (viem `getAddress`); throws on invalid input. */
|
|
21
|
+
function checksumEvmAddress(value) {
|
|
22
|
+
if (!isEvmAddress(value)) throw new ConfigurationError(`Invalid EVM address: ${value}`);
|
|
23
|
+
const lower = value.slice(2).toLowerCase();
|
|
24
|
+
const hash = keccak_256(utf8ToBytes(lower));
|
|
25
|
+
let out = "0x";
|
|
26
|
+
for (let i = 0; i < 40; i++) {
|
|
27
|
+
const char = lower[i];
|
|
28
|
+
const nibble = hash[i >> 1] >> (i % 2 === 0 ? 4 : 0) & 15;
|
|
29
|
+
out += nibble >= 8 ? char.toUpperCase() : char;
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/** keccak-256 of raw bytes, hex-encoded (viem `keccak256(bytes)`). */
|
|
34
|
+
function keccak256Hex(bytes) {
|
|
35
|
+
return `0x${bytesToHex(keccak_256(bytes))}`;
|
|
36
|
+
}
|
|
37
|
+
/** UTF-8 encode (viem `stringToBytes`). */
|
|
38
|
+
function evmUtf8ToBytes(value) {
|
|
39
|
+
return utf8ToBytes(value);
|
|
40
|
+
}
|
|
41
|
+
/** UTF-8 string to 0x-prefixed hex (viem `stringToHex`). */
|
|
42
|
+
function evmUtf8ToHex(value) {
|
|
43
|
+
return `0x${bytesToHex(utf8ToBytes(value))}`;
|
|
44
|
+
}
|
|
45
|
+
/** 0x-prefixed hex to bytes (viem `hexToBytes`); throws on malformed input. */
|
|
46
|
+
function evmHexToBytes(value) {
|
|
47
|
+
if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(value)) throw new ConfigurationError(`Invalid hex value: ${value}`);
|
|
48
|
+
return hexToBytes(value.slice(2).toLowerCase());
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { checksumEvmAddress, evmHexToBytes, evmUtf8ToBytes, evmUtf8ToHex, isEvmAddress, isEvmAddressStrict, keccak256Hex };
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=evm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm.js","names":["nobleHexToBytes"],"sources":["../../src/utils/evm.ts"],"sourcesContent":["import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bytesToHex, hexToBytes as nobleHexToBytes, utf8ToBytes } from \"@noble/hashes/utils.js\";\nimport { ConfigurationError } from \"../shared/errors.js\";\n\n/**\n * Minimal EVM helpers backed by @noble/hashes.\n *\n * The SDK core previously imported these five utilities from viem. Rolldown\n * groups all shared viem modules into a single chunk, so those tiny static\n * imports forced viem's entire abi/actions graph (~270 KB emitted) into the\n * app shell and the server's eager exec path, even though everything heavy is\n * loaded lazily. Semantics mirror the viem calls they replaced:\n * `isAddress(x, { strict: false })`, `getAddress`, `keccak256`,\n * `stringToBytes`, `hexToBytes`.\n */\n\nexport type EvmHex = `0x${string}`;\n\nconst ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;\n\n/** Format-only address check (viem `isAddress(value, { strict: false })`). */\nexport function isEvmAddress(value: string): value is EvmHex {\n return ADDRESS_RE.test(value);\n}\n\n/**\n * viem `isAddress(value)` default-mode parity: format check plus EIP-55\n * checksum validation for any address that is not all-lowercase.\n */\nexport function isEvmAddressStrict(value: string): value is EvmHex {\n if (!isEvmAddress(value)) return false;\n const body = value.slice(2);\n // viem only exempts all-lowercase addresses from checksum validation.\n if (body === body.toLowerCase()) return true;\n return checksumEvmAddress(value) === value;\n}\n\n/** EIP-55 checksummed address (viem `getAddress`); throws on invalid input. */\nexport function checksumEvmAddress(value: string): EvmHex {\n if (!isEvmAddress(value)) {\n throw new ConfigurationError(`Invalid EVM address: ${value}`);\n }\n const lower = value.slice(2).toLowerCase();\n const hash = keccak_256(utf8ToBytes(lower));\n let out = \"0x\";\n for (let i = 0; i < 40; i++) {\n const char = lower[i]!;\n // Each hash byte covers two nibbles of the address.\n const nibble = (hash[i >> 1]! >> (i % 2 === 0 ? 4 : 0)) & 0x0f;\n out += nibble >= 8 ? char.toUpperCase() : char;\n }\n return out as EvmHex;\n}\n\n/** keccak-256 of raw bytes, hex-encoded (viem `keccak256(bytes)`). */\nexport function keccak256Hex(bytes: Uint8Array): EvmHex {\n return `0x${bytesToHex(keccak_256(bytes))}`;\n}\n\n/** UTF-8 encode (viem `stringToBytes`). */\nexport function evmUtf8ToBytes(value: string): Uint8Array {\n return utf8ToBytes(value);\n}\n\n/** UTF-8 string to 0x-prefixed hex (viem `stringToHex`). */\nexport function evmUtf8ToHex(value: string): EvmHex {\n return `0x${bytesToHex(utf8ToBytes(value))}`;\n}\n\n/** 0x-prefixed hex to bytes (viem `hexToBytes`); throws on malformed input. */\nexport function evmHexToBytes(value: string): Uint8Array {\n if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(value)) {\n throw new ConfigurationError(`Invalid hex value: ${value}`);\n }\n return nobleHexToBytes(value.slice(2).toLowerCase());\n}\n"],"mappings":";;;;AAkBA,MAAM,aAAa;;AAGnB,SAAgB,aAAa,OAAgC;CACzD,OAAO,WAAW,KAAK,KAAK;AAChC;;;;;AAMA,SAAgB,mBAAmB,OAAgC;CAC/D,IAAI,CAAC,aAAa,KAAK,GAAG,OAAO;CACjC,MAAM,OAAO,MAAM,MAAM,CAAC;CAE1B,IAAI,SAAS,KAAK,YAAY,GAAG,OAAO;CACxC,OAAO,mBAAmB,KAAK,MAAM;AACzC;;AAGA,SAAgB,mBAAmB,OAAuB;CACtD,IAAI,CAAC,aAAa,KAAK,GACnB,MAAM,IAAI,mBAAmB,wBAAwB,OAAO;CAEhE,MAAM,QAAQ,MAAM,MAAM,CAAC,CAAC,CAAC,YAAY;CACzC,MAAM,OAAO,WAAW,YAAY,KAAK,CAAC;CAC1C,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EACzB,MAAM,OAAO,MAAM;EAEnB,MAAM,SAAU,KAAK,KAAK,OAAQ,IAAI,MAAM,IAAI,IAAI,KAAM;EAC1D,OAAO,UAAU,IAAI,KAAK,YAAY,IAAI;CAC9C;CACA,OAAO;AACX;;AAGA,SAAgB,aAAa,OAA2B;CACpD,OAAO,KAAK,WAAW,WAAW,KAAK,CAAC;AAC5C;;AAGA,SAAgB,eAAe,OAA2B;CACtD,OAAO,YAAY,KAAK;AAC5B;;AAGA,SAAgB,aAAa,OAAuB;CAChD,OAAO,KAAK,WAAW,YAAY,KAAK,CAAC;AAC7C;;AAGA,SAAgB,cAAc,OAA2B;CACrD,IAAI,CAAC,0BAA0B,KAAK,KAAK,GACrC,MAAM,IAAI,mBAAmB,sBAAsB,OAAO;CAE9D,OAAOA,WAAgB,MAAM,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AACvD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/utils/is-dev.ts
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the current environment is development.
|
|
4
|
+
* Uses local-only hostnames to determine if the current environment is development.
|
|
5
|
+
* If the current environment is not a browser environment, it returns false.
|
|
6
|
+
* If the current environment is a browser environment, it checks if the hostname is localhost or loopback.
|
|
7
|
+
* If any of the conditions are true, it returns true.
|
|
8
|
+
* Otherwise, it returns false.
|
|
9
|
+
*
|
|
10
|
+
* @returns true if the current environment is development
|
|
11
|
+
*/
|
|
12
|
+
function parseIpv4(hostname) {
|
|
13
|
+
const parts = hostname.split(".");
|
|
14
|
+
if (parts.length !== 4) return null;
|
|
15
|
+
const octets = [];
|
|
16
|
+
for (const part of parts) {
|
|
17
|
+
if (!/^\d{1,3}$/.test(part)) return null;
|
|
18
|
+
const octet = Number(part);
|
|
19
|
+
if (octet > 255) return null;
|
|
20
|
+
octets.push(octet);
|
|
21
|
+
}
|
|
22
|
+
return octets;
|
|
23
|
+
}
|
|
24
|
+
function isLoopbackIpv4(hostname) {
|
|
25
|
+
return parseIpv4(hostname)?.[0] === 127;
|
|
26
|
+
}
|
|
27
|
+
/** RFC 1918 private IPv4 ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. */
|
|
28
|
+
function isPrivateIpv4(hostname) {
|
|
29
|
+
const octets = parseIpv4(hostname);
|
|
30
|
+
if (!octets) return false;
|
|
31
|
+
const [first, second] = octets;
|
|
32
|
+
return first === 10 || first === 192 && second === 168 || first === 172 && second >= 16 && second <= 31;
|
|
33
|
+
}
|
|
34
|
+
function isLocalhostName(hostname) {
|
|
35
|
+
return hostname === "localhost" || hostname.endsWith(".localhost") || hostname === "::1" || hostname === "[::1]" || isLoopbackIpv4(hostname);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks whether the current runtime appears to be a development environment.
|
|
39
|
+
*/
|
|
40
|
+
function isDev() {
|
|
41
|
+
if (typeof window === "undefined") return false;
|
|
42
|
+
return isLocalhostName(window.location.hostname.toLowerCase());
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* True for hostnames only reachable on a developer's machine or local network:
|
|
46
|
+
* everything `isDev()` accepts plus RFC 1918 private IPv4 addresses, which is
|
|
47
|
+
* how phones reach a dev server over LAN. Production hostnames are public
|
|
48
|
+
* domains and never match.
|
|
49
|
+
*/
|
|
50
|
+
function isLocalNetworkHost(hostname) {
|
|
51
|
+
const lowered = hostname.toLowerCase();
|
|
52
|
+
return isLocalhostName(lowered) || isPrivateIpv4(lowered);
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { isDev, isLocalNetworkHost };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=is-dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-dev.js","names":[],"sources":["../../src/utils/is-dev.ts"],"sourcesContent":["/**\n * Checks if the current environment is development.\n * Uses local-only hostnames to determine if the current environment is development.\n * If the current environment is not a browser environment, it returns false.\n * If the current environment is a browser environment, it checks if the hostname is localhost or loopback.\n * If any of the conditions are true, it returns true.\n * Otherwise, it returns false.\n *\n * @returns true if the current environment is development\n */\nfunction parseIpv4(hostname: string): number[] | null {\n const parts = hostname.split(\".\");\n if (parts.length !== 4) return null;\n\n const octets: number[] = [];\n for (const part of parts) {\n if (!/^\\d{1,3}$/.test(part)) return null;\n const octet = Number(part);\n if (octet > 255) return null;\n octets.push(octet);\n }\n return octets;\n}\n\nfunction isLoopbackIpv4(hostname: string): boolean {\n return parseIpv4(hostname)?.[0] === 127;\n}\n\n/** RFC 1918 private IPv4 ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. */\nfunction isPrivateIpv4(hostname: string): boolean {\n const octets = parseIpv4(hostname);\n if (!octets) return false;\n const [first, second] = octets as [number, number, number, number];\n return (\n first === 10 ||\n (first === 192 && second === 168) ||\n (first === 172 && second >= 16 && second <= 31)\n );\n}\n\nfunction isLocalhostName(hostname: string): boolean {\n return (\n hostname === \"localhost\" ||\n hostname.endsWith(\".localhost\") ||\n hostname === \"::1\" ||\n hostname === \"[::1]\" ||\n isLoopbackIpv4(hostname)\n );\n}\n\n/**\n * Checks whether the current runtime appears to be a development environment.\n */\nexport function isDev(): boolean {\n if (typeof window === \"undefined\") return false;\n return isLocalhostName(window.location.hostname.toLowerCase());\n}\n\n/**\n * True for hostnames only reachable on a developer's machine or local network:\n * everything `isDev()` accepts plus RFC 1918 private IPv4 addresses, which is\n * how phones reach a dev server over LAN. Production hostnames are public\n * domains and never match.\n */\nexport function isLocalNetworkHost(hostname: string): boolean {\n const lowered = hostname.toLowerCase();\n return isLocalhostName(lowered) || isPrivateIpv4(lowered);\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAS,UAAU,UAAmC;CAClD,MAAM,QAAQ,SAAS,MAAM,GAAG;CAChC,IAAI,MAAM,WAAW,GAAG,OAAO;CAE/B,MAAM,SAAmB,CAAC;CAC1B,KAAK,MAAM,QAAQ,OAAO;EACtB,IAAI,CAAC,YAAY,KAAK,IAAI,GAAG,OAAO;EACpC,MAAM,QAAQ,OAAO,IAAI;EACzB,IAAI,QAAQ,KAAK,OAAO;EACxB,OAAO,KAAK,KAAK;CACrB;CACA,OAAO;AACX;AAEA,SAAS,eAAe,UAA2B;CAC/C,OAAO,UAAU,QAAQ,CAAC,GAAG,OAAO;AACxC;;AAGA,SAAS,cAAc,UAA2B;CAC9C,MAAM,SAAS,UAAU,QAAQ;CACjC,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,CAAC,OAAO,UAAU;CACxB,OACI,UAAU,MACT,UAAU,OAAO,WAAW,OAC5B,UAAU,OAAO,UAAU,MAAM,UAAU;AAEpD;AAEA,SAAS,gBAAgB,UAA2B;CAChD,OACI,aAAa,eACb,SAAS,SAAS,YAAY,KAC9B,aAAa,SACb,aAAa,WACb,eAAe,QAAQ;AAE/B;;;;AAKA,SAAgB,QAAiB;CAC7B,IAAI,OAAO,WAAW,aAAa,OAAO;CAC1C,OAAO,gBAAgB,OAAO,SAAS,SAAS,YAAY,CAAC;AACjE;;;;;;;AAQA,SAAgB,mBAAmB,UAA2B;CAC1D,MAAM,UAAU,SAAS,YAAY;CACrC,OAAO,gBAAgB,OAAO,KAAK,cAAc,OAAO;AAC5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","names":[],"sources":["../../src/utils/jwt.ts"],"mappings":";;;;iBA6DgB,WAAW,uBAAuB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
//#region src/utils/jwt.ts
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether a string has the shape of a JWT.
|
|
4
|
+
*/
|
|
5
|
+
function isJwt(token) {
|
|
6
|
+
const parts = token.split(".");
|
|
7
|
+
return parts.length === 3 && !!parts[0] && !!parts[1] && !!parts[2];
|
|
8
|
+
}
|
|
9
|
+
let textDecoder;
|
|
10
|
+
/**
|
|
11
|
+
* Gets a TextDecoder instance.
|
|
12
|
+
*/
|
|
13
|
+
function getTextDecoder() {
|
|
14
|
+
textDecoder ??= new TextDecoder("utf-8", { fatal: true });
|
|
15
|
+
return textDecoder;
|
|
16
|
+
}
|
|
17
|
+
function decodeBase64Url(value) {
|
|
18
|
+
const remainder = value.length % 4;
|
|
19
|
+
if (remainder === 1) return null;
|
|
20
|
+
const base64 = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
21
|
+
const paddedBase64 = remainder === 0 ? base64 : base64.padEnd(base64.length + 4 - remainder, "=");
|
|
22
|
+
const binary = atob(paddedBase64);
|
|
23
|
+
const bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0));
|
|
24
|
+
return getTextDecoder().decode(bytes);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reads a JWT expiration timestamp when present.
|
|
28
|
+
*/
|
|
29
|
+
function getJwtExpiration(token) {
|
|
30
|
+
try {
|
|
31
|
+
const [_, rawPayload] = token.split(".");
|
|
32
|
+
if (!rawPayload) return null;
|
|
33
|
+
const decodedPayload = decodeBase64Url(rawPayload);
|
|
34
|
+
if (!decodedPayload) return null;
|
|
35
|
+
const payload = JSON.parse(decodedPayload);
|
|
36
|
+
if (typeof payload !== "object" || payload === null) return null;
|
|
37
|
+
const exp = payload.exp;
|
|
38
|
+
return typeof exp === "number" ? exp : null;
|
|
39
|
+
} catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether a JWT is expired.
|
|
45
|
+
*/
|
|
46
|
+
function isJwtExpired(token) {
|
|
47
|
+
const exp = getJwtExpiration(token);
|
|
48
|
+
if (exp === null) return true;
|
|
49
|
+
return exp < Math.floor(Date.now() / 1e3);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Checks whether a JWT is present, well formed, and not expired.
|
|
53
|
+
*/
|
|
54
|
+
function isJwtValid(token) {
|
|
55
|
+
if (!token) return false;
|
|
56
|
+
if (!isJwt(token)) return false;
|
|
57
|
+
if (isJwtExpired(token)) return false;
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns the number of milliseconds until the JWT expires.
|
|
62
|
+
* Returns 0 if already expired or invalid.
|
|
63
|
+
*/
|
|
64
|
+
function getJwtTimeToExpiry(token) {
|
|
65
|
+
const exp = getJwtExpiration(token);
|
|
66
|
+
if (exp === null) return 0;
|
|
67
|
+
const nowMs = Date.now();
|
|
68
|
+
const expiresAtMs = exp * 1e3;
|
|
69
|
+
return Math.max(0, expiresAtMs - nowMs);
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { getJwtExpiration, getJwtTimeToExpiry, isJwt, isJwtExpired, isJwtValid };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","names":[],"sources":["../../src/utils/jwt.ts"],"sourcesContent":["/**\n * Checks whether a string has the shape of a JWT.\n */\nexport function isJwt(token: string): boolean {\n const parts = token.split(\".\");\n return parts.length === 3 && !!parts[0] && !!parts[1] && !!parts[2];\n}\n\nlet textDecoder: TextDecoder | undefined;\n\n/**\n * Gets a TextDecoder instance.\n */\nfunction getTextDecoder(): TextDecoder {\n textDecoder ??= new TextDecoder(\"utf-8\", { fatal: true });\n return textDecoder;\n}\n\nfunction decodeBase64Url(value: string): string | null {\n const remainder = value.length % 4;\n if (remainder === 1) return null;\n\n const base64 = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const paddedBase64 =\n remainder === 0 ? base64 : base64.padEnd(base64.length + 4 - remainder, \"=\");\n const binary = atob(paddedBase64);\n const bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0));\n return getTextDecoder().decode(bytes);\n}\n\n/**\n * Reads a JWT expiration timestamp when present.\n */\nexport function getJwtExpiration(token: string): number | null {\n try {\n const [_, rawPayload] = token.split(\".\");\n if (!rawPayload) return null;\n const decodedPayload = decodeBase64Url(rawPayload);\n if (!decodedPayload) return null;\n const payload: unknown = JSON.parse(decodedPayload);\n if (typeof payload !== \"object\" || payload === null) return null;\n const exp = (payload as { exp?: unknown }).exp;\n return typeof exp === \"number\" ? exp : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Checks whether a JWT is expired.\n */\nexport function isJwtExpired(token: string): boolean {\n const exp = getJwtExpiration(token);\n if (exp === null) return true;\n const currentTime = Math.floor(Date.now() / 1000);\n return exp < currentTime;\n}\n\n/**\n * Checks whether a JWT is present, well formed, and not expired.\n */\nexport function isJwtValid(token: string | null): token is string {\n if (!token) return false;\n if (!isJwt(token)) return false;\n if (isJwtExpired(token)) return false;\n return true;\n}\n\n/**\n * Returns the number of milliseconds until the JWT expires.\n * Returns 0 if already expired or invalid.\n */\nexport function getJwtTimeToExpiry(token: string): number {\n const exp = getJwtExpiration(token);\n if (exp === null) return 0;\n const nowMs = Date.now();\n const expiresAtMs = exp * 1000;\n return Math.max(0, expiresAtMs - nowMs);\n}\n"],"mappings":";;;;AAGA,SAAgB,MAAM,OAAwB;CAC1C,MAAM,QAAQ,MAAM,MAAM,GAAG;CAC7B,OAAO,MAAM,WAAW,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM;AACrE;AAEA,IAAI;;;;AAKJ,SAAS,iBAA8B;CACnC,gBAAgB,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;CACxD,OAAO;AACX;AAEA,SAAS,gBAAgB,OAA8B;CACnD,MAAM,YAAY,MAAM,SAAS;CACjC,IAAI,cAAc,GAAG,OAAO;CAE5B,MAAM,SAAS,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,GAAG;CACzD,MAAM,eACF,cAAc,IAAI,SAAS,OAAO,OAAO,OAAO,SAAS,IAAI,WAAW,GAAG;CAC/E,MAAM,SAAS,KAAK,YAAY;CAChC,MAAM,QAAQ,WAAW,KAAK,SAAS,cAAc,UAAU,WAAW,CAAC,CAAC;CAC5E,OAAO,eAAe,CAAC,CAAC,OAAO,KAAK;AACxC;;;;AAKA,SAAgB,iBAAiB,OAA8B;CAC3D,IAAI;EACA,MAAM,CAAC,GAAG,cAAc,MAAM,MAAM,GAAG;EACvC,IAAI,CAAC,YAAY,OAAO;EACxB,MAAM,iBAAiB,gBAAgB,UAAU;EACjD,IAAI,CAAC,gBAAgB,OAAO;EAC5B,MAAM,UAAmB,KAAK,MAAM,cAAc;EAClD,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM,OAAO;EAC5D,MAAM,MAAO,QAA8B;EAC3C,OAAO,OAAO,QAAQ,WAAW,MAAM;CAC3C,QAAQ;EACJ,OAAO;CACX;AACJ;;;;AAKA,SAAgB,aAAa,OAAwB;CACjD,MAAM,MAAM,iBAAiB,KAAK;CAClC,IAAI,QAAQ,MAAM,OAAO;CAEzB,OAAO,MADa,KAAK,MAAM,KAAK,IAAI,IAAI,GACrB;AAC3B;;;;AAKA,SAAgB,WAAW,OAAuC;CAC9D,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,CAAC,MAAM,KAAK,GAAG,OAAO;CAC1B,IAAI,aAAa,KAAK,GAAG,OAAO;CAChC,OAAO;AACX;;;;;AAMA,SAAgB,mBAAmB,OAAuB;CACtD,MAAM,MAAM,iBAAiB,KAAK;CAClC,IAAI,QAAQ,MAAM,OAAO;CACzB,MAAM,QAAQ,KAAK,IAAI;CACvB,MAAM,cAAc,MAAM;CAC1B,OAAO,KAAK,IAAI,GAAG,cAAc,KAAK;AAC1C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region src/utils/numbers.ts
|
|
2
|
+
/**
|
|
3
|
+
* Parse an optional uint64 encoded as a base-10 string into bigint.
|
|
4
|
+
* Empty values are omitted, but supplied invalid values are rejected.
|
|
5
|
+
*/
|
|
6
|
+
function parseOptionalUint64DecimalStrict(raw, fieldName) {
|
|
7
|
+
const s = (raw ?? "").trim();
|
|
8
|
+
if (!s) return;
|
|
9
|
+
if (!/^[0-9]+$/.test(s)) throw new Error(`${fieldName} must be a positive integer`);
|
|
10
|
+
return BigInt(s);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse an optional positive integer-ish value (string/number) into a number, or undefined on invalid/empty.
|
|
14
|
+
* Useful for common "limit" fields coming from UI inputs.
|
|
15
|
+
*/
|
|
16
|
+
function parseOptionalPositiveIntLike(value) {
|
|
17
|
+
if (value === void 0 || value === null) return void 0;
|
|
18
|
+
const n = typeof value === "string" ? Number(value.trim()) : value;
|
|
19
|
+
return Number.isInteger(n) && n > 0 ? n : void 0;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Coerce optional UI number into non-negative bigint (e.g. caps, limits).
|
|
23
|
+
* @param value - The value to coerce.
|
|
24
|
+
* @returns The coerced bigint.
|
|
25
|
+
*/
|
|
26
|
+
function toBigIntOrZero(value) {
|
|
27
|
+
if (value == null || Number.isNaN(value)) return 0n;
|
|
28
|
+
return BigInt(Math.max(0, Math.trunc(value)));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Coerce optional UI number into non-negative integer.
|
|
32
|
+
* @param value - The value to coerce.
|
|
33
|
+
* @returns The coerced integer.
|
|
34
|
+
*/
|
|
35
|
+
function toIntOrZero(value) {
|
|
36
|
+
if (value == null || Number.isNaN(value)) return 0;
|
|
37
|
+
return Math.max(0, Math.trunc(value));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Coerce optional UI percentage into non-negative basis points integer.
|
|
41
|
+
* @param value - The value to coerce.
|
|
42
|
+
* @returns The coerced integer.
|
|
43
|
+
*/
|
|
44
|
+
function toBpsOrZero(value) {
|
|
45
|
+
if (value == null || Number.isNaN(value)) return 0;
|
|
46
|
+
return Math.max(0, Math.trunc(value * 100));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Convert basis points to percentage.
|
|
50
|
+
* @param value - The value to convert.
|
|
51
|
+
* @returns The converted percentage.
|
|
52
|
+
*/
|
|
53
|
+
function bpsToPct(value) {
|
|
54
|
+
if (value == null || Number.isNaN(value)) return 0;
|
|
55
|
+
return value / 100;
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { bpsToPct, parseOptionalPositiveIntLike, parseOptionalUint64DecimalStrict, toBigIntOrZero, toBpsOrZero, toIntOrZero };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=numbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.js","names":[],"sources":["../../src/utils/numbers.ts"],"sourcesContent":["// Shared numeric helpers for gRPC/Connect clients.\n\n/**\n * Parse a required uint64 encoded as a base-10 string into bigint.\n * @param raw - The raw string to parse.\n * @param fieldName - The name of the field to parse.\n * @returns The parsed bigint.\n * @throws An error if the field is required and not provided.\n * @throws An error if the field is not a positive integer.\n */\nexport function parseRequiredUint64Decimal(raw: string, fieldName: string): bigint {\n const s = (raw ?? \"\").trim();\n if (!s) throw new Error(`${fieldName} is required`);\n if (!/^[0-9]+$/.test(s)) throw new Error(`${fieldName} must be a positive integer`);\n return BigInt(s);\n}\n\n/**\n * Parse an optional uint64 encoded as a base-10 string into bigint, or undefined on invalid/empty.\n * @param raw - The raw string to parse.\n * @returns The parsed bigint, or undefined if the field is invalid or empty.\n */\nexport function parseOptionalUint64Decimal(raw: string | undefined): bigint | undefined {\n const s = (raw ?? \"\").trim();\n if (!s) return;\n // For optional filters, treat invalid input as \"unset\" rather than surfacing an error.\n if (!/^[0-9]+$/.test(s)) return;\n return BigInt(s);\n}\n\n/**\n * Parse an optional uint64 encoded as a base-10 string into bigint.\n * Empty values are omitted, but supplied invalid values are rejected.\n */\nexport function parseOptionalUint64DecimalStrict(\n raw: string | undefined,\n fieldName: string,\n): bigint | undefined {\n const s = (raw ?? \"\").trim();\n if (!s) return;\n if (!/^[0-9]+$/.test(s)) throw new Error(`${fieldName} must be a positive integer`);\n return BigInt(s);\n}\n\n/**\n * Parse an optional uint64-ish value (string/number/bigint) into bigint, or undefined on invalid/empty.\n * Accepts base-10 strings, numeric inputs (truncated), and bigint inputs.\n */\nexport function parseOptionalUint64Like(\n value: string | number | bigint | undefined | null,\n): bigint | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"bigint\") return value >= 0n ? value : undefined;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) return undefined;\n const n = Math.trunc(value);\n return n >= 0 ? BigInt(n) : undefined;\n }\n return parseOptionalUint64Decimal(value);\n}\n\n/**\n * Parse an optional positive integer-ish value (string/number) into a number, or undefined on invalid/empty.\n * Useful for common \"limit\" fields coming from UI inputs.\n */\nexport function parseOptionalPositiveIntLike(\n value: string | number | undefined | null,\n): number | undefined {\n if (value === undefined || value === null) return undefined;\n const n = typeof value === \"string\" ? Number(value.trim()) : value;\n return Number.isInteger(n) && n > 0 ? n : undefined;\n}\n\n/**\n * Convert a decimal string into a scaled bigint (e.g. 18dp quantity, 6dp price).\n * @param raw - The raw string to parse.\n * @param scale - The scale of the number.\n * @param fieldName - The name of the field to parse.\n * @returns The parsed bigint.\n * @throws An error if the field is required and not provided.\n * @throws An error if the field is not a positive number.\n */\nexport function decimalToScaledInt(raw: string, scale: number, fieldName: string): bigint {\n const s = (raw ?? \"\").trim();\n if (!s) throw new Error(`${fieldName} is required`);\n if (!/^[0-9]+(\\.[0-9]+)?$/.test(s)) throw new Error(`${fieldName} must be a positive number`);\n const [intPartRaw, fracRaw = \"\"] = s.split(\".\");\n if (fracRaw.length > scale) {\n throw new Error(`${fieldName} supports at most ${scale} decimal places`);\n }\n const intPart = intPartRaw?.replace(/^0+/, \"\") ?? \"0\";\n const fracPart = fracRaw.padEnd(scale, \"0\");\n const combined = `${intPart}${fracPart}`;\n return BigInt(combined ?? \"0\");\n}\n\n/**\n * Parse a quantity scaled to the given number of decimal places.\n * @param raw - The raw string to parse.\n * @param scale - The number of decimal places to scale to.\n * @param fieldName - The name of the field to parse.\n * @returns The parsed bigint.\n * @throws An error if the field is required and not provided.\n * @throws An error if the field is not a positive number.\n */\nexport function parseQtyScaled(raw: string, scale: number, fieldName: string): bigint {\n return decimalToScaledInt(raw, scale, fieldName);\n}\n\n/**\n * Parse a price scaled to 6 decimal places.\n * @param raw - The raw string to parse.\n * @param fieldName - The name of the field to parse.\n * @returns The parsed bigint.\n * @throws An error if the field is required and not provided.\n * @throws An error if the field is not a positive number.\n */\nexport function parsePriceTicks(raw: string, fieldName: string): bigint {\n return decimalToScaledInt(raw, 6, fieldName);\n}\n\n/**\n * Coerce optional UI number into non-negative bigint (e.g. caps, limits).\n * @param value - The value to coerce.\n * @returns The coerced bigint.\n */\nexport function toBigIntOrZero(value?: number | null): bigint {\n if (value == null || Number.isNaN(value)) return 0n;\n return BigInt(Math.max(0, Math.trunc(value)));\n}\n\n/**\n * Coerce optional UI number into non-negative integer.\n * @param value - The value to coerce.\n * @returns The coerced integer.\n */\nexport function toIntOrZero(value?: number | null): number {\n if (value == null || Number.isNaN(value)) return 0;\n return Math.max(0, Math.trunc(value));\n}\n\n/**\n * Coerce optional UI percentage into non-negative basis points integer.\n * @param value - The value to coerce.\n * @returns The coerced integer.\n */\nexport function toBpsOrZero(value?: number | null): number {\n if (value == null || Number.isNaN(value)) return 0;\n return Math.max(0, Math.trunc(value * 100));\n}\n\n/**\n * Convert basis points to percentage.\n * @param value - The value to convert.\n * @returns The converted percentage.\n */\nexport function bpsToPct(value?: number | null): number {\n if (value == null || Number.isNaN(value)) return 0;\n return value / 100;\n}\n"],"mappings":";;;;;AAkCA,SAAgB,iCACZ,KACA,WACkB;CAClB,MAAM,KAAK,OAAO,GAAA,CAAI,KAAK;CAC3B,IAAI,CAAC,GAAG;CACR,IAAI,CAAC,WAAW,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,GAAG,UAAU,4BAA4B;CAClF,OAAO,OAAO,CAAC;AACnB;;;;;AAuBA,SAAgB,6BACZ,OACkB;CAClB,IAAI,UAAU,KAAA,KAAa,UAAU,MAAM,OAAO,KAAA;CAClD,MAAM,IAAI,OAAO,UAAU,WAAW,OAAO,MAAM,KAAK,CAAC,IAAI;CAC7D,OAAO,OAAO,UAAU,CAAC,KAAK,IAAI,IAAI,IAAI,KAAA;AAC9C;;;;;;AAuDA,SAAgB,eAAe,OAA+B;CAC1D,IAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,GAAG,OAAO;CACjD,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,CAAC;AAChD;;;;;;AAOA,SAAgB,YAAY,OAA+B;CACvD,IAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,GAAG,OAAO;CACjD,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;AACxC;;;;;;AAOA,SAAgB,YAAY,OAA+B;CACvD,IAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,GAAG,OAAO;CACjD,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,GAAG,CAAC;AAC9C;;;;;;AAOA,SAAgB,SAAS,OAA+B;CACpD,IAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,GAAG,OAAO;CACjD,OAAO,QAAQ;AACnB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/utils/proto-patch.ts
|
|
2
|
+
/**
|
|
3
|
+
* Define the public-to-proto mapping for every field in a PATCH input.
|
|
4
|
+
*
|
|
5
|
+
* Keeping the encoder and FieldMask path together prevents their presence checks from drifting.
|
|
6
|
+
*/
|
|
7
|
+
function defineProtoPatchFields() {
|
|
8
|
+
return (fields) => fields;
|
|
9
|
+
}
|
|
10
|
+
/** Build a proto PATCH value and FieldMask in one allocation-conscious pass. */
|
|
11
|
+
function buildProtoPatch(input, fields) {
|
|
12
|
+
const patch = {};
|
|
13
|
+
const paths = [];
|
|
14
|
+
for (const key of Object.keys(fields)) {
|
|
15
|
+
const value = input[key];
|
|
16
|
+
if (value === void 0) continue;
|
|
17
|
+
const field = fields[key];
|
|
18
|
+
Object.assign(patch, field.encode(value));
|
|
19
|
+
paths.push(field.path);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
patch,
|
|
23
|
+
updateMask: { paths }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { buildProtoPatch, defineProtoPatchFields };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=proto-patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proto-patch.js","names":[],"sources":["../../src/utils/proto-patch.ts"],"sourcesContent":["type ProtoPatchEncoder<Value> = (value: Value) => Record<string, unknown>;\n\nexport type ProtoPatchFieldMap<Input extends Record<string, unknown>> = {\n [Key in keyof Input]-?: {\n path: string;\n encode: ProtoPatchEncoder<Exclude<Input[Key], undefined>>;\n };\n};\n\ntype EncodedField<Fields> = Fields[keyof Fields] extends {\n encode: (...args: never[]) => infer Encoded;\n}\n ? Encoded\n : never;\n\ntype UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (\n value: infer Intersection,\n) => void\n ? Intersection\n : never;\n\ntype ProtoPatchValue<Fields> = Partial<UnionToIntersection<EncodedField<Fields>>>;\n\n/**\n * Define the public-to-proto mapping for every field in a PATCH input.\n *\n * Keeping the encoder and FieldMask path together prevents their presence checks from drifting.\n */\nexport function defineProtoPatchFields<Input extends Record<string, unknown>>() {\n return <const Fields extends ProtoPatchFieldMap<Input>>(fields: Fields): Fields => fields;\n}\n\n/** Build a proto PATCH value and FieldMask in one allocation-conscious pass. */\nexport function buildProtoPatch<\n Input extends Record<string, unknown>,\n const Fields extends ProtoPatchFieldMap<Input>,\n>(\n input: Input,\n fields: Fields,\n): { patch: ProtoPatchValue<Fields>; updateMask: { paths: string[] } } {\n const patch: Record<string, unknown> = {};\n const paths: string[] = [];\n\n for (const key of Object.keys(fields) as Array<keyof Fields>) {\n const value = input[key as keyof Input];\n if (value === undefined) continue;\n\n const field = fields[key];\n Object.assign(patch, field.encode(value as never));\n paths.push(field.path);\n }\n\n return {\n patch: patch as ProtoPatchValue<Fields>,\n updateMask: { paths },\n };\n}\n"],"mappings":";;;;;;AA4BA,SAAgB,yBAAgE;CAC5E,QAAwD,WAA2B;AACvF;;AAGA,SAAgB,gBAIZ,OACA,QACmE;CACnE,MAAM,QAAiC,CAAC;CACxC,MAAM,QAAkB,CAAC;CAEzB,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAA0B;EAC1D,MAAM,QAAQ,MAAM;EACpB,IAAI,UAAU,KAAA,GAAW;EAEzB,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,OAAO,MAAM,OAAO,KAAc,CAAC;EACjD,MAAM,KAAK,MAAM,IAAI;CACzB;CAEA,OAAO;EACI;EACP,YAAY,EAAE,MAAM;CACxB;AACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/utils/remove-undefined.ts
|
|
2
|
+
/**
|
|
3
|
+
* Given an object, return a new object with all undefined values removed from it.
|
|
4
|
+
* This is useful for removing undefined values from the object before sending it to the server.
|
|
5
|
+
*/
|
|
6
|
+
function removeUndefined(obj) {
|
|
7
|
+
return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== void 0));
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { removeUndefined };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=remove-undefined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-undefined.js","names":[],"sources":["../../src/utils/remove-undefined.ts"],"sourcesContent":["/**\n * Given an object, return a new object with all undefined values removed from it.\n * This is useful for removing undefined values from the object before sending it to the server.\n */\nexport function removeUndefined<T extends Record<string, unknown>>(obj: T): T {\n return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== undefined)) as T;\n}\n"],"mappings":";;;;;AAIA,SAAgB,gBAAmD,KAAW;CAC1E,OAAO,OAAO,YAAY,OAAO,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,WAAW,UAAU,KAAA,CAAS,CAAC;AAC7F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { fromBinary } from "@bufbuild/protobuf";
|
|
2
|
+
//#region src/utils/streams.ts
|
|
3
|
+
/**
|
|
4
|
+
* Decode a proto frame from a WS payload.
|
|
5
|
+
* @param schema - The schema to decode the frame into.
|
|
6
|
+
* @param m - The message to decode.
|
|
7
|
+
* @returns The decoded frame, or null if the frame is empty or unsupported.
|
|
8
|
+
* @throws If a binary payload cannot be decoded as the requested schema.
|
|
9
|
+
*/
|
|
10
|
+
function decodeProtoFrame(schema, m) {
|
|
11
|
+
if (!m) return null;
|
|
12
|
+
if (m instanceof Uint8Array) return fromBinary(schema, m);
|
|
13
|
+
if (m && typeof m === "object") return m;
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { decodeProtoFrame };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=streams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams.js","names":[],"sources":["../../src/utils/streams.ts"],"sourcesContent":["import { type DescMessage, type MessageShape, fromBinary } from \"@bufbuild/protobuf\";\n\n/**\n * Decode a proto frame from a WS payload.\n * @param schema - The schema to decode the frame into.\n * @param m - The message to decode.\n * @returns The decoded frame, or null if the frame is empty or unsupported.\n * @throws If a binary payload cannot be decoded as the requested schema.\n */\nexport function decodeProtoFrame<T extends DescMessage>(\n schema: T,\n m: Uint8Array | MessageShape<T>,\n): MessageShape<T> | null {\n if (!m) return null;\n\n if (m instanceof Uint8Array) return fromBinary(schema, m);\n if (m && typeof m === \"object\") return m;\n return null;\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,iBACZ,QACA,GACsB;CACtB,IAAI,CAAC,GAAG,OAAO;CAEf,IAAI,aAAa,YAAY,OAAO,WAAW,QAAQ,CAAC;CACxD,IAAI,KAAK,OAAO,MAAM,UAAU,OAAO;CACvC,OAAO;AACX"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/utils/time.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Converts a proto timestamp object to epoch milliseconds.
|
|
4
|
+
*/
|
|
5
|
+
type TimestampLike = {
|
|
6
|
+
seconds?: bigint;
|
|
7
|
+
nanos?: number;
|
|
8
|
+
};
|
|
9
|
+
type RequiredTimestampLike = {
|
|
10
|
+
seconds: bigint;
|
|
11
|
+
nanos?: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Converts a protobuf timestamp to an exact Unix-nanosecond decimal string.
|
|
15
|
+
* Use this representation for reconciliation fields where millisecond
|
|
16
|
+
* truncation could collapse two distinct updates.
|
|
17
|
+
*/
|
|
18
|
+
declare function tsObjToNsString(ts: RequiredTimestampLike): string;
|
|
19
|
+
declare function tsObjToNsString(ts: TimestampLike | undefined): string | undefined;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { tsObjToNsString };
|
|
22
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","names":[],"sources":["../../src/utils/time.ts"],"mappings":";;;;KA0DK;EAAkB;EAAkB;;KACpC;EAA0B;EAAiB;;;;;;;iBAgBhC,gBAAgB,IAAI;iBACpB,gBAAgB,IAAI"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//#region src/utils/time.ts
|
|
2
|
+
/**
|
|
3
|
+
* Convert epoch nanoseconds (bigint or number) to ISO8601 string for display.
|
|
4
|
+
* @param ts - The timestamp to convert to ISO8601 string.
|
|
5
|
+
* @returns The ISO8601 string.
|
|
6
|
+
*/
|
|
7
|
+
function tsNsToISO(ts) {
|
|
8
|
+
if (ts === void 0 || ts === null) return "";
|
|
9
|
+
if (typeof ts === "bigint") try {
|
|
10
|
+
return new Date(Number(ts / 1000000n)).toISOString();
|
|
11
|
+
} catch {
|
|
12
|
+
return ts.toString();
|
|
13
|
+
}
|
|
14
|
+
if (typeof ts === "number") {
|
|
15
|
+
const ms = ts > 0xe8d4a51000 ? Math.floor(ts / 1e6) : ts;
|
|
16
|
+
return new Date(ms).toISOString();
|
|
17
|
+
}
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Convert epoch nanoseconds (bigint or number) to milliseconds since epoch.
|
|
22
|
+
* @param ts - The timestamp to convert to milliseconds since epoch.
|
|
23
|
+
* @returns The milliseconds since epoch.
|
|
24
|
+
*/
|
|
25
|
+
function tsNsToMs(ts) {
|
|
26
|
+
if (ts === void 0 || ts === null) return 0;
|
|
27
|
+
if (typeof ts === "bigint") return Number(ts / 1000000n);
|
|
28
|
+
if (typeof ts === "number") return Math.floor(ts / 1e6);
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
function tsObjToMs(ts) {
|
|
32
|
+
if (ts === void 0) return void 0;
|
|
33
|
+
if (ts.seconds === void 0) return void 0;
|
|
34
|
+
const nanos = ts.nanos ?? 0;
|
|
35
|
+
return Number(ts.seconds) * 1e3 + Math.floor(nanos / 1e6);
|
|
36
|
+
}
|
|
37
|
+
function tsObjToNsString(ts) {
|
|
38
|
+
if (ts?.seconds === void 0) return void 0;
|
|
39
|
+
return (ts.seconds * 1000000000n + BigInt(ts.nanos ?? 0)).toString();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a timestamp to milliseconds since epoch.
|
|
43
|
+
* @param input - The timestamp to normalize.
|
|
44
|
+
* @returns The normalized timestamp in milliseconds since epoch.
|
|
45
|
+
*/
|
|
46
|
+
function normalizeToMillis(input) {
|
|
47
|
+
if (!Number.isFinite(input)) return Date.now();
|
|
48
|
+
if (input > 0x2386f26fc10000) return Math.floor(input / 1e6);
|
|
49
|
+
if (input > 0x9184e72a000) return Math.floor(input / 1e3);
|
|
50
|
+
return Math.floor(input);
|
|
51
|
+
}
|
|
52
|
+
const NS_WIRE_THRESHOLD = 10000000000000000n;
|
|
53
|
+
const US_WIRE_THRESHOLD = 10000000000000n;
|
|
54
|
+
/**
|
|
55
|
+
* Normalizes a ledger-style uint64 wire timestamp to epoch milliseconds.
|
|
56
|
+
* Handles nanoseconds, microseconds, and milliseconds so gRPC and websocket
|
|
57
|
+
* payloads stay consistent even when the backend uses different units.
|
|
58
|
+
*/
|
|
59
|
+
function wireTimestampToMs(ts) {
|
|
60
|
+
if (ts === void 0 || ts === null) return 0;
|
|
61
|
+
if (typeof ts === "bigint") {
|
|
62
|
+
if (ts > NS_WIRE_THRESHOLD) return Number(ts / 1000000n);
|
|
63
|
+
if (ts > US_WIRE_THRESHOLD) return Number(ts / 1000n);
|
|
64
|
+
return Number(ts);
|
|
65
|
+
}
|
|
66
|
+
return normalizeToMillis(ts);
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { normalizeToMillis, tsNsToISO, tsNsToMs, tsObjToMs, tsObjToNsString, wireTimestampToMs };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","names":[],"sources":["../../src/utils/time.ts"],"sourcesContent":["// Time helpers for gRPC/Connect models.\n\n/**\n * Convert epoch nanoseconds (bigint or number) to ISO8601 string for display.\n * @param ts - The timestamp to convert to ISO8601 string.\n * @returns The ISO8601 string.\n */\nexport function tsNsToISO(ts: bigint | number | undefined): string {\n if (ts === undefined || ts === null) return \"\";\n if (typeof ts === \"bigint\") {\n // Convert ns -> ms for JS Date; risk of overflow is acceptable for display\n try {\n return new Date(Number(ts / 1000000n)).toISOString();\n } catch {\n return ts.toString();\n }\n }\n if (typeof ts === \"number\") {\n // If value looks like ns, downscale to ms\n const ms = ts > 1e12 ? Math.floor(ts / 1e6) : ts;\n return new Date(ms).toISOString();\n }\n return \"\";\n}\n\n/**\n * Convert epoch nanoseconds (bigint or number) to milliseconds since epoch.\n * @param ts - The timestamp to convert to milliseconds since epoch.\n * @returns The milliseconds since epoch.\n */\nexport function tsNsToMs(ts: bigint | number | undefined): number {\n if (ts === undefined || ts === null) return 0;\n if (typeof ts === \"bigint\") return Number(ts / 1000000n);\n if (typeof ts === \"number\") {\n // Treat as ns for consistency with tsNsToISO.\n return Math.floor(ts / 1e6);\n }\n return 0;\n}\n\n/**\n * Convert epoch nanoseconds (bigint or number) to whole seconds since epoch.\n * @param ts - The timestamp to convert to seconds since epoch.\n * @returns The seconds since epoch.\n */\nexport function tsNsToSeconds(ts: bigint | number | undefined): number {\n if (ts === undefined || ts === null) return 0;\n if (typeof ts === \"bigint\") return Number(ts / 1_000_000_000n);\n if (typeof ts === \"number\") {\n // Treat as ns for consistency with tsNsToISO.\n return Math.floor(ts / 1e9);\n }\n return 0;\n}\n\n/**\n * Converts a proto timestamp object to epoch milliseconds.\n */\ntype TimestampLike = { seconds?: bigint; nanos?: number };\ntype RequiredTimestampLike = { seconds: bigint; nanos?: number };\n\nexport function tsObjToMs(ts: RequiredTimestampLike): number;\nexport function tsObjToMs(ts: TimestampLike | undefined): number | undefined;\nexport function tsObjToMs(ts?: TimestampLike): number | undefined {\n if (ts === undefined) return undefined;\n if (ts.seconds === undefined) return undefined;\n const nanos = ts.nanos ?? 0;\n return Number(ts.seconds) * 1000 + Math.floor(nanos / 1_000_000);\n}\n\n/**\n * Converts a protobuf timestamp to an exact Unix-nanosecond decimal string.\n * Use this representation for reconciliation fields where millisecond\n * truncation could collapse two distinct updates.\n */\nexport function tsObjToNsString(ts: RequiredTimestampLike): string;\nexport function tsObjToNsString(ts: TimestampLike | undefined): string | undefined;\nexport function tsObjToNsString(ts?: TimestampLike): string | undefined {\n if (ts?.seconds === undefined) return undefined;\n return (ts.seconds * 1_000_000_000n + BigInt(ts.nanos ?? 0)).toString();\n}\n\n/**\n * Convert epoch microseconds (bigint or number) to milliseconds since epoch.\n */\nexport function tsUsToMs(ts: bigint | number | undefined): number {\n if (ts === undefined || ts === null) return 0;\n if (typeof ts === \"bigint\") return Number(ts / 1_000n);\n return Math.floor(ts / 1_000);\n}\n\n/**\n * Normalize a timestamp to milliseconds since epoch.\n * @param input - The timestamp to normalize.\n * @returns The normalized timestamp in milliseconds since epoch.\n */\nexport function normalizeToMillis(input: number): number {\n if (!Number.isFinite(input)) return Date.now();\n // Heuristics: ns -> /1e6, µs -> /1e3, ms -> as-is\n if (input > 1e16) return Math.floor(input / 1e6);\n if (input > 1e13) return Math.floor(input / 1e3);\n return Math.floor(input);\n}\n\nconst NS_WIRE_THRESHOLD = 10_000_000_000_000_000n;\nconst US_WIRE_THRESHOLD = 10_000_000_000_000n;\n\n/**\n * Normalizes a ledger-style uint64 wire timestamp to epoch milliseconds.\n * Handles nanoseconds, microseconds, and milliseconds so gRPC and websocket\n * payloads stay consistent even when the backend uses different units.\n */\nexport function wireTimestampToMs(ts: bigint | number | undefined): number {\n if (ts === undefined || ts === null) return 0;\n if (typeof ts === \"bigint\") {\n if (ts > NS_WIRE_THRESHOLD) return Number(ts / 1_000_000n);\n if (ts > US_WIRE_THRESHOLD) return Number(ts / 1_000n);\n return Number(ts);\n }\n return normalizeToMillis(ts);\n}\n"],"mappings":";;;;;;AAOA,SAAgB,UAAU,IAAyC;CAC/D,IAAI,OAAO,KAAA,KAAa,OAAO,MAAM,OAAO;CAC5C,IAAI,OAAO,OAAO,UAEd,IAAI;EACA,OAAO,IAAI,KAAK,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY;CACvD,QAAQ;EACJ,OAAO,GAAG,SAAS;CACvB;CAEJ,IAAI,OAAO,OAAO,UAAU;EAExB,MAAM,KAAK,KAAK,eAAO,KAAK,MAAM,KAAK,GAAG,IAAI;EAC9C,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,YAAY;CACpC;CACA,OAAO;AACX;;;;;;AAOA,SAAgB,SAAS,IAAyC;CAC9D,IAAI,OAAO,KAAA,KAAa,OAAO,MAAM,OAAO;CAC5C,IAAI,OAAO,OAAO,UAAU,OAAO,OAAO,KAAK,QAAQ;CACvD,IAAI,OAAO,OAAO,UAEd,OAAO,KAAK,MAAM,KAAK,GAAG;CAE9B,OAAO;AACX;AAyBA,SAAgB,UAAU,IAAwC;CAC9D,IAAI,OAAO,KAAA,GAAW,OAAO,KAAA;CAC7B,IAAI,GAAG,YAAY,KAAA,GAAW,OAAO,KAAA;CACrC,MAAM,QAAQ,GAAG,SAAS;CAC1B,OAAO,OAAO,GAAG,OAAO,IAAI,MAAO,KAAK,MAAM,QAAQ,GAAS;AACnE;AASA,SAAgB,gBAAgB,IAAwC;CACpE,IAAI,IAAI,YAAY,KAAA,GAAW,OAAO,KAAA;CACtC,QAAQ,GAAG,UAAU,cAAiB,OAAO,GAAG,SAAS,CAAC,EAAA,CAAG,SAAS;AAC1E;;;;;;AAgBA,SAAgB,kBAAkB,OAAuB;CACrD,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG,OAAO,KAAK,IAAI;CAE7C,IAAI,QAAQ,kBAAM,OAAO,KAAK,MAAM,QAAQ,GAAG;CAC/C,IAAI,QAAQ,eAAM,OAAO,KAAK,MAAM,QAAQ,GAAG;CAC/C,OAAO,KAAK,MAAM,KAAK;AAC3B;AAEA,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;;;;;;AAO1B,SAAgB,kBAAkB,IAAyC;CACvE,IAAI,OAAO,KAAA,KAAa,OAAO,MAAM,OAAO;CAC5C,IAAI,OAAO,OAAO,UAAU;EACxB,IAAI,KAAK,mBAAmB,OAAO,OAAO,KAAK,QAAU;EACzD,IAAI,KAAK,mBAAmB,OAAO,OAAO,KAAK,KAAM;EACrD,OAAO,OAAO,EAAE;CACpB;CACA,OAAO,kBAAkB,EAAE;AAC/B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/utils/timestamp.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a proto Timestamp from seconds and nanos parts.
|
|
4
|
+
*/
|
|
5
|
+
function toTimestamp({ seconds, nanos }) {
|
|
6
|
+
return {
|
|
7
|
+
seconds,
|
|
8
|
+
nanos
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Converts epoch nanoseconds to a proto Timestamp.
|
|
13
|
+
*/
|
|
14
|
+
function tsNsToTimestamp(tsNs) {
|
|
15
|
+
if (tsNs === void 0) return void 0;
|
|
16
|
+
return toTimestamp({
|
|
17
|
+
seconds: tsNs / 1000000000n,
|
|
18
|
+
nanos: Number(tsNs % 1000000000n)
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converts supported timestamp-like values to epoch milliseconds.
|
|
23
|
+
*/
|
|
24
|
+
function timestampToMs(value) {
|
|
25
|
+
if (value == null) return null;
|
|
26
|
+
if (value instanceof Date) {
|
|
27
|
+
const ms = value.getTime();
|
|
28
|
+
return Number.isFinite(ms) ? ms : null;
|
|
29
|
+
}
|
|
30
|
+
if (typeof value === "string") {
|
|
31
|
+
const ms = Date.parse(value);
|
|
32
|
+
return Number.isFinite(ms) ? ms : null;
|
|
33
|
+
}
|
|
34
|
+
if (typeof value !== "object") return null;
|
|
35
|
+
const timestamp = value;
|
|
36
|
+
const rawSeconds = timestamp.seconds;
|
|
37
|
+
const rawNanos = timestamp.nanos;
|
|
38
|
+
let seconds = null;
|
|
39
|
+
if (typeof rawSeconds === "bigint") seconds = Number(rawSeconds);
|
|
40
|
+
else if (typeof rawSeconds === "number") seconds = rawSeconds;
|
|
41
|
+
else if (typeof rawSeconds === "string" && rawSeconds.trim().length > 0) {
|
|
42
|
+
const parsed = Number(rawSeconds);
|
|
43
|
+
seconds = Number.isFinite(parsed) ? parsed : null;
|
|
44
|
+
}
|
|
45
|
+
if (seconds == null || !Number.isFinite(seconds)) return null;
|
|
46
|
+
const nanos = typeof rawNanos === "number" && Number.isFinite(rawNanos) ? rawNanos : 0;
|
|
47
|
+
return Math.trunc(seconds * 1e3 + nanos / 1e6);
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { timestampToMs, toTimestamp, tsNsToTimestamp };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamp.js","names":[],"sources":["../../src/utils/timestamp.ts"],"sourcesContent":["import type { Timestamp } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Creates a proto Timestamp from seconds and nanos parts.\n */\nexport function toTimestamp({ seconds, nanos }: { seconds: bigint; nanos: number }): Timestamp {\n return { seconds, nanos } as Timestamp;\n}\n\n/**\n * Converts epoch nanoseconds to a proto Timestamp.\n */\nexport function tsNsToTimestamp(tsNs: bigint | undefined): Timestamp | undefined {\n if (tsNs === undefined) return undefined;\n return toTimestamp({\n seconds: tsNs / 1_000_000_000n,\n nanos: Number(tsNs % 1_000_000_000n),\n });\n}\n\n/**\n * Converts supported timestamp-like values to epoch milliseconds.\n */\nexport function timestampToMs(value: unknown): number | null {\n if (value == null) return null;\n\n if (value instanceof Date) {\n const ms = value.getTime();\n return Number.isFinite(ms) ? ms : null;\n }\n\n if (typeof value === \"string\") {\n const ms = Date.parse(value);\n return Number.isFinite(ms) ? ms : null;\n }\n\n if (typeof value !== \"object\") return null;\n const timestamp = value as Record<string, unknown>;\n const rawSeconds = timestamp.seconds;\n const rawNanos = timestamp.nanos;\n\n let seconds: number | null = null;\n if (typeof rawSeconds === \"bigint\") {\n seconds = Number(rawSeconds);\n } else if (typeof rawSeconds === \"number\") {\n seconds = rawSeconds;\n } else if (typeof rawSeconds === \"string\" && rawSeconds.trim().length > 0) {\n const parsed = Number(rawSeconds);\n seconds = Number.isFinite(parsed) ? parsed : null;\n }\n if (seconds == null || !Number.isFinite(seconds)) return null;\n\n const nanos = typeof rawNanos === \"number\" && Number.isFinite(rawNanos) ? rawNanos : 0;\n return Math.trunc(seconds * 1000 + nanos / 1_000_000);\n}\n"],"mappings":";;;;AAKA,SAAgB,YAAY,EAAE,SAAS,SAAwD;CAC3F,OAAO;EAAE;EAAS;CAAM;AAC5B;;;;AAKA,SAAgB,gBAAgB,MAAiD;CAC7E,IAAI,SAAS,KAAA,GAAW,OAAO,KAAA;CAC/B,OAAO,YAAY;EACf,SAAS,OAAO;EAChB,OAAO,OAAO,OAAO,WAAc;CACvC,CAAC;AACL;;;;AAKA,SAAgB,cAAc,OAA+B;CACzD,IAAI,SAAS,MAAM,OAAO;CAE1B,IAAI,iBAAiB,MAAM;EACvB,MAAM,KAAK,MAAM,QAAQ;EACzB,OAAO,OAAO,SAAS,EAAE,IAAI,KAAK;CACtC;CAEA,IAAI,OAAO,UAAU,UAAU;EAC3B,MAAM,KAAK,KAAK,MAAM,KAAK;EAC3B,OAAO,OAAO,SAAS,EAAE,IAAI,KAAK;CACtC;CAEA,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,MAAM,YAAY;CAClB,MAAM,aAAa,UAAU;CAC7B,MAAM,WAAW,UAAU;CAE3B,IAAI,UAAyB;CAC7B,IAAI,OAAO,eAAe,UACtB,UAAU,OAAO,UAAU;MACxB,IAAI,OAAO,eAAe,UAC7B,UAAU;MACP,IAAI,OAAO,eAAe,YAAY,WAAW,KAAK,CAAC,CAAC,SAAS,GAAG;EACvE,MAAM,SAAS,OAAO,UAAU;EAChC,UAAU,OAAO,SAAS,MAAM,IAAI,SAAS;CACjD;CACA,IAAI,WAAW,QAAQ,CAAC,OAAO,SAAS,OAAO,GAAG,OAAO;CAEzD,MAAM,QAAQ,OAAO,aAAa,YAAY,OAAO,SAAS,QAAQ,IAAI,WAAW;CACrF,OAAO,KAAK,MAAM,UAAU,MAAO,QAAQ,GAAS;AACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/utils/types.ts"],"mappings":";KAAY;KACA,YAAY,KAAK,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"u128.d.ts","names":[],"sources":["../../src/utils/u128.ts"],"mappings":";KAMY;EACR;EACA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/utils/u128.ts
|
|
2
|
+
const U64_BITS = 64n;
|
|
3
|
+
const U64_MASK = (1n << U64_BITS) - 1n;
|
|
4
|
+
const U128_MAX = (1n << 128n) - 1n;
|
|
5
|
+
/**
|
|
6
|
+
* Convert a value to a bigint.
|
|
7
|
+
* @param v - The value to convert to a bigint.
|
|
8
|
+
* @returns The bigint.
|
|
9
|
+
*/
|
|
10
|
+
function toBig(v) {
|
|
11
|
+
if (v === void 0 || v === null) return 0n;
|
|
12
|
+
if (typeof v === "bigint") return v;
|
|
13
|
+
if (typeof v === "number") return BigInt(v);
|
|
14
|
+
if (typeof v === "string" && v.length > 0) try {
|
|
15
|
+
return BigInt(v);
|
|
16
|
+
} catch {
|
|
17
|
+
return 0n;
|
|
18
|
+
}
|
|
19
|
+
return 0n;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Convert a {hi, lo} object (or compatible) into a single bigint.
|
|
23
|
+
* @param u - The object to convert to a bigint.
|
|
24
|
+
* @returns The bigint.
|
|
25
|
+
*/
|
|
26
|
+
function fromU128(u) {
|
|
27
|
+
if (!u) return 0n;
|
|
28
|
+
const hi = toBig(u.hi);
|
|
29
|
+
const lo = toBig(u.lo);
|
|
30
|
+
return (hi << U64_BITS) + lo;
|
|
31
|
+
}
|
|
32
|
+
/** Convert a non-negative bigint into the protobuf U128 hi/lo representation. */
|
|
33
|
+
function toU128(value) {
|
|
34
|
+
if (value < 0n || value > U128_MAX) throw new RangeError("U128 value must be between 0 and 2^128 - 1.");
|
|
35
|
+
return {
|
|
36
|
+
hi: value >> U64_BITS,
|
|
37
|
+
lo: value & U64_MASK
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { fromU128, toBig, toU128 };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=u128.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"u128.js","names":[],"sources":["../../src/utils/u128.ts"],"sourcesContent":["// Utility helpers for working with 128-bit unsigned integers encoded as hi/lo.\n\nconst U64_BITS = 64n;\nconst U64_MASK = (1n << U64_BITS) - 1n;\nconst U128_MAX = (1n << 128n) - 1n;\n\nexport type U128Value = {\n hi: bigint;\n lo: bigint;\n};\n\n/**\n * Convert a value to a bigint.\n * @param v - The value to convert to a bigint.\n * @returns The bigint.\n */\nexport function toBig(v: unknown): bigint {\n if (v === undefined || v === null) return 0n;\n if (typeof v === \"bigint\") return v;\n if (typeof v === \"number\") return BigInt(v);\n if (typeof v === \"string\" && v.length > 0) {\n try {\n return BigInt(v);\n } catch {\n return 0n;\n }\n }\n return 0n;\n}\n\n/**\n * Convert a {hi, lo} object (or compatible) into a single bigint.\n * @param u - The object to convert to a bigint.\n * @returns The bigint.\n */\nexport function fromU128(u: U128Value | undefined): bigint {\n if (!u) return 0n;\n const hi = toBig(u.hi);\n const lo = toBig(u.lo);\n return (hi << U64_BITS) + lo;\n}\n\n/** Convert a non-negative bigint into the protobuf U128 hi/lo representation. */\nexport function toU128(value: bigint): U128Value {\n if (value < 0n || value > U128_MAX) {\n throw new RangeError(\"U128 value must be between 0 and 2^128 - 1.\");\n }\n return {\n hi: value >> U64_BITS,\n lo: value & U64_MASK,\n };\n}\n\n/**\n * Convert a bigint and scale into a decimal string.\n * @param value - The value to convert to a decimal string.\n * @param scale - The scale to convert the value to.\n * @returns The decimal string.\n */\nexport function u128ToDecimal(value: bigint, scale: number): string {\n if (scale <= 0) return value.toString();\n const base = 10n ** BigInt(scale);\n const i = value / base;\n const f = value % base;\n return `${i}.${f.toString().padStart(scale, \"0\")}`;\n}\n"],"mappings":";AAEA,MAAM,WAAW;AACjB,MAAM,YAAY,MAAM,YAAY;AACpC,MAAM,YAAY,MAAM,QAAQ;;;;;;AAYhC,SAAgB,MAAM,GAAoB;CACtC,IAAI,MAAM,KAAA,KAAa,MAAM,MAAM,OAAO;CAC1C,IAAI,OAAO,MAAM,UAAU,OAAO;CAClC,IAAI,OAAO,MAAM,UAAU,OAAO,OAAO,CAAC;CAC1C,IAAI,OAAO,MAAM,YAAY,EAAE,SAAS,GACpC,IAAI;EACA,OAAO,OAAO,CAAC;CACnB,QAAQ;EACJ,OAAO;CACX;CAEJ,OAAO;AACX;;;;;;AAOA,SAAgB,SAAS,GAAkC;CACvD,IAAI,CAAC,GAAG,OAAO;CACf,MAAM,KAAK,MAAM,EAAE,EAAE;CACrB,MAAM,KAAK,MAAM,EAAE,EAAE;CACrB,QAAQ,MAAM,YAAY;AAC9B;;AAGA,SAAgB,OAAO,OAA0B;CAC7C,IAAI,QAAQ,MAAM,QAAQ,UACtB,MAAM,IAAI,WAAW,6CAA6C;CAEtE,OAAO;EACH,IAAI,SAAS;EACb,IAAI,QAAQ;CAChB;AACJ"}
|