@oazmi/superbuild 0.1.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.
- package/esm/_dnt.shims.d.ts +2 -0
- package/esm/_dnt.shims.d.ts.map +1 -0
- package/esm/_dnt.shims.js +57 -0
- package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts +598 -0
- package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.js +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts +617 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.js +671 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts +487 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.js +536 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts +266 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.js +318 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts +368 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.js +380 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts +711 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.js +1173 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts +171 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.js +308 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts +10 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.js +10 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts +168 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.js +236 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts +90 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.js +237 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts +213 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.js +363 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts +233 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.js +256 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts +1436 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.js +1730 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts +647 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.js +762 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts +538 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.js +626 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts +734 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js +764 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts +137 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.js +234 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts +391 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts.map +1 -0
- package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.js +8 -0
- package/esm/deps.d.ts +56 -0
- package/esm/deps.d.ts.map +1 -0
- package/esm/deps.js +37 -0
- package/esm/esbuild/metafile.d.ts +90 -0
- package/esm/esbuild/metafile.d.ts.map +1 -0
- package/esm/esbuild/metafile.js +275 -0
- package/esm/esbuild/native.d.ts +95 -0
- package/esm/esbuild/native.d.ts.map +1 -0
- package/esm/esbuild/native.js +127 -0
- package/esm/esbuild/outputfile.d.ts +86 -0
- package/esm/esbuild/outputfile.d.ts.map +1 -0
- package/esm/esbuild/outputfile.js +221 -0
- package/esm/esbuild/strongtypes.d.ts +90 -0
- package/esm/esbuild/strongtypes.d.ts.map +1 -0
- package/esm/esbuild/strongtypes.js +8 -0
- package/esm/esbuild/typedefs.d.ts +121 -0
- package/esm/esbuild/typedefs.d.ts.map +1 -0
- package/esm/esbuild/typedefs.js +55 -0
- package/esm/esbuild/weaktypes.d.ts +46 -0
- package/esm/esbuild/weaktypes.d.ts.map +1 -0
- package/esm/esbuild/weaktypes.js +8 -0
- package/esm/funcdefs.d.ts +89 -0
- package/esm/funcdefs.d.ts.map +1 -0
- package/esm/funcdefs.js +145 -0
- package/esm/mod.d.ts +4 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +2 -0
- package/esm/package.json +3 -0
- package/esm/plugins/emissions_driver.d.ts +33 -0
- package/esm/plugins/emissions_driver.d.ts.map +1 -0
- package/esm/plugins/emissions_driver.js +260 -0
- package/esm/plugins/long_build.d.ts +138 -0
- package/esm/plugins/long_build.d.ts.map +1 -0
- package/esm/plugins/long_build.js +288 -0
- package/esm/plugins/native_replica.d.ts +48 -0
- package/esm/plugins/native_replica.d.ts.map +1 -0
- package/esm/plugins/native_replica.js +122 -0
- package/esm/super/build.d.ts +53 -0
- package/esm/super/build.d.ts.map +1 -0
- package/esm/super/build.js +39 -0
- package/esm/super/build_context.d.ts +83 -0
- package/esm/super/build_context.d.ts.map +1 -0
- package/esm/super/build_context.js +124 -0
- package/esm/super/mod.d.ts +12 -0
- package/esm/super/mod.d.ts.map +1 -0
- package/esm/super/mod.js +9 -0
- package/esm/super/plugin.d.ts +23 -0
- package/esm/super/plugin.d.ts.map +1 -0
- package/esm/super/plugin.js +31 -0
- package/esm/super/plugin_build.d.ts +38 -0
- package/esm/super/plugin_build.d.ts.map +1 -0
- package/esm/super/plugin_build.js +198 -0
- package/esm/super/typedefs.d.ts +323 -0
- package/esm/super/typedefs.d.ts.map +1 -0
- package/esm/super/typedefs.js +10 -0
- package/esm/typedefs.d.ts +21 -0
- package/esm/typedefs.d.ts.map +1 -0
- package/esm/typedefs.js +5 -0
- package/license.md +37 -0
- package/package.json +88 -0
- package/readme.md +181 -0
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
/** utility functions for manipulating, generating, or parsing `string`s.
|
|
2
|
+
*
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import type { NumericArray } from "./typedefs.js";
|
|
6
|
+
/** configuration for customizing the hex-string representation made by {@link hexStringOfArray}.
|
|
7
|
+
*
|
|
8
|
+
* the default configuration is:
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const default_HexStringReprConfig: HexStringReprConfig = {
|
|
12
|
+
* sep: ", ",
|
|
13
|
+
* prefix: "0x",
|
|
14
|
+
* postfix: "",
|
|
15
|
+
* trailingSep: false,
|
|
16
|
+
* bra: "[",
|
|
17
|
+
* ket: "]",
|
|
18
|
+
* toUpperCase: true,
|
|
19
|
+
* radix: 16,
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface HexStringReprConfig {
|
|
24
|
+
/** separator character string between bytes.
|
|
25
|
+
*
|
|
26
|
+
* @defaultValue `", "`
|
|
27
|
+
*/
|
|
28
|
+
sep: string;
|
|
29
|
+
/** what string to prefix every hex-string byte with?
|
|
30
|
+
*
|
|
31
|
+
* @defaultValue `"0x"`
|
|
32
|
+
*/
|
|
33
|
+
prefix: string;
|
|
34
|
+
/** what string to add to the end of every hex-string byte?
|
|
35
|
+
*
|
|
36
|
+
* @defaultValue `""` (an empty string)
|
|
37
|
+
*/
|
|
38
|
+
postfix: string;
|
|
39
|
+
/** specify if you want to include a trailing {@link sep} after the final byte.
|
|
40
|
+
*
|
|
41
|
+
* - example output when `true`: `"[0x01, 0x02, 0x03,]"`,
|
|
42
|
+
* - example output when `false`: `"[0x01, 0x02, 0x03]"`.
|
|
43
|
+
*
|
|
44
|
+
* @defaultValue `false`
|
|
45
|
+
*/
|
|
46
|
+
trailingSep: boolean;
|
|
47
|
+
/** the left bracket string.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue `"["`
|
|
50
|
+
*/
|
|
51
|
+
bra: string;
|
|
52
|
+
/** the right bracket string.
|
|
53
|
+
*
|
|
54
|
+
* @defaultValue `"]"`
|
|
55
|
+
*/
|
|
56
|
+
ket: string;
|
|
57
|
+
/** specify if you want upper case letters for the hex-string.
|
|
58
|
+
*
|
|
59
|
+
* @defaultValue `true`
|
|
60
|
+
*/
|
|
61
|
+
toUpperCase: boolean;
|
|
62
|
+
/** provide an alternate number base to encode the numbers into.
|
|
63
|
+
* see {@link Number.toString} for more details.
|
|
64
|
+
*
|
|
65
|
+
* use `16` for a hex-string, or `2` for binary-string.
|
|
66
|
+
* accepted values must be between `2` and `36`.
|
|
67
|
+
*
|
|
68
|
+
* @defaultValue `16`
|
|
69
|
+
*/
|
|
70
|
+
radix: number;
|
|
71
|
+
}
|
|
72
|
+
/** convert an array of integer numbers to hex-string, for the sake of easing representation, or for visual purposes.
|
|
73
|
+
*
|
|
74
|
+
* to customize the appearance of the hex-string, or to use a different radix, use the {@link HexStringReprConfig} interface to change the default `options`.
|
|
75
|
+
*
|
|
76
|
+
* you must make sure that every element of your array `arr` is non-negative, in addition to being less than `options.radix ** 2`.
|
|
77
|
+
* since the default `options.radix === 16`, each of your number must be smaller than `256` on the default config.
|
|
78
|
+
*
|
|
79
|
+
* to invert the operation of this function (i.e. parse an array of integers from a string), use the {@link hexStringToArray} function with the same config `options`.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { assertEquals as assertEq } from "jsr:@std/assert"
|
|
84
|
+
*
|
|
85
|
+
* const
|
|
86
|
+
* my_binary_code = [1, 2, 3, 125, 126, 127, 192, 225, 255],
|
|
87
|
+
* my_custom_config: Partial<HexStringReprConfig> = {
|
|
88
|
+
* sep: ",",
|
|
89
|
+
* trailingSep: true,
|
|
90
|
+
* bra: "<",
|
|
91
|
+
* ket: ">",
|
|
92
|
+
* }
|
|
93
|
+
*
|
|
94
|
+
* const my_binary_code_repr = hexStringOfArray(my_binary_code, my_custom_config)
|
|
95
|
+
* assertEq(my_binary_code_repr, "<0x01,0x02,0x03,0x7D,0x7E,0x7F,0xC0,0xE1,0xFF,>")
|
|
96
|
+
*
|
|
97
|
+
* const my_custom_config2 = { ...my_custom_config, sep: "", trailingSep: false, prefix: "" }
|
|
98
|
+
* const my_binary_code_repr2 = hexStringOfArray(my_binary_code, my_custom_config2)
|
|
99
|
+
* assertEq(my_binary_code_repr2, "<0102037D7E7FC0E1FF>")
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare const hexStringOfArray: (arr: NumericArray, options: Partial<HexStringReprConfig>) => string;
|
|
103
|
+
/** convert hex-string back to an array of integers,
|
|
104
|
+
* provided that you know the exact {@link HexStringReprConfig} config of your particular hex-string.
|
|
105
|
+
*
|
|
106
|
+
* this function performs the inverse operation of {@link hexStringOfArray}, given that you use the same `options`.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* import { assertEquals as assertEq } from "jsr:@std/assert"
|
|
111
|
+
*
|
|
112
|
+
* const
|
|
113
|
+
* my_binary_code_repr = "<0x01,0x02,0x03,0x7D,0x7E,0x7F,0xC0,0xE1,0xFF,>",
|
|
114
|
+
* my_custom_config: Partial<HexStringReprConfig> = {
|
|
115
|
+
* sep: ",",
|
|
116
|
+
* trailingSep: true,
|
|
117
|
+
* bra: "<",
|
|
118
|
+
* ket: ">",
|
|
119
|
+
* }
|
|
120
|
+
*
|
|
121
|
+
* const my_binary_code: number[] = hexStringToArray(my_binary_code_repr, my_custom_config)
|
|
122
|
+
*
|
|
123
|
+
* assertEq(my_binary_code, [1, 2, 3, 125, 126, 127, 192, 225, 255])
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare const hexStringToArray: (hex_str: string, options: Partial<HexStringReprConfig>) => Array<number>;
|
|
127
|
+
/** a shorthand function for either getting the upper or lower case of a string `str`, based on the numeric `option`.
|
|
128
|
+
*
|
|
129
|
+
* options:
|
|
130
|
+
* - `option > 0` => input string is turned to uppercase
|
|
131
|
+
* - `option < 0` => input string is turned to lowercase
|
|
132
|
+
* - `option = 0` => input string is unmodified
|
|
133
|
+
*/
|
|
134
|
+
export declare const toUpperOrLowerCase: (str: string, option: 1 | 0 | -1) => string;
|
|
135
|
+
/** finds the index of next uppercase character, starting from index `start` and optionally ending at exclusive-index `end`.
|
|
136
|
+
* if an uppercase character is not found, then `undefined` is returned.
|
|
137
|
+
*/
|
|
138
|
+
export declare const findNextUpperCase: (str: string, start?: number, end?: number | undefined) => number | undefined;
|
|
139
|
+
/** finds the index of next lowercase character, starting from index `start` and optionally ending at exclusive-index `end`.
|
|
140
|
+
* if a lowercase character is not found, then `undefined` is returned.
|
|
141
|
+
*/
|
|
142
|
+
export declare const findNextLowerCase: (str: string, start?: number, end?: number | undefined) => number | undefined;
|
|
143
|
+
/** find either the next upper or next lower case character index in string `str`, based on the numeric `option`,
|
|
144
|
+
* starting from index `start` and optionally ending at exclusive-index `end`.
|
|
145
|
+
* if your selected uppercase/lowercase option is not found, or if your `option === 0`, then `undefined` is returned.
|
|
146
|
+
*
|
|
147
|
+
* this function is just a composition of the functions {@link findNextUpperCase} and {@link findNextLowerCase}.
|
|
148
|
+
*/
|
|
149
|
+
export declare const findNextUpperOrLowerCase: (str: string, option: 1 | -1, start?: number, end?: number | undefined) => number | undefined;
|
|
150
|
+
/** this interface is used by various functions in this submodule to parse and unparse word tokens of various styles.
|
|
151
|
+
* it provides the description of your tokens, so that it can be broken down into words, or vice-versa.
|
|
152
|
+
*
|
|
153
|
+
* here is a list of functions that make use of this interface:
|
|
154
|
+
* - {@link wordsToToken}, {@link tokenToWords}, {@link convertCase}, {@link convertCase_Factory}
|
|
155
|
+
*
|
|
156
|
+
* the `NamingCaseTuple` consists of the following configurable options, as an array:
|
|
157
|
+
*
|
|
158
|
+
* - index `0`: specifies the `first_letter_upper` option: <br>
|
|
159
|
+
* _is the first letter an upper case letter?_
|
|
160
|
+
* - ` 1` => yes.
|
|
161
|
+
* - `-1` => no.
|
|
162
|
+
* - ` 0` => impartial (in other words, it will depend-on/inherit `word_first_letter_upper`).
|
|
163
|
+
*
|
|
164
|
+
* - index `1`: specifies the `word_first_letter_upper` option: <br>
|
|
165
|
+
* _is the first letter of each word an upper case letter?_
|
|
166
|
+
* - ` 1` => yes.
|
|
167
|
+
* - `-1` => no.
|
|
168
|
+
* - ` 0` => preserve original.
|
|
169
|
+
*
|
|
170
|
+
* - index `2`: specifies the `rest_word_letters_upper` option: <br>
|
|
171
|
+
* _are the remaining letters in each word in upper case?_
|
|
172
|
+
* - ` 1` => yes.
|
|
173
|
+
* - `-1` => no.
|
|
174
|
+
* - ` 0` => preserve original.
|
|
175
|
+
*
|
|
176
|
+
* - index `3`: specifies the `delimiter` option: <br>
|
|
177
|
+
* _what is the separator between words in a single token (if any)?_
|
|
178
|
+
* - ` ""` => (default) indicates that there's no delimiter character.
|
|
179
|
+
* so we must rely on letter case change to detect word splitting.
|
|
180
|
+
* this is what is used for camelCase and PascalCase.
|
|
181
|
+
* - ` "_"` => delimiter is used by snake_case.
|
|
182
|
+
* - ` "-"` => delimiter is used by kebab-case.
|
|
183
|
+
* - `string` => define a custom delimiter string.
|
|
184
|
+
*
|
|
185
|
+
* - index `4`: specifies the `prefix` option: <br>
|
|
186
|
+
* _what is the prefix string (if any)?_
|
|
187
|
+
*
|
|
188
|
+
* - index `5`: specifies the `suffix` option: <br>
|
|
189
|
+
* _what is the suffix string (if any)?_
|
|
190
|
+
*/
|
|
191
|
+
export type NamingCaseTuple = [
|
|
192
|
+
first_letter_upper: 1 | 0 | -1,
|
|
193
|
+
word_first_letter_upper: 1 | 0 | -1,
|
|
194
|
+
rest_word_letters_upper: 1 | 0 | -1,
|
|
195
|
+
delimiter?: "" | "_" | "-" | string,
|
|
196
|
+
prefix?: string,
|
|
197
|
+
suffix?: string
|
|
198
|
+
];
|
|
199
|
+
/** convert an array of `words` to a single token, based on the configuration provided in `casetype`.
|
|
200
|
+
*
|
|
201
|
+
* to reverse the operation of this function, use the {@link tokenToWords} function with the same `casetype` config that you use here.
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```ts
|
|
205
|
+
* import { assertEquals as eq } from "jsr:@std/assert"
|
|
206
|
+
*
|
|
207
|
+
* const words = ["convert", "windows", "path", "to", "unix"]
|
|
208
|
+
*
|
|
209
|
+
* const
|
|
210
|
+
* snakeCase: NamingCaseTuple = [-1, -1, -1, "_"],
|
|
211
|
+
* kebabCase: NamingCaseTuple = [-1, -1, -1, "-"],
|
|
212
|
+
* camelCase: NamingCaseTuple = [-1, 1, -1, ""],
|
|
213
|
+
* pascalCase: NamingCaseTuple = [1, 1, -1, ""],
|
|
214
|
+
* screamingSnakeCase: NamingCaseTuple = [1, 1, 1, "_"],
|
|
215
|
+
* screamingKebabCase: NamingCaseTuple = [1, 1, 1, "-"]
|
|
216
|
+
*
|
|
217
|
+
* eq(wordsToToken(snakeCase, words), "convert_windows_path_to_unix")
|
|
218
|
+
* eq(wordsToToken(kebabCase, words), "convert-windows-path-to-unix")
|
|
219
|
+
* eq(wordsToToken(camelCase, words), "convertWindowsPathToUnix")
|
|
220
|
+
* eq(wordsToToken(pascalCase, words), "ConvertWindowsPathToUnix")
|
|
221
|
+
* eq(wordsToToken(screamingSnakeCase, words), "CONVERT_WINDOWS_PATH_TO_UNIX")
|
|
222
|
+
* eq(wordsToToken(screamingKebabCase, words), "CONVERT-WINDOWS-PATH-TO-UNIX")
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
export declare const wordsToToken: (casetype: NamingCaseTuple, words: string[]) => string;
|
|
226
|
+
/** breakdown a single `token` into its constituent words, based on the configuration provided in `casetype`.
|
|
227
|
+
*
|
|
228
|
+
* this function performs the inverse operation of {@link wordsToToken}, provided that you use the same `casetype` config.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* import { assertEquals as eq } from "jsr:@std/assert"
|
|
233
|
+
*
|
|
234
|
+
* const
|
|
235
|
+
* snakeCase: NamingCaseTuple = [-1, -1, -1, "_"],
|
|
236
|
+
* kebabCase: NamingCaseTuple = [-1, -1, -1, "-"],
|
|
237
|
+
* camelCase: NamingCaseTuple = [-1, 1, -1, ""],
|
|
238
|
+
* pascalCase: NamingCaseTuple = [1, 1, -1, ""],
|
|
239
|
+
* screamingSnakeCase: NamingCaseTuple = [1, 1, 1, "_"],
|
|
240
|
+
* screamingKebabCase: NamingCaseTuple = [1, 1, 1, "-"]
|
|
241
|
+
*
|
|
242
|
+
* // the expected list of words that our tokens should breakdown into
|
|
243
|
+
* const words = ["convert", "windows", "path", "to", "unix"]
|
|
244
|
+
*
|
|
245
|
+
* eq(tokenToWords(snakeCase, "convert_windows_path_to_unix"), words)
|
|
246
|
+
* eq(tokenToWords(kebabCase, "convert-windows-path-to-unix"), words)
|
|
247
|
+
* eq(tokenToWords(camelCase, "convertWindowsPathToUnix"), words)
|
|
248
|
+
* eq(tokenToWords(pascalCase, "ConvertWindowsPathToUnix"), words)
|
|
249
|
+
* eq(tokenToWords(screamingSnakeCase, "CONVERT_WINDOWS_PATH_TO_UNIX"), words)
|
|
250
|
+
* eq(tokenToWords(screamingKebabCase, "CONVERT-WINDOWS-PATH-TO-UNIX"), words)
|
|
251
|
+
* ```
|
|
252
|
+
*/
|
|
253
|
+
export declare const tokenToWords: (casetype: NamingCaseTuple, token: string) => string[];
|
|
254
|
+
/** converts a string token from one case type to another,
|
|
255
|
+
* by performing a composition operation of {@link tokenToWords} and {@link wordsToToken}.
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```ts
|
|
259
|
+
* import { assertEquals as eq } from "jsr:@std/assert"
|
|
260
|
+
*
|
|
261
|
+
* const
|
|
262
|
+
* snakeCase: NamingCaseTuple = [-1, -1, -1, "_"],
|
|
263
|
+
* kebabCase: NamingCaseTuple = [-1, -1, -1, "-"],
|
|
264
|
+
* camelCase: NamingCaseTuple = [-1, 1, -1, ""],
|
|
265
|
+
* pascalCase: NamingCaseTuple = [1, 1, -1, ""],
|
|
266
|
+
* screamingSnakeCase: NamingCaseTuple = [1, 1, 1, "_"],
|
|
267
|
+
* screamingKebabCase: NamingCaseTuple = [1, 1, 1, "-"]
|
|
268
|
+
*
|
|
269
|
+
* eq(convertCase(
|
|
270
|
+
* snakeCase, screamingSnakeCase,
|
|
271
|
+
* "convert_windows_path_to_unix",
|
|
272
|
+
* ), "CONVERT_WINDOWS_PATH_TO_UNIX")
|
|
273
|
+
*
|
|
274
|
+
* eq(convertCase(
|
|
275
|
+
* kebabCase, camelCase,
|
|
276
|
+
* "convert-windows-path-to-unix",
|
|
277
|
+
* ), "convertWindowsPathToUnix")
|
|
278
|
+
*
|
|
279
|
+
* eq(convertCase(
|
|
280
|
+
* camelCase, kebabCase,
|
|
281
|
+
* "convertWindowsPathToUnix",
|
|
282
|
+
* ), "convert-windows-path-to-unix")
|
|
283
|
+
*
|
|
284
|
+
* eq(convertCase(
|
|
285
|
+
* kebabCase, kebabCase,
|
|
286
|
+
* "convert-windows-path-to-unix",
|
|
287
|
+
* ), "convert-windows-path-to-unix")
|
|
288
|
+
*
|
|
289
|
+
* eq(convertCase(
|
|
290
|
+
* screamingKebabCase, pascalCase,
|
|
291
|
+
* "CONVERT-WINDOWS-PATH-TO-UNIX",
|
|
292
|
+
* ), "ConvertWindowsPathToUnix")
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
export declare const convertCase: (from_casetype: NamingCaseTuple, to_casetype: NamingCaseTuple, token: string) => string;
|
|
296
|
+
/** generate a specific case converter. convenient for continued use.
|
|
297
|
+
*
|
|
298
|
+
* see {@link kebabToCamel} and {@link camelToKebab} as examples that are generated via this function.
|
|
299
|
+
*/
|
|
300
|
+
export declare const convertCase_Factory: (from_casetype: NamingCaseTuple, to_casetype: NamingCaseTuple) => ((token: string) => string);
|
|
301
|
+
/** the token name casing configuration for a "snake_case". */
|
|
302
|
+
export declare const snakeCase: NamingCaseTuple;
|
|
303
|
+
/** the token name casing configuration for a "kebab-case". */
|
|
304
|
+
export declare const kebabCase: NamingCaseTuple;
|
|
305
|
+
/** the token name casing configuration for a "camelCase". */
|
|
306
|
+
export declare const camelCase: NamingCaseTuple;
|
|
307
|
+
/** the token name casing configuration for a "PascalCase". */
|
|
308
|
+
export declare const pascalCase: NamingCaseTuple;
|
|
309
|
+
/** the token name casing configuration for a "SCREAMING_SNAKE_CASE". */
|
|
310
|
+
export declare const screamingSnakeCase: NamingCaseTuple;
|
|
311
|
+
/** the token name casing configuration for a "SCREAMING-SNAKE-CASE". */
|
|
312
|
+
export declare const screamingKebabCase: NamingCaseTuple;
|
|
313
|
+
/** a function to convert snake case token to a kebab case token. */
|
|
314
|
+
export declare const snakeToKebab: (token: string) => string;
|
|
315
|
+
/** a function to convert snake case token to a camel case token. */
|
|
316
|
+
export declare const snakeToCamel: (token: string) => string;
|
|
317
|
+
/** a function to convert snake case token to a pascal case token. */
|
|
318
|
+
export declare const snakeToPascal: (token: string) => string;
|
|
319
|
+
/** a function to convert kebab case token to a snake case token. */
|
|
320
|
+
export declare const kebabToSnake: (token: string) => string;
|
|
321
|
+
/** a function to convert kebab case token to a camel case token. */
|
|
322
|
+
export declare const kebabToCamel: (token: string) => string;
|
|
323
|
+
/** a function to convert kebab case token to a pascal case token. */
|
|
324
|
+
export declare const kebabToPascal: (token: string) => string;
|
|
325
|
+
/** a function to convert camel case token to a snake case token. */
|
|
326
|
+
export declare const camelToSnake: (token: string) => string;
|
|
327
|
+
/** a function to convert camel case token to a kebab case token. */
|
|
328
|
+
export declare const camelToKebab: (token: string) => string;
|
|
329
|
+
/** a function to convert camel case token to a pascal case token. */
|
|
330
|
+
export declare const camelToPascal: (token: string) => string;
|
|
331
|
+
/** a function to convert pascal case token to a snake case token. */
|
|
332
|
+
export declare const PascalToSnake: (token: string) => string;
|
|
333
|
+
/** a function to convert pascal case token to a kebab case token. */
|
|
334
|
+
export declare const PascalToKebab: (token: string) => string;
|
|
335
|
+
/** a function to convert pascal case token to a camel case token. */
|
|
336
|
+
export declare const PascalTocamel: (token: string) => string;
|
|
337
|
+
/** surround a string with double quotation.
|
|
338
|
+
*
|
|
339
|
+
* someone should nominate this function for 2025 mathematics nobel prize.
|
|
340
|
+
*/
|
|
341
|
+
export declare const quote: (str: string) => string;
|
|
342
|
+
/** reversing a string is not natively supported by javascript, and performing it is not so trivial when considering that
|
|
343
|
+
* you can have composite UTF-16 characters (such as emojis and characters with accents).
|
|
344
|
+
*
|
|
345
|
+
* see this excellent solution in stackoverflow for reversing a string: [stackoverflow.com/a/60056845](https://stackoverflow.com/a/60056845).
|
|
346
|
+
* we use the slightly less reliable technique provided by the answer, as it has a better browser support.
|
|
347
|
+
*/
|
|
348
|
+
export declare const reverseString: (input: string) => string;
|
|
349
|
+
/** find the longest common prefix among a list of `inputs`.
|
|
350
|
+
*
|
|
351
|
+
* for efficiency, this function starts off by using the shortest string among `inputs`, then performs a binary search.
|
|
352
|
+
*
|
|
353
|
+
* @example
|
|
354
|
+
* ```ts
|
|
355
|
+
* import { assertEquals as assertEq } from "jsr:@std/assert"
|
|
356
|
+
*
|
|
357
|
+
* assertEq(commonPrefix([
|
|
358
|
+
* "C:/Hello/World/This/Is/An/Example/Bla.cs",
|
|
359
|
+
* "C:/Hello/World/This/Is/Not/An/Example/",
|
|
360
|
+
* "C:/Hello/Earth/Bla/Bla/Bla",
|
|
361
|
+
* ]), "C:/Hello/")
|
|
362
|
+
*
|
|
363
|
+
* assertEq(commonPrefix([
|
|
364
|
+
* "C:/Hello/World/This/Is/An/Example/Bla.cs",
|
|
365
|
+
* "C:/Hello/World/This/is/an/example/bla.cs",
|
|
366
|
+
* "C:/Hello/World/This/Is/Not/An/Example/",
|
|
367
|
+
* ]), "C:/Hello/World/This/")
|
|
368
|
+
*
|
|
369
|
+
* assertEq(commonPrefix([
|
|
370
|
+
* "C:/Hello/World/Users/This/Is/An/Example/Bla.cs",
|
|
371
|
+
* "C:/Hello/World Users/This/Is/An/example/bla.cs",
|
|
372
|
+
* "C:/Hello/World-Users/This/Is/Not/An/Example/",
|
|
373
|
+
* ]), "C:/Hello/World")
|
|
374
|
+
* ```
|
|
375
|
+
*/
|
|
376
|
+
export declare const commonPrefix: (inputs: string[]) => string;
|
|
377
|
+
/** find the longest common suffix among a list of `inputs`.
|
|
378
|
+
*
|
|
379
|
+
* for efficiency, this function simply reverses the character ordering of each input, and then uses {@link commonPrefix}.
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* ```ts
|
|
383
|
+
* import { assertEquals as assertEq } from "jsr:@std/assert"
|
|
384
|
+
*
|
|
385
|
+
* assertEq(commonSuffix([
|
|
386
|
+
* "file:///C:/Hello/World/This/Is/An/Example/Bla.cs",
|
|
387
|
+
* "file:///C:/Hello/Users/This/Is-An/Example/Bla.cs",
|
|
388
|
+
* "file:///C:/Hello/Users/This/Is/YetAnother-An/Example/Bla.cs",
|
|
389
|
+
* "file:///C:/Hello/Earth/This/Is/Not/An/Example/Bla.cs",
|
|
390
|
+
* ]), "An/Example/Bla.cs")
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
export declare const commonSuffix: (inputs: string[]) => string;
|
|
394
|
+
/** this regex contains all characters that need to be escaped in a regex.
|
|
395
|
+
* it is basically defined as `/[.*+?^${}()|[\]\\]/g`.
|
|
396
|
+
*/
|
|
397
|
+
export declare const escapeLiteralCharsRegex: RegExp;
|
|
398
|
+
/** escape a string so that it can be matched exactly in a regex constructor.
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* ```ts
|
|
402
|
+
* import { assertEquals as assertEq } from "jsr:@std/assert"
|
|
403
|
+
*
|
|
404
|
+
* const
|
|
405
|
+
* substring = String.raw`(\|[++h.e.\\.o++]|/)`,
|
|
406
|
+
* substring_escaped = escapeLiteralStringForRegex(substring),
|
|
407
|
+
* my_regex = new RegExp(`${substring_escaped}\\(world\\)`),
|
|
408
|
+
* my_string = String.raw`this string consist of (\|[++h.e.\\.o++]|/)(world) positioned somewhere in the middle`
|
|
409
|
+
*
|
|
410
|
+
* assertEq(my_regex.test(my_string), true)
|
|
411
|
+
* ```
|
|
412
|
+
*/
|
|
413
|
+
export declare const escapeLiteralStringForRegex: (str: string) => string;
|
|
414
|
+
/** replace the `prefix` of of a given `input` string with the given replace `value`.
|
|
415
|
+
* if a matching prefix is not found, then `undefined` will be returned.
|
|
416
|
+
*
|
|
417
|
+
* @param input the input string to apply the prefix replacement to.
|
|
418
|
+
* @param prefix the prefix string of the input to replace.
|
|
419
|
+
* @param value the optional value to replace the the prefix with. defaults to `""` (empty string).
|
|
420
|
+
* @returns if a matching `prefix` is found in the `input`, then it will be replaced with the given `value`.
|
|
421
|
+
* otherwise, `undefined` will be returned if the `input` does not begin with the `prefix`.
|
|
422
|
+
*
|
|
423
|
+
* @example
|
|
424
|
+
* ```ts
|
|
425
|
+
* import { assertEquals } from "jsr:@std/assert"
|
|
426
|
+
*
|
|
427
|
+
* // aliasing our function for brevity
|
|
428
|
+
* const
|
|
429
|
+
* eq = assertEquals,
|
|
430
|
+
* fn = replacePrefix
|
|
431
|
+
*
|
|
432
|
+
* eq(fn("hello-world/abc-123", "hello-", "goodbye-"), "goodbye-world/abc-123")
|
|
433
|
+
* eq(fn("hello-world/abc-123", "hello-"), "world/abc-123")
|
|
434
|
+
* eq(fn("hello-world/abc-123", "abc"), undefined)
|
|
435
|
+
* eq(fn("hello-world/abc-123", ""), "hello-world/abc-123")
|
|
436
|
+
* eq(fn("hello-world/abc-123", "", "xyz-"), "xyz-hello-world/abc-123")
|
|
437
|
+
* ```
|
|
438
|
+
*/
|
|
439
|
+
export declare const replacePrefix: (input: string, prefix: string, value?: string) => string | undefined;
|
|
440
|
+
/** replace the `suffix` of of a given `input` string with the given replace `value`.
|
|
441
|
+
* if a matching suffix is not found, then `undefined` will be returned.
|
|
442
|
+
*
|
|
443
|
+
* @param input the input string to apply the suffix replacement to.
|
|
444
|
+
* @param suffix the suffix string of the input to replace.
|
|
445
|
+
* @param value the optional value to replace the the suffix with. defaults to `""` (empty string).
|
|
446
|
+
* @returns if a matching `suffix` is found in the `input`, then it will be replaced with the given `value`.
|
|
447
|
+
* otherwise, `undefined` will be returned if the `input` does not begin with the `suffix`.
|
|
448
|
+
*
|
|
449
|
+
* @example
|
|
450
|
+
* ```ts
|
|
451
|
+
* import { assertEquals } from "jsr:@std/assert"
|
|
452
|
+
*
|
|
453
|
+
* // aliasing our function for brevity
|
|
454
|
+
* const
|
|
455
|
+
* eq = assertEquals,
|
|
456
|
+
* fn = replaceSuffix
|
|
457
|
+
*
|
|
458
|
+
* eq(fn("hello-world/abc-123", "-123", "-xyz"), "hello-world/abc-xyz")
|
|
459
|
+
* eq(fn("hello-world/abc-123", "-123"), "hello-world/abc")
|
|
460
|
+
* eq(fn("hello-world/abc-123", "abc"), undefined)
|
|
461
|
+
* eq(fn("hello-world/abc-123", ""), "hello-world/abc-123")
|
|
462
|
+
* eq(fn("hello-world/abc-123", "", "-xyz"), "hello-world/abc-123-xyz")
|
|
463
|
+
* ```
|
|
464
|
+
*/
|
|
465
|
+
export declare const replaceSuffix: (input: string, suffix: string, value?: string) => string | undefined;
|
|
466
|
+
/** remove comments and trailing commas from a "jsonc" (json with comments) string.
|
|
467
|
+
*
|
|
468
|
+
* in a jsonc-string, there three additional features that supersede a regular json-string:
|
|
469
|
+
* - inline comments: anything affer a double forward-slash `//` (that is not part of a string) is a comment, until the end of the line.
|
|
470
|
+
* - multiline comments: anything inside the c-like multiline comment block (`/* ... *\/`) is a comment.
|
|
471
|
+
* - trailing commas: you can add up to one trailing comma (`,`) after the last element of an array, or the last entry of a dictionary.
|
|
472
|
+
*
|
|
473
|
+
* moreover, this function also trims unnecessary whitespaces and newlines outside of string literals.
|
|
474
|
+
*
|
|
475
|
+
* once you have converted your jsonc-string to a json-string, you will probably want to use `JSON.parse` to parse the output.
|
|
476
|
+
*
|
|
477
|
+
* @param jsonc_string - The jsonc string from which comments need to be removed.
|
|
478
|
+
* @returns A string representing the jsonc-equivalent content, without comments and trailing commas.
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* ```ts
|
|
482
|
+
* import { assertEquals } from "jsr:@std/assert"
|
|
483
|
+
*
|
|
484
|
+
* const my_jsonc = `
|
|
485
|
+
* {
|
|
486
|
+
* // inline comment
|
|
487
|
+
* "key1": "value1",
|
|
488
|
+
* /* block comment *\/ "key2": 2,
|
|
489
|
+
* /* multiline block comment
|
|
490
|
+
* * hello
|
|
491
|
+
* * world
|
|
492
|
+
* *\/
|
|
493
|
+
* "key3": {
|
|
494
|
+
* "//key4": "value4 //",
|
|
495
|
+
* "jsonInComment": "/* { \\"key\\": \\"value\\" } *\/",
|
|
496
|
+
* "trickyEscapes": "a string with \\\\\\"escaped quotes\\\\\\" and /* fake comment *\/ inside and \\newline",
|
|
497
|
+
* },
|
|
498
|
+
* "array1": [
|
|
499
|
+
* "/* not a comment *\/",
|
|
500
|
+
* "// also not a comment",
|
|
501
|
+
* "has a trailing comma" // trailing comma below \t \t tab characters.
|
|
502
|
+
* , // <-- trailing comma here. and some more \t \t tab characters.
|
|
503
|
+
* ],
|
|
504
|
+
* /* Block comment containing JSON:
|
|
505
|
+
* { "fakeKey": "fakeValue" },
|
|
506
|
+
* *\/
|
|
507
|
+
* "arr//ay2": [
|
|
508
|
+
* true, false, { "1": false, "2": true, },
|
|
509
|
+
* 42,7,
|
|
510
|
+
* // scientific notation
|
|
511
|
+
* 1e10,],
|
|
512
|
+
* }`
|
|
513
|
+
*
|
|
514
|
+
* const expected_value = {
|
|
515
|
+
* key1: "value1",
|
|
516
|
+
* key2: 2,
|
|
517
|
+
* key3: {
|
|
518
|
+
* "//key4": "value4 //",
|
|
519
|
+
* jsonInComment: `/* { "key": "value" } *\/`,
|
|
520
|
+
* trickyEscapes: `a string with \\"escaped quotes\\" and /* fake comment *\/ inside and \newline`,
|
|
521
|
+
* },
|
|
522
|
+
* array1: [
|
|
523
|
+
* "/* not a comment *\/",
|
|
524
|
+
* "// also not a comment",
|
|
525
|
+
* "has a trailing comma",
|
|
526
|
+
* ],
|
|
527
|
+
* "arr//ay2": [ true, false, { "1": false, "2": true }, 42, 7, 10000000000, ]
|
|
528
|
+
* }
|
|
529
|
+
*
|
|
530
|
+
* const
|
|
531
|
+
* my_json = jsoncRemoveComments(my_jsonc),
|
|
532
|
+
* my_parsed_json = JSON.parse(my_json)
|
|
533
|
+
*
|
|
534
|
+
* assertEquals(my_parsed_json, expected_value)
|
|
535
|
+
* ```
|
|
536
|
+
*/
|
|
537
|
+
export declare const jsoncRemoveComments: (jsonc_string: string) => string;
|
|
538
|
+
//# sourceMappingURL=stringman.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringman.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.ts"],"names":[],"mappings":"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"}
|