@gershy/clearing 0.0.7 → 0.0.8
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/cmp/types/global.d.ts +78 -214
- package/package.json +1 -1
package/cmp/types/global.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
declare global {
|
|
2
2
|
|
|
3
3
|
// Util
|
|
4
|
-
type Fn<A=any[], T=any> = (...args: A) => T;
|
|
5
|
-
type Obj<V = any> = { [
|
|
4
|
+
type Fn<A extends any[] = any[], T = any> = (...args: A) => T;
|
|
5
|
+
type Obj<V = any> = { [k: string]: V };
|
|
6
6
|
|
|
7
7
|
// Differentiate between "map" and "rec" ("record") - maps have arbitrary keys; recs have fixed keys
|
|
8
8
|
type ObjMode<O extends { [K: string]: any }> = O extends { [K in infer KK]: any } ? (string extends KK ? 'map' : 'rec') : never;
|
|
@@ -12,15 +12,15 @@ declare global {
|
|
|
12
12
|
type Itr<O extends Obj> = Iterable<[ ObjKeys<O>, ObjVals<O> ]>;
|
|
13
13
|
type Json = null | boolean | number | string | Json[] | { [K: string]: Json };
|
|
14
14
|
type Skip = undefined;
|
|
15
|
-
type SkipNever<V> = V extends Skip ? Skip extends V ? never : V : V;
|
|
15
|
+
type SkipNever<V> = V extends Skip ? Skip extends V ? never : V : V;
|
|
16
16
|
type UGH = any; // Use when necessary to escape typing because typescript has failed us
|
|
17
17
|
|
|
18
18
|
type Dive<O extends Obj, K extends readonly string[], D = undefined> =
|
|
19
|
-
K extends [ infer K0, ...infer KM ]
|
|
19
|
+
K extends [ infer K0 extends string, ...infer KM extends string[] ]
|
|
20
20
|
? K0 extends keyof O
|
|
21
21
|
? (ObjMode<O> extends 'map' ? D : never) | Dive<O[K0], KM, D>
|
|
22
22
|
: D
|
|
23
|
-
: O;
|
|
23
|
+
: O;
|
|
24
24
|
|
|
25
25
|
type CharSet = {
|
|
26
26
|
str: string,
|
|
@@ -41,7 +41,7 @@ declare global {
|
|
|
41
41
|
(i: unknown, fn: FunctionConstructor): i is Fn,
|
|
42
42
|
(i: unknown, fn: SymbolConstructor): i is symbol,
|
|
43
43
|
<T>(i: unknown, prm: PromiseConstructor): i is Promise<T>,
|
|
44
|
-
<C>(i: unknown, cls: C):
|
|
44
|
+
<C extends abstract new (...args: any) => any>(i: unknown, cls: C): i is InstanceType<C>
|
|
45
45
|
};
|
|
46
46
|
const clearing: {
|
|
47
47
|
|
|
@@ -114,264 +114,128 @@ declare global {
|
|
|
114
114
|
const upper: unique symbol;
|
|
115
115
|
// </SYMBOLS>
|
|
116
116
|
|
|
117
|
-
// Typing only
|
|
118
|
-
const iden: unique symbol; // associate types with their *direct* constructor
|
|
119
|
-
|
|
120
|
-
interface JSON { parse: (val: Buffer) => any };
|
|
121
|
-
|
|
122
|
-
interface ProtoWithSymbols {
|
|
123
|
-
[add]: undefined
|
|
124
|
-
[at]: undefined
|
|
125
|
-
[assert]: undefined
|
|
126
|
-
[bind]: undefined
|
|
127
|
-
[count]: undefined
|
|
128
|
-
[cut]: undefined
|
|
129
|
-
[dive]: undefined
|
|
130
|
-
[empty]: undefined
|
|
131
|
-
[fire]: undefined
|
|
132
|
-
[group]: undefined
|
|
133
|
-
[has]: undefined
|
|
134
|
-
[hasHead]: undefined
|
|
135
|
-
[hasTail]: undefined
|
|
136
|
-
[indent]: undefined
|
|
137
|
-
[limn]: undefined
|
|
138
|
-
[lower]: undefined
|
|
139
|
-
[mod]: undefined
|
|
140
|
-
[map]: undefined
|
|
141
|
-
[mapk]: undefined
|
|
142
|
-
[merge]: undefined
|
|
143
|
-
[padHead]: undefined
|
|
144
|
-
[padTail]: undefined
|
|
145
|
-
[rem]: undefined
|
|
146
|
-
[find]: undefined
|
|
147
|
-
[slash]: undefined
|
|
148
|
-
[slice]: undefined
|
|
149
|
-
[suppress]: undefined
|
|
150
|
-
[toArr]: undefined
|
|
151
|
-
[toNum]: undefined
|
|
152
|
-
[toObj]: undefined
|
|
153
|
-
[toStr]: undefined
|
|
154
|
-
[upper]: undefined
|
|
155
|
-
};
|
|
156
|
-
|
|
157
117
|
interface ErrorConstructor {
|
|
158
118
|
[assert]: <V = any>(args: V, fn: (args: V) => boolean) => void
|
|
159
|
-
}
|
|
160
|
-
interface Error
|
|
119
|
+
}
|
|
120
|
+
interface Error {
|
|
161
121
|
[mod]: (props: { [K: string]: any }) => Error,
|
|
162
122
|
[fire]: (props?: { [K: string]: any }) => never,
|
|
163
123
|
[suppress]: () => Error,
|
|
164
|
-
|
|
165
|
-
[limn]: (seen?: Map) => (Obj<Json> & {
|
|
124
|
+
[limn]: (seen?: Map<any, any>) => (Obj<Json> & {
|
|
166
125
|
form: string,
|
|
167
126
|
msg: string,
|
|
168
127
|
trace: string[],
|
|
169
128
|
cause: null | ReturnType<Error[typeof limn]>
|
|
170
129
|
})
|
|
171
|
-
}
|
|
130
|
+
}
|
|
172
131
|
|
|
173
|
-
interface ArrayConstructor {}
|
|
174
|
-
interface Array<T>
|
|
175
|
-
[iden]: 'arr',
|
|
132
|
+
interface ArrayConstructor {}
|
|
133
|
+
interface Array<T> {
|
|
176
134
|
[has]: (val: unknown) => boolean,
|
|
177
|
-
[map]:
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
>(
|
|
181
|
-
fn: Fn
|
|
182
|
-
): Exclude<ReturnType<Fn>, Skip>[]
|
|
183
|
-
},
|
|
184
|
-
[add]: <TT extends T>(val: TT) => TT,
|
|
185
|
-
[rem]: <TT extends T>(val: TT) => void,
|
|
135
|
+
[map]: <Fn extends (v: T, i: number) => any>(fn: Fn) => Exclude<ReturnType<Fn>, Skip>[],
|
|
136
|
+
[add]: <TT extends T>(val: TT) => TT,
|
|
137
|
+
[rem]: <TT extends T>(val: TT) => void,
|
|
186
138
|
[count]: () => number,
|
|
187
|
-
[empty]: (
|
|
188
|
-
[toObj]: <
|
|
189
|
-
[find]:
|
|
139
|
+
[empty]: () => boolean,
|
|
140
|
+
[toObj]: <R extends readonly [string, any]>(fn: (v: T, n: number) => Skip | R) => { [K: string]: any },
|
|
141
|
+
[find]: (fn: (val: T, n: number) => any) => ({ found: true, val: T, ind: number } | { found: false, val: null, ind: null }),
|
|
190
142
|
[group]: <G extends string>(fn: (v: T) => Skip | G) => { [K in G]?: T[] }
|
|
191
|
-
}
|
|
143
|
+
}
|
|
192
144
|
|
|
193
|
-
interface FunctionConstructor {}
|
|
194
|
-
interface Function
|
|
195
|
-
[
|
|
196
|
-
|
|
197
|
-
<
|
|
198
|
-
Fn extends (...args: any[]) => any,
|
|
199
|
-
To
|
|
200
|
-
>(
|
|
201
|
-
this: Fn,
|
|
202
|
-
to: To
|
|
203
|
-
): ((...args: Parameters<Fn> extends [ infer A0, ...infer AM ] ? AM : never) => ReturnType<Fn>)
|
|
204
|
-
}
|
|
205
|
-
};
|
|
145
|
+
interface FunctionConstructor {}
|
|
146
|
+
interface Function {
|
|
147
|
+
[bind]: <Fn extends (...args: any[]) => any, To>(this: Fn, to: To) => ((...args: Parameters<Fn> extends [ infer A0, ...infer AM ] ? AM : never) => ReturnType<Fn>)
|
|
148
|
+
}
|
|
206
149
|
|
|
207
150
|
interface NumberConstructor {
|
|
208
151
|
[int32]: number,
|
|
209
152
|
[int64]: number
|
|
210
|
-
}
|
|
211
|
-
interface Number
|
|
212
|
-
[iden]: 'num',
|
|
153
|
+
}
|
|
154
|
+
interface Number {
|
|
213
155
|
[char]: () => string,
|
|
214
156
|
[isInt]: () => boolean,
|
|
215
157
|
[toStr]: (str: string | CharSet, len?: number) => string,
|
|
216
158
|
[toArr]: <T>(fn: (n: number) => T) => T[],
|
|
217
|
-
[toObj]: <
|
|
159
|
+
[toObj]: <R extends readonly [string, any]>(fn: (n: number) => Skip | R) => { [K: string]: any },
|
|
218
160
|
[bits]: () => Generator<number>,
|
|
219
|
-
[Symbol.iterator]: () => Generator<number
|
|
220
|
-
|
|
221
|
-
};
|
|
161
|
+
[Symbol.iterator]: () => Generator<number>
|
|
162
|
+
}
|
|
222
163
|
|
|
223
|
-
interface BigIntConstructor {}
|
|
224
|
-
interface BigInt
|
|
164
|
+
interface BigIntConstructor {}
|
|
165
|
+
interface BigInt {
|
|
225
166
|
[toStr]: (str: string | CharSet, len?: number) => string
|
|
226
|
-
}
|
|
167
|
+
}
|
|
227
168
|
|
|
228
|
-
interface ObjectConstructor {}
|
|
229
|
-
interface Object
|
|
230
|
-
[
|
|
231
|
-
[
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
[
|
|
242
|
-
|
|
243
|
-
O extends Obj,
|
|
244
|
-
K extends string | string[],
|
|
245
|
-
D extends any = undefined
|
|
246
|
-
>(
|
|
247
|
-
this: O,
|
|
248
|
-
k: K,
|
|
249
|
-
def?: D
|
|
250
|
-
): Dive<O, K extends string[] ? K : [ K ], D>,
|
|
251
|
-
},
|
|
252
|
-
[has]: {
|
|
253
|
-
// <O extends Obj>(this: O, k: string): boolean,
|
|
254
|
-
// <O extends Obj>(this: O, k: string): k is (ObjMode<O> extends 'rec' ? keyof O : any),
|
|
255
|
-
// <O extends Obj>(this: O, k: string): k is (ObjMode<O> extends 'rec' ? keyof O : any),
|
|
256
|
-
|
|
257
|
-
// <O extends Obj, K extends keyof any>(this: O, k: K): this is { [K]: O[keyof O] }
|
|
258
|
-
|
|
259
|
-
<O extends Obj>(this: O, k: unknown): k is keyof O
|
|
260
|
-
|
|
261
|
-
},
|
|
262
|
-
[map]: {
|
|
263
|
-
<
|
|
264
|
-
O extends Obj,
|
|
265
|
-
Fn extends (v: ObjVals<O>, k: ObjKeys<O>) => any
|
|
266
|
-
>(
|
|
267
|
-
this: O,
|
|
268
|
-
fn: Fn
|
|
269
|
-
): { [K in keyof O]: Exclude<ReturnType<Fn>, Skip> },
|
|
270
|
-
},
|
|
271
|
-
[mapk]: {
|
|
272
|
-
<
|
|
273
|
-
O extends Obj,
|
|
274
|
-
Fn extends (v: O[keyof O], k: ObjKeys<O>) => undefined | [ string, any ]
|
|
275
|
-
>(
|
|
276
|
-
this: O,
|
|
277
|
-
fn: Fn
|
|
278
|
-
): { [K in Exclude<ReturnType<Fn>, Skip>[0]]: Exclude<ReturnType<Fn>, Skip>[1] },
|
|
279
|
-
},
|
|
280
|
-
[merge]: {
|
|
281
|
-
<
|
|
282
|
-
O1 extends Obj,
|
|
283
|
-
O2 extends Obj
|
|
284
|
-
>(
|
|
285
|
-
this: readonly O1,
|
|
286
|
-
val: readonly O2
|
|
287
|
-
): O1 & O2,
|
|
288
|
-
},
|
|
289
|
-
[slice]: {
|
|
290
|
-
<O extends Obj, K extends readonly (keyof O)[]>(this: O, keys: K): { [P in K[number]]: SkipNever<O[P]> }
|
|
291
|
-
},
|
|
292
|
-
[slash]: {
|
|
293
|
-
<
|
|
294
|
-
O extends Obj,
|
|
295
|
-
T extends readonly (keyof O)[]
|
|
296
|
-
>(
|
|
297
|
-
this: O,
|
|
298
|
-
keys: T
|
|
299
|
-
): { [K in keyof O as Exclude<keyof O, T[number]>]: O[K] }
|
|
300
|
-
},
|
|
301
|
-
[toArr]: {
|
|
302
|
-
<
|
|
303
|
-
O extends Obj,
|
|
304
|
-
Fn extends (v: O[keyof O], k: ObjKeys<O>) => any
|
|
305
|
-
>(
|
|
306
|
-
this: O,
|
|
307
|
-
fn: Fn
|
|
308
|
-
): Exclude<ReturnType<Fn>, Skip>[],
|
|
309
|
-
},
|
|
310
|
-
[count]: {
|
|
311
|
-
<O extends Obj>(this: O): number,
|
|
312
|
-
},
|
|
313
|
-
[group]: {
|
|
314
|
-
<O extends Obj, G extends string>(fn: (v: T) => Skip | G): { [K in G]?: Optional<O> }
|
|
315
|
-
},
|
|
316
|
-
[Symbol.iterator]: {
|
|
317
|
-
<O extends Obj>(this: O): Iterator<[ ObjKeys<O>, ObjVals<O> ]>
|
|
318
|
-
},
|
|
319
|
-
$$inspect: <V>(this: V) => { v: V }
|
|
320
|
-
};
|
|
169
|
+
interface ObjectConstructor {}
|
|
170
|
+
interface Object {
|
|
171
|
+
[empty]: () => boolean,
|
|
172
|
+
[at]: <O extends Obj, K extends string | string[], D extends any = undefined>(this: O, k: K, def?: D) => Dive<O, K extends string[] ? K : [ K ], D>,
|
|
173
|
+
[has]: <O extends Obj>(this: O, k: unknown) => k is keyof O,
|
|
174
|
+
[map]: <O extends Obj, Fn extends (v: ObjVals<O>, k: ObjKeys<O>) => any>(this: O, fn: Fn) => { [K in keyof O]: Exclude<ReturnType<Fn>, Skip> },
|
|
175
|
+
[mapk]: <O extends Obj, Fn extends (v: O[keyof O], k: ObjKeys<O>) => undefined | [ string, any ]>(this: O, fn: Fn) => { [K: string]: any },
|
|
176
|
+
[merge]: <O1 extends Obj, O2 extends Obj>(this: O1, val: O2) => O1 & O2,
|
|
177
|
+
[slice]: <O extends Obj, K extends readonly (keyof O)[]>(this: O, keys: K) => { [P in K[number]]: SkipNever<O[P]> },
|
|
178
|
+
[slash]: <O extends Obj, T extends readonly (keyof O)[]>(this: O, keys: T) => { [K in keyof O as Exclude<keyof O, T[number]>]: O[K] },
|
|
179
|
+
[toArr]: <O extends Obj, Fn extends (v: O[keyof O], k: ObjKeys<O>) => any>(this: O, fn: Fn) => Exclude<ReturnType<Fn>, Skip>[],
|
|
180
|
+
[count]: () => number,
|
|
181
|
+
[group]: <O extends Obj, G extends string>(this: O, fn: (v: O[keyof O]) => Skip | G) => { [K in G]?: Partial<O> },
|
|
182
|
+
[Symbol.iterator]: <O extends Obj>(this: O) => Iterator<[ ObjKeys<O>, ObjVals<O> ]>
|
|
183
|
+
}
|
|
321
184
|
|
|
322
185
|
interface PromiseConstructor {
|
|
323
186
|
[allArr]: PromiseConstructor['all'],
|
|
324
|
-
[allObj]: <O extends { [K:
|
|
187
|
+
[allObj]: <O extends { [K: string]: Promise<any> }>(obj: O) => Promise<{ [K in keyof O]: Awaited<O[K]> }>,
|
|
325
188
|
[later]: <T=void>() => PromiseLater<T>
|
|
326
|
-
}
|
|
327
|
-
interface Promise<T> {}
|
|
328
|
-
interface PromiseLater<T=void> extends Promise<T
|
|
189
|
+
}
|
|
190
|
+
interface Promise<T> {}
|
|
191
|
+
interface PromiseLater<T=void> extends Promise<T> {
|
|
329
192
|
resolve: T extends void ? () => void : (v: T) => void,
|
|
330
193
|
reject: (err: any) => void
|
|
331
|
-
}
|
|
194
|
+
}
|
|
332
195
|
|
|
333
|
-
interface SetConstructor {}
|
|
334
|
-
interface Set<T>
|
|
196
|
+
interface SetConstructor {}
|
|
197
|
+
interface Set<T> {
|
|
335
198
|
[count]: () => number,
|
|
336
199
|
[empty]: () => boolean,
|
|
337
|
-
[find]:
|
|
338
|
-
[map]:
|
|
200
|
+
[find]: (fn: (val: T) => any) => ({ found: true, val: T } | { found: false, val: null }),
|
|
201
|
+
[map]: <V>(fn: (val: T, ind: number) => V) => Exclude<V, Skip>[],
|
|
339
202
|
[toArr]: <V>(fn: (val: T, ind: number) => V) => Exclude<V, Skip>[],
|
|
340
|
-
[toObj]: <
|
|
341
|
-
[rem]:
|
|
342
|
-
}
|
|
203
|
+
[toObj]: <R extends readonly [string, any]>(fn: (val: T) => Skip | R) => { [K: string]: any },
|
|
204
|
+
[rem]: (val: T) => void
|
|
205
|
+
}
|
|
343
206
|
|
|
344
|
-
interface MapConstructor {}
|
|
345
|
-
interface Map<K, V>
|
|
346
|
-
[add]:
|
|
207
|
+
interface MapConstructor {}
|
|
208
|
+
interface Map<K, V> {
|
|
209
|
+
[add]: (k: K, v: V) => void,
|
|
347
210
|
[count]: () => number,
|
|
348
211
|
[empty]: () => boolean,
|
|
349
|
-
[find]:
|
|
350
|
-
[map]:
|
|
212
|
+
[find]: (fn: (val: V, key: K) => any) => ({ found: true, val: V, key: K } | { found: false, val: null, key: null }),
|
|
213
|
+
[map]: <T>(fn: (val: V, key: K) => Skip | readonly [string, any]) => { [Key: string]: any },
|
|
351
214
|
[toArr]: <T>(fn: (val: V, key: K) => T) => Exclude<T, Skip>[],
|
|
352
215
|
[toObj]: <T>(fn: (val: V, key: K) => Skip | readonly [string, any]) => { [Key: string]: any },
|
|
353
|
-
[rem]:
|
|
354
|
-
}
|
|
216
|
+
[rem]: (key: K) => void
|
|
217
|
+
}
|
|
355
218
|
|
|
356
219
|
interface StringConstructor {
|
|
357
220
|
[base32]: string,
|
|
358
221
|
[base36]: string,
|
|
359
222
|
[base62]: string,
|
|
360
|
-
[
|
|
223
|
+
[base64Url]: string,
|
|
361
224
|
[base64Std]: string,
|
|
362
225
|
[baseline]: (str: string) => string,
|
|
363
226
|
[charset]: (str: string) => CharSet,
|
|
364
|
-
}
|
|
365
|
-
interface String
|
|
366
|
-
[
|
|
367
|
-
[
|
|
368
|
-
[
|
|
369
|
-
[
|
|
227
|
+
}
|
|
228
|
+
interface String {
|
|
229
|
+
[code]: (ind?: number) => number,
|
|
230
|
+
[count]: () => number,
|
|
231
|
+
[has]: (s: string) => boolean,
|
|
232
|
+
[padHead]: (n: number, s?: string) => string,
|
|
233
|
+
[padTail]: (n: number, s?: string) => string,
|
|
370
234
|
[toNum]: (chrs: string | CharSet) => bigint,
|
|
371
|
-
[hasHead]<H extends string>(this: string, head: H)
|
|
372
|
-
[hasTail]<T extends string>(this: string, tail: T)
|
|
373
|
-
[upper]<S extends string>(this: S)
|
|
374
|
-
[lower]<S extends string>(this: S)
|
|
235
|
+
[hasHead]: <H extends string>(this: string, head: H) => this is `${H}${string}`,
|
|
236
|
+
[hasTail]: <T extends string>(this: string, tail: T) => this is `${string}${T}`,
|
|
237
|
+
[upper]: <S extends string>(this: S) => Uppercase<S>,
|
|
238
|
+
[lower]: <S extends string>(this: S) => Lowercase<S>,
|
|
375
239
|
[cut]: {
|
|
376
240
|
(str: string, cuts: 1): [ string, string ],
|
|
377
241
|
(str: string, cuts: 2): [ string, string, string ],
|
|
@@ -383,7 +247,7 @@ declare global {
|
|
|
383
247
|
(amount: number, char?: string): string,
|
|
384
248
|
(str: string): string
|
|
385
249
|
}
|
|
386
|
-
}
|
|
250
|
+
}
|
|
387
251
|
|
|
388
252
|
}
|
|
389
253
|
|