@kikiutils/shared 9.0.0

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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +142 -0
  3. package/dist/consola.cjs +35 -0
  4. package/dist/consola.cjs.map +1 -0
  5. package/dist/consola.d.ts +24 -0
  6. package/dist/consola.d.ts.map +1 -0
  7. package/dist/consola.mjs +32 -0
  8. package/dist/consola.mjs.map +1 -0
  9. package/dist/crypto-hash.cjs +60 -0
  10. package/dist/crypto-hash.cjs.map +1 -0
  11. package/dist/crypto-hash.d.ts +26 -0
  12. package/dist/crypto-hash.d.ts.map +1 -0
  13. package/dist/crypto-hash.mjs +49 -0
  14. package/dist/crypto-hash.mjs.map +1 -0
  15. package/dist/datetime.cjs +131 -0
  16. package/dist/datetime.cjs.map +1 -0
  17. package/dist/datetime.d.ts +79 -0
  18. package/dist/datetime.d.ts.map +1 -0
  19. package/dist/datetime.mjs +127 -0
  20. package/dist/datetime.mjs.map +1 -0
  21. package/dist/enum.cjs +65 -0
  22. package/dist/enum.cjs.map +1 -0
  23. package/dist/enum.d.ts +43 -0
  24. package/dist/enum.d.ts.map +1 -0
  25. package/dist/enum.mjs +62 -0
  26. package/dist/enum.mjs.map +1 -0
  27. package/dist/env.cjs +54 -0
  28. package/dist/env.cjs.map +1 -0
  29. package/dist/env.d.ts +40 -0
  30. package/dist/env.d.ts.map +1 -0
  31. package/dist/env.mjs +51 -0
  32. package/dist/env.mjs.map +1 -0
  33. package/dist/general.cjs +8 -0
  34. package/dist/general.cjs.map +1 -0
  35. package/dist/general.d.ts +27 -0
  36. package/dist/general.d.ts.map +1 -0
  37. package/dist/general.mjs +6 -0
  38. package/dist/general.mjs.map +1 -0
  39. package/dist/hash.cjs +27 -0
  40. package/dist/hash.cjs.map +1 -0
  41. package/dist/hash.d.ts +17 -0
  42. package/dist/hash.d.ts.map +1 -0
  43. package/dist/hash.mjs +22 -0
  44. package/dist/hash.mjs.map +1 -0
  45. package/dist/math.cjs +37 -0
  46. package/dist/math.cjs.map +1 -0
  47. package/dist/math.d.ts +43 -0
  48. package/dist/math.d.ts.map +1 -0
  49. package/dist/math.mjs +35 -0
  50. package/dist/math.mjs.map +1 -0
  51. package/dist/number.cjs +31 -0
  52. package/dist/number.cjs.map +1 -0
  53. package/dist/number.d.ts +20 -0
  54. package/dist/number.d.ts.map +1 -0
  55. package/dist/number.mjs +29 -0
  56. package/dist/number.mjs.map +1 -0
  57. package/dist/pino.cjs +42 -0
  58. package/dist/pino.cjs.map +1 -0
  59. package/dist/pino.d.ts +24 -0
  60. package/dist/pino.d.ts.map +1 -0
  61. package/dist/pino.mjs +39 -0
  62. package/dist/pino.mjs.map +1 -0
  63. package/dist/random.cjs +30 -0
  64. package/dist/random.cjs.map +1 -0
  65. package/dist/random.d.ts +21 -0
  66. package/dist/random.d.ts.map +1 -0
  67. package/dist/random.mjs +28 -0
  68. package/dist/random.mjs.map +1 -0
  69. package/dist/string.cjs +44 -0
  70. package/dist/string.cjs.map +1 -0
  71. package/dist/string.d.ts +21 -0
  72. package/dist/string.d.ts.map +1 -0
  73. package/dist/string.mjs +42 -0
  74. package/dist/string.mjs.map +1 -0
  75. package/package.json +82 -0
  76. package/src/consola.ts +27 -0
  77. package/src/crypto-hash.ts +60 -0
  78. package/src/datetime.ts +154 -0
  79. package/src/enum.ts +60 -0
  80. package/src/env.ts +49 -0
  81. package/src/general.ts +29 -0
  82. package/src/hash.ts +25 -0
  83. package/src/math.ts +56 -0
  84. package/src/number.ts +29 -0
  85. package/src/pino.ts +37 -0
  86. package/src/random.ts +31 -0
  87. package/src/string.ts +49 -0
package/src/random.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Generates a value using a provided generator function, where the input length
3
+ * is determined by two levels of nested random ranges:
4
+ *
5
+ * 1. First, a random number (`innerMin`) is chosen between `minMin` and `minMax`.
6
+ * 2. Then, a final length is chosen between `Math.max(innerMin, maxMin)` and `maxMax`.
7
+ * 3. The generator is called with the final length and its result is returned.
8
+ *
9
+ * This function supports any return type by using a generic type parameter.
10
+ *
11
+ * @typeParam T - The return type of the generator function.
12
+ *
13
+ * @param generator - A function that accepts a length and returns a value of type T.
14
+ * @param minMin - Lower bound of the first random range.
15
+ * @param minMax - Upper bound of the first random range.
16
+ * @param maxMin - Lower bound of the second random range.
17
+ * @param maxMax - Upper bound of the second random range.
18
+ * @returns The result of the generator function using the computed final length.
19
+ */
20
+ export function generateWithNestedRandomLength<T = string>(
21
+ generator: (length: number) => T,
22
+ minMin: number,
23
+ minMax: number,
24
+ maxMin: number,
25
+ maxMax: number,
26
+ ) {
27
+ const random = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min;
28
+ const innerMin = random(minMin, minMax);
29
+ const finalLength = random(Math.max(innerMin, maxMin), maxMax);
30
+ return generator(finalLength);
31
+ }
package/src/string.ts ADDED
@@ -0,0 +1,49 @@
1
+ export type RandomStringMode =
2
+ | 'alphabetic'
3
+ | 'alphanumeric'
4
+ | 'lowercase'
5
+ | 'lowercase-numeric'
6
+ | 'numeric'
7
+ | 'uppercase'
8
+ | 'uppercase-numeric';
9
+
10
+ const DIGITS = '0123456789';
11
+ const LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';
12
+ const UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
13
+ const CHARSETS: Record<RandomStringMode, string> = {
14
+ 'alphabetic': LOWERCASE + UPPERCASE,
15
+ 'alphanumeric': DIGITS + LOWERCASE + UPPERCASE,
16
+ 'lowercase': LOWERCASE,
17
+ 'lowercase-numeric': DIGITS + LOWERCASE,
18
+ 'numeric': DIGITS,
19
+ 'uppercase': UPPERCASE,
20
+ 'uppercase-numeric': DIGITS + UPPERCASE,
21
+ };
22
+
23
+ /**
24
+ * Generates a random string of a given length using a specified character set.
25
+ *
26
+ * @param {number} length - The length of the string to generate. Must be a positive integer.
27
+ * @param {RandomStringMode} [mode] - The character set to use.
28
+ * @returns {string} The generated random string.
29
+ *
30
+ * @throws {Error} If the length is not a positive integer or the mode is unsupported.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * import { randomString } from '@kikiutils/shared/string';
35
+ *
36
+ * console.log(randomString(8)); // e.g. 'aZbXwTyQ' (alphabetic)
37
+ * console.log(randomString(6, 'numeric')); // e.g. '402398'
38
+ * console.log(randomString(10, 'alphanumeric')); // e.g. 'a9Z4pQ8xY2'
39
+ * ```
40
+ */
41
+ export function randomString(length: number, mode: RandomStringMode = 'alphabetic') {
42
+ if (!Number.isInteger(length) || length <= 0) {
43
+ throw new Error(`Invalid length: ${length}. Must be a positive integer.`);
44
+ }
45
+
46
+ const charset = CHARSETS[mode];
47
+ if (!charset) throw new Error(`Unsupported mode: ${mode}`);
48
+ return Array.from({ length }, () => charset[Math.floor(Math.random() * charset.length)]).join('');
49
+ }