@base-web-kits/base-tools-ts 0.0.3 → 0.0.5

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.
Files changed (51) hide show
  1. package/README.md +31 -2
  2. package/dist/array/index.d.ts +9 -0
  3. package/dist/array/index.d.ts.map +1 -0
  4. package/dist/async/index.d.ts +14 -0
  5. package/dist/async/index.d.ts.map +1 -0
  6. package/dist/bean/EventBus.d.ts +30 -0
  7. package/dist/bean/EventBus.d.ts.map +1 -0
  8. package/dist/bean/index.d.ts +2 -0
  9. package/dist/bean/index.d.ts.map +1 -0
  10. package/dist/day/index.d.ts +100 -0
  11. package/dist/day/index.d.ts.map +1 -0
  12. package/dist/index.d.ts +15 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +1140 -0
  15. package/dist/lodash/index.d.ts +5 -0
  16. package/dist/lodash/index.d.ts.map +1 -0
  17. package/dist/number/big.d.ts +137 -0
  18. package/dist/number/big.d.ts.map +1 -0
  19. package/dist/number/format.d.ts +88 -0
  20. package/dist/number/format.d.ts.map +1 -0
  21. package/dist/number/index.d.ts +4 -0
  22. package/dist/number/index.d.ts.map +1 -0
  23. package/dist/number/random.d.ts +33 -0
  24. package/dist/number/random.d.ts.map +1 -0
  25. package/dist/object/index.d.ts +11 -0
  26. package/dist/object/index.d.ts.map +1 -0
  27. package/dist/string/format.d.ts +33 -0
  28. package/dist/string/format.d.ts.map +1 -0
  29. package/dist/string/index.d.ts +4 -0
  30. package/dist/string/index.d.ts.map +1 -0
  31. package/dist/string/other.d.ts +15 -0
  32. package/dist/string/other.d.ts.map +1 -0
  33. package/dist/string/random.d.ts +27 -0
  34. package/dist/string/random.d.ts.map +1 -0
  35. package/dist/typing/index.d.ts +134 -0
  36. package/dist/typing/index.d.ts.map +1 -0
  37. package/dist/url/file/index.d.ts +22 -0
  38. package/dist/url/file/index.d.ts.map +1 -0
  39. package/dist/url/index.d.ts +5 -0
  40. package/dist/url/index.d.ts.map +1 -0
  41. package/dist/url/oss/index.d.ts +77 -0
  42. package/dist/url/oss/index.d.ts.map +1 -0
  43. package/dist/url/param/index.d.ts +49 -0
  44. package/dist/url/param/index.d.ts.map +1 -0
  45. package/dist/url/qn/index.d.ts +58 -0
  46. package/dist/url/qn/index.d.ts.map +1 -0
  47. package/dist/validator/index.d.ts +296 -0
  48. package/dist/validator/index.d.ts.map +1 -0
  49. package/package.json +9 -7
  50. package/index.d.ts +0 -1
  51. package/index.js +0 -1
package/README.md CHANGED
@@ -1,3 +1,32 @@
1
- # @base-web-kits/base-tools-ts
1
+ # Base Tools
2
2
 
3
- 薄包装分包,转发到主包的 `ts` 子路径:`@base-web-kits/base-tools/ts`。
3
+ web前端团队常用工具库,包含`ts`、`web`、`react`、`vue`、`uni`模块。
4
+
5
+ **安装**
6
+
7
+ 用哪个模块就安装哪个,模块之间不会相互依赖
8
+
9
+ - `npm i @base-web-kits/base-tools-ts`
10
+ - `npm i @base-web-kits/base-tools-web`
11
+ - `npm i @base-web-kits/base-tools-react`
12
+ - `npm i @base-web-kits/base-tools-vue`
13
+ - `npm i @base-web-kits/base-tools-uni`
14
+
15
+ **快速使用**
16
+
17
+ ```ts
18
+ // 通用 TS 模块
19
+ import { toDayjs, getUrlParam, toMaskPhone } from '@base-web-kits/base-tools-ts';
20
+
21
+ // Web 模块
22
+ import { copyText, isPC, download, setCookie } from '@base-web-kits/base-tools-web';
23
+
24
+ // React 模块
25
+ import { useCountDown } from '@base-web-kits/base-tools-react';
26
+
27
+ // Vue 模块
28
+ import { useResizeObserver } from '@base-web-kits/base-tools-vue';
29
+
30
+ // Uni 模块
31
+ import { chooseMedia, toPayWx } from '@base-web-kits/base-tools-uni';
32
+ ```
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 拖拽排序 (不改变原数组)
3
+ * @param list 原始数组
4
+ * @param fromIndex 要移动的元素的原始索引
5
+ * @param toIndex 要移动到的目标索引
6
+ * @returns 移动元素后的新数组
7
+ */
8
+ export declare function arrayMove<T>(list: T[], fromIndex: number, toIndex: number): T[];
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ts/array/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAKzE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 将 Promise 包装为 [data, error] 形式, 减少 try-catch 代码量
3
+ * @param p 要包装的 Promise
4
+ * @returns 一个 Promise,其结果为 [data, error] 形式
5
+ * @example
6
+ * const [data, err] = await toAsync(fetch('https://api.example.com/data'));
7
+ * if (err) {
8
+ * console.error(err);
9
+ * return;
10
+ * }
11
+ * console.log(data);
12
+ */
13
+ export declare function toAsync<T>(p: Promise<T>): Promise<[T | null, unknown]>;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ts/async/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAO5E"}
@@ -0,0 +1,30 @@
1
+ type EventFn = (...args: unknown[]) => void;
2
+ /**
3
+ * 总线式发布订阅
4
+ * @example
5
+ * const em = new EventBus(); // 支持链式调用
6
+ * em.on('xx', fn); // 订阅事件 xx
7
+ * em.once('xx', fn); // 订阅事件 xx 一次
8
+ * em.emit('xx', any); // 发布事件 xx,参数任意
9
+ * em.off('xx'); // 移除事件 xx 下全部监听
10
+ * em.off('xx', fn); // 移除事件 xx 下指定监听
11
+ * em.clear(); // 移除所有事件
12
+ */
13
+ export default class EventBus {
14
+ /** 事件池 */
15
+ private _events;
16
+ /** 订阅(每次 emit 都触发) */
17
+ on(type: string, fn: EventFn): this;
18
+ /** 订阅一次 */
19
+ once(type: string, fn: EventFn): this;
20
+ /** 发布事件 */
21
+ emit(type: string, ...args: unknown[]): boolean;
22
+ /** 移除指定监听;若 fn 不传,则移除该事件下全部监听 */
23
+ off(type: string, fn?: EventFn): this;
24
+ /** 清空所有事件 */
25
+ clear(): this;
26
+ /** 当前已注册的事件名列表 */
27
+ eventNames(): string[];
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../../src/ts/bean/EventBus.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,UAAU;IACV,OAAO,CAAC,OAAO,CAAkD;IAEjE,sBAAsB;IACtB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAQnC,WAAW;IACX,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAWrC,WAAW;IACX,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IAQ/C,iCAAiC;IACjC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAcrC,aAAa;IACb,KAAK,IAAI,IAAI;IAKb,kBAAkB;IAClB,UAAU,IAAI,MAAM,EAAE;CAGvB"}
@@ -0,0 +1,2 @@
1
+ export * from './EventBus';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ts/bean/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,100 @@
1
+ import dayjs from 'dayjs';
2
+ import 'dayjs/locale/zh-cn';
3
+ type BaseTime = number | string | Date | dayjs.Dayjs | null | undefined;
4
+ /**
5
+ * 创建 dayjs 实例
6
+ * 文档: https://day.js.org/zh-CN/
7
+ * @param t 各种规范或不规范的时间
8
+ * @returns dayjs 实例
9
+ * @example
10
+ * const d = toDayjs('2021-01-01'); // dayjs 实例
11
+ * d.format('YYYY-MM-DD HH:mm:ss'); // "2025-12-10 11:33:16"
12
+ * d.valueOf(); // 毫秒时间戳,如 1765337596913
13
+ * d.unix(); // 秒时间戳,如 1765337596
14
+ * d.millisecond(); // 毫秒 913
15
+ * d.second(); // 秒 16
16
+ * d.minute(); // 分 33
17
+ * d.hour(); // 时 11
18
+ * d.date(); // 日 10
19
+ * d.day(); // 星期几 5(周日=0)
20
+ * d.month() + 1; // 月 12
21
+ * d.year(); // 年 2025
22
+ * d.startOf('day').valueOf(); // 当日零点
23
+ * d.startOf('month').format('YYYY-MM-DD HH:mm:ss'); // 月初 "2025-12-01 00:00:00"
24
+ * d.endOf('month').format('YYYY-MM-DD HH:mm:ss'); // 月末 "2025-12-31 23:59:59"
25
+ * d.fromNow(); // 相对时间文案: “刚刚”、“x分钟前/后”、“x小时前/后”、“x天前/后”、“x月前/后”、“x年前/后”
26
+ * d.isSame(t, 'day'); // 是否与t在同一天
27
+ * d.diff(); // 与当前时间相差的毫秒数
28
+ * d.diff(t); // 与t相差的毫秒数
29
+ * d.diff(t, 'second'); // 与t相差的秒数
30
+ * d.diff(t, 'minute'); // 与t相差的分钟数
31
+ * d.diff(t, 'hour'); // 与t相差的小时数
32
+ * d.diff(t, 'day'); // 与t相差的天数
33
+ * d.diff(t, 'week'); // 与t相差的周数
34
+ * d.diff(t, 'month'); // 与t相差的月数
35
+ * d.diff(t, 'quarter'); // 与t相差的季度数
36
+ * d.diff(t, 'year'); // 与t相差的年数
37
+ */
38
+ export declare function toDayjs(t: BaseTime, fmt?: dayjs.OptionType): dayjs.Dayjs;
39
+ /**
40
+ * 获取“前几天”的日期范围
41
+ * @param offset 正整数天数
42
+ * @param fmt 日期格式,默认 `YYYY-MM-DD`
43
+ * @returns `[start, end]` 日期字符串数组
44
+ * @example
45
+ * 若今天为 2025-11-19:
46
+ * getDateRangeBefore(1) // ['2025-11-18', '2025-11-19']
47
+ * getDateRangeBefore(1, 'YYYY-MM-DD HH:mm:ss') // ['2025-11-18 00:00:00', '2025-11-19 23:59:59']
48
+ */
49
+ export declare function getDateRangeBefore(offset: number, fmt?: string): string[];
50
+ /**
51
+ * 获取“后几天”的日期范围
52
+ * - 起点:今天;终点:`offset` 天后
53
+ * - 若 `fmt` 含时间令牌(如 `HH:mm:ss`),则返回整日范围:起点为当日零点,终点为当日末尾
54
+ * @param offset 正整数天数
55
+ * @param fmt 日期格式,默认 `YYYY-MM-DD`
56
+ * @returns `[start, end]` 日期字符串数组
57
+ * @example
58
+ * 若今天为 2025-11-19:
59
+ * getDateRangeAfter(1) // ['2025-11-19', '2025-11-20']
60
+ * getDateRangeAfter(1, 'YYYY-MM-DD HH:mm:ss') // ['2025-11-19 00:00:00', '2025-11-20 23:59:59']
61
+ */
62
+ export declare function getDateRangeAfter(offset: number, fmt?: string): string[];
63
+ /**
64
+ * 获取倒计时的时间分解(零填充字符串)
65
+ * @param diff 毫秒差值(正数表示剩余时间,负数/0表示已到期)
66
+ * @returns 包含天、时、分、秒、毫秒的零填充对象
67
+ * @example
68
+ * const diff = toDayjs(t).diff(); // 毫秒差值
69
+ * const parts = getCountdownParts(diff); // { d: '01', h: '02', m: '03', s: '04', ms: '567' }
70
+ */
71
+ export declare function getCountdownParts(diff: number): {
72
+ d: string;
73
+ h: string;
74
+ m: string;
75
+ s: string;
76
+ ms: string;
77
+ };
78
+ /**
79
+ * 通过出生日期计算年龄
80
+ * @param birthdate 生日日期,支持多种格式(会被自动解析)
81
+ * @returns 年龄对象,包含 `age`(年龄数值)和 `type`(年龄单位,'year' 表示年,'month' 表示月)
82
+ * @example
83
+ * // 假设当前日期为 2025-11-19
84
+ * getAgeByBirthdate('2025-05-10'); // { age: 6, type: 'month' }
85
+ * getAgeByBirthdate('2020-11-19'); // { age: 5, type: 'year' }
86
+ * getAgeByBirthdate('2020-12-01'); // { age: 4, type: 'year' }(生日还没到, 所以年龄是4岁)
87
+ */
88
+ export declare function getAgeByBirthdate(birthdate: string): {
89
+ age: number;
90
+ type: string;
91
+ };
92
+ /**
93
+ * 对外抛出 dayjs 以便全局配置
94
+ * @example
95
+ * 切换语言
96
+ * dayjs.locale('en'); // 切换为英文
97
+ * dayjs.locale('zh-cn'); // 切换为中文 (默认)
98
+ */
99
+ export { dayjs };
100
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ts/day/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,oBAAoB,CAAC;AAU5B,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,eAmB1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAe,YASpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAe,YASnE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM;;;;;;EAgB7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM;;;EAqBlD;AAED;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 内部统一导出, 外部快捷引入: import {xx} from 'base-tools/ts'
3
+ */
4
+ export * from './array';
5
+ export * from './async';
6
+ export * from './bean';
7
+ export * from './day';
8
+ export * from './lodash';
9
+ export * from './number';
10
+ export * from './object';
11
+ export * from './string';
12
+ export * from './typing';
13
+ export * from './url';
14
+ export * from './validator';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC"}