@forgecharts/sdk 1.3.12 → 1.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/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.js +13 -3
- package/dist/internal.js.map +1 -1
- package/dist/react/canvas/ChartCanvas.d.ts.map +1 -1
- package/dist/react/index.js +170 -159
- package/dist/react/index.js.map +1 -1
- package/dist/react/internal.js +170 -159
- package/dist/react/internal.js.map +1 -1
- package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -22679,7 +22679,10 @@ var ChartCanvas = forwardRef(
|
|
|
22679
22679
|
const order = chart.getTradingOverlayStore()?.getOrders().find((o) => o.id === orderId);
|
|
22680
22680
|
const isBracketLeg = order?.role === "take_profit" || order?.role === "stop_loss";
|
|
22681
22681
|
if (isBracketLeg) {
|
|
22682
|
-
if (!canUseBracketOrders())
|
|
22682
|
+
if (!canUseBracketOrders()) {
|
|
22683
|
+
console.warn("[ForgeCharts] TP/SL drag ignored \u2014 the `bracketOrders` feature is not enabled on the active license, so no bracket_adjust intent was dispatched.");
|
|
22684
|
+
return;
|
|
22685
|
+
}
|
|
22683
22686
|
void bridge.onBracketAdjustIntent?.({
|
|
22684
22687
|
type: "bracket_adjust",
|
|
22685
22688
|
entryOrderId: order?.groupId ?? orderId,
|
|
@@ -22688,7 +22691,10 @@ var ChartCanvas = forwardRef(
|
|
|
22688
22691
|
timestamp: Date.now()
|
|
22689
22692
|
});
|
|
22690
22693
|
} else {
|
|
22691
|
-
if (!canUseDraggableOrders())
|
|
22694
|
+
if (!canUseDraggableOrders()) {
|
|
22695
|
+
console.warn("[ForgeCharts] Order drag ignored \u2014 the `draggableOrders` feature is not enabled on the active license, so no modify intent was dispatched.");
|
|
22696
|
+
return;
|
|
22697
|
+
}
|
|
22692
22698
|
void bridge.onModifyOrderIntent?.({
|
|
22693
22699
|
type: "modify",
|
|
22694
22700
|
orderId,
|
|
@@ -22704,7 +22710,11 @@ var ChartCanvas = forwardRef(
|
|
|
22704
22710
|
return;
|
|
22705
22711
|
}
|
|
22706
22712
|
const bridge = tradingBridgeRef.current;
|
|
22707
|
-
if (!bridge
|
|
22713
|
+
if (!bridge) return;
|
|
22714
|
+
if (!canUseBracketOrders()) {
|
|
22715
|
+
console.warn("[ForgeCharts] TP/SL pill drag ignored \u2014 the `bracketOrders` feature is not enabled on the active license, so no bracket_adjust intent was dispatched.");
|
|
22716
|
+
return;
|
|
22717
|
+
}
|
|
22708
22718
|
void bridge.onBracketAdjustIntent?.({
|
|
22709
22719
|
type: "bracket_adjust",
|
|
22710
22720
|
entryOrderId,
|
|
@@ -26089,6 +26099,161 @@ function RightToolbar({
|
|
|
26089
26099
|
}
|
|
26090
26100
|
);
|
|
26091
26101
|
}
|
|
26102
|
+
|
|
26103
|
+
// src/react/agent/contractUtils.ts
|
|
26104
|
+
var MONTH_CODE_MAP = {
|
|
26105
|
+
F: "January",
|
|
26106
|
+
G: "February",
|
|
26107
|
+
H: "March",
|
|
26108
|
+
J: "April",
|
|
26109
|
+
K: "May",
|
|
26110
|
+
M: "June",
|
|
26111
|
+
N: "July",
|
|
26112
|
+
Q: "August",
|
|
26113
|
+
U: "September",
|
|
26114
|
+
V: "October",
|
|
26115
|
+
X: "November",
|
|
26116
|
+
Z: "December"
|
|
26117
|
+
};
|
|
26118
|
+
var PRODUCTS = {
|
|
26119
|
+
// CME Equity Index
|
|
26120
|
+
ES: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26121
|
+
MES: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26122
|
+
NQ: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26123
|
+
MNQ: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26124
|
+
RTY: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26125
|
+
M2K: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26126
|
+
NKD: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26127
|
+
// CBOT Equity Index
|
|
26128
|
+
YM: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
26129
|
+
MYM: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
26130
|
+
// CME FX
|
|
26131
|
+
"6E": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26132
|
+
"6B": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26133
|
+
"6J": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26134
|
+
"6A": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26135
|
+
"6C": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
26136
|
+
// NYMEX Energy
|
|
26137
|
+
CL: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26138
|
+
QM: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26139
|
+
MCL: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26140
|
+
NG: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26141
|
+
HO: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26142
|
+
RB: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
26143
|
+
// COMEX Metals
|
|
26144
|
+
GC: { exchange: "COMEX", months: ["G", "J", "M", "Q", "V", "Z"] },
|
|
26145
|
+
MGC: { exchange: "COMEX", months: ["G", "J", "M", "Q", "V", "Z"] },
|
|
26146
|
+
SI: { exchange: "COMEX", months: ["H", "K", "N", "U", "Z"] },
|
|
26147
|
+
HG: { exchange: "COMEX", months: ["H", "K", "N", "U", "Z"] },
|
|
26148
|
+
// CBOT Grains
|
|
26149
|
+
ZC: { exchange: "CBOT", months: ["H", "K", "N", "U", "Z"] },
|
|
26150
|
+
ZS: { exchange: "CBOT", months: ["F", "H", "K", "N", "Q", "U", "X"] },
|
|
26151
|
+
ZW: { exchange: "CBOT", months: ["H", "K", "N", "U", "Z"] },
|
|
26152
|
+
// CBOT Interest Rates
|
|
26153
|
+
ZB: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
26154
|
+
ZN: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
26155
|
+
ZF: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
26156
|
+
ZT: { exchange: "CBOT", months: ["H", "M", "U", "Z"] }
|
|
26157
|
+
};
|
|
26158
|
+
var MC_INDEX = {
|
|
26159
|
+
F: 0,
|
|
26160
|
+
G: 1,
|
|
26161
|
+
H: 2,
|
|
26162
|
+
J: 3,
|
|
26163
|
+
K: 4,
|
|
26164
|
+
M: 5,
|
|
26165
|
+
N: 6,
|
|
26166
|
+
Q: 7,
|
|
26167
|
+
U: 8,
|
|
26168
|
+
V: 9,
|
|
26169
|
+
X: 10,
|
|
26170
|
+
Z: 11
|
|
26171
|
+
};
|
|
26172
|
+
function parseContractInfo(symbol) {
|
|
26173
|
+
let input = symbol.trim().toUpperCase();
|
|
26174
|
+
let exchangeHint;
|
|
26175
|
+
if (input.includes(":")) {
|
|
26176
|
+
const colon = input.indexOf(":");
|
|
26177
|
+
exchangeHint = input.slice(0, colon);
|
|
26178
|
+
input = input.slice(colon + 1);
|
|
26179
|
+
}
|
|
26180
|
+
const contMatch = input.match(/^([A-Z0-9]+?)(\d+)!$/);
|
|
26181
|
+
if (contMatch) {
|
|
26182
|
+
const product = contMatch[1];
|
|
26183
|
+
const info = PRODUCTS[product];
|
|
26184
|
+
if (!info) return null;
|
|
26185
|
+
const exchange = exchangeHint ?? info.exchange;
|
|
26186
|
+
const front = _guessFrontMonth(product, info.months);
|
|
26187
|
+
return {
|
|
26188
|
+
isContinuous: true,
|
|
26189
|
+
product,
|
|
26190
|
+
exchange,
|
|
26191
|
+
frontMonthContract: `${exchange}:${front}`,
|
|
26192
|
+
continuousSymbol: `${exchange}:${product}1!`,
|
|
26193
|
+
availableMonths: info.months
|
|
26194
|
+
};
|
|
26195
|
+
}
|
|
26196
|
+
const specificMatch = input.match(/^([A-Z0-9]+?)([FGHJKMNQUVXZ])(\d{1,4})$/);
|
|
26197
|
+
if (specificMatch) {
|
|
26198
|
+
const product = specificMatch[1];
|
|
26199
|
+
const info = PRODUCTS[product];
|
|
26200
|
+
if (!info) return null;
|
|
26201
|
+
const exchange = exchangeHint ?? info.exchange;
|
|
26202
|
+
const front = _guessFrontMonth(product, info.months);
|
|
26203
|
+
return {
|
|
26204
|
+
isContinuous: false,
|
|
26205
|
+
product,
|
|
26206
|
+
exchange,
|
|
26207
|
+
frontMonthContract: `${exchange}:${front}`,
|
|
26208
|
+
continuousSymbol: `${exchange}:${product}1!`,
|
|
26209
|
+
availableMonths: info.months
|
|
26210
|
+
};
|
|
26211
|
+
}
|
|
26212
|
+
if (PRODUCTS[input]) {
|
|
26213
|
+
const info = PRODUCTS[input];
|
|
26214
|
+
const exchange = exchangeHint ?? info.exchange;
|
|
26215
|
+
const front = _guessFrontMonth(input, info.months);
|
|
26216
|
+
return {
|
|
26217
|
+
isContinuous: false,
|
|
26218
|
+
product: input,
|
|
26219
|
+
exchange,
|
|
26220
|
+
frontMonthContract: `${exchange}:${front}`,
|
|
26221
|
+
continuousSymbol: `${exchange}:${input}1!`,
|
|
26222
|
+
availableMonths: info.months
|
|
26223
|
+
};
|
|
26224
|
+
}
|
|
26225
|
+
return null;
|
|
26226
|
+
}
|
|
26227
|
+
function getUpcomingContracts(product, exchange, months, count = 6) {
|
|
26228
|
+
const now = /* @__PURE__ */ new Date();
|
|
26229
|
+
const currentMonth = now.getMonth();
|
|
26230
|
+
const currentYear = now.getFullYear();
|
|
26231
|
+
const contracts = [];
|
|
26232
|
+
for (let yearOffset = 0; yearOffset <= 2 && contracts.length < count; yearOffset++) {
|
|
26233
|
+
const year = currentYear + yearOffset;
|
|
26234
|
+
for (const mc of months) {
|
|
26235
|
+
if (contracts.length >= count) break;
|
|
26236
|
+
const monthIdx = MC_INDEX[mc];
|
|
26237
|
+
if (monthIdx === void 0) continue;
|
|
26238
|
+
if (year === currentYear && monthIdx < currentMonth) continue;
|
|
26239
|
+
contracts.push(`${exchange}:${product}${mc}${year}`);
|
|
26240
|
+
}
|
|
26241
|
+
}
|
|
26242
|
+
return contracts;
|
|
26243
|
+
}
|
|
26244
|
+
function _guessFrontMonth(product, months) {
|
|
26245
|
+
const now = /* @__PURE__ */ new Date();
|
|
26246
|
+
const currentMonth = now.getMonth();
|
|
26247
|
+
const currentYear = now.getFullYear();
|
|
26248
|
+
for (const mc of months) {
|
|
26249
|
+
const monthIdx = MC_INDEX[mc];
|
|
26250
|
+
if (monthIdx === void 0) continue;
|
|
26251
|
+
if (monthIdx >= currentMonth) {
|
|
26252
|
+
return `${product}${mc}${currentYear}`;
|
|
26253
|
+
}
|
|
26254
|
+
}
|
|
26255
|
+
return `${product}${months[0]}${currentYear + 1}`;
|
|
26256
|
+
}
|
|
26092
26257
|
var TIMEZONE_OPTIONS = [
|
|
26093
26258
|
{ label: "UTC", value: "UTC" },
|
|
26094
26259
|
{ label: "Exchange", value: "exchange" },
|
|
@@ -26252,7 +26417,8 @@ var CRYPTO_EXCHANGES = /* @__PURE__ */ new Set([
|
|
|
26252
26417
|
]);
|
|
26253
26418
|
function symbolSupportsSession(symbol) {
|
|
26254
26419
|
const exchange = symbol.includes(":") ? symbol.split(":")[0].toUpperCase() : "";
|
|
26255
|
-
|
|
26420
|
+
if (exchange !== "") return !CRYPTO_EXCHANGES.has(exchange);
|
|
26421
|
+
return parseContractInfo(symbol) !== null;
|
|
26256
26422
|
}
|
|
26257
26423
|
function useClockTime(timezone) {
|
|
26258
26424
|
const [time, setTime] = useState(() => _formatClock(timezone));
|
|
@@ -32319,161 +32485,6 @@ function AssistantPanel({ onClose, chartContext }) {
|
|
|
32319
32485
|
] });
|
|
32320
32486
|
}
|
|
32321
32487
|
|
|
32322
|
-
// src/react/agent/contractUtils.ts
|
|
32323
|
-
var MONTH_CODE_MAP = {
|
|
32324
|
-
F: "January",
|
|
32325
|
-
G: "February",
|
|
32326
|
-
H: "March",
|
|
32327
|
-
J: "April",
|
|
32328
|
-
K: "May",
|
|
32329
|
-
M: "June",
|
|
32330
|
-
N: "July",
|
|
32331
|
-
Q: "August",
|
|
32332
|
-
U: "September",
|
|
32333
|
-
V: "October",
|
|
32334
|
-
X: "November",
|
|
32335
|
-
Z: "December"
|
|
32336
|
-
};
|
|
32337
|
-
var PRODUCTS = {
|
|
32338
|
-
// CME Equity Index
|
|
32339
|
-
ES: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32340
|
-
MES: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32341
|
-
NQ: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32342
|
-
MNQ: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32343
|
-
RTY: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32344
|
-
M2K: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32345
|
-
NKD: { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32346
|
-
// CBOT Equity Index
|
|
32347
|
-
YM: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
32348
|
-
MYM: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
32349
|
-
// CME FX
|
|
32350
|
-
"6E": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32351
|
-
"6B": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32352
|
-
"6J": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32353
|
-
"6A": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32354
|
-
"6C": { exchange: "CME", months: ["H", "M", "U", "Z"] },
|
|
32355
|
-
// NYMEX Energy
|
|
32356
|
-
CL: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32357
|
-
QM: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32358
|
-
MCL: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32359
|
-
NG: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32360
|
-
HO: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32361
|
-
RB: { exchange: "NYMEX", months: ["F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"] },
|
|
32362
|
-
// COMEX Metals
|
|
32363
|
-
GC: { exchange: "COMEX", months: ["G", "J", "M", "Q", "V", "Z"] },
|
|
32364
|
-
MGC: { exchange: "COMEX", months: ["G", "J", "M", "Q", "V", "Z"] },
|
|
32365
|
-
SI: { exchange: "COMEX", months: ["H", "K", "N", "U", "Z"] },
|
|
32366
|
-
HG: { exchange: "COMEX", months: ["H", "K", "N", "U", "Z"] },
|
|
32367
|
-
// CBOT Grains
|
|
32368
|
-
ZC: { exchange: "CBOT", months: ["H", "K", "N", "U", "Z"] },
|
|
32369
|
-
ZS: { exchange: "CBOT", months: ["F", "H", "K", "N", "Q", "U", "X"] },
|
|
32370
|
-
ZW: { exchange: "CBOT", months: ["H", "K", "N", "U", "Z"] },
|
|
32371
|
-
// CBOT Interest Rates
|
|
32372
|
-
ZB: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
32373
|
-
ZN: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
32374
|
-
ZF: { exchange: "CBOT", months: ["H", "M", "U", "Z"] },
|
|
32375
|
-
ZT: { exchange: "CBOT", months: ["H", "M", "U", "Z"] }
|
|
32376
|
-
};
|
|
32377
|
-
var MC_INDEX = {
|
|
32378
|
-
F: 0,
|
|
32379
|
-
G: 1,
|
|
32380
|
-
H: 2,
|
|
32381
|
-
J: 3,
|
|
32382
|
-
K: 4,
|
|
32383
|
-
M: 5,
|
|
32384
|
-
N: 6,
|
|
32385
|
-
Q: 7,
|
|
32386
|
-
U: 8,
|
|
32387
|
-
V: 9,
|
|
32388
|
-
X: 10,
|
|
32389
|
-
Z: 11
|
|
32390
|
-
};
|
|
32391
|
-
function parseContractInfo(symbol) {
|
|
32392
|
-
let input = symbol.trim().toUpperCase();
|
|
32393
|
-
let exchangeHint;
|
|
32394
|
-
if (input.includes(":")) {
|
|
32395
|
-
const colon = input.indexOf(":");
|
|
32396
|
-
exchangeHint = input.slice(0, colon);
|
|
32397
|
-
input = input.slice(colon + 1);
|
|
32398
|
-
}
|
|
32399
|
-
const contMatch = input.match(/^([A-Z0-9]+?)(\d+)!$/);
|
|
32400
|
-
if (contMatch) {
|
|
32401
|
-
const product = contMatch[1];
|
|
32402
|
-
const info = PRODUCTS[product];
|
|
32403
|
-
if (!info) return null;
|
|
32404
|
-
const exchange = exchangeHint ?? info.exchange;
|
|
32405
|
-
const front = _guessFrontMonth(product, info.months);
|
|
32406
|
-
return {
|
|
32407
|
-
isContinuous: true,
|
|
32408
|
-
product,
|
|
32409
|
-
exchange,
|
|
32410
|
-
frontMonthContract: `${exchange}:${front}`,
|
|
32411
|
-
continuousSymbol: `${exchange}:${product}1!`,
|
|
32412
|
-
availableMonths: info.months
|
|
32413
|
-
};
|
|
32414
|
-
}
|
|
32415
|
-
const specificMatch = input.match(/^([A-Z0-9]+?)([FGHJKMNQUVXZ])(\d{1,4})$/);
|
|
32416
|
-
if (specificMatch) {
|
|
32417
|
-
const product = specificMatch[1];
|
|
32418
|
-
const info = PRODUCTS[product];
|
|
32419
|
-
if (!info) return null;
|
|
32420
|
-
const exchange = exchangeHint ?? info.exchange;
|
|
32421
|
-
const front = _guessFrontMonth(product, info.months);
|
|
32422
|
-
return {
|
|
32423
|
-
isContinuous: false,
|
|
32424
|
-
product,
|
|
32425
|
-
exchange,
|
|
32426
|
-
frontMonthContract: `${exchange}:${front}`,
|
|
32427
|
-
continuousSymbol: `${exchange}:${product}1!`,
|
|
32428
|
-
availableMonths: info.months
|
|
32429
|
-
};
|
|
32430
|
-
}
|
|
32431
|
-
if (PRODUCTS[input]) {
|
|
32432
|
-
const info = PRODUCTS[input];
|
|
32433
|
-
const exchange = exchangeHint ?? info.exchange;
|
|
32434
|
-
const front = _guessFrontMonth(input, info.months);
|
|
32435
|
-
return {
|
|
32436
|
-
isContinuous: false,
|
|
32437
|
-
product: input,
|
|
32438
|
-
exchange,
|
|
32439
|
-
frontMonthContract: `${exchange}:${front}`,
|
|
32440
|
-
continuousSymbol: `${exchange}:${input}1!`,
|
|
32441
|
-
availableMonths: info.months
|
|
32442
|
-
};
|
|
32443
|
-
}
|
|
32444
|
-
return null;
|
|
32445
|
-
}
|
|
32446
|
-
function getUpcomingContracts(product, exchange, months, count = 6) {
|
|
32447
|
-
const now = /* @__PURE__ */ new Date();
|
|
32448
|
-
const currentMonth = now.getMonth();
|
|
32449
|
-
const currentYear = now.getFullYear();
|
|
32450
|
-
const contracts = [];
|
|
32451
|
-
for (let yearOffset = 0; yearOffset <= 2 && contracts.length < count; yearOffset++) {
|
|
32452
|
-
const year = currentYear + yearOffset;
|
|
32453
|
-
for (const mc of months) {
|
|
32454
|
-
if (contracts.length >= count) break;
|
|
32455
|
-
const monthIdx = MC_INDEX[mc];
|
|
32456
|
-
if (monthIdx === void 0) continue;
|
|
32457
|
-
if (year === currentYear && monthIdx < currentMonth) continue;
|
|
32458
|
-
contracts.push(`${exchange}:${product}${mc}${year}`);
|
|
32459
|
-
}
|
|
32460
|
-
}
|
|
32461
|
-
return contracts;
|
|
32462
|
-
}
|
|
32463
|
-
function _guessFrontMonth(product, months) {
|
|
32464
|
-
const now = /* @__PURE__ */ new Date();
|
|
32465
|
-
const currentMonth = now.getMonth();
|
|
32466
|
-
const currentYear = now.getFullYear();
|
|
32467
|
-
for (const mc of months) {
|
|
32468
|
-
const monthIdx = MC_INDEX[mc];
|
|
32469
|
-
if (monthIdx === void 0) continue;
|
|
32470
|
-
if (monthIdx >= currentMonth) {
|
|
32471
|
-
return `${product}${mc}${currentYear}`;
|
|
32472
|
-
}
|
|
32473
|
-
}
|
|
32474
|
-
return `${product}${months[0]}${currentYear + 1}`;
|
|
32475
|
-
}
|
|
32476
|
-
|
|
32477
32488
|
// src/react/agent/CommandDispatcher.ts
|
|
32478
32489
|
var CommandDispatcher = class {
|
|
32479
32490
|
constructor(chart) {
|