a-calc 3.0.0-beta.20260124.4 → 3.0.0-beta.20260129.1
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/a-calc.versions.js +3 -3
- package/browser/index.js +2 -2
- package/calc.d.ts +293 -38
- package/cjs/index.js +2 -2
- package/es/index.js +2 -2
- package/mcp-server/src/index.js +3 -3
- package/package.json +128 -128
package/calc.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ type CalcRuntimeOptions<Fmt extends string, Err> =
|
|
|
78
78
|
_debug?: boolean;
|
|
79
79
|
_on_debug?: (info: any) => void;
|
|
80
80
|
_angle_unit?: 'deg' | 'rad';
|
|
81
|
-
|
|
81
|
+
_compact_symbols?: string[];
|
|
82
82
|
_compact_step?: number | number[];
|
|
83
83
|
_thousands?: Record<string, ThousandsPreset>;
|
|
84
84
|
/** 多路取值时视为空值的值数组(仅运行时选项) */
|
|
@@ -116,29 +116,21 @@ export type CalcSum = <const Expr extends string | number, const Fmt extends str
|
|
|
116
116
|
);
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
|
-
* fmt
|
|
119
|
+
* fmt 格式化选项(运行时选项)
|
|
120
|
+
* 注意:单位转换相关配置(_unit_convert_out 等)只能通过 set_config 全局设置
|
|
120
121
|
*/
|
|
121
122
|
export interface FmtOptions {
|
|
122
123
|
_error?: any;
|
|
123
124
|
_fmt?: string;
|
|
124
|
-
/**
|
|
125
|
-
|
|
126
|
-
/**
|
|
125
|
+
/** 紧凑格式符号数组(临时覆盖) */
|
|
126
|
+
_compact_symbols?: string[];
|
|
127
|
+
/** 紧凑格式阶梯值(临时覆盖) */
|
|
127
128
|
_compact_step?: number | number[];
|
|
128
|
-
/**
|
|
129
|
-
_compact?: Record<string, CompactPreset>;
|
|
130
|
-
_unit_convert_out?: Record<string, any>;
|
|
131
|
-
_unit_convert_in?: Record<string, any>;
|
|
132
|
-
_unit_default_out?: string | string[];
|
|
133
|
-
_unit_default_in?: string | string[];
|
|
134
|
-
_unit_default_position?: 'before' | 'after' | 'middle';
|
|
135
|
-
_unit_position_map?: Record<string, 'before' | 'after' | 'middle'>;
|
|
129
|
+
/** 千分位预设配置 */
|
|
136
130
|
_thousands?: Record<string, ThousandsPreset>;
|
|
137
|
-
|
|
138
|
-
_unit_compact_map?: Record<string, string>;
|
|
139
|
-
/** 多路取值时视为空值的值数组(仅运行时选项) */
|
|
131
|
+
/** 多路取值时视为空值的值数组 */
|
|
140
132
|
_empty_values?: any[];
|
|
141
|
-
/**
|
|
133
|
+
/** 多路取值时自定义空值判断函数 */
|
|
142
134
|
_empty_check?: (value: any, path?: string) => boolean;
|
|
143
135
|
[key: string]: any;
|
|
144
136
|
}
|
|
@@ -166,17 +158,6 @@ export interface CalcWrap {
|
|
|
166
158
|
(options: Options): FuncReturn<Options>;
|
|
167
159
|
}
|
|
168
160
|
|
|
169
|
-
declare const calc_util: {
|
|
170
|
-
/**
|
|
171
|
-
* 检查当前库是否有更新版本
|
|
172
|
-
*/
|
|
173
|
-
check_update(): void;
|
|
174
|
-
/**
|
|
175
|
-
* 打印当前库的版本
|
|
176
|
-
*/
|
|
177
|
-
print_version(): void;
|
|
178
|
-
};
|
|
179
|
-
|
|
180
161
|
/**
|
|
181
162
|
* 传入字符串算术式或数字返回计算的结果(标准语法)
|
|
182
163
|
* @param expr 一个字符串算术式或一个数字
|
|
@@ -268,7 +249,25 @@ export const fmt: Fmt;
|
|
|
268
249
|
* ```
|
|
269
250
|
*/
|
|
270
251
|
export const calc_wrap: CalcWrap;
|
|
271
|
-
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* 当前库版本号
|
|
255
|
+
*/
|
|
256
|
+
export const version: string;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* 工具函数集合
|
|
260
|
+
*/
|
|
261
|
+
export const calc_util: {
|
|
262
|
+
/**
|
|
263
|
+
* 检查当前库是否有更新版本
|
|
264
|
+
*/
|
|
265
|
+
check_update(): void;
|
|
266
|
+
/**
|
|
267
|
+
* 打印当前库的版本
|
|
268
|
+
*/
|
|
269
|
+
print_version(): void;
|
|
270
|
+
};
|
|
272
271
|
|
|
273
272
|
export const parse_thousands: (str: string) => string;
|
|
274
273
|
|
|
@@ -415,6 +414,85 @@ export const ln: UnaryOp;
|
|
|
415
414
|
*/
|
|
416
415
|
export const exp: UnaryOp;
|
|
417
416
|
|
|
417
|
+
// ==================== 链式计算 API ====================
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* 链式计算返回值类型
|
|
421
|
+
* 可以直接调用获取结果,也可以继续链式调用
|
|
422
|
+
*/
|
|
423
|
+
export interface ChainValue {
|
|
424
|
+
/** 获取结果,可选传入格式化字符串 */
|
|
425
|
+
(format?: string): string;
|
|
426
|
+
/** 链式加法 */
|
|
427
|
+
add(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
428
|
+
/** 链式减法 */
|
|
429
|
+
sub(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
430
|
+
/** 链式乘法 */
|
|
431
|
+
mul(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
432
|
+
/** 链式除法 */
|
|
433
|
+
div(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
434
|
+
/** 链式取模 */
|
|
435
|
+
mod(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
436
|
+
/** 链式幂运算 */
|
|
437
|
+
pow(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
438
|
+
/** 链式整除 */
|
|
439
|
+
idiv(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* 链式加法起始
|
|
444
|
+
* @example
|
|
445
|
+
* cadd(1, 2, 3)() // => "6"
|
|
446
|
+
* cadd(1, 2).mul(3)() // => "9"
|
|
447
|
+
* cadd(100).sub(50)("=2") // => "50.00"
|
|
448
|
+
*/
|
|
449
|
+
export function cadd(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* 链式减法起始
|
|
453
|
+
* @example
|
|
454
|
+
* csub(10, 3)() // => "7"
|
|
455
|
+
* csub(100, 50).div(2)() // => "25"
|
|
456
|
+
*/
|
|
457
|
+
export function csub(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue;
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* 链式乘法起始
|
|
461
|
+
* @example
|
|
462
|
+
* cmul(2, 3, 4)() // => "24"
|
|
463
|
+
* cmul(10).add(5)() // => "15"
|
|
464
|
+
*/
|
|
465
|
+
export function cmul(...nums: (NumOrStr | ChainValue)[]): ChainValue;
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* 链式除法起始
|
|
469
|
+
* @example
|
|
470
|
+
* cdiv(100, 2)() // => "50"
|
|
471
|
+
* cdiv(100, 2, 5)() // => "10"
|
|
472
|
+
*/
|
|
473
|
+
export function cdiv(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* 链式取模起始
|
|
477
|
+
* @example
|
|
478
|
+
* cmod(10, 3)() // => "1"
|
|
479
|
+
*/
|
|
480
|
+
export function cmod(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue;
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* 链式幂运算起始
|
|
484
|
+
* @example
|
|
485
|
+
* cpow(2, 3)() // => "8"
|
|
486
|
+
*/
|
|
487
|
+
export function cpow(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue;
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* 链式整除起始
|
|
491
|
+
* @example
|
|
492
|
+
* cidiv(10, 3)() // => "3"
|
|
493
|
+
*/
|
|
494
|
+
export function cidiv(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue;
|
|
495
|
+
|
|
418
496
|
// ==================== 计算模式 ====================
|
|
419
497
|
|
|
420
498
|
/**
|
|
@@ -441,7 +519,7 @@ export type UnitConvertRule =
|
|
|
441
519
|
fn?: (value: number, input_unit: string, output_unit: string) => number;
|
|
442
520
|
_position?: 'before' | 'after' | 'middle';
|
|
443
521
|
_thousands?: string;
|
|
444
|
-
|
|
522
|
+
_compact?: string;
|
|
445
523
|
};
|
|
446
524
|
|
|
447
525
|
/**
|
|
@@ -450,7 +528,7 @@ export type UnitConvertRule =
|
|
|
450
528
|
export type UnitConvertOut = Record<string, Record<string, UnitConvertRule> & {
|
|
451
529
|
_position?: 'before' | 'after' | 'middle';
|
|
452
530
|
_thousands?: string;
|
|
453
|
-
|
|
531
|
+
_compact?: string;
|
|
454
532
|
}>;
|
|
455
533
|
|
|
456
534
|
/**
|
|
@@ -460,7 +538,7 @@ export type UnitConvertIn = Record<string, Record<string, UnitConvertRule>>;
|
|
|
460
538
|
|
|
461
539
|
/**
|
|
462
540
|
* 千分位预设名称(系统内置)
|
|
463
|
-
* -
|
|
541
|
+
* - en: 英文/国际标准 (1,234,567.89)
|
|
464
542
|
* - eu: 欧洲大陆格式 (1.234.567,89)
|
|
465
543
|
* - swiss: 瑞士格式 (1'234'567.89)
|
|
466
544
|
* - space: 空格分隔/ISO标准 (1 234 567.89)
|
|
@@ -468,7 +546,7 @@ export type UnitConvertIn = Record<string, Record<string, UnitConvertRule>>;
|
|
|
468
546
|
* - indian: 印度格式 (12,34,567.89)
|
|
469
547
|
* - wan: 万进制/东亚格式 (123,4567.89)
|
|
470
548
|
*/
|
|
471
|
-
export type ThousandsPresetName = '
|
|
549
|
+
export type ThousandsPresetName = 'en' | 'eu' | 'swiss' | 'space' | 'fr' | 'indian' | 'wan';
|
|
472
550
|
|
|
473
551
|
/**
|
|
474
552
|
* 紧凑格式预设名称(系统内置)
|
|
@@ -502,9 +580,9 @@ export interface ThousandsPreset {
|
|
|
502
580
|
* 紧凑格式预设配置类型
|
|
503
581
|
*/
|
|
504
582
|
export type CompactPreset =
|
|
505
|
-
| string[] //
|
|
506
|
-
| { // 完整形式:包含
|
|
507
|
-
|
|
583
|
+
| string[] // 简写形式:只有符号数组,step 默认 1000
|
|
584
|
+
| { // 完整形式:包含 symbols 和 step
|
|
585
|
+
symbols: string[];
|
|
508
586
|
step?: number | number[];
|
|
509
587
|
}
|
|
510
588
|
| ((num_str: string, context: { // 自定义函数形式
|
|
@@ -621,7 +699,7 @@ export function reset_config(key: keyof GlobalConfig): void;
|
|
|
621
699
|
export function reset_config(keys: (keyof GlobalConfig)[]): void;
|
|
622
700
|
|
|
623
701
|
/**
|
|
624
|
-
*
|
|
702
|
+
* 运算符方法类型(跟随 _compute_mode 配置变化)
|
|
625
703
|
*/
|
|
626
704
|
export interface Ops {
|
|
627
705
|
// 基础运算
|
|
@@ -673,6 +751,11 @@ export interface Ops {
|
|
|
673
751
|
gte: (a: string, b: string) => boolean;
|
|
674
752
|
}
|
|
675
753
|
|
|
754
|
+
/**
|
|
755
|
+
* 原始运算符对象(跟随 _compute_mode 配置变化)
|
|
756
|
+
*/
|
|
757
|
+
export const ops: Ops;
|
|
758
|
+
|
|
676
759
|
/**
|
|
677
760
|
* 加载 WASM 模块(异步)
|
|
678
761
|
* @returns Promise,加载完成后 resolve
|
|
@@ -752,4 +835,176 @@ export function req(a: string, b: string): boolean;
|
|
|
752
835
|
export function rlt(a: string, b: string): boolean;
|
|
753
836
|
export function rgt(a: string, b: string): boolean;
|
|
754
837
|
export function rlte(a: string, b: string): boolean;
|
|
755
|
-
export function rgte(a: string, b: string): boolean;
|
|
838
|
+
export function rgte(a: string, b: string): boolean;
|
|
839
|
+
|
|
840
|
+
// ==================== d 前缀原始运算函数(decimal 模式) ====================
|
|
841
|
+
// 这些函数始终使用 decimal.js 进行计算,不受 _compute_mode 配置影响
|
|
842
|
+
|
|
843
|
+
// 基础运算
|
|
844
|
+
export function dadd(a: string, b: string): string;
|
|
845
|
+
export function dsub(a: string, b: string): string;
|
|
846
|
+
export function dmul(a: string, b: string): string;
|
|
847
|
+
export function ddiv(a: string, b: string): string;
|
|
848
|
+
export function dmod(a: string, b: string): string;
|
|
849
|
+
export function dpow(a: string, b: string): string;
|
|
850
|
+
export function didiv(a: string, b: string): string;
|
|
851
|
+
|
|
852
|
+
// 一元运算
|
|
853
|
+
export function dabs(a: string): string;
|
|
854
|
+
export function dneg(a: string): string;
|
|
855
|
+
export function dsqrt(a: string): string;
|
|
856
|
+
export function dcbrt(a: string): string;
|
|
857
|
+
|
|
858
|
+
// 指数对数
|
|
859
|
+
export function dexp(a: string): string;
|
|
860
|
+
export function dln(a: string): string;
|
|
861
|
+
export function dlog(a: string, base: string): string;
|
|
862
|
+
export function dlog2(a: string): string;
|
|
863
|
+
export function dlog10(a: string): string;
|
|
864
|
+
|
|
865
|
+
// 三角函数
|
|
866
|
+
export function dsin(a: string): string;
|
|
867
|
+
export function dcos(a: string): string;
|
|
868
|
+
export function dtan(a: string): string;
|
|
869
|
+
export function dasin(a: string): string;
|
|
870
|
+
export function dacos(a: string): string;
|
|
871
|
+
export function datan(a: string): string;
|
|
872
|
+
|
|
873
|
+
// 双曲函数
|
|
874
|
+
export function dsinh(a: string): string;
|
|
875
|
+
export function dcosh(a: string): string;
|
|
876
|
+
export function dtanh(a: string): string;
|
|
877
|
+
export function dasinh(a: string): string;
|
|
878
|
+
export function dacosh(a: string): string;
|
|
879
|
+
export function datanh(a: string): string;
|
|
880
|
+
|
|
881
|
+
// 取整
|
|
882
|
+
export function dfloor(a: string): string;
|
|
883
|
+
export function dceil(a: string): string;
|
|
884
|
+
export function dtrunc(a: string): string;
|
|
885
|
+
export function dround(a: string): string;
|
|
886
|
+
|
|
887
|
+
// 比较
|
|
888
|
+
export function dmax(a: string, b: string): string;
|
|
889
|
+
export function dmin(a: string, b: string): string;
|
|
890
|
+
export function dcompare(a: string, b: string): number;
|
|
891
|
+
export function deq(a: string, b: string): boolean;
|
|
892
|
+
export function dlt(a: string, b: string): boolean;
|
|
893
|
+
export function dgt(a: string, b: string): boolean;
|
|
894
|
+
export function dlte(a: string, b: string): boolean;
|
|
895
|
+
export function dgte(a: string, b: string): boolean;
|
|
896
|
+
|
|
897
|
+
// ==================== b 前缀原始运算函数(bigint 模式) ====================
|
|
898
|
+
// 这些函数始终使用 BigInt 进行计算,不受 _compute_mode 配置影响
|
|
899
|
+
|
|
900
|
+
// 基础运算
|
|
901
|
+
export function badd(a: string, b: string): string;
|
|
902
|
+
export function bsub(a: string, b: string): string;
|
|
903
|
+
export function bmul(a: string, b: string): string;
|
|
904
|
+
export function bdiv(a: string, b: string): string;
|
|
905
|
+
export function bmod(a: string, b: string): string;
|
|
906
|
+
export function bpow(a: string, b: string): string;
|
|
907
|
+
export function bidiv(a: string, b: string): string;
|
|
908
|
+
|
|
909
|
+
// 一元运算
|
|
910
|
+
export function babs(a: string): string;
|
|
911
|
+
export function bneg(a: string): string;
|
|
912
|
+
export function bsqrt(a: string): string;
|
|
913
|
+
export function bcbrt(a: string): string;
|
|
914
|
+
|
|
915
|
+
// 指数对数
|
|
916
|
+
export function bexp(a: string): string;
|
|
917
|
+
export function bln(a: string): string;
|
|
918
|
+
export function blog(a: string, base: string): string;
|
|
919
|
+
export function blog2(a: string): string;
|
|
920
|
+
export function blog10(a: string): string;
|
|
921
|
+
|
|
922
|
+
// 三角函数
|
|
923
|
+
export function bsin(a: string): string;
|
|
924
|
+
export function bcos(a: string): string;
|
|
925
|
+
export function btan(a: string): string;
|
|
926
|
+
export function basin(a: string): string;
|
|
927
|
+
export function bacos(a: string): string;
|
|
928
|
+
export function batan(a: string): string;
|
|
929
|
+
|
|
930
|
+
// 双曲函数
|
|
931
|
+
export function bsinh(a: string): string;
|
|
932
|
+
export function bcosh(a: string): string;
|
|
933
|
+
export function btanh(a: string): string;
|
|
934
|
+
export function basinh(a: string): string;
|
|
935
|
+
export function bacosh(a: string): string;
|
|
936
|
+
export function batanh(a: string): string;
|
|
937
|
+
|
|
938
|
+
// 取整
|
|
939
|
+
export function bfloor(a: string): string;
|
|
940
|
+
export function bceil(a: string): string;
|
|
941
|
+
export function btrunc(a: string): string;
|
|
942
|
+
export function bround(a: string): string;
|
|
943
|
+
|
|
944
|
+
// 比较
|
|
945
|
+
export function bmax(a: string, b: string): string;
|
|
946
|
+
export function bmin(a: string, b: string): string;
|
|
947
|
+
export function bcompare(a: string, b: string): number;
|
|
948
|
+
export function beq(a: string, b: string): boolean;
|
|
949
|
+
export function blt(a: string, b: string): boolean;
|
|
950
|
+
export function bgt(a: string, b: string): boolean;
|
|
951
|
+
export function blte(a: string, b: string): boolean;
|
|
952
|
+
export function bgte(a: string, b: string): boolean;
|
|
953
|
+
|
|
954
|
+
// ==================== w 前缀原始运算函数(wasm 模式) ====================
|
|
955
|
+
// 这些函数使用 WASM 进行计算,首次调用时自动触发 WASM 加载
|
|
956
|
+
// 加载完成前使用 decimal 模式兜底
|
|
957
|
+
|
|
958
|
+
// 基础运算
|
|
959
|
+
export function wadd(a: string, b: string): string;
|
|
960
|
+
export function wsub(a: string, b: string): string;
|
|
961
|
+
export function wmul(a: string, b: string): string;
|
|
962
|
+
export function wdiv(a: string, b: string): string;
|
|
963
|
+
export function wmod(a: string, b: string): string;
|
|
964
|
+
export function wpow(a: string, b: string): string;
|
|
965
|
+
export function widiv(a: string, b: string): string;
|
|
966
|
+
|
|
967
|
+
// 一元运算
|
|
968
|
+
export function wabs(a: string): string;
|
|
969
|
+
export function wneg(a: string): string;
|
|
970
|
+
export function wsqrt(a: string): string;
|
|
971
|
+
export function wcbrt(a: string): string;
|
|
972
|
+
|
|
973
|
+
// 指数对数
|
|
974
|
+
export function wexp(a: string): string;
|
|
975
|
+
export function wln(a: string): string;
|
|
976
|
+
export function wlog(a: string, base: string): string;
|
|
977
|
+
export function wlog2(a: string): string;
|
|
978
|
+
export function wlog10(a: string): string;
|
|
979
|
+
|
|
980
|
+
// 三角函数
|
|
981
|
+
export function wsin(a: string): string;
|
|
982
|
+
export function wcos(a: string): string;
|
|
983
|
+
export function wtan(a: string): string;
|
|
984
|
+
export function wasin(a: string): string;
|
|
985
|
+
export function wacos(a: string): string;
|
|
986
|
+
export function watan(a: string): string;
|
|
987
|
+
|
|
988
|
+
// 双曲函数
|
|
989
|
+
export function wsinh(a: string): string;
|
|
990
|
+
export function wcosh(a: string): string;
|
|
991
|
+
export function wtanh(a: string): string;
|
|
992
|
+
export function wasinh(a: string): string;
|
|
993
|
+
export function wacosh(a: string): string;
|
|
994
|
+
export function watanh(a: string): string;
|
|
995
|
+
|
|
996
|
+
// 取整
|
|
997
|
+
export function wfloor(a: string): string;
|
|
998
|
+
export function wceil(a: string): string;
|
|
999
|
+
export function wtrunc(a: string): string;
|
|
1000
|
+
export function wround(a: string): string;
|
|
1001
|
+
|
|
1002
|
+
// 比较
|
|
1003
|
+
export function wmax(a: string, b: string): string;
|
|
1004
|
+
export function wmin(a: string, b: string): string;
|
|
1005
|
+
export function wcompare(a: string, b: string): number;
|
|
1006
|
+
export function weq(a: string, b: string): boolean;
|
|
1007
|
+
export function wlt(a: string, b: string): boolean;
|
|
1008
|
+
export function wgt(a: string, b: string): boolean;
|
|
1009
|
+
export function wlte(a: string, b: string): boolean;
|
|
1010
|
+
export function wgte(a: string, b: string): boolean;
|