koishi-plugin-warframe 1.6.5 → 1.6.7

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/lib/index.js CHANGED
@@ -156,7 +156,7 @@ var require_DLList = __commonJS({
156
156
  var require_Events = __commonJS({
157
157
  "node_modules/bottleneck/lib/Events.js"(exports2, module2) {
158
158
  "use strict";
159
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
159
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
160
160
  try {
161
161
  var info = gen[key](arg);
162
162
  var value = info.value;
@@ -165,7 +165,7 @@ var require_Events = __commonJS({
165
165
  return;
166
166
  }
167
167
  if (info.done) {
168
- resolve2(value);
168
+ resolve3(value);
169
169
  } else {
170
170
  Promise.resolve(value).then(_next, _throw);
171
171
  }
@@ -174,14 +174,14 @@ var require_Events = __commonJS({
174
174
  function _asyncToGenerator2(fn) {
175
175
  return function() {
176
176
  var self2 = this, args = arguments;
177
- return new Promise(function(resolve2, reject) {
177
+ return new Promise(function(resolve3, reject) {
178
178
  var gen = fn.apply(self2, args);
179
179
  function _next(value) {
180
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
180
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
181
181
  }
182
182
  __name(_next, "_next");
183
183
  function _throw(err) {
184
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
184
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
185
185
  }
186
186
  __name(_throw, "_throw");
187
187
  _next(void 0);
@@ -384,7 +384,7 @@ var require_BottleneckError = __commonJS({
384
384
  var require_Job = __commonJS({
385
385
  "node_modules/bottleneck/lib/Job.js"(exports2, module2) {
386
386
  "use strict";
387
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
387
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
388
388
  try {
389
389
  var info = gen[key](arg);
390
390
  var value = info.value;
@@ -393,7 +393,7 @@ var require_Job = __commonJS({
393
393
  return;
394
394
  }
395
395
  if (info.done) {
396
- resolve2(value);
396
+ resolve3(value);
397
397
  } else {
398
398
  Promise.resolve(value).then(_next, _throw);
399
399
  }
@@ -402,14 +402,14 @@ var require_Job = __commonJS({
402
402
  function _asyncToGenerator2(fn) {
403
403
  return function() {
404
404
  var self2 = this, args = arguments;
405
- return new Promise(function(resolve2, reject) {
405
+ return new Promise(function(resolve3, reject) {
406
406
  var gen = fn.apply(self2, args);
407
407
  function _next(value) {
408
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
408
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
409
409
  }
410
410
  __name(_next, "_next");
411
411
  function _throw(err) {
412
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
412
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
413
413
  }
414
414
  __name(_throw, "_throw");
415
415
  _next(void 0);
@@ -595,7 +595,7 @@ var require_Job = __commonJS({
595
595
  var require_LocalDatastore = __commonJS({
596
596
  "node_modules/bottleneck/lib/LocalDatastore.js"(exports2, module2) {
597
597
  "use strict";
598
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
598
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
599
599
  try {
600
600
  var info = gen[key](arg);
601
601
  var value = info.value;
@@ -604,7 +604,7 @@ var require_LocalDatastore = __commonJS({
604
604
  return;
605
605
  }
606
606
  if (info.done) {
607
- resolve2(value);
607
+ resolve3(value);
608
608
  } else {
609
609
  Promise.resolve(value).then(_next, _throw);
610
610
  }
@@ -613,14 +613,14 @@ var require_LocalDatastore = __commonJS({
613
613
  function _asyncToGenerator2(fn) {
614
614
  return function() {
615
615
  var self2 = this, args = arguments;
616
- return new Promise(function(resolve2, reject) {
616
+ return new Promise(function(resolve3, reject) {
617
617
  var gen = fn.apply(self2, args);
618
618
  function _next(value) {
619
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
619
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
620
620
  }
621
621
  __name(_next, "_next");
622
622
  function _throw(err) {
623
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
623
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
624
624
  }
625
625
  __name(_throw, "_throw");
626
626
  _next(void 0);
@@ -694,8 +694,8 @@ var require_LocalDatastore = __commonJS({
694
694
  })();
695
695
  }
696
696
  yieldLoop(t2 = 0) {
697
- return new this.Promise(function(resolve2, reject) {
698
- return setTimeout(resolve2, t2);
697
+ return new this.Promise(function(resolve3, reject) {
698
+ return setTimeout(resolve3, t2);
699
699
  });
700
700
  }
701
701
  computePenalty() {
@@ -1154,8 +1154,8 @@ var require_Scripts = __commonJS({
1154
1154
  exports2.payload = function(name2) {
1155
1155
  var template2;
1156
1156
  template2 = templates[name2];
1157
- return Array.prototype.concat(headers.refs, template2.headers.map(function(h) {
1158
- return headers[h];
1157
+ return Array.prototype.concat(headers.refs, template2.headers.map(function(h2) {
1158
+ return headers[h2];
1159
1159
  }), template2.refresh_expiration ? headers.refresh_expiration : "", template2.code).join("\n");
1160
1160
  };
1161
1161
  }
@@ -1165,7 +1165,7 @@ var require_Scripts = __commonJS({
1165
1165
  var require_RedisConnection = __commonJS({
1166
1166
  "node_modules/bottleneck/lib/RedisConnection.js"(exports, module) {
1167
1167
  "use strict";
1168
- function asyncGeneratorStep(gen, resolve2, reject, _next, _throw, key, arg) {
1168
+ function asyncGeneratorStep(gen, resolve3, reject, _next, _throw, key, arg) {
1169
1169
  try {
1170
1170
  var info = gen[key](arg);
1171
1171
  var value = info.value;
@@ -1174,7 +1174,7 @@ var require_RedisConnection = __commonJS({
1174
1174
  return;
1175
1175
  }
1176
1176
  if (info.done) {
1177
- resolve2(value);
1177
+ resolve3(value);
1178
1178
  } else {
1179
1179
  Promise.resolve(value).then(_next, _throw);
1180
1180
  }
@@ -1183,14 +1183,14 @@ var require_RedisConnection = __commonJS({
1183
1183
  function _asyncToGenerator(fn) {
1184
1184
  return function() {
1185
1185
  var self2 = this, args = arguments;
1186
- return new Promise(function(resolve2, reject) {
1186
+ return new Promise(function(resolve3, reject) {
1187
1187
  var gen = fn.apply(self2, args);
1188
1188
  function _next(value) {
1189
- asyncGeneratorStep(gen, resolve2, reject, _next, _throw, "next", value);
1189
+ asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "next", value);
1190
1190
  }
1191
1191
  __name(_next, "_next");
1192
1192
  function _throw(err) {
1193
- asyncGeneratorStep(gen, resolve2, reject, _next, _throw, "throw", err);
1193
+ asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "throw", err);
1194
1194
  }
1195
1195
  __name(_throw, "_throw");
1196
1196
  _next(void 0);
@@ -1236,7 +1236,7 @@ var require_RedisConnection = __commonJS({
1236
1236
  }
1237
1237
  _setup(client, sub) {
1238
1238
  client.setMaxListeners(0);
1239
- return new this.Promise((resolve2, reject) => {
1239
+ return new this.Promise((resolve3, reject) => {
1240
1240
  client.on("error", (e) => {
1241
1241
  return this.Events.trigger("error", e);
1242
1242
  });
@@ -1247,14 +1247,14 @@ var require_RedisConnection = __commonJS({
1247
1247
  });
1248
1248
  }
1249
1249
  if (client.ready) {
1250
- return resolve2();
1250
+ return resolve3();
1251
1251
  } else {
1252
- return client.once("ready", resolve2);
1252
+ return client.once("ready", resolve3);
1253
1253
  }
1254
1254
  });
1255
1255
  }
1256
1256
  _loadScript(name2) {
1257
- return new this.Promise((resolve2, reject) => {
1257
+ return new this.Promise((resolve3, reject) => {
1258
1258
  var payload;
1259
1259
  payload = Scripts.payload(name2);
1260
1260
  return this.client.multi([["script", "load", payload]]).exec((err, replies) => {
@@ -1262,7 +1262,7 @@ var require_RedisConnection = __commonJS({
1262
1262
  return reject(err);
1263
1263
  }
1264
1264
  this.shas[name2] = replies[0];
1265
- return resolve2(replies[0]);
1265
+ return resolve3(replies[0]);
1266
1266
  });
1267
1267
  });
1268
1268
  }
@@ -1275,12 +1275,12 @@ var require_RedisConnection = __commonJS({
1275
1275
  var _this = this;
1276
1276
  return _asyncToGenerator(function* () {
1277
1277
  yield _this.ready;
1278
- return new _this.Promise((resolve2, reject) => {
1278
+ return new _this.Promise((resolve3, reject) => {
1279
1279
  return _this.client.multi([cmd]).exec_atomic(function(err, replies) {
1280
1280
  if (err != null) {
1281
1281
  return reject(err);
1282
1282
  } else {
1283
- return resolve2(replies[0]);
1283
+ return resolve3(replies[0]);
1284
1284
  }
1285
1285
  });
1286
1286
  });
@@ -1288,13 +1288,13 @@ var require_RedisConnection = __commonJS({
1288
1288
  }
1289
1289
  __addLimiter__(instance) {
1290
1290
  return this.Promise.all([instance.channel(), instance.channel_client()].map((channel) => {
1291
- return new this.Promise((resolve2, reject) => {
1291
+ return new this.Promise((resolve3, reject) => {
1292
1292
  var handler;
1293
1293
  handler = /* @__PURE__ */ __name((chan) => {
1294
1294
  if (chan === channel) {
1295
1295
  this.subscriber.removeListener("subscribe", handler);
1296
1296
  this.limiters[channel] = instance;
1297
- return resolve2();
1297
+ return resolve3();
1298
1298
  }
1299
1299
  }, "handler");
1300
1300
  this.subscriber.on("subscribe", handler);
@@ -1308,13 +1308,13 @@ var require_RedisConnection = __commonJS({
1308
1308
  /* @__PURE__ */ (function() {
1309
1309
  var _ref = _asyncToGenerator(function* (channel) {
1310
1310
  if (!_this2.terminated) {
1311
- yield new _this2.Promise((resolve2, reject) => {
1311
+ yield new _this2.Promise((resolve3, reject) => {
1312
1312
  return _this2.subscriber.unsubscribe(channel, function(err, chan) {
1313
1313
  if (err != null) {
1314
1314
  return reject(err);
1315
1315
  }
1316
1316
  if (chan === channel) {
1317
- return resolve2();
1317
+ return resolve3();
1318
1318
  }
1319
1319
  });
1320
1320
  });
@@ -1403,7 +1403,7 @@ var require_IORedisConnection = __commonJS({
1403
1403
  if (Array.isArray(arr)) return arr;
1404
1404
  }
1405
1405
  __name(_arrayWithHoles, "_arrayWithHoles");
1406
- function asyncGeneratorStep(gen, resolve2, reject, _next, _throw, key, arg) {
1406
+ function asyncGeneratorStep(gen, resolve3, reject, _next, _throw, key, arg) {
1407
1407
  try {
1408
1408
  var info = gen[key](arg);
1409
1409
  var value = info.value;
@@ -1412,7 +1412,7 @@ var require_IORedisConnection = __commonJS({
1412
1412
  return;
1413
1413
  }
1414
1414
  if (info.done) {
1415
- resolve2(value);
1415
+ resolve3(value);
1416
1416
  } else {
1417
1417
  Promise.resolve(value).then(_next, _throw);
1418
1418
  }
@@ -1421,14 +1421,14 @@ var require_IORedisConnection = __commonJS({
1421
1421
  function _asyncToGenerator(fn) {
1422
1422
  return function() {
1423
1423
  var self2 = this, args = arguments;
1424
- return new Promise(function(resolve2, reject) {
1424
+ return new Promise(function(resolve3, reject) {
1425
1425
  var gen = fn.apply(self2, args);
1426
1426
  function _next(value) {
1427
- asyncGeneratorStep(gen, resolve2, reject, _next, _throw, "next", value);
1427
+ asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "next", value);
1428
1428
  }
1429
1429
  __name(_next, "_next");
1430
1430
  function _throw(err) {
1431
- asyncGeneratorStep(gen, resolve2, reject, _next, _throw, "throw", err);
1431
+ asyncGeneratorStep(gen, resolve3, reject, _next, _throw, "throw", err);
1432
1432
  }
1433
1433
  __name(_throw, "_throw");
1434
1434
  _next(void 0);
@@ -1479,7 +1479,7 @@ var require_IORedisConnection = __commonJS({
1479
1479
  }
1480
1480
  _setup(client, sub) {
1481
1481
  client.setMaxListeners(0);
1482
- return new this.Promise((resolve2, reject) => {
1482
+ return new this.Promise((resolve3, reject) => {
1483
1483
  client.on("error", (e) => {
1484
1484
  return this.Events.trigger("error", e);
1485
1485
  });
@@ -1490,9 +1490,9 @@ var require_IORedisConnection = __commonJS({
1490
1490
  });
1491
1491
  }
1492
1492
  if (client.status === "ready") {
1493
- return resolve2();
1493
+ return resolve3();
1494
1494
  } else {
1495
- return client.once("ready", resolve2);
1495
+ return client.once("ready", resolve3);
1496
1496
  }
1497
1497
  });
1498
1498
  }
@@ -1518,10 +1518,10 @@ var require_IORedisConnection = __commonJS({
1518
1518
  }
1519
1519
  __addLimiter__(instance) {
1520
1520
  return this.Promise.all([instance.channel(), instance.channel_client()].map((channel) => {
1521
- return new this.Promise((resolve2, reject) => {
1521
+ return new this.Promise((resolve3, reject) => {
1522
1522
  return this.subscriber.subscribe(channel, () => {
1523
1523
  this.limiters[channel] = instance;
1524
- return resolve2();
1524
+ return resolve3();
1525
1525
  });
1526
1526
  });
1527
1527
  }));
@@ -1623,7 +1623,7 @@ var require_RedisDatastore = __commonJS({
1623
1623
  if (Array.isArray(arr)) return arr;
1624
1624
  }
1625
1625
  __name(_arrayWithHoles2, "_arrayWithHoles");
1626
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
1626
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
1627
1627
  try {
1628
1628
  var info = gen[key](arg);
1629
1629
  var value = info.value;
@@ -1632,7 +1632,7 @@ var require_RedisDatastore = __commonJS({
1632
1632
  return;
1633
1633
  }
1634
1634
  if (info.done) {
1635
- resolve2(value);
1635
+ resolve3(value);
1636
1636
  } else {
1637
1637
  Promise.resolve(value).then(_next, _throw);
1638
1638
  }
@@ -1641,14 +1641,14 @@ var require_RedisDatastore = __commonJS({
1641
1641
  function _asyncToGenerator2(fn) {
1642
1642
  return function() {
1643
1643
  var self2 = this, args = arguments;
1644
- return new Promise(function(resolve2, reject) {
1644
+ return new Promise(function(resolve3, reject) {
1645
1645
  var gen = fn.apply(self2, args);
1646
1646
  function _next(value) {
1647
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
1647
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
1648
1648
  }
1649
1649
  __name(_next, "_next");
1650
1650
  function _throw(err) {
1651
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
1651
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
1652
1652
  }
1653
1653
  __name(_throw, "_throw");
1654
1654
  _next(void 0);
@@ -1789,7 +1789,7 @@ var require_RedisDatastore = __commonJS({
1789
1789
  if (!(name2 === "init" || name2 === "register_client")) {
1790
1790
  yield _this3.ready;
1791
1791
  }
1792
- return new _this3.Promise((resolve2, reject) => {
1792
+ return new _this3.Promise((resolve3, reject) => {
1793
1793
  var all_args, arr;
1794
1794
  all_args = [Date.now(), _this3.clientId].concat(args);
1795
1795
  _this3.instance.Events.trigger("debug", `Calling Redis script: ${name2}.lua`, all_args);
@@ -1797,7 +1797,7 @@ var require_RedisDatastore = __commonJS({
1797
1797
  if (err != null) {
1798
1798
  return reject(err);
1799
1799
  }
1800
- return resolve2(replies);
1800
+ return resolve3(replies);
1801
1801
  });
1802
1802
  return _this3.connection.__scriptFn__(name2)(...arr);
1803
1803
  }).catch((e) => {
@@ -2031,7 +2031,7 @@ var require_States = __commonJS({
2031
2031
  var require_Sync = __commonJS({
2032
2032
  "node_modules/bottleneck/lib/Sync.js"(exports2, module2) {
2033
2033
  "use strict";
2034
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
2034
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
2035
2035
  try {
2036
2036
  var info = gen[key](arg);
2037
2037
  var value = info.value;
@@ -2040,7 +2040,7 @@ var require_Sync = __commonJS({
2040
2040
  return;
2041
2041
  }
2042
2042
  if (info.done) {
2043
- resolve2(value);
2043
+ resolve3(value);
2044
2044
  } else {
2045
2045
  Promise.resolve(value).then(_next, _throw);
2046
2046
  }
@@ -2049,14 +2049,14 @@ var require_Sync = __commonJS({
2049
2049
  function _asyncToGenerator2(fn) {
2050
2050
  return function() {
2051
2051
  var self2 = this, args = arguments;
2052
- return new Promise(function(resolve2, reject) {
2052
+ return new Promise(function(resolve3, reject) {
2053
2053
  var gen = fn.apply(self2, args);
2054
2054
  function _next(value) {
2055
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
2055
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
2056
2056
  }
2057
2057
  __name(_next, "_next");
2058
2058
  function _throw(err) {
2059
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
2059
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
2060
2060
  }
2061
2061
  __name(_throw, "_throw");
2062
2062
  _next(void 0);
@@ -2084,19 +2084,19 @@ var require_Sync = __commonJS({
2084
2084
  _tryToRun() {
2085
2085
  var _this = this;
2086
2086
  return _asyncToGenerator2(function* () {
2087
- var args, cb, error, reject, resolve2, returned, task;
2087
+ var args, cb, error, reject, resolve3, returned, task;
2088
2088
  if (_this._running < 1 && _this._queue.length > 0) {
2089
2089
  _this._running++;
2090
2090
  var _this$_queue$shift = _this._queue.shift();
2091
2091
  task = _this$_queue$shift.task;
2092
2092
  args = _this$_queue$shift.args;
2093
- resolve2 = _this$_queue$shift.resolve;
2093
+ resolve3 = _this$_queue$shift.resolve;
2094
2094
  reject = _this$_queue$shift.reject;
2095
2095
  cb = yield _asyncToGenerator2(function* () {
2096
2096
  try {
2097
2097
  returned = yield task(...args);
2098
2098
  return function() {
2099
- return resolve2(returned);
2099
+ return resolve3(returned);
2100
2100
  };
2101
2101
  } catch (error1) {
2102
2102
  error = error1;
@@ -2112,16 +2112,16 @@ var require_Sync = __commonJS({
2112
2112
  })();
2113
2113
  }
2114
2114
  schedule(task, ...args) {
2115
- var promise, reject, resolve2;
2116
- resolve2 = reject = null;
2115
+ var promise, reject, resolve3;
2116
+ resolve3 = reject = null;
2117
2117
  promise = new this.Promise(function(_resolve, _reject) {
2118
- resolve2 = _resolve;
2118
+ resolve3 = _resolve;
2119
2119
  return reject = _reject;
2120
2120
  });
2121
2121
  this._queue.push({
2122
2122
  task,
2123
2123
  args,
2124
- resolve: resolve2,
2124
+ resolve: resolve3,
2125
2125
  reject
2126
2126
  });
2127
2127
  this._tryToRun();
@@ -2178,7 +2178,7 @@ var require_Group = __commonJS({
2178
2178
  if (Array.isArray(arr)) return arr;
2179
2179
  }
2180
2180
  __name(_arrayWithHoles2, "_arrayWithHoles");
2181
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
2181
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
2182
2182
  try {
2183
2183
  var info = gen[key](arg);
2184
2184
  var value = info.value;
@@ -2187,7 +2187,7 @@ var require_Group = __commonJS({
2187
2187
  return;
2188
2188
  }
2189
2189
  if (info.done) {
2190
- resolve2(value);
2190
+ resolve3(value);
2191
2191
  } else {
2192
2192
  Promise.resolve(value).then(_next, _throw);
2193
2193
  }
@@ -2196,14 +2196,14 @@ var require_Group = __commonJS({
2196
2196
  function _asyncToGenerator2(fn) {
2197
2197
  return function() {
2198
2198
  var self2 = this, args = arguments;
2199
- return new Promise(function(resolve2, reject) {
2199
+ return new Promise(function(resolve3, reject) {
2200
2200
  var gen = fn.apply(self2, args);
2201
2201
  function _next(value) {
2202
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
2202
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
2203
2203
  }
2204
2204
  __name(_next, "_next");
2205
2205
  function _throw(err) {
2206
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
2206
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
2207
2207
  }
2208
2208
  __name(_throw, "_throw");
2209
2209
  _next(void 0);
@@ -2480,7 +2480,7 @@ var require_Bottleneck = __commonJS({
2480
2480
  if (Array.isArray(arr)) return arr;
2481
2481
  }
2482
2482
  __name(_arrayWithHoles2, "_arrayWithHoles");
2483
- function asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, key, arg) {
2483
+ function asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, key, arg) {
2484
2484
  try {
2485
2485
  var info = gen[key](arg);
2486
2486
  var value = info.value;
@@ -2489,7 +2489,7 @@ var require_Bottleneck = __commonJS({
2489
2489
  return;
2490
2490
  }
2491
2491
  if (info.done) {
2492
- resolve2(value);
2492
+ resolve3(value);
2493
2493
  } else {
2494
2494
  Promise.resolve(value).then(_next, _throw);
2495
2495
  }
@@ -2498,14 +2498,14 @@ var require_Bottleneck = __commonJS({
2498
2498
  function _asyncToGenerator2(fn) {
2499
2499
  return function() {
2500
2500
  var self2 = this, args = arguments;
2501
- return new Promise(function(resolve2, reject) {
2501
+ return new Promise(function(resolve3, reject) {
2502
2502
  var gen = fn.apply(self2, args);
2503
2503
  function _next(value) {
2504
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "next", value);
2504
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "next", value);
2505
2505
  }
2506
2506
  __name(_next, "_next");
2507
2507
  function _throw(err) {
2508
- asyncGeneratorStep2(gen, resolve2, reject, _next, _throw, "throw", err);
2508
+ asyncGeneratorStep2(gen, resolve3, reject, _next, _throw, "throw", err);
2509
2509
  }
2510
2510
  __name(_throw, "_throw");
2511
2511
  _next(void 0);
@@ -2748,14 +2748,14 @@ var require_Bottleneck = __commonJS({
2748
2748
  counts = this._states.counts;
2749
2749
  return counts[0] + counts[1] + counts[2] + counts[3] === at;
2750
2750
  }, "finished");
2751
- return new this.Promise((resolve2, reject) => {
2751
+ return new this.Promise((resolve3, reject) => {
2752
2752
  if (finished()) {
2753
- return resolve2();
2753
+ return resolve3();
2754
2754
  } else {
2755
2755
  return this.on("done", () => {
2756
2756
  if (finished()) {
2757
2757
  this.removeAllListeners("done");
2758
- return resolve2();
2758
+ return resolve3();
2759
2759
  }
2760
2760
  });
2761
2761
  }
@@ -2863,9 +2863,9 @@ var require_Bottleneck = __commonJS({
2863
2863
  options2 = parser2.load(options2, this.jobDefaults);
2864
2864
  }
2865
2865
  task = /* @__PURE__ */ __name((...args2) => {
2866
- return new this.Promise(function(resolve2, reject) {
2866
+ return new this.Promise(function(resolve3, reject) {
2867
2867
  return fn(...args2, function(...args3) {
2868
- return (args3[0] != null ? reject : resolve2)(args3);
2868
+ return (args3[0] != null ? reject : resolve3)(args3);
2869
2869
  });
2870
2870
  });
2871
2871
  }, "task");
@@ -4240,7 +4240,7 @@ var messages = {
4240
4240
  };
4241
4241
  function t(messageOrResult, params) {
4242
4242
  if (typeof messageOrResult !== "string") {
4243
- return t(messageOrResult.message, messageOrResult.params);
4243
+ return t(messageOrResult.error.code, messageOrResult.error.params);
4244
4244
  }
4245
4245
  let text = messages[messageOrResult];
4246
4246
  for (const [key, value] of Object.entries(params ?? {})) {
@@ -4250,7 +4250,7 @@ function t(messageOrResult, params) {
4250
4250
  }
4251
4251
  __name(t, "t");
4252
4252
 
4253
- // src/utils/assets.ts
4253
+ // src/warframe/utils/assets.ts
4254
4254
  var import_node_fs = require("node:fs");
4255
4255
  var import_node_path = require("node:path");
4256
4256
  var jsonCache = /* @__PURE__ */ new Map();
@@ -4259,7 +4259,7 @@ function assetRoot() {
4259
4259
  if ((0, import_node_path.basename)(__dirname) === "utils") {
4260
4260
  return (0, import_node_path.resolve)(__dirname, "../assets");
4261
4261
  }
4262
- return (0, import_node_path.resolve)(__dirname, "assets");
4262
+ return (0, import_node_path.resolve)(__dirname, "warframe/assets");
4263
4263
  }
4264
4264
  __name(assetRoot, "assetRoot");
4265
4265
  function assetPath(path) {
@@ -4292,7 +4292,7 @@ function loadAssetText(path) {
4292
4292
  }
4293
4293
  __name(loadAssetText, "loadAssetText");
4294
4294
 
4295
- // src/utils/cache.ts
4295
+ // src/warframe/utils/cache.ts
4296
4296
  function createAsyncCache(factory, ttlMs = 6e4) {
4297
4297
  let cache;
4298
4298
  let lastUpdatedAt = 0;
@@ -4326,7 +4326,7 @@ function createAsyncCache(factory, ttlMs = 6e4) {
4326
4326
  }
4327
4327
  __name(createAsyncCache, "createAsyncCache");
4328
4328
 
4329
- // src/utils/collection.ts
4329
+ // src/warframe/utils/collection.ts
4330
4330
  var listToDict = /* @__PURE__ */ __name((dict, predict) => {
4331
4331
  const result = {};
4332
4332
  for (const obj of dict) {
@@ -4352,31 +4352,8 @@ var dictToKeyDict = /* @__PURE__ */ __name((dict, predict) => {
4352
4352
  return result;
4353
4353
  }, "dictToKeyDict");
4354
4354
 
4355
- // src/utils/color.ts
4356
- function lerp(start, end, t2) {
4357
- return Math.round(start + (end - start) * t2);
4358
- }
4359
- __name(lerp, "lerp");
4360
- function hexToRgb(hex) {
4361
- const r = Number.parseInt(hex.slice(1, 3), 16);
4362
- const g = Number.parseInt(hex.slice(3, 5), 16);
4363
- const b = Number.parseInt(hex.slice(5, 7), 16);
4364
- return { r, g, b };
4365
- }
4366
- __name(hexToRgb, "hexToRgb");
4367
- function rgbToHex(r, g, b) {
4368
- return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
4369
- }
4370
- __name(rgbToHex, "rgbToHex");
4371
-
4372
- // src/utils/http.ts
4355
+ // src/warframe/utils/http.ts
4373
4356
  var import_ofetch = require("ofetch");
4374
-
4375
- // src/utils/logger.ts
4376
- var import_koishi = require("koishi");
4377
- var logger = new import_koishi.Logger("koishi-plugin-warframe");
4378
-
4379
- // src/utils/http.ts
4380
4357
  var defaultHeaders = {
4381
4358
  "Accept": "text/html,application/json;q=0.9,image/*;q=0.8,*/*;q=0.8",
4382
4359
  "Accept-Language": "zh-CN,zh-Hans;q=0.9",
@@ -4394,11 +4371,7 @@ async function request(url, method, responseType) {
4394
4371
  retryDelay: 500,
4395
4372
  retryStatusCodes: [408, 429, 500, 502, 503, 504]
4396
4373
  });
4397
- } catch (err) {
4398
- const e = err;
4399
- const status = e.statusCode ?? "network";
4400
- const detail = e.data && typeof e.data === "object" ? JSON.stringify(e.data) : e.data ?? e.message ?? "";
4401
- logger.error(`[HTTP] ${method} ${url} -> ${status} ${detail}`.trimEnd());
4374
+ } catch {
4402
4375
  return void 0;
4403
4376
  }
4404
4377
  }
@@ -4416,7 +4389,7 @@ async function fetchAsyncImage(url, method = "GET") {
4416
4389
  }
4417
4390
  __name(fetchAsyncImage, "fetchAsyncImage");
4418
4391
 
4419
- // src/utils/text.ts
4392
+ // src/warframe/utils/text.ts
4420
4393
  function normalizeName(text) {
4421
4394
  return fullWidthToHalfWidth(text).toLowerCase().replace(/[·'\-+()【】[\]{},。!?;:_]/g, "").replace(/\s+/g, "");
4422
4395
  }
@@ -4482,7 +4455,7 @@ function tokenSimilarity(a, b) {
4482
4455
  }
4483
4456
  __name(tokenSimilarity, "tokenSimilarity");
4484
4457
 
4485
- // src/utils/time.ts
4458
+ // src/warframe/utils/time.ts
4486
4459
  function toTimeStamp(timeStr) {
4487
4460
  return new Date(timeStr).getTime();
4488
4461
  }
@@ -4506,7 +4479,7 @@ function msToHumanReadable(ms) {
4506
4479
  }
4507
4480
  __name(msToHumanReadable, "msToHumanReadable");
4508
4481
 
4509
- // src/infrastructure/miscs/lab-api.ts
4482
+ // src/warframe/infrastructure/miscs/lab-api.ts
4510
4483
  async function getHotRivenWeapons(num = 30) {
4511
4484
  const response = await fetchAsyncData(
4512
4485
  `https://lab.webutilitykit.com/api/RivenTracker/hot-weapons?limit=${num}&sortBy=price`
@@ -4515,30 +4488,43 @@ async function getHotRivenWeapons(num = 30) {
4515
4488
  }
4516
4489
  __name(getHotRivenWeapons, "getHotRivenWeapons");
4517
4490
 
4518
- // src/data/miscs/lab.ts
4491
+ // src/warframe/data/miscs/lab.ts
4519
4492
  var globalHotRivenWeapons = createAsyncCache(async () => {
4520
4493
  const items = await getHotRivenWeapons(40);
4521
4494
  return items || [];
4522
4495
  }, 18e5);
4523
4496
 
4524
- // src/services/miscs-service.ts
4497
+ // src/warframe/types/warframe-result.ts
4498
+ function failure(code, retryable = false, params) {
4499
+ return {
4500
+ ok: false,
4501
+ error: {
4502
+ code,
4503
+ retryable,
4504
+ ...params ? { params } : {}
4505
+ }
4506
+ };
4507
+ }
4508
+ __name(failure, "failure");
4509
+
4510
+ // src/warframe/services/miscs-service.ts
4525
4511
  async function getHotRivenWeapons2() {
4526
4512
  try {
4527
4513
  const result = await globalHotRivenWeapons.get();
4528
4514
  if (!result || result.length === 0) {
4529
- return { ok: false, message: "miscs.hotRiven.noData" };
4515
+ return failure("miscs.hotRiven.noData");
4530
4516
  }
4531
4517
  return { ok: true, data: result };
4532
4518
  } catch {
4533
- return { ok: false, message: "miscs.hotRiven.fetchFailed" };
4519
+ return failure("miscs.hotRiven.fetchFailed", true);
4534
4520
  }
4535
4521
  }
4536
4522
  __name(getHotRivenWeapons2, "getHotRivenWeapons");
4537
4523
 
4538
- // src/services/wf-service.ts
4524
+ // src/warframe/services/wf-service.ts
4539
4525
  var import_warframe_public_export_plus6 = require("warframe-public-export-plus");
4540
4526
 
4541
- // src/assets/index.ts
4527
+ // src/warframe/assets/index.ts
4542
4528
  var {
4543
4529
  incarnons,
4544
4530
  warframes
@@ -4553,7 +4539,7 @@ var Baro = loadAssetText("baro.txt");
4553
4539
  var BaroParsed = loadAssetJson("baroParsed.json");
4554
4540
  var warframeAlias = loadAssetJson("warframeAlias.json");
4555
4541
 
4556
- // src/data/wf/arbitrationSchedule.ts
4542
+ // src/warframe/data/wf/arbitrationSchedule.ts
4557
4543
  var arbitrationSchedule = arbitrationScheduleText.split("\n").map((line) => line.split(",")).filter((arr) => arr.length === 2).map((arr) => {
4558
4544
  return {
4559
4545
  time: parseInt(arr[0]),
@@ -4561,10 +4547,10 @@ var arbitrationSchedule = arbitrationScheduleText.split("\n").map((line) => line
4561
4547
  };
4562
4548
  });
4563
4549
 
4564
- // src/data/wf/globalWorldState.ts
4550
+ // src/warframe/data/wf/globalWorldState.ts
4565
4551
  var import_warframe_public_export_plus3 = require("warframe-public-export-plus");
4566
4552
 
4567
- // src/infrastructure/wf/wf-api.ts
4553
+ // src/warframe/infrastructure/wf/wf-api.ts
4568
4554
  var apiBase = "https://api.warframe.com/cdn/";
4569
4555
  async function getWorldState(json) {
4570
4556
  if (!json) {
@@ -4735,7 +4721,7 @@ async function getVoidTraderHistory(data) {
4735
4721
  }
4736
4722
  __name(getVoidTraderHistory, "getVoidTraderHistory");
4737
4723
 
4738
- // src/infrastructure/wf/wf-export-adapter.ts
4724
+ // src/warframe/infrastructure/wf/wf-export-adapter.ts
4739
4725
  var import_warframe_public_export_plus = require("warframe-public-export-plus");
4740
4726
  function regionToShort(region, dict) {
4741
4727
  let faction;
@@ -4768,7 +4754,7 @@ function fixRelicRewardKey(item) {
4768
4754
  }
4769
4755
  __name(fixRelicRewardKey, "fixRelicRewardKey");
4770
4756
 
4771
- // src/infrastructure/wf/wfcd-adapter.ts
4757
+ // src/warframe/infrastructure/wf/wfcd-adapter.ts
4772
4758
  var import_warframe_public_export_plus2 = require("warframe-public-export-plus");
4773
4759
  function relicToFullNameZH(tier, category) {
4774
4760
  return `${import_warframe_public_export_plus2.dict_zh[relicEraToTransKey(tier)] ?? toPascalCase(tier)} ${category} 遗物`;
@@ -4866,7 +4852,7 @@ function getVoidTraderItemName(sourceKey) {
4866
4852
  }
4867
4853
  __name(getVoidTraderItemName, "getVoidTraderItemName");
4868
4854
 
4869
- // src/data/wf/globalWorldState.ts
4855
+ // src/warframe/data/wf/globalWorldState.ts
4870
4856
  var globalWorldState = createAsyncCache(async () => {
4871
4857
  const worldState = await getWorldState();
4872
4858
  const fissures = [];
@@ -4898,7 +4884,7 @@ var globalWorldState = createAsyncCache(async () => {
4898
4884
  return { raw: worldState, fissures, spFissures, rjFissures };
4899
4885
  }, 12e4);
4900
4886
 
4901
- // src/data/wf/relics.ts
4887
+ // src/warframe/data/wf/relics.ts
4902
4888
  var import_warframe_public_export_plus4 = require("warframe-public-export-plus");
4903
4889
  var relics = (() => {
4904
4890
  const result = {};
@@ -4926,7 +4912,7 @@ var relics = (() => {
4926
4912
  return result;
4927
4913
  })();
4928
4914
 
4929
- // src/data/wf/rivenBaseValues.ts
4915
+ // src/warframe/data/wf/rivenBaseValues.ts
4930
4916
  var rivenAttrValueDict = (() => {
4931
4917
  const dict = {};
4932
4918
  for (const key in rivenAttrValues) {
@@ -4941,7 +4927,7 @@ var rivenAttrValueDict = (() => {
4941
4927
  return dict;
4942
4928
  })();
4943
4929
 
4944
- // src/data/wf/rivenDisposition.ts
4930
+ // src/warframe/data/wf/rivenDisposition.ts
4945
4931
  var import_warframe_public_export_plus5 = require("warframe-public-export-plus");
4946
4932
  var weaponRivenDispositionDict = (() => {
4947
4933
  const mapped = rivenCalc.weapons.reduce(
@@ -4989,7 +4975,7 @@ var weaponRivenDispositionDict = (() => {
4989
4975
  ]);
4990
4976
  })();
4991
4977
 
4992
- // src/data/wf/rivenStatData.ts
4978
+ // src/warframe/data/wf/rivenStatData.ts
4993
4979
  var rivenStatFixFactor = {
4994
4980
  2: { buffFactor: 0.99, buffCount: 2, curseFactor: 0, curseCount: 0 },
4995
4981
  21: {
@@ -5191,10 +5177,10 @@ function resolveLimiter(rateLimit) {
5191
5177
  }
5192
5178
  __name(resolveLimiter, "resolveLimiter");
5193
5179
 
5194
- // src/infrastructure/wfm-client.ts
5180
+ // src/warframe/infrastructure/wfm-client.ts
5195
5181
  var wfmClient = createWfmApiClient();
5196
5182
 
5197
- // src/data/wfm/globalRivenAttribute.ts
5183
+ // src/warframe/data/wfm/globalRivenAttribute.ts
5198
5184
  async function globalRivenAttributeFactory(rivenAttributeData) {
5199
5185
  rivenAttributeData ??= await wfmClient.rivens.getAttributes();
5200
5186
  if (!rivenAttributeData) {
@@ -5218,7 +5204,7 @@ var globalRivenAttribute = createAsyncCache(
5218
5204
  -1
5219
5205
  );
5220
5206
 
5221
- // src/data/wfm/globalRivenItem.ts
5207
+ // src/warframe/data/wfm/globalRivenItem.ts
5222
5208
  function normalizeWordPrefixName(input) {
5223
5209
  return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
5224
5210
  }
@@ -5294,7 +5280,7 @@ var globalRivenItemData = createAsyncCache(async () => {
5294
5280
  return globalRivenItemFactory();
5295
5281
  }, -1);
5296
5282
 
5297
- // src/infrastructure/ocr-api.ts
5283
+ // src/warframe/infrastructure/ocr-api.ts
5298
5284
  var import_node_buffer = require("node:buffer");
5299
5285
  var import_node_crypto = __toESM(require("node:crypto"));
5300
5286
  var import_async_cache_dedupe = require("async-cache-dedupe");
@@ -5345,24 +5331,23 @@ async function extractTextFromImage(image, secret) {
5345
5331
  const hash = getImageBase64Hash(image);
5346
5332
  try {
5347
5333
  return await ocrCache.extract({ hash, image, secret });
5348
- } catch (err) {
5349
- logger.error("OCR request error:", err);
5334
+ } catch {
5350
5335
  return void 0;
5351
5336
  }
5352
5337
  }
5353
5338
  __name(extractTextFromImage, "extractTextFromImage");
5354
5339
 
5355
- // src/services/wf-service.ts
5340
+ // src/warframe/services/wf-service.ts
5356
5341
  async function getRelic(input) {
5357
5342
  if (!input) {
5358
- return { ok: false, message: "relic.invalidName" };
5343
+ return failure("relic.invalidName");
5359
5344
  }
5360
5345
  input = normalizeName(input);
5361
5346
  if (!input) {
5362
- return { ok: false, message: "relic.invalidName" };
5347
+ return failure("relic.invalidName");
5363
5348
  }
5364
5349
  if (!relics) {
5365
- return { ok: false, message: "relic.dataLoading" };
5350
+ return failure("relic.dataLoading", true);
5366
5351
  }
5367
5352
  const tierListForMatch = [
5368
5353
  "古纪",
@@ -5380,7 +5365,7 @@ async function getRelic(input) {
5380
5365
  ].map((t2) => normalizeName(t2));
5381
5366
  const tier = tierListForMatch.find((t2) => input.startsWith(t2));
5382
5367
  if (!tier) {
5383
- return { ok: false, message: "relic.invalidName" };
5368
+ return failure("relic.invalidName");
5384
5369
  }
5385
5370
  const category = input.replace(new RegExp(`^${tier}`), "").replace(/遗物$|relic$/, "");
5386
5371
  const zhTierMap = {
@@ -5393,12 +5378,12 @@ async function getRelic(input) {
5393
5378
  };
5394
5379
  const enTier = zhTierMap[tier] ?? tier;
5395
5380
  const key = normalizeName(enTier + category);
5396
- return relics[key] ? { ok: true, data: relics[key] } : { ok: false, message: "relic.notFound" };
5381
+ return relics[key] ? { ok: true, data: relics[key] } : failure("relic.notFound");
5397
5382
  }
5398
5383
  __name(getRelic, "getRelic");
5399
5384
  function getArbitrations(day = 3) {
5400
5385
  if (day > 14 || day <= 0) {
5401
- return { ok: false, message: "arbitration.invalidDayRange" };
5386
+ return failure("arbitration.invalidDayRange");
5402
5387
  }
5403
5388
  const currentHourTimeStamp = Math.floor(
5404
5389
  (/* @__PURE__ */ new Date()).setUTCMinutes(0, 0, 0) / 1e3
@@ -5437,7 +5422,7 @@ __name(getArbitrations, "getArbitrations");
5437
5422
  async function getWeekly() {
5438
5423
  const { raw: worldState } = await globalWorldState.get();
5439
5424
  if (!worldState) {
5440
- return { ok: false, message: "common.fetchFailed" };
5425
+ return failure("common.fetchFailed", true);
5441
5426
  }
5442
5427
  const archon = {
5443
5428
  name: import_warframe_public_export_plus6.dict_zh[`/Lotus/Language/Narmer/${removeSpace(worldState.archonHunt.boss)}`],
@@ -5574,31 +5559,31 @@ function getCircuitWeek() {
5574
5559
  __name(getCircuitWeek, "getCircuitWeek");
5575
5560
  async function getFissures() {
5576
5561
  const { fissures } = await globalWorldState.get();
5577
- return fissures ? { ok: true, data: fissures } : { ok: false, message: "common.fetchFailed" };
5562
+ return fissures ? { ok: true, data: fissures } : failure("common.fetchFailed", true);
5578
5563
  }
5579
5564
  __name(getFissures, "getFissures");
5580
5565
  async function getSteelPathFissures() {
5581
5566
  const { spFissures } = await globalWorldState.get();
5582
- return spFissures ? { ok: true, data: spFissures } : { ok: false, message: "common.fetchFailed" };
5567
+ return spFissures ? { ok: true, data: spFissures } : failure("common.fetchFailed", true);
5583
5568
  }
5584
5569
  __name(getSteelPathFissures, "getSteelPathFissures");
5585
5570
  async function getRailjackFissures() {
5586
5571
  const { rjFissures } = await globalWorldState.get();
5587
- return rjFissures ? { ok: true, data: rjFissures } : { ok: false, message: "common.fetchFailed" };
5572
+ return rjFissures ? { ok: true, data: rjFissures } : failure("common.fetchFailed", true);
5588
5573
  }
5589
5574
  __name(getRailjackFissures, "getRailjackFissures");
5590
5575
  async function getAnalyzedRiven(secret, url) {
5591
5576
  const img = await fetchAsyncImage(url);
5592
5577
  if (!img) {
5593
- return { ok: false, message: "riven.imageFetchFailed" };
5578
+ return failure("riven.imageFetchFailed", true);
5594
5579
  }
5595
5580
  const extractResult = await extractTextFromImage(img, secret);
5596
5581
  if (!extractResult) {
5597
- return { ok: false, message: "riven.imageParseFailed" };
5582
+ return failure("riven.imageParseFailed");
5598
5583
  }
5599
5584
  const parseResult = await parseOCRResult(extractResult);
5600
5585
  if (!parseResult || parseResult.attributes.length < 2 || parseResult.attributes.length > 4) {
5601
- return { ok: false, message: "riven.imageParseFailed" };
5586
+ return failure("riven.imageParseFailed");
5602
5587
  }
5603
5588
  return analyzeRivenStat(parseResult);
5604
5589
  }
@@ -5606,12 +5591,12 @@ __name(getAnalyzedRiven, "getAnalyzedRiven");
5606
5591
  async function getVoidTrader() {
5607
5592
  const { raw: worldState } = await globalWorldState.get();
5608
5593
  if (worldState.voidTraders.length === 0) {
5609
- return { ok: false, message: "voidTrader.drifting" };
5594
+ return failure("voidTrader.drifting");
5610
5595
  }
5611
5596
  const trader = worldState.voidTraders[0];
5612
5597
  if (trader && trader.activation && trader.activation.getTime() > Date.now()) {
5613
5598
  const diff2 = trader.activation.getTime() - Date.now();
5614
- return { ok: false, message: "voidTrader.arriving", params: { time: msToHumanReadable(diff2) } };
5599
+ return failure("voidTrader.arriving", false, { time: msToHumanReadable(diff2) });
5615
5600
  }
5616
5601
  const diff = trader.expiry.getTime() - Date.now();
5617
5602
  const items = trader.inventory.map(getVoidTraderItem);
@@ -5654,7 +5639,7 @@ async function getWeeklyRivens(minPrice) {
5654
5639
  __name(getWeeklyRivens, "getWeeklyRivens");
5655
5640
  async function getStaticRivenStats(weaponType, statType, disposition) {
5656
5641
  if (disposition > 1.55 || disposition < 0.5) {
5657
- return { ok: false, message: "riven.dispositionError" };
5642
+ return failure("riven.dispositionError");
5658
5643
  }
5659
5644
  const weaponTypes = [
5660
5645
  "步枪",
@@ -5672,7 +5657,7 @@ async function getStaticRivenStats(weaponType, statType, disposition) {
5672
5657
  (v) => normalizeName(v).startsWith(normalizeName(weaponType))
5673
5658
  );
5674
5659
  if (!matchedWeaponType) {
5675
- return { ok: false, message: "riven.weaponTypeError" };
5660
+ return failure("riven.weaponTypeError");
5676
5661
  }
5677
5662
  const weaponTypeKeys = {
5678
5663
  步枪: "Rifle",
@@ -5684,7 +5669,7 @@ async function getStaticRivenStats(weaponType, statType, disposition) {
5684
5669
  const weaponTypeKey = weaponTypeKeys[matchedWeaponType] ?? matchedWeaponType;
5685
5670
  const statTypes = ["2", "3", "21", "31"];
5686
5671
  if (!statTypes.includes(statType)) {
5687
- return { ok: false, message: "riven.statTypeError" };
5672
+ return failure("riven.statTypeError");
5688
5673
  }
5689
5674
  const rivenAttrValues2 = rivenAttrValueDict[weaponTypeKey];
5690
5675
  const factor = rivenStatFixFactor[statType];
@@ -5871,11 +5856,9 @@ __name(parseOCRResult, "parseOCRResult");
5871
5856
  function analyzeRivenStat(parseResult) {
5872
5857
  const weaponRiven = getWeaponRivenDisposition(parseResult.name);
5873
5858
  if (!weaponRiven) {
5874
- return {
5875
- ok: false,
5876
- message: "riven.weaponNotFound",
5877
- params: { weapon: parseResult.name }
5878
- };
5859
+ return failure("riven.weaponNotFound", false, {
5860
+ weapon: parseResult.name
5861
+ });
5879
5862
  }
5880
5863
  const disposition = weaponRiven.calc.disposition;
5881
5864
  const weaponType = weaponRiven.calc.riventype;
@@ -5940,10 +5923,10 @@ function analyzeRivenStat(parseResult) {
5940
5923
  }
5941
5924
  __name(analyzeRivenStat, "analyzeRivenStat");
5942
5925
 
5943
- // src/services/wfm-service/index.ts
5926
+ // src/warframe/services/wfm-service/index.ts
5944
5927
  var import_warframe_public_export_plus7 = require("warframe-public-export-plus");
5945
5928
 
5946
- // src/data/wfm/globalDucatnator.ts
5929
+ // src/warframe/data/wfm/globalDucatnator.ts
5947
5930
  var globalDucatnatorIDDict = createAsyncCache(async () => {
5948
5931
  const data = await wfmClient.tools.getDucatnator();
5949
5932
  if (!data) {
@@ -5952,7 +5935,7 @@ var globalDucatnatorIDDict = createAsyncCache(async () => {
5952
5935
  return listToDict(data.hour, (d) => [d.item]);
5953
5936
  }, 36e5);
5954
5937
 
5955
- // src/data/wfm/globalItem.ts
5938
+ // src/warframe/data/wfm/globalItem.ts
5956
5939
  function normalizeWordPrefixName2(input) {
5957
5940
  return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
5958
5941
  }
@@ -6037,7 +6020,7 @@ async function globalItemDataFactory(response) {
6037
6020
  __name(globalItemDataFactory, "globalItemDataFactory");
6038
6021
  var globalItemData = createAsyncCache(globalItemDataFactory, -1);
6039
6022
 
6040
- // src/services/wfm-service/wfm-service.item-matcher.ts
6023
+ // src/warframe/services/wfm-service/wfm-service.item-matcher.ts
6041
6024
  var wfmItemMatcher = (() => {
6042
6025
  const setSuffix = "一套";
6043
6026
  const bpSuffix = "蓝图";
@@ -6297,7 +6280,7 @@ var shortHandProcess = wfmItemMatcher.shortHandProcess;
6297
6280
  var stringToWFMItem = wfmItemMatcher.stringToWFMItem;
6298
6281
  var transformByWarframeAlias = wfmItemMatcher.transformByWarframeAlias;
6299
6282
 
6300
- // src/services/wfm-service/wfm-service.riven-item-matcher.ts
6283
+ // src/warframe/services/wfm-service/wfm-service.riven-item-matcher.ts
6301
6284
  function normalizeWordPrefixName4(input) {
6302
6285
  return fullWidthToHalfWidth(input).toLowerCase().replace(/[·'()+【】[\]{},。!?;:_]/g, " ").replace(/[-/\\]/g, " ").replace(/\s+/g, " ").trim();
6303
6286
  }
@@ -6425,7 +6408,7 @@ async function findRivenItemByName(input, globalRivenItemList) {
6425
6408
  }
6426
6409
  __name(findRivenItemByName, "findRivenItemByName");
6427
6410
 
6428
- // src/services/wfm-service/index.ts
6411
+ // src/warframe/services/wfm-service/index.ts
6429
6412
  async function updateCache() {
6430
6413
  const updateTasks = [
6431
6414
  { name: "globalItemData", fn: globalItemData.update() },
@@ -6446,10 +6429,10 @@ async function updateCache() {
6446
6429
  }
6447
6430
  __name(updateCache, "updateCache");
6448
6431
  async function getItemOrders(input) {
6449
- input = input.trim();
6450
- if (!input) {
6451
- return { ok: false, message: "wfm.inputItemName" };
6432
+ if (!input || !input.trim()) {
6433
+ return failure("wfm.inputItemName");
6452
6434
  }
6435
+ input = input.trim();
6453
6436
  const isFullLevel = /^满级|满级$/.test(normalizeName(input));
6454
6437
  if (isFullLevel) {
6455
6438
  if (input.startsWith("满级")) {
@@ -6460,18 +6443,18 @@ async function getItemOrders(input) {
6460
6443
  }
6461
6444
  const targetItem = await stringToWFMItem(input);
6462
6445
  if (!targetItem) {
6463
- return { ok: false, message: "wfm.itemNotFound", params: { input } };
6446
+ return failure("wfm.itemNotFound", false, { input });
6464
6447
  }
6465
6448
  const itemId = targetItem.slug;
6466
6449
  const data = await wfmClient.items.getOrders(itemId);
6467
6450
  if (!data) {
6468
- return { ok: false, message: "wfm.orderFetchFailed" };
6451
+ return failure("wfm.orderFetchFailed", true);
6469
6452
  }
6470
6453
  const result = data.filter(
6471
6454
  (order) => order.user.status === "ingame" && order.visible && order.type === "sell" && (!isFullLevel || order.rank === targetItem.maxRank)
6472
- ).sort((a, b) => toTimeStamp(b.updatedAt) - toTimeStamp(a.updatedAt)).sort((a, b) => a.platinum - b.platinum).slice(0, 5);
6455
+ ).sort((a, b) => toTimeStamp(b.updatedAt) - toTimeStamp(a.updatedAt)).sort((a, b) => a.platinum - b.platinum).slice(0, 8);
6473
6456
  if (result.length === 0) {
6474
- return { ok: false, message: "wfm.noOnlineSeller" };
6457
+ return failure("wfm.noOnlineSeller");
6475
6458
  }
6476
6459
  return {
6477
6460
  ok: true,
@@ -6480,21 +6463,25 @@ async function getItemOrders(input) {
6480
6463
  }
6481
6464
  __name(getItemOrders, "getItemOrders");
6482
6465
  async function getRivenOrders(input) {
6466
+ if (!input || !input.trim()) {
6467
+ return failure("wfm.inputItemName");
6468
+ }
6469
+ input = input.trim();
6483
6470
  const { globalRivenAttributeDict } = await globalRivenAttribute.get();
6484
6471
  const targetItem = await findRivenItemByName(input);
6485
6472
  if (!targetItem) {
6486
- return { ok: false, message: "wfm.rivenWeaponNotFound", params: { input } };
6473
+ return failure("wfm.rivenWeaponNotFound", false, { input });
6487
6474
  }
6488
6475
  const itemId = targetItem.slug;
6489
6476
  const data = await wfmClient.rivens.getOrders(itemId);
6490
6477
  if (!data) {
6491
- return { ok: false, message: "wfm.rivenOrderFetchFailed" };
6478
+ return failure("wfm.rivenOrderFetchFailed", true);
6492
6479
  }
6493
6480
  const top5 = data.filter(
6494
6481
  (order) => order.owner.status === "ingame" && order.visible && !order.private && !order.closed && order.is_direct_sell
6495
6482
  ).sort((a, b) => toTimeStamp(b.updated) - toTimeStamp(a.updated)).sort((a, b) => a.starting_price - b.starting_price).slice(0, 5);
6496
6483
  if (top5.length === 0) {
6497
- return { ok: false, message: "wfm.noOnlineRivenSeller" };
6484
+ return failure("wfm.noOnlineRivenSeller");
6498
6485
  }
6499
6486
  const orders = top5.map((e) => {
6500
6487
  const transformed = e.item.attributes.map(
@@ -6620,6 +6607,54 @@ function createMiscsCommands(deps) {
6620
6607
  }
6621
6608
  __name(createMiscsCommands, "createMiscsCommands");
6622
6609
 
6610
+ // src/utils/assets.ts
6611
+ var import_node_fs2 = require("node:fs");
6612
+ var import_node_path2 = require("node:path");
6613
+ var textCache2 = /* @__PURE__ */ new Map();
6614
+ function assetRoot2() {
6615
+ if ((0, import_node_path2.basename)(__dirname) === "utils") {
6616
+ return (0, import_node_path2.resolve)(__dirname, "../assets");
6617
+ }
6618
+ return (0, import_node_path2.resolve)(__dirname, "assets");
6619
+ }
6620
+ __name(assetRoot2, "assetRoot");
6621
+ function assetPath2(path) {
6622
+ const root = assetRoot2();
6623
+ const resolved = (0, import_node_path2.resolve)(root, path);
6624
+ if (resolved !== root && !resolved.startsWith(`${root}${import_node_path2.sep}`)) {
6625
+ throw new Error(`Invalid asset path: ${path}`);
6626
+ }
6627
+ return resolved;
6628
+ }
6629
+ __name(assetPath2, "assetPath");
6630
+ function loadAssetText2(path) {
6631
+ const resolved = assetPath2(path);
6632
+ if (textCache2.has(resolved)) {
6633
+ return textCache2.get(resolved);
6634
+ }
6635
+ const data = (0, import_node_fs2.readFileSync)(resolved, "utf8");
6636
+ textCache2.set(resolved, data);
6637
+ return data;
6638
+ }
6639
+ __name(loadAssetText2, "loadAssetText");
6640
+
6641
+ // src/utils/color.ts
6642
+ function lerp(start, end, t2) {
6643
+ return Math.round(start + (end - start) * t2);
6644
+ }
6645
+ __name(lerp, "lerp");
6646
+ function hexToRgb(hex) {
6647
+ const r = Number.parseInt(hex.slice(1, 3), 16);
6648
+ const g = Number.parseInt(hex.slice(3, 5), 16);
6649
+ const b = Number.parseInt(hex.slice(5, 7), 16);
6650
+ return { r, g, b };
6651
+ }
6652
+ __name(hexToRgb, "hexToRgb");
6653
+ function rgbToHex(r, g, b) {
6654
+ return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
6655
+ }
6656
+ __name(rgbToHex, "rgbToHex");
6657
+
6623
6658
  // src/components/wf.tsx
6624
6659
  var import_jsx_runtime2 = require("@satorijs/element/jsx-runtime");
6625
6660
  function ArbitrationComponent(arbi) {
@@ -8322,6 +8357,47 @@ function createWfCommands(deps) {
8322
8357
  }
8323
8358
  __name(createWfCommands, "createWfCommands");
8324
8359
 
8360
+ // src/components/render.tsx
8361
+ var import_koishi = require("koishi");
8362
+ var style = loadAssetText2("render.css");
8363
+ var svg = loadAssetText2("render-icons.svg");
8364
+ var template = loadAssetText2("render.html");
8365
+ var slots = {
8366
+ body: "<!-- __WARFRAME_RENDER_SLOT_BODY__ -->",
8367
+ title: "__WARFRAME_RENDER_SLOT_TITLE__",
8368
+ style: "/* __WARFRAME_RENDER_SLOT_STYLE__ */",
8369
+ svg: "<!-- __WARFRAME_RENDER_SLOT_SVG__ -->"
8370
+ };
8371
+ function htmlString(htmlString2, title = "title") {
8372
+ return template.replace(slots.body, () => htmlString2).replace(slots.title, () => title).replace(slots.style, () => style).replace(slots.svg, () => svg);
8373
+ }
8374
+ __name(htmlString, "htmlString");
8375
+ async function generateImageOutput(puppe, element) {
8376
+ if (!puppe) {
8377
+ return "本功能需要启用 koishi-plugin-puppeteer 插件";
8378
+ }
8379
+ return puppe.render(
8380
+ htmlString(element.toString()),
8381
+ async (page, next) => {
8382
+ const handle = await page.$("#root>*");
8383
+ return next(handle ?? void 0);
8384
+ }
8385
+ );
8386
+ }
8387
+ __name(generateImageOutput, "generateImageOutput");
8388
+ async function generateImageElementOutput(puppe, element) {
8389
+ return puppe.render(
8390
+ htmlString(element.toString()),
8391
+ async (page) => {
8392
+ const handle = await page.$("#root>*");
8393
+ const clip = await handle?.boundingBox() ?? void 0;
8394
+ const buffer = await page.screenshot({ clip });
8395
+ return import_koishi.h.image(buffer, "image/png");
8396
+ }
8397
+ );
8398
+ }
8399
+ __name(generateImageElementOutput, "generateImageElementOutput");
8400
+
8325
8401
  // src/components/wfm.tsx
8326
8402
  var import_jsx_runtime3 = require("@satorijs/element/jsx-runtime");
8327
8403
  function ItemOrderComponent(item, orders) {
@@ -8363,9 +8439,10 @@ function ItemOrderComponent(item, orders) {
8363
8439
  /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("table", { style: "width:100%;", children: [
8364
8440
  /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("tr", { children: [
8365
8441
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:40%;", children: "玩家名" }),
8366
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:30%;", children: "状态" }),
8442
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:20%;", children: "状态" }),
8367
8443
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "价格" }),
8368
8444
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "数量" }),
8445
+ item.maxRank && item.maxRank > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "等级" }) : null,
8369
8446
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("th", { style: "width:10%;", children: "好评" })
8370
8447
  ] }),
8371
8448
  orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("tr", { children: [
@@ -8373,14 +8450,10 @@ function ItemOrderComponent(item, orders) {
8373
8450
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.user.status }),
8374
8451
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.platinum }),
8375
8452
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.quantity }),
8453
+ item.maxRank && item.maxRank > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.rank }) : null,
8376
8454
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", { children: order.user.reputation })
8377
8455
  ] }))
8378
- ] }),
8379
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: "text-align: center; margin-top: 30px; font-size: 25px;", children: (() => {
8380
- const firstOrder = orders[0];
8381
- const comment = `/w ${firstOrder.user.ingameName} Hi! I want to buy: "${itemNameEN}${!item.maxRank || item.maxRank === 0 ? "" : ` (rank ${firstOrder.rank})`}" for ${firstOrder.platinum} platinum. (warframe.market)`;
8382
- return comment;
8383
- })() })
8456
+ ] })
8384
8457
  ] });
8385
8458
  }
8386
8459
  __name(ItemOrderComponent, "ItemOrderComponent");
@@ -8824,6 +8897,18 @@ function PrimedModHistoryComponent(history) {
8824
8897
  }
8825
8898
  __name(PrimedModHistoryComponent, "PrimedModHistoryComponent");
8826
8899
 
8900
+ // src/messages/wfm.tsx
8901
+ var import_jsx_runtime4 = require("@satorijs/element/jsx-runtime");
8902
+ function wmMessage(img, item, orders) {
8903
+ const lines = orders.slice(0, 3).map((order) => `
8904
+ /w ${order.user.ingameName} Hi! I want to buy: "${item.i18n.en?.name}${!item.maxRank || item.maxRank === 0 ? "" : ` (rank ${order.rank})`}" for ${order.platinum} platinum. (warframe.market)`);
8905
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("message", { children: [
8906
+ img,
8907
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: lines.join("") })
8908
+ ] });
8909
+ }
8910
+ __name(wmMessage, "wmMessage");
8911
+
8827
8912
  // src/commands/wfm.ts
8828
8913
  function createWfmCommands(deps) {
8829
8914
  const { render } = deps;
@@ -8833,7 +8918,11 @@ function createWfmCommands(deps) {
8833
8918
  if (!result.ok) {
8834
8919
  return t(result);
8835
8920
  }
8836
- return render(ItemOrderComponent(result.data.item, result.data.orders));
8921
+ if (!_action.session?.app.puppeteer) {
8922
+ return render(ItemOrderComponent(result.data.item, result.data.orders));
8923
+ }
8924
+ const component = await generateImageElementOutput(_action.session?.app.puppeteer, ItemOrderComponent(result.data.item, result.data.orders));
8925
+ return wmMessage(component, result.data.item, result.data.orders);
8837
8926
  }, "wmCommand"),
8838
8927
  wmrCommand: /* @__PURE__ */ __name(async (_action, input) => {
8839
8928
  const result = await getRivenOrders(input);
@@ -8853,34 +8942,6 @@ function createWfmCommands(deps) {
8853
8942
  }
8854
8943
  __name(createWfmCommands, "createWfmCommands");
8855
8944
 
8856
- // src/components/render.tsx
8857
- var style = loadAssetText("render.css");
8858
- var svg = loadAssetText("render-icons.svg");
8859
- var template = loadAssetText("render.html");
8860
- var slots = {
8861
- body: "<!-- __WARFRAME_RENDER_SLOT_BODY__ -->",
8862
- title: "__WARFRAME_RENDER_SLOT_TITLE__",
8863
- style: "/* __WARFRAME_RENDER_SLOT_STYLE__ */",
8864
- svg: "<!-- __WARFRAME_RENDER_SLOT_SVG__ -->"
8865
- };
8866
- function htmlString(htmlString2, title = "title") {
8867
- return template.replace(slots.body, () => htmlString2).replace(slots.title, () => title).replace(slots.style, () => style).replace(slots.svg, () => svg);
8868
- }
8869
- __name(htmlString, "htmlString");
8870
- async function generateImageOutput(puppe, element) {
8871
- if (!puppe) {
8872
- return "本功能需要启用 koishi-plugin-puppeteer 插件";
8873
- }
8874
- return puppe.render(
8875
- htmlString(element.toString()),
8876
- async (page, next) => {
8877
- const handle = await page.$("#root>*");
8878
- return next(handle ?? void 0);
8879
- }
8880
- );
8881
- }
8882
- __name(generateImageOutput, "generateImageOutput");
8883
-
8884
8945
  // src/index.ts
8885
8946
  var import_reflect_metadata = __toESM(require_Reflect());
8886
8947
  var name = "warframe";
@@ -8905,10 +8966,10 @@ function apply(ctx) {
8905
8966
  }
8906
8967
  __name(apply, "apply");
8907
8968
  function setupHooks(ctx, deps) {
8908
- const { config, logger: logger2 } = deps;
8969
+ const { config, logger } = deps;
8909
8970
  ctx.on("message", (session) => {
8910
8971
  if (config.developerMode) {
8911
- logger2.info(
8972
+ logger.info(
8912
8973
  `Koishi recieved message: ${session.content}
8913
8974
  Platform: ${session.platform}
8914
8975
  User: ${session.author.name}`
@@ -8917,7 +8978,7 @@ function setupHooks(ctx, deps) {
8917
8978
  });
8918
8979
  ctx.on("command/before-execute", (action) => {
8919
8980
  if (config.developerMode) {
8920
- logger2.info(
8981
+ logger.info(
8921
8982
  `WFM Plugin received command ${action.command?.name}
8922
8983
  arguments: ${JSON.stringify(action.args)}`
8923
8984
  );