@middy/util 5.0.0 → 5.0.2
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/package.json +4 -4
- package/type-utils.d.ts +71 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@middy/util",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.2",
|
|
4
4
|
"description": "🛵 The stylish Node.js middleware engine for AWS Lambda (util package)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"index.js",
|
|
25
25
|
"index.d.ts",
|
|
26
|
-
"
|
|
26
|
+
"type-utils.d.ts"
|
|
27
27
|
],
|
|
28
28
|
"scripts": {
|
|
29
29
|
"test": "npm run test:unit",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@aws-sdk/client-ssm": "^3.0.0",
|
|
58
|
-
"@middy/core": "5.0.
|
|
58
|
+
"@middy/core": "5.0.2",
|
|
59
59
|
"@types/aws-lambda": "^8.10.76",
|
|
60
60
|
"@types/node": "^20.0.0",
|
|
61
61
|
"aws-xray-sdk": "^3.3.3"
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"type": "github",
|
|
66
66
|
"url": "https://github.com/sponsors/willfarrell"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "6d17e155237022f2a0abd095ac7cd99ebfc7fc71"
|
|
69
69
|
}
|
package/type-utils.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
|
|
2
|
+
type LetterLower = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i'
|
|
3
|
+
| 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't'
|
|
4
|
+
| 'u' | 'v' | 'w' | 'x' | 'y' | 'z'
|
|
5
|
+
type LetterUpper = Uppercase<LetterLower>
|
|
6
|
+
type AlphaNumeric = Digit | LetterLower | LetterUpper
|
|
7
|
+
|
|
8
|
+
type SanitizeKeyPrefixLeadingNumber<T> =
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
T extends `${infer _ extends Digit}${any}`
|
|
11
|
+
? `_${T}`
|
|
12
|
+
: T
|
|
13
|
+
|
|
14
|
+
type SanitizeKeyRemoveDisallowedChar<T> =
|
|
15
|
+
T extends `${infer First}${infer Rest}`
|
|
16
|
+
? First extends AlphaNumeric
|
|
17
|
+
? `${First}${SanitizeKeyRemoveDisallowedChar<Rest>}`
|
|
18
|
+
: `_${SanitizeKeyRemoveDisallowedChar<Rest>}`
|
|
19
|
+
: T extends ''
|
|
20
|
+
? T
|
|
21
|
+
: never
|
|
22
|
+
|
|
23
|
+
type RemoveAllLeadingUnderscore<T> =
|
|
24
|
+
T extends `_${infer Rest}`
|
|
25
|
+
? RemoveAllLeadingUnderscore<Rest>
|
|
26
|
+
: T extends string
|
|
27
|
+
? T
|
|
28
|
+
: never
|
|
29
|
+
|
|
30
|
+
type RemoveRepeatedUnderscore<T> =
|
|
31
|
+
T extends `${infer First}_${infer Rest}`
|
|
32
|
+
? `${First}_${RemoveRepeatedUnderscore<RemoveAllLeadingUnderscore<Rest>>}`
|
|
33
|
+
: T extends string
|
|
34
|
+
? T
|
|
35
|
+
: never
|
|
36
|
+
|
|
37
|
+
export type SanitizeKey<T> =
|
|
38
|
+
RemoveRepeatedUnderscore<
|
|
39
|
+
SanitizeKeyRemoveDisallowedChar<
|
|
40
|
+
SanitizeKeyPrefixLeadingNumber<T>
|
|
41
|
+
>
|
|
42
|
+
>
|
|
43
|
+
|
|
44
|
+
export type SanitizeKeys<T extends Record<string, unknown>> = {
|
|
45
|
+
[P in keyof T as SanitizeKey<P>]: T[P]
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// recursion limit hack from https://www.angularfix.com/2022/01/why-am-i-getting-instantiation-is.html
|
|
49
|
+
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
50
|
+
export type DeepAwaited<T, RecursionDepth extends Prev[number] = 4> =
|
|
51
|
+
[RecursionDepth] extends [never]
|
|
52
|
+
? unknown // stop evaluating recursively rather than failing with never
|
|
53
|
+
: T extends Promise<infer R>
|
|
54
|
+
? Awaited<R>
|
|
55
|
+
: T extends Record<any, any>
|
|
56
|
+
? {
|
|
57
|
+
[P in keyof T]:
|
|
58
|
+
T[P] extends Promise<infer R>
|
|
59
|
+
? Awaited<R> // if it's a Promise resolve
|
|
60
|
+
: DeepAwaited<T[P], Prev[RecursionDepth]>
|
|
61
|
+
}
|
|
62
|
+
: T
|
|
63
|
+
|
|
64
|
+
export type Choose<
|
|
65
|
+
T extends Record<string | number, any>,
|
|
66
|
+
K extends string
|
|
67
|
+
> = K extends `${infer U}.${infer Rest}` ? Choose<T[U], Rest> : T[K]
|
|
68
|
+
|
|
69
|
+
export type IsUnknown<T> = unknown extends T ? true : false
|
|
70
|
+
|
|
71
|
+
export type ArrayValues<T> = T extends Array<infer U> ? U : never
|