@metamask-previews/perps-controller 8.0.0-preview-51b287c55 → 8.1.0-preview-3af52b79c
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 +29 -1
- package/dist/constants/hyperLiquidConfig.cjs +166 -1
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.cts +33 -0
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.mts +33 -0
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -1
- package/dist/constants/hyperLiquidConfig.mjs +163 -0
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -1
- package/dist/constants/perpsConfig.cjs +2 -0
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +1 -0
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +1 -0
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +2 -0
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/index.cjs +48 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +2 -2
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +3 -3
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.cjs +109 -185
- package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.cts +3 -3
- package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.mts +3 -3
- package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.mjs +109 -185
- package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -1
- package/dist/services/TradingService.cjs +50 -3
- package/dist/services/TradingService.cjs.map +1 -1
- package/dist/services/TradingService.d.cts.map +1 -1
- package/dist/services/TradingService.d.mts.map +1 -1
- package/dist/services/TradingService.mjs +50 -3
- package/dist/services/TradingService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +1 -0
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts +1 -0
- package/dist/utils/index.d.mts.map +1 -1
- package/dist/utils/index.mjs +1 -0
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/marketDataTransform.cjs +5 -2
- package/dist/utils/marketDataTransform.cjs.map +1 -1
- package/dist/utils/marketDataTransform.d.cts +4 -1
- package/dist/utils/marketDataTransform.d.cts.map +1 -1
- package/dist/utils/marketDataTransform.d.mts +4 -1
- package/dist/utils/marketDataTransform.d.mts.map +1 -1
- package/dist/utils/marketDataTransform.mjs +6 -3
- package/dist/utils/marketDataTransform.mjs.map +1 -1
- package/dist/utils/marketSearch.cjs +85 -0
- package/dist/utils/marketSearch.cjs.map +1 -0
- package/dist/utils/marketSearch.d.cts +47 -0
- package/dist/utils/marketSearch.d.cts.map +1 -0
- package/dist/utils/marketSearch.d.mts +47 -0
- package/dist/utils/marketSearch.d.mts.map +1 -0
- package/dist/utils/marketSearch.mjs +80 -0
- package/dist/utils/marketSearch.mjs.map +1 -0
- package/package.json +2 -2
|
@@ -74,6 +74,8 @@ class TradingService {
|
|
|
74
74
|
const traceId = (0, uuid_1.v4)();
|
|
75
75
|
const startTime = __classPrivateFieldGet(this, _TradingService_deps, "f").performance.now();
|
|
76
76
|
let traceData;
|
|
77
|
+
let orderSubmissionThresholdTimeoutId;
|
|
78
|
+
let didExceedOrderSubmissionThreshold = false;
|
|
77
79
|
const paymentToken = params.trackingData?.tradeWithToken === true
|
|
78
80
|
? (params.trackingData.mmPayTokenSelected ?? 'unknown_token')
|
|
79
81
|
: 'perps_balance';
|
|
@@ -122,16 +124,47 @@ class TradingService {
|
|
|
122
124
|
hasTP: Boolean(params.takeProfitPrice),
|
|
123
125
|
hasSL: Boolean(params.stopLossPrice),
|
|
124
126
|
});
|
|
125
|
-
//
|
|
127
|
+
// Observational threshold: when the provider round-trip exceeds
|
|
128
|
+
// PlaceOrderTimeoutMs we tag the trace and emit a breadcrumb, but we
|
|
129
|
+
// intentionally do NOT cancel the in-flight order. Cancelling client-side
|
|
130
|
+
// (e.g. Promise.race rejection) does not stop the provider request, so a
|
|
131
|
+
// race-based timeout would let the UI mark an order as failed while
|
|
132
|
+
// HyperLiquid could still accept it. Instead, we always await
|
|
133
|
+
// provider.placeOrder(params) to terminal completion and surface
|
|
134
|
+
// late completions via trace `reason: 'late_success' | 'late_error'`.
|
|
135
|
+
orderSubmissionThresholdTimeoutId = setTimeout(() => {
|
|
136
|
+
didExceedOrderSubmissionThreshold = true;
|
|
137
|
+
__classPrivateFieldGet(this, _TradingService_deps, "f").tracer.addBreadcrumb({
|
|
138
|
+
category: 'perps',
|
|
139
|
+
message: 'Order submission exceeded threshold (still pending)',
|
|
140
|
+
level: 'warning',
|
|
141
|
+
data: {
|
|
142
|
+
thresholdMs: perpsConfig_1.PERPS_CONSTANTS.PlaceOrderTimeoutMs,
|
|
143
|
+
payment_token: paymentToken,
|
|
144
|
+
market: params.symbol,
|
|
145
|
+
orderType: params.orderType,
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
__classPrivateFieldGet(this, _TradingService_deps, "f").debugLogger.log('TradingService: Order submission exceeded threshold (still pending)', {
|
|
149
|
+
thresholdMs: perpsConfig_1.PERPS_CONSTANTS.PlaceOrderTimeoutMs,
|
|
150
|
+
symbol: params.symbol,
|
|
151
|
+
orderType: params.orderType,
|
|
152
|
+
});
|
|
153
|
+
}, perpsConfig_1.PERPS_CONSTANTS.PlaceOrderTimeoutMs);
|
|
126
154
|
const result = await __classPrivateFieldGet(this, _TradingService_instances, "m", _TradingService_withFeeDiscount).call(this, {
|
|
127
155
|
provider,
|
|
128
156
|
feeDiscountBips,
|
|
129
157
|
operation: () => provider.placeOrder(params),
|
|
130
158
|
});
|
|
159
|
+
if (orderSubmissionThresholdTimeoutId !== undefined) {
|
|
160
|
+
clearTimeout(orderSubmissionThresholdTimeoutId);
|
|
161
|
+
orderSubmissionThresholdTimeoutId = undefined;
|
|
162
|
+
}
|
|
131
163
|
__classPrivateFieldGet(this, _TradingService_deps, "f").debugLogger.log('TradingService: Provider response received', {
|
|
132
164
|
success: result.success,
|
|
133
165
|
orderId: result.orderId,
|
|
134
166
|
error: result.error,
|
|
167
|
+
didExceedOrderSubmissionThreshold,
|
|
135
168
|
});
|
|
136
169
|
// Update state and handle success/failure
|
|
137
170
|
const completionDuration = __classPrivateFieldGet(this, _TradingService_deps, "f").performance.now() - startTime;
|
|
@@ -142,13 +175,23 @@ class TradingService {
|
|
|
142
175
|
context,
|
|
143
176
|
reportOrderToDataLake,
|
|
144
177
|
});
|
|
145
|
-
traceData = {
|
|
178
|
+
traceData = {
|
|
179
|
+
success: true,
|
|
180
|
+
orderId: result.orderId ?? '',
|
|
181
|
+
...(didExceedOrderSubmissionThreshold
|
|
182
|
+
? { reason: 'late_success' }
|
|
183
|
+
: {}),
|
|
184
|
+
};
|
|
146
185
|
// Invalidate standalone caches so external hooks (e.g., usePerpsPositionForAsset) refresh
|
|
147
186
|
__classPrivateFieldGet(this, _TradingService_deps, "f").cacheInvalidator.invalidate({ cacheType: 'positions' });
|
|
148
187
|
__classPrivateFieldGet(this, _TradingService_deps, "f").cacheInvalidator.invalidate({ cacheType: 'accountState' });
|
|
149
188
|
}
|
|
150
189
|
else {
|
|
151
|
-
traceData = {
|
|
190
|
+
traceData = {
|
|
191
|
+
success: false,
|
|
192
|
+
reason: didExceedOrderSubmissionThreshold ? 'late_error' : 'error',
|
|
193
|
+
error: result.error ?? 'Unknown error',
|
|
194
|
+
};
|
|
152
195
|
}
|
|
153
196
|
// Track analytics (success or failure)
|
|
154
197
|
__classPrivateFieldGet(this, _TradingService_instances, "m", _TradingService_trackOrderResult).call(this, {
|
|
@@ -187,11 +230,15 @@ class TradingService {
|
|
|
187
230
|
});
|
|
188
231
|
traceData = {
|
|
189
232
|
success: false,
|
|
233
|
+
reason: didExceedOrderSubmissionThreshold ? 'late_error' : 'error',
|
|
190
234
|
error: error instanceof Error ? error.message : 'Unknown error',
|
|
191
235
|
};
|
|
192
236
|
throw error;
|
|
193
237
|
}
|
|
194
238
|
finally {
|
|
239
|
+
if (orderSubmissionThresholdTimeoutId !== undefined) {
|
|
240
|
+
clearTimeout(orderSubmissionThresholdTimeoutId);
|
|
241
|
+
}
|
|
195
242
|
// Always end trace on exit (success or failure)
|
|
196
243
|
__classPrivateFieldGet(this, _TradingService_deps, "f").tracer.endTrace({
|
|
197
244
|
name: types_1.PerpsTraceNames.PlaceOrder,
|