@wzyjs/utils 0.3.4 → 0.3.6

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/node.cjs.js CHANGED
@@ -738,7 +738,7 @@ var require_lodash = __commonJS((exports2, module2) => {
738
738
  var objectCtorString = funcToString.call(Object2);
739
739
  var oldDash = root._;
740
740
  var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
741
- var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
741
+ var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
742
742
  var defineProperty = function() {
743
743
  try {
744
744
  var func = getNative(Object2, "defineProperty");
@@ -1204,7 +1204,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1204
1204
  if (typeof func != "function") {
1205
1205
  throw new TypeError2(FUNC_ERROR_TEXT);
1206
1206
  }
1207
- return setTimeout2(function() {
1207
+ return setTimeout(function() {
1208
1208
  func.apply(undefined2, args);
1209
1209
  }, wait);
1210
1210
  }
@@ -1996,7 +1996,7 @@ var require_lodash = __commonJS((exports2, module2) => {
1996
1996
  }
1997
1997
  function cloneArrayBuffer(arrayBuffer) {
1998
1998
  var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
1999
- new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
1999
+ new Uint8Array(result2).set(new Uint8Array(arrayBuffer));
2000
2000
  return result2;
2001
2001
  }
2002
2002
  function cloneDataView(dataView, isDeep) {
@@ -2578,7 +2578,7 @@ var require_lodash = __commonJS((exports2, module2) => {
2578
2578
  object = object.buffer;
2579
2579
  other = other.buffer;
2580
2580
  case arrayBufferTag:
2581
- if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
2581
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
2582
2582
  return false;
2583
2583
  }
2584
2584
  return true;
@@ -3013,7 +3013,7 @@ var require_lodash = __commonJS((exports2, module2) => {
3013
3013
  return object[key];
3014
3014
  }
3015
3015
  var setData = shortOut(baseSetData);
3016
- var setTimeout2 = ctxSetTimeout || function(func, wait) {
3016
+ var setTimeout = ctxSetTimeout || function(func, wait) {
3017
3017
  return root.setTimeout(func, wait);
3018
3018
  };
3019
3019
  var setToString = shortOut(baseSetToString);
@@ -3803,7 +3803,7 @@ var require_lodash = __commonJS((exports2, module2) => {
3803
3803
  }
3804
3804
  function leadingEdge(time) {
3805
3805
  lastInvokeTime = time;
3806
- timerId = setTimeout2(timerExpired, wait);
3806
+ timerId = setTimeout(timerExpired, wait);
3807
3807
  return leading ? invokeFunc(time) : result2;
3808
3808
  }
3809
3809
  function remainingWait(time) {
@@ -3819,7 +3819,7 @@ var require_lodash = __commonJS((exports2, module2) => {
3819
3819
  if (shouldInvoke(time)) {
3820
3820
  return trailingEdge(time);
3821
3821
  }
3822
- timerId = setTimeout2(timerExpired, remainingWait(time));
3822
+ timerId = setTimeout(timerExpired, remainingWait(time));
3823
3823
  }
3824
3824
  function trailingEdge(time) {
3825
3825
  timerId = undefined2;
@@ -3850,12 +3850,12 @@ var require_lodash = __commonJS((exports2, module2) => {
3850
3850
  }
3851
3851
  if (maxing) {
3852
3852
  clearTimeout(timerId);
3853
- timerId = setTimeout2(timerExpired, wait);
3853
+ timerId = setTimeout(timerExpired, wait);
3854
3854
  return invokeFunc(lastCallTime);
3855
3855
  }
3856
3856
  }
3857
3857
  if (timerId === undefined2) {
3858
- timerId = setTimeout2(timerExpired, wait);
3858
+ timerId = setTimeout(timerExpired, wait);
3859
3859
  }
3860
3860
  return result2;
3861
3861
  }
@@ -4062,7 +4062,7 @@ var require_lodash = __commonJS((exports2, module2) => {
4062
4062
  var tag = baseGetTag(value);
4063
4063
  return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
4064
4064
  }
4065
- function isFinite2(value) {
4065
+ function isFinite(value) {
4066
4066
  return typeof value == "number" && nativeIsFinite(value);
4067
4067
  }
4068
4068
  function isFunction(value) {
@@ -4093,7 +4093,7 @@ var require_lodash = __commonJS((exports2, module2) => {
4093
4093
  customizer = typeof customizer == "function" ? customizer : undefined2;
4094
4094
  return baseIsMatch(object, source, getMatchData(source), customizer);
4095
4095
  }
4096
- function isNaN2(value) {
4096
+ function isNaN(value) {
4097
4097
  return isNumber(value) && value != +value;
4098
4098
  }
4099
4099
  function isNative(value) {
@@ -4752,7 +4752,7 @@ __p += '`;
4752
4752
  }
4753
4753
  return result2 + omission;
4754
4754
  }
4755
- function unescape2(string) {
4755
+ function unescape(string) {
4756
4756
  string = toString(string);
4757
4757
  return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
4758
4758
  }
@@ -5176,14 +5176,14 @@ __p += '`;
5176
5176
  lodash.isEqual = isEqual;
5177
5177
  lodash.isEqualWith = isEqualWith;
5178
5178
  lodash.isError = isError;
5179
- lodash.isFinite = isFinite2;
5179
+ lodash.isFinite = isFinite;
5180
5180
  lodash.isFunction = isFunction;
5181
5181
  lodash.isInteger = isInteger;
5182
5182
  lodash.isLength = isLength;
5183
5183
  lodash.isMap = isMap;
5184
5184
  lodash.isMatch = isMatch;
5185
5185
  lodash.isMatchWith = isMatchWith;
5186
- lodash.isNaN = isNaN2;
5186
+ lodash.isNaN = isNaN;
5187
5187
  lodash.isNative = isNative;
5188
5188
  lodash.isNil = isNil;
5189
5189
  lodash.isNull = isNull;
@@ -5265,7 +5265,7 @@ __p += '`;
5265
5265
  lodash.trimEnd = trimEnd;
5266
5266
  lodash.trimStart = trimStart;
5267
5267
  lodash.truncate = truncate;
5268
- lodash.unescape = unescape2;
5268
+ lodash.unescape = unescape;
5269
5269
  lodash.uniqueId = uniqueId;
5270
5270
  lodash.upperCase = upperCase;
5271
5271
  lodash.upperFirst = upperFirst;
@@ -5460,7 +5460,6 @@ __p += '`;
5460
5460
  var exports_node = {};
5461
5461
  __export(exports_node, {
5462
5462
  z: () => exports_external,
5463
- watch: () => watch,
5464
5463
  void: () => voidType,
5465
5464
  util: () => util,
5466
5465
  uploadFile: () => uploadFile,
@@ -5469,36 +5468,26 @@ __export(exports_node, {
5469
5468
  undefined: () => undefinedType,
5470
5469
  tuple: () => tupleType,
5471
5470
  transformer: () => effectsType,
5472
- toString: () => toString,
5473
5471
  symbol: () => symbolType,
5474
5472
  string: () => stringType,
5475
5473
  strictObject: () => strictObjectType,
5476
- shuffleArray: () => shuffleArray,
5477
5474
  setErrorMap: () => setErrorMap,
5475
+ setCookie: () => setCookie,
5478
5476
  set: () => setType,
5479
5477
  sendMail: () => sendMail,
5480
5478
  schedule: () => schedule,
5481
- retryPromise: () => retryPromise,
5482
5479
  replaceContentInFile: () => replaceContentInFile,
5483
- replaceByVariables: () => replaceByVariables,
5484
- replaceByRules: () => replaceByRules,
5485
- replaceAll: () => replaceAll,
5486
- removeSimilarDuplicates: () => removeSimilarDuplicates,
5487
5480
  record: () => recordType,
5488
5481
  quotelessJson: () => quotelessJson,
5489
5482
  promise: () => promiseType,
5490
- printConsoleLog: () => printConsoleLog,
5491
5483
  preprocess: () => preprocessType,
5492
5484
  pipeline: () => pipelineType,
5493
- performDecimalOperation: () => performDecimalOperation,
5494
5485
  ostring: () => ostring,
5495
- optionsToEnum: () => optionsToEnum,
5496
5486
  optional: () => optionalType,
5497
5487
  onumber: () => onumber,
5498
5488
  oboolean: () => oboolean,
5499
5489
  objectUtil: () => objectUtil,
5500
5490
  object: () => objectType,
5501
- numberWithCommas: () => numberWithCommas,
5502
5491
  number: () => numberType,
5503
5492
  nullable: () => nullableType,
5504
5493
  null: () => nullType,
@@ -5508,16 +5497,10 @@ __export(exports_node, {
5508
5497
  map: () => mapType,
5509
5498
  makeIssue: () => makeIssue,
5510
5499
  literal: () => literalType,
5511
- limitDecimals: () => limitDecimals,
5512
- levenshteinDistance: () => levenshteinDistance,
5513
5500
  lazy: () => lazyType,
5514
5501
  late: () => late,
5515
- keling: () => exports_keling,
5516
- jsonParse: () => jsonParse,
5517
5502
  json5: () => import_json52.default,
5518
- isValidNumber: () => isValidNumber,
5519
5503
  isValid: () => isValid,
5520
- isJson: () => isJson,
5521
5504
  isDirty: () => isDirty,
5522
5505
  isAsync: () => isAsync,
5523
5506
  isAborted: () => isAborted,
@@ -5526,33 +5509,15 @@ __export(exports_node, {
5526
5509
  instanceof: () => instanceOfType,
5527
5510
  initChinaDayjs: () => initChinaDayjs,
5528
5511
  imageToBase64: () => imageToBase64,
5529
- getType: () => getType,
5530
- getTotal: () => getTotal,
5531
- getStrLength: () => getStrLength,
5532
- getSliceStr: () => getSliceStr,
5533
- getRandomString: () => getRandomString,
5534
- getRandomNum: () => getRandomNum,
5535
- getRandomColor: () => getRandomColor,
5536
- getProxyUrl: () => getProxyUrl,
5512
+ getVideoStatus: () => getVideoStatus,
5537
5513
  getParsedType: () => getParsedType,
5538
- getLength: () => getLength,
5539
- getFileSize: () => getFileSize,
5540
5514
  getErrorMap: () => getErrorMap,
5541
- getCookie: () => getCookie,
5542
- getChineseByStr: () => getChineseByStr,
5543
- getChinese: () => getChinese,
5544
- generateUniqueFileName: () => generateUniqueFileName,
5545
- generateAlphabetArray: () => generateAlphabetArray,
5515
+ generateVideo: () => generateVideo,
5546
5516
  function: () => functionType,
5547
- findItem: () => findItem,
5548
- filterParams: () => filterParams,
5549
- executePromise: () => executePromise,
5550
5517
  enum: () => enumType,
5551
5518
  effect: () => effectsType,
5552
5519
  downloadFile: () => downloadFile,
5553
- doubao: () => exports_doubao2,
5554
5520
  discriminatedUnion: () => discriminatedUnionType,
5555
- delay: () => delay,
5556
5521
  defaultErrorMap: () => en_default,
5557
5522
  dayjs: () => dayjs_default,
5558
5523
  datetimeRegex: () => datetimeRegex,
@@ -5562,14 +5527,12 @@ __export(exports_node, {
5562
5527
  coerce: () => coerce,
5563
5528
  chinaDayjs: () => chinaDayjs,
5564
5529
  cheerio: () => cheerio,
5565
- calcJsText: () => calcJsText,
5530
+ chat: () => chat,
5566
5531
  boolean: () => booleanType,
5567
5532
  bigint: () => bigIntType,
5568
- axios: () => import_axios15.default,
5533
+ axios: () => import_axios9.default,
5569
5534
  array: () => arrayType,
5570
5535
  any: () => anyType,
5571
- amount: () => amount,
5572
- ai302: () => exports_302,
5573
5536
  addIssueToContext: () => addIssueToContext,
5574
5537
  _: () => import_lodash.default,
5575
5538
  ZodVoid: () => ZodVoid,
@@ -5633,7 +5596,7 @@ module.exports = __toCommonJS(exports_node);
5633
5596
  var import_nedb = __toESM(require("nedb"));
5634
5597
  var cheerio = __toESM(require("cheerio"));
5635
5598
  var import_lodash = __toESM(require_lodash());
5636
- var import_axios15 = __toESM(require("axios"));
5599
+ var import_axios9 = __toESM(require("axios"));
5637
5600
  var import_json52 = __toESM(require("json5"));
5638
5601
  var import_consola = __toESM(require("consola"));
5639
5602
 
@@ -9610,14 +9573,6 @@ var coerce = {
9610
9573
  date: (arg) => ZodDate.create({ ...arg, coerce: true })
9611
9574
  };
9612
9575
  var NEVER = INVALID;
9613
- // src/common/ai/302/index.ts
9614
- var exports_302 = {};
9615
- __export(exports_302, {
9616
- image: () => exports_image,
9617
- chat: () => chat,
9618
- audio: () => exports_audio
9619
- });
9620
-
9621
9576
  // src/common/ai/302/axios.ts
9622
9577
  var import_axios = __toESM(require("axios"));
9623
9578
  var key = process.env.AI_302_KEY || process.env.NEXT_PUBLIC_AI_302_KEY;
@@ -9641,7 +9596,7 @@ var chat = async (message, model = "gpt-4.1", isParse = true) => {
9641
9596
  message
9642
9597
  }
9643
9598
  });
9644
- console.log(666, "302 chat res", typeof data, data);
9599
+ console.log(666, typeof data, data);
9645
9600
  const output = typeof data === "string" ? import_json5.default.parse(data)?.output : data?.output;
9646
9601
  if (isParse) {
9647
9602
  const match = /```(json)?(.*)```/s.exec(output);
@@ -9653,423 +9608,16 @@ var chat = async (message, model = "gpt-4.1", isParse = true) => {
9653
9608
  }
9654
9609
  return output;
9655
9610
  } catch (error) {
9656
- const responseData = error?.response?.data;
9657
- const message2 = responseData?.error?.message_cn || responseData?.error?.message || responseData?.message || error?.response?.statusText || error?.message || "未知原因";
9658
- throw new Error(message2);
9659
- }
9660
- };
9661
- // src/common/ai/302/audio/index.ts
9662
- var exports_audio = {};
9663
- __export(exports_audio, {
9664
- tts: () => exports_tts,
9665
- doubao: () => exports_doubao
9666
- });
9667
-
9668
- // src/common/ai/302/audio/tts.ts
9669
- var exports_tts = {};
9670
- __export(exports_tts, {
9671
- textToSpeech: () => textToSpeech,
9672
- fetchTask: () => fetchTask,
9673
- fetchProviders: () => fetchProviders
9674
- });
9675
- var fetchProviders = async () => {
9676
- try {
9677
- const { data } = await axios({
9678
- url: "/302/tts/provider",
9679
- method: "get"
9680
- });
9681
- return data;
9682
- } catch (error) {
9683
- throw error;
9684
- }
9685
- };
9686
- var textToSpeech = async (request) => {
9687
- try {
9688
- const { webhook, run_async, ...body } = request;
9689
- const { data } = await axios({
9690
- url: "/302/v2/audio/tts",
9691
- method: "post",
9692
- params: {
9693
- webhook,
9694
- run_async
9695
- },
9696
- data: {
9697
- ...body,
9698
- speed: body.speed ?? 1,
9699
- volume: body.volume ?? 1,
9700
- timeout: body.timeout ?? 180
9701
- }
9702
- });
9703
- return data;
9704
- } catch (error) {
9705
- throw error;
9706
- }
9707
- };
9708
- var fetchTask = async (taskId) => {
9709
- if (!taskId) {
9710
- throw new Error("taskId 不能为空");
9711
- }
9712
- try {
9713
- const { data } = await axios({
9714
- url: `/302/v2/audio/fetch/${encodeURIComponent(taskId)}`,
9715
- method: "get"
9716
- });
9717
- return data;
9718
- } catch (error) {
9719
- throw error;
9720
- }
9721
- };
9722
- // src/common/ai/302/audio/doubao.ts
9723
- var exports_doubao = {};
9724
- __export(exports_doubao, {
9725
- ttsHd: () => ttsHd
9726
- });
9727
- var createReqid = () => {
9728
- if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
9729
- return crypto.randomUUID();
9730
- }
9731
- return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
9732
- };
9733
- var getUtf8ByteLength = (value) => {
9734
- return new TextEncoder().encode(value).length;
9735
- };
9736
- var assertNonEmptyString = (value, label) => {
9737
- if (typeof value !== "string" || !value.trim()) {
9738
- throw new Error(`${label} 不能为空`);
9739
- }
9740
- };
9741
- var assertSpeedRatio = (value) => {
9742
- if (value === undefined)
9743
- return;
9744
- if (typeof value !== "number" || !Number.isFinite(value)) {
9745
- throw new Error("speed_ratio 必须为数字");
9746
- }
9747
- if (value < 0.8 || value > 2) {
9748
- throw new Error("speed_ratio 取值范围为 [0.8, 2]");
9749
- }
9750
- };
9751
- var ttsHd = async (payload) => {
9752
- const { audio, request } = payload;
9753
- const { voice_type, encoding, speed_ratio } = audio;
9754
- const { text, reqid: rawReqid, operation } = request;
9755
- assertNonEmptyString(voice_type, "voice_type");
9756
- assertNonEmptyString(text, "text");
9757
- assertSpeedRatio(speed_ratio);
9758
- const textByteLength = getUtf8ByteLength(text);
9759
- if (textByteLength > 1024) {
9760
- throw new Error(`text 超出长度限制:${textByteLength}/1024 字节`);
9761
- }
9762
- const reqid = rawReqid?.trim() || createReqid();
9763
- const { data } = await axios({
9764
- url: "/doubao/tts_hd",
9765
- method: "post",
9766
- data: {
9767
- audio: {
9768
- voice_type,
9769
- encoding: encoding ?? "pcm",
9770
- speed_ratio: speed_ratio ?? 1
9771
- },
9772
- request: {
9773
- reqid,
9774
- text,
9775
- operation: operation ?? "query"
9776
- }
9777
- }
9778
- });
9779
- return data;
9780
- };
9781
- // src/common/ai/302/image/index.ts
9782
- var exports_image = {};
9783
- __export(exports_image, {
9784
- midjourney: () => exports_midjourney,
9785
- gpt: () => exports_gpt
9786
- });
9787
-
9788
- // src/common/ai/302/image/midjourney.ts
9789
- var exports_midjourney = {};
9790
- __export(exports_midjourney, {
9791
- getImageStatus: () => getImageStatus,
9792
- generateImage: () => generateImage
9793
- });
9794
- var generateImage = async (prompt, base64Array) => {
9795
- try {
9796
- const { data } = await axios({
9797
- url: "/mj/submit/imagine",
9798
- method: "post",
9799
- data: {
9800
- prompt,
9801
- base64Array,
9802
- botType: "MID_JOURNEY",
9803
- notifyHook: "",
9804
- state: ""
9805
- }
9806
- });
9807
- return data;
9808
- } catch (error) {
9809
- throw error;
9810
- }
9811
- };
9812
- var getImageStatus = async (taskId) => {
9813
- try {
9814
- const { data } = await axios({
9815
- url: `/mj/task/${taskId}/fetch`,
9816
- method: "get"
9817
- });
9818
- return data;
9819
- } catch (error) {
9820
- throw error;
9821
- }
9822
- };
9823
- // src/common/ai/302/image/gpt.ts
9824
- var exports_gpt = {};
9825
- __export(exports_gpt, {
9826
- generateImage: () => generateImage2
9827
- });
9828
- var generateImage2 = async (params) => {
9829
- if (params.model === "gpt-4o-plus") {
9830
- const { data: data2 } = await axios.post("/v1/chat/completions", {
9831
- model: params.model,
9832
- messages: [{ role: "user", content: params.prompt }]
9833
- });
9834
- const content = data2?.choices?.[0]?.message?.content || "";
9835
- const urlMatch = content.match(/!\[.*?\]\((.*?)\)/) || content.match(/(https?:\/\/[^\s]+)/);
9836
- const url = urlMatch ? urlMatch[1] : content;
9837
- return {
9838
- background: "",
9839
- created: data2.created,
9840
- data: [{ url }],
9841
- output_format: "",
9842
- quality: "",
9843
- size: "",
9844
- usage: {
9845
- input_tokens: data2.usage?.prompt_tokens || 0,
9846
- input_tokens_details: {
9847
- image_tokens: data2.usage?.prompt_tokens_details?.image_tokens || 0,
9848
- text_tokens: data2.usage?.prompt_tokens_details?.text_tokens || 0
9849
- },
9850
- output_tokens: data2.usage?.completion_tokens || 0,
9851
- output_tokens_details: {
9852
- image_tokens: data2.usage?.completion_tokens_details?.image_tokens || 0,
9853
- text_tokens: data2.usage?.completion_tokens_details?.content_tokens || 0
9854
- },
9855
- total_tokens: data2.usage?.total_tokens || 0
9856
- }
9857
- };
9858
- }
9859
- const { data } = await axios.post("/v1/images/generations", params);
9860
- return data;
9861
- };
9862
- // src/common/ai/doubao/index.ts
9863
- var exports_doubao2 = {};
9864
- __export(exports_doubao2, {
9865
- vc: () => vc,
9866
- tts: () => tts
9867
- });
9868
-
9869
- // src/common/ai/doubao/tts.ts
9870
- var import_axios7 = __toESM(require("axios"));
9871
- var createReqid2 = () => {
9872
- if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
9873
- return crypto.randomUUID();
9874
- }
9875
- return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
9876
- };
9877
- var decodeBase64ToArrayBuffer = (value) => {
9878
- if (typeof window !== "undefined" && typeof window.atob === "function") {
9879
- const binary = window.atob(value);
9880
- const bytes = new Uint8Array(binary.length);
9881
- for (let i = 0;i < binary.length; i++) {
9882
- bytes[i] = binary.charCodeAt(i);
9883
- }
9884
- return bytes.buffer;
9885
- }
9886
- const buf = Buffer.from(value, "base64");
9887
- return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
9888
- };
9889
- var tts = async (params) => {
9890
- const { app, user, audio, request } = params;
9891
- const url = "https://openspeech.bytedance.com/api/v3/tts/unidirectional";
9892
- const reqid = request.reqid || createReqid2();
9893
- const speechRate = audio.speed_ratio ? Math.round((audio.speed_ratio - 1) * 100) : 0;
9894
- const loudnessRate = audio.volume_ratio ? Math.round((audio.volume_ratio - 1) * 100) : 0;
9895
- const headers = {
9896
- "X-Api-App-Id": app.appid || "",
9897
- "X-Api-Access-Key": app.accessToken || "",
9898
- "Content-Type": "application/json",
9899
- "X-Api-Resource-Id": app.resourceId || "seed-tts-2.0",
9900
- "X-Api-Request-Id": reqid
9901
- };
9902
- const payload = {
9903
- user: {
9904
- uid: user?.uid || "uid"
9905
- },
9906
- req_params: {
9907
- text: request.text,
9908
- speaker: audio.voice_type,
9909
- audio_params: {
9910
- format: audio.encoding || "pcm",
9911
- sample_rate: 24000,
9912
- speech_rate: speechRate,
9913
- loudness_rate: loudnessRate,
9914
- emotion: audio.emotion,
9915
- emotion_scale: audio.emotion_scale
9916
- }
9917
- }
9918
- };
9919
- if (audio.context_texts) {
9920
- payload.req_params.additions = JSON.stringify({
9921
- context_texts: audio.context_texts
9922
- });
9923
- }
9924
- try {
9925
- const response = await import_axios7.default.post(url, payload, {
9926
- headers,
9927
- responseType: "arraybuffer"
9928
- });
9929
- const responseText = new TextDecoder().decode(response.data);
9930
- const jsonObjects = [];
9931
- let depth = 0;
9932
- let start = 0;
9933
- for (let i = 0;i < responseText.length; i++) {
9934
- if (responseText[i] === "{") {
9935
- if (depth === 0)
9936
- start = i;
9937
- depth++;
9938
- } else if (responseText[i] === "}") {
9939
- depth--;
9940
- if (depth === 0) {
9941
- try {
9942
- const jsonStr = responseText.substring(start, i + 1);
9943
- const jsonObj = JSON.parse(jsonStr);
9944
- jsonObjects.push(jsonObj);
9945
- } catch (e) {
9946
- console.warn("Failed to parse JSON chunk", e);
9947
- }
9948
- }
9949
- }
9950
- }
9951
- if (jsonObjects.length === 0) {
9952
- try {
9953
- jsonObjects.push(JSON.parse(responseText));
9954
- } catch (e) {
9955
- console.error("Doubao TTS Response Parse Error:", responseText);
9956
- throw new Error("Invalid response format");
9957
- }
9958
- }
9959
- const audioChunks = [];
9960
- let totalLength = 0;
9961
- for (const data of jsonObjects) {
9962
- const code = data.code;
9963
- const message = data.message;
9964
- if (typeof code === "number" && code !== 0 && code !== 20000000) {
9965
- console.error("Doubao TTS Error Response:", JSON.stringify(data, null, 2));
9966
- const err = new Error(`豆包语音合成失败: ${message} (code: ${code})`);
9967
- err.code = code;
9968
- err.reqid = data.reqid;
9969
- throw err;
9970
- }
9971
- if (data.data) {
9972
- const chunkBuffer = decodeBase64ToArrayBuffer(data.data);
9973
- audioChunks.push(chunkBuffer);
9974
- totalLength += chunkBuffer.byteLength;
9975
- }
9976
- }
9977
- if (totalLength === 0) {
9978
- throw new Error("豆包语音合成失败:未返回音频数据");
9979
- }
9980
- const resultBuffer = new Uint8Array(totalLength);
9981
- let offset = 0;
9982
- for (const chunk of audioChunks) {
9983
- resultBuffer.set(new Uint8Array(chunk), offset);
9984
- offset += chunk.byteLength;
9985
- }
9986
- return resultBuffer.buffer;
9987
- } catch (error) {
9988
- if (error.response) {
9989
- try {
9990
- let errorData = error.response.data;
9991
- if (errorData instanceof ArrayBuffer || typeof Buffer !== "undefined" && Buffer.isBuffer(errorData)) {
9992
- errorData = new TextDecoder().decode(errorData);
9993
- } else if (typeof errorData === "object") {
9994
- errorData = JSON.stringify(errorData);
9995
- }
9996
- throw new Error(`Doubao TTS Error: ${error.response.status} - ${errorData}`);
9997
- } catch (e) {
9998
- if (e.message && e.message.startsWith("Doubao TTS Error")) {
9999
- throw e;
10000
- }
10001
- throw new Error(`Doubao TTS Error: ${error.response.status} ${error.message}`);
10002
- }
10003
- }
10004
- throw error;
10005
- }
10006
- };
10007
- // src/common/ai/doubao/vc.ts
10008
- var import_axios8 = __toESM(require("axios"));
10009
- var getHeaders = (accessToken, contentType) => {
10010
- const headers = {
10011
- Authorization: `Bearer; ${accessToken}`
10012
- };
10013
- if (contentType) {
10014
- headers["content-type"] = contentType;
10015
- }
10016
- return headers;
10017
- };
10018
- var handleResponse = (data) => {
10019
- if (data instanceof ArrayBuffer) {
10020
- return data;
10021
- }
10022
- if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
10023
- return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
10024
- }
10025
- return data;
10026
- };
10027
- var vc = {
10028
- submit: async (params) => {
10029
- const { app, audio, options = {} } = params;
10030
- const url = new URL("https://openspeech.bytedance.com/api/v1/vc/submit");
10031
- url.searchParams.set("appid", app.appid);
10032
- Object.entries(options).forEach(([key2, value]) => {
10033
- if (value !== undefined && value !== null) {
10034
- url.searchParams.set(key2, String(value));
10035
- }
10036
- });
10037
- const response = await import_axios8.default.post(url.toString(), audio.data, {
10038
- headers: getHeaders(app.accessToken, audio.contentType || "audio/wav"),
10039
- responseType: "arraybuffer"
10040
- });
10041
- return handleResponse(response.data);
10042
- },
10043
- query: async (params) => {
10044
- const { app, id, blocking } = params;
10045
- const url = new URL("https://openspeech.bytedance.com/api/v1/vc/query");
10046
- url.searchParams.set("appid", app.appid);
10047
- url.searchParams.set("id", id);
10048
- if (blocking !== undefined) {
10049
- url.searchParams.set("blocking", String(blocking));
10050
- }
10051
- const response = await import_axios8.default.get(url.toString(), {
10052
- headers: getHeaders(app.accessToken),
10053
- responseType: "arraybuffer"
10054
- });
10055
- return handleResponse(response.data);
9611
+ throw new Error(error?.response?.statusText || error?.message || "未知原因");
10056
9612
  }
10057
9613
  };
10058
- // src/common/ai/keling/index.ts
10059
- var exports_keling = {};
10060
- __export(exports_keling, {
10061
- setCookie: () => setCookie,
10062
- getVideoStatus: () => getVideoStatus,
10063
- generateVideo: () => generateVideo
10064
- });
10065
-
10066
9614
  // src/common/ai/keling/utils.ts
10067
9615
  var url = __toESM(require("url"));
10068
9616
  var path = __toESM(require("path"));
10069
9617
 
10070
9618
  // src/common/ai/keling/axios.ts
10071
- var import_axios9 = __toESM(require("axios"));
10072
- var axios4 = import_axios9.default.create({
9619
+ var import_axios3 = __toESM(require("axios"));
9620
+ var axios2 = import_axios3.default.create({
10073
9621
  headers: {
10074
9622
  "Content-Type": "application/json",
10075
9623
  Cookie: "weblogger_did=web_52354269549862D; did=web_d22eeae73f6e4c74a76a4cc98e3a1188a5b0; anonymous-message-release-notice-1=true; anonymous-message-release-notice-2=true; dev-center-view-welcome-dialog-key=true; userId=2904283585; welcome-future-partner-key=true; old-user-time=1731936878621; kuaishou.ai.portal_st=ChVrdWFpc2hvdS5haS5wb3J0YWwuc3QSoAFuUNTARKNKXARahOJhWZ4iVBl2mIANSUfk2nCSr85bxCg2lrpE3PHj2Kn_kjPW0_KV8DfZS6UnNam4i6gaYeBmxRwOVAldYysCz7YtlsosEZRuiTe2iY7Ziq5SZeAP7jhTg8lxk7gvC-bEELmAc8HSrqN5HLWeU4GUFcEq-ChV7qsodJ8m42oBuvkFgX1qytVTIROpSS4cMmEiBhB3h99EGhLGi0v_iyPMOr2JVXM8LPzBvxQiIJrnuzAheyLtkeb55iZOUgZoAzXjYj0U1e4mLSonbXBGKAUwAQ; kuaishou.ai.portal_ph=2669d9adaa5c0629ac1053ab87e6c123880a"
@@ -10079,7 +9627,7 @@ var axios4 = import_axios9.default.create({
10079
9627
  // src/common/ai/keling/utils.ts
10080
9628
  var getToken = async (filename) => {
10081
9629
  try {
10082
- const response = await axios4.get("https://klingai.kuaishou.com/api/upload/issue/token", {
9630
+ const response = await axios2.get("https://klingai.kuaishou.com/api/upload/issue/token", {
10083
9631
  params: { filename }
10084
9632
  });
10085
9633
  return response.data.data.token;
@@ -10090,7 +9638,7 @@ var getToken = async (filename) => {
10090
9638
  };
10091
9639
  var uploadFragment = async (uploadToken, imageBuffer) => {
10092
9640
  try {
10093
- const response = await axios4.post("https://upload.kuaishouzt.com/api/upload/fragment", imageBuffer, {
9641
+ const response = await axios2.post("https://upload.kuaishouzt.com/api/upload/fragment", imageBuffer, {
10094
9642
  params: {
10095
9643
  upload_token: uploadToken,
10096
9644
  fragment_id: 0
@@ -10107,7 +9655,7 @@ var uploadFragment = async (uploadToken, imageBuffer) => {
10107
9655
  };
10108
9656
  var completeUpload = async (uploadToken) => {
10109
9657
  try {
10110
- const response = await axios4.post("https://upload.kuaishouzt.com/api/upload/complete", null, {
9658
+ const response = await axios2.post("https://upload.kuaishouzt.com/api/upload/complete", null, {
10111
9659
  params: {
10112
9660
  upload_token: uploadToken,
10113
9661
  fragment_count: 1
@@ -10121,7 +9669,7 @@ var completeUpload = async (uploadToken) => {
10121
9669
  };
10122
9670
  var verifyUpload = async (token) => {
10123
9671
  try {
10124
- const response = await axios4.get("https://klingai.kuaishou.com/api/upload/verify/token", {
9672
+ const response = await axios2.get("https://klingai.kuaishou.com/api/upload/verify/token", {
10125
9673
  params: { token }
10126
9674
  });
10127
9675
  if (response.data?.result === 1 && response.data?.data?.status === 3) {
@@ -10136,7 +9684,7 @@ var verifyUpload = async (token) => {
10136
9684
  };
10137
9685
  var downloadImage = async (imageUrl) => {
10138
9686
  try {
10139
- const response = await axios4.get(imageUrl, {
9687
+ const response = await axios2.get(imageUrl, {
10140
9688
  responseType: "arraybuffer"
10141
9689
  });
10142
9690
  return Buffer.from(response.data, "binary");
@@ -10216,7 +9764,7 @@ var sbumit = async (imageUrl, prompt) => {
10216
9764
  ],
10217
9765
  type: "m2v_img2video_hq"
10218
9766
  });
10219
- const response = await axios4({
9767
+ const response = await axios2({
10220
9768
  method: "POST",
10221
9769
  url: "https://klingai.kuaishou.com/api/task/submit",
10222
9770
  data
@@ -10246,7 +9794,7 @@ var calculateProgress = (taskData) => {
10246
9794
  return progressRatio;
10247
9795
  };
10248
9796
  var setCookie = (newCookieValue) => {
10249
- axios4.defaults.headers.Cookie = newCookieValue;
9797
+ axios2.defaults.headers.Cookie = newCookieValue;
10250
9798
  };
10251
9799
 
10252
9800
  // src/common/ai/keling/index.ts
@@ -10255,7 +9803,7 @@ var getVideoStatus = async (taskId) => {
10255
9803
  return;
10256
9804
  }
10257
9805
  try {
10258
- const response = await axios4.get("https://klingai.kuaishou.com/api/task/status", {
9806
+ const response = await axios2.get("https://klingai.kuaishou.com/api/task/status", {
10259
9807
  params: { taskId }
10260
9808
  });
10261
9809
  return {
@@ -10276,2816 +9824,137 @@ var generateVideo = async (imageUrl, prompt) => {
10276
9824
  console.log(666, "任务 id", taskId);
10277
9825
  return taskId;
10278
9826
  };
10279
- // src/common/base/string.ts
10280
- var getChineseByStr = (str) => {
10281
- if (!str) {
10282
- return "";
10283
- }
10284
- const match = str.match(/[\u4e00-\u9fa5]/g);
10285
- if (!match) {
10286
- return "";
10287
- }
10288
- return match.join("");
10289
- };
10290
- var getStrLength = (value) => {
10291
- if (!value) {
10292
- return 0;
9827
+ // src/common/image.ts
9828
+ var import_axios6 = __toESM(require("axios"));
9829
+ async function imageToBase64(url2) {
9830
+ try {
9831
+ const response = await import_axios6.default.get(url2, {
9832
+ responseType: "arraybuffer"
9833
+ });
9834
+ const base64String = Buffer.from(response.data).toString("base64");
9835
+ return `data:image/*;base64,${base64String}`;
9836
+ } catch (error) {
9837
+ console.error("Failed to fetch the image:", error);
9838
+ throw error;
10293
9839
  }
10294
- const chineseLength = getChineseByStr(value).length;
10295
- return value.length - chineseLength + chineseLength * 2;
10296
- };
10297
- var replaceAll = (str, searchValue, replaceValue) => {
10298
- if (!str || !searchValue || !replaceValue) {
10299
- return str || "";
9840
+ }
9841
+ // src/common/enum.ts
9842
+ class EnumItem {
9843
+ label;
9844
+ value;
9845
+ extra;
9846
+ constructor(config) {
9847
+ this.value = config.value;
9848
+ this.label = config.label;
9849
+ this.extra = config.extra;
10300
9850
  }
10301
- str = str.replace(searchValue, replaceValue);
10302
- if (!str.includes(searchValue)) {
10303
- return str;
9851
+ }
9852
+ var Enum = {
9853
+ create: (members) => {
9854
+ const usedValues = new Set;
9855
+ const enumObj = {};
9856
+ const map = new Map;
9857
+ const options = [];
9858
+ const extras = new Map;
9859
+ const labels = new Map;
9860
+ const enums = {};
9861
+ for (const key2 in members) {
9862
+ const member = members[key2];
9863
+ if (!member)
9864
+ continue;
9865
+ if (usedValues.has(member.value)) {
9866
+ throw new Error(`Duplicate enum value detected: ${member.value}`);
9867
+ }
9868
+ usedValues.add(member.value);
9869
+ const item = new EnumItem(member);
9870
+ enumObj[key2] = item;
9871
+ map.set(item.value, item);
9872
+ labels.set(item.value, item.label);
9873
+ options.push(item);
9874
+ enums[item.value] = { text: item.label, status: item.extra?.status };
9875
+ if (member.extra !== undefined) {
9876
+ extras.set(item.value, { ...member.extra });
9877
+ }
9878
+ }
9879
+ enumObj.map = map;
9880
+ enumObj.options = options;
9881
+ enumObj.extras = extras;
9882
+ enumObj.source = members;
9883
+ enumObj.labels = labels;
9884
+ enumObj.enums = enums;
9885
+ return enumObj;
10304
9886
  }
10305
- return replaceAll(str, searchValue, replaceValue);
10306
9887
  };
10307
- var replaceByRules = (str, rules) => {
10308
- rules.forEach(([searchValue, replaceValue]) => {
10309
- str = str.replaceAll(searchValue, replaceValue);
9888
+ // src/common/dayjs.ts
9889
+ var import_dayjs = __toESM(require("dayjs"));
9890
+ var import_isBetween = __toESM(require("dayjs/plugin/isBetween"));
9891
+ var import_weekday = __toESM(require("dayjs/plugin/weekday"));
9892
+ var import_localeData = __toESM(require("dayjs/plugin/localeData"));
9893
+ var import_isoWeek = __toESM(require("dayjs/plugin/isoWeek"));
9894
+ var import_updateLocale = __toESM(require("dayjs/plugin/updateLocale"));
9895
+ var import_timezone = __toESM(require("dayjs/plugin/timezone"));
9896
+ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
9897
+ var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
9898
+ var import_utc = __toESM(require("dayjs/plugin/utc"));
9899
+ var import_zh_cn = require("dayjs/locale/zh-cn");
9900
+ var import_dayjs2 = require("dayjs");
9901
+ import_dayjs.default.extend(import_utc.default);
9902
+ import_dayjs.default.extend(import_isBetween.default);
9903
+ import_dayjs.default.extend(import_weekday.default);
9904
+ import_dayjs.default.extend(import_localeData.default);
9905
+ import_dayjs.default.extend(import_isoWeek.default);
9906
+ import_dayjs.default.extend(import_updateLocale.default);
9907
+ import_dayjs.default.extend(import_timezone.default);
9908
+ import_dayjs.default.extend(import_isSameOrAfter.default);
9909
+ import_dayjs.default.extend(import_isSameOrBefore.default);
9910
+ var Timezone;
9911
+ ((Timezone2) => {
9912
+ Timezone2["AsiaShanghai"] = "Asia/Shanghai";
9913
+ Timezone2["AsiaTokyo"] = "Asia/Tokyo";
9914
+ Timezone2["AmericaNewYork"] = "America/New_York";
9915
+ Timezone2["EuropeLondon"] = "Europe/London";
9916
+ Timezone2["EuropeBerlin"] = "Europe/Berlin";
9917
+ })(Timezone ||= {});
9918
+ var initChinaDayjs = () => {
9919
+ import_dayjs.default.locale("zh-cn");
9920
+ import_dayjs.default.tz.setDefault("Asia/Shanghai" /* AsiaShanghai */);
9921
+ import_dayjs.default.updateLocale("zh-cn", {
9922
+ weekStart: 1
10310
9923
  });
10311
- return str;
9924
+ return import_dayjs.default;
10312
9925
  };
10313
- var replaceByVariables = (prompt, variables) => {
10314
- if (!variables || Object.keys(variables).length === 0) {
10315
- return prompt;
9926
+ var chinaDayjs = initChinaDayjs();
9927
+ var dayjs_default = import_dayjs.default;
9928
+ // src/node/mail.ts
9929
+ var import_nodemailer = __toESM(require("nodemailer"));
9930
+ var authMap = {
9931
+ 163: {
9932
+ user: "15835196981@163.com",
9933
+ pass: "KPTVCFBMRXJVTCGW"
9934
+ },
9935
+ gmail: {
9936
+ user: "wangzhenzhen2023@gmail.com",
9937
+ pass: "lkxtorbpdyrjjxjq"
10316
9938
  }
10317
- const regex = /\{\{\s*(\w+)\s*\}\}/g;
10318
- return prompt.replace(regex, (match, p1) => {
10319
- return variables[p1] ?? match;
10320
- });
10321
- };
10322
- var getType = (value) => {
10323
- return Object.prototype.toString.call(value).slice(8, -1);
10324
9939
  };
10325
- var amount = (str) => {
10326
- const reg = /(?=(?!\b)(\d{3})+$)/g;
10327
- return str.replace(reg, ",");
9940
+ var transporter = import_nodemailer.default.createTransport({
9941
+ host: "smtp.gmail.com",
9942
+ port: 465,
9943
+ secure: true,
9944
+ auth: authMap.gmail
9945
+ });
9946
+ var sendMail = (config) => {
9947
+ return transporter.sendMail({
9948
+ from: authMap.gmail.user,
9949
+ ...config
9950
+ });
10328
9951
  };
10329
- var jsonParse = (value) => {
10330
- if (typeof value === "object") {
10331
- return value;
10332
- }
10333
- try {
10334
- return JSON.parse(value);
10335
- } catch (err) {
10336
- return {};
10337
- }
10338
- };
10339
- var isJson = (str) => {
10340
- try {
10341
- if (getType(JSON.parse(str)) === "Object") {
10342
- return true;
10343
- }
10344
- } catch (e) {}
10345
- return false;
10346
- };
10347
- var toString = (value) => {
10348
- return Object.prototype.toString.call(value).slice(8, -1) === "object" ? JSON.stringify(value) : String(value);
10349
- };
10350
- var getRandomColor = () => {
10351
- const color = Math.floor(Math.random() * 16777215).toString(16);
10352
- if (color.length === 6) {
10353
- return color;
10354
- } else {
10355
- return getRandomColor();
10356
- }
10357
- };
10358
- var getRandomString = (length = 4) => {
10359
- return Math.random().toString(36).substr(2, length);
10360
- };
10361
- var getChinese = (str) => {
10362
- if (str == null || str === "") {
10363
- return "";
10364
- }
10365
- const res = str.match(/[\u4e00-\u9fa5]/g);
10366
- if (!res) {
10367
- return "";
10368
- }
10369
- return res.join("");
10370
- };
10371
- var getSliceStr = (str, before, after) => {
10372
- return str.slice(str.indexOf(before) + before.length, str.lastIndexOf(after));
10373
- };
10374
- var getProxyUrl = (url2) => {
10375
- const beforeUrl = "https://1141871752167714.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/a.LATEST/proxy/?url=";
10376
- return beforeUrl + url2;
10377
- };
10378
- var getLength = (value) => {
10379
- const chineseLength = getChinese(value).length;
10380
- return value.length - chineseLength + chineseLength * 2;
10381
- };
10382
- var getCookie = (name) => {
10383
- const reg = new RegExp(`(^| )${name}=([^;]*)(;|$)`);
10384
- const arr = document.cookie.match(reg);
10385
- return arr ? unescape(arr[2]) : null;
10386
- };
10387
- var generateAlphabetArray = (n) => {
10388
- return Array.from({ length: n }, (_, i) => String.fromCharCode(97 + i));
10389
- };
10390
- var levenshteinDistance = (a, b) => {
10391
- const matrix = [];
10392
- for (let i = 0;i <= b.length; i++) {
10393
- matrix[i] = [i];
10394
- }
10395
- for (let j = 0;j <= a.length; j++) {
10396
- matrix[0][j] = j;
10397
- }
10398
- for (let i = 1;i <= b.length; i++) {
10399
- for (let j = 1;j <= a.length; j++) {
10400
- if (b[i - 1] === a[j - 1]) {
10401
- matrix[i][j] = matrix[i - 1][j - 1];
10402
- } else {
10403
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
10404
- }
10405
- }
10406
- }
10407
- return matrix[b.length][a.length];
10408
- };
10409
- var generateUniqueFileName = (name) => {
10410
- const match = name.match(/^(.*?)(\.[^.]*$|$)/);
10411
- if (match) {
10412
- const namePart = match[1];
10413
- const extensionPart = match[2];
10414
- if (extensionPart) {
10415
- return `${namePart}_${Date.now()}${extensionPart}`;
10416
- } else {
10417
- return `${namePart}_${Date.now()}.dat`;
10418
- }
10419
- }
10420
- throw new Error("Invalid filename format.");
10421
- };
10422
-
10423
- // ../../node_modules/decimal.js/decimal.mjs
10424
- /*!
10425
- * decimal.js v10.6.0
10426
- * An arbitrary-precision Decimal type for JavaScript.
10427
- * https://github.com/MikeMcl/decimal.js
10428
- * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
10429
- * MIT Licence
10430
- */
10431
- var EXP_LIMIT = 9000000000000000;
10432
- var MAX_DIGITS = 1e9;
10433
- var NUMERALS = "0123456789abcdef";
10434
- var LN10 = "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058";
10435
- var PI = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789";
10436
- var DEFAULTS = {
10437
- precision: 20,
10438
- rounding: 4,
10439
- modulo: 1,
10440
- toExpNeg: -7,
10441
- toExpPos: 21,
10442
- minE: -EXP_LIMIT,
10443
- maxE: EXP_LIMIT,
10444
- crypto: false
10445
- };
10446
- var inexact;
10447
- var quadrant;
10448
- var external2 = true;
10449
- var decimalError = "[DecimalError] ";
10450
- var invalidArgument = decimalError + "Invalid argument: ";
10451
- var precisionLimitExceeded = decimalError + "Precision limit exceeded";
10452
- var cryptoUnavailable = decimalError + "crypto unavailable";
10453
- var tag = "[object Decimal]";
10454
- var mathfloor = Math.floor;
10455
- var mathpow = Math.pow;
10456
- var isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i;
10457
- var isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i;
10458
- var isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i;
10459
- var isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
10460
- var BASE = 1e7;
10461
- var LOG_BASE = 7;
10462
- var MAX_SAFE_INTEGER = 9007199254740991;
10463
- var LN10_PRECISION = LN10.length - 1;
10464
- var PI_PRECISION = PI.length - 1;
10465
- var P = { toStringTag: tag };
10466
- P.absoluteValue = P.abs = function() {
10467
- var x = new this.constructor(this);
10468
- if (x.s < 0)
10469
- x.s = 1;
10470
- return finalise(x);
10471
- };
10472
- P.ceil = function() {
10473
- return finalise(new this.constructor(this), this.e + 1, 2);
10474
- };
10475
- P.clampedTo = P.clamp = function(min, max) {
10476
- var k, x = this, Ctor = x.constructor;
10477
- min = new Ctor(min);
10478
- max = new Ctor(max);
10479
- if (!min.s || !max.s)
10480
- return new Ctor(NaN);
10481
- if (min.gt(max))
10482
- throw Error(invalidArgument + max);
10483
- k = x.cmp(min);
10484
- return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);
10485
- };
10486
- P.comparedTo = P.cmp = function(y) {
10487
- var i, j, xdL, ydL, x = this, xd = x.d, yd = (y = new x.constructor(y)).d, xs = x.s, ys = y.s;
10488
- if (!xd || !yd) {
10489
- return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;
10490
- }
10491
- if (!xd[0] || !yd[0])
10492
- return xd[0] ? xs : yd[0] ? -ys : 0;
10493
- if (xs !== ys)
10494
- return xs;
10495
- if (x.e !== y.e)
10496
- return x.e > y.e ^ xs < 0 ? 1 : -1;
10497
- xdL = xd.length;
10498
- ydL = yd.length;
10499
- for (i = 0, j = xdL < ydL ? xdL : ydL;i < j; ++i) {
10500
- if (xd[i] !== yd[i])
10501
- return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;
10502
- }
10503
- return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;
10504
- };
10505
- P.cosine = P.cos = function() {
10506
- var pr, rm, x = this, Ctor = x.constructor;
10507
- if (!x.d)
10508
- return new Ctor(NaN);
10509
- if (!x.d[0])
10510
- return new Ctor(1);
10511
- pr = Ctor.precision;
10512
- rm = Ctor.rounding;
10513
- Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
10514
- Ctor.rounding = 1;
10515
- x = cosine(Ctor, toLessThanHalfPi(Ctor, x));
10516
- Ctor.precision = pr;
10517
- Ctor.rounding = rm;
10518
- return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);
10519
- };
10520
- P.cubeRoot = P.cbrt = function() {
10521
- var e, m, n, r, rep, s, sd, t, t3, t3plusx, x = this, Ctor = x.constructor;
10522
- if (!x.isFinite() || x.isZero())
10523
- return new Ctor(x);
10524
- external2 = false;
10525
- s = x.s * mathpow(x.s * x, 1 / 3);
10526
- if (!s || Math.abs(s) == 1 / 0) {
10527
- n = digitsToString(x.d);
10528
- e = x.e;
10529
- if (s = (e - n.length + 1) % 3)
10530
- n += s == 1 || s == -2 ? "0" : "00";
10531
- s = mathpow(n, 1 / 3);
10532
- e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));
10533
- if (s == 1 / 0) {
10534
- n = "5e" + e;
10535
- } else {
10536
- n = s.toExponential();
10537
- n = n.slice(0, n.indexOf("e") + 1) + e;
10538
- }
10539
- r = new Ctor(n);
10540
- r.s = x.s;
10541
- } else {
10542
- r = new Ctor(s.toString());
10543
- }
10544
- sd = (e = Ctor.precision) + 3;
10545
- for (;; ) {
10546
- t = r;
10547
- t3 = t.times(t).times(t);
10548
- t3plusx = t3.plus(x);
10549
- r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);
10550
- if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
10551
- n = n.slice(sd - 3, sd + 1);
10552
- if (n == "9999" || !rep && n == "4999") {
10553
- if (!rep) {
10554
- finalise(t, e + 1, 0);
10555
- if (t.times(t).times(t).eq(x)) {
10556
- r = t;
10557
- break;
10558
- }
10559
- }
10560
- sd += 4;
10561
- rep = 1;
10562
- } else {
10563
- if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
10564
- finalise(r, e + 1, 1);
10565
- m = !r.times(r).times(r).eq(x);
10566
- }
10567
- break;
10568
- }
10569
- }
10570
- }
10571
- external2 = true;
10572
- return finalise(r, e, Ctor.rounding, m);
10573
- };
10574
- P.decimalPlaces = P.dp = function() {
10575
- var w, d = this.d, n = NaN;
10576
- if (d) {
10577
- w = d.length - 1;
10578
- n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;
10579
- w = d[w];
10580
- if (w)
10581
- for (;w % 10 == 0; w /= 10)
10582
- n--;
10583
- if (n < 0)
10584
- n = 0;
10585
- }
10586
- return n;
10587
- };
10588
- P.dividedBy = P.div = function(y) {
10589
- return divide(this, new this.constructor(y));
10590
- };
10591
- P.dividedToIntegerBy = P.divToInt = function(y) {
10592
- var x = this, Ctor = x.constructor;
10593
- return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);
10594
- };
10595
- P.equals = P.eq = function(y) {
10596
- return this.cmp(y) === 0;
10597
- };
10598
- P.floor = function() {
10599
- return finalise(new this.constructor(this), this.e + 1, 3);
10600
- };
10601
- P.greaterThan = P.gt = function(y) {
10602
- return this.cmp(y) > 0;
10603
- };
10604
- P.greaterThanOrEqualTo = P.gte = function(y) {
10605
- var k = this.cmp(y);
10606
- return k == 1 || k === 0;
10607
- };
10608
- P.hyperbolicCosine = P.cosh = function() {
10609
- var k, n, pr, rm, len, x = this, Ctor = x.constructor, one = new Ctor(1);
10610
- if (!x.isFinite())
10611
- return new Ctor(x.s ? 1 / 0 : NaN);
10612
- if (x.isZero())
10613
- return one;
10614
- pr = Ctor.precision;
10615
- rm = Ctor.rounding;
10616
- Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
10617
- Ctor.rounding = 1;
10618
- len = x.d.length;
10619
- if (len < 32) {
10620
- k = Math.ceil(len / 3);
10621
- n = (1 / tinyPow(4, k)).toString();
10622
- } else {
10623
- k = 16;
10624
- n = "2.3283064365386962890625e-10";
10625
- }
10626
- x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);
10627
- var cosh2_x, i = k, d8 = new Ctor(8);
10628
- for (;i--; ) {
10629
- cosh2_x = x.times(x);
10630
- x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));
10631
- }
10632
- return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);
10633
- };
10634
- P.hyperbolicSine = P.sinh = function() {
10635
- var k, pr, rm, len, x = this, Ctor = x.constructor;
10636
- if (!x.isFinite() || x.isZero())
10637
- return new Ctor(x);
10638
- pr = Ctor.precision;
10639
- rm = Ctor.rounding;
10640
- Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
10641
- Ctor.rounding = 1;
10642
- len = x.d.length;
10643
- if (len < 3) {
10644
- x = taylorSeries(Ctor, 2, x, x, true);
10645
- } else {
10646
- k = 1.4 * Math.sqrt(len);
10647
- k = k > 16 ? 16 : k | 0;
10648
- x = x.times(1 / tinyPow(5, k));
10649
- x = taylorSeries(Ctor, 2, x, x, true);
10650
- var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
10651
- for (;k--; ) {
10652
- sinh2_x = x.times(x);
10653
- x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));
10654
- }
10655
- }
10656
- Ctor.precision = pr;
10657
- Ctor.rounding = rm;
10658
- return finalise(x, pr, rm, true);
10659
- };
10660
- P.hyperbolicTangent = P.tanh = function() {
10661
- var pr, rm, x = this, Ctor = x.constructor;
10662
- if (!x.isFinite())
10663
- return new Ctor(x.s);
10664
- if (x.isZero())
10665
- return new Ctor(x);
10666
- pr = Ctor.precision;
10667
- rm = Ctor.rounding;
10668
- Ctor.precision = pr + 7;
10669
- Ctor.rounding = 1;
10670
- return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);
10671
- };
10672
- P.inverseCosine = P.acos = function() {
10673
- var x = this, Ctor = x.constructor, k = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding;
10674
- if (k !== -1) {
10675
- return k === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN);
10676
- }
10677
- if (x.isZero())
10678
- return getPi(Ctor, pr + 4, rm).times(0.5);
10679
- Ctor.precision = pr + 6;
10680
- Ctor.rounding = 1;
10681
- x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();
10682
- Ctor.precision = pr;
10683
- Ctor.rounding = rm;
10684
- return x.times(2);
10685
- };
10686
- P.inverseHyperbolicCosine = P.acosh = function() {
10687
- var pr, rm, x = this, Ctor = x.constructor;
10688
- if (x.lte(1))
10689
- return new Ctor(x.eq(1) ? 0 : NaN);
10690
- if (!x.isFinite())
10691
- return new Ctor(x);
10692
- pr = Ctor.precision;
10693
- rm = Ctor.rounding;
10694
- Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;
10695
- Ctor.rounding = 1;
10696
- external2 = false;
10697
- x = x.times(x).minus(1).sqrt().plus(x);
10698
- external2 = true;
10699
- Ctor.precision = pr;
10700
- Ctor.rounding = rm;
10701
- return x.ln();
10702
- };
10703
- P.inverseHyperbolicSine = P.asinh = function() {
10704
- var pr, rm, x = this, Ctor = x.constructor;
10705
- if (!x.isFinite() || x.isZero())
10706
- return new Ctor(x);
10707
- pr = Ctor.precision;
10708
- rm = Ctor.rounding;
10709
- Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;
10710
- Ctor.rounding = 1;
10711
- external2 = false;
10712
- x = x.times(x).plus(1).sqrt().plus(x);
10713
- external2 = true;
10714
- Ctor.precision = pr;
10715
- Ctor.rounding = rm;
10716
- return x.ln();
10717
- };
10718
- P.inverseHyperbolicTangent = P.atanh = function() {
10719
- var pr, rm, wpr, xsd, x = this, Ctor = x.constructor;
10720
- if (!x.isFinite())
10721
- return new Ctor(NaN);
10722
- if (x.e >= 0)
10723
- return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);
10724
- pr = Ctor.precision;
10725
- rm = Ctor.rounding;
10726
- xsd = x.sd();
10727
- if (Math.max(xsd, pr) < 2 * -x.e - 1)
10728
- return finalise(new Ctor(x), pr, rm, true);
10729
- Ctor.precision = wpr = xsd - x.e;
10730
- x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);
10731
- Ctor.precision = pr + 4;
10732
- Ctor.rounding = 1;
10733
- x = x.ln();
10734
- Ctor.precision = pr;
10735
- Ctor.rounding = rm;
10736
- return x.times(0.5);
10737
- };
10738
- P.inverseSine = P.asin = function() {
10739
- var halfPi, k, pr, rm, x = this, Ctor = x.constructor;
10740
- if (x.isZero())
10741
- return new Ctor(x);
10742
- k = x.abs().cmp(1);
10743
- pr = Ctor.precision;
10744
- rm = Ctor.rounding;
10745
- if (k !== -1) {
10746
- if (k === 0) {
10747
- halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
10748
- halfPi.s = x.s;
10749
- return halfPi;
10750
- }
10751
- return new Ctor(NaN);
10752
- }
10753
- Ctor.precision = pr + 6;
10754
- Ctor.rounding = 1;
10755
- x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();
10756
- Ctor.precision = pr;
10757
- Ctor.rounding = rm;
10758
- return x.times(2);
10759
- };
10760
- P.inverseTangent = P.atan = function() {
10761
- var i, j, k, n, px, t, r, wpr, x2, x = this, Ctor = x.constructor, pr = Ctor.precision, rm = Ctor.rounding;
10762
- if (!x.isFinite()) {
10763
- if (!x.s)
10764
- return new Ctor(NaN);
10765
- if (pr + 4 <= PI_PRECISION) {
10766
- r = getPi(Ctor, pr + 4, rm).times(0.5);
10767
- r.s = x.s;
10768
- return r;
10769
- }
10770
- } else if (x.isZero()) {
10771
- return new Ctor(x);
10772
- } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {
10773
- r = getPi(Ctor, pr + 4, rm).times(0.25);
10774
- r.s = x.s;
10775
- return r;
10776
- }
10777
- Ctor.precision = wpr = pr + 10;
10778
- Ctor.rounding = 1;
10779
- k = Math.min(28, wpr / LOG_BASE + 2 | 0);
10780
- for (i = k;i; --i)
10781
- x = x.div(x.times(x).plus(1).sqrt().plus(1));
10782
- external2 = false;
10783
- j = Math.ceil(wpr / LOG_BASE);
10784
- n = 1;
10785
- x2 = x.times(x);
10786
- r = new Ctor(x);
10787
- px = x;
10788
- for (;i !== -1; ) {
10789
- px = px.times(x2);
10790
- t = r.minus(px.div(n += 2));
10791
- px = px.times(x2);
10792
- r = t.plus(px.div(n += 2));
10793
- if (r.d[j] !== undefined)
10794
- for (i = j;r.d[i] === t.d[i] && i--; )
10795
- ;
10796
- }
10797
- if (k)
10798
- r = r.times(2 << k - 1);
10799
- external2 = true;
10800
- return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);
10801
- };
10802
- P.isFinite = function() {
10803
- return !!this.d;
10804
- };
10805
- P.isInteger = P.isInt = function() {
10806
- return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;
10807
- };
10808
- P.isNaN = function() {
10809
- return !this.s;
10810
- };
10811
- P.isNegative = P.isNeg = function() {
10812
- return this.s < 0;
10813
- };
10814
- P.isPositive = P.isPos = function() {
10815
- return this.s > 0;
10816
- };
10817
- P.isZero = function() {
10818
- return !!this.d && this.d[0] === 0;
10819
- };
10820
- P.lessThan = P.lt = function(y) {
10821
- return this.cmp(y) < 0;
10822
- };
10823
- P.lessThanOrEqualTo = P.lte = function(y) {
10824
- return this.cmp(y) < 1;
10825
- };
10826
- P.logarithm = P.log = function(base) {
10827
- var isBase10, d, denominator, k, inf, num, sd, r, arg = this, Ctor = arg.constructor, pr = Ctor.precision, rm = Ctor.rounding, guard = 5;
10828
- if (base == null) {
10829
- base = new Ctor(10);
10830
- isBase10 = true;
10831
- } else {
10832
- base = new Ctor(base);
10833
- d = base.d;
10834
- if (base.s < 0 || !d || !d[0] || base.eq(1))
10835
- return new Ctor(NaN);
10836
- isBase10 = base.eq(10);
10837
- }
10838
- d = arg.d;
10839
- if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {
10840
- return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);
10841
- }
10842
- if (isBase10) {
10843
- if (d.length > 1) {
10844
- inf = true;
10845
- } else {
10846
- for (k = d[0];k % 10 === 0; )
10847
- k /= 10;
10848
- inf = k !== 1;
10849
- }
10850
- }
10851
- external2 = false;
10852
- sd = pr + guard;
10853
- num = naturalLogarithm(arg, sd);
10854
- denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
10855
- r = divide(num, denominator, sd, 1);
10856
- if (checkRoundingDigits(r.d, k = pr, rm)) {
10857
- do {
10858
- sd += 10;
10859
- num = naturalLogarithm(arg, sd);
10860
- denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
10861
- r = divide(num, denominator, sd, 1);
10862
- if (!inf) {
10863
- if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 100000000000000) {
10864
- r = finalise(r, pr + 1, 0);
10865
- }
10866
- break;
10867
- }
10868
- } while (checkRoundingDigits(r.d, k += 10, rm));
10869
- }
10870
- external2 = true;
10871
- return finalise(r, pr, rm);
10872
- };
10873
- P.minus = P.sub = function(y) {
10874
- var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, x = this, Ctor = x.constructor;
10875
- y = new Ctor(y);
10876
- if (!x.d || !y.d) {
10877
- if (!x.s || !y.s)
10878
- y = new Ctor(NaN);
10879
- else if (x.d)
10880
- y.s = -y.s;
10881
- else
10882
- y = new Ctor(y.d || x.s !== y.s ? x : NaN);
10883
- return y;
10884
- }
10885
- if (x.s != y.s) {
10886
- y.s = -y.s;
10887
- return x.plus(y);
10888
- }
10889
- xd = x.d;
10890
- yd = y.d;
10891
- pr = Ctor.precision;
10892
- rm = Ctor.rounding;
10893
- if (!xd[0] || !yd[0]) {
10894
- if (yd[0])
10895
- y.s = -y.s;
10896
- else if (xd[0])
10897
- y = new Ctor(x);
10898
- else
10899
- return new Ctor(rm === 3 ? -0 : 0);
10900
- return external2 ? finalise(y, pr, rm) : y;
10901
- }
10902
- e = mathfloor(y.e / LOG_BASE);
10903
- xe = mathfloor(x.e / LOG_BASE);
10904
- xd = xd.slice();
10905
- k = xe - e;
10906
- if (k) {
10907
- xLTy = k < 0;
10908
- if (xLTy) {
10909
- d = xd;
10910
- k = -k;
10911
- len = yd.length;
10912
- } else {
10913
- d = yd;
10914
- e = xe;
10915
- len = xd.length;
10916
- }
10917
- i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;
10918
- if (k > i) {
10919
- k = i;
10920
- d.length = 1;
10921
- }
10922
- d.reverse();
10923
- for (i = k;i--; )
10924
- d.push(0);
10925
- d.reverse();
10926
- } else {
10927
- i = xd.length;
10928
- len = yd.length;
10929
- xLTy = i < len;
10930
- if (xLTy)
10931
- len = i;
10932
- for (i = 0;i < len; i++) {
10933
- if (xd[i] != yd[i]) {
10934
- xLTy = xd[i] < yd[i];
10935
- break;
10936
- }
10937
- }
10938
- k = 0;
10939
- }
10940
- if (xLTy) {
10941
- d = xd;
10942
- xd = yd;
10943
- yd = d;
10944
- y.s = -y.s;
10945
- }
10946
- len = xd.length;
10947
- for (i = yd.length - len;i > 0; --i)
10948
- xd[len++] = 0;
10949
- for (i = yd.length;i > k; ) {
10950
- if (xd[--i] < yd[i]) {
10951
- for (j = i;j && xd[--j] === 0; )
10952
- xd[j] = BASE - 1;
10953
- --xd[j];
10954
- xd[i] += BASE;
10955
- }
10956
- xd[i] -= yd[i];
10957
- }
10958
- for (;xd[--len] === 0; )
10959
- xd.pop();
10960
- for (;xd[0] === 0; xd.shift())
10961
- --e;
10962
- if (!xd[0])
10963
- return new Ctor(rm === 3 ? -0 : 0);
10964
- y.d = xd;
10965
- y.e = getBase10Exponent(xd, e);
10966
- return external2 ? finalise(y, pr, rm) : y;
10967
- };
10968
- P.modulo = P.mod = function(y) {
10969
- var q, x = this, Ctor = x.constructor;
10970
- y = new Ctor(y);
10971
- if (!x.d || !y.s || y.d && !y.d[0])
10972
- return new Ctor(NaN);
10973
- if (!y.d || x.d && !x.d[0]) {
10974
- return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);
10975
- }
10976
- external2 = false;
10977
- if (Ctor.modulo == 9) {
10978
- q = divide(x, y.abs(), 0, 3, 1);
10979
- q.s *= y.s;
10980
- } else {
10981
- q = divide(x, y, 0, Ctor.modulo, 1);
10982
- }
10983
- q = q.times(y);
10984
- external2 = true;
10985
- return x.minus(q);
10986
- };
10987
- P.naturalExponential = P.exp = function() {
10988
- return naturalExponential(this);
10989
- };
10990
- P.naturalLogarithm = P.ln = function() {
10991
- return naturalLogarithm(this);
10992
- };
10993
- P.negated = P.neg = function() {
10994
- var x = new this.constructor(this);
10995
- x.s = -x.s;
10996
- return finalise(x);
10997
- };
10998
- P.plus = P.add = function(y) {
10999
- var carry, d, e, i, k, len, pr, rm, xd, yd, x = this, Ctor = x.constructor;
11000
- y = new Ctor(y);
11001
- if (!x.d || !y.d) {
11002
- if (!x.s || !y.s)
11003
- y = new Ctor(NaN);
11004
- else if (!x.d)
11005
- y = new Ctor(y.d || x.s === y.s ? x : NaN);
11006
- return y;
11007
- }
11008
- if (x.s != y.s) {
11009
- y.s = -y.s;
11010
- return x.minus(y);
11011
- }
11012
- xd = x.d;
11013
- yd = y.d;
11014
- pr = Ctor.precision;
11015
- rm = Ctor.rounding;
11016
- if (!xd[0] || !yd[0]) {
11017
- if (!yd[0])
11018
- y = new Ctor(x);
11019
- return external2 ? finalise(y, pr, rm) : y;
11020
- }
11021
- k = mathfloor(x.e / LOG_BASE);
11022
- e = mathfloor(y.e / LOG_BASE);
11023
- xd = xd.slice();
11024
- i = k - e;
11025
- if (i) {
11026
- if (i < 0) {
11027
- d = xd;
11028
- i = -i;
11029
- len = yd.length;
11030
- } else {
11031
- d = yd;
11032
- e = k;
11033
- len = xd.length;
11034
- }
11035
- k = Math.ceil(pr / LOG_BASE);
11036
- len = k > len ? k + 1 : len + 1;
11037
- if (i > len) {
11038
- i = len;
11039
- d.length = 1;
11040
- }
11041
- d.reverse();
11042
- for (;i--; )
11043
- d.push(0);
11044
- d.reverse();
11045
- }
11046
- len = xd.length;
11047
- i = yd.length;
11048
- if (len - i < 0) {
11049
- i = len;
11050
- d = yd;
11051
- yd = xd;
11052
- xd = d;
11053
- }
11054
- for (carry = 0;i; ) {
11055
- carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;
11056
- xd[i] %= BASE;
11057
- }
11058
- if (carry) {
11059
- xd.unshift(carry);
11060
- ++e;
11061
- }
11062
- for (len = xd.length;xd[--len] == 0; )
11063
- xd.pop();
11064
- y.d = xd;
11065
- y.e = getBase10Exponent(xd, e);
11066
- return external2 ? finalise(y, pr, rm) : y;
11067
- };
11068
- P.precision = P.sd = function(z) {
11069
- var k, x = this;
11070
- if (z !== undefined && z !== !!z && z !== 1 && z !== 0)
11071
- throw Error(invalidArgument + z);
11072
- if (x.d) {
11073
- k = getPrecision(x.d);
11074
- if (z && x.e + 1 > k)
11075
- k = x.e + 1;
11076
- } else {
11077
- k = NaN;
11078
- }
11079
- return k;
11080
- };
11081
- P.round = function() {
11082
- var x = this, Ctor = x.constructor;
11083
- return finalise(new Ctor(x), x.e + 1, Ctor.rounding);
11084
- };
11085
- P.sine = P.sin = function() {
11086
- var pr, rm, x = this, Ctor = x.constructor;
11087
- if (!x.isFinite())
11088
- return new Ctor(NaN);
11089
- if (x.isZero())
11090
- return new Ctor(x);
11091
- pr = Ctor.precision;
11092
- rm = Ctor.rounding;
11093
- Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
11094
- Ctor.rounding = 1;
11095
- x = sine(Ctor, toLessThanHalfPi(Ctor, x));
11096
- Ctor.precision = pr;
11097
- Ctor.rounding = rm;
11098
- return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);
11099
- };
11100
- P.squareRoot = P.sqrt = function() {
11101
- var m, n, sd, r, rep, t, x = this, d = x.d, e = x.e, s = x.s, Ctor = x.constructor;
11102
- if (s !== 1 || !d || !d[0]) {
11103
- return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);
11104
- }
11105
- external2 = false;
11106
- s = Math.sqrt(+x);
11107
- if (s == 0 || s == 1 / 0) {
11108
- n = digitsToString(d);
11109
- if ((n.length + e) % 2 == 0)
11110
- n += "0";
11111
- s = Math.sqrt(n);
11112
- e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);
11113
- if (s == 1 / 0) {
11114
- n = "5e" + e;
11115
- } else {
11116
- n = s.toExponential();
11117
- n = n.slice(0, n.indexOf("e") + 1) + e;
11118
- }
11119
- r = new Ctor(n);
11120
- } else {
11121
- r = new Ctor(s.toString());
11122
- }
11123
- sd = (e = Ctor.precision) + 3;
11124
- for (;; ) {
11125
- t = r;
11126
- r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);
11127
- if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
11128
- n = n.slice(sd - 3, sd + 1);
11129
- if (n == "9999" || !rep && n == "4999") {
11130
- if (!rep) {
11131
- finalise(t, e + 1, 0);
11132
- if (t.times(t).eq(x)) {
11133
- r = t;
11134
- break;
11135
- }
11136
- }
11137
- sd += 4;
11138
- rep = 1;
11139
- } else {
11140
- if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
11141
- finalise(r, e + 1, 1);
11142
- m = !r.times(r).eq(x);
11143
- }
11144
- break;
11145
- }
11146
- }
11147
- }
11148
- external2 = true;
11149
- return finalise(r, e, Ctor.rounding, m);
11150
- };
11151
- P.tangent = P.tan = function() {
11152
- var pr, rm, x = this, Ctor = x.constructor;
11153
- if (!x.isFinite())
11154
- return new Ctor(NaN);
11155
- if (x.isZero())
11156
- return new Ctor(x);
11157
- pr = Ctor.precision;
11158
- rm = Ctor.rounding;
11159
- Ctor.precision = pr + 10;
11160
- Ctor.rounding = 1;
11161
- x = x.sin();
11162
- x.s = 1;
11163
- x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);
11164
- Ctor.precision = pr;
11165
- Ctor.rounding = rm;
11166
- return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);
11167
- };
11168
- P.times = P.mul = function(y) {
11169
- var carry, e, i, k, r, rL, t, xdL, ydL, x = this, Ctor = x.constructor, xd = x.d, yd = (y = new Ctor(y)).d;
11170
- y.s *= x.s;
11171
- if (!xd || !xd[0] || !yd || !yd[0]) {
11172
- return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd ? NaN : !xd || !yd ? y.s / 0 : y.s * 0);
11173
- }
11174
- e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);
11175
- xdL = xd.length;
11176
- ydL = yd.length;
11177
- if (xdL < ydL) {
11178
- r = xd;
11179
- xd = yd;
11180
- yd = r;
11181
- rL = xdL;
11182
- xdL = ydL;
11183
- ydL = rL;
11184
- }
11185
- r = [];
11186
- rL = xdL + ydL;
11187
- for (i = rL;i--; )
11188
- r.push(0);
11189
- for (i = ydL;--i >= 0; ) {
11190
- carry = 0;
11191
- for (k = xdL + i;k > i; ) {
11192
- t = r[k] + yd[i] * xd[k - i - 1] + carry;
11193
- r[k--] = t % BASE | 0;
11194
- carry = t / BASE | 0;
11195
- }
11196
- r[k] = (r[k] + carry) % BASE | 0;
11197
- }
11198
- for (;!r[--rL]; )
11199
- r.pop();
11200
- if (carry)
11201
- ++e;
11202
- else
11203
- r.shift();
11204
- y.d = r;
11205
- y.e = getBase10Exponent(r, e);
11206
- return external2 ? finalise(y, Ctor.precision, Ctor.rounding) : y;
11207
- };
11208
- P.toBinary = function(sd, rm) {
11209
- return toStringBinary(this, 2, sd, rm);
11210
- };
11211
- P.toDecimalPlaces = P.toDP = function(dp, rm) {
11212
- var x = this, Ctor = x.constructor;
11213
- x = new Ctor(x);
11214
- if (dp === undefined)
11215
- return x;
11216
- checkInt32(dp, 0, MAX_DIGITS);
11217
- if (rm === undefined)
11218
- rm = Ctor.rounding;
11219
- else
11220
- checkInt32(rm, 0, 8);
11221
- return finalise(x, dp + x.e + 1, rm);
11222
- };
11223
- P.toExponential = function(dp, rm) {
11224
- var str, x = this, Ctor = x.constructor;
11225
- if (dp === undefined) {
11226
- str = finiteToString(x, true);
11227
- } else {
11228
- checkInt32(dp, 0, MAX_DIGITS);
11229
- if (rm === undefined)
11230
- rm = Ctor.rounding;
11231
- else
11232
- checkInt32(rm, 0, 8);
11233
- x = finalise(new Ctor(x), dp + 1, rm);
11234
- str = finiteToString(x, true, dp + 1);
11235
- }
11236
- return x.isNeg() && !x.isZero() ? "-" + str : str;
11237
- };
11238
- P.toFixed = function(dp, rm) {
11239
- var str, y, x = this, Ctor = x.constructor;
11240
- if (dp === undefined) {
11241
- str = finiteToString(x);
11242
- } else {
11243
- checkInt32(dp, 0, MAX_DIGITS);
11244
- if (rm === undefined)
11245
- rm = Ctor.rounding;
11246
- else
11247
- checkInt32(rm, 0, 8);
11248
- y = finalise(new Ctor(x), dp + x.e + 1, rm);
11249
- str = finiteToString(y, false, dp + y.e + 1);
11250
- }
11251
- return x.isNeg() && !x.isZero() ? "-" + str : str;
11252
- };
11253
- P.toFraction = function(maxD) {
11254
- var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, x = this, xd = x.d, Ctor = x.constructor;
11255
- if (!xd)
11256
- return new Ctor(x);
11257
- n1 = d0 = new Ctor(1);
11258
- d1 = n0 = new Ctor(0);
11259
- d = new Ctor(d1);
11260
- e = d.e = getPrecision(xd) - x.e - 1;
11261
- k = e % LOG_BASE;
11262
- d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);
11263
- if (maxD == null) {
11264
- maxD = e > 0 ? d : n1;
11265
- } else {
11266
- n = new Ctor(maxD);
11267
- if (!n.isInt() || n.lt(n1))
11268
- throw Error(invalidArgument + n);
11269
- maxD = n.gt(d) ? e > 0 ? d : n1 : n;
11270
- }
11271
- external2 = false;
11272
- n = new Ctor(digitsToString(xd));
11273
- pr = Ctor.precision;
11274
- Ctor.precision = e = xd.length * LOG_BASE * 2;
11275
- for (;; ) {
11276
- q = divide(n, d, 0, 1, 1);
11277
- d2 = d0.plus(q.times(d1));
11278
- if (d2.cmp(maxD) == 1)
11279
- break;
11280
- d0 = d1;
11281
- d1 = d2;
11282
- d2 = n1;
11283
- n1 = n0.plus(q.times(d2));
11284
- n0 = d2;
11285
- d2 = d;
11286
- d = n.minus(q.times(d2));
11287
- n = d2;
11288
- }
11289
- d2 = divide(maxD.minus(d0), d1, 0, 1, 1);
11290
- n0 = n0.plus(d2.times(n1));
11291
- d0 = d0.plus(d2.times(d1));
11292
- n0.s = n1.s = x.s;
11293
- r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];
11294
- Ctor.precision = pr;
11295
- external2 = true;
11296
- return r;
11297
- };
11298
- P.toHexadecimal = P.toHex = function(sd, rm) {
11299
- return toStringBinary(this, 16, sd, rm);
11300
- };
11301
- P.toNearest = function(y, rm) {
11302
- var x = this, Ctor = x.constructor;
11303
- x = new Ctor(x);
11304
- if (y == null) {
11305
- if (!x.d)
11306
- return x;
11307
- y = new Ctor(1);
11308
- rm = Ctor.rounding;
11309
- } else {
11310
- y = new Ctor(y);
11311
- if (rm === undefined) {
11312
- rm = Ctor.rounding;
11313
- } else {
11314
- checkInt32(rm, 0, 8);
11315
- }
11316
- if (!x.d)
11317
- return y.s ? x : y;
11318
- if (!y.d) {
11319
- if (y.s)
11320
- y.s = x.s;
11321
- return y;
11322
- }
11323
- }
11324
- if (y.d[0]) {
11325
- external2 = false;
11326
- x = divide(x, y, 0, rm, 1).times(y);
11327
- external2 = true;
11328
- finalise(x);
11329
- } else {
11330
- y.s = x.s;
11331
- x = y;
11332
- }
11333
- return x;
11334
- };
11335
- P.toNumber = function() {
11336
- return +this;
11337
- };
11338
- P.toOctal = function(sd, rm) {
11339
- return toStringBinary(this, 8, sd, rm);
11340
- };
11341
- P.toPower = P.pow = function(y) {
11342
- var e, k, pr, r, rm, s, x = this, Ctor = x.constructor, yn = +(y = new Ctor(y));
11343
- if (!x.d || !y.d || !x.d[0] || !y.d[0])
11344
- return new Ctor(mathpow(+x, yn));
11345
- x = new Ctor(x);
11346
- if (x.eq(1))
11347
- return x;
11348
- pr = Ctor.precision;
11349
- rm = Ctor.rounding;
11350
- if (y.eq(1))
11351
- return finalise(x, pr, rm);
11352
- e = mathfloor(y.e / LOG_BASE);
11353
- if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {
11354
- r = intPow(Ctor, x, k, pr);
11355
- return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);
11356
- }
11357
- s = x.s;
11358
- if (s < 0) {
11359
- if (e < y.d.length - 1)
11360
- return new Ctor(NaN);
11361
- if ((y.d[e] & 1) == 0)
11362
- s = 1;
11363
- if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {
11364
- x.s = s;
11365
- return x;
11366
- }
11367
- }
11368
- k = mathpow(+x, yn);
11369
- e = k == 0 || !isFinite(k) ? mathfloor(yn * (Math.log("0." + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k + "").e;
11370
- if (e > Ctor.maxE + 1 || e < Ctor.minE - 1)
11371
- return new Ctor(e > 0 ? s / 0 : 0);
11372
- external2 = false;
11373
- Ctor.rounding = x.s = 1;
11374
- k = Math.min(12, (e + "").length);
11375
- r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);
11376
- if (r.d) {
11377
- r = finalise(r, pr + 5, 1);
11378
- if (checkRoundingDigits(r.d, pr, rm)) {
11379
- e = pr + 10;
11380
- r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);
11381
- if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 100000000000000) {
11382
- r = finalise(r, pr + 1, 0);
11383
- }
11384
- }
11385
- }
11386
- r.s = s;
11387
- external2 = true;
11388
- Ctor.rounding = rm;
11389
- return finalise(r, pr, rm);
11390
- };
11391
- P.toPrecision = function(sd, rm) {
11392
- var str, x = this, Ctor = x.constructor;
11393
- if (sd === undefined) {
11394
- str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
11395
- } else {
11396
- checkInt32(sd, 1, MAX_DIGITS);
11397
- if (rm === undefined)
11398
- rm = Ctor.rounding;
11399
- else
11400
- checkInt32(rm, 0, 8);
11401
- x = finalise(new Ctor(x), sd, rm);
11402
- str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);
11403
- }
11404
- return x.isNeg() && !x.isZero() ? "-" + str : str;
11405
- };
11406
- P.toSignificantDigits = P.toSD = function(sd, rm) {
11407
- var x = this, Ctor = x.constructor;
11408
- if (sd === undefined) {
11409
- sd = Ctor.precision;
11410
- rm = Ctor.rounding;
11411
- } else {
11412
- checkInt32(sd, 1, MAX_DIGITS);
11413
- if (rm === undefined)
11414
- rm = Ctor.rounding;
11415
- else
11416
- checkInt32(rm, 0, 8);
11417
- }
11418
- return finalise(new Ctor(x), sd, rm);
11419
- };
11420
- P.toString = function() {
11421
- var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
11422
- return x.isNeg() && !x.isZero() ? "-" + str : str;
11423
- };
11424
- P.truncated = P.trunc = function() {
11425
- return finalise(new this.constructor(this), this.e + 1, 1);
11426
- };
11427
- P.valueOf = P.toJSON = function() {
11428
- var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
11429
- return x.isNeg() ? "-" + str : str;
11430
- };
11431
- function digitsToString(d) {
11432
- var i, k, ws, indexOfLastWord = d.length - 1, str = "", w = d[0];
11433
- if (indexOfLastWord > 0) {
11434
- str += w;
11435
- for (i = 1;i < indexOfLastWord; i++) {
11436
- ws = d[i] + "";
11437
- k = LOG_BASE - ws.length;
11438
- if (k)
11439
- str += getZeroString(k);
11440
- str += ws;
11441
- }
11442
- w = d[i];
11443
- ws = w + "";
11444
- k = LOG_BASE - ws.length;
11445
- if (k)
11446
- str += getZeroString(k);
11447
- } else if (w === 0) {
11448
- return "0";
11449
- }
11450
- for (;w % 10 === 0; )
11451
- w /= 10;
11452
- return str + w;
11453
- }
11454
- function checkInt32(i, min, max) {
11455
- if (i !== ~~i || i < min || i > max) {
11456
- throw Error(invalidArgument + i);
11457
- }
11458
- }
11459
- function checkRoundingDigits(d, i, rm, repeating) {
11460
- var di, k, r, rd;
11461
- for (k = d[0];k >= 10; k /= 10)
11462
- --i;
11463
- if (--i < 0) {
11464
- i += LOG_BASE;
11465
- di = 0;
11466
- } else {
11467
- di = Math.ceil((i + 1) / LOG_BASE);
11468
- i %= LOG_BASE;
11469
- }
11470
- k = mathpow(10, LOG_BASE - i);
11471
- rd = d[di] % k | 0;
11472
- if (repeating == null) {
11473
- if (i < 3) {
11474
- if (i == 0)
11475
- rd = rd / 100 | 0;
11476
- else if (i == 1)
11477
- rd = rd / 10 | 0;
11478
- r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;
11479
- } else {
11480
- r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;
11481
- }
11482
- } else {
11483
- if (i < 4) {
11484
- if (i == 0)
11485
- rd = rd / 1000 | 0;
11486
- else if (i == 1)
11487
- rd = rd / 100 | 0;
11488
- else if (i == 2)
11489
- rd = rd / 10 | 0;
11490
- r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;
11491
- } else {
11492
- r = ((repeating || rm < 4) && rd + 1 == k || !repeating && rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;
11493
- }
11494
- }
11495
- return r;
11496
- }
11497
- function convertBase(str, baseIn, baseOut) {
11498
- var j, arr = [0], arrL, i = 0, strL = str.length;
11499
- for (;i < strL; ) {
11500
- for (arrL = arr.length;arrL--; )
11501
- arr[arrL] *= baseIn;
11502
- arr[0] += NUMERALS.indexOf(str.charAt(i++));
11503
- for (j = 0;j < arr.length; j++) {
11504
- if (arr[j] > baseOut - 1) {
11505
- if (arr[j + 1] === undefined)
11506
- arr[j + 1] = 0;
11507
- arr[j + 1] += arr[j] / baseOut | 0;
11508
- arr[j] %= baseOut;
11509
- }
11510
- }
11511
- }
11512
- return arr.reverse();
11513
- }
11514
- function cosine(Ctor, x) {
11515
- var k, len, y;
11516
- if (x.isZero())
11517
- return x;
11518
- len = x.d.length;
11519
- if (len < 32) {
11520
- k = Math.ceil(len / 3);
11521
- y = (1 / tinyPow(4, k)).toString();
11522
- } else {
11523
- k = 16;
11524
- y = "2.3283064365386962890625e-10";
11525
- }
11526
- Ctor.precision += k;
11527
- x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));
11528
- for (var i = k;i--; ) {
11529
- var cos2x = x.times(x);
11530
- x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);
11531
- }
11532
- Ctor.precision -= k;
11533
- return x;
11534
- }
11535
- var divide = function() {
11536
- function multiplyInteger(x, k, base) {
11537
- var temp, carry = 0, i = x.length;
11538
- for (x = x.slice();i--; ) {
11539
- temp = x[i] * k + carry;
11540
- x[i] = temp % base | 0;
11541
- carry = temp / base | 0;
11542
- }
11543
- if (carry)
11544
- x.unshift(carry);
11545
- return x;
11546
- }
11547
- function compare(a, b, aL, bL) {
11548
- var i, r;
11549
- if (aL != bL) {
11550
- r = aL > bL ? 1 : -1;
11551
- } else {
11552
- for (i = r = 0;i < aL; i++) {
11553
- if (a[i] != b[i]) {
11554
- r = a[i] > b[i] ? 1 : -1;
11555
- break;
11556
- }
11557
- }
11558
- }
11559
- return r;
11560
- }
11561
- function subtract(a, b, aL, base) {
11562
- var i = 0;
11563
- for (;aL--; ) {
11564
- a[aL] -= i;
11565
- i = a[aL] < b[aL] ? 1 : 0;
11566
- a[aL] = i * base + a[aL] - b[aL];
11567
- }
11568
- for (;!a[0] && a.length > 1; )
11569
- a.shift();
11570
- }
11571
- return function(x, y, pr, rm, dp, base) {
11572
- var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz, Ctor = x.constructor, sign = x.s == y.s ? 1 : -1, xd = x.d, yd = y.d;
11573
- if (!xd || !xd[0] || !yd || !yd[0]) {
11574
- return new Ctor(!x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);
11575
- }
11576
- if (base) {
11577
- logBase = 1;
11578
- e = x.e - y.e;
11579
- } else {
11580
- base = BASE;
11581
- logBase = LOG_BASE;
11582
- e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);
11583
- }
11584
- yL = yd.length;
11585
- xL = xd.length;
11586
- q = new Ctor(sign);
11587
- qd = q.d = [];
11588
- for (i = 0;yd[i] == (xd[i] || 0); i++)
11589
- ;
11590
- if (yd[i] > (xd[i] || 0))
11591
- e--;
11592
- if (pr == null) {
11593
- sd = pr = Ctor.precision;
11594
- rm = Ctor.rounding;
11595
- } else if (dp) {
11596
- sd = pr + (x.e - y.e) + 1;
11597
- } else {
11598
- sd = pr;
11599
- }
11600
- if (sd < 0) {
11601
- qd.push(1);
11602
- more = true;
11603
- } else {
11604
- sd = sd / logBase + 2 | 0;
11605
- i = 0;
11606
- if (yL == 1) {
11607
- k = 0;
11608
- yd = yd[0];
11609
- sd++;
11610
- for (;(i < xL || k) && sd--; i++) {
11611
- t = k * base + (xd[i] || 0);
11612
- qd[i] = t / yd | 0;
11613
- k = t % yd | 0;
11614
- }
11615
- more = k || i < xL;
11616
- } else {
11617
- k = base / (yd[0] + 1) | 0;
11618
- if (k > 1) {
11619
- yd = multiplyInteger(yd, k, base);
11620
- xd = multiplyInteger(xd, k, base);
11621
- yL = yd.length;
11622
- xL = xd.length;
11623
- }
11624
- xi = yL;
11625
- rem = xd.slice(0, yL);
11626
- remL = rem.length;
11627
- for (;remL < yL; )
11628
- rem[remL++] = 0;
11629
- yz = yd.slice();
11630
- yz.unshift(0);
11631
- yd0 = yd[0];
11632
- if (yd[1] >= base / 2)
11633
- ++yd0;
11634
- do {
11635
- k = 0;
11636
- cmp = compare(yd, rem, yL, remL);
11637
- if (cmp < 0) {
11638
- rem0 = rem[0];
11639
- if (yL != remL)
11640
- rem0 = rem0 * base + (rem[1] || 0);
11641
- k = rem0 / yd0 | 0;
11642
- if (k > 1) {
11643
- if (k >= base)
11644
- k = base - 1;
11645
- prod = multiplyInteger(yd, k, base);
11646
- prodL = prod.length;
11647
- remL = rem.length;
11648
- cmp = compare(prod, rem, prodL, remL);
11649
- if (cmp == 1) {
11650
- k--;
11651
- subtract(prod, yL < prodL ? yz : yd, prodL, base);
11652
- }
11653
- } else {
11654
- if (k == 0)
11655
- cmp = k = 1;
11656
- prod = yd.slice();
11657
- }
11658
- prodL = prod.length;
11659
- if (prodL < remL)
11660
- prod.unshift(0);
11661
- subtract(rem, prod, remL, base);
11662
- if (cmp == -1) {
11663
- remL = rem.length;
11664
- cmp = compare(yd, rem, yL, remL);
11665
- if (cmp < 1) {
11666
- k++;
11667
- subtract(rem, yL < remL ? yz : yd, remL, base);
11668
- }
11669
- }
11670
- remL = rem.length;
11671
- } else if (cmp === 0) {
11672
- k++;
11673
- rem = [0];
11674
- }
11675
- qd[i++] = k;
11676
- if (cmp && rem[0]) {
11677
- rem[remL++] = xd[xi] || 0;
11678
- } else {
11679
- rem = [xd[xi]];
11680
- remL = 1;
11681
- }
11682
- } while ((xi++ < xL || rem[0] !== undefined) && sd--);
11683
- more = rem[0] !== undefined;
11684
- }
11685
- if (!qd[0])
11686
- qd.shift();
11687
- }
11688
- if (logBase == 1) {
11689
- q.e = e;
11690
- inexact = more;
11691
- } else {
11692
- for (i = 1, k = qd[0];k >= 10; k /= 10)
11693
- i++;
11694
- q.e = i + e * logBase - 1;
11695
- finalise(q, dp ? pr + q.e + 1 : pr, rm, more);
11696
- }
11697
- return q;
11698
- };
11699
- }();
11700
- function finalise(x, sd, rm, isTruncated) {
11701
- var digits, i, j, k, rd, roundUp, w, xd, xdi, Ctor = x.constructor;
11702
- out:
11703
- if (sd != null) {
11704
- xd = x.d;
11705
- if (!xd)
11706
- return x;
11707
- for (digits = 1, k = xd[0];k >= 10; k /= 10)
11708
- digits++;
11709
- i = sd - digits;
11710
- if (i < 0) {
11711
- i += LOG_BASE;
11712
- j = sd;
11713
- w = xd[xdi = 0];
11714
- rd = w / mathpow(10, digits - j - 1) % 10 | 0;
11715
- } else {
11716
- xdi = Math.ceil((i + 1) / LOG_BASE);
11717
- k = xd.length;
11718
- if (xdi >= k) {
11719
- if (isTruncated) {
11720
- for (;k++ <= xdi; )
11721
- xd.push(0);
11722
- w = rd = 0;
11723
- digits = 1;
11724
- i %= LOG_BASE;
11725
- j = i - LOG_BASE + 1;
11726
- } else {
11727
- break out;
11728
- }
11729
- } else {
11730
- w = k = xd[xdi];
11731
- for (digits = 1;k >= 10; k /= 10)
11732
- digits++;
11733
- i %= LOG_BASE;
11734
- j = i - LOG_BASE + digits;
11735
- rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;
11736
- }
11737
- }
11738
- isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== undefined || (j < 0 ? w : w % mathpow(10, digits - j - 1));
11739
- roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && (i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
11740
- if (sd < 1 || !xd[0]) {
11741
- xd.length = 0;
11742
- if (roundUp) {
11743
- sd -= x.e + 1;
11744
- xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);
11745
- x.e = -sd || 0;
11746
- } else {
11747
- xd[0] = x.e = 0;
11748
- }
11749
- return x;
11750
- }
11751
- if (i == 0) {
11752
- xd.length = xdi;
11753
- k = 1;
11754
- xdi--;
11755
- } else {
11756
- xd.length = xdi + 1;
11757
- k = mathpow(10, LOG_BASE - i);
11758
- xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;
11759
- }
11760
- if (roundUp) {
11761
- for (;; ) {
11762
- if (xdi == 0) {
11763
- for (i = 1, j = xd[0];j >= 10; j /= 10)
11764
- i++;
11765
- j = xd[0] += k;
11766
- for (k = 1;j >= 10; j /= 10)
11767
- k++;
11768
- if (i != k) {
11769
- x.e++;
11770
- if (xd[0] == BASE)
11771
- xd[0] = 1;
11772
- }
11773
- break;
11774
- } else {
11775
- xd[xdi] += k;
11776
- if (xd[xdi] != BASE)
11777
- break;
11778
- xd[xdi--] = 0;
11779
- k = 1;
11780
- }
11781
- }
11782
- }
11783
- for (i = xd.length;xd[--i] === 0; )
11784
- xd.pop();
11785
- }
11786
- if (external2) {
11787
- if (x.e > Ctor.maxE) {
11788
- x.d = null;
11789
- x.e = NaN;
11790
- } else if (x.e < Ctor.minE) {
11791
- x.e = 0;
11792
- x.d = [0];
11793
- }
11794
- }
11795
- return x;
11796
- }
11797
- function finiteToString(x, isExp, sd) {
11798
- if (!x.isFinite())
11799
- return nonFiniteToString(x);
11800
- var k, e = x.e, str = digitsToString(x.d), len = str.length;
11801
- if (isExp) {
11802
- if (sd && (k = sd - len) > 0) {
11803
- str = str.charAt(0) + "." + str.slice(1) + getZeroString(k);
11804
- } else if (len > 1) {
11805
- str = str.charAt(0) + "." + str.slice(1);
11806
- }
11807
- str = str + (x.e < 0 ? "e" : "e+") + x.e;
11808
- } else if (e < 0) {
11809
- str = "0." + getZeroString(-e - 1) + str;
11810
- if (sd && (k = sd - len) > 0)
11811
- str += getZeroString(k);
11812
- } else if (e >= len) {
11813
- str += getZeroString(e + 1 - len);
11814
- if (sd && (k = sd - e - 1) > 0)
11815
- str = str + "." + getZeroString(k);
11816
- } else {
11817
- if ((k = e + 1) < len)
11818
- str = str.slice(0, k) + "." + str.slice(k);
11819
- if (sd && (k = sd - len) > 0) {
11820
- if (e + 1 === len)
11821
- str += ".";
11822
- str += getZeroString(k);
11823
- }
11824
- }
11825
- return str;
11826
- }
11827
- function getBase10Exponent(digits, e) {
11828
- var w = digits[0];
11829
- for (e *= LOG_BASE;w >= 10; w /= 10)
11830
- e++;
11831
- return e;
11832
- }
11833
- function getLn10(Ctor, sd, pr) {
11834
- if (sd > LN10_PRECISION) {
11835
- external2 = true;
11836
- if (pr)
11837
- Ctor.precision = pr;
11838
- throw Error(precisionLimitExceeded);
11839
- }
11840
- return finalise(new Ctor(LN10), sd, 1, true);
11841
- }
11842
- function getPi(Ctor, sd, rm) {
11843
- if (sd > PI_PRECISION)
11844
- throw Error(precisionLimitExceeded);
11845
- return finalise(new Ctor(PI), sd, rm, true);
11846
- }
11847
- function getPrecision(digits) {
11848
- var w = digits.length - 1, len = w * LOG_BASE + 1;
11849
- w = digits[w];
11850
- if (w) {
11851
- for (;w % 10 == 0; w /= 10)
11852
- len--;
11853
- for (w = digits[0];w >= 10; w /= 10)
11854
- len++;
11855
- }
11856
- return len;
11857
- }
11858
- function getZeroString(k) {
11859
- var zs = "";
11860
- for (;k--; )
11861
- zs += "0";
11862
- return zs;
11863
- }
11864
- function intPow(Ctor, x, n, pr) {
11865
- var isTruncated, r = new Ctor(1), k = Math.ceil(pr / LOG_BASE + 4);
11866
- external2 = false;
11867
- for (;; ) {
11868
- if (n % 2) {
11869
- r = r.times(x);
11870
- if (truncate(r.d, k))
11871
- isTruncated = true;
11872
- }
11873
- n = mathfloor(n / 2);
11874
- if (n === 0) {
11875
- n = r.d.length - 1;
11876
- if (isTruncated && r.d[n] === 0)
11877
- ++r.d[n];
11878
- break;
11879
- }
11880
- x = x.times(x);
11881
- truncate(x.d, k);
11882
- }
11883
- external2 = true;
11884
- return r;
11885
- }
11886
- function isOdd(n) {
11887
- return n.d[n.d.length - 1] & 1;
11888
- }
11889
- function maxOrMin(Ctor, args, n) {
11890
- var k, y, x = new Ctor(args[0]), i = 0;
11891
- for (;++i < args.length; ) {
11892
- y = new Ctor(args[i]);
11893
- if (!y.s) {
11894
- x = y;
11895
- break;
11896
- }
11897
- k = x.cmp(y);
11898
- if (k === n || k === 0 && x.s === n) {
11899
- x = y;
11900
- }
11901
- }
11902
- return x;
11903
- }
11904
- function naturalExponential(x, sd) {
11905
- var denominator, guard, j, pow, sum, t, wpr, rep = 0, i = 0, k = 0, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
11906
- if (!x.d || !x.d[0] || x.e > 17) {
11907
- return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0);
11908
- }
11909
- if (sd == null) {
11910
- external2 = false;
11911
- wpr = pr;
11912
- } else {
11913
- wpr = sd;
11914
- }
11915
- t = new Ctor(0.03125);
11916
- while (x.e > -2) {
11917
- x = x.times(t);
11918
- k += 5;
11919
- }
11920
- guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;
11921
- wpr += guard;
11922
- denominator = pow = sum = new Ctor(1);
11923
- Ctor.precision = wpr;
11924
- for (;; ) {
11925
- pow = finalise(pow.times(x), wpr, 1);
11926
- denominator = denominator.times(++i);
11927
- t = sum.plus(divide(pow, denominator, wpr, 1));
11928
- if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
11929
- j = k;
11930
- while (j--)
11931
- sum = finalise(sum.times(sum), wpr, 1);
11932
- if (sd == null) {
11933
- if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
11934
- Ctor.precision = wpr += 10;
11935
- denominator = pow = t = new Ctor(1);
11936
- i = 0;
11937
- rep++;
11938
- } else {
11939
- return finalise(sum, Ctor.precision = pr, rm, external2 = true);
11940
- }
11941
- } else {
11942
- Ctor.precision = pr;
11943
- return sum;
11944
- }
11945
- }
11946
- sum = t;
11947
- }
11948
- }
11949
- function naturalLogarithm(y, sd) {
11950
- var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, n = 1, guard = 10, x = y, xd = x.d, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
11951
- if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {
11952
- return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);
11953
- }
11954
- if (sd == null) {
11955
- external2 = false;
11956
- wpr = pr;
11957
- } else {
11958
- wpr = sd;
11959
- }
11960
- Ctor.precision = wpr += guard;
11961
- c = digitsToString(xd);
11962
- c0 = c.charAt(0);
11963
- if (Math.abs(e = x.e) < 1500000000000000) {
11964
- while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {
11965
- x = x.times(y);
11966
- c = digitsToString(x.d);
11967
- c0 = c.charAt(0);
11968
- n++;
11969
- }
11970
- e = x.e;
11971
- if (c0 > 1) {
11972
- x = new Ctor("0." + c);
11973
- e++;
11974
- } else {
11975
- x = new Ctor(c0 + "." + c.slice(1));
11976
- }
11977
- } else {
11978
- t = getLn10(Ctor, wpr + 2, pr).times(e + "");
11979
- x = naturalLogarithm(new Ctor(c0 + "." + c.slice(1)), wpr - guard).plus(t);
11980
- Ctor.precision = pr;
11981
- return sd == null ? finalise(x, pr, rm, external2 = true) : x;
11982
- }
11983
- x1 = x;
11984
- sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);
11985
- x2 = finalise(x.times(x), wpr, 1);
11986
- denominator = 3;
11987
- for (;; ) {
11988
- numerator = finalise(numerator.times(x2), wpr, 1);
11989
- t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));
11990
- if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
11991
- sum = sum.times(2);
11992
- if (e !== 0)
11993
- sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ""));
11994
- sum = divide(sum, new Ctor(n), wpr, 1);
11995
- if (sd == null) {
11996
- if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
11997
- Ctor.precision = wpr += guard;
11998
- t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);
11999
- x2 = finalise(x.times(x), wpr, 1);
12000
- denominator = rep = 1;
12001
- } else {
12002
- return finalise(sum, Ctor.precision = pr, rm, external2 = true);
12003
- }
12004
- } else {
12005
- Ctor.precision = pr;
12006
- return sum;
12007
- }
12008
- }
12009
- sum = t;
12010
- denominator += 2;
12011
- }
12012
- }
12013
- function nonFiniteToString(x) {
12014
- return String(x.s * x.s / 0);
12015
- }
12016
- function parseDecimal(x, str) {
12017
- var e, i, len;
12018
- if ((e = str.indexOf(".")) > -1)
12019
- str = str.replace(".", "");
12020
- if ((i = str.search(/e/i)) > 0) {
12021
- if (e < 0)
12022
- e = i;
12023
- e += +str.slice(i + 1);
12024
- str = str.substring(0, i);
12025
- } else if (e < 0) {
12026
- e = str.length;
12027
- }
12028
- for (i = 0;str.charCodeAt(i) === 48; i++)
12029
- ;
12030
- for (len = str.length;str.charCodeAt(len - 1) === 48; --len)
12031
- ;
12032
- str = str.slice(i, len);
12033
- if (str) {
12034
- len -= i;
12035
- x.e = e = e - i - 1;
12036
- x.d = [];
12037
- i = (e + 1) % LOG_BASE;
12038
- if (e < 0)
12039
- i += LOG_BASE;
12040
- if (i < len) {
12041
- if (i)
12042
- x.d.push(+str.slice(0, i));
12043
- for (len -= LOG_BASE;i < len; )
12044
- x.d.push(+str.slice(i, i += LOG_BASE));
12045
- str = str.slice(i);
12046
- i = LOG_BASE - str.length;
12047
- } else {
12048
- i -= len;
12049
- }
12050
- for (;i--; )
12051
- str += "0";
12052
- x.d.push(+str);
12053
- if (external2) {
12054
- if (x.e > x.constructor.maxE) {
12055
- x.d = null;
12056
- x.e = NaN;
12057
- } else if (x.e < x.constructor.minE) {
12058
- x.e = 0;
12059
- x.d = [0];
12060
- }
12061
- }
12062
- } else {
12063
- x.e = 0;
12064
- x.d = [0];
12065
- }
12066
- return x;
12067
- }
12068
- function parseOther(x, str) {
12069
- var base, Ctor, divisor, i, isFloat, len, p, xd, xe;
12070
- if (str.indexOf("_") > -1) {
12071
- str = str.replace(/(\d)_(?=\d)/g, "$1");
12072
- if (isDecimal.test(str))
12073
- return parseDecimal(x, str);
12074
- } else if (str === "Infinity" || str === "NaN") {
12075
- if (!+str)
12076
- x.s = NaN;
12077
- x.e = NaN;
12078
- x.d = null;
12079
- return x;
12080
- }
12081
- if (isHex.test(str)) {
12082
- base = 16;
12083
- str = str.toLowerCase();
12084
- } else if (isBinary.test(str)) {
12085
- base = 2;
12086
- } else if (isOctal.test(str)) {
12087
- base = 8;
12088
- } else {
12089
- throw Error(invalidArgument + str);
12090
- }
12091
- i = str.search(/p/i);
12092
- if (i > 0) {
12093
- p = +str.slice(i + 1);
12094
- str = str.substring(2, i);
12095
- } else {
12096
- str = str.slice(2);
12097
- }
12098
- i = str.indexOf(".");
12099
- isFloat = i >= 0;
12100
- Ctor = x.constructor;
12101
- if (isFloat) {
12102
- str = str.replace(".", "");
12103
- len = str.length;
12104
- i = len - i;
12105
- divisor = intPow(Ctor, new Ctor(base), i, i * 2);
12106
- }
12107
- xd = convertBase(str, base, BASE);
12108
- xe = xd.length - 1;
12109
- for (i = xe;xd[i] === 0; --i)
12110
- xd.pop();
12111
- if (i < 0)
12112
- return new Ctor(x.s * 0);
12113
- x.e = getBase10Exponent(xd, xe);
12114
- x.d = xd;
12115
- external2 = false;
12116
- if (isFloat)
12117
- x = divide(x, divisor, len * 4);
12118
- if (p)
12119
- x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));
12120
- external2 = true;
12121
- return x;
12122
- }
12123
- function sine(Ctor, x) {
12124
- var k, len = x.d.length;
12125
- if (len < 3) {
12126
- return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);
12127
- }
12128
- k = 1.4 * Math.sqrt(len);
12129
- k = k > 16 ? 16 : k | 0;
12130
- x = x.times(1 / tinyPow(5, k));
12131
- x = taylorSeries(Ctor, 2, x, x);
12132
- var sin2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
12133
- for (;k--; ) {
12134
- sin2_x = x.times(x);
12135
- x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));
12136
- }
12137
- return x;
12138
- }
12139
- function taylorSeries(Ctor, n, x, y, isHyperbolic) {
12140
- var j, t, u, x2, i = 1, pr = Ctor.precision, k = Math.ceil(pr / LOG_BASE);
12141
- external2 = false;
12142
- x2 = x.times(x);
12143
- u = new Ctor(y);
12144
- for (;; ) {
12145
- t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);
12146
- u = isHyperbolic ? y.plus(t) : y.minus(t);
12147
- y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);
12148
- t = u.plus(y);
12149
- if (t.d[k] !== undefined) {
12150
- for (j = k;t.d[j] === u.d[j] && j--; )
12151
- ;
12152
- if (j == -1)
12153
- break;
12154
- }
12155
- j = u;
12156
- u = y;
12157
- y = t;
12158
- t = j;
12159
- i++;
12160
- }
12161
- external2 = true;
12162
- t.d.length = k + 1;
12163
- return t;
12164
- }
12165
- function tinyPow(b, e) {
12166
- var n = b;
12167
- while (--e)
12168
- n *= b;
12169
- return n;
12170
- }
12171
- function toLessThanHalfPi(Ctor, x) {
12172
- var t, isNeg = x.s < 0, pi = getPi(Ctor, Ctor.precision, 1), halfPi = pi.times(0.5);
12173
- x = x.abs();
12174
- if (x.lte(halfPi)) {
12175
- quadrant = isNeg ? 4 : 1;
12176
- return x;
12177
- }
12178
- t = x.divToInt(pi);
12179
- if (t.isZero()) {
12180
- quadrant = isNeg ? 3 : 2;
12181
- } else {
12182
- x = x.minus(t.times(pi));
12183
- if (x.lte(halfPi)) {
12184
- quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1;
12185
- return x;
12186
- }
12187
- quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2;
12188
- }
12189
- return x.minus(pi).abs();
12190
- }
12191
- function toStringBinary(x, baseOut, sd, rm) {
12192
- var base, e, i, k, len, roundUp, str, xd, y, Ctor = x.constructor, isExp = sd !== undefined;
12193
- if (isExp) {
12194
- checkInt32(sd, 1, MAX_DIGITS);
12195
- if (rm === undefined)
12196
- rm = Ctor.rounding;
12197
- else
12198
- checkInt32(rm, 0, 8);
12199
- } else {
12200
- sd = Ctor.precision;
12201
- rm = Ctor.rounding;
12202
- }
12203
- if (!x.isFinite()) {
12204
- str = nonFiniteToString(x);
12205
- } else {
12206
- str = finiteToString(x);
12207
- i = str.indexOf(".");
12208
- if (isExp) {
12209
- base = 2;
12210
- if (baseOut == 16) {
12211
- sd = sd * 4 - 3;
12212
- } else if (baseOut == 8) {
12213
- sd = sd * 3 - 2;
12214
- }
12215
- } else {
12216
- base = baseOut;
12217
- }
12218
- if (i >= 0) {
12219
- str = str.replace(".", "");
12220
- y = new Ctor(1);
12221
- y.e = str.length - i;
12222
- y.d = convertBase(finiteToString(y), 10, base);
12223
- y.e = y.d.length;
12224
- }
12225
- xd = convertBase(str, 10, base);
12226
- e = len = xd.length;
12227
- for (;xd[--len] == 0; )
12228
- xd.pop();
12229
- if (!xd[0]) {
12230
- str = isExp ? "0p+0" : "0";
12231
- } else {
12232
- if (i < 0) {
12233
- e--;
12234
- } else {
12235
- x = new Ctor(x);
12236
- x.d = xd;
12237
- x.e = e;
12238
- x = divide(x, y, sd, rm, 0, base);
12239
- xd = x.d;
12240
- e = x.e;
12241
- roundUp = inexact;
12242
- }
12243
- i = xd[sd];
12244
- k = base / 2;
12245
- roundUp = roundUp || xd[sd + 1] !== undefined;
12246
- roundUp = rm < 4 ? (i !== undefined || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7));
12247
- xd.length = sd;
12248
- if (roundUp) {
12249
- for (;++xd[--sd] > base - 1; ) {
12250
- xd[sd] = 0;
12251
- if (!sd) {
12252
- ++e;
12253
- xd.unshift(1);
12254
- }
12255
- }
12256
- }
12257
- for (len = xd.length;!xd[len - 1]; --len)
12258
- ;
12259
- for (i = 0, str = "";i < len; i++)
12260
- str += NUMERALS.charAt(xd[i]);
12261
- if (isExp) {
12262
- if (len > 1) {
12263
- if (baseOut == 16 || baseOut == 8) {
12264
- i = baseOut == 16 ? 4 : 3;
12265
- for (--len;len % i; len++)
12266
- str += "0";
12267
- xd = convertBase(str, base, baseOut);
12268
- for (len = xd.length;!xd[len - 1]; --len)
12269
- ;
12270
- for (i = 1, str = "1.";i < len; i++)
12271
- str += NUMERALS.charAt(xd[i]);
12272
- } else {
12273
- str = str.charAt(0) + "." + str.slice(1);
12274
- }
12275
- }
12276
- str = str + (e < 0 ? "p" : "p+") + e;
12277
- } else if (e < 0) {
12278
- for (;++e; )
12279
- str = "0" + str;
12280
- str = "0." + str;
12281
- } else {
12282
- if (++e > len)
12283
- for (e -= len;e--; )
12284
- str += "0";
12285
- else if (e < len)
12286
- str = str.slice(0, e) + "." + str.slice(e);
12287
- }
12288
- }
12289
- str = (baseOut == 16 ? "0x" : baseOut == 2 ? "0b" : baseOut == 8 ? "0o" : "") + str;
12290
- }
12291
- return x.s < 0 ? "-" + str : str;
12292
- }
12293
- function truncate(arr, len) {
12294
- if (arr.length > len) {
12295
- arr.length = len;
12296
- return true;
12297
- }
12298
- }
12299
- function abs(x) {
12300
- return new this(x).abs();
12301
- }
12302
- function acos(x) {
12303
- return new this(x).acos();
12304
- }
12305
- function acosh(x) {
12306
- return new this(x).acosh();
12307
- }
12308
- function add(x, y) {
12309
- return new this(x).plus(y);
12310
- }
12311
- function asin(x) {
12312
- return new this(x).asin();
12313
- }
12314
- function asinh(x) {
12315
- return new this(x).asinh();
12316
- }
12317
- function atan(x) {
12318
- return new this(x).atan();
12319
- }
12320
- function atanh(x) {
12321
- return new this(x).atanh();
12322
- }
12323
- function atan2(y, x) {
12324
- y = new this(y);
12325
- x = new this(x);
12326
- var r, pr = this.precision, rm = this.rounding, wpr = pr + 4;
12327
- if (!y.s || !x.s) {
12328
- r = new this(NaN);
12329
- } else if (!y.d && !x.d) {
12330
- r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);
12331
- r.s = y.s;
12332
- } else if (!x.d || y.isZero()) {
12333
- r = x.s < 0 ? getPi(this, pr, rm) : new this(0);
12334
- r.s = y.s;
12335
- } else if (!y.d || x.isZero()) {
12336
- r = getPi(this, wpr, 1).times(0.5);
12337
- r.s = y.s;
12338
- } else if (x.s < 0) {
12339
- this.precision = wpr;
12340
- this.rounding = 1;
12341
- r = this.atan(divide(y, x, wpr, 1));
12342
- x = getPi(this, wpr, 1);
12343
- this.precision = pr;
12344
- this.rounding = rm;
12345
- r = y.s < 0 ? r.minus(x) : r.plus(x);
12346
- } else {
12347
- r = this.atan(divide(y, x, wpr, 1));
12348
- }
12349
- return r;
12350
- }
12351
- function cbrt(x) {
12352
- return new this(x).cbrt();
12353
- }
12354
- function ceil(x) {
12355
- return finalise(x = new this(x), x.e + 1, 2);
12356
- }
12357
- function clamp(x, min, max) {
12358
- return new this(x).clamp(min, max);
12359
- }
12360
- function config(obj) {
12361
- if (!obj || typeof obj !== "object")
12362
- throw Error(decimalError + "Object expected");
12363
- var i, p, v, useDefaults = obj.defaults === true, ps = [
12364
- "precision",
12365
- 1,
12366
- MAX_DIGITS,
12367
- "rounding",
12368
- 0,
12369
- 8,
12370
- "toExpNeg",
12371
- -EXP_LIMIT,
12372
- 0,
12373
- "toExpPos",
12374
- 0,
12375
- EXP_LIMIT,
12376
- "maxE",
12377
- 0,
12378
- EXP_LIMIT,
12379
- "minE",
12380
- -EXP_LIMIT,
12381
- 0,
12382
- "modulo",
12383
- 0,
12384
- 9
12385
- ];
12386
- for (i = 0;i < ps.length; i += 3) {
12387
- if (p = ps[i], useDefaults)
12388
- this[p] = DEFAULTS[p];
12389
- if ((v = obj[p]) !== undefined) {
12390
- if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2])
12391
- this[p] = v;
12392
- else
12393
- throw Error(invalidArgument + p + ": " + v);
12394
- }
12395
- }
12396
- if (p = "crypto", useDefaults)
12397
- this[p] = DEFAULTS[p];
12398
- if ((v = obj[p]) !== undefined) {
12399
- if (v === true || v === false || v === 0 || v === 1) {
12400
- if (v) {
12401
- if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
12402
- this[p] = true;
12403
- } else {
12404
- throw Error(cryptoUnavailable);
12405
- }
12406
- } else {
12407
- this[p] = false;
12408
- }
12409
- } else {
12410
- throw Error(invalidArgument + p + ": " + v);
12411
- }
12412
- }
12413
- return this;
12414
- }
12415
- function cos(x) {
12416
- return new this(x).cos();
12417
- }
12418
- function cosh(x) {
12419
- return new this(x).cosh();
12420
- }
12421
- function clone(obj) {
12422
- var i, p, ps;
12423
- function Decimal(v) {
12424
- var e, i2, t, x = this;
12425
- if (!(x instanceof Decimal))
12426
- return new Decimal(v);
12427
- x.constructor = Decimal;
12428
- if (isDecimalInstance(v)) {
12429
- x.s = v.s;
12430
- if (external2) {
12431
- if (!v.d || v.e > Decimal.maxE) {
12432
- x.e = NaN;
12433
- x.d = null;
12434
- } else if (v.e < Decimal.minE) {
12435
- x.e = 0;
12436
- x.d = [0];
12437
- } else {
12438
- x.e = v.e;
12439
- x.d = v.d.slice();
12440
- }
12441
- } else {
12442
- x.e = v.e;
12443
- x.d = v.d ? v.d.slice() : v.d;
12444
- }
12445
- return;
12446
- }
12447
- t = typeof v;
12448
- if (t === "number") {
12449
- if (v === 0) {
12450
- x.s = 1 / v < 0 ? -1 : 1;
12451
- x.e = 0;
12452
- x.d = [0];
12453
- return;
12454
- }
12455
- if (v < 0) {
12456
- v = -v;
12457
- x.s = -1;
12458
- } else {
12459
- x.s = 1;
12460
- }
12461
- if (v === ~~v && v < 1e7) {
12462
- for (e = 0, i2 = v;i2 >= 10; i2 /= 10)
12463
- e++;
12464
- if (external2) {
12465
- if (e > Decimal.maxE) {
12466
- x.e = NaN;
12467
- x.d = null;
12468
- } else if (e < Decimal.minE) {
12469
- x.e = 0;
12470
- x.d = [0];
12471
- } else {
12472
- x.e = e;
12473
- x.d = [v];
12474
- }
12475
- } else {
12476
- x.e = e;
12477
- x.d = [v];
12478
- }
12479
- return;
12480
- }
12481
- if (v * 0 !== 0) {
12482
- if (!v)
12483
- x.s = NaN;
12484
- x.e = NaN;
12485
- x.d = null;
12486
- return;
12487
- }
12488
- return parseDecimal(x, v.toString());
12489
- }
12490
- if (t === "string") {
12491
- if ((i2 = v.charCodeAt(0)) === 45) {
12492
- v = v.slice(1);
12493
- x.s = -1;
12494
- } else {
12495
- if (i2 === 43)
12496
- v = v.slice(1);
12497
- x.s = 1;
12498
- }
12499
- return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);
12500
- }
12501
- if (t === "bigint") {
12502
- if (v < 0) {
12503
- v = -v;
12504
- x.s = -1;
12505
- } else {
12506
- x.s = 1;
12507
- }
12508
- return parseDecimal(x, v.toString());
12509
- }
12510
- throw Error(invalidArgument + v);
12511
- }
12512
- Decimal.prototype = P;
12513
- Decimal.ROUND_UP = 0;
12514
- Decimal.ROUND_DOWN = 1;
12515
- Decimal.ROUND_CEIL = 2;
12516
- Decimal.ROUND_FLOOR = 3;
12517
- Decimal.ROUND_HALF_UP = 4;
12518
- Decimal.ROUND_HALF_DOWN = 5;
12519
- Decimal.ROUND_HALF_EVEN = 6;
12520
- Decimal.ROUND_HALF_CEIL = 7;
12521
- Decimal.ROUND_HALF_FLOOR = 8;
12522
- Decimal.EUCLID = 9;
12523
- Decimal.config = Decimal.set = config;
12524
- Decimal.clone = clone;
12525
- Decimal.isDecimal = isDecimalInstance;
12526
- Decimal.abs = abs;
12527
- Decimal.acos = acos;
12528
- Decimal.acosh = acosh;
12529
- Decimal.add = add;
12530
- Decimal.asin = asin;
12531
- Decimal.asinh = asinh;
12532
- Decimal.atan = atan;
12533
- Decimal.atanh = atanh;
12534
- Decimal.atan2 = atan2;
12535
- Decimal.cbrt = cbrt;
12536
- Decimal.ceil = ceil;
12537
- Decimal.clamp = clamp;
12538
- Decimal.cos = cos;
12539
- Decimal.cosh = cosh;
12540
- Decimal.div = div;
12541
- Decimal.exp = exp;
12542
- Decimal.floor = floor;
12543
- Decimal.hypot = hypot;
12544
- Decimal.ln = ln;
12545
- Decimal.log = log;
12546
- Decimal.log10 = log10;
12547
- Decimal.log2 = log2;
12548
- Decimal.max = max;
12549
- Decimal.min = min;
12550
- Decimal.mod = mod;
12551
- Decimal.mul = mul;
12552
- Decimal.pow = pow;
12553
- Decimal.random = random;
12554
- Decimal.round = round;
12555
- Decimal.sign = sign;
12556
- Decimal.sin = sin;
12557
- Decimal.sinh = sinh;
12558
- Decimal.sqrt = sqrt;
12559
- Decimal.sub = sub;
12560
- Decimal.sum = sum;
12561
- Decimal.tan = tan;
12562
- Decimal.tanh = tanh;
12563
- Decimal.trunc = trunc;
12564
- if (obj === undefined)
12565
- obj = {};
12566
- if (obj) {
12567
- if (obj.defaults !== true) {
12568
- ps = ["precision", "rounding", "toExpNeg", "toExpPos", "maxE", "minE", "modulo", "crypto"];
12569
- for (i = 0;i < ps.length; )
12570
- if (!obj.hasOwnProperty(p = ps[i++]))
12571
- obj[p] = this[p];
12572
- }
12573
- }
12574
- Decimal.config(obj);
12575
- return Decimal;
12576
- }
12577
- function div(x, y) {
12578
- return new this(x).div(y);
12579
- }
12580
- function exp(x) {
12581
- return new this(x).exp();
12582
- }
12583
- function floor(x) {
12584
- return finalise(x = new this(x), x.e + 1, 3);
12585
- }
12586
- function hypot() {
12587
- var i, n, t = new this(0);
12588
- external2 = false;
12589
- for (i = 0;i < arguments.length; ) {
12590
- n = new this(arguments[i++]);
12591
- if (!n.d) {
12592
- if (n.s) {
12593
- external2 = true;
12594
- return new this(1 / 0);
12595
- }
12596
- t = n;
12597
- } else if (t.d) {
12598
- t = t.plus(n.times(n));
12599
- }
12600
- }
12601
- external2 = true;
12602
- return t.sqrt();
12603
- }
12604
- function isDecimalInstance(obj) {
12605
- return obj instanceof Decimal || obj && obj.toStringTag === tag || false;
12606
- }
12607
- function ln(x) {
12608
- return new this(x).ln();
12609
- }
12610
- function log(x, y) {
12611
- return new this(x).log(y);
12612
- }
12613
- function log2(x) {
12614
- return new this(x).log(2);
12615
- }
12616
- function log10(x) {
12617
- return new this(x).log(10);
12618
- }
12619
- function max() {
12620
- return maxOrMin(this, arguments, -1);
12621
- }
12622
- function min() {
12623
- return maxOrMin(this, arguments, 1);
12624
- }
12625
- function mod(x, y) {
12626
- return new this(x).mod(y);
12627
- }
12628
- function mul(x, y) {
12629
- return new this(x).mul(y);
12630
- }
12631
- function pow(x, y) {
12632
- return new this(x).pow(y);
12633
- }
12634
- function random(sd) {
12635
- var d, e, k, n, i = 0, r = new this(1), rd = [];
12636
- if (sd === undefined)
12637
- sd = this.precision;
12638
- else
12639
- checkInt32(sd, 1, MAX_DIGITS);
12640
- k = Math.ceil(sd / LOG_BASE);
12641
- if (!this.crypto) {
12642
- for (;i < k; )
12643
- rd[i++] = Math.random() * 1e7 | 0;
12644
- } else if (crypto.getRandomValues) {
12645
- d = crypto.getRandomValues(new Uint32Array(k));
12646
- for (;i < k; ) {
12647
- n = d[i];
12648
- if (n >= 4290000000) {
12649
- d[i] = crypto.getRandomValues(new Uint32Array(1))[0];
12650
- } else {
12651
- rd[i++] = n % 1e7;
12652
- }
12653
- }
12654
- } else if (crypto.randomBytes) {
12655
- d = crypto.randomBytes(k *= 4);
12656
- for (;i < k; ) {
12657
- n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 127) << 24);
12658
- if (n >= 2140000000) {
12659
- crypto.randomBytes(4).copy(d, i);
12660
- } else {
12661
- rd.push(n % 1e7);
12662
- i += 4;
12663
- }
12664
- }
12665
- i = k / 4;
12666
- } else {
12667
- throw Error(cryptoUnavailable);
12668
- }
12669
- k = rd[--i];
12670
- sd %= LOG_BASE;
12671
- if (k && sd) {
12672
- n = mathpow(10, LOG_BASE - sd);
12673
- rd[i] = (k / n | 0) * n;
12674
- }
12675
- for (;rd[i] === 0; i--)
12676
- rd.pop();
12677
- if (i < 0) {
12678
- e = 0;
12679
- rd = [0];
12680
- } else {
12681
- e = -1;
12682
- for (;rd[0] === 0; e -= LOG_BASE)
12683
- rd.shift();
12684
- for (k = 1, n = rd[0];n >= 10; n /= 10)
12685
- k++;
12686
- if (k < LOG_BASE)
12687
- e -= LOG_BASE - k;
12688
- }
12689
- r.e = e;
12690
- r.d = rd;
12691
- return r;
12692
- }
12693
- function round(x) {
12694
- return finalise(x = new this(x), x.e + 1, this.rounding);
12695
- }
12696
- function sign(x) {
12697
- x = new this(x);
12698
- return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN;
12699
- }
12700
- function sin(x) {
12701
- return new this(x).sin();
12702
- }
12703
- function sinh(x) {
12704
- return new this(x).sinh();
12705
- }
12706
- function sqrt(x) {
12707
- return new this(x).sqrt();
12708
- }
12709
- function sub(x, y) {
12710
- return new this(x).sub(y);
12711
- }
12712
- function sum() {
12713
- var i = 0, args = arguments, x = new this(args[i]);
12714
- external2 = false;
12715
- for (;x.s && ++i < args.length; )
12716
- x = x.plus(args[i]);
12717
- external2 = true;
12718
- return finalise(x, this.precision, this.rounding);
12719
- }
12720
- function tan(x) {
12721
- return new this(x).tan();
12722
- }
12723
- function tanh(x) {
12724
- return new this(x).tanh();
12725
- }
12726
- function trunc(x) {
12727
- return finalise(x = new this(x), x.e + 1, 1);
12728
- }
12729
- P[Symbol.for("nodejs.util.inspect.custom")] = P.toString;
12730
- P[Symbol.toStringTag] = "Decimal";
12731
- var Decimal = P.constructor = clone(DEFAULTS);
12732
- LN10 = new Decimal(LN10);
12733
- PI = new Decimal(PI);
12734
- var decimal_default = Decimal;
12735
-
12736
- // src/common/base/other.ts
12737
- var delay = (time = 1000) => {
12738
- return new Promise((resolve) => setTimeout(resolve, time));
12739
- };
12740
- var calcJsText = (expr, context) => {
12741
- const keys = Object.keys(context);
12742
- const values = keys.map((key2) => context[key2]);
12743
- return Function(...keys, `return (${expr})`)(...values);
12744
- };
12745
- var optionsToEnum = (options, text, key2) => {
12746
- return options.reduce((acc, cur) => {
12747
- acc[cur[key2]] = {
12748
- text: cur[text]
12749
- };
12750
- return acc;
12751
- }, {});
12752
- };
12753
- var performDecimalOperation = (num1, num2, operator) => {
12754
- if (num1 === undefined || num2 === undefined || !operator) {
12755
- return;
12756
- }
12757
- const decimalNum1 = new decimal_default(Number(num1));
12758
- const decimalNum2 = new decimal_default(Number(num2));
12759
- switch (operator) {
12760
- case "+":
12761
- return decimalNum1.plus(decimalNum2).toNumber();
12762
- case "-":
12763
- return decimalNum1.minus(decimalNum2).toNumber();
12764
- case "*":
12765
- return decimalNum1.times(decimalNum2).toNumber();
12766
- case "/":
12767
- if (num2 !== 0) {
12768
- return decimalNum1.dividedBy(decimalNum2).toNumber();
12769
- } else {
12770
- console.error("Division by zero is not allowed.");
12771
- return NaN;
12772
- }
12773
- default:
12774
- console.error("Invalid operator:", operator);
12775
- return NaN;
12776
- }
12777
- };
12778
- var printConsoleLog = (type, path2, params, response) => {
12779
- const styles = {
12780
- header: "color: #fff; background: #35495e; padding: 2px 8px; border-radius: 3px 0 0 3px;",
12781
- value: "color: #35495e; background: #f0f4f8; padding: 2px 6px; border-radius: 0 3px 3px 0;",
12782
- separator: "color: #409EFF; margin: 0 4px;"
12783
- };
12784
- console.groupCollapsed(`666 %c${type}%c${path2}`, styles.header, styles.value);
12785
- if (params) {
12786
- console.table(params);
12787
- }
12788
- if (response) {
12789
- console.table(response);
12790
- }
12791
- console.groupEnd();
12792
- };
12793
-
12794
- // src/common/base/array.ts
12795
- var shuffleArray = (array) => {
12796
- const shuffledArray = [...array];
12797
- for (let i = shuffledArray.length - 1;i > 0; i--) {
12798
- const j = Math.floor(Math.random() * (i + 1));
12799
- [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];
12800
- }
12801
- return shuffledArray;
12802
- };
12803
- var removeSimilarDuplicates = (arr, threshold, isLog) => {
12804
- const uniqueArray = [];
12805
- const similarPairs = [];
12806
- for (const str of arr) {
12807
- const isSimilar = uniqueArray.some((uniqueStr) => {
12808
- const distance = levenshteinDistance(str, uniqueStr);
12809
- if (distance <= threshold) {
12810
- similarPairs.push([str, uniqueStr]);
12811
- return true;
12812
- }
12813
- return false;
12814
- });
12815
- if (!isSimilar) {
12816
- uniqueArray.push(str);
12817
- }
12818
- }
12819
- if (isLog) {
12820
- if (similarPairs.length > 0) {
12821
- similarPairs.forEach((pair) => {
12822
- console.log(pair[0]);
12823
- console.log(pair[1]);
12824
- console.log();
12825
- });
12826
- } else {
12827
- console.log("没有找到类似的字符串");
12828
- }
12829
- }
12830
- return uniqueArray;
12831
- };
12832
- var getTotal = (arr, key2) => {
12833
- if (!Array.isArray(arr) || !key2) {
12834
- return 0;
12835
- }
12836
- return arr.reduce((total, item) => {
12837
- const itemValue = Number(item[key2]);
12838
- if (!isNaN(itemValue)) {
12839
- return performDecimalOperation(total, itemValue, "+");
12840
- }
12841
- return total;
12842
- }, 0);
12843
- };
12844
-
12845
- // src/common/base/number.ts
12846
- var getRandomNum = (min2, max2) => {
12847
- return Math.floor(Math.random() * (max2 - min2 + 1) + min2);
12848
- };
12849
- var limitDecimals = (v, num = 2, isForce) => {
12850
- let value = parseFloat(v);
12851
- if (isNaN(value)) {
12852
- if (isForce) {
12853
- value = 0;
12854
- } else {
12855
- return "";
12856
- }
12857
- }
12858
- return value.toFixed(num).toString();
12859
- };
12860
- var getFileSize = (size) => {
12861
- let d = "G";
12862
- let s = size / 1024 / 1024 / 1024;
12863
- if (s < 1) {
12864
- d = "M";
12865
- s *= 1024;
12866
- }
12867
- return `${(s.toFixed(1) / 1).toString()}${d}`;
12868
- };
12869
- var isValidNumber = (value) => {
12870
- if (typeof value !== "number") {
12871
- return false;
12872
- }
12873
- if (isNaN(value)) {
12874
- return false;
12875
- }
12876
- if (value === Infinity || value === -Infinity) {
12877
- return false;
12878
- }
12879
- return true;
12880
- };
12881
- var numberWithCommas = (x) => {
12882
- if (x === undefined || x === null) {
12883
- return "";
12884
- }
12885
- return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
12886
- };
12887
-
12888
- // src/common/base/object.ts
12889
- var findItem = (list, attr, value) => {
12890
- return list.find((item) => value === undefined ? item[attr] : item[attr] === value);
12891
- };
12892
- var filterParams = (params, deep = false) => {
12893
- const clean = (value) => {
12894
- if (value === undefined || value === null) {
12895
- return;
12896
- }
12897
- if (!deep) {
12898
- return value;
12899
- }
12900
- if (Array.isArray(value)) {
12901
- return value.map((v) => clean(v)).filter((v) => v !== undefined);
12902
- }
12903
- if (typeof value === "object") {
12904
- return Object.entries(value).reduce((acc, [k, v]) => {
12905
- const cleaned = clean(v);
12906
- if (cleaned !== undefined)
12907
- acc[k] = cleaned;
12908
- return acc;
12909
- }, {});
12910
- }
12911
- return value;
12912
- };
12913
- return clean(params);
12914
- };
12915
- var watch = {
12916
- observe(obj, key2, watchFun) {
12917
- const val = obj[key2];
12918
- Object.defineProperty(obj, key2, {
12919
- configurable: true,
12920
- enumerable: true,
12921
- set(value) {
12922
- obj[key2] = value;
12923
- watchFun(value, val);
12924
- },
12925
- get() {
12926
- return val;
12927
- }
12928
- });
12929
- },
12930
- setWatcher(data = {}, watch2 = {}) {
12931
- Object.keys(watch2).forEach((v) => {
12932
- this.observe(data, v, watch2[v]);
12933
- });
12934
- }
12935
- };
12936
-
12937
- // src/common/base/promise.ts
12938
- var executePromise = async (promise) => {
12939
- const start = Date.now();
12940
- const result = await promise;
12941
- const time = Date.now() - start;
12942
- return {
12943
- result,
12944
- time
12945
- };
12946
- };
12947
- var retryPromise = async (promiseFn, retryInterval = 1000, retryCount = 3) => {
12948
- try {
12949
- return await promiseFn();
12950
- } catch (error) {
12951
- if (retryCount <= 0) {
12952
- throw error;
12953
- }
12954
- await new Promise((resolve) => setTimeout(resolve, retryInterval));
12955
- return retryPromise(promiseFn, retryCount - 1, retryInterval);
12956
- }
12957
- };
12958
- // src/common/enum.ts
12959
- class EnumItem {
12960
- label;
12961
- value;
12962
- extra;
12963
- constructor(config2) {
12964
- this.value = config2.value;
12965
- this.label = config2.label;
12966
- this.extra = config2.extra;
12967
- }
12968
- }
12969
- var Enum = {
12970
- create: (members) => {
12971
- const usedValues = new Set;
12972
- const enumObj = {};
12973
- const map = new Map;
12974
- const options = [];
12975
- const extras = new Map;
12976
- const labels = new Map;
12977
- const enums = {};
12978
- for (const key2 in members) {
12979
- const member = members[key2];
12980
- if (!member)
12981
- continue;
12982
- if (usedValues.has(member.value)) {
12983
- throw new Error(`Duplicate enum value detected: ${member.value}`);
12984
- }
12985
- usedValues.add(member.value);
12986
- const item = new EnumItem(member);
12987
- enumObj[key2] = item;
12988
- map.set(item.value, item);
12989
- labels.set(item.value, item.label);
12990
- options.push(item);
12991
- enums[item.value] = { text: item.label, status: item.extra?.status };
12992
- if (member.extra !== undefined) {
12993
- extras.set(item.value, { ...member.extra });
12994
- }
12995
- }
12996
- enumObj.map = map;
12997
- enumObj.options = options;
12998
- enumObj.extras = extras;
12999
- enumObj.source = members;
13000
- enumObj.labels = labels;
13001
- enumObj.enums = enums;
13002
- return enumObj;
13003
- }
13004
- };
13005
- // src/common/image.ts
13006
- var import_axios12 = __toESM(require("axios"));
13007
- async function imageToBase64(url2) {
13008
- try {
13009
- const response = await import_axios12.default.get(url2, {
13010
- responseType: "arraybuffer"
13011
- });
13012
- const base64String = Buffer.from(response.data).toString("base64");
13013
- return `data:image/*;base64,${base64String}`;
13014
- } catch (error) {
13015
- console.error("Failed to fetch the image:", error);
13016
- throw error;
13017
- }
13018
- }
13019
- // src/common/dayjs.ts
13020
- var import_dayjs = __toESM(require("dayjs"));
13021
- var import_isBetween = __toESM(require("dayjs/plugin/isBetween"));
13022
- var import_weekday = __toESM(require("dayjs/plugin/weekday"));
13023
- var import_localeData = __toESM(require("dayjs/plugin/localeData"));
13024
- var import_isoWeek = __toESM(require("dayjs/plugin/isoWeek"));
13025
- var import_updateLocale = __toESM(require("dayjs/plugin/updateLocale"));
13026
- var import_timezone = __toESM(require("dayjs/plugin/timezone"));
13027
- var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
13028
- var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
13029
- var import_utc = __toESM(require("dayjs/plugin/utc"));
13030
- var import_zh_cn = require("dayjs/locale/zh-cn");
13031
- var import_dayjs2 = require("dayjs");
13032
- import_dayjs.default.extend(import_utc.default);
13033
- import_dayjs.default.extend(import_isBetween.default);
13034
- import_dayjs.default.extend(import_weekday.default);
13035
- import_dayjs.default.extend(import_localeData.default);
13036
- import_dayjs.default.extend(import_isoWeek.default);
13037
- import_dayjs.default.extend(import_updateLocale.default);
13038
- import_dayjs.default.extend(import_timezone.default);
13039
- import_dayjs.default.extend(import_isSameOrAfter.default);
13040
- import_dayjs.default.extend(import_isSameOrBefore.default);
13041
- var Timezone;
13042
- ((Timezone2) => {
13043
- Timezone2["AsiaShanghai"] = "Asia/Shanghai";
13044
- Timezone2["AsiaTokyo"] = "Asia/Tokyo";
13045
- Timezone2["AmericaNewYork"] = "America/New_York";
13046
- Timezone2["EuropeLondon"] = "Europe/London";
13047
- Timezone2["EuropeBerlin"] = "Europe/Berlin";
13048
- })(Timezone ||= {});
13049
- var initChinaDayjs = () => {
13050
- import_dayjs.default.locale("zh-cn");
13051
- import_dayjs.default.tz.setDefault("Asia/Shanghai" /* AsiaShanghai */);
13052
- import_dayjs.default.updateLocale("zh-cn", {
13053
- weekStart: 1
13054
- });
13055
- return import_dayjs.default;
13056
- };
13057
- var chinaDayjs = initChinaDayjs();
13058
- var dayjs_default = import_dayjs.default;
13059
- // src/node/mail.ts
13060
- var import_nodemailer = __toESM(require("nodemailer"));
13061
- var authMap = {
13062
- 163: {
13063
- user: "15835196981@163.com",
13064
- pass: "KPTVCFBMRXJVTCGW"
13065
- },
13066
- gmail: {
13067
- user: "wangzhenzhen2023@gmail.com",
13068
- pass: "lkxtorbpdyrjjxjq"
13069
- }
13070
- };
13071
- var transporter = import_nodemailer.default.createTransport({
13072
- host: "smtp.gmail.com",
13073
- port: 465,
13074
- secure: true,
13075
- auth: authMap.gmail
13076
- });
13077
- var sendMail = (config2) => {
13078
- return transporter.sendMail({
13079
- from: authMap.gmail.user,
13080
- ...config2
13081
- });
13082
- };
13083
- // src/node/file.ts
13084
- var import_fs_extra = __toESM(require("fs-extra"));
13085
- var import_axios13 = __toESM(require("axios"));
13086
- var import_url = __toESM(require("url"));
13087
- var path2 = __toESM(require("path"));
13088
- var replaceContentInFile = async (filePath, targetContent, replacement) => {
9952
+ // src/node/file.ts
9953
+ var import_fs_extra = __toESM(require("fs-extra"));
9954
+ var import_axios7 = __toESM(require("axios"));
9955
+ var import_url = __toESM(require("url"));
9956
+ var path2 = __toESM(require("path"));
9957
+ var replaceContentInFile = async (filePath, targetContent, replacement) => {
13089
9958
  try {
13090
9959
  const data = await import_fs_extra.default.readFile(filePath, "utf8");
13091
9960
  if (replacement && data.includes(replacement)) {
@@ -13114,7 +9983,7 @@ var downloadFile = async (httpUrl, outputPath) => {
13114
9983
  }
13115
9984
  outputPath = ".tmp/" + decodeURIComponent(fileName);
13116
9985
  }
13117
- const response = await import_axios13.default({
9986
+ const response = await import_axios7.default({
13118
9987
  url: httpUrl,
13119
9988
  method: "get",
13120
9989
  responseType: "stream"
@@ -13133,7 +10002,7 @@ var downloadFile = async (httpUrl, outputPath) => {
13133
10002
  };
13134
10003
  // src/node/oss.ts
13135
10004
  var import_ali_oss = __toESM(require("ali-oss"));
13136
- var import_axios14 = __toESM(require("axios"));
10005
+ var import_axios8 = __toESM(require("axios"));
13137
10006
  var import_fs_extra2 = __toESM(require("fs-extra"));
13138
10007
  var path3 = __toESM(require("path"));
13139
10008
  var oss = new import_ali_oss.default({
@@ -13148,7 +10017,7 @@ async function uploadFile(file, filename) {
13148
10017
  if (typeof file === "string") {
13149
10018
  if (/^https?:\/\//.test(file)) {
13150
10019
  try {
13151
- const response = await import_axios14.default.get(file, { responseType: "arraybuffer" });
10020
+ const response = await import_axios8.default.get(file, { responseType: "arraybuffer" });
13152
10021
  buffer = Buffer.from(response.data);
13153
10022
  } catch (error) {
13154
10023
  throw new Error(`无法从 URL 下载文件: ${error}`);