@augment-vir/common 30.0.0 → 30.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/augments/array/array-map.d.ts +29 -1
- package/dist/augments/array/array-map.js +29 -1
- package/dist/augments/array/array-to-object.d.ts +41 -5
- package/dist/augments/array/array-to-object.js +41 -5
- package/dist/augments/array/awaited/awaited-filter.d.ts +29 -0
- package/dist/augments/array/awaited/awaited-filter.js +29 -0
- package/dist/augments/array/awaited/awaited-for-each.d.ts +28 -3
- package/dist/augments/array/awaited/awaited-for-each.js +28 -3
- package/dist/augments/array/awaited/awaited-map.d.ts +32 -0
- package/dist/augments/array/awaited/awaited-map.js +32 -0
- package/dist/augments/array/filter.d.ts +29 -0
- package/dist/augments/array/filter.js +61 -0
- package/dist/augments/array/remove-duplicates.d.ts +60 -1
- package/dist/augments/array/remove-duplicates.js +61 -2
- package/dist/augments/array/repeat-array.d.ts +22 -0
- package/dist/augments/array/repeat-array.js +22 -0
- package/dist/augments/array/shuffle-array.d.ts +8 -1
- package/dist/augments/array/shuffle-array.js +8 -1
- package/dist/augments/array/string-array.d.ts +8 -0
- package/dist/augments/array/string-array.js +8 -0
- package/dist/augments/enum/enum-value-check.d.ts +30 -0
- package/dist/augments/enum/enum-value-check.js +30 -0
- package/dist/augments/error/combine-errors.d.ts +24 -3
- package/dist/augments/error/combine-errors.js +26 -4
- package/dist/augments/function/call-asynchronously.d.ts +19 -0
- package/dist/augments/function/call-asynchronously.js +19 -0
- package/dist/augments/function/call-with-retries.d.ts +23 -3
- package/dist/augments/function/call-with-retries.js +23 -0
- package/dist/augments/function/debounce.d.ts +71 -4
- package/dist/augments/function/debounce.js +66 -4
- package/dist/augments/function/execution-duration.d.ts +17 -5
- package/dist/augments/function/execution-duration.js +16 -3
- package/dist/augments/function/if-truthy.d.ts +28 -0
- package/dist/augments/function/if-truthy.js +35 -0
- package/dist/augments/function/wrap-in-try.d.ts +12 -4
- package/dist/augments/function/wrap-in-try.js +64 -0
- package/dist/augments/json/append-json.d.ts +3 -3
- package/dist/augments/json/append-json.js +33 -0
- package/dist/augments/json/copy-through-json.d.ts +32 -1
- package/dist/augments/json/copy-through-json.js +32 -1
- package/dist/augments/json/json-compatible.d.ts +37 -9
- package/dist/augments/json/jsonify.d.ts +30 -1
- package/dist/augments/json/jsonify.js +31 -2
- package/dist/augments/log/log-colors.d.ts +41 -0
- package/dist/augments/log/log-colors.js +43 -2
- package/dist/augments/log/log-string.d.ts +21 -0
- package/dist/augments/log/log-string.js +9 -2
- package/dist/augments/log/log-writer.d.ts +22 -0
- package/dist/augments/log/log.d.ts +44 -1
- package/dist/augments/log/log.js +46 -3
- package/dist/augments/log/logger.d.ts +49 -0
- package/dist/augments/log/logger.js +21 -0
- package/dist/augments/number/clamp.d.ts +13 -2
- package/dist/augments/number/clamp.js +12 -1
- package/dist/augments/number/coords.d.ts +6 -2
- package/dist/augments/number/digit.d.ts +7 -0
- package/dist/augments/number/dimensions.d.ts +6 -2
- package/dist/augments/number/min-max.d.ts +9 -2
- package/dist/augments/number/min-max.js +4 -2
- package/dist/augments/number/number-conversion.d.ts +9 -3
- package/dist/augments/number/number-conversion.js +10 -4
- package/dist/augments/number/round.d.ts +19 -0
- package/dist/augments/number/round.js +19 -0
- package/dist/augments/number/scientific.d.ts +18 -1
- package/dist/augments/number/scientific.js +18 -1
- package/dist/augments/number/truncate-number.d.ts +24 -3
- package/dist/augments/number/truncate-number.js +28 -8
- package/dist/augments/number/wrap-number.d.ts +9 -3
- package/dist/augments/number/wrap-number.js +8 -2
- package/dist/augments/object/diff.d.ts +27 -5
- package/dist/augments/object/diff.js +20 -4
- package/dist/augments/object/empty.d.ts +7 -1
- package/dist/augments/object/get-or-set.d.ts +6 -27
- package/dist/augments/object/get-or-set.js +66 -4
- package/dist/augments/object/key-count.d.ts +4 -0
- package/dist/augments/object/map-entries.js +23 -0
- package/dist/augments/object/map-enum.d.ts +7 -0
- package/dist/augments/object/map-enum.js +24 -0
- package/dist/augments/object/map-values.d.ts +25 -13
- package/dist/augments/object/map-values.js +29 -21
- package/dist/augments/object/merge-deep.d.ts +4 -0
- package/dist/augments/object/merge-deep.js +4 -0
- package/dist/augments/object/merge-defined-properties.d.ts +13 -0
- package/dist/augments/object/merge-defined-properties.js +13 -0
- package/dist/augments/object/merge-property-arrays.d.ts +28 -0
- package/dist/augments/object/merge-property-arrays.js +28 -0
- package/dist/augments/object/object-entries.d.ts +27 -0
- package/dist/augments/object/object-entries.js +27 -0
- package/dist/augments/object/object-filter.d.ts +20 -0
- package/dist/augments/object/object-filter.js +20 -0
- package/dist/augments/object/object-keys.d.ts +32 -0
- package/dist/augments/object/object-keys.js +32 -0
- package/dist/augments/object/object-values.d.ts +9 -0
- package/dist/augments/object/object-values.js +9 -0
- package/dist/augments/path/esm-path.d.ts +26 -0
- package/dist/augments/path/esm-path.js +31 -0
- package/dist/augments/prisma/prisma-models.d.ts +40 -3
- package/dist/augments/promise/timed-promise.d.ts +15 -0
- package/dist/augments/promise/timed-promise.js +15 -0
- package/dist/augments/random/random-boolean.d.ts +6 -0
- package/dist/augments/random/random-boolean.js +6 -0
- package/dist/augments/random/random-integer.d.ts +3 -1
- package/dist/augments/random/random-integer.js +3 -1
- package/dist/augments/random/random-string.d.ts +6 -2
- package/dist/augments/random/random-string.js +6 -2
- package/dist/augments/regexp/match.d.ts +10 -0
- package/dist/augments/regexp/match.js +13 -0
- package/dist/augments/regexp/regexp-flags.d.ts +56 -3
- package/dist/augments/regexp/regexp-flags.js +71 -14
- package/dist/augments/regexp/regexp-string.d.ts +4 -0
- package/dist/augments/regexp/regexp-string.js +5 -1
- package/dist/augments/selection-set/select-collapsed.d.ts +46 -3
- package/dist/augments/selection-set/select-collapsed.js +40 -2
- package/dist/augments/selection-set/select-from.d.ts +47 -2
- package/dist/augments/selection-set/select-from.js +48 -1
- package/dist/augments/selection-set/selection-set.d.ts +26 -7
- package/dist/augments/selection-set/selection-set.js +1 -4
- package/dist/augments/string/casing/capitalization.d.ts +15 -1
- package/dist/augments/string/casing/capitalization.js +14 -0
- package/dist/augments/string/casing/casing.d.ts +53 -7
- package/dist/augments/string/casing/casing.js +36 -11
- package/dist/augments/string/casing/kebab-and-camel.d.ts +14 -0
- package/dist/augments/string/casing/kebab-and-camel.js +20 -5
- package/dist/augments/string/comma.d.ts +26 -0
- package/dist/augments/string/{commas.js → comma.js} +21 -2
- package/dist/augments/string/join.d.ts +15 -4
- package/dist/augments/string/join.js +15 -4
- package/dist/augments/string/prefix.d.ts +6 -0
- package/dist/augments/string/prefix.js +4 -0
- package/dist/augments/string/remove-duplicate-characters.d.ts +17 -0
- package/dist/augments/string/remove-duplicate-characters.js +22 -0
- package/dist/augments/string/replace.d.ts +17 -0
- package/dist/augments/string/replace.js +17 -0
- package/dist/augments/string/split.d.ts +29 -2
- package/dist/augments/string/split.js +32 -7
- package/dist/augments/string/substring-index.d.ts +11 -5
- package/dist/augments/string/substring-index.js +12 -3
- package/dist/augments/string/suffix.d.ts +22 -0
- package/dist/augments/string/suffix.js +16 -0
- package/dist/augments/string/white-space.d.ts +8 -1
- package/dist/augments/string/white-space.js +8 -1
- package/dist/augments/string/wrap-string.d.ts +15 -0
- package/dist/augments/string/wrap-string.js +15 -0
- package/dist/augments/type/ensure-type.d.ts +4 -0
- package/dist/augments/type/ensure-type.js +4 -0
- package/dist/augments/type/readonly.d.ts +7 -0
- package/dist/augments/type/readonly.js +7 -0
- package/dist/augments/type/type-recursion.d.ts +93 -1
- package/dist/augments/type/union.d.ts +1 -0
- package/dist/augments/type/union.js +1 -0
- package/dist/augments/type/void-type.d.ts +6 -2
- package/dist/augments/type/writable.d.ts +7 -0
- package/dist/augments/type/writable.js +7 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +6 -4
- package/package.json +15 -5
- package/dist/augments/boolean/if-truthy.d.ts +0 -2
- package/dist/augments/boolean/if-truthy.js +0 -9
- package/dist/augments/file/esm-path.d.ts +0 -4
- package/dist/augments/file/esm-path.js +0 -8
- package/dist/augments/regexp/safe-match.d.ts +0 -1
- package/dist/augments/regexp/safe-match.js +0 -4
- package/dist/augments/string/commas.d.ts +0 -7
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
* Generic string type but with the given prefix prepended to it.
|
|
3
3
|
*
|
|
4
4
|
* @category String
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
5
7
|
*/
|
|
6
8
|
export type WithPrefix<Prefix extends string> = `${Prefix}${string}`;
|
|
7
9
|
/**
|
|
8
10
|
* Adds a prefix to a string if it does not already exist.
|
|
9
11
|
*
|
|
10
12
|
* @category String
|
|
13
|
+
* @category Package : @augment-vir/common
|
|
14
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
11
15
|
*/
|
|
12
16
|
export declare function addPrefix<const Prefix extends string>({ value, prefix, }: {
|
|
13
17
|
value: unknown;
|
|
@@ -17,6 +21,8 @@ export declare function addPrefix<const Prefix extends string>({ value, prefix,
|
|
|
17
21
|
* Removes a prefix from a string if it exists.
|
|
18
22
|
*
|
|
19
23
|
* @category String
|
|
24
|
+
* @category Package : @augment-vir/common
|
|
25
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
20
26
|
*/
|
|
21
27
|
export declare function removePrefix<const Prefix extends string>({ value, prefix, }: {
|
|
22
28
|
value: string;
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Adds a prefix to a string if it does not already exist.
|
|
3
3
|
*
|
|
4
4
|
* @category String
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
5
7
|
*/
|
|
6
8
|
export function addPrefix({ value, prefix, }) {
|
|
7
9
|
if (String(value).startsWith(prefix)) {
|
|
@@ -15,6 +17,8 @@ export function addPrefix({ value, prefix, }) {
|
|
|
15
17
|
* Removes a prefix from a string if it exists.
|
|
16
18
|
*
|
|
17
19
|
* @category String
|
|
20
|
+
* @category Package : @augment-vir/common
|
|
21
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
18
22
|
*/
|
|
19
23
|
export function removePrefix({ value, prefix, }) {
|
|
20
24
|
if (value.startsWith(prefix)) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes duplicate characters from any number of strings.
|
|
3
|
+
*
|
|
4
|
+
* @category String
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @example
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import {removeDuplicateCharacters} from '@augment-vir/common';
|
|
10
|
+
*
|
|
11
|
+
* removeDuplicateCharacters('aAaBc', 'QrsAa');
|
|
12
|
+
* // output is `'aABcQrs'`
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeDuplicateCharacters(...values: ReadonlyArray<string>): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { removeDuplicates } from '../array/remove-duplicates.js';
|
|
2
|
+
/**
|
|
3
|
+
* Removes duplicate characters from any number of strings.
|
|
4
|
+
*
|
|
5
|
+
* @category String
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @example
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {removeDuplicateCharacters} from '@augment-vir/common';
|
|
11
|
+
*
|
|
12
|
+
* removeDuplicateCharacters('aAaBc', 'QrsAa');
|
|
13
|
+
* // output is `'aABcQrs'`
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
|
+
*/
|
|
18
|
+
export function removeDuplicateCharacters(...values) {
|
|
19
|
+
const combined = values.join('');
|
|
20
|
+
const deDuped = removeDuplicates(Array.from(combined));
|
|
21
|
+
return Array.from(deDuped).join('');
|
|
22
|
+
}
|
|
@@ -1 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces whatever substring is at the given index in the original string with the new string.
|
|
3
|
+
* Optionally, provide a length of the substring to get replaced.
|
|
4
|
+
*
|
|
5
|
+
* @category String
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @example
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {replaceStringAtIndex} from '@augment-vir/common';
|
|
11
|
+
*
|
|
12
|
+
* replaceStringAtIndex('eat the waffles', 4, 'his'); // outputs `'eat his waffles'`
|
|
13
|
+
* replaceStringAtIndex('eat the waffles', 4, 'my', 3); // outputs `'eat my waffles'`
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
|
+
*/
|
|
1
18
|
export declare function replaceStringAtIndex(originalString: string, start: number, newString: string, length?: number): string;
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces whatever substring is at the given index in the original string with the new string.
|
|
3
|
+
* Optionally, provide a length of the substring to get replaced.
|
|
4
|
+
*
|
|
5
|
+
* @category String
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @example
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import {replaceStringAtIndex} from '@augment-vir/common';
|
|
11
|
+
*
|
|
12
|
+
* replaceStringAtIndex('eat the waffles', 4, 'his'); // outputs `'eat his waffles'`
|
|
13
|
+
* replaceStringAtIndex('eat the waffles', 4, 'my', 3); // outputs `'eat my waffles'`
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
|
+
*/
|
|
1
18
|
export function replaceStringAtIndex(originalString, start, newString, length = newString.length) {
|
|
2
19
|
const before = originalString.slice(0, Math.max(0, start));
|
|
3
20
|
const after = originalString.slice(Math.max(0, start + length));
|
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
import type { AtLeastTuple } from '@augment-vir/core';
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Same as *
|
|
4
|
+
* [`''.split`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|
5
|
+
* but includes the split delimiter in the output array.
|
|
6
|
+
*
|
|
7
|
+
* @category String
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import {splitIncludeSplit} from '@augment-vir/common';
|
|
13
|
+
*
|
|
14
|
+
* splitIncludeSplit('1,2,3', ',', {caseSensitive: false}); // outputs `['1', ',', '2', ',', '3']`
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
18
|
+
*/
|
|
19
|
+
export declare function splitIncludeSplit(original: string, splitDelimiter: string | RegExp, { caseSensitive }: {
|
|
20
|
+
caseSensitive: boolean;
|
|
21
|
+
}): readonly string[];
|
|
22
|
+
/**
|
|
23
|
+
* Same as
|
|
24
|
+
* [`''.split`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|
25
|
+
* but typed better: it always returns an array with at least one string.
|
|
26
|
+
*
|
|
27
|
+
* @category String
|
|
28
|
+
* @category Package : @augment-vir/common
|
|
29
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
30
|
+
*/
|
|
4
31
|
export declare function safeSplit(input: string, splitString: string): AtLeastTuple<string, 1>;
|
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { setRegExpCaseSensitivity } from '../regexp/regexp-flags.js';
|
|
2
|
+
import { findSubstringIndexes } from './substring-index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Same as *
|
|
5
|
+
* [`''.split`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|
6
|
+
* but includes the split delimiter in the output array.
|
|
7
|
+
*
|
|
8
|
+
* @category String
|
|
9
|
+
* @category Package : @augment-vir/common
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import {splitIncludeSplit} from '@augment-vir/common';
|
|
14
|
+
*
|
|
15
|
+
* splitIncludeSplit('1,2,3', ',', {caseSensitive: false}); // outputs `['1', ',', '2', ',', '3']`
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
19
|
+
*/
|
|
20
|
+
export function splitIncludeSplit(original, splitDelimiter, { caseSensitive }) {
|
|
21
|
+
const indexLengths = findSubstringIndexes({
|
|
6
22
|
searchIn: original,
|
|
7
|
-
searchFor:
|
|
23
|
+
searchFor: splitDelimiter,
|
|
8
24
|
caseSensitive,
|
|
9
25
|
includeLength: true,
|
|
10
26
|
});
|
|
11
|
-
const splitter =
|
|
27
|
+
const splitter = setRegExpCaseSensitivity(splitDelimiter, { caseSensitive });
|
|
12
28
|
const splits = original.split(splitter);
|
|
13
29
|
return splits.reduce((accum, current, index) => {
|
|
14
30
|
// this will be undefined on the last index
|
|
@@ -23,6 +39,15 @@ export function splitIncludeSplit(original, splitterInput, caseSensitive) {
|
|
|
23
39
|
}
|
|
24
40
|
}, []);
|
|
25
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Same as
|
|
44
|
+
* [`''.split`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/split)
|
|
45
|
+
* but typed better: it always returns an array with at least one string.
|
|
46
|
+
*
|
|
47
|
+
* @category String
|
|
48
|
+
* @category Package : @augment-vir/common
|
|
49
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
50
|
+
*/
|
|
26
51
|
export function safeSplit(input, splitString) {
|
|
27
52
|
return input.split(splitString);
|
|
28
53
|
}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Finds all indexes of a `searchFor` string or RegExp in `searchIn`. Ths is similar to
|
|
3
|
+
* [`''.indexOf`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf)
|
|
4
|
+
* except that it finds _all_ indexes of.
|
|
5
|
+
*
|
|
6
|
+
* @category String
|
|
7
|
+
* @category Package : @augment-vir/common
|
|
8
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
9
|
+
*/
|
|
10
|
+
export declare function findSubstringIndexes<IncludeLength extends boolean | undefined>({ searchIn, searchFor, caseSensitive, includeLength, }: {
|
|
2
11
|
searchIn: string;
|
|
3
12
|
searchFor: string | RegExp;
|
|
4
|
-
/**
|
|
5
|
-
* CaseSensitive only applies when the input is a string. Otherwise, the RegExp's "i" flag is
|
|
6
|
-
* used to determine case sensitivity.
|
|
7
|
-
*/
|
|
8
13
|
caseSensitive: boolean;
|
|
14
|
+
/** Set to true to get an array of objects with the found indexes _and_ their lengths. */
|
|
9
15
|
includeLength?: IncludeLength;
|
|
10
16
|
}): IncludeLength extends true ? {
|
|
11
17
|
index: number;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { addRegExpFlags, setRegExpCaseSensitivity } from '../regexp/regexp-flags.js';
|
|
2
|
+
/**
|
|
3
|
+
* Finds all indexes of a `searchFor` string or RegExp in `searchIn`. Ths is similar to
|
|
4
|
+
* [`''.indexOf`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf)
|
|
5
|
+
* except that it finds _all_ indexes of.
|
|
6
|
+
*
|
|
7
|
+
* @category String
|
|
8
|
+
* @category Package : @augment-vir/common
|
|
9
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
10
|
+
*/
|
|
11
|
+
export function findSubstringIndexes({ searchIn, searchFor, caseSensitive, includeLength, }) {
|
|
12
|
+
const searchRegExp = addRegExpFlags(setRegExpCaseSensitivity(searchFor, { caseSensitive }), 'g');
|
|
4
13
|
const indexes = [];
|
|
5
14
|
const indexesAndLengths = [];
|
|
6
15
|
searchIn.replace(searchRegExp, (...matchResults) => {
|
|
@@ -2,62 +2,82 @@
|
|
|
2
2
|
* Generic string type but with the given suffix appended to it.
|
|
3
3
|
*
|
|
4
4
|
* @category String
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
5
7
|
*/
|
|
6
8
|
export type WithSuffix<Suffix extends string> = `${string}${Suffix}`;
|
|
7
9
|
/**
|
|
8
10
|
* Suffix for {@link addPercent} and {@link removePercent}.
|
|
9
11
|
*
|
|
10
12
|
* @category String
|
|
13
|
+
* @category Package : @augment-vir/common
|
|
14
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
11
15
|
*/
|
|
12
16
|
export declare const percentSuffix = "%";
|
|
13
17
|
/**
|
|
14
18
|
* Suffix for {@link addPx} and {@link removePx}.
|
|
15
19
|
*
|
|
16
20
|
* @category String
|
|
21
|
+
* @category Package : @augment-vir/common
|
|
22
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
23
|
*/
|
|
18
24
|
export declare const pxSuffix = "px";
|
|
19
25
|
/**
|
|
20
26
|
* Generic string type but with the `'px'` suffix appended to it.
|
|
21
27
|
*
|
|
22
28
|
* @category String
|
|
29
|
+
* @category Package : @augment-vir/common
|
|
30
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
23
31
|
*/
|
|
24
32
|
export type WithPx = WithSuffix<typeof pxSuffix>;
|
|
25
33
|
/**
|
|
26
34
|
* Generic string type but with the `'%'` suffix appended to it.
|
|
27
35
|
*
|
|
28
36
|
* @category String
|
|
37
|
+
* @category Package : @augment-vir/common
|
|
38
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
29
39
|
*/
|
|
30
40
|
export type WithPercent = WithSuffix<typeof percentSuffix>;
|
|
31
41
|
/**
|
|
32
42
|
* Adds the `'px'` suffix to a string if it does not already exist.
|
|
33
43
|
*
|
|
34
44
|
* @category String
|
|
45
|
+
* @category Package : @augment-vir/common
|
|
46
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
35
47
|
*/
|
|
36
48
|
export declare function addPx(input: number | string): WithPx;
|
|
37
49
|
/**
|
|
38
50
|
* Removes the `'px'` suffix from a string if it exists.
|
|
39
51
|
*
|
|
40
52
|
* @category String
|
|
53
|
+
* @category Package : @augment-vir/common
|
|
41
54
|
* @throws `TypeError` if the input can't be converted into a number.
|
|
55
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
42
56
|
*/
|
|
43
57
|
export declare function removePx(input: string): number;
|
|
44
58
|
/**
|
|
45
59
|
* Adds the `'%'` suffix to a string if it does not already exist.
|
|
46
60
|
*
|
|
47
61
|
* @category String
|
|
62
|
+
* @category Package : @augment-vir/common
|
|
63
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
48
64
|
*/
|
|
49
65
|
export declare function addPercent(input: number | string): WithPercent;
|
|
50
66
|
/**
|
|
51
67
|
* Removes the `'%'` suffix from a string if it exists.
|
|
52
68
|
*
|
|
53
69
|
* @category String
|
|
70
|
+
* @category Package : @augment-vir/common
|
|
54
71
|
* @throws `TypeError` if the input can't be converted into a number.
|
|
72
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
55
73
|
*/
|
|
56
74
|
export declare function removePercent(input: string): number;
|
|
57
75
|
/**
|
|
58
76
|
* Adds a suffix to a string if it does not already exist.
|
|
59
77
|
*
|
|
60
78
|
* @category String
|
|
79
|
+
* @category Package : @augment-vir/common
|
|
80
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
61
81
|
*/
|
|
62
82
|
export declare function addSuffix<const Suffix extends string>({ value, suffix, }: {
|
|
63
83
|
value: unknown;
|
|
@@ -67,6 +87,8 @@ export declare function addSuffix<const Suffix extends string>({ value, suffix,
|
|
|
67
87
|
* Removes a suffix from a string if it exists.
|
|
68
88
|
*
|
|
69
89
|
* @category String
|
|
90
|
+
* @category Package : @augment-vir/common
|
|
91
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
70
92
|
*/
|
|
71
93
|
export declare function removeSuffix<const Suffix extends string>({ value, suffix, }: {
|
|
72
94
|
value: string;
|
|
@@ -3,18 +3,24 @@ import { toEnsuredNumber } from '../number/number-conversion.js';
|
|
|
3
3
|
* Suffix for {@link addPercent} and {@link removePercent}.
|
|
4
4
|
*
|
|
5
5
|
* @category String
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
6
8
|
*/
|
|
7
9
|
export const percentSuffix = '%';
|
|
8
10
|
/**
|
|
9
11
|
* Suffix for {@link addPx} and {@link removePx}.
|
|
10
12
|
*
|
|
11
13
|
* @category String
|
|
14
|
+
* @category Package : @augment-vir/common
|
|
15
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
12
16
|
*/
|
|
13
17
|
export const pxSuffix = 'px';
|
|
14
18
|
/**
|
|
15
19
|
* Adds the `'px'` suffix to a string if it does not already exist.
|
|
16
20
|
*
|
|
17
21
|
* @category String
|
|
22
|
+
* @category Package : @augment-vir/common
|
|
23
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
18
24
|
*/
|
|
19
25
|
export function addPx(input) {
|
|
20
26
|
return addSuffix({ value: input, suffix: pxSuffix });
|
|
@@ -23,7 +29,9 @@ export function addPx(input) {
|
|
|
23
29
|
* Removes the `'px'` suffix from a string if it exists.
|
|
24
30
|
*
|
|
25
31
|
* @category String
|
|
32
|
+
* @category Package : @augment-vir/common
|
|
26
33
|
* @throws `TypeError` if the input can't be converted into a number.
|
|
34
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
27
35
|
*/
|
|
28
36
|
export function removePx(input) {
|
|
29
37
|
return toEnsuredNumber(removeSuffix({ value: input, suffix: pxSuffix }));
|
|
@@ -32,6 +40,8 @@ export function removePx(input) {
|
|
|
32
40
|
* Adds the `'%'` suffix to a string if it does not already exist.
|
|
33
41
|
*
|
|
34
42
|
* @category String
|
|
43
|
+
* @category Package : @augment-vir/common
|
|
44
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
35
45
|
*/
|
|
36
46
|
export function addPercent(input) {
|
|
37
47
|
return addSuffix({ value: input, suffix: percentSuffix });
|
|
@@ -40,7 +50,9 @@ export function addPercent(input) {
|
|
|
40
50
|
* Removes the `'%'` suffix from a string if it exists.
|
|
41
51
|
*
|
|
42
52
|
* @category String
|
|
53
|
+
* @category Package : @augment-vir/common
|
|
43
54
|
* @throws `TypeError` if the input can't be converted into a number.
|
|
55
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
44
56
|
*/
|
|
45
57
|
export function removePercent(input) {
|
|
46
58
|
return toEnsuredNumber(removeSuffix({ value: input, suffix: percentSuffix }));
|
|
@@ -49,6 +61,8 @@ export function removePercent(input) {
|
|
|
49
61
|
* Adds a suffix to a string if it does not already exist.
|
|
50
62
|
*
|
|
51
63
|
* @category String
|
|
64
|
+
* @category Package : @augment-vir/common
|
|
65
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
52
66
|
*/
|
|
53
67
|
export function addSuffix({ value, suffix, }) {
|
|
54
68
|
if (String(value).endsWith(suffix)) {
|
|
@@ -62,6 +76,8 @@ export function addSuffix({ value, suffix, }) {
|
|
|
62
76
|
* Removes a suffix from a string if it exists.
|
|
63
77
|
*
|
|
64
78
|
* @category String
|
|
79
|
+
* @category Package : @augment-vir/common
|
|
80
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
65
81
|
*/
|
|
66
82
|
export function removeSuffix({ value, suffix, }) {
|
|
67
83
|
if (value.endsWith(suffix)) {
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { PartialWithUndefined } from '@augment-vir/core';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Collapse all consecutive white space into just one space and trim surrounding whitespace.
|
|
4
|
+
* Optionally, collapsed newlines can be preserved.
|
|
5
|
+
*
|
|
6
|
+
* @category String
|
|
7
|
+
* @category Package : @augment-vir/common
|
|
8
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
9
|
+
*/
|
|
3
10
|
export declare function collapseWhiteSpace(input: string, { keepNewLines }?: PartialWithUndefined<{
|
|
4
11
|
keepNewLines: boolean;
|
|
5
12
|
}>): string;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Collapse all consecutive white space into just one space and trim surrounding whitespace.
|
|
3
|
+
* Optionally, collapsed newlines can be preserved.
|
|
4
|
+
*
|
|
5
|
+
* @category String
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
8
|
+
*/
|
|
2
9
|
export function collapseWhiteSpace(input, { keepNewLines } = {}) {
|
|
3
10
|
if (keepNewLines) {
|
|
4
11
|
return input
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps a string in another string.
|
|
3
|
+
*
|
|
4
|
+
* @category String
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @example
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import {wrapString} from '@augment-vir/common';
|
|
10
|
+
*
|
|
11
|
+
* wrapString({value: 'some words', wrapper: '"'}); // outputs `'"some words"'`
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
15
|
+
*/
|
|
1
16
|
export declare function wrapString({ value, wrapper }: {
|
|
2
17
|
value: string;
|
|
3
18
|
wrapper: string;
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { addPrefix } from './prefix.js';
|
|
2
2
|
import { addSuffix } from './suffix.js';
|
|
3
|
+
/**
|
|
4
|
+
* Wraps a string in another string.
|
|
5
|
+
*
|
|
6
|
+
* @category String
|
|
7
|
+
* @category Package : @augment-vir/common
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import {wrapString} from '@augment-vir/common';
|
|
12
|
+
*
|
|
13
|
+
* wrapString({value: 'some words', wrapper: '"'}); // outputs `'"some words"'`
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
17
|
+
*/
|
|
3
18
|
export function wrapString({ value, wrapper }) {
|
|
4
19
|
return addPrefix({ value: addSuffix({ value, suffix: wrapper }), prefix: wrapper });
|
|
5
20
|
}
|
|
@@ -4,5 +4,9 @@
|
|
|
4
4
|
* the generic being inferred from the inputs), there will actually be a type error. This forces
|
|
5
5
|
* each usage of this function to explicitly specify the generic, thus giving us type safety for the
|
|
6
6
|
* input.
|
|
7
|
+
*
|
|
8
|
+
* @category Type
|
|
9
|
+
* @category Package : @augment-vir/common
|
|
10
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
7
11
|
*/
|
|
8
12
|
export declare function ensureType<ExpectedType = never>(input: NoInfer<ExpectedType>): NoInfer<ExpectedType>;
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* the generic being inferred from the inputs), there will actually be a type error. This forces
|
|
5
5
|
* each usage of this function to explicitly specify the generic, thus giving us type safety for the
|
|
6
6
|
* input.
|
|
7
|
+
*
|
|
8
|
+
* @category Type
|
|
9
|
+
* @category Package : @augment-vir/common
|
|
10
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
7
11
|
*/
|
|
8
12
|
export function ensureType(input) {
|
|
9
13
|
return input;
|
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
export type { ReadonlyDeep } from 'type-fest';
|
|
2
|
+
/**
|
|
3
|
+
* This function does nothing but return the input as a readonly typed version of itself.
|
|
4
|
+
*
|
|
5
|
+
* @category Type
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
8
|
+
*/
|
|
2
9
|
export declare function makeReadonly<T>(input: T): Readonly<T>;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function does nothing but return the input as a readonly typed version of itself.
|
|
3
|
+
*
|
|
4
|
+
* @category Type
|
|
5
|
+
* @category Package : @augment-vir/common
|
|
6
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
7
|
+
*/
|
|
1
8
|
export function makeReadonly(input) {
|
|
2
9
|
return input;
|
|
3
10
|
}
|
|
@@ -150,12 +150,104 @@ type TsRecursionArray = [
|
|
|
150
150
|
149,
|
|
151
151
|
150
|
|
152
152
|
];
|
|
153
|
+
/**
|
|
154
|
+
* This is used as the baseline type for TypeScript recursion tracking indexes. Use this to manually
|
|
155
|
+
* abort a type's recursion to prevent it from going too deep and throwing an error in TypeScript's
|
|
156
|
+
* language server.
|
|
157
|
+
*
|
|
158
|
+
* @category Type
|
|
159
|
+
* @category Package : @augment-vir/common
|
|
160
|
+
* @example
|
|
161
|
+
*
|
|
162
|
+
* ```ts
|
|
163
|
+
* import type {
|
|
164
|
+
* TsRecursionTracker,
|
|
165
|
+
* TsRecursionStart,
|
|
166
|
+
* TsRecurse,
|
|
167
|
+
* TsTooMuchRecursion,
|
|
168
|
+
* } from '@augment-vir/common';
|
|
169
|
+
*
|
|
170
|
+
* export type SomeType<Depth extends TsRecursionTracker = TsRecursionStart> =
|
|
171
|
+
* Depth extends TsTooMuchRecursion
|
|
172
|
+
* ? 'Error: recursive object depth is too deep.'
|
|
173
|
+
* : SomeType<TsRecurse<Depth>>;
|
|
174
|
+
* ```
|
|
175
|
+
*
|
|
176
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
177
|
+
*/
|
|
153
178
|
export type TsRecursionTracker = keyof TsRecursionArray;
|
|
154
179
|
/**
|
|
155
180
|
* Through experimentation on Typescript version 5.4.5, this is the maximum recursion depth we can
|
|
156
|
-
* go to before TypeScript will block recursive types.
|
|
181
|
+
* go to before TypeScript will block recursive types. Use this as the limit to type recursion.
|
|
182
|
+
*
|
|
183
|
+
* @category Type
|
|
184
|
+
* @category Package : @augment-vir/common
|
|
185
|
+
* @example
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* import type {
|
|
189
|
+
* TsRecursionTracker,
|
|
190
|
+
* TsRecursionStart,
|
|
191
|
+
* TsRecurse,
|
|
192
|
+
* TsTooMuchRecursion,
|
|
193
|
+
* } from '@augment-vir/common';
|
|
194
|
+
*
|
|
195
|
+
* export type SomeType<Depth extends TsRecursionTracker = TsRecursionStart> =
|
|
196
|
+
* Depth extends TsTooMuchRecursion
|
|
197
|
+
* ? 'Error: recursive object depth is too deep.'
|
|
198
|
+
* : SomeType<TsRecurse<Depth>>;
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
157
202
|
*/
|
|
158
203
|
export type TsTooMuchRecursion = 91;
|
|
204
|
+
/**
|
|
205
|
+
* This is the default starting recursion depth needed to get the full tested allowed recursion
|
|
206
|
+
* depth.
|
|
207
|
+
*
|
|
208
|
+
* @category Type
|
|
209
|
+
* @category Package : @augment-vir/common
|
|
210
|
+
* @example
|
|
211
|
+
*
|
|
212
|
+
* ```ts
|
|
213
|
+
* import type {
|
|
214
|
+
* TsRecursionTracker,
|
|
215
|
+
* TsRecursionStart,
|
|
216
|
+
* TsRecurse,
|
|
217
|
+
* TsTooMuchRecursion,
|
|
218
|
+
* } from '@augment-vir/common';
|
|
219
|
+
*
|
|
220
|
+
* export type SomeType<Depth extends TsRecursionTracker = TsRecursionStart> =
|
|
221
|
+
* Depth extends TsTooMuchRecursion
|
|
222
|
+
* ? 'Error: recursive object depth is too deep.'
|
|
223
|
+
* : SomeType<TsRecurse<Depth>>;
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
227
|
+
*/
|
|
159
228
|
export type TsRecursionStart = 0;
|
|
229
|
+
/**
|
|
230
|
+
* Increments a TypeScript recursion depth tracker.
|
|
231
|
+
*
|
|
232
|
+
* @category Type
|
|
233
|
+
* @category Package : @augment-vir/common
|
|
234
|
+
* @example
|
|
235
|
+
*
|
|
236
|
+
* ```ts
|
|
237
|
+
* import type {
|
|
238
|
+
* TsRecursionTracker,
|
|
239
|
+
* TsRecursionStart,
|
|
240
|
+
* TsRecurse,
|
|
241
|
+
* TsTooMuchRecursion,
|
|
242
|
+
* } from '@augment-vir/common';
|
|
243
|
+
*
|
|
244
|
+
* export type SomeType<Depth extends TsRecursionTracker = TsRecursionStart> =
|
|
245
|
+
* Depth extends TsTooMuchRecursion
|
|
246
|
+
* ? 'Error: recursive object depth is too deep.'
|
|
247
|
+
* : SomeType<TsRecurse<Depth>>;
|
|
248
|
+
* ```
|
|
249
|
+
*
|
|
250
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
251
|
+
*/
|
|
160
252
|
export type TsRecurse<CurrentRecursion extends TsRecursionTracker> = TsRecursionArray[CurrentRecursion] extends TsRecursionTracker ? TsRecursionArray[CurrentRecursion] : TsTooMuchRecursion;
|
|
161
253
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { UnionToIntersection } from 'type-fest';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Require that the NonVoid parameter is not void. If it is void, the ErrorType or an
|
|
3
|
-
* type is returned. If it not void, the given SuccessType is returned.
|
|
2
|
+
* Require that the given `NonVoid` parameter is not void. If it is void, the `ErrorType` or an
|
|
3
|
+
* error string type is returned. If it not void, the given `SuccessType` is returned.
|
|
4
|
+
*
|
|
5
|
+
* @category Type
|
|
6
|
+
* @category Package : @augment-vir/common
|
|
7
|
+
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
|
|
4
8
|
*/
|
|
5
9
|
export type RequireNonVoid<NonVoid, SuccessType, ErrorType = 'Input should not be void'> = void extends NonVoid ? (NonVoid extends void ? ErrorType : SuccessType) : SuccessType;
|