@aiao/utils 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/@browser/broadcast-channel-pool.d.ts +26 -6
  2. package/dist/@browser/broadcast-channel-pool.d.ts.map +1 -1
  3. package/dist/@browser/index.d.ts +2 -0
  4. package/dist/@browser/index.d.ts.map +1 -1
  5. package/dist/@browser/leader-election.d.ts +40 -2
  6. package/dist/@browser/leader-election.d.ts.map +1 -1
  7. package/dist/@browser/opfs-detection.d.ts +12 -0
  8. package/dist/@browser/opfs-detection.d.ts.map +1 -0
  9. package/dist/@browser/requestIdleCallbackPolyfill.d.ts +2 -0
  10. package/dist/@browser/requestIdleCallbackPolyfill.d.ts.map +1 -0
  11. package/dist/array/difference.d.ts +3 -3
  12. package/dist/array/flatten.d.ts +3 -3
  13. package/dist/array/flattenDeep.d.ts +3 -3
  14. package/dist/array/intersection.d.ts +4 -4
  15. package/dist/array/needArray.d.ts +5 -10
  16. package/dist/array/needArray.d.ts.map +1 -1
  17. package/dist/array/orderBy.d.ts +18 -4
  18. package/dist/array/orderBy.d.ts.map +1 -1
  19. package/dist/array/sortBy.d.ts +5 -5
  20. package/dist/array/unionBy.d.ts +20 -0
  21. package/dist/array/unionBy.d.ts.map +1 -1
  22. package/dist/async/{AsyncTaskExecutor.d.ts → AsyncQueueExecutor.d.ts} +15 -10
  23. package/dist/async/AsyncQueueExecutor.d.ts.map +1 -0
  24. package/dist/async/index.d.ts +1 -1
  25. package/dist/async/index.d.ts.map +1 -1
  26. package/dist/async/nextMacroTask.d.ts +11 -2
  27. package/dist/async/nextMacroTask.d.ts.map +1 -1
  28. package/dist/async/nextMicroTask.d.ts +1 -1
  29. package/dist/binary/uint8ArrayToString.d.ts +1 -1
  30. package/dist/collection/traverseObjectKeys.d.ts.map +1 -1
  31. package/dist/crypto/aesDecrypt.d.ts +12 -5
  32. package/dist/crypto/aesDecrypt.d.ts.map +1 -1
  33. package/dist/crypto/aesEncrypt.d.ts +2 -2
  34. package/dist/crypto/rsaGenerateKey.d.ts +22 -0
  35. package/dist/crypto/rsaGenerateKey.d.ts.map +1 -1
  36. package/dist/date/parseTime.d.ts +23 -0
  37. package/dist/date/parseTime.d.ts.map +1 -1
  38. package/dist/date/stringTime.d.ts +12 -0
  39. package/dist/date/stringTime.d.ts.map +1 -1
  40. package/dist/function/once.d.ts +2 -2
  41. package/dist/function/throttle.d.ts +3 -3
  42. package/dist/index.js +471 -409
  43. package/dist/indexing/fractional-indexing.d.ts +50 -11
  44. package/dist/indexing/fractional-indexing.d.ts.map +1 -1
  45. package/dist/number/canBeNumber.d.ts +2 -2
  46. package/dist/number/numberStep.d.ts +2 -2
  47. package/dist/number/numberStepScreenSize.d.ts +13 -0
  48. package/dist/number/numberStepScreenSize.d.ts.map +1 -1
  49. package/dist/number/numberStrip.d.ts +3 -3
  50. package/dist/number/toInt.d.ts +12 -6
  51. package/dist/number/toInt.d.ts.map +1 -1
  52. package/dist/number/tryToNumber.d.ts +17 -8
  53. package/dist/number/tryToNumber.d.ts.map +1 -1
  54. package/dist/object/deepFreeze.d.ts +17 -1
  55. package/dist/object/deepFreeze.d.ts.map +1 -1
  56. package/dist/object/flattenPathObjectToPlainObject.d.ts +14 -3
  57. package/dist/object/flattenPathObjectToPlainObject.d.ts.map +1 -1
  58. package/dist/object/get.d.ts +2 -2
  59. package/dist/object/has.d.ts +2 -2
  60. package/dist/object/isEqual.d.ts +3 -3
  61. package/dist/object/omit.d.ts +2 -2
  62. package/dist/object/omitBy.d.ts +3 -3
  63. package/dist/object/pick.d.ts +2 -2
  64. package/dist/object/plainObjectToFlattenPathObject.d.ts +10 -4
  65. package/dist/object/plainObjectToFlattenPathObject.d.ts.map +1 -1
  66. package/dist/object/set.d.ts +3 -3
  67. package/dist/object/setWith.d.ts +0 -1
  68. package/dist/object/setWith.d.ts.map +1 -1
  69. package/dist/object/toPlainObject.d.ts +19 -0
  70. package/dist/object/toPlainObject.d.ts.map +1 -1
  71. package/dist/object/zipObject.d.ts +22 -5
  72. package/dist/object/zipObject.d.ts.map +1 -1
  73. package/dist/platform/is-browser.d.ts +14 -1
  74. package/dist/platform/is-browser.d.ts.map +1 -1
  75. package/dist/random/randomArrayItem.d.ts +18 -1
  76. package/dist/random/randomArrayItem.d.ts.map +1 -1
  77. package/dist/random/randomFloat.d.ts +16 -0
  78. package/dist/random/randomFloat.d.ts.map +1 -1
  79. package/dist/random/randomInt.d.ts +14 -4
  80. package/dist/random/randomInt.d.ts.map +1 -1
  81. package/dist/random/randomString.d.ts +16 -0
  82. package/dist/random/randomString.d.ts.map +1 -1
  83. package/dist/random/randomUintByLength.d.ts +15 -0
  84. package/dist/random/randomUintByLength.d.ts.map +1 -1
  85. package/dist/random/randomUintString.d.ts +15 -0
  86. package/dist/random/randomUintString.d.ts.map +1 -1
  87. package/dist/string/camelCase.d.ts +1 -1
  88. package/dist/string/getWords.d.ts +21 -0
  89. package/dist/string/getWords.d.ts.map +1 -1
  90. package/dist/string/kebabCase.d.ts +2 -2
  91. package/dist/string/stringSingleline.d.ts +14 -1
  92. package/dist/string/stringSingleline.d.ts.map +1 -1
  93. package/dist/string/stringToArrayBuffer.d.ts +0 -1
  94. package/dist/string/stringToArrayBuffer.d.ts.map +1 -1
  95. package/dist/tools/event.d.ts +35 -22
  96. package/dist/tools/event.d.ts.map +1 -1
  97. package/dist/tools/index.d.ts +1 -1
  98. package/dist/tools/index.d.ts.map +1 -1
  99. package/dist/type-definition/result-types.d.ts +26 -4
  100. package/dist/type-definition/result-types.d.ts.map +1 -1
  101. package/dist/types/AnyFunction.d.ts +2 -2
  102. package/dist/types/DeepPartial.d.ts +3 -3
  103. package/dist/types/isArray.d.ts +1 -1
  104. package/dist/types/isArrayBuffer.d.ts +3 -3
  105. package/dist/types/isBoolean.d.ts +3 -3
  106. package/dist/types/isDate.d.ts +3 -3
  107. package/dist/types/isEmpty.d.ts +4 -4
  108. package/dist/types/isNil.d.ts +2 -2
  109. package/dist/types/isNumber.d.ts +3 -3
  110. package/dist/types/isObject.d.ts +2 -2
  111. package/dist/types/isPlainObject.d.ts +3 -3
  112. package/dist/types/isPrimitive.d.ts +3 -3
  113. package/dist/types/isRegExp.d.ts +3 -3
  114. package/dist/types/isString.d.ts +2 -2
  115. package/dist/types/isUint8Array.d.ts +3 -3
  116. package/package.json +4 -4
  117. package/dist/async/AsyncTaskExecutor.d.ts.map +0 -1
@@ -1,22 +1,61 @@
1
1
  /**
2
- * 因为原来库编译有问题,拷贝 https://github.com/rocicorp/fractional-indexing 并且 js 转成 ts
2
+ * 分数索引(Fractional Indexing)实现
3
+ * 基于 https://github.com/rocicorp/fractional-indexing
4
+ *
5
+ * 分数索引是一种用于生成排序键的技术,可以在任意两个已存在的键之间插入新的键
6
+ * 常用于实现列表项的任意位置插入排序,如协同编辑中的项目排序
7
+ *
8
+ * @example
9
+ * // 基础用法
10
+ * const key1 = generateKeyBetween(null, null); // 'a0'
11
+ * const key2 = generateKeyBetween(key1, null); // 'a1'
12
+ * const key3 = generateKeyBetween(key1, key2); // 'a0V'
13
+ *
14
+ * @example
15
+ * // 在列表中插入项目
16
+ * const items = ['a0', 'a2'];
17
+ * const newKey = generateKeyBetween('a0', 'a2'); // 'a1'
18
+ * // 现在可以插入到 'a0' 和 'a2' 之间
3
19
  */
4
20
  export declare const BASE_62_DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
21
+ type OrderKey = string | null | undefined;
5
22
  /**
6
23
  * 在两个排序键之间生成一个新的排序键
7
- * @param a 起始键(null表示开始)
8
- * @param b 结束键(null表示结尾)
9
- * @param digits 数字字符集,默认为BASE_62
24
+ * 用于在有序列表中插入新项目,支持任意位置插入
25
+ *
26
+ * @param a - 起始键(null表示列表开始)
27
+ * @param b - 结束键(null表示列表结尾)
28
+ * @param digits - 数字字符集,默认为BASE_62_DIGITS
10
29
  * @returns 新生成的排序键
30
+ * @throws 当参数无效或无法生成键时抛出错误
31
+ * @example
32
+ * // 在列表开始插入
33
+ * const firstKey = generateKeyBetween(null, 'a1'); // 'a0V'
34
+ *
35
+ * @example
36
+ * // 在列表结尾插入
37
+ * const lastKey = generateKeyBetween('a1', null); // 'a2'
38
+ *
39
+ * @example
40
+ * // 在两个键之间插入
41
+ * const middleKey = generateKeyBetween('a1', 'a2'); // 'a1V'
11
42
  */
12
- export declare function generateKeyBetween(a: string | null | undefined, b: string | null | undefined, digits?: string): string;
43
+ export declare function generateKeyBetween(a: OrderKey, b: OrderKey, digits?: string): string;
13
44
  /**
14
45
  * 在两个排序键之间生成n个排序键
15
- * @param a 起始键
16
- * @param b 结束键
17
- * @param n 生成键的数量
18
- * @param digits 数字字符集
19
- * @returns 生成的排序键数组
46
+ * 用于批量插入多个项目到有序列表中
47
+ *
48
+ * @param a - 起始键(null表示列表开始)
49
+ * @param b - 结束键(null表示列表结尾)
50
+ * @param n - 要生成的键的数量
51
+ * @param digits - 数字字符集,默认为BASE_62_DIGITS
52
+ * @returns 生成的排序键数组,按顺序排列
53
+ * @throws 当参数无效时抛出错误
54
+ * @example
55
+ * // 生成3个键插入到两个现有键之间
56
+ * const keys = generateKeysBetween('a1', 'a2', 3);
57
+ * // 返回: ['a1V', 'a1l', 'a1v']
20
58
  */
21
- export declare function generateKeysBetween(a: string | null | undefined, b: string | null | undefined, n: number, digits?: string): string[];
59
+ export declare function generateKeysBetween(a: OrderKey, b: OrderKey, n: number, digits?: string): string[];
60
+ export {};
22
61
  //# sourceMappingURL=fractional-indexing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fractional-indexing.d.ts","sourceRoot":"","sources":["../../src/indexing/fractional-indexing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,mEAAmE,CAAC;AAyL/F;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5B,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5B,MAAM,SAAiB,GACtB,MAAM,CAoDR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5B,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5B,CAAC,EAAE,MAAM,EACT,MAAM,SAAiB,GACtB,MAAM,EAAE,CA6BV"}
1
+ {"version":3,"file":"fractional-indexing.d.ts","sourceRoot":"","sources":["../../src/indexing/fractional-indexing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc,mEAAmE,CAAC;AAE/F,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AA0M1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAiB,GAAG,MAAM,CA0D5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,SAAiB,GAAG,MAAM,EAAE,CAkC1G"}
@@ -25,8 +25,8 @@
25
25
  * canBeNumber(Infinity); // 返回 false(无穷大不能转换为有限数字)
26
26
  * @example
27
27
  * canBeNumber(-Infinity); // 返回 false(负无穷大不能转换为有限数字)
28
- * @note 与isNumber()不同,该函数检查的是值是否可以被转换为数字,而非值本身是否是数字类型
29
- * @note 对于BigInt类型值(如123n),会返回false,因为parseFloat无法处理BigInt
28
+ * **Note:** 与isNumber()不同,该函数检查的是值是否可以被转换为数字,而非值本身是否是数字类型
29
+ * **Note:** 对于BigInt类型值(如123n),会返回false,因为parseFloat无法处理BigInt
30
30
  */
31
31
  export declare const canBeNumber: (value: number | string) => boolean;
32
32
  //# sourceMappingURL=canBeNumber.d.ts.map
@@ -13,8 +13,8 @@
13
13
  * numberStep(3.2, 2); // 返回 4(2的2倍)
14
14
  * @example
15
15
  * numberStep(0.5, 1); // 返回 1(1的1倍)
16
- * @note 实现原理:value除以step后向上取整,再乘以step
17
- * @warning step必须为正数,否则可能导致非预期结果或除以零错误
16
+ * **Note:** 实现原理:value除以step后向上取整,再乘以step
17
+ * **Warning:** step必须为正数,否则可能导致非预期结果或除以零错误
18
18
  */
19
19
  export declare const numberStep: (value: number, step: number) => number;
20
20
  //# sourceMappingURL=numberStep.d.ts.map
@@ -1,2 +1,15 @@
1
+ /**
2
+ * 根据设备像素比调整数值后,按步长取整
3
+ * 主要用于处理不同DPI屏幕下的尺寸计算,确保在高分辨率屏幕上保持合适的步长
4
+ * @param value - 原始数值
5
+ * @param step - 步长间隔,默认80
6
+ * @param devicePixelRatio - 设备像素比,默认1,用于高DPI屏幕调整
7
+ * @returns 调整后的数值
8
+ * @example
9
+ * numberStepScreenSize(100, 50, 2); // 返回 200(100*2=200,向上取整到50的倍数)
10
+ * numberStepScreenSize(75, 50, 1); // 返回 100(75向上取整到50的倍数)
11
+ * **Note:** 先将value乘以devicePixelRatio,再应用numberStep逻辑
12
+ * **Note:** 适用于响应式设计中的尺寸计算
13
+ */
1
14
  export declare const numberStepScreenSize: (value: number, step?: number, devicePixelRatio?: number) => number;
2
15
  //# sourceMappingURL=numberStepScreenSize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numberStepScreenSize.d.ts","sourceRoot":"","sources":["../../src/number/numberStepScreenSize.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,aAAS,EAAE,yBAAoB,WACvC,CAAC"}
1
+ {"version":3,"file":"numberStepScreenSize.d.ts","sourceRoot":"","sources":["../../src/number/numberStepScreenSize.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,aAAS,EAAE,yBAAoB,WACvC,CAAC"}
@@ -14,9 +14,9 @@
14
14
  * numberStrip(12345.6789, 6); // 返回 12345.7(6位有效数字)
15
15
  * @example
16
16
  * numberStrip(0.0000012345); // 返回 0.0000012345
17
- * @note 有效数字位数(precision)控制整体数字精度,而非仅小数部分
18
- * @note 默认精度12位适用于大多数场景,可根据需要调整,但不应超过21位
19
- * @note 内部使用Number.toPrecision()实现,然后通过parseFloat()转换回数字
17
+ * **Note:** 有效数字位数(precision)控制整体数字精度,而非仅小数部分
18
+ * **Note:** 默认精度12位适用于大多数场景,可根据需要调整,但不应超过21位
19
+ * **Note:** 内部使用Number.toPrecision()实现,然后通过parseFloat()转换回数字
20
20
  */
21
21
  export declare const numberStrip: (value: number, precision?: number) => number;
22
22
  //# sourceMappingURL=numberStrip.d.ts.map
@@ -1,17 +1,23 @@
1
1
  /**
2
- * 将值转换为整数
3
- * @param value - 要转换的值
4
- * @returns 转换后的整数,如果无法转换则返回NaN
2
+ * 将值转换为整数,使用向下取整(正数)和向上取整(负数)的策略
3
+ * @param value - 要转换的值,可以是数字或字符串
4
+ * @returns 转换后的整数,转换失败返回 NaN
5
5
  * @example
6
6
  * toInt('123'); // 返回 123
7
7
  * @example
8
- * toInt(123.45); // 返回 123
8
+ * toInt(123.45); // 返回 123(向下取整)
9
9
  * @example
10
- * toInt('-123.45'); // 返回 -123
10
+ * toInt('-123.45'); // 返回 -123(向上取整,-123.45 -> -123)
11
11
  * @example
12
- * toInt('abc'); // 返回 NaN
12
+ * toInt('123.9'); // 返回 123(向下取整)
13
+ * @example
14
+ * toInt('-123.1'); // 返回 -123(向上取整)
15
+ * @example
16
+ * toInt('abc'); // 返回 NaN(无法转换为数字)
13
17
  * @example
14
18
  * toInt(null); // 返回 NaN
19
+ * **Note:** 对于正数使用 Math.floor(),对于负数使用 Math.ceil()
20
+ * **Note:** 这与 parseInt() 的行为不同,后者总是向零取整
15
21
  */
16
22
  export declare const toInt: (value: number | string) => number;
17
23
  //# sourceMappingURL=toInt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toInt.d.ts","sourceRoot":"","sources":["../../src/number/toInt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,GAAG,MAAM,KAAG,MAK9C,CAAC"}
1
+ {"version":3,"file":"toInt.d.ts","sourceRoot":"","sources":["../../src/number/toInt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,GAAG,MAAM,KAAG,MAK9C,CAAC"}
@@ -1,16 +1,25 @@
1
1
  /**
2
- * 尝试将值转换为数字
3
- * 如果值可以转换为有效数字则返回数字,否则返回原值
4
- * @param value - 要转换的值
5
- * @returns 转换后的数字或原值
2
+ * 安全地将值转换为数字,只在能转换为有效数字时才转换
3
+ * 如果无法转换为有效数字(NaN、无穷大等),则返回原值不变
4
+ * @param value - 要尝试转换的值
5
+ * @returns 转换后的数字(如果成功)或原值(如果失败)
6
6
  * @example
7
- * tryToNumber('123'); // 返回 123
7
+ * tryToNumber('123'); // 返回 123(字符串数字转换为数字)
8
8
  * @example
9
- * tryToNumber('abc'); // 返回 'abc'
9
+ * tryToNumber('123.45'); // 返回 123.45(浮点数字符串)
10
10
  * @example
11
- * tryToNumber(true); // 返回 true
11
+ * tryToNumber('abc'); // 返回 'abc'(无法转换为数字,返回原值)
12
12
  * @example
13
- * tryToNumber(null); // 返回 null
13
+ * tryToNumber(true); // 返回 true(布尔值不转换)
14
+ * @example
15
+ * tryToNumber(null); // 返回 null(null不转换)
16
+ * @example
17
+ * tryToNumber(''); // 返回 ''(空字符串不转换)
18
+ * @example
19
+ * tryToNumber('Infinity'); // 返回 'Infinity'(无穷大字符串不转换)
20
+ * **Note:** 使用 canBeNumber 检查是否可以转换为数字
21
+ * **Note:** 即使通过了 canBeNumber 检查,仍会验证转换结果是否为有效数字
22
+ * **Note:** 对于无法转换的值,始终返回原值,不抛出错误
14
23
  */
15
24
  export declare const tryToNumber: (value: any) => number | typeof value;
16
25
  //# sourceMappingURL=tryToNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tryToNumber.d.ts","sourceRoot":"","sources":["../../src/number/tryToNumber.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,MAAM,GAAG,OAAO,KAcxD,CAAC"}
1
+ {"version":3,"file":"tryToNumber.d.ts","sourceRoot":"","sources":["../../src/number/tryToNumber.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,KAAG,MAAM,GAAG,OAAO,KAcxD,CAAC"}
@@ -1,6 +1,22 @@
1
1
  import { ReadonlyDeep } from 'type-fest';
2
2
  /**
3
- * 深度冻结对象
3
+ * 深度冻结对象及其所有嵌套属性,使其不可修改
4
+ * 递归遍历对象的所有属性,对每个对象和函数属性调用 Object.freeze()
5
+ * @template T - 对象类型
6
+ * @param target - 要深度冻结的对象
7
+ * @returns 深度冻结后的只读对象
8
+ * @example
9
+ * const obj = { a: { b: 1 } };
10
+ * const frozen = deepFreeze(obj);
11
+ * frozen.a.b = 2; // 抛出错误,对象已被冻结
12
+ * @example
13
+ * const arr = [1, { nested: 2 }];
14
+ * const frozenArr = deepFreeze(arr);
15
+ * frozenArr[1].nested = 3; // 抛出错误,嵌套对象也被冻结
16
+ * **Note:** 原始类型(string、number、boolean等)和 null 值不会被冻结
17
+ * **Note:** 函数对象也会被冻结,防止修改其属性
18
+ * **Note:** 如果对象已经被冻结,会直接返回原对象
19
+ * **Note:** 使用 type-fest 的 ReadonlyDeep 类型确保类型安全
4
20
  */
5
21
  export declare const deepFreeze: <T extends object>(target: T) => ReadonlyDeep<T>;
6
22
  //# sourceMappingURL=deepFreeze.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepFreeze.d.ts","sourceRoot":"","sources":["../../src/object/deepFreeze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,KAAG,YAAY,CAAC,CAAC,CAQtE,CAAC"}
1
+ {"version":3,"file":"deepFreeze.d.ts","sourceRoot":"","sources":["../../src/object/deepFreeze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,KAAG,YAAY,CAAC,CAAC,CAQtE,CAAC"}
@@ -1,8 +1,19 @@
1
1
  /**
2
- * 转换 扁平的路径对象到普通对象
3
- * @param value
2
+ * 将扁平的路径对象转换为嵌套的普通对象
3
+ * 支持点号路径(如 'a.b.c')和数组路径(如 'a[0].b')
4
+ * @param value - 扁平路径对象,键为路径字符串,值为对应值
5
+ * @returns 转换后的嵌套对象
4
6
  * @example
5
- * { 'a.a': 1 } => { a: { a: 1 }}
7
+ * flattenPathObjectToPlainObject({ 'a.b': 1, 'a.c': 2 });
8
+ * // 返回 { a: { b: 1, c: 2 } }
9
+ * @example
10
+ * flattenPathObjectToPlainObject({ 'users[0].name': 'Alice', 'users[1].name': 'Bob' });
11
+ * // 返回 { users: [{ name: 'Alice' }, { name: 'Bob' }] }
12
+ * @example
13
+ * flattenPathObjectToPlainObject({ 'config.db.host': 'localhost', 'config.db.port': 5432 });
14
+ * // 返回 { config: { db: { host: 'localhost', port: 5432 } } }
15
+ * **Note:** 对于包含数组索引的路径使用 set() 函数,其他路径使用 setWith() 函数
16
+ * **Note:** 空对象返回空对象,不会抛出错误
6
17
  */
7
18
  export declare const flattenPathObjectToPlainObject: (value: Record<string, any>) => {};
8
19
  //# sourceMappingURL=flattenPathObjectToPlainObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flattenPathObjectToPlainObject.d.ts","sourceRoot":"","sources":["../../src/object/flattenPathObjectToPlainObject.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAWxE,CAAC"}
1
+ {"version":3,"file":"flattenPathObjectToPlainObject.d.ts","sourceRoot":"","sources":["../../src/object/flattenPathObjectToPlainObject.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,8BAA8B,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAWxE,CAAC"}
@@ -17,8 +17,8 @@
17
17
  * get([{ name: 'test' }], '[0].name'); // 返回 'test'(数组访问)
18
18
  * @example
19
19
  * get({ a: [{ b: 'value' }] }, 'a,0,b'); // 返回 'value'(逗号分隔路径)
20
- * @note 路径解析支持多种分隔符:逗号(,)、方括号([])和点(.)
21
- * @note 如果对象在路径的任何环节为null/undefined,将返回默认值
20
+ * **Note:** 路径解析支持多种分隔符:逗号(,)、方括号([])和点(.)
21
+ * **Note:** 如果对象在路径的任何环节为null/undefined,将返回默认值
22
22
  */
23
23
  export declare const get: <T = any>(obj: any, path: string, defaultValue?: any) => T;
24
24
  //# sourceMappingURL=get.d.ts.map
@@ -14,8 +14,8 @@
14
14
  * has({ a: {} }, 'a.b'); // 返回 false(属性不存在)
15
15
  * @example
16
16
  * has(null, 'a'); // 返回 false(对象为null)
17
- * @note 使用Object.hasOwnProperty检查属性,不考虑继承属性
18
- * @note 支持任意深度的嵌套属性检查
17
+ * **Note:** 使用Object.hasOwnProperty检查属性,不考虑继承属性
18
+ * **Note:** 支持任意深度的嵌套属性检查
19
19
  */
20
20
  export declare const has: (obj: any, key: string) => boolean;
21
21
  //# sourceMappingURL=has.d.ts.map
@@ -18,9 +18,9 @@
18
18
  * isEqual(/abc/i, /abc/i); // 返回 true(正则表达式比较)
19
19
  * @example
20
20
  * isEqual(new Uint8Array([1,2]), new Uint8Array([1,2])); // 返回 true(Uint8Array比较)
21
- * @note 比较对象时会检查构造函数和自有属性,不考虑原型链上的属性
22
- * @note 循环引用对象可能导致无限递归
23
- * @note 函数不支持比较函数、Promise等引用类型的内部状态
21
+ * **Note:** 比较对象时会检查构造函数和自有属性,不考虑原型链上的属性
22
+ * **Note:** 循环引用对象可能导致无限递归
23
+ * **Note:** 函数不支持比较函数、Promise等引用类型的内部状态
24
24
  */
25
25
  export declare const isEqual: (a: any, b: any) => boolean;
26
26
  //# sourceMappingURL=isEqual.d.ts.map
@@ -18,8 +18,8 @@
18
18
  * omit({ a: 1 }, []); // 返回 { a: 1 }(排除空数组)
19
19
  * @example
20
20
  * omit(null, ['a']); // 返回 {}(输入为null)
21
- * @note 函数会创建源对象的浅拷贝,原对象不会被修改
22
- * @note 只排除自有属性,继承属性不受影响
21
+ * **Note:** 函数会创建源对象的浅拷贝,原对象不会被修改
22
+ * **Note:** 只排除自有属性,继承属性不受影响
23
23
  */
24
24
  export declare const omit: <T extends Record<string, any>, Keys extends keyof T>(obj: T, keys: Keys[]) => Omit<T, Keys>;
25
25
  //# sourceMappingURL=omit.d.ts.map
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * 创建一个新对象,通过方法除了指定的属性
3
- * @param obj
4
- * @param keys
5
- * @returns
3
+ * @param object 源对象
4
+ * @param fn 判断函数,返回 true 时排除该属性
5
+ * @returns 新对象
6
6
  */
7
7
  export declare function omitBy<T extends Record<string, any>>(object: T, fn: (value: any, key: string) => boolean): T;
8
8
  //# sourceMappingURL=omitBy.d.ts.map
@@ -18,8 +18,8 @@
18
18
  * pick(null, ['a', 'b']); // 返回 {}
19
19
  * @example
20
20
  * pick({ a: 1 }, ['b']); // 返回 {}(属性不存在)
21
- * @note 只选取对象的自有属性,不包括继承的属性
22
- * @note 对于不存在的属性,会被忽略而不会出现在结果中
21
+ * **Note:** 只选取对象的自有属性,不包括继承的属性
22
+ * **Note:** 对于不存在的属性,会被忽略而不会出现在结果中
23
23
  */
24
24
  export declare function pick<T extends object, Keys extends keyof T>(obj: T, keys: Keys[]): Pick<T, Keys>;
25
25
  //# sourceMappingURL=pick.d.ts.map
@@ -1,9 +1,15 @@
1
1
  /**
2
2
  * 扁平化对象
3
- * @param object
4
- * @returns
5
- * in { a: { a: [0, 1] } }
6
- * out { 'a.a[0]': 0, 'a.a[1]': 1 }
3
+ * @param object 待扁平化的对象
4
+ * @returns 扁平化后的键值对对象
5
+ * @example
6
+ * ```ts
7
+ * // 输入
8
+ * { a: { a: [0, 1] } }
9
+ *
10
+ * // 输出
11
+ * { 'a.a[0]': 0, 'a.a[1]': 1 }
12
+ * ```
7
13
  */
8
14
  export declare function plainObjectToFlattenPathObject(object: object): Record<string, any>;
9
15
  //# sourceMappingURL=plainObjectToFlattenPathObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plainObjectToFlattenPathObject.d.ts","sourceRoot":"","sources":["../../src/object/plainObjectToFlattenPathObject.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElF"}
1
+ {"version":3,"file":"plainObjectToFlattenPathObject.d.ts","sourceRoot":"","sources":["../../src/object/plainObjectToFlattenPathObject.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElF"}
@@ -20,9 +20,9 @@ export declare function setBase(object: Record<string, any>, path: string, value
20
20
  * @example
21
21
  * set({ a: 1 }, 'a.b', 2);
22
22
  * // 返回 { a: { b: 2 } }(覆盖原属性值)
23
- * @note 函数会原地修改输入对象,而非创建新对象
24
- * @note 路径中的数字索引会创建数组,其他情况创建普通对象
25
- * @note 空路径段(如'a..b')会被忽略
23
+ * **Note:** 函数会原地修改输入对象,而非创建新对象
24
+ * **Note:** 路径中的数字索引会创建数组,其他情况创建普通对象
25
+ * **Note:** 空路径段(如'a..b')会被忽略
26
26
  */
27
27
  export declare function set(object: Record<string, any>, path: string, value: any): Record<string, any>;
28
28
  //# sourceMappingURL=set.d.ts.map
@@ -3,7 +3,6 @@
3
3
  * 如果 fun 返回 undefined 将会有它的处理方法代替。
4
4
  * customFun 会传入3个参数:(nsValue, key, nsObject)
5
5
  *
6
- * @export
7
6
  * @param object
8
7
  * @param path
9
8
  * @param value
@@ -1 +1 @@
1
- {"version":3,"file":"setWith.d.ts","sourceRoot":"","sources":["../../src/object/setWith.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,GACjE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGrB"}
1
+ {"version":3,"file":"setWith.d.ts","sourceRoot":"","sources":["../../src/object/setWith.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,GACjE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGrB"}
@@ -1,2 +1,21 @@
1
+ /**
2
+ * 将任意值转换为普通对象,只保留自有属性
3
+ * 通过遍历对象的可枚举属性,创建一个新的普通对象
4
+ * @param value - 要转换的值
5
+ * @returns 包含所有自有属性的普通对象
6
+ * @example
7
+ * const obj = Object.create({ inherited: 'value' });
8
+ * obj.own = 'own value';
9
+ * toPlainObject(obj); // 返回 { own: 'own value' }(只保留自有属性)
10
+ * @example
11
+ * toPlainObject('string'); // 返回 {}(字符串没有自有属性)
12
+ * @example
13
+ * toPlainObject(null); // 返回 {}(null/undefined 返回空对象)
14
+ * @example
15
+ * toPlainObject([1, 2, 3]); // 返回 { '0': 1, '1': 2, '2': 3 }(数组转换为对象)
16
+ * **Note:** 使用 Object.prototype.hasOwnProperty 确保只复制自有属性
17
+ * **Note:** 对于非对象值,返回空对象
18
+ * **Note:** 不会复制原型链上的属性
19
+ */
1
20
  export declare const toPlainObject: (value: any) => Record<string, any>;
2
21
  //# sourceMappingURL=toPlainObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toPlainObject.d.ts","sourceRoot":"","sources":["../../src/object/toPlainObject.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAQ5D,CAAC"}
1
+ {"version":3,"file":"toPlainObject.d.ts","sourceRoot":"","sources":["../../src/object/toPlainObject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,GAAG,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAQ5D,CAAC"}
@@ -1,10 +1,27 @@
1
1
  /**
2
- * 创建一个对象,将映射指定键值
3
- *
2
+ * 创建一个对象,将键数组和值数组/函数配对组合
3
+ * 支持多种值来源:固定值、值数组或值生成函数
4
+ * @template K - 键的类型,必须是字符串、数字或符号
5
+ * @template V - 值的类型
6
+ * @param keys - 键数组
7
+ * @param values - 值来源,可以是:
8
+ * - 固定值:所有键都使用相同的值
9
+ * - 值数组:按索引对应键赋值
10
+ * - 值生成函数:根据键和索引动态生成值
11
+ * @returns 组合后的对象
4
12
  * @example
5
- * const zipped = zipObject(['a', 'b'], [1, 2]) // { a: 1, b: 2 }
6
- * const zipped = zipObject(['a', 'b'], (k, i) => k + i) // { a: 'a0', b: 'b1' }
7
- * const zipped = zipObject(['a', 'b'], 1) // { a: 1, b: 1 }
13
+ * zipObject(['a', 'b'], [1, 2]); // 返回 { a: 1, b: 2 }
14
+ * @example
15
+ * zipObject(['a', 'b'], (key, idx) => key + idx); // 返回 { a: 'a0', b: 'b1' }
16
+ * @example
17
+ * zipObject(['a', 'b'], 'default'); // 返回 { a: 'default', b: 'default' }
18
+ * @example
19
+ * zipObject([], [1, 2]); // 返回 {}(空键数组)
20
+ * @example
21
+ * zipObject(['x', 'y'], [10]); // 返回 { x: 10, y: undefined }(值数组长度不足)
22
+ * **Note:** 如果值数组长度小于键数组,多余的键值为 undefined
23
+ * **Note:** 如果值生成函数抛出错误,会传播该错误
24
+ * **Note:** 空键数组返回空对象
8
25
  */
9
26
  export declare function zipObject<K extends string | number | symbol, V>(keys: K[], values: V | ((key: K, idx: number) => V) | V[]): Record<K, V>;
10
27
  //# sourceMappingURL=zipObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zipObject.d.ts","sourceRoot":"","sources":["../../src/object/zipObject.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAC7D,IAAI,EAAE,CAAC,EAAE,EACT,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAiBd"}
1
+ {"version":3,"file":"zipObject.d.ts","sourceRoot":"","sources":["../../src/object/zipObject.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAC7D,IAAI,EAAE,CAAC,EAAE,EACT,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAiBd"}
@@ -1,5 +1,18 @@
1
1
  /**
2
- * 是否是浏览器
2
+ * 检测当前运行环境是否为浏览器环境
3
+ * 通过检查全局 window 对象是否存在来判断
4
+ *
5
+ * **Constant:** {boolean} IS_BROWSER - 是否运行在浏览器环境中
6
+ * @example
7
+ * if (IS_BROWSER) {
8
+ * // 浏览器环境下的代码
9
+ * console.log('在浏览器中运行');
10
+ * } else {
11
+ * // Node.js 或其他环境
12
+ * console.log('不在浏览器中运行');
13
+ * }
14
+ * **Note:** 该检测基于 window 对象的存在性,在某些特殊环境中可能不准确
15
+ * **Note:** 在 SSR (服务端渲染) 环境中,此值在服务端为 false,在客户端为 true
3
16
  */
4
17
  export declare const IS_BROWSER: boolean;
5
18
  //# sourceMappingURL=is-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-browser.d.ts","sourceRoot":"","sources":["../../src/platform/is-browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,OAAoC,CAAC"}
1
+ {"version":3,"file":"is-browser.d.ts","sourceRoot":"","sources":["../../src/platform/is-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,EAAE,OAAoC,CAAC"}
@@ -1,2 +1,19 @@
1
- export declare const randomArrayItem: (array: any[]) => any;
1
+ /**
2
+ * 从数组中随机选择一个元素
3
+ * 使用 Math.random() 生成随机索引,返回对应位置的元素
4
+ * @template T - 数组元素的类型
5
+ * @param array - 要从中选择元素的数组
6
+ * @returns 随机选择的数组元素
7
+ * @throws {TypeError} 当输入不是数组时抛出错误
8
+ * @example
9
+ * randomArrayItem([1, 2, 3, 4, 5]); // 返回数组中的随机一个数字
10
+ * @example
11
+ * randomArrayItem(['a', 'b', 'c']); // 返回 'a'、'b' 或 'c' 中的一个
12
+ * @example
13
+ * randomArrayItem([]); // 返回 undefined(空数组)
14
+ * **Note:** 使用 Math.floor() 和 Math.random() 实现随机选择
15
+ * **Note:** 对于空数组返回 undefined
16
+ * **Note:** 每个元素被选择的概率相等
17
+ */
18
+ export declare const randomArrayItem: <T>(array: T[]) => T;
2
19
  //# sourceMappingURL=randomArrayItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randomArrayItem.d.ts","sourceRoot":"","sources":["../../src/random/randomArrayItem.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,GAAI,OAAO,GAAG,EAAE,QAAoD,CAAC"}
1
+ {"version":3,"file":"randomArrayItem.d.ts","sourceRoot":"","sources":["../../src/random/randomArrayItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,CAAoD,CAAC"}
@@ -1,2 +1,18 @@
1
+ /**
2
+ * 生成指定范围内的随机浮点数
3
+ * 使用 Math.random() 生成 0 到 1 之间的随机数,然后映射到指定范围
4
+ * @param min - 最小值(包含),默认为 Number.MIN_SAFE_INTEGER
5
+ * @param max - 最大值(不包含),默认为 Number.MAX_SAFE_INTEGER
6
+ * @returns 指定范围内的随机浮点数
7
+ * @example
8
+ * randomFloat(0, 10); // 返回 0 到 10 之间的随机浮点数,如 3.14159
9
+ * @example
10
+ * randomFloat(-5, 5); // 返回 -5 到 5 之间的随机浮点数
11
+ * @example
12
+ * randomFloat(); // 返回任意安全的浮点数
13
+ * **Note:** 结果范围是 [min, max),即包含最小值但不包含最大值
14
+ * **Note:** 使用 Math.random(),分布是均匀的
15
+ * **Note:** 如果 min >= max,返回结果可能不符合预期
16
+ */
1
17
  export declare const randomFloat: (min?: number, max?: number) => number;
2
18
  //# sourceMappingURL=randomFloat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randomFloat.d.ts","sourceRoot":"","sources":["../../src/random/randomFloat.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,GAAI,MAAK,MAAgC,EAAE,MAAK,MAAgC,WACrE,CAAC"}
1
+ {"version":3,"file":"randomFloat.d.ts","sourceRoot":"","sources":["../../src/random/randomFloat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,GAAI,MAAK,MAAgC,EAAE,MAAK,MAAgC,WACrE,CAAC"}
@@ -1,8 +1,18 @@
1
1
  /**
2
- * 随机整数
3
- *
4
- * @param [min=Number.MIN_SAFE_INTEGER]
5
- * @param [max=Number.MAX_SAFE_INTEGER]
2
+ * 生成指定范围内的随机整数
3
+ * 使用 Math.random() 生成随机数,然后使用 Math.floor() 向下取整
4
+ * @param min - 最小值(包含),默认为 Number.MIN_SAFE_INTEGER
5
+ * @param max - 最大值(包含),默认为 Number.MAX_SAFE_INTEGER
6
+ * @returns 指定范围内的随机整数
7
+ * @example
8
+ * randomInt(1, 10); // 返回 1 到 10 之间的随机整数,如 5
9
+ * @example
10
+ * randomInt(0, 1); // 返回 0 或 1
11
+ * @example
12
+ * randomInt(-5, 5); // 返回 -5 到 5 之间的随机整数
13
+ * **Note:** 结果范围是 [min, max],即包含最小值和最大值
14
+ * **Note:** 使用 Math.floor() 确保返回整数
15
+ * **Note:** 如果 min > max,返回结果可能不符合预期
6
16
  */
7
17
  export declare function randomInt(min?: number, max?: number): number;
8
18
  //# sourceMappingURL=randomInt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randomInt.d.ts","sourceRoot":"","sources":["../../src/random/randomInt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAgC,EAAE,GAAG,GAAE,MAAgC,UAErG"}
1
+ {"version":3,"file":"randomInt.d.ts","sourceRoot":"","sources":["../../src/random/randomInt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAgC,EAAE,GAAG,GAAE,MAAgC,UAErG"}
@@ -6,5 +6,21 @@ export declare const UPPER_LETTERS: string;
6
6
  export declare const LETTERS: string;
7
7
  export declare const SAFE_URL = "_-";
8
8
  export declare const URL_ALL: string;
9
+ /**
10
+ * 生成指定长度和字符集的随机字符串
11
+ * 使用 Web Crypto API 的 crypto.getRandomValues() 生成加密安全的随机数
12
+ * @param size - 字符串长度,默认 16
13
+ * @param alphabet - 可选字符集,默认包含数字、大小写字母和 URL 安全字符
14
+ * @returns 指定长度和字符集的随机字符串
15
+ * @example
16
+ * randomString(8); // 返回 8 位随机字符串,如 'aB3kL9mP'
17
+ * @example
18
+ * randomString(4, '0123456789'); // 返回 4 位数字字符串,如 '1847'
19
+ * @example
20
+ * randomString(12, 'abcdef'); // 返回 12 位小写字母字符串,如 'abcdefabcdef'
21
+ * **Note:** 使用 crypto.getRandomValues() 生成加密安全的随机数
22
+ * **Note:** 通过位运算优化性能,避免模运算
23
+ * **Note:** 默认字符集包含 URL 安全的字符,适合用作 ID 或令牌
24
+ */
9
25
  export declare const randomString: (size?: number, alphabet?: string) => string;
10
26
  //# sourceMappingURL=randomString.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"randomString.d.ts","sourceRoot":"","sources":["../../src/random/randomString.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,OAAO,QAA6B,CAAC;AAGlD,eAAO,MAAM,aAAa,+BAA+B,CAAC;AAC1D,eAAO,MAAM,aAAa,QAA8B,CAAC;AACzD,eAAO,MAAM,OAAO,QAAgC,CAAC;AAGrD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,QAA+B,CAAC;AAEpD,eAAO,MAAM,YAAY,GAAI,OAAM,MAAW,EAAE,WAAU,MAAgB,WAMzE,CAAC"}
1
+ {"version":3,"file":"randomString.d.ts","sourceRoot":"","sources":["../../src/random/randomString.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,OAAO,QAA6B,CAAC;AAGlD,eAAO,MAAM,aAAa,+BAA+B,CAAC;AAC1D,eAAO,MAAM,aAAa,QAA8B,CAAC;AACzD,eAAO,MAAM,OAAO,QAAgC,CAAC;AAGrD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,QAA+B,CAAC;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,YAAY,GAAI,OAAM,MAAW,EAAE,WAAU,MAAgB,WAMzE,CAAC"}