@kakasoo/deep-strict-types 2.0.6 → 2.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/README.md +39 -0
- package/bin/src/functions/DeepStrictAssert.d.ts +2 -0
- package/bin/src/functions/DeepStrictAssert.d.ts.map +1 -1
- package/bin/src/functions/DeepStrictAssert.js +2 -0
- package/bin/src/functions/DeepStrictAssert.js.map +1 -1
- package/bin/src/functions/DeepStrictObjectKeys.d.ts +3 -1
- package/bin/src/functions/DeepStrictObjectKeys.d.ts.map +1 -1
- package/bin/src/functions/DeepStrictObjectKeys.js.map +1 -1
- package/bin/src/functions/DeepStrictPick.d.ts +24 -0
- package/bin/src/functions/DeepStrictPick.d.ts.map +1 -0
- package/bin/src/functions/DeepStrictPick.js +53 -0
- package/bin/src/functions/DeepStrictPick.js.map +1 -0
- package/bin/src/functions/index.d.ts +1 -0
- package/bin/src/functions/index.d.ts.map +1 -1
- package/bin/src/functions/index.js +1 -0
- package/bin/src/functions/index.js.map +1 -1
- package/bin/src/types/DeepStrictObjectKeys.d.ts +1 -1
- package/bin/src/types/DeepStrictObjectKeys.d.ts.map +1 -1
- package/bin/src/types/DeepStrictOmit.d.ts +2 -2
- package/bin/src/types/DeepStrictOmit.d.ts.map +1 -1
- package/bin/src/types/DeepStrictPick.d.ts +2 -3
- package/bin/src/types/DeepStrictPick.d.ts.map +1 -1
- package/bin/src/types/ExpandGlob.d.ts +24 -0
- package/bin/src/types/ExpandGlob.d.ts.map +1 -0
- package/bin/src/types/ExpandGlob.js +3 -0
- package/bin/src/types/ExpandGlob.js.map +1 -0
- package/bin/src/types/index.d.ts +1 -0
- package/bin/src/types/index.d.ts.map +1 -1
- package/bin/src/types/index.js +1 -0
- package/bin/src/types/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,45 @@ Type-safe `Pick`, `Omit`, and key extraction for deeply nested TypeScript object
|
|
|
10
10
|
|
|
11
11
|

|
|
12
12
|
|
|
13
|
+
## Why in the AI Era?
|
|
14
|
+
|
|
15
|
+
AI writes more code than ever — and makes more subtle mistakes than ever. This library serves as a **compile-time guardrail** for AI-generated code.
|
|
16
|
+
|
|
17
|
+
### The Problem
|
|
18
|
+
|
|
19
|
+
AI coding tools often produce code that looks correct but has subtle type mismatches in deeply nested structures:
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// AI-generated code: looks fine, but "prce" is a typo
|
|
23
|
+
function getTotal(order: Order) {
|
|
24
|
+
return order.items.map(i => i.prce); // no error with loose types
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### The Solution
|
|
29
|
+
|
|
30
|
+
With strict deep types as constraints, the TypeScript compiler catches AI mistakes **instantly**:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { DeepStrictPick } from '@kakasoo/deep-strict-types';
|
|
34
|
+
|
|
35
|
+
type OrderSummary = DeepStrictPick<Order, 'items[*].price' | 'customer.name'>;
|
|
36
|
+
|
|
37
|
+
// Now AI gets a precise error:
|
|
38
|
+
// Type '"items[*].prce"' is not assignable to
|
|
39
|
+
// type '"items" | "items[*]" | "items[*].price" | "customer" | "customer.name"'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### AI Self-Correction Loop
|
|
43
|
+
|
|
44
|
+
When used with `tsc` or `tsx` in a build loop, AI agents can read the type error, understand exactly what went wrong, and fix it automatically:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
AI generates code → tsc compile → type error → AI reads error → AI self-corrects → recompile
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The stricter your types, the better the error messages, and the faster AI converges on correct code. **In an AI-driven workflow, deep strict types aren't overhead — they're the safety net.**
|
|
51
|
+
|
|
13
52
|
## Installation
|
|
14
53
|
|
|
15
54
|
```bash
|
|
@@ -9,6 +9,8 @@ import { DeepStrictPick } from '../types/DeepStrictPick';
|
|
|
9
9
|
*
|
|
10
10
|
* This is the runtime counterpart of the {@link DeepStrictPick} type.
|
|
11
11
|
*
|
|
12
|
+
* @deprecated Use {@link deepStrictPick} instead. This curried form will be removed in a future version.
|
|
13
|
+
*
|
|
12
14
|
* @template T - The object type of the input
|
|
13
15
|
* @param input - The source object to extract properties from
|
|
14
16
|
* @returns A function that accepts a key path `K` and returns the deeply-picked result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictAssert.d.ts","sourceRoot":"","sources":["../../../src/functions/DeepStrictAssert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"DeepStrictAssert.d.ts","sourceRoot":"","sources":["../../../src/functions/DeepStrictAssert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,GAC1B,CAAC,SAAS,MAAM,SAAS,CAAC,MAC1B,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAiC/D,CAAC"}
|
|
@@ -10,6 +10,8 @@ exports.deepStrictAssert = void 0;
|
|
|
10
10
|
*
|
|
11
11
|
* This is the runtime counterpart of the {@link DeepStrictPick} type.
|
|
12
12
|
*
|
|
13
|
+
* @deprecated Use {@link deepStrictPick} instead. This curried form will be removed in a future version.
|
|
14
|
+
*
|
|
13
15
|
* @template T - The object type of the input
|
|
14
16
|
* @param input - The source object to extract properties from
|
|
15
17
|
* @returns A function that accepts a key path `K` and returns the deeply-picked result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictAssert.js","sourceRoot":"","sources":["../../../src/functions/DeepStrictAssert.ts"],"names":[],"mappings":";;;AAGA
|
|
1
|
+
{"version":3,"file":"DeepStrictAssert.js","sourceRoot":"","sources":["../../../src/functions/DeepStrictAssert.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,MAAM,gBAAgB,GAC3B,CAAmB,KAAQ,EAAE,EAAE,CAC/B,CAAoC,GAAM,EAAwB,EAAE;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,CAAC,KAAkD,EAAE,IAAc,EAAO,EAAE;QAC3F,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAE9B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;oBACrB,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;wBAClE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;oBACrD,CAAC;oBAED,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC9D,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnD,CAAC;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAyB,CAAC;AACvD,CAAC,CAAC;AAnCS,QAAA,gBAAgB,oBAmCzB"}
|
|
@@ -8,13 +8,15 @@ type Replace<S extends string> = S extends '[*]' ? `${number}` : S extends `[*].
|
|
|
8
8
|
* Converts type-level keys (with `[*]` notation) to runtime-friendly keys (with `${number}` notation),
|
|
9
9
|
* strips leading dots, and wraps the result in an array type.
|
|
10
10
|
*/
|
|
11
|
+
/** @internal Removes glob patterns (e.g., `'*'`, `'a.*'`) from a string union. */
|
|
12
|
+
type WithoutGlob<K extends string> = K extends '*' | `${string}.*` ? never : K;
|
|
11
13
|
type ReturnType<Target extends object, Joiner extends {
|
|
12
14
|
array: string;
|
|
13
15
|
object: string;
|
|
14
16
|
} = {
|
|
15
17
|
array: '[*]';
|
|
16
18
|
object: '.';
|
|
17
|
-
}> = [Target] extends [never] ? [] : RemoveStartWithDot<Replace<DeepStrictObjectKeys<Target, Joiner, false
|
|
19
|
+
}> = [Target] extends [never] ? [] : RemoveStartWithDot<Replace<WithoutGlob<DeepStrictObjectKeys<Target, Joiner, false>>>>[];
|
|
18
20
|
/**
|
|
19
21
|
* @title Runtime Function for Extracting All Nested Keys from an Object.
|
|
20
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/functions/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,0FAA0F;AAC1F,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3F,gGAAgG;AAChG,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,GAC5C,GAAG,MAAM,EAAE,GACX,CAAC,SAAS,OAAO,MAAM,IAAI,EAAE,GAC3B,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,GAC5B,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,MAAM,OAAO,MAAM,IAAI,EAAE,GACzD,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GACrC,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,MAAM,MAAM,MAAM,IAAI,EAAE,GACxD,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GACrC,CAAC,CAAC;AAEZ;;;;GAIG;AACH,KAAK,UAAU,CACb,MAAM,SAAS,MAAM,EACrB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,IAC9E,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/functions/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,0FAA0F;AAC1F,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3F,gGAAgG;AAChG,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,GAC5C,GAAG,MAAM,EAAE,GACX,CAAC,SAAS,OAAO,MAAM,IAAI,EAAE,GAC3B,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,GAC5B,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,MAAM,OAAO,MAAM,IAAI,EAAE,GACzD,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GACrC,CAAC,SAAS,GAAG,MAAM,MAAM,SAAS,MAAM,MAAM,MAAM,IAAI,EAAE,GACxD,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,GACrC,CAAC,CAAC;AAEZ;;;;GAIG;AACH,kFAAkF;AAClF,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;AAE/E,KAAK,UAAU,CACb,MAAM,SAAS,MAAM,EACrB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,IAC9E,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GACxB,EAAE,GACF,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,SAAS,MAAM,EACrB,MAAM,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,EAChF,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictObjectKeys.js","sourceRoot":"","sources":["../../../src/functions/DeepStrictObjectKeys.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectKeys.js","sourceRoot":"","sources":["../../../src/functions/DeepStrictObjectKeys.ts"],"names":[],"mappings":";;AAmDA,oDAwBC;AA5CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,oBAAoB,CAGlC,MAAc;IACd,IAAI,MAAM,GAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAY,CAAC;IAC7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAY,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,KAAK,GAAI,MAAc,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAA+B,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DeepStrictObjectKeys } from '../types/DeepStrictObjectKeys';
|
|
2
|
+
import { DeepStrictPick } from '../types/DeepStrictPick';
|
|
3
|
+
/**
|
|
4
|
+
* @title Runtime Function for Type-Safe Deep Property Picking.
|
|
5
|
+
*
|
|
6
|
+
* Takes an object and a dot-notation key path, and returns a new object
|
|
7
|
+
* containing only the specified nested property, preserving the original structure.
|
|
8
|
+
*
|
|
9
|
+
* This is the runtime counterpart of the {@link DeepStrictPick} type.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The object type of the input
|
|
12
|
+
* @template K - The key path to pick
|
|
13
|
+
* @param input - The source object to extract properties from
|
|
14
|
+
* @param key - A dot-notation key path specifying which property to pick
|
|
15
|
+
* @returns A new object containing only the picked property with its original structure
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const result = deepStrictPick({ a: { b: 1, c: 2 } }, 'a.b');
|
|
20
|
+
* // result: { a: { b: 1 } }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare const deepStrictPick: <T extends object, K extends DeepStrictObjectKeys<T>>(input: T, key: K) => DeepStrictPick<T, K>;
|
|
24
|
+
//# sourceMappingURL=DeepStrictPick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepStrictPick.d.ts","sourceRoot":"","sources":["../../../src/functions/DeepStrictPick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,SACzE,CAAC,OACH,CAAC,KACL,cAAc,CAAC,CAAC,EAAE,CAAC,CAiCrB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deepStrictPick = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @title Runtime Function for Type-Safe Deep Property Picking.
|
|
6
|
+
*
|
|
7
|
+
* Takes an object and a dot-notation key path, and returns a new object
|
|
8
|
+
* containing only the specified nested property, preserving the original structure.
|
|
9
|
+
*
|
|
10
|
+
* This is the runtime counterpart of the {@link DeepStrictPick} type.
|
|
11
|
+
*
|
|
12
|
+
* @template T - The object type of the input
|
|
13
|
+
* @template K - The key path to pick
|
|
14
|
+
* @param input - The source object to extract properties from
|
|
15
|
+
* @param key - A dot-notation key path specifying which property to pick
|
|
16
|
+
* @returns A new object containing only the picked property with its original structure
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const result = deepStrictPick({ a: { b: 1, c: 2 } }, 'a.b');
|
|
21
|
+
* // result: { a: { b: 1 } }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
const deepStrictPick = (input, key) => {
|
|
25
|
+
const keys = key.split(/(?:\[\*\])?\./g).filter(Boolean);
|
|
26
|
+
const traverse = (input, keys) => {
|
|
27
|
+
const [first, ...rest] = keys;
|
|
28
|
+
if (input instanceof Array) {
|
|
29
|
+
const elements = input.map((element) => {
|
|
30
|
+
if (first in element) {
|
|
31
|
+
if (typeof element[first] === 'object' && element[first] !== null && rest.length > 0) {
|
|
32
|
+
return { [first]: traverse(element[first], rest) };
|
|
33
|
+
}
|
|
34
|
+
return { [first]: element[first] };
|
|
35
|
+
}
|
|
36
|
+
return element;
|
|
37
|
+
});
|
|
38
|
+
return elements;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (first in input) {
|
|
42
|
+
if (typeof input[first] === 'object' && input[first] !== null && rest.length > 0) {
|
|
43
|
+
return { [first]: traverse(input[first], rest) };
|
|
44
|
+
}
|
|
45
|
+
return { [first]: input[first] };
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`input doesn\'t has key: ${first}`);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return traverse(input, keys);
|
|
51
|
+
};
|
|
52
|
+
exports.deepStrictPick = deepStrictPick;
|
|
53
|
+
//# sourceMappingURL=DeepStrictPick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepStrictPick.js","sourceRoot":"","sources":["../../../src/functions/DeepStrictPick.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AACI,MAAM,cAAc,GAAG,CAC5B,KAAQ,EACR,GAAM,EACgB,EAAE;IACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,CAAC,KAAkD,EAAE,IAAc,EAAO,EAAE;QAC3F,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAE9B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;oBACrB,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrF,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;oBACrD,CAAC;oBAED,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjF,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnD,CAAC;gBACD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAyB,CAAC;AACvD,CAAC,CAAC;AApCW,QAAA,cAAc,kBAoCzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC"}
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./DeepStrictAssert"), exports);
|
|
18
18
|
__exportStar(require("./DeepStrictObjectKeys"), exports);
|
|
19
|
+
__exportStar(require("./DeepStrictPick"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,yDAAuC;AACvC,mDAAiC"}
|
|
@@ -17,7 +17,7 @@ declare namespace DeepStrictObjectKeys {
|
|
|
17
17
|
} = {
|
|
18
18
|
array: '[*]';
|
|
19
19
|
object: '.';
|
|
20
|
-
}, IsSafe extends boolean = true, P extends keyof Target = Exclude<keyof Target, keyof []>> = [Target] extends [never] ? never : P extends string ? IsUnion<Target[P]> extends true ? Equal<IsSafe, true> extends true ? P : P | (Target[P] extends infer E ? E extends ValueType ? P : E extends object ? E extends Array<infer _Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<_Element, Joiner, IsSafe>}` : `${P}${Joiner['object']}${Infer<E, Joiner, IsSafe>}` : never : never) : Target[P] extends Array<infer Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<Element, Joiner, false>}` : Target[P] extends Array<infer _Element> ? Equal<IsSafe, true> extends true ? P : P | never : Target[P] extends ValueType ? P : IsAny<Target[P]> extends true ? P : Target[P] extends object ? Target[P] extends Record<string, never> ? `${P}` : `${P}` | `${P}${Joiner['object']}${Infer<Target[P], Joiner, false>}` : never : never;
|
|
20
|
+
}, IsSafe extends boolean = true, P extends keyof Target = Exclude<keyof Target, keyof []>> = [Target] extends [never] ? never : (P extends string ? IsUnion<Target[P]> extends true ? Equal<IsSafe, true> extends true ? P : P | (Target[P] extends infer E ? E extends ValueType ? P : E extends object ? E extends Array<infer _Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<_Element, Joiner, IsSafe>}` : `${P}${Joiner['object']}${Infer<E, Joiner, IsSafe>}` : never : never) : Target[P] extends Array<infer Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<Element, Joiner, false>}` : Target[P] extends Array<infer _Element> ? Equal<IsSafe, true> extends true ? P : P | never : Target[P] extends ValueType ? P : IsAny<Target[P]> extends true ? P : Target[P] extends object ? Target[P] extends Record<string, never> ? `${P}` : `${P}` | `${P}${Joiner['object']}${Infer<Target[P], Joiner, false>}` : never : never) | ([Exclude<keyof Target, keyof []>] extends [never] ? never : '*');
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* @title Type for Listing All Keys of Nested Objects or Arrays.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,kBAAU,oBAAoB,CAAC;IAC7B;;;;;;OAMG;IACH,KAAY,KAAK,CACf,MAAM,SAAS,MAAM,EACrB,MAAM,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAChF,MAAM,SAAS,OAAO,GAAG,IAAI,EAC7B,CAAC,SAAS,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,IACtD,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GACxB,KAAK,
|
|
1
|
+
{"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ declare namespace DeepStrictOmit {
|
|
|
14
14
|
* @template T - The object type to omit keys from
|
|
15
15
|
* @template K - The dot-notation key paths to omit (must be valid keys of `T`)
|
|
16
16
|
*/
|
|
17
|
-
type Infer<T extends object, K extends DeepStrictObjectKeys<T>> = [K] extends [never] ? T : {
|
|
17
|
+
type Infer<T extends object, K extends DeepStrictObjectKeys<T>> = '*' extends K ? {} : [K] extends [never] ? T : {
|
|
18
18
|
[key in keyof T as key extends K ? never : key]: T[key] extends Array<infer Element extends object> ? key extends string ? Element extends Date ? Array<Element> : GetElementMember<K, key> extends DeepStrictObjectKeys<Element> ? Array<Infer<Element, GetElementMember<K, key>>> : Array<Element> : never : T[key] extends Array<infer Element> ? Array<Element> : T[key] extends object ? key extends string ? T[key] extends Date ? T[key] : GetElementMember<K, key> extends DeepStrictObjectKeys<T[key]> ? Infer<T[key], GetElementMember<K, key>> : T[key] : never : T[key];
|
|
19
19
|
};
|
|
20
20
|
}
|
|
@@ -35,6 +35,6 @@ declare namespace DeepStrictOmit {
|
|
|
35
35
|
* type Example3 = DeepStrictOmit<{ a: 1 }[], "[*].a">; // {}[]
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
|
-
export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<T>> = T extends Array<infer Element extends object> ? Array<DeepStrictOmit<Element, GetElementMember<K, ''> extends DeepStrictObjectKeys<Element> ? GetElementMember<K, ''> : never>> : DeepStrictOmit.Infer<T, K>;
|
|
38
|
+
export type DeepStrictOmit<T extends object, K extends DeepStrictObjectKeys<T>> = '*' extends K ? T extends Array<any> ? never[] : {} : T extends Array<infer Element extends object> ? Array<DeepStrictOmit<Element, GetElementMember<K, ''> extends DeepStrictObjectKeys<Element> ? GetElementMember<K, ''> : never>> : DeepStrictOmit.Infer<T, K>;
|
|
39
39
|
export {};
|
|
40
40
|
//# sourceMappingURL=DeepStrictOmit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictOmit.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictOmit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,kBAAU,cAAc,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"DeepStrictOmit.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictOmit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,kBAAU,cAAc,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAClF,EAAE,GACF,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjB,CAAC,GACD;SACG,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC/F,GAAG,SAAS,MAAM,GAChB,OAAO,SAAS,IAAI,GAClB,KAAK,CAAC,OAAO,CAAC,GACd,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,oBAAoB,CAAC,OAAO,CAAC,GAC5D,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAC/C,KAAK,CAAC,OAAO,CAAC,GAClB,KAAK,GACP,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,CAAC,GACjC,KAAK,CAAC,OAAO,CAAC,GACd,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,GACnB,GAAG,SAAS,MAAM,GAChB,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GACjB,CAAC,CAAC,GAAG,CAAC,GACN,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAC3D,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GACvC,CAAC,CAAC,GAAG,CAAC,GACV,KAAK,GACP,CAAC,CAAC,GAAG,CAAC;KACf,CAAC;CACT;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAC3F,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAClB,KAAK,EAAE,GACP,EAAE,GACJ,CAAC,SAAS,KAAK,CAAC,MAAM,OAAO,SAAS,MAAM,CAAC,GAC3C,KAAK,CACH,cAAc,CACZ,OAAO,EACP,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,oBAAoB,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAChG,CACF,GACD,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DeepStrictObjectKeys } from './DeepStrictObjectKeys';
|
|
2
2
|
import type { DeepStrictOmit } from './DeepStrictOmit';
|
|
3
3
|
import type { DeepStrictUnbrand } from './DeepStrictUnbrand';
|
|
4
|
+
import type { ExpandGlob } from './ExpandGlob';
|
|
4
5
|
import type { RemoveAfterDot } from './RemoveAfterDot';
|
|
5
6
|
import type { RemoveLastProperty } from './RemoveLastProperty';
|
|
6
7
|
/**
|
|
@@ -22,7 +23,5 @@ import type { RemoveLastProperty } from './RemoveLastProperty';
|
|
|
22
23
|
* type Example3 = DeepStrictPick<{ a: 1 }[], "[*].a">; // { a: 1 }[]
|
|
23
24
|
* ```
|
|
24
25
|
*/
|
|
25
|
-
export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = DeepStrictOmit<T, Exclude<DeepStrictObjectKeys<T>,
|
|
26
|
-
//
|
|
27
|
-
K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K>>>;
|
|
26
|
+
export type DeepStrictPick<T extends object, K extends DeepStrictObjectKeys<T>> = '*' extends K ? T : DeepStrictOmit<T, Exclude<Exclude<DeepStrictObjectKeys<T>, K | RemoveLastProperty<K> | RemoveAfterDot<DeepStrictUnbrand<T>, K> | ExpandGlob<K>>, '*' | `${string}.*`>>;
|
|
28
27
|
//# sourceMappingURL=DeepStrictPick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepStrictPick.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictPick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,cAAc,
|
|
1
|
+
{"version":3,"file":"DeepStrictPick.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictPick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAC3F,CAAC,GACD,cAAc,CACZ,CAAC,EACD,OAAO,CACL,OAAO,CACL,oBAAoB,CAAC,CAAC,CAAC,EACvB,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CACpF,EACD,GAAG,GAAG,GAAG,MAAM,IAAI,CACpB,CACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Type for Expanding Glob Patterns into Template Literal Matchers.
|
|
3
|
+
*
|
|
4
|
+
* Converts glob patterns (`*`) into template literal types that can match
|
|
5
|
+
* all keys at a given level. Used by {@link DeepStrictPick} to correctly
|
|
6
|
+
* preserve all descendant keys when a glob pattern is selected.
|
|
7
|
+
*
|
|
8
|
+
* - `'*'` expands to `string` (matches everything)
|
|
9
|
+
* - `'a.*'` expands to `'a.${string}' | 'a'` (matches all keys under `a`)
|
|
10
|
+
* - `'items[*].*'` expands to `'items[*].${string}' | 'items[*]'`
|
|
11
|
+
*
|
|
12
|
+
* @template K - The key pattern to expand
|
|
13
|
+
* @returns A template literal type matching all keys covered by the glob, or `never` for non-glob keys
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* type Ex1 = ExpandGlob<'*'>; // string
|
|
18
|
+
* type Ex2 = ExpandGlob<'a.*'>; // `a.${string}` | 'a'
|
|
19
|
+
* type Ex3 = ExpandGlob<'items[*].*'>; // `items[*].${string}` | 'items[*]'
|
|
20
|
+
* type Ex4 = ExpandGlob<'a.b'>; // never (not a glob pattern)
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export type ExpandGlob<K extends string> = K extends '*' ? string : K extends `${infer Prefix}.*` ? `${Prefix}.${string}` | Prefix : never;
|
|
24
|
+
//# sourceMappingURL=ExpandGlob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpandGlob.d.ts","sourceRoot":"","sources":["../../../src/types/ExpandGlob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,GACpD,MAAM,GACN,CAAC,SAAS,GAAG,MAAM,MAAM,IAAI,GAC3B,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,MAAM,GAC9B,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpandGlob.js","sourceRoot":"","sources":["../../../src/types/ExpandGlob.ts"],"names":[],"mappings":""}
|
package/bin/src/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
package/bin/src/types/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./DeepStrictPick"), exports);
|
|
|
23
23
|
__exportStar(require("./DeepStrictUnbrand"), exports);
|
|
24
24
|
__exportStar(require("./ElementOf"), exports);
|
|
25
25
|
__exportStar(require("./Equal"), exports);
|
|
26
|
+
__exportStar(require("./ExpandGlob"), exports);
|
|
26
27
|
__exportStar(require("./GetMember"), exports);
|
|
27
28
|
__exportStar(require("./GetType"), exports);
|
|
28
29
|
__exportStar(require("./IsAny"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,0CAAwB;AACxB,4CAA0B;AAC1B,mDAAiC;AACjC,sDAAoC;AACpC,uDAAqC;AACrC,uDAAqC;AACrC,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,8CAA4B;AAC5B,0CAAwB;AACxB,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,0CAAwB;AACxB,4CAA0B;AAC1B,mDAAiC;AACjC,sDAAoC;AACpC,uDAAqC;AACrC,uDAAqC;AACrC,8CAA4B"}
|