@polyester/sdk 0.3.0 → 0.4.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 +44 -0
- package/README.md +63 -17
- package/dist/_virtual/_rolldown/runtime.js +15 -1
- package/dist/account-signer/types.d.ts.map +1 -1
- package/dist/account-signer/types.js +6 -3
- package/dist/account-signer/types.js.map +1 -1
- package/dist/browser-client.d.ts +4 -2
- package/dist/browser-client.d.ts.map +1 -1
- package/dist/browser-client.js +3 -4
- package/dist/browser-client.js.map +1 -1
- package/dist/catalogs/client-catalog.d.ts.map +1 -1
- package/dist/catalogs/client-catalog.js +11 -4
- package/dist/catalogs/client-catalog.js.map +1 -1
- package/dist/catalogs/index.js +1 -1
- package/dist/catalogs/readers.d.ts.map +1 -1
- package/dist/catalogs/readers.js +3 -1
- package/dist/catalogs/readers.js.map +1 -1
- package/dist/catalogs/snapshot-validation.js +132 -0
- package/dist/catalogs/snapshot-validation.js.map +1 -0
- package/dist/catalogs/snapshot.d.ts.map +1 -1
- package/dist/catalogs/snapshot.js +16 -7
- package/dist/catalogs/snapshot.js.map +1 -1
- package/dist/catalogs/zipper-supply.d.ts.map +1 -1
- package/dist/catalogs/zipper-supply.js +10 -7
- package/dist/catalogs/zipper-supply.js.map +1 -1
- package/dist/core-client.d.ts +24 -17
- package/dist/core-client.d.ts.map +1 -1
- package/dist/core-client.js +21 -3
- package/dist/core-client.js.map +1 -1
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +32 -1
- package/dist/environment.js.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +7 -0
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/realtime/client.js +13 -2
- package/dist/realtime/client.js.map +1 -1
- package/dist/realtime/snapshot-then-stream.js +1 -1
- package/dist/realtime/snapshot-then-stream.js.map +1 -1
- package/dist/realtime/types.d.ts +2 -0
- package/dist/realtime/types.d.ts.map +1 -1
- package/dist/server-client.d.ts +17 -8
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +8 -11
- package/dist/server-client.js.map +1 -1
- package/dist/services/accounts/accounts.js +3 -3
- package/dist/services/accounts/accounts.js.map +1 -1
- package/dist/services/accounts/accounts.schemas.d.ts +13 -13
- package/dist/services/accounts/accounts.schemas.d.ts.map +1 -1
- package/dist/services/accounts/accounts.schemas.js +11 -11
- package/dist/services/accounts/accounts.schemas.js.map +1 -1
- package/dist/services/address-book/address-book.js +28 -28
- package/dist/services/address-book/address-book.js.map +1 -1
- package/dist/services/address-book/address-book.schemas.d.ts +751 -751
- package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
- package/dist/services/address-book/address-book.schemas.js +160 -160
- package/dist/services/address-book/address-book.schemas.js.map +1 -1
- package/dist/services/api-keys/api-keys.d.ts +6 -6
- package/dist/services/api-keys/api-keys.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.js +12 -12
- package/dist/services/api-keys/api-keys.js.map +1 -1
- package/dist/services/api-keys/api-keys.schemas.d.ts +62 -62
- package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -1
- package/dist/services/api-keys/api-keys.schemas.js +34 -34
- package/dist/services/api-keys/api-keys.schemas.js.map +1 -1
- package/dist/services/auth/auth.d.ts +46 -40
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +28 -25
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/profile/profile.d.ts +2 -2
- package/dist/services/auth/profile/profile.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.js +7 -7
- package/dist/services/auth/profile/profile.js.map +1 -1
- package/dist/services/auth/profile/profile.schemas.d.ts +41 -41
- package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -1
- package/dist/services/auth/profile/profile.schemas.js +27 -27
- package/dist/services/auth/profile/profile.schemas.js.map +1 -1
- package/dist/services/auth/session.d.ts +1 -1
- package/dist/services/auth/session.d.ts.map +1 -1
- package/dist/services/auth/session.js +6 -2
- package/dist/services/auth/session.js.map +1 -1
- package/dist/services/auth/session.schemas.js +17 -17
- package/dist/services/auth/session.schemas.js.map +1 -1
- package/dist/services/auth/session.types.d.ts +3 -2
- package/dist/services/auth/session.types.d.ts.map +1 -1
- package/dist/services/balances/balances.d.ts +1 -1
- package/dist/services/balances/balances.js +9 -9
- package/dist/services/balances/balances.js.map +1 -1
- package/dist/services/balances/balances.schemas.d.ts +95 -95
- package/dist/services/balances/balances.schemas.d.ts.map +1 -1
- package/dist/services/balances/balances.schemas.js +61 -61
- package/dist/services/balances/balances.schemas.js.map +1 -1
- package/dist/services/candles/candles.js +12 -12
- package/dist/services/candles/candles.js.map +1 -1
- package/dist/services/candles/candles.schemas.d.ts +64 -64
- package/dist/services/candles/candles.schemas.d.ts.map +1 -1
- package/dist/services/candles/candles.schemas.js +47 -48
- package/dist/services/candles/candles.schemas.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.js +7 -7
- package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +68 -68
- package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
- package/dist/services/chain-analytics/chain-analytics.schemas.js +29 -29
- package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
- package/dist/services/deposit/deposit.js +5 -5
- package/dist/services/deposit/deposit.js.map +1 -1
- package/dist/services/deposit/deposit.schemas.d.ts +17 -17
- package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
- package/dist/services/deposit/deposit.schemas.js +11 -11
- package/dist/services/deposit/deposit.schemas.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.js +13 -13
- package/dist/services/guard-signer/guard-signer.js.map +1 -1
- package/dist/services/guard-signer/guard-signer.schemas.d.ts +75 -75
- package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
- package/dist/services/guard-signer/guard-signer.schemas.js +42 -42
- package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
- package/dist/services/heatmap/heatmap.js +9 -9
- package/dist/services/heatmap/heatmap.js.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.d.ts +141 -141
- package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.js +47 -47
- package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.js +3 -3
- package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +53 -53
- package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
- package/dist/services/internal-transfers/internal-transfers.schemas.js +27 -27
- package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.js +10 -10
- package/dist/services/lifecycle/lifecycle.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +614 -614
- package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.js +146 -146
- package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -1
- package/dist/services/market-data/market-data.js +6 -6
- package/dist/services/market-data/market-data.js.map +1 -1
- package/dist/services/market-data/market-data.schemas.d.ts +20 -20
- package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
- package/dist/services/market-data/market-data.schemas.js +51 -55
- package/dist/services/market-data/market-data.schemas.js.map +1 -1
- package/dist/services/market-overview/market-overview.d.ts +1 -1
- package/dist/services/market-overview/market-overview.js +5 -5
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts +39 -36
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.js +34 -32
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
- package/dist/services/mfa/mfa.js +27 -27
- package/dist/services/mfa/mfa.js.map +1 -1
- package/dist/services/mfa/mfa.schemas.d.ts +206 -206
- package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
- package/dist/services/mfa/mfa.schemas.js +83 -83
- package/dist/services/mfa/mfa.schemas.js.map +1 -1
- package/dist/services/orderbook/orderbook.d.ts +2 -2
- package/dist/services/orderbook/orderbook.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.js +5 -5
- package/dist/services/orderbook/orderbook.js.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.d.ts +23 -23
- package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.js +15 -15
- package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
- package/dist/services/orders/order-errors.schemas.d.ts +18 -18
- package/dist/services/orders/order-errors.schemas.d.ts.map +1 -1
- package/dist/services/orders/order-errors.schemas.js +8 -8
- package/dist/services/orders/order-errors.schemas.js.map +1 -1
- package/dist/services/orders/orders-batch.schemas.d.ts +492 -492
- package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-batch.schemas.js +118 -118
- package/dist/services/orders/orders-batch.schemas.js.map +1 -1
- package/dist/services/orders/orders-identifiers.schemas.js +5 -5
- package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +657 -648
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-input.schemas.js +100 -96
- package/dist/services/orders/orders-input.schemas.js.map +1 -1
- package/dist/services/orders/orders-modify.schemas.d.ts +370 -351
- package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-modify.schemas.js +48 -44
- package/dist/services/orders/orders-modify.schemas.js.map +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +179 -179
- package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-output.schemas.js +49 -49
- package/dist/services/orders/orders-output.schemas.js.map +1 -1
- package/dist/services/orders/orders-risk.schemas.d.ts +226 -226
- package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-risk.schemas.js +69 -69
- package/dist/services/orders/orders-risk.schemas.js.map +1 -1
- package/dist/services/orders/orders.d.ts +8 -8
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +44 -32
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts +6 -6
- package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.js +11 -11
- package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +105 -105
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +49 -49
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -1
- package/dist/services/policies/shared.d.ts +5 -5
- package/dist/services/policies/shared.d.ts.map +1 -1
- package/dist/services/policies/shared.js +10 -10
- package/dist/services/policies/shared.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +6 -6
- package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.js +13 -13
- package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +124 -124
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +75 -75
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
- package/dist/services/shared.js +11 -11
- package/dist/services/shared.js.map +1 -1
- package/dist/services/social-verification/social-verification.d.ts +3 -3
- package/dist/services/social-verification/social-verification.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.js +7 -7
- package/dist/services/social-verification/social-verification.js.map +1 -1
- package/dist/services/social-verification/social-verification.schemas.d.ts +54 -54
- package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
- package/dist/services/social-verification/social-verification.schemas.js +28 -28
- package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
- package/dist/services/subaccount-resolver.js +5 -3
- package/dist/services/subaccount-resolver.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.d.ts +15 -15
- package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.js +35 -35
- package/dist/services/subaccounts/subaccounts.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +137 -137
- package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.js +72 -72
- package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
- package/dist/services/trades/trades.d.ts +2 -2
- package/dist/services/trades/trades.d.ts.map +1 -1
- package/dist/services/trades/trades.js +5 -5
- package/dist/services/trades/trades.js.map +1 -1
- package/dist/services/trades/trades.schemas.d.ts +31 -31
- package/dist/services/trades/trades.schemas.d.ts.map +1 -1
- package/dist/services/trades/trades.schemas.js +24 -24
- package/dist/services/trades/trades.schemas.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.js +8 -8
- package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +45 -45
- package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js +36 -36
- package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
- package/dist/services/transfers/transfers.d.ts +1 -1
- package/dist/services/transfers/transfers.d.ts.map +1 -1
- package/dist/services/transfers/transfers.js +5 -5
- package/dist/services/transfers/transfers.js.map +1 -1
- package/dist/services/transfers/transfers.schemas.d.ts +42 -42
- package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
- package/dist/services/transfers/transfers.schemas.js +30 -30
- package/dist/services/transfers/transfers.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-child-order.schemas.js +23 -23
- package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +226 -226
- package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.js +53 -53
- package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.d.ts +218 -218
- package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.js +152 -152
- package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
- package/dist/services/triggers/triggers.js +21 -21
- package/dist/services/triggers/triggers.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.js +15 -15
- package/dist/services/whiteboard/whiteboard.js.map +1 -1
- package/dist/services/whiteboard/whiteboard.schemas.d.ts +379 -379
- package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -1
- package/dist/services/whiteboard/whiteboard.schemas.js +71 -71
- package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -1
- package/dist/services/zipper/zipper.js +3 -3
- package/dist/services/zipper/zipper.js.map +1 -1
- package/dist/services/zipper/zipper.schemas.d.ts +1 -1
- package/dist/services/zipper/zipper.schemas.js +54 -54
- package/dist/services/zipper/zipper.schemas.js.map +1 -1
- package/dist/shared/account-scope.d.ts +6 -6
- package/dist/shared/account-scope.d.ts.map +1 -1
- package/dist/shared/account-scope.js +3 -3
- package/dist/shared/account-scope.js.map +1 -1
- package/dist/shared/connect-error-mapping.d.ts +1 -1
- package/dist/shared/connect-error-mapping.js +29 -3
- package/dist/shared/connect-error-mapping.js.map +1 -1
- package/dist/shared/rate-limit.schemas.d.ts +12 -12
- package/dist/shared/rate-limit.schemas.d.ts.map +1 -1
- package/dist/shared/rate-limit.schemas.js +7 -7
- package/dist/shared/rate-limit.schemas.js.map +1 -1
- package/dist/shared/schemas.js +26 -26
- package/dist/shared/schemas.js.map +1 -1
- package/dist/shared/transports.js +7 -12
- package/dist/shared/transports.js.map +1 -1
- package/dist/shared/types.d.ts +12 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/validation.d.ts +14 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +24 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/utils/connect-order-errors.js +2 -2
- package/dist/utils/connect-order-errors.js.map +1 -1
- package/dist/utils/cookies.d.ts +8 -3
- package/dist/utils/cookies.d.ts.map +1 -1
- package/dist/utils/cookies.js +7 -1
- package/dist/utils/cookies.js.map +1 -1
- package/dist/utils/event-emitter.d.ts +1 -1
- package/dist/utils/event-emitter.d.ts.map +1 -1
- package/dist/utils/event-emitter.js +4 -2
- package/dist/utils/event-emitter.js.map +1 -1
- package/dist/utils/evm.js +2 -2
- package/dist/utils/evm.js.map +1 -1
- package/dist/utils/jwt.d.ts +2 -2
- package/dist/utils/jwt.d.ts.map +1 -1
- package/dist/utils/jwt.js +2 -2
- package/dist/utils/jwt.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @polyester/sdk
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Standardize market-data limits as positive integers, reject string and invalid candle or trade limits, and require a valid orderbook heatmap limit before sending requests.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Return exact nanosecond timestamp strings and epoch-millisecond timestamps from single-order cancel and modify operations.
|
|
12
|
+
|
|
13
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Preserve server-side bearer authentication when the display-session cookie is missing or invalid, and discard it when an explicit display session belongs to another environment.
|
|
14
|
+
|
|
15
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Clarify that single-order cancellation acknowledges the request and requires lifecycle reconciliation, while missing targets remain not-found errors.
|
|
16
|
+
|
|
17
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Document that realtime callers must wait for `onOpen` before issuing writes whose events they need to observe.
|
|
18
|
+
|
|
19
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Allow transfer history to be listed without an input object and return an SDK validation error for null account-scoped inputs.
|
|
20
|
+
|
|
21
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Accept Next.js-style cookie getters when creating server clients.
|
|
22
|
+
|
|
23
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Reject malformed client, environment, account signer, and catalog configuration with SDK error types before constructing clients or marking catalog snapshots fresh.
|
|
24
|
+
|
|
25
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Isolate synchronously thrown auth event listener errors so one failing listener cannot reject a completed auth operation or prevent later listeners from running.
|
|
26
|
+
|
|
27
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Return login nonce expiration timestamps as JSON-safe epoch-millisecond numbers instead of raw protobuf timestamp objects.
|
|
28
|
+
|
|
29
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Route private realtime subscription authentication failures through `onError` when provided, and throw from `subscribe()` when no error observer exists.
|
|
30
|
+
|
|
31
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Return `null` from `orders.getDetails` when the backend reports that the requested order was not found.
|
|
32
|
+
|
|
33
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - fix(auth): prevent malformed hex credentials from appearing in configuration error messages.
|
|
34
|
+
|
|
35
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Return `false` from `isJwtValid` for non-string values instead of throwing.
|
|
36
|
+
|
|
37
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Validate subaccount activity limits and balance-history ledger IDs as non-negative integers before serializing requests.
|
|
38
|
+
|
|
39
|
+
- [#54](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/54) [`b1d07ad`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/b1d07ad58e7f691cbf0df32e5905bd679c1adfd6) Thanks [@huntabyte](https://github.com/huntabyte)! - Translate schema validation, authentication, RPC, and network failures into the documented `PolyesterError` hierarchy.
|
|
40
|
+
|
|
41
|
+
## 0.3.1
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- [#52](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/52) [`4d78227`](https://github.com/Fabric-Labs/polyester-sdk-typescript/commit/4d78227aa61b426e3ab8c0ac9bff6225a7865d42) Thanks [@aiiven](https://github.com/aiiven)! - feat(market-overview): expose the current multi-venue index price on market overview rows.
|
|
46
|
+
|
|
3
47
|
## 0.3.0
|
|
4
48
|
|
|
5
49
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -59,8 +59,30 @@ if (client.hasUsableBearerToken) {
|
|
|
59
59
|
}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
Framework cookie stores are accepted too. Await asynchronous helpers before
|
|
63
|
+
passing the store. For example, with current Next.js versions:
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { cookies } from "next/headers";
|
|
67
|
+
import {
|
|
68
|
+
createPolyesterServerClientFromCookies,
|
|
69
|
+
POLYESTER_TESTNET_ENVIRONMENT,
|
|
70
|
+
} from "@polyester/sdk";
|
|
71
|
+
|
|
72
|
+
const client = createPolyesterServerClientFromCookies({
|
|
73
|
+
cookies: await cookies(),
|
|
74
|
+
environment: POLYESTER_TESTNET_ENVIRONMENT,
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
This factory accepts a `Request`, a `{ [name]: value }` record, or a synchronous
|
|
79
|
+
`.get(name)` store that returns either the cookie value or an object containing
|
|
80
|
+
the value.
|
|
81
|
+
|
|
82
|
+
The `polyester_auth_token` bearer cookie is read independently from the
|
|
83
|
+
`polyester_session_3` cookie. The latter contains unsigned display data for UI
|
|
84
|
+
hydration; it is not proof of authentication. The backend still verifies the
|
|
85
|
+
bearer token and authorizes every call.
|
|
64
86
|
|
|
65
87
|
For machine clients, pass an Ed25519 API key provider instead of a cookie
|
|
66
88
|
session:
|
|
@@ -80,28 +102,52 @@ const client = new PolyesterClient({
|
|
|
80
102
|
|
|
81
103
|
## Realtime
|
|
82
104
|
|
|
83
|
-
Subscriptions return their own unsubscribe
|
|
84
|
-
|
|
105
|
+
Subscriptions start connecting immediately and return their own unsubscribe
|
|
106
|
+
function. The return value does not mean the channel is open. Wait for the first
|
|
107
|
+
`onOpen` callback to avoid the initial startup gap. This does not guarantee
|
|
108
|
+
delivery across a later disconnect; applications that require continuity must
|
|
109
|
+
reconcile after connection gaps. `onOpen` can run again after a successful
|
|
110
|
+
reconnect, so keep one-time writes outside the callback itself.
|
|
85
111
|
|
|
86
112
|
```ts
|
|
87
|
-
const unsubscribe =
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
113
|
+
const unsubscribe = await new Promise<() => void>((resolve, reject) => {
|
|
114
|
+
let stop = () => {};
|
|
115
|
+
let pending = true;
|
|
116
|
+
|
|
117
|
+
stop = client.orders.subscribe({
|
|
118
|
+
accountId,
|
|
119
|
+
onOpen: () => {
|
|
120
|
+
if (!pending) return;
|
|
121
|
+
pending = false;
|
|
122
|
+
resolve(stop);
|
|
123
|
+
},
|
|
124
|
+
onEvent: (order) => console.log(order.orderId, order.status),
|
|
125
|
+
onError: (ctx) => {
|
|
126
|
+
console.warn(ctx.channel, ctx.error);
|
|
127
|
+
if (!pending) return;
|
|
128
|
+
pending = false;
|
|
129
|
+
stop();
|
|
130
|
+
reject(ctx.error);
|
|
131
|
+
},
|
|
132
|
+
});
|
|
91
133
|
});
|
|
134
|
+
|
|
135
|
+
await client.orders.create(order);
|
|
92
136
|
```
|
|
93
137
|
|
|
138
|
+
Call `unsubscribe()` when the subscription is no longer needed.
|
|
139
|
+
|
|
94
140
|
## Entry points
|
|
95
141
|
|
|
96
|
-
| Import
|
|
97
|
-
|
|
|
98
|
-
| `@polyester/sdk`
|
|
99
|
-
| `@polyester/sdk/errors`
|
|
100
|
-
| `@polyester/sdk/account-signer` | `createPolyesterAccountSigner`
|
|
101
|
-
| `@polyester/sdk/smart-account`
|
|
102
|
-
| `@polyester/sdk/catalogs`
|
|
103
|
-
| `@polyester/sdk/server-session` | cookie parsing without the client graph
|
|
104
|
-
| `@polyester/sdk/unstable/gen`
|
|
142
|
+
| Import | Contains |
|
|
143
|
+
| ------------------------------- | ----------------------------------------------- |
|
|
144
|
+
| `@polyester/sdk` | clients, environments, errors, types |
|
|
145
|
+
| `@polyester/sdk/errors` | error classes and codes on their own |
|
|
146
|
+
| `@polyester/sdk/account-signer` | `createPolyesterAccountSigner` |
|
|
147
|
+
| `@polyester/sdk/smart-account` | UserOperations and on-chain smart account calls |
|
|
148
|
+
| `@polyester/sdk/catalogs` | symbol catalog and decimal scales |
|
|
149
|
+
| `@polyester/sdk/server-session` | cookie parsing without the client graph |
|
|
150
|
+
| `@polyester/sdk/unstable/gen` | raw protobuf types and service descriptors |
|
|
105
151
|
|
|
106
152
|
`account-signer` and `smart-account` are separate subpaths on purpose. Both pull
|
|
107
153
|
in a large viem graph, and keeping them out of the root barrel means the app
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
//#region \0rolldown/runtime.js
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3
6
|
var __exportAll = (all, no_symbols) => {
|
|
4
7
|
let target = {};
|
|
5
8
|
for (var name in all) __defProp(target, name, {
|
|
@@ -9,5 +12,16 @@ var __exportAll = (all, no_symbols) => {
|
|
|
9
12
|
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
10
13
|
return target;
|
|
11
14
|
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
17
|
+
key = keys[i];
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
19
|
+
get: ((k) => from[k]).bind(null, key),
|
|
20
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return to;
|
|
24
|
+
};
|
|
25
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
12
26
|
//#endregion
|
|
13
|
-
export { __exportAll };
|
|
27
|
+
export { __exportAll, __reExport };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/account-signer/types.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/account-signer/types.ts"],"mappings":";;KAIY;;;;;;;UAQK;;WAEJ;;WAGA,gBAAgB;;WAGhB,eAAe;;EAGxB,YAAY,kBAAkB,QAAQ;;;;;;KAO9B,6BAA6B,uBAAuB,QAAQ;;;;;KAM5D,sBAAsB,gBAAgB;;;;iBAKlC,uBACZ,QAAQ,sBACT,UAAU;;;;iBA4BS,qBAClB,QAAQ,kCACT,QAAQ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ConfigurationError } from "../shared/errors.js";
|
|
1
2
|
import { isEvmAddress } from "../utils/evm.js";
|
|
2
3
|
//#region src/account-signer/types.ts
|
|
3
4
|
/**
|
|
@@ -10,9 +11,11 @@ function isAccountSignerFactory(config) {
|
|
|
10
11
|
* Asserts that a value implements the account signer contract.
|
|
11
12
|
*/
|
|
12
13
|
function assertAccountSigner(value) {
|
|
13
|
-
if (
|
|
14
|
-
if (!
|
|
15
|
-
if (
|
|
14
|
+
if (typeof value !== "object" || value === null) throw new ConfigurationError("Account signer must be an object or factory function.");
|
|
15
|
+
if (!value.environmentFingerprint) throw new ConfigurationError("Account signer must include an environmentFingerprint.");
|
|
16
|
+
if (!isEvmAddress(value.accountAddress)) throw new ConfigurationError("Account signer must include a valid accountAddress.");
|
|
17
|
+
if (value.ownerAddress && !isEvmAddress(value.ownerAddress)) throw new ConfigurationError("Account signer ownerAddress must be a valid address.");
|
|
18
|
+
if (typeof value.signMessage !== "function") throw new ConfigurationError("Account signer must include a signMessage function.");
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
21
|
* Helper to resolve an account signer from config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/account-signer/types.ts"],"sourcesContent":["import type { Hex } from \"viem\";\nimport { isEvmAddress } from \"../utils/evm.js\";\n\nexport type HexAddress = `0x${string}`;\n\n/**\n * Minimal account signer interface for SDK operations.\n *\n * The SDK authenticates the Polyester smart account address. The owner address\n * is optional metadata about the EOA or custody provider that controls it.\n */\nexport interface AccountSigner {\n /** Fingerprint of the PolyesterEnvironment this signer was created for */\n readonly environmentFingerprint: string;\n\n /** The smart account address (used for authentication and trading) */\n readonly accountAddress: HexAddress;\n\n /** The owner/EOA address (optional metadata about the controlling signer) */\n readonly ownerAddress?: HexAddress;\n\n /** Sign a message and return the signature */\n signMessage(message: string): Promise<Hex>;\n}\n\n/**\n * Factory function type for lazy account signer initialization.\n * Useful when the signer might not be available at client creation time.\n */\nexport type AccountSignerFactory = () => AccountSigner | null | Promise<AccountSigner | null>;\n\n/**\n * Account signer configuration for the client.\n * Can be a signer instance or a factory for lazy initialization.\n */\nexport type AccountSignerConfig = AccountSigner | AccountSignerFactory;\n\n/**\n * Helper to check if an account signer config is a factory function.\n */\nexport function isAccountSignerFactory(\n config: AccountSignerConfig,\n): config is AccountSignerFactory {\n return typeof config === \"function\";\n}\n\n/**\n * Asserts that a value implements the account signer contract.\n */\nexport function assertAccountSigner(value: AccountSigner): void {\n if (!value.environmentFingerprint) {\n throw new
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/account-signer/types.ts"],"sourcesContent":["import type { Hex } from \"viem\";\nimport { isEvmAddress } from \"../utils/evm.js\";\nimport { ConfigurationError } from \"../shared/errors.js\";\n\nexport type HexAddress = `0x${string}`;\n\n/**\n * Minimal account signer interface for SDK operations.\n *\n * The SDK authenticates the Polyester smart account address. The owner address\n * is optional metadata about the EOA or custody provider that controls it.\n */\nexport interface AccountSigner {\n /** Fingerprint of the PolyesterEnvironment this signer was created for */\n readonly environmentFingerprint: string;\n\n /** The smart account address (used for authentication and trading) */\n readonly accountAddress: HexAddress;\n\n /** The owner/EOA address (optional metadata about the controlling signer) */\n readonly ownerAddress?: HexAddress;\n\n /** Sign a message and return the signature */\n signMessage(message: string): Promise<Hex>;\n}\n\n/**\n * Factory function type for lazy account signer initialization.\n * Useful when the signer might not be available at client creation time.\n */\nexport type AccountSignerFactory = () => AccountSigner | null | Promise<AccountSigner | null>;\n\n/**\n * Account signer configuration for the client.\n * Can be a signer instance or a factory for lazy initialization.\n */\nexport type AccountSignerConfig = AccountSigner | AccountSignerFactory;\n\n/**\n * Helper to check if an account signer config is a factory function.\n */\nexport function isAccountSignerFactory(\n config: AccountSignerConfig,\n): config is AccountSignerFactory {\n return typeof config === \"function\";\n}\n\n/**\n * Asserts that a value implements the account signer contract.\n */\nexport function assertAccountSigner(value: AccountSigner): void {\n if (typeof value !== \"object\" || value === null) {\n throw new ConfigurationError(\"Account signer must be an object or factory function.\");\n }\n if (!value.environmentFingerprint) {\n throw new ConfigurationError(\"Account signer must include an environmentFingerprint.\");\n }\n if (!isEvmAddress(value.accountAddress)) {\n throw new ConfigurationError(\"Account signer must include a valid accountAddress.\");\n }\n if (value.ownerAddress && !isEvmAddress(value.ownerAddress)) {\n throw new ConfigurationError(\"Account signer ownerAddress must be a valid address.\");\n }\n if (typeof value.signMessage !== \"function\") {\n throw new ConfigurationError(\"Account signer must include a signMessage function.\");\n }\n}\n\n/**\n * Helper to resolve an account signer from config.\n */\nexport async function resolveAccountSigner(\n config: AccountSignerConfig | undefined,\n): Promise<AccountSigner | null> {\n if (!config) return null;\n const accountSigner = isAccountSignerFactory(config) ? await config() : config;\n if (accountSigner) assertAccountSigner(accountSigner);\n return accountSigner;\n}\n"],"mappings":";;;;;;AAyCA,SAAgB,uBACZ,QAC8B;CAC9B,OAAO,OAAO,WAAW;AAC7B;;;;AAKA,SAAgB,oBAAoB,OAA4B;CAC5D,IAAI,OAAO,UAAU,YAAY,UAAU,MACvC,MAAM,IAAI,mBAAmB,uDAAuD;CAExF,IAAI,CAAC,MAAM,wBACP,MAAM,IAAI,mBAAmB,wDAAwD;CAEzF,IAAI,CAAC,aAAa,MAAM,cAAc,GAClC,MAAM,IAAI,mBAAmB,qDAAqD;CAEtF,IAAI,MAAM,gBAAgB,CAAC,aAAa,MAAM,YAAY,GACtD,MAAM,IAAI,mBAAmB,sDAAsD;CAEvF,IAAI,OAAO,MAAM,gBAAgB,YAC7B,MAAM,IAAI,mBAAmB,qDAAqD;AAE1F;;;;AAKA,eAAsB,qBAClB,QAC6B;CAC7B,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,gBAAgB,uBAAuB,MAAM,IAAI,MAAM,OAAO,IAAI;CACxE,IAAI,eAAe,oBAAoB,aAAa;CACpD,OAAO;AACX"}
|
package/dist/browser-client.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ import { PolyesterClient, PolyesterClientBaseConfig } from "./core-client.js";
|
|
|
4
4
|
import { AuthTokenStorage } from "./services/auth/token-storage.js";
|
|
5
5
|
import { AccountSignerAuthService } from "./services/auth/account-signer-auth.js";
|
|
6
6
|
//#region src/browser-client.d.ts
|
|
7
|
-
|
|
7
|
+
type BrowserClientBaseConfig<TConfig> = TConfig extends PolyesterClientBaseConfig ? Omit<TConfig, "auth"> : never;
|
|
8
|
+
/** Configuration for the browser Polyester client. */
|
|
9
|
+
type PolyesterBrowserClientConfig = BrowserClientBaseConfig<PolyesterClientBaseConfig> & {
|
|
8
10
|
/**
|
|
9
11
|
* Account signer interface for authentication.
|
|
10
12
|
* Pass a signer object or a factory function for lazy initialization.
|
|
@@ -15,7 +17,7 @@ interface PolyesterBrowserClientConfig extends Omit<PolyesterClientBaseConfig, "
|
|
|
15
17
|
* Use createCookieAuthTokenStorage() to opt into reload/SSR persistence.
|
|
16
18
|
*/
|
|
17
19
|
tokenStorage?: AuthTokenStorage;
|
|
18
|
-
}
|
|
20
|
+
};
|
|
19
21
|
/**
|
|
20
22
|
* A client for interacting with the Polyester DEX in the browser.
|
|
21
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.d.ts","names":[],"sources":["../src/browser-client.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"browser-client.d.ts","names":[],"sources":["../src/browser-client.ts"],"mappings":";;;;;;KAeK,wBAAwB,WAAW,gBAAgB,4BAClD,KAAK;;KAIC,+BAA+B,wBAAwB;;;;;EAK/D,gBAAgB;;;;;EAKhB,eAAe;;;;;cAMN,+BAA+B;MAI3B,QAAQ;EAIT,YAAA,QAAQ;;;;;YAyCD,4BAA4B;;;;EAiB/C,iBAAiB,eAAe"}
|
package/dist/browser-client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PolyesterClient } from "./core-client.js";
|
|
1
|
+
import { PolyesterClient, parsePolyesterClientConfig, pickPolyesterCatalogConfig } from "./core-client.js";
|
|
2
2
|
import { AuthSessionStore } from "./services/auth/session.js";
|
|
3
3
|
import { createMemoryAuthTokenStorage } from "./services/auth/token-storage.js";
|
|
4
4
|
import { AccountSignerAuthService } from "./services/auth/account-signer-auth.js";
|
|
@@ -11,6 +11,7 @@ var PolyesterBrowserClient = class extends PolyesterClient {
|
|
|
11
11
|
return super.auth;
|
|
12
12
|
}
|
|
13
13
|
constructor(config) {
|
|
14
|
+
config = parsePolyesterClientConfig(config);
|
|
14
15
|
const tokenStorage = config.tokenStorage ?? createMemoryAuthTokenStorage();
|
|
15
16
|
const sessionStore = new AuthSessionStore({ environmentFingerprint: config.environment.fingerprint });
|
|
16
17
|
const getToken = () => sessionStore.getEnvironmentBoundToken(tokenStorage);
|
|
@@ -22,9 +23,7 @@ var PolyesterBrowserClient = class extends PolyesterClient {
|
|
|
22
23
|
getToken
|
|
23
24
|
},
|
|
24
25
|
wireFormat: config.wireFormat,
|
|
25
|
-
|
|
26
|
-
catalogSnapshot: config.catalogSnapshot,
|
|
27
|
-
catalogCell: config.catalogCell,
|
|
26
|
+
...pickPolyesterCatalogConfig(config),
|
|
28
27
|
transports: config.transports,
|
|
29
28
|
realtimeClient: config.realtimeClient,
|
|
30
29
|
realtime: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.js","names":[],"sources":["../src/browser-client.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"browser-client.js","names":[],"sources":["../src/browser-client.ts"],"sourcesContent":["import {\n parsePolyesterClientConfig,\n pickPolyesterCatalogConfig,\n PolyesterClient,\n type PolyesterClientBaseConfig,\n} from \"./core-client.js\";\nimport { AccountSignerAuthService } from \"./services/auth/account-signer-auth.js\";\nimport type { AccountSignerConfig, AccountSigner } from \"./account-signer/types.js\";\nimport type { SubaccountResolver } from \"./services/subaccount-resolver.js\";\nimport {\n createMemoryAuthTokenStorage,\n type AuthTokenStorage,\n} from \"./services/auth/token-storage.js\";\nimport { AuthSessionStore } from \"./services/auth/session.js\";\n\ntype BrowserClientBaseConfig<TConfig> = TConfig extends PolyesterClientBaseConfig\n ? Omit<TConfig, \"auth\">\n : never;\n\n/** Configuration for the browser Polyester client. */\nexport type PolyesterBrowserClientConfig = BrowserClientBaseConfig<PolyesterClientBaseConfig> & {\n /**\n * Account signer interface for authentication.\n * Pass a signer object or a factory function for lazy initialization.\n */\n accountSigner?: AccountSignerConfig;\n /**\n * Storage for browser bearer tokens. Defaults to per-client memory storage.\n * Use createCookieAuthTokenStorage() to opt into reload/SSR persistence.\n */\n tokenStorage?: AuthTokenStorage;\n};\n\n/**\n * A client for interacting with the Polyester DEX in the browser.\n */\nexport class PolyesterBrowserClient extends PolyesterClient {\n // The base class builds `auth` through the `createAuth` runtime factory we\n // pass below, so the lazily-constructed instance is always an\n // AccountSignerAuthService — this override only narrows the type.\n override get auth(): AccountSignerAuthService {\n return super.auth as AccountSignerAuthService;\n }\n\n constructor(config: PolyesterBrowserClientConfig) {\n config = parsePolyesterClientConfig(config);\n const tokenStorage = config.tokenStorage ?? createMemoryAuthTokenStorage();\n const sessionStore = new AuthSessionStore({\n environmentFingerprint: config.environment.fingerprint,\n });\n const getToken = () => sessionStore.getEnvironmentBoundToken(tokenStorage);\n\n super(\n {\n environment: config.environment,\n interceptors: config.interceptors,\n auth: { kind: \"jwt\", getToken },\n wireFormat: config.wireFormat,\n ...pickPolyesterCatalogConfig(config),\n transports: config.transports,\n realtimeClient: config.realtimeClient,\n realtime: {\n hasAuth: () => !!getToken(),\n ...config.realtime,\n },\n },\n {\n createAuth: ({ transports, realtime, subaccounts, environment }) =>\n new AccountSignerAuthService({\n transports,\n accountSignerConfig: config.accountSigner,\n environment,\n subaccounts,\n realtime,\n tokenStorage,\n sessionStore,\n }),\n },\n );\n }\n\n /**\n * Creates a resolver that defaults subaccountId to the active subaccount.\n * The getter is called lazily when service methods are invoked.\n */\n protected override createSubaccountResolver(): SubaccountResolver {\n return {\n getDefaultSubaccountId: () => {\n const state = this.auth.getState();\n if (state.activeAccount && !state.activeAccount.isMain) {\n return state.activeAccount.accountId;\n }\n return null;\n },\n getActiveAccountId: () => this.auth.getState().activeAccount?.accountId ?? null,\n getMainAccountId: () => this.auth.getState().mainAccountId ?? null,\n };\n }\n\n /**\n * Sets the account signer used for authenticated browser requests.\n */\n setAccountSigner(accountSigner: AccountSigner | null): void {\n this.auth.setAccountSigner(accountSigner);\n }\n}\n"],"mappings":";;;;;;;;AAoCA,IAAa,yBAAb,cAA4C,gBAAgB;CAIxD,IAAa,OAAiC;EAC1C,OAAO,MAAM;CACjB;CAEA,YAAY,QAAsC;EAC9C,SAAS,2BAA2B,MAAM;EAC1C,MAAM,eAAe,OAAO,gBAAgB,6BAA6B;EACzE,MAAM,eAAe,IAAI,iBAAiB,EACtC,wBAAwB,OAAO,YAAY,YAC/C,CAAC;EACD,MAAM,iBAAiB,aAAa,yBAAyB,YAAY;EAEzE,MACI;GACI,aAAa,OAAO;GACpB,cAAc,OAAO;GACrB,MAAM;IAAE,MAAM;IAAO;GAAS;GAC9B,YAAY,OAAO;GACnB,GAAG,2BAA2B,MAAM;GACpC,YAAY,OAAO;GACnB,gBAAgB,OAAO;GACvB,UAAU;IACN,eAAe,CAAC,CAAC,SAAS;IAC1B,GAAG,OAAO;GACd;EACJ,GACA,EACI,aAAa,EAAE,YAAY,UAAU,aAAa,kBAC9C,IAAI,yBAAyB;GACzB;GACA,qBAAqB,OAAO;GAC5B;GACA;GACA;GACA;GACA;EACJ,CAAC,EACT,CACJ;CACJ;;;;;CAMA,2BAAkE;EAC9D,OAAO;GACH,8BAA8B;IAC1B,MAAM,QAAQ,KAAK,KAAK,SAAS;IACjC,IAAI,MAAM,iBAAiB,CAAC,MAAM,cAAc,QAC5C,OAAO,MAAM,cAAc;IAE/B,OAAO;GACX;GACA,0BAA0B,KAAK,KAAK,SAAS,CAAC,CAAC,eAAe,aAAa;GAC3E,wBAAwB,KAAK,KAAK,SAAS,CAAC,CAAC,iBAAiB;EAClE;CACJ;;;;CAKA,iBAAiB,eAA2C;EACxD,KAAK,KAAK,iBAAiB,aAAa;CAC5C;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-catalog.d.ts","names":[],"sources":["../../src/catalogs/client-catalog.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"client-catalog.d.ts","names":[],"sources":["../../src/catalogs/client-catalog.ts"],"mappings":";;iBAagB,uBAAuB,UAAS,gCAAqC"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
+
import { ConfigurationError } from "../shared/errors.js";
|
|
1
2
|
import { CatalogNotReadyError } from "./types.js";
|
|
3
|
+
import { parseCatalogSnapshot } from "./snapshot-validation.js";
|
|
2
4
|
import { createReader } from "./readers.js";
|
|
3
5
|
import { buildCatalogSnapshot } from "./snapshot.js";
|
|
4
6
|
//#region src/catalogs/client-catalog.ts
|
|
5
7
|
function createPolyesterCatalog(options = {}) {
|
|
8
|
+
if (typeof options !== "object" || options === null || Array.isArray(options)) throw new ConfigurationError("Catalog options must be an object.");
|
|
6
9
|
const cell = options.cell;
|
|
7
10
|
let local = void 0;
|
|
8
|
-
const getCurrent = () =>
|
|
11
|
+
const getCurrent = () => {
|
|
12
|
+
const current = cell ? cell.get() : local;
|
|
13
|
+
return current === void 0 ? void 0 : parseCatalogSnapshot(current);
|
|
14
|
+
};
|
|
9
15
|
const setCurrent = (snapshot) => {
|
|
10
16
|
if (cell) cell.set(snapshot);
|
|
11
17
|
else local = snapshot;
|
|
12
18
|
};
|
|
13
|
-
if (options.snapshot && !getCurrent()) setCurrent(options.snapshot);
|
|
19
|
+
if (options.snapshot !== void 0 && !getCurrent()) setCurrent(parseCatalogSnapshot(options.snapshot));
|
|
14
20
|
const initial = getCurrent();
|
|
15
21
|
let stateValue = initial ? {
|
|
16
22
|
status: "fresh",
|
|
@@ -24,10 +30,11 @@ function createPolyesterCatalog(options = {}) {
|
|
|
24
30
|
});
|
|
25
31
|
const currentSource = () => getCurrent()?.source ?? "empty";
|
|
26
32
|
function setSnapshot(snapshot) {
|
|
27
|
-
|
|
33
|
+
const parsed = parseCatalogSnapshot(snapshot);
|
|
34
|
+
setCurrent(parsed);
|
|
28
35
|
stateValue = {
|
|
29
36
|
status: "fresh",
|
|
30
|
-
source:
|
|
37
|
+
source: parsed.source
|
|
31
38
|
};
|
|
32
39
|
}
|
|
33
40
|
function refresh() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-catalog.js","names":[],"sources":["../../src/catalogs/client-catalog.ts"],"sourcesContent":["import { createReader } from \"./readers.js\";\nimport { buildCatalogSnapshot } from \"./snapshot.js\";\nimport type {\n CatalogSnapshot,\n CatalogState,\n CatalogStateSource,\n ClientCatalog,\n CreatePolyesterCatalogOptions,\n} from \"./types.js\";\nimport { CatalogNotReadyError } from \"./types.js\";\n\nexport function createPolyesterCatalog(options: CreatePolyesterCatalogOptions = {}): ClientCatalog {\n const cell = options.cell;\n let local: CatalogSnapshot | undefined = undefined;\n const getCurrent = (): CatalogSnapshot | undefined =>
|
|
1
|
+
{"version":3,"file":"client-catalog.js","names":[],"sources":["../../src/catalogs/client-catalog.ts"],"sourcesContent":["import { createReader } from \"./readers.js\";\nimport { buildCatalogSnapshot } from \"./snapshot.js\";\nimport type {\n CatalogSnapshot,\n CatalogState,\n CatalogStateSource,\n ClientCatalog,\n CreatePolyesterCatalogOptions,\n} from \"./types.js\";\nimport { CatalogNotReadyError } from \"./types.js\";\nimport { ConfigurationError } from \"../shared/errors.js\";\nimport { parseCatalogSnapshot } from \"./snapshot-validation.js\";\n\nexport function createPolyesterCatalog(options: CreatePolyesterCatalogOptions = {}): ClientCatalog {\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new ConfigurationError(\"Catalog options must be an object.\");\n }\n const cell = options.cell;\n let local: CatalogSnapshot | undefined = undefined;\n const getCurrent = (): CatalogSnapshot | undefined => {\n const current = cell ? cell.get() : local;\n return current === undefined ? undefined : parseCatalogSnapshot(current);\n };\n const setCurrent = (snapshot: CatalogSnapshot): void => {\n if (cell) cell.set(snapshot);\n else local = snapshot;\n };\n if (options.snapshot !== undefined && !getCurrent()) {\n setCurrent(parseCatalogSnapshot(options.snapshot));\n }\n\n const initial = getCurrent();\n let stateValue: CatalogState = initial\n ? { status: \"fresh\", source: initial.source }\n : { status: \"empty\" };\n let refreshInFlight: Promise<CatalogSnapshot> | undefined;\n\n const reader = createReader(() => {\n const current = getCurrent();\n if (!current) throw new CatalogNotReadyError();\n return current;\n });\n\n const currentSource = (): CatalogStateSource => getCurrent()?.source ?? \"empty\";\n\n function setSnapshot(snapshot: CatalogSnapshot): void {\n const parsed = parseCatalogSnapshot(snapshot);\n setCurrent(parsed);\n stateValue = { status: \"fresh\", source: parsed.source };\n }\n\n function refresh(): Promise<CatalogSnapshot> {\n if (options.refresh === false || options.refresh === undefined) {\n const current = getCurrent();\n if (!current) return Promise.reject(new CatalogNotReadyError());\n return Promise.resolve(current);\n }\n if (refreshInFlight) return refreshInFlight;\n\n stateValue = { status: \"refreshing\", previousSource: currentSource() };\n refreshInFlight = Promise.all([options.refresh.market(), options.refresh.zipper()])\n .then(([marketSeed, zipperSeed]) => {\n const snapshot = buildCatalogSnapshot({\n market: marketSeed,\n zipper: zipperSeed,\n source: \"api\",\n version: (getCurrent()?.version ?? 0) + 1,\n });\n setSnapshot(snapshot);\n return snapshot;\n })\n .catch((error) => {\n stateValue = { status: \"stale\", source: currentSource(), error };\n throw error;\n })\n .finally(() => {\n refreshInFlight = undefined;\n });\n\n return refreshInFlight;\n }\n\n function ready(): Promise<CatalogSnapshot | null> {\n const current = getCurrent();\n if (current) return Promise.resolve(current);\n if (refreshInFlight) return refreshInFlight.catch(() => getCurrent() ?? null);\n return Promise.resolve(null);\n }\n\n function ensureReady(): Promise<CatalogSnapshot> {\n const current = getCurrent();\n if (current) return Promise.resolve(current);\n return refreshInFlight ?? refresh();\n }\n\n return {\n ...reader,\n state: () => stateValue,\n ready,\n ensureReady,\n refresh,\n setSnapshot,\n };\n}\n"],"mappings":";;;;;;AAaA,SAAgB,uBAAuB,UAAyC,CAAC,GAAkB;CAC/F,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GACxE,MAAM,IAAI,mBAAmB,oCAAoC;CAErE,MAAM,OAAO,QAAQ;CACrB,IAAI,QAAqC,KAAA;CACzC,MAAM,mBAAgD;EAClD,MAAM,UAAU,OAAO,KAAK,IAAI,IAAI;EACpC,OAAO,YAAY,KAAA,IAAY,KAAA,IAAY,qBAAqB,OAAO;CAC3E;CACA,MAAM,cAAc,aAAoC;EACpD,IAAI,MAAM,KAAK,IAAI,QAAQ;OACtB,QAAQ;CACjB;CACA,IAAI,QAAQ,aAAa,KAAA,KAAa,CAAC,WAAW,GAC9C,WAAW,qBAAqB,QAAQ,QAAQ,CAAC;CAGrD,MAAM,UAAU,WAAW;CAC3B,IAAI,aAA2B,UACzB;EAAE,QAAQ;EAAS,QAAQ,QAAQ;CAAO,IAC1C,EAAE,QAAQ,QAAQ;CACxB,IAAI;CAEJ,MAAM,SAAS,mBAAmB;EAC9B,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SAAS,MAAM,IAAI,qBAAqB;EAC7C,OAAO;CACX,CAAC;CAED,MAAM,sBAA0C,WAAW,CAAC,EAAE,UAAU;CAExE,SAAS,YAAY,UAAiC;EAClD,MAAM,SAAS,qBAAqB,QAAQ;EAC5C,WAAW,MAAM;EACjB,aAAa;GAAE,QAAQ;GAAS,QAAQ,OAAO;EAAO;CAC1D;CAEA,SAAS,UAAoC;EACzC,IAAI,QAAQ,YAAY,SAAS,QAAQ,YAAY,KAAA,GAAW;GAC5D,MAAM,UAAU,WAAW;GAC3B,IAAI,CAAC,SAAS,OAAO,QAAQ,OAAO,IAAI,qBAAqB,CAAC;GAC9D,OAAO,QAAQ,QAAQ,OAAO;EAClC;EACA,IAAI,iBAAiB,OAAO;EAE5B,aAAa;GAAE,QAAQ;GAAc,gBAAgB,cAAc;EAAE;EACrE,kBAAkB,QAAQ,IAAI,CAAC,QAAQ,QAAQ,OAAO,GAAG,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,CAC9E,MAAM,CAAC,YAAY,gBAAgB;GAChC,MAAM,WAAW,qBAAqB;IAClC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU,WAAW,CAAC,EAAE,WAAW,KAAK;GAC5C,CAAC;GACD,YAAY,QAAQ;GACpB,OAAO;EACX,CAAC,CAAC,CACD,OAAO,UAAU;GACd,aAAa;IAAE,QAAQ;IAAS,QAAQ,cAAc;IAAG;GAAM;GAC/D,MAAM;EACV,CAAC,CAAC,CACD,cAAc;GACX,kBAAkB,KAAA;EACtB,CAAC;EAEL,OAAO;CACX;CAEA,SAAS,QAAyC;EAC9C,MAAM,UAAU,WAAW;EAC3B,IAAI,SAAS,OAAO,QAAQ,QAAQ,OAAO;EAC3C,IAAI,iBAAiB,OAAO,gBAAgB,YAAY,WAAW,KAAK,IAAI;EAC5E,OAAO,QAAQ,QAAQ,IAAI;CAC/B;CAEA,SAAS,cAAwC;EAC7C,MAAM,UAAU,WAAW;EAC3B,IAAI,SAAS,OAAO,QAAQ,QAAQ,OAAO;EAC3C,OAAO,mBAAmB,QAAQ;CACtC;CAEA,OAAO;EACH,GAAG;EACH,aAAa;EACb;EACA;EACA;EACA;CACJ;AACJ"}
|
package/dist/catalogs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CatalogConversionError, CatalogLookupError, CatalogNotReadyError, CatalogValidationFailedError } from "./types.js";
|
|
2
2
|
import { UNKNOWN_ASSET_LABEL, UNKNOWN_LEDGER_ASSET_ID, isUnknownLedgerAsset, isUnknownZipperAsset, unknownLedgerAsset, unknownZipperAsset } from "./unknown-asset.js";
|
|
3
|
-
import { createCatalogSnapshotReader } from "./readers.js";
|
|
4
3
|
import { PAIR_STATUSES } from "../shared/catalog-config.js";
|
|
4
|
+
import { createCatalogSnapshotReader } from "./readers.js";
|
|
5
5
|
import { buildCatalogSnapshot } from "./snapshot.js";
|
|
6
6
|
import { createPolyesterCatalog } from "./client-catalog.js";
|
|
7
7
|
import { patchZipperCatalogSupply } from "./zipper-supply.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readers.d.ts","names":[],"sources":["../../src/catalogs/readers.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"readers.d.ts","names":[],"sources":["../../src/catalogs/readers.ts"],"mappings":";;iBAkwBgB,4BAA4B,UAAU,kBAAkB"}
|
package/dist/catalogs/readers.js
CHANGED
|
@@ -2,6 +2,7 @@ import { scaledToDecimal, scaledToDisplay, significantDecimalPlaces, tryDecimalT
|
|
|
2
2
|
import { CatalogConversionError, CatalogLookupError, CatalogValidationFailedError } from "./types.js";
|
|
3
3
|
import { indexesFor } from "./indexes.js";
|
|
4
4
|
import { resolveLedgerAssetByLedgerId, resolveZipperAssetByLedgerId } from "./unknown-asset.js";
|
|
5
|
+
import { parseCatalogSnapshot } from "./snapshot-validation.js";
|
|
5
6
|
function isListed(pair, nowMs) {
|
|
6
7
|
if (pair.listingAt === null || pair.listingAt > nowMs) return false;
|
|
7
8
|
if (pair.status === "disabled") return false;
|
|
@@ -537,7 +538,8 @@ function createReader(getSnapshot) {
|
|
|
537
538
|
return new SnapshotCatalogReader(getSnapshot);
|
|
538
539
|
}
|
|
539
540
|
function createCatalogSnapshotReader(snapshot) {
|
|
540
|
-
|
|
541
|
+
const parsed = parseCatalogSnapshot(snapshot);
|
|
542
|
+
return createReader(() => parsed);
|
|
541
543
|
}
|
|
542
544
|
//#endregion
|
|
543
545
|
export { createCatalogSnapshotReader, createReader };
|