@ts-fns/stdlib 0.1.0 → 0.2.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 (135) hide show
  1. package/dist/array/index.cjs +230 -33
  2. package/dist/array/index.cjs.map +1 -1
  3. package/dist/array/index.d.cts +434 -32
  4. package/dist/array/index.d.cts.map +1 -1
  5. package/dist/array/index.d.mts +434 -32
  6. package/dist/array/index.d.mts.map +1 -1
  7. package/dist/array/index.mjs +216 -18
  8. package/dist/array/index.mjs.map +1 -1
  9. package/dist/function/index.cjs +4 -2
  10. package/dist/function/index.d.cts +128 -13
  11. package/dist/function/index.d.cts.map +1 -1
  12. package/dist/function/index.d.mts +128 -13
  13. package/dist/function/index.d.mts.map +1 -1
  14. package/dist/function/index.mjs +3 -3
  15. package/dist/{function-DnI2v0p3.mjs → function-CYHPhQCQ.mjs} +84 -6
  16. package/dist/function-CYHPhQCQ.mjs.map +1 -0
  17. package/dist/{function-CB82a2GS.cjs → function-DYPifnmg.cjs} +95 -5
  18. package/dist/function-DYPifnmg.cjs.map +1 -0
  19. package/dist/{get-yrs1Kqho.cjs → get-1kqkxPFX.cjs} +20 -8
  20. package/dist/get-1kqkxPFX.cjs.map +1 -0
  21. package/dist/{get-CWL_cu6G.mjs → get-Dv6ejLZg.mjs} +21 -3
  22. package/dist/get-Dv6ejLZg.mjs.map +1 -0
  23. package/dist/guard/index.cjs +5 -12
  24. package/dist/guard/index.cjs.map +1 -1
  25. package/dist/guard/index.d.cts +18 -17
  26. package/dist/guard/index.d.cts.map +1 -1
  27. package/dist/guard/index.d.mts +18 -17
  28. package/dist/guard/index.d.mts.map +1 -1
  29. package/dist/guard/index.mjs +4 -12
  30. package/dist/guard/index.mjs.map +1 -1
  31. package/dist/index-MbdqaUt1.d.cts +54 -0
  32. package/dist/index-MbdqaUt1.d.cts.map +1 -0
  33. package/dist/index-k-paNOu4.d.mts +54 -0
  34. package/dist/index-k-paNOu4.d.mts.map +1 -0
  35. package/dist/iterator/index.cjs +72 -26
  36. package/dist/iterator/index.cjs.map +1 -1
  37. package/dist/iterator/index.d.cts +157 -5
  38. package/dist/iterator/index.d.cts.map +1 -1
  39. package/dist/iterator/index.d.mts +157 -5
  40. package/dist/iterator/index.d.mts.map +1 -1
  41. package/dist/iterator/index.mjs +66 -24
  42. package/dist/iterator/index.mjs.map +1 -1
  43. package/dist/lens/index.cjs +3 -3
  44. package/dist/lens/index.cjs.map +1 -1
  45. package/dist/lens/index.mjs +3 -3
  46. package/dist/lens/index.mjs.map +1 -1
  47. package/dist/map/index.cjs +88 -1
  48. package/dist/map/index.cjs.map +1 -1
  49. package/dist/map/index.d.cts +130 -2
  50. package/dist/map/index.d.cts.map +1 -1
  51. package/dist/map/index.d.mts +130 -2
  52. package/dist/map/index.d.mts.map +1 -1
  53. package/dist/map/index.mjs +86 -2
  54. package/dist/map/index.mjs.map +1 -1
  55. package/dist/number/index.cjs +91 -18
  56. package/dist/number/index.cjs.map +1 -1
  57. package/dist/number/index.d.cts +134 -19
  58. package/dist/number/index.d.cts.map +1 -1
  59. package/dist/number/index.d.mts +134 -19
  60. package/dist/number/index.d.mts.map +1 -1
  61. package/dist/number/index.mjs +91 -18
  62. package/dist/number/index.mjs.map +1 -1
  63. package/dist/object/index.cjs +111 -7
  64. package/dist/object/index.cjs.map +1 -1
  65. package/dist/object/index.d.cts +186 -26
  66. package/dist/object/index.d.cts.map +1 -1
  67. package/dist/object/index.d.mts +186 -26
  68. package/dist/object/index.d.mts.map +1 -1
  69. package/dist/object/index.mjs +111 -7
  70. package/dist/object/index.mjs.map +1 -1
  71. package/dist/orNull-CJNrTjhQ.cjs +45 -0
  72. package/dist/orNull-CJNrTjhQ.cjs.map +1 -0
  73. package/dist/orNull-EeXiCxD4.mjs +34 -0
  74. package/dist/orNull-EeXiCxD4.mjs.map +1 -0
  75. package/dist/order/index.cjs +22 -1
  76. package/dist/order/index.cjs.map +1 -1
  77. package/dist/order/index.d.cts +2 -2
  78. package/dist/order/index.d.mts +2 -2
  79. package/dist/order/index.mjs +22 -1
  80. package/dist/order/index.mjs.map +1 -1
  81. package/dist/{order.constants-BWSCg3C7.d.cts → order.constants-DpGY-EDp.d.cts} +4 -1
  82. package/dist/order.constants-DpGY-EDp.d.cts.map +1 -0
  83. package/dist/{order.constants-BWSCg3C7.d.mts → order.constants-DpGY-EDp.d.mts} +4 -1
  84. package/dist/order.constants-DpGY-EDp.d.mts.map +1 -0
  85. package/dist/purry-DXnhXie9.mjs +22 -0
  86. package/dist/purry-DXnhXie9.mjs.map +1 -0
  87. package/dist/purry-Dqp_F64t.cjs +27 -0
  88. package/dist/purry-Dqp_F64t.cjs.map +1 -0
  89. package/dist/set/index.cjs +59 -1
  90. package/dist/set/index.cjs.map +1 -1
  91. package/dist/set/index.d.cts +151 -2
  92. package/dist/set/index.d.cts.map +1 -1
  93. package/dist/set/index.d.mts +151 -2
  94. package/dist/set/index.d.mts.map +1 -1
  95. package/dist/set/index.mjs +59 -2
  96. package/dist/set/index.mjs.map +1 -1
  97. package/dist/string/index.cjs +289 -15
  98. package/dist/string/index.cjs.map +1 -1
  99. package/dist/string/index.d.cts +406 -1
  100. package/dist/string/index.d.cts.map +1 -1
  101. package/dist/string/index.d.mts +406 -1
  102. package/dist/string/index.d.mts.map +1 -1
  103. package/dist/string/index.mjs +271 -4
  104. package/dist/string/index.mjs.map +1 -1
  105. package/dist/tuple/index.cjs +20 -21
  106. package/dist/tuple/index.cjs.map +1 -1
  107. package/dist/tuple/index.d.cts +27 -58
  108. package/dist/tuple/index.d.cts.map +1 -1
  109. package/dist/tuple/index.d.mts +27 -58
  110. package/dist/tuple/index.d.mts.map +1 -1
  111. package/dist/tuple/index.mjs +20 -22
  112. package/dist/tuple/index.mjs.map +1 -1
  113. package/package.json +5 -6
  114. package/dist/function-CB82a2GS.cjs.map +0 -1
  115. package/dist/function-DnI2v0p3.mjs.map +0 -1
  116. package/dist/get-CWL_cu6G.mjs.map +0 -1
  117. package/dist/get-yrs1Kqho.cjs.map +0 -1
  118. package/dist/index-BJlKyBJH.d.cts +0 -18
  119. package/dist/index-BJlKyBJH.d.cts.map +0 -1
  120. package/dist/index-DGrnGMDt.d.mts +0 -18
  121. package/dist/index-DGrnGMDt.d.mts.map +0 -1
  122. package/dist/isNotNil-DrF-ohem.cjs +0 -28
  123. package/dist/isNotNil-DrF-ohem.cjs.map +0 -1
  124. package/dist/isNotNil-R5f1hC53.mjs +0 -23
  125. package/dist/isNotNil-R5f1hC53.mjs.map +0 -1
  126. package/dist/orThrow-V91Jw2lF.mjs +0 -15
  127. package/dist/orThrow-V91Jw2lF.mjs.map +0 -1
  128. package/dist/orThrow-ejzcQYAI.cjs +0 -20
  129. package/dist/orThrow-ejzcQYAI.cjs.map +0 -1
  130. package/dist/order.constants-BWSCg3C7.d.cts.map +0 -1
  131. package/dist/order.constants-BWSCg3C7.d.mts.map +0 -1
  132. package/dist/purry-B2_0DGLV.cjs +0 -28
  133. package/dist/purry-B2_0DGLV.cjs.map +0 -1
  134. package/dist/purry-BOWmqwDB.mjs +0 -23
  135. package/dist/purry-BOWmqwDB.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_orThrow = require("../orThrow-ejzcQYAI.cjs");
3
- const require_purry = require("../purry-B2_0DGLV.cjs");
2
+ const require_function = require("../function-DYPifnmg.cjs");
3
+ const require_purry = require("../purry-Dqp_F64t.cjs");
4
4
  const require_errors = require("../errors-O-d_Vemi.cjs");
5
- require("../function-CB82a2GS.cjs");
5
+ require("../order/index.cjs");
6
6
  //#region src/string/at.ts
7
7
  function atImplementation(str, index) {
8
8
  if (index >= str.length || index < -str.length) return /* @__PURE__ */ new RangeError(`Str.at() :: Invalid index : ${index}`);
@@ -12,8 +12,17 @@ function at(...args) {
12
12
  return require_purry.purry(atImplementation, args);
13
13
  }
14
14
  function atAssert(...args) {
15
- return require_purry.purry(require_orThrow.orThrow(atImplementation), args);
16
- }
15
+ return require_purry.purry(require_function.orThrow(atImplementation), args);
16
+ }
17
+ /**
18
+ * Like `at`, but throws when the index is out of bounds.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * at.assert('hello', 1); // 'e'
23
+ * at.assert('hello', 10); // throws RangeError
24
+ * ```
25
+ */
17
26
  at.assert = atAssert;
18
27
  //#endregion
19
28
  //#region src/string/charCodeAt.ts
@@ -26,8 +35,17 @@ function charCodeAt(...args) {
26
35
  return require_purry.purry(charCodeAtImplementation, args);
27
36
  }
28
37
  function charCodeAtAssert(...args) {
29
- return require_purry.purry(require_orThrow.orThrow(charCodeAtImplementation), args);
30
- }
38
+ return require_purry.purry(require_function.orThrow(charCodeAtImplementation), args);
39
+ }
40
+ /**
41
+ * Like `charCodeAt`, but throws when the index is out of bounds.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * charCodeAt.assert('hello', 0); // 104
46
+ * charCodeAt.assert('hello', 10); // throws RangeError
47
+ * ```
48
+ */
31
49
  charCodeAt.assert = charCodeAtAssert;
32
50
  //#endregion
33
51
  //#region src/string/codePointAt.ts
@@ -40,11 +58,45 @@ function codePointAt(...args) {
40
58
  return require_purry.purry(codePointAtImplementation, args);
41
59
  }
42
60
  function codePointAtAssert(...args) {
43
- return require_purry.purry(require_orThrow.orThrow(codePointAtImplementation), args);
44
- }
61
+ return require_purry.purry(require_function.orThrow(codePointAtImplementation), args);
62
+ }
63
+ /**
64
+ * Like `codePointAt`, but throws when the index is out of bounds.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * codePointAt.assert('hello', 0); // 104
69
+ * codePointAt.assert('hello', 10); // throws RangeError
70
+ * ```
71
+ */
45
72
  codePointAt.assert = codePointAtAssert;
46
73
  //#endregion
74
+ //#region src/string/compare.ts
75
+ /**
76
+ * Compares two strings lexicographically and returns their ordering.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * compare('a', 'b'); // -1
81
+ * compare('b', 'b'); // 0
82
+ * compare('c', 'b'); // 1
83
+ * ```
84
+ */
85
+ function compare(left, right) {
86
+ if (left < right) return -1;
87
+ if (left > right) return 1;
88
+ return 0;
89
+ }
90
+ //#endregion
47
91
  //#region src/string/concat.ts
92
+ /**
93
+ * Concatenates two strings.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * concat('hello', ' world'); // throws NotYetImplementedError
98
+ * ```
99
+ */
48
100
  function concat(str, other) {
49
101
  throw new require_errors.NotYetImplementedError("Str.concat not yet implemented");
50
102
  }
@@ -87,8 +139,17 @@ function indexOf(...args) {
87
139
  return require_purry.purry(indexOfImplementation, args);
88
140
  }
89
141
  function indexOfAssert(...args) {
90
- return require_purry.purry(require_orThrow.orThrow(indexOfImplementation), args);
91
- }
142
+ return require_purry.purry(require_function.orThrow(indexOfImplementation), args);
143
+ }
144
+ /**
145
+ * Like `indexOf`, but throws when the search string is absent.
146
+ *
147
+ * @example
148
+ * ```ts
149
+ * indexOf.assert('hello world', 'world'); // 6
150
+ * indexOf.assert('hello world', 'xyz'); // throws NotFoundError
151
+ * ```
152
+ */
92
153
  indexOf.assert = indexOfAssert;
93
154
  function indexOfPositionImplementation(str, search, position) {
94
155
  return str.indexOf(search, position);
@@ -97,21 +158,127 @@ function indexOfPosition(...args) {
97
158
  return require_purry.purry(indexOfPositionImplementation, args);
98
159
  }
99
160
  function indexOfPositionAssert(...args) {
100
- return require_purry.purry(require_orThrow.orThrow(indexOfPositionImplementation), args);
101
- }
161
+ return require_purry.purry(require_function.orThrow(indexOfPositionImplementation), args);
162
+ }
163
+ /**
164
+ * Like `indexOfPosition`, but throws when the result is an error.
165
+ *
166
+ * @example
167
+ * ```ts
168
+ * indexOfPosition.assert('hello world', 'o', 5); // 7
169
+ * indexOfPosition.assert('hello world', 'o', 8); // throws
170
+ * ```
171
+ */
102
172
  indexOfPosition.assert = indexOfPositionAssert;
103
173
  //#endregion
174
+ //#region src/string/isEmpty.ts
175
+ /**
176
+ * Returns whether a string has no characters.
177
+ *
178
+ * @example
179
+ * ```ts
180
+ * isEmpty(''); // true
181
+ * isEmpty('hello'); // false
182
+ * ```
183
+ */
184
+ function isEmpty(str) {
185
+ return str.length === 0;
186
+ }
187
+ //#endregion
104
188
  //#region src/string/isWellFormed.ts
189
+ /**
190
+ * Returns whether a string is a well-formed Unicode string with no lone surrogates.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * isWellFormed('hello'); // true
195
+ * isWellFormed('\uD800'); // false
196
+ * ```
197
+ */
105
198
  function isWellFormed(str) {
106
199
  return str.isWellFormed();
107
200
  }
108
201
  //#endregion
202
+ //#region src/string/lastIndexOf.ts
203
+ function lastIndexOfImplementation(str, search) {
204
+ const result = str.lastIndexOf(search);
205
+ if (result === -1) return new require_errors.NotFoundError(`Str.lastIndexOf() :: "${search}" not found in "${str}"`);
206
+ return result;
207
+ }
208
+ function lastIndexOf(...args) {
209
+ return require_purry.purry(lastIndexOfImplementation, args);
210
+ }
211
+ function lastIndexOfAssert(...args) {
212
+ return require_purry.purry(require_function.orThrow(lastIndexOfImplementation), args);
213
+ }
214
+ /**
215
+ * Like `lastIndexOf`, but throws when the search string is absent.
216
+ *
217
+ * @example
218
+ * ```ts
219
+ * lastIndexOf.assert('hello world', 'o'); // 7
220
+ * lastIndexOf.assert('hello world', 'xyz'); // throws NotFoundError
221
+ * ```
222
+ */
223
+ lastIndexOf.assert = lastIndexOfAssert;
224
+ function lastIndexOfPositionImplementation(str, search, position) {
225
+ const result = str.lastIndexOf(search, position);
226
+ if (result === -1) return new require_errors.NotFoundError(`Str.lastIndexOf() :: "${search}" not found in "${str}" at position ${position}`);
227
+ return result;
228
+ }
229
+ function lastIndexOfPosition(...args) {
230
+ return require_purry.purry(lastIndexOfPositionImplementation, args);
231
+ }
232
+ function lastIndexOfPositionAssert(...args) {
233
+ return require_purry.purry(require_function.orThrow(lastIndexOfPositionImplementation), args);
234
+ }
235
+ /**
236
+ * Like `lastIndexOfPosition`, but throws when the search string is absent.
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * lastIndexOfPosition.assert('hello world', 'o', 6); // 4
241
+ * lastIndexOfPosition.assert('hello world', 'o', 3); // throws NotFoundError
242
+ * ```
243
+ */
244
+ lastIndexOfPosition.assert = lastIndexOfPositionAssert;
245
+ //#endregion
246
+ //#region src/string/length.ts
247
+ /**
248
+ * Returns the length of a string in UTF-16 code units.
249
+ *
250
+ * @example
251
+ * ```ts
252
+ * length('hello'); // 5
253
+ * length(''); // 0
254
+ * ```
255
+ */
256
+ function length(str) {
257
+ return str.length;
258
+ }
259
+ //#endregion
109
260
  //#region src/string/localeCompare.ts
261
+ /**
262
+ * Compares two strings using locale-aware rules and returns a sort order number.
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * localeCompare('a', 'b'); // throws NotYetImplementedError
267
+ * ```
268
+ */
110
269
  function localeCompare(left, right) {
111
270
  throw new require_errors.NotYetImplementedError("Str.localeCompare not yet implemented");
112
271
  }
113
272
  //#endregion
114
273
  //#region src/string/normalize.ts
274
+ /**
275
+ * Returns a Unicode-normalized string using NFC form.
276
+ *
277
+ * @example
278
+ * ```ts
279
+ * normalize('café'); // 'café'
280
+ * ```
281
+ */
115
282
  function normalize(str) {
116
283
  return str.normalize();
117
284
  }
@@ -147,9 +314,25 @@ function repeat(...args) {
147
314
  }
148
315
  //#endregion
149
316
  //#region src/string/replace.ts
317
+ /**
318
+ * Replaces the first match of a search value in a string.
319
+ *
320
+ * @example
321
+ * ```ts
322
+ * replace('hello world', 'world', 'there'); // throws NotYetImplementedError
323
+ * ```
324
+ */
150
325
  function replace(str, searchValue, replaceValue) {
151
326
  throw new require_errors.NotYetImplementedError("Str.replace not yet implemented");
152
327
  }
328
+ /**
329
+ * Replaces all matches of a search value in a string.
330
+ *
331
+ * @example
332
+ * ```ts
333
+ * replaceAll('hello world', 'l', 'L'); // throws NotYetImplementedError
334
+ * ```
335
+ */
153
336
  function replaceAll(str, searchValue, replacement) {
154
337
  throw new require_errors.NotYetImplementedError("Str.replace not yet implemented");
155
338
  }
@@ -164,8 +347,17 @@ function search(...args) {
164
347
  return require_purry.purry(searchImplementation, args);
165
348
  }
166
349
  function searchAssert(...args) {
167
- return require_purry.purry(require_orThrow.orThrow(searchImplementation), args);
168
- }
350
+ return require_purry.purry(require_function.orThrow(searchImplementation), args);
351
+ }
352
+ /**
353
+ * Like `search`, but throws when there is no match.
354
+ *
355
+ * @example
356
+ * ```ts
357
+ * search.assert('hello world', /world/); // 6
358
+ * search.assert('hello world', /xyz/); // throws NotFoundError
359
+ * ```
360
+ */
169
361
  search.assert = searchAssert;
170
362
  //#endregion
171
363
  //#region src/string/slice.ts
@@ -224,28 +416,103 @@ function substringEnd(...args) {
224
416
  return require_purry.purry(substringEndImplementation, args);
225
417
  }
226
418
  //#endregion
419
+ //#region src/string/toLocaleLowerCase.ts
420
+ /**
421
+ * Returns a string with all characters converted to locale-aware lowercase.
422
+ *
423
+ * @example
424
+ * ```ts
425
+ * toLocaleLowerCase('STRASSE'); // throws NotYetImplementedError
426
+ * ```
427
+ */
428
+ function toLocaleLowerCase(str) {
429
+ throw new require_errors.NotYetImplementedError("Str.toLocaleLowerCase not yet implemented");
430
+ }
431
+ //#endregion
432
+ //#region src/string/toLocaleUpperCase.ts
433
+ /**
434
+ * Returns a string with all characters converted to locale-aware uppercase.
435
+ *
436
+ * @example
437
+ * ```ts
438
+ * toLocaleUpperCase('straße'); // throws NotYetImplementedError
439
+ * ```
440
+ */
441
+ function toLocaleUpperCase(str) {
442
+ throw new require_errors.NotYetImplementedError("Str.toLocaleUpperCase not yet implemented");
443
+ }
444
+ //#endregion
227
445
  //#region src/string/toLowerCase.ts
446
+ /**
447
+ * Returns a string with all characters converted to lowercase.
448
+ *
449
+ * @example
450
+ * ```ts
451
+ * toLowerCase('HELLO'); // 'hello'
452
+ * ```
453
+ */
228
454
  function toLowerCase(str) {
229
455
  return str.toLowerCase();
230
456
  }
231
457
  //#endregion
232
458
  //#region src/string/toUpperCase.ts
459
+ /**
460
+ * Returns a string with all characters converted to uppercase.
461
+ *
462
+ * @example
463
+ * ```ts
464
+ * toUpperCase('hello'); // 'HELLO'
465
+ * ```
466
+ */
233
467
  function toUpperCase(str) {
234
468
  return str.toUpperCase();
235
469
  }
236
470
  //#endregion
237
471
  //#region src/string/toWellFormed.ts
472
+ /**
473
+ * Returns a well-formed Unicode string by replacing lone surrogates with replacement characters.
474
+ *
475
+ * @example
476
+ * ```ts
477
+ * toWellFormed('\uD800'); // '\uFFFD'
478
+ * toWellFormed('hello'); // 'hello'
479
+ * ```
480
+ */
238
481
  function toWellFormed(str) {
239
482
  return str.toWellFormed();
240
483
  }
241
484
  //#endregion
242
485
  //#region src/string/trim.ts
486
+ /**
487
+ * Removes leading and trailing whitespace from a string.
488
+ *
489
+ * @example
490
+ * ```ts
491
+ * trim(' hello '); // 'hello'
492
+ * ```
493
+ */
243
494
  function trim(str) {
244
495
  return str.trim();
245
496
  }
497
+ /**
498
+ * Removes trailing whitespace from a string.
499
+ *
500
+ * @example
501
+ * ```ts
502
+ * trimEnd(' hello '); // ' hello'
503
+ * ```
504
+ */
246
505
  function trimEnd(str) {
247
506
  return str.trimEnd();
248
507
  }
508
+ /**
509
+ * Removes leading whitespace from a string.
510
+ *
511
+ * @example
512
+ * ```ts
513
+ * trimStart(' hello '); // 'hello '
514
+ * ```
515
+ */
249
516
  function trimStart(str) {
250
517
  return str.trimStart();
251
518
  }
@@ -253,6 +520,7 @@ function trimStart(str) {
253
520
  exports.at = at;
254
521
  exports.charCodeAt = charCodeAt;
255
522
  exports.codePointAt = codePointAt;
523
+ exports.compare = compare;
256
524
  exports.concat = concat;
257
525
  exports.endsWith = endsWith;
258
526
  exports.endsWithPosition = endsWithPosition;
@@ -260,7 +528,11 @@ exports.includes = includes;
260
528
  exports.includesPosition = includesPosition;
261
529
  exports.indexOf = indexOf;
262
530
  exports.indexOfPosition = indexOfPosition;
531
+ exports.isEmpty = isEmpty;
263
532
  exports.isWellFormed = isWellFormed;
533
+ exports.lastIndexOf = lastIndexOf;
534
+ exports.lastIndexOfPosition = lastIndexOfPosition;
535
+ exports.length = length;
264
536
  exports.localeCompare = localeCompare;
265
537
  exports.normalize = normalize;
266
538
  exports.normalizeForm = normalizeForm;
@@ -278,6 +550,8 @@ exports.startsWith = startsWith;
278
550
  exports.startsWithPosition = startsWithPosition;
279
551
  exports.substring = substring;
280
552
  exports.substringEnd = substringEnd;
553
+ exports.toLocaleLowerCase = toLocaleLowerCase;
554
+ exports.toLocaleUpperCase = toLocaleUpperCase;
281
555
  exports.toLowerCase = toLowerCase;
282
556
  exports.toUpperCase = toUpperCase;
283
557
  exports.toWellFormed = toWellFormed;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["purry","orThrow","purry","orThrow","purry","orThrow","NotYetImplementedError","purry","purry","NotFoundError","purry","orThrow","NotYetImplementedError","purry","purry","purry","purry","NotYetImplementedError","NotFoundError","purry","orThrow","purry","purry","purry","purry"],"sources":["../../src/string/at.ts","../../src/string/charCodeAt.ts","../../src/string/codePointAt.ts","../../src/string/concat.ts","../../src/string/endsWith.ts","../../src/string/includes.ts","../../src/string/indexOf.ts","../../src/string/isWellFormed.ts","../../src/string/localeCompare.ts","../../src/string/normalize.ts","../../src/string/padEnd.ts","../../src/string/padStart.ts","../../src/string/repeat.ts","../../src/string/replace.ts","../../src/string/search.ts","../../src/string/slice.ts","../../src/string/split.ts","../../src/string/startsWith.ts","../../src/string/substring.ts","../../src/string/toLowerCase.ts","../../src/string/toUpperCase.ts","../../src/string/toWellFormed.ts","../../src/string/trim.ts"],"sourcesContent":["import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction atImplementation(str: string, index: number): RangeError | string {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.at() :: Invalid index : ${index}`);\n }\n\n return str.at(index)!;\n}\n\nexport function at(index: number): (str: string) => RangeError | string;\nexport function at(str: string, index: number): RangeError | string;\nexport function at(...args: unknown[]): unknown {\n return purry(atImplementation, args);\n}\n\nfunction atAssert(index: number): (str: string) => string;\nfunction atAssert(str: string, index: number): string;\nfunction atAssert(...args: unknown[]): unknown {\n return purry(orThrow(atImplementation), args);\n}\n\nat.assert = atAssert;\n","import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction charCodeAtImplementation(str: string, index: number): RangeError | number {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.charCodeAt() :: Invalid index : ${index}`);\n }\n\n const adjustedIndex = index < 0 ? str.length + index : index;\n\n return str.charCodeAt(adjustedIndex);\n}\n\nexport function charCodeAt(index: number): (str: string) => RangeError | number;\nexport function charCodeAt(str: string, index: number): RangeError | number;\nexport function charCodeAt(...args: unknown[]): unknown {\n return purry(charCodeAtImplementation, args);\n}\n\nfunction charCodeAtAssert(index: number): (str: string) => number;\nfunction charCodeAtAssert(str: string, index: number): number;\nfunction charCodeAtAssert(...args: unknown[]): unknown {\n return purry(orThrow(charCodeAtImplementation), args);\n}\n\ncharCodeAt.assert = charCodeAtAssert;\n","import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction codePointAtImplementation(str: string, index: number): RangeError | number {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.codePointAt() :: Invalid index : ${index}`);\n }\n\n const adjustedIndex = index < 0 ? str.length + index : index;\n\n return str.codePointAt(adjustedIndex)!;\n}\n\nexport function codePointAt(index: number): (str: string) => RangeError | number;\nexport function codePointAt(str: string, index: number): RangeError | number;\nexport function codePointAt(...args: unknown[]): unknown {\n return purry(codePointAtImplementation, args);\n}\n\nfunction codePointAtAssert(index: number): (str: string) => number;\nfunction codePointAtAssert(str: string, index: number): number;\nfunction codePointAtAssert(...args: unknown[]): unknown {\n return purry(orThrow(codePointAtImplementation), args);\n}\n\ncodePointAt.assert = codePointAtAssert;\n","import { NotYetImplementedError } from '../errors';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function concat(str: string, other: string): string {\n // TODO: need to think about how to handle the native's variable argument length\n throw new NotYetImplementedError('Str.concat not yet implemented');\n}\n","import { purry } from '../function/purry';\n\nfunction endsWithImplementation(str: string, search: string): boolean {\n return str.endsWith(search);\n}\n\nexport function endsWith(search: string): (str: string) => boolean;\nexport function endsWith(str: string, search: string): boolean;\nexport function endsWith(...args: unknown[]): unknown {\n return purry(endsWithImplementation, args);\n}\n\nfunction endsWithPositionImplementation(str: string, search: string, position: number): boolean {\n return str.endsWith(search, position);\n}\n\nexport function endsWithPosition(search: string, position: number): (str: string) => boolean;\nexport function endsWithPosition(str: string, search: string, position: number): boolean;\nexport function endsWithPosition(...args: unknown[]): unknown {\n return purry(endsWithPositionImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction includesImplementation(str: string, search: string): boolean {\n return str.includes(search);\n}\n\nexport function includes(search: string): (str: string) => boolean;\nexport function includes(str: string, search: string): boolean;\nexport function includes(...args: unknown[]): unknown {\n return purry(includesImplementation, args);\n}\n\nfunction includesPositionImplementation(str: string, search: string, position: number): boolean {\n return str.includes(search, position);\n}\n\nexport function includesPosition(position: number, search: string): (str: string) => boolean;\nexport function includesPosition(str: string, search: string, position: number): boolean;\nexport function includesPosition(...args: unknown[]): unknown {\n return purry(includesPositionImplementation, args);\n}\n","import { NotFoundError } from '../errors';\nimport { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction indexOfImplementation(str: string, search: string): NotFoundError | number {\n const result = str.indexOf(search);\n if (result === -1) {\n return new NotFoundError(`Str.indexOf() :: \"${search}\" not found in \"${str}\"`);\n }\n return result;\n}\n\nexport function indexOf(search: string): (str: string) => NotFoundError | number;\nexport function indexOf(str: string, search: string): NotFoundError | number;\nexport function indexOf(...args: unknown[]): unknown {\n return purry(indexOfImplementation, args);\n}\n\nfunction indexOfAssert(search: string): (str: string) => number;\nfunction indexOfAssert(str: string, search: string): number;\nfunction indexOfAssert(...args: unknown[]): unknown {\n return purry(orThrow(indexOfImplementation), args);\n}\n\nindexOf.assert = indexOfAssert;\n\nfunction indexOfPositionImplementation(str: string, search: string, position: number): NotFoundError | number {\n return str.indexOf(search, position);\n}\n\nexport function indexOfPosition(position: number, search: string): (str: string) => NotFoundError | number;\nexport function indexOfPosition(str: string, search: string, position: number): NotFoundError | number;\nexport function indexOfPosition(...args: unknown[]): unknown {\n return purry(indexOfPositionImplementation, args);\n}\n\nfunction indexOfPositionAssert(position: number, search: string): (str: string) => number;\nfunction indexOfPositionAssert(str: string, search: string, position: number): number;\nfunction indexOfPositionAssert(...args: unknown[]): unknown {\n return purry(orThrow(indexOfPositionImplementation), args);\n}\n\nindexOfPosition.assert = indexOfPositionAssert;\n","export function isWellFormed(str: string): boolean {\n return str.isWellFormed();\n}\n","import { NotYetImplementedError } from '../errors';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function localeCompare(left: string, right: string): number {\n throw new NotYetImplementedError('Str.localeCompare not yet implemented');\n}\n","import { purry } from '../function/purry';\n\nexport function normalize(str: string): string {\n return str.normalize();\n}\n\nfunction normalizeFormImplementation(str: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): string {\n return str.normalize(form);\n}\n\nexport function normalizeForm(form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): (str: string) => string;\nexport function normalizeForm(str: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): string;\nexport function normalizeForm(...args: unknown[]): unknown {\n return purry(normalizeFormImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction padEndImplementation(str: string, targetLength: number, padString: string): string {\n return str.padEnd(targetLength, padString);\n}\n\nexport function padEnd(targetLength: number, padString: string): (str: string) => string;\nexport function padEnd(str: string, targetLength: number, padString: string): string;\nexport function padEnd(...args: unknown[]): unknown {\n return purry(padEndImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction padStartImplementation(str: string, targetLength: number, padString: string): string {\n return str.padStart(targetLength, padString);\n}\n\nexport function padStart(targetLength: number, padString: string): (str: string) => string;\nexport function padStart(str: string, targetLength: number, padString: string): string;\nexport function padStart(...args: unknown[]): unknown {\n return purry(padStartImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction repeatImplementation(str: string, count: number): string {\n return str.repeat(count);\n}\n\nexport function repeat(count: number): (str: string) => string;\nexport function repeat(str: string, count: number): string;\nexport function repeat(...args: unknown[]): unknown {\n return purry(repeatImplementation, args);\n}\n","import { NotYetImplementedError } from '../errors';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function replace(str: string, searchValue: RegExp | string, replaceValue: string): string {\n throw new NotYetImplementedError('Str.replace not yet implemented');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function replaceAll(str: string, searchValue: RegExp | string, replacement: string): string {\n throw new NotYetImplementedError('Str.replace not yet implemented');\n}\n","import { NotFoundError } from '../errors';\nimport { purry } from '../function';\nimport { orThrow } from '../function/orThrow';\n\nfunction searchImplementation(\n str: string,\n searcher: { [Symbol.search](string: string): number },\n): NotFoundError | number {\n const result = str.search(searcher);\n if (result === -1) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n return new NotFoundError(`Str.search() :: \"${searcher}\" not found in \"${str}\"`);\n }\n return result;\n}\n\nexport function search(searcher: { [Symbol.search](string: string): number }): (str: string) => NotFoundError | number;\nexport function search(str: string, searcher: { [Symbol.search](string: string): number }): NotFoundError | number;\nexport function search(...args: unknown[]): unknown {\n return purry(searchImplementation, args);\n}\n\nfunction searchAssert(searcher: { [Symbol.search](string: string): number }): (str: string) => number;\nfunction searchAssert(str: string, searcher: { [Symbol.search](string: string): number }): number;\nfunction searchAssert(...args: unknown[]): unknown {\n return purry(orThrow(searchImplementation), args);\n}\n\nsearch.assert = searchAssert;\n","import { purry } from '../function/purry';\n\nfunction sliceImplementation(str: string, start: number): string {\n return str.slice(start);\n}\n\nexport function slice(start: number): (str: string) => string;\nexport function slice(str: string, start: number): string;\nexport function slice(...args: unknown[]): unknown {\n return purry(sliceImplementation, args);\n}\n\nfunction sliceEndImplementation(str: string, start: number, end: number): string {\n return str.slice(start, end);\n}\n\nexport function sliceEnd(end: number): (str: string, start: number) => string;\nexport function sliceEnd(str: string, start: number, end: number): string;\nexport function sliceEnd(...args: unknown[]): unknown {\n return purry(sliceEndImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction splitImplementation(str: string, separator: string): string[] {\n return str.split(separator);\n}\n\nexport function split(separator: string): (str: string) => string[];\nexport function split(str: string, separator: string): string[];\nexport function split(...args: unknown[]): unknown {\n return purry(splitImplementation, args);\n}\n\nfunction splitLimitImplementation(str: string, separator: string, limit: number): string[] {\n return str.split(separator, limit);\n}\n\nexport function splitLimit(separator: string, limit: number): (str: string) => string[];\nexport function splitLimit(str: string, separator: string, limit: number): string[];\nexport function splitLimit(...args: unknown[]): unknown {\n return purry(splitLimitImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction startsWithImplementation(str: string, search: string): boolean {\n return str.startsWith(search);\n}\n\nexport function startsWith(search: string): (str: string) => boolean;\nexport function startsWith(str: string, search: string): boolean;\nexport function startsWith(...args: unknown[]): unknown {\n return purry(startsWithImplementation, args);\n}\n\nfunction startsWithPositionImplementation(str: string, search: string, position: number): boolean {\n return str.startsWith(search, position);\n}\n\nexport function startsWithPosition(search: string, position: number): (str: string) => boolean;\nexport function startsWithPosition(str: string, search: string, position: number): boolean;\nexport function startsWithPosition(...args: unknown[]): unknown {\n return purry(startsWithPositionImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction substringImplementation(str: string, start: number, end: number): string {\n return str.substring(start, end);\n}\n\nexport function substring(start: number, end: number): (str: string) => string;\nexport function substring(str: string, start: number, end: number): string;\nexport function substring(...args: unknown[]): unknown {\n return purry(substringImplementation, args);\n}\n\nfunction substringEndImplementation(str: string, start: number, end: number): string {\n return str.substring(start, end);\n}\n\nexport function substringEnd(start: number, end: number): (str: string) => string;\nexport function substringEnd(str: string, start: number, end: number): string;\nexport function substringEnd(...args: unknown[]): unknown {\n return purry(substringEndImplementation, args);\n}\n","export function toLowerCase(str: string): string {\n return str.toLowerCase();\n}\n","export function toUpperCase(str: string): string {\n return str.toUpperCase();\n}\n","export function toWellFormed(str: string): string {\n return str.toWellFormed();\n}\n","export function trim(str: string): string {\n return str.trim();\n}\n\nexport function trimEnd(str: string): string {\n return str.trimEnd();\n}\n\nexport function trimStart(str: string): string {\n return str.trimStart();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["purry","orThrow","purry","orThrow","purry","orThrow","NotYetImplementedError","purry","purry","NotFoundError","purry","orThrow","NotFoundError","purry","orThrow","NotYetImplementedError","purry","purry","purry","purry","NotYetImplementedError","NotFoundError","purry","orThrow","purry","purry","purry","purry","NotYetImplementedError","NotYetImplementedError"],"sources":["../../src/string/at.ts","../../src/string/charCodeAt.ts","../../src/string/codePointAt.ts","../../src/string/compare.ts","../../src/string/concat.ts","../../src/string/endsWith.ts","../../src/string/includes.ts","../../src/string/indexOf.ts","../../src/string/isEmpty.ts","../../src/string/isWellFormed.ts","../../src/string/lastIndexOf.ts","../../src/string/length.ts","../../src/string/localeCompare.ts","../../src/string/normalize.ts","../../src/string/padEnd.ts","../../src/string/padStart.ts","../../src/string/repeat.ts","../../src/string/replace.ts","../../src/string/search.ts","../../src/string/slice.ts","../../src/string/split.ts","../../src/string/startsWith.ts","../../src/string/substring.ts","../../src/string/toLocaleLowerCase.ts","../../src/string/toLocaleUpperCase.ts","../../src/string/toLowerCase.ts","../../src/string/toUpperCase.ts","../../src/string/toWellFormed.ts","../../src/string/trim.ts"],"sourcesContent":["import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction atImplementation(str: string, index: number): RangeError | string {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.at() :: Invalid index : ${index}`);\n }\n\n return str.at(index)!;\n}\n\n/**\n * Returns the character at an index, supporting negative indices from the end.\n * Returns a range error when the index is out of bounds.\n *\n * @example\n * ```ts\n * at('hello', 1); // 'e'\n * at(-1)('hello'); // 'o'\n * at('hello', 10); // RangeError\n * ```\n */\nexport function at(index: number): (str: string) => RangeError | string;\nexport function at(str: string, index: number): RangeError | string;\nexport function at(...args: unknown[]): unknown {\n return purry(atImplementation, args);\n}\n\nfunction atAssert(index: number): (str: string) => string;\nfunction atAssert(str: string, index: number): string;\nfunction atAssert(...args: unknown[]): unknown {\n return purry(orThrow(atImplementation), args);\n}\n\n/**\n * Like `at`, but throws when the index is out of bounds.\n *\n * @example\n * ```ts\n * at.assert('hello', 1); // 'e'\n * at.assert('hello', 10); // throws RangeError\n * ```\n */\nat.assert = atAssert;\n","import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction charCodeAtImplementation(str: string, index: number): RangeError | number {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.charCodeAt() :: Invalid index : ${index}`);\n }\n\n const adjustedIndex = index < 0 ? str.length + index : index;\n\n return str.charCodeAt(adjustedIndex);\n}\n\n/**\n * Returns the UTF-16 code unit at an index, supporting negative indices from the end.\n * Returns a range error when the index is out of bounds.\n *\n * @example\n * ```ts\n * charCodeAt('hello', 0); // 104\n * charCodeAt(-1)('hello'); // 111\n * charCodeAt('hello', 10); // RangeError\n * ```\n */\nexport function charCodeAt(index: number): (str: string) => RangeError | number;\nexport function charCodeAt(str: string, index: number): RangeError | number;\nexport function charCodeAt(...args: unknown[]): unknown {\n return purry(charCodeAtImplementation, args);\n}\n\nfunction charCodeAtAssert(index: number): (str: string) => number;\nfunction charCodeAtAssert(str: string, index: number): number;\nfunction charCodeAtAssert(...args: unknown[]): unknown {\n return purry(orThrow(charCodeAtImplementation), args);\n}\n\n/**\n * Like `charCodeAt`, but throws when the index is out of bounds.\n *\n * @example\n * ```ts\n * charCodeAt.assert('hello', 0); // 104\n * charCodeAt.assert('hello', 10); // throws RangeError\n * ```\n */\ncharCodeAt.assert = charCodeAtAssert;\n","import { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction codePointAtImplementation(str: string, index: number): RangeError | number {\n if (index >= str.length || index < -str.length) {\n return new RangeError(`Str.codePointAt() :: Invalid index : ${index}`);\n }\n\n const adjustedIndex = index < 0 ? str.length + index : index;\n\n return str.codePointAt(adjustedIndex)!;\n}\n\n/**\n * Returns the Unicode code point at an index, supporting negative indices from the end.\n * Returns a range error when the index is out of bounds.\n *\n * @example\n * ```ts\n * codePointAt('hello', 0); // 104\n * codePointAt(-1)('hello'); // 111\n * codePointAt('hello', 10); // RangeError\n * ```\n */\nexport function codePointAt(index: number): (str: string) => RangeError | number;\nexport function codePointAt(str: string, index: number): RangeError | number;\nexport function codePointAt(...args: unknown[]): unknown {\n return purry(codePointAtImplementation, args);\n}\n\nfunction codePointAtAssert(index: number): (str: string) => number;\nfunction codePointAtAssert(str: string, index: number): number;\nfunction codePointAtAssert(...args: unknown[]): unknown {\n return purry(orThrow(codePointAtImplementation), args);\n}\n\n/**\n * Like `codePointAt`, but throws when the index is out of bounds.\n *\n * @example\n * ```ts\n * codePointAt.assert('hello', 0); // 104\n * codePointAt.assert('hello', 10); // throws RangeError\n * ```\n */\ncodePointAt.assert = codePointAtAssert;\n","import type { Order } from '../order';\nimport { eq, gt, lt } from '../order';\n\n/**\n * Compares two strings lexicographically and returns their ordering.\n *\n * @example\n * ```ts\n * compare('a', 'b'); // -1\n * compare('b', 'b'); // 0\n * compare('c', 'b'); // 1\n * ```\n */\nexport function compare(left: string, right: string): Order {\n if (left < right) return lt;\n if (left > right) return gt;\n return eq;\n}\n","import { NotYetImplementedError } from '../errors';\n\n/**\n * Concatenates two strings.\n *\n * @example\n * ```ts\n * concat('hello', ' world'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function concat(str: string, other: string): string {\n // TODO: need to think about how to handle the native's variable argument length\n throw new NotYetImplementedError('Str.concat not yet implemented');\n}\n","import { purry } from '../function/purry';\n\nfunction endsWithImplementation(str: string, search: string): boolean {\n return str.endsWith(search);\n}\n\n/**\n * Returns whether a string ends with a search string.\n *\n * @example\n * ```ts\n * endsWith('hello world', 'world'); // true\n * endsWith('hello')('hello world'); // false\n * ```\n */\nexport function endsWith(search: string): (str: string) => boolean;\nexport function endsWith(str: string, search: string): boolean;\nexport function endsWith(...args: unknown[]): unknown {\n return purry(endsWithImplementation, args);\n}\n\nfunction endsWithPositionImplementation(str: string, search: string, position: number): boolean {\n return str.endsWith(search, position);\n}\n\n/**\n * Returns whether a string ends with a search string at or before a position.\n *\n * @example\n * ```ts\n * endsWithPosition('hello world', 'hello', 5); // true\n * endsWithPosition(5, 'hello')('hello world'); // true\n * ```\n */\nexport function endsWithPosition(search: string, position: number): (str: string) => boolean;\nexport function endsWithPosition(str: string, search: string, position: number): boolean;\nexport function endsWithPosition(...args: unknown[]): unknown {\n return purry(endsWithPositionImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction includesImplementation(str: string, search: string): boolean {\n return str.includes(search);\n}\n\n/**\n * Returns whether a string contains a search string.\n *\n * @example\n * ```ts\n * includes('hello world', 'world'); // true\n * includes('xyz')('hello world'); // false\n * ```\n */\nexport function includes(search: string): (str: string) => boolean;\nexport function includes(str: string, search: string): boolean;\nexport function includes(...args: unknown[]): unknown {\n return purry(includesImplementation, args);\n}\n\nfunction includesPositionImplementation(str: string, search: string, position: number): boolean {\n return str.includes(search, position);\n}\n\n/**\n * Returns whether a string contains a search string at or after a position.\n *\n * @example\n * ```ts\n * includesPosition('hello world', 'world', 6); // true\n * includesPosition(6, 'world')('hello world'); // true\n * ```\n */\nexport function includesPosition(position: number, search: string): (str: string) => boolean;\nexport function includesPosition(str: string, search: string, position: number): boolean;\nexport function includesPosition(...args: unknown[]): unknown {\n return purry(includesPositionImplementation, args);\n}\n","import { NotFoundError } from '../errors';\nimport { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction indexOfImplementation(str: string, search: string): NotFoundError | number {\n const result = str.indexOf(search);\n if (result === -1) {\n return new NotFoundError(`Str.indexOf() :: \"${search}\" not found in \"${str}\"`);\n }\n return result;\n}\n\n/**\n * Returns the index of the first occurrence of a search string.\n * Returns a not-found error when the search string is absent.\n *\n * @example\n * ```ts\n * indexOf('hello world', 'world'); // 6\n * indexOf('world')('hello world'); // 6\n * indexOf('hello world', 'xyz'); // NotFoundError\n * ```\n */\nexport function indexOf(search: string): (str: string) => NotFoundError | number;\nexport function indexOf(str: string, search: string): NotFoundError | number;\nexport function indexOf(...args: unknown[]): unknown {\n return purry(indexOfImplementation, args);\n}\n\nfunction indexOfAssert(search: string): (str: string) => number;\nfunction indexOfAssert(str: string, search: string): number;\nfunction indexOfAssert(...args: unknown[]): unknown {\n return purry(orThrow(indexOfImplementation), args);\n}\n\n/**\n * Like `indexOf`, but throws when the search string is absent.\n *\n * @example\n * ```ts\n * indexOf.assert('hello world', 'world'); // 6\n * indexOf.assert('hello world', 'xyz'); // throws NotFoundError\n * ```\n */\nindexOf.assert = indexOfAssert;\n\nfunction indexOfPositionImplementation(str: string, search: string, position: number): NotFoundError | number {\n return str.indexOf(search, position);\n}\n\n/**\n * Returns the index of the first occurrence of a search string at or after a position.\n *\n * @example\n * ```ts\n * indexOfPosition('hello world', 'o', 5); // 7\n * indexOfPosition(5, 'o')('hello world'); // 7\n * indexOfPosition('hello world', 'o', 8); // -1\n * ```\n */\nexport function indexOfPosition(position: number, search: string): (str: string) => NotFoundError | number;\nexport function indexOfPosition(str: string, search: string, position: number): NotFoundError | number;\nexport function indexOfPosition(...args: unknown[]): unknown {\n return purry(indexOfPositionImplementation, args);\n}\n\nfunction indexOfPositionAssert(position: number, search: string): (str: string) => number;\nfunction indexOfPositionAssert(str: string, search: string, position: number): number;\nfunction indexOfPositionAssert(...args: unknown[]): unknown {\n return purry(orThrow(indexOfPositionImplementation), args);\n}\n\n/**\n * Like `indexOfPosition`, but throws when the result is an error.\n *\n * @example\n * ```ts\n * indexOfPosition.assert('hello world', 'o', 5); // 7\n * indexOfPosition.assert('hello world', 'o', 8); // throws\n * ```\n */\nindexOfPosition.assert = indexOfPositionAssert;\n","/**\n * Returns whether a string has no characters.\n *\n * @example\n * ```ts\n * isEmpty(''); // true\n * isEmpty('hello'); // false\n * ```\n */\nexport function isEmpty(str: string): boolean {\n return str.length === 0;\n}\n","/**\n * Returns whether a string is a well-formed Unicode string with no lone surrogates.\n *\n * @example\n * ```ts\n * isWellFormed('hello'); // true\n * isWellFormed('\\uD800'); // false\n * ```\n */\nexport function isWellFormed(str: string): boolean {\n return str.isWellFormed();\n}\n","import { NotFoundError } from '../errors';\nimport { orThrow } from '../function/orThrow';\nimport { purry } from '../function/purry';\n\nfunction lastIndexOfImplementation(str: string, search: string): NotFoundError | number {\n const result = str.lastIndexOf(search);\n if (result === -1) {\n return new NotFoundError(`Str.lastIndexOf() :: \"${search}\" not found in \"${str}\"`);\n }\n return result;\n}\n\n/**\n * Returns the index of the last occurrence of a search string.\n * Returns a not-found error when the search string is absent.\n *\n * @example\n * ```ts\n * lastIndexOf('hello world', 'o'); // 7\n * lastIndexOf('o')('hello world'); // 7\n * lastIndexOf('hello world', 'xyz'); // NotFoundError\n * ```\n */\nexport function lastIndexOf(search: string): (str: string) => NotFoundError | number;\nexport function lastIndexOf(str: string, search: string): NotFoundError | number;\nexport function lastIndexOf(...args: unknown[]): unknown {\n return purry(lastIndexOfImplementation, args);\n}\n\nfunction lastIndexOfAssert(search: string): (str: string) => number;\nfunction lastIndexOfAssert(str: string, search: string): number;\nfunction lastIndexOfAssert(...args: unknown[]): unknown {\n return purry(orThrow(lastIndexOfImplementation), args);\n}\n\n/**\n * Like `lastIndexOf`, but throws when the search string is absent.\n *\n * @example\n * ```ts\n * lastIndexOf.assert('hello world', 'o'); // 7\n * lastIndexOf.assert('hello world', 'xyz'); // throws NotFoundError\n * ```\n */\nlastIndexOf.assert = lastIndexOfAssert;\n\nfunction lastIndexOfPositionImplementation(str: string, search: string, position: number): NotFoundError | number {\n const result = str.lastIndexOf(search, position);\n if (result === -1) {\n return new NotFoundError(`Str.lastIndexOf() :: \"${search}\" not found in \"${str}\" at position ${position}`);\n }\n return result;\n}\n\n/**\n * Returns the index of the last occurrence of a search string at or before a position.\n * Returns a not-found error when the search string is absent.\n *\n * @example\n * ```ts\n * lastIndexOfPosition('hello world', 'o', 6); // 4\n * lastIndexOfPosition(6, 'o')('hello world'); // 4\n * lastIndexOfPosition('hello world', 'o', 3); // NotFoundError\n * ```\n */\nexport function lastIndexOfPosition(position: number, search: string): (str: string) => NotFoundError | number;\nexport function lastIndexOfPosition(str: string, search: string, position: number): NotFoundError | number;\nexport function lastIndexOfPosition(...args: unknown[]): unknown {\n return purry(lastIndexOfPositionImplementation, args);\n}\n\nfunction lastIndexOfPositionAssert(position: number, search: string): (str: string) => number;\nfunction lastIndexOfPositionAssert(str: string, search: string, position: number): number;\nfunction lastIndexOfPositionAssert(...args: unknown[]): unknown {\n return purry(orThrow(lastIndexOfPositionImplementation), args);\n}\n\n/**\n * Like `lastIndexOfPosition`, but throws when the search string is absent.\n *\n * @example\n * ```ts\n * lastIndexOfPosition.assert('hello world', 'o', 6); // 4\n * lastIndexOfPosition.assert('hello world', 'o', 3); // throws NotFoundError\n * ```\n */\nlastIndexOfPosition.assert = lastIndexOfPositionAssert;\n","/**\n * Returns the length of a string in UTF-16 code units.\n *\n * @example\n * ```ts\n * length('hello'); // 5\n * length(''); // 0\n * ```\n */\nexport function length(str: string): number {\n return str.length;\n}\n","import { NotYetImplementedError } from '../errors';\n\n/**\n * Compares two strings using locale-aware rules and returns a sort order number.\n *\n * @example\n * ```ts\n * localeCompare('a', 'b'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function localeCompare(left: string, right: string): number {\n throw new NotYetImplementedError('Str.localeCompare not yet implemented');\n}\n","import { purry } from '../function/purry';\n\n/**\n * Returns a Unicode-normalized string using NFC form.\n *\n * @example\n * ```ts\n * normalize('café'); // 'café'\n * ```\n */\nexport function normalize(str: string): string {\n return str.normalize();\n}\n\nfunction normalizeFormImplementation(str: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): string {\n return str.normalize(form);\n}\n\n/**\n * Returns a Unicode-normalized string using the given normalization form.\n *\n * @example\n * ```ts\n * normalizeForm('café', 'NFD'); // decomposed form\n * normalizeForm('NFD')('café'); // decomposed form\n * ```\n */\nexport function normalizeForm(form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): (str: string) => string;\nexport function normalizeForm(str: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): string;\nexport function normalizeForm(...args: unknown[]): unknown {\n return purry(normalizeFormImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction padEndImplementation(str: string, targetLength: number, padString: string): string {\n return str.padEnd(targetLength, padString);\n}\n\n/**\n * Pads the end of a string until it reaches a target length.\n *\n * @example\n * ```ts\n * padEnd('5', 3, '0'); // '500'\n * padEnd(3, '0')('5'); // '500'\n * ```\n */\nexport function padEnd(targetLength: number, padString: string): (str: string) => string;\nexport function padEnd(str: string, targetLength: number, padString: string): string;\nexport function padEnd(...args: unknown[]): unknown {\n return purry(padEndImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction padStartImplementation(str: string, targetLength: number, padString: string): string {\n return str.padStart(targetLength, padString);\n}\n\n/**\n * Pads the start of a string until it reaches a target length.\n *\n * @example\n * ```ts\n * padStart('5', 3, '0'); // '005'\n * padStart(3, '0')('5'); // '005'\n * ```\n */\nexport function padStart(targetLength: number, padString: string): (str: string) => string;\nexport function padStart(str: string, targetLength: number, padString: string): string;\nexport function padStart(...args: unknown[]): unknown {\n return purry(padStartImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction repeatImplementation(str: string, count: number): string {\n return str.repeat(count);\n}\n\n/**\n * Returns a string repeated a given number of times.\n *\n * @example\n * ```ts\n * repeat('ab', 3); // 'ababab'\n * repeat(3)('ab'); // 'ababab'\n * ```\n */\nexport function repeat(count: number): (str: string) => string;\nexport function repeat(str: string, count: number): string;\nexport function repeat(...args: unknown[]): unknown {\n return purry(repeatImplementation, args);\n}\n","import { NotYetImplementedError } from '../errors';\n\n/**\n * Replaces the first match of a search value in a string.\n *\n * @example\n * ```ts\n * replace('hello world', 'world', 'there'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function replace(str: string, searchValue: RegExp | string, replaceValue: string): string {\n throw new NotYetImplementedError('Str.replace not yet implemented');\n}\n\n/**\n * Replaces all matches of a search value in a string.\n *\n * @example\n * ```ts\n * replaceAll('hello world', 'l', 'L'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function replaceAll(str: string, searchValue: RegExp | string, replacement: string): string {\n throw new NotYetImplementedError('Str.replace not yet implemented');\n}\n","import { NotFoundError } from '../errors';\nimport { purry } from '../function';\nimport { orThrow } from '../function/orThrow';\n\nfunction searchImplementation(\n str: string,\n searcher: { [Symbol.search](string: string): number },\n): NotFoundError | number {\n const result = str.search(searcher);\n if (result === -1) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n return new NotFoundError(`Str.search() :: \"${searcher}\" not found in \"${str}\"`);\n }\n return result;\n}\n\n/**\n * Returns the index of the first match for a searcher (string or regular expression).\n * Returns a not-found error when there is no match.\n *\n * @example\n * ```ts\n * search('hello world', /world/); // 6\n * search(/world/)('hello world'); // 6\n * search('hello world', /xyz/); // NotFoundError\n * ```\n */\nexport function search(searcher: { [Symbol.search](string: string): number }): (str: string) => NotFoundError | number;\nexport function search(str: string, searcher: { [Symbol.search](string: string): number }): NotFoundError | number;\nexport function search(...args: unknown[]): unknown {\n return purry(searchImplementation, args);\n}\n\nfunction searchAssert(searcher: { [Symbol.search](string: string): number }): (str: string) => number;\nfunction searchAssert(str: string, searcher: { [Symbol.search](string: string): number }): number;\nfunction searchAssert(...args: unknown[]): unknown {\n return purry(orThrow(searchImplementation), args);\n}\n\n/**\n * Like `search`, but throws when there is no match.\n *\n * @example\n * ```ts\n * search.assert('hello world', /world/); // 6\n * search.assert('hello world', /xyz/); // throws NotFoundError\n * ```\n */\nsearch.assert = searchAssert;\n","import { purry } from '../function/purry';\n\nfunction sliceImplementation(str: string, start: number): string {\n return str.slice(start);\n}\n\n/**\n * Returns a substring from a start index to the end.\n *\n * @example\n * ```ts\n * slice('hello', 1); // 'ello'\n * slice(1)('hello'); // 'ello'\n * ```\n */\nexport function slice(start: number): (str: string) => string;\nexport function slice(str: string, start: number): string;\nexport function slice(...args: unknown[]): unknown {\n return purry(sliceImplementation, args);\n}\n\nfunction sliceEndImplementation(str: string, start: number, end: number): string {\n return str.slice(start, end);\n}\n\n/**\n * Returns a substring between start and end indices.\n *\n * @example\n * ```ts\n * sliceEnd('hello', 1, 4); // 'ell'\n * sliceEnd(4)(1)('hello'); // 'ell'\n * ```\n */\nexport function sliceEnd(end: number): (str: string, start: number) => string;\nexport function sliceEnd(str: string, start: number, end: number): string;\nexport function sliceEnd(...args: unknown[]): unknown {\n return purry(sliceEndImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction splitImplementation(str: string, separator: string): string[] {\n return str.split(separator);\n}\n\n/**\n * Splits a string into substrings using a separator.\n *\n * @example\n * ```ts\n * split('a,b,c', ','); // ['a', 'b', 'c']\n * split(',')('a,b,c'); // ['a', 'b', 'c']\n * ```\n */\nexport function split(separator: string): (str: string) => string[];\nexport function split(str: string, separator: string): string[];\nexport function split(...args: unknown[]): unknown {\n return purry(splitImplementation, args);\n}\n\nfunction splitLimitImplementation(str: string, separator: string, limit: number): string[] {\n return str.split(separator, limit);\n}\n\n/**\n * Splits a string into at most `limit` substrings using a separator.\n *\n * @example\n * ```ts\n * splitLimit('a,b,c', ',', 2); // ['a', 'b']\n * splitLimit(',', 2)('a,b,c'); // ['a', 'b']\n * ```\n */\nexport function splitLimit(separator: string, limit: number): (str: string) => string[];\nexport function splitLimit(str: string, separator: string, limit: number): string[];\nexport function splitLimit(...args: unknown[]): unknown {\n return purry(splitLimitImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction startsWithImplementation(str: string, search: string): boolean {\n return str.startsWith(search);\n}\n\n/**\n * Returns whether a string starts with a search string.\n *\n * @example\n * ```ts\n * startsWith('hello world', 'hello'); // true\n * startsWith('world')('hello world'); // false\n * ```\n */\nexport function startsWith(search: string): (str: string) => boolean;\nexport function startsWith(str: string, search: string): boolean;\nexport function startsWith(...args: unknown[]): unknown {\n return purry(startsWithImplementation, args);\n}\n\nfunction startsWithPositionImplementation(str: string, search: string, position: number): boolean {\n return str.startsWith(search, position);\n}\n\n/**\n * Returns whether a string starts with a search string at or after a position.\n *\n * @example\n * ```ts\n * startsWithPosition('hello world', 'world', 6); // true\n * startsWithPosition(6, 'world')('hello world'); // true\n * ```\n */\nexport function startsWithPosition(search: string, position: number): (str: string) => boolean;\nexport function startsWithPosition(str: string, search: string, position: number): boolean;\nexport function startsWithPosition(...args: unknown[]): unknown {\n return purry(startsWithPositionImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction substringImplementation(str: string, start: number, end: number): string {\n return str.substring(start, end);\n}\n\n/**\n * Returns the substring between start and end indices.\n *\n * @example\n * ```ts\n * substring('hello', 1, 4); // 'ell'\n * substring(1, 4)('hello'); // 'ell'\n * ```\n */\nexport function substring(start: number, end: number): (str: string) => string;\nexport function substring(str: string, start: number, end: number): string;\nexport function substring(...args: unknown[]): unknown {\n return purry(substringImplementation, args);\n}\n\nfunction substringEndImplementation(str: string, start: number, end: number): string {\n return str.substring(start, end);\n}\n\n/**\n * Returns the substring between start and end indices.\n *\n * @example\n * ```ts\n * substringEnd('hello', 1, 4); // 'ell'\n * substringEnd(1, 4)('hello'); // 'ell'\n * ```\n */\nexport function substringEnd(start: number, end: number): (str: string) => string;\nexport function substringEnd(str: string, start: number, end: number): string;\nexport function substringEnd(...args: unknown[]): unknown {\n return purry(substringEndImplementation, args);\n}\n","import { NotYetImplementedError } from '../errors';\n\n/**\n * Returns a string with all characters converted to locale-aware lowercase.\n *\n * @example\n * ```ts\n * toLocaleLowerCase('STRASSE'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function toLocaleLowerCase(str: string): string {\n throw new NotYetImplementedError('Str.toLocaleLowerCase not yet implemented');\n}\n","import { NotYetImplementedError } from '../errors';\n\n/**\n * Returns a string with all characters converted to locale-aware uppercase.\n *\n * @example\n * ```ts\n * toLocaleUpperCase('straße'); // throws NotYetImplementedError\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function toLocaleUpperCase(str: string): string {\n throw new NotYetImplementedError('Str.toLocaleUpperCase not yet implemented');\n}\n","/**\n * Returns a string with all characters converted to lowercase.\n *\n * @example\n * ```ts\n * toLowerCase('HELLO'); // 'hello'\n * ```\n */\nexport function toLowerCase(str: string): string {\n return str.toLowerCase();\n}\n","/**\n * Returns a string with all characters converted to uppercase.\n *\n * @example\n * ```ts\n * toUpperCase('hello'); // 'HELLO'\n * ```\n */\nexport function toUpperCase(str: string): string {\n return str.toUpperCase();\n}\n","/**\n * Returns a well-formed Unicode string by replacing lone surrogates with replacement characters.\n *\n * @example\n * ```ts\n * toWellFormed('\\uD800'); // '\\uFFFD'\n * toWellFormed('hello'); // 'hello'\n * ```\n */\nexport function toWellFormed(str: string): string {\n return str.toWellFormed();\n}\n","/**\n * Removes leading and trailing whitespace from a string.\n *\n * @example\n * ```ts\n * trim(' hello '); // 'hello'\n * ```\n */\nexport function trim(str: string): string {\n return str.trim();\n}\n\n/**\n * Removes trailing whitespace from a string.\n *\n * @example\n * ```ts\n * trimEnd(' hello '); // ' hello'\n * ```\n */\nexport function trimEnd(str: string): string {\n return str.trimEnd();\n}\n\n/**\n * Removes leading whitespace from a string.\n *\n * @example\n * ```ts\n * trimStart(' hello '); // 'hello '\n * ```\n */\nexport function trimStart(str: string): string {\n return str.trimStart();\n}\n"],"mappings":"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"}