type-plus 7.1.0 → 7.2.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/cjs/object/index.d.ts +1 -1
- package/cjs/object/index.d.ts.map +1 -1
- package/cjs/object/recursive_partial.d.ts +29 -0
- package/cjs/object/recursive_partial.d.ts.map +1 -0
- package/cjs/object/recursive_partial.js +4 -0
- package/cjs/object/recursive_partial.js.map +1 -0
- package/cjs/testing/stub.d.ts +1 -1
- package/cjs/testing/stub.d.ts.map +1 -1
- package/cjs/testing/test_type.d.ts +19 -0
- package/cjs/testing/test_type.d.ts.map +1 -1
- package/cjs/testing/test_type.js.map +1 -1
- package/esm/object/index.d.ts +1 -1
- package/esm/object/index.d.ts.map +1 -1
- package/esm/object/recursive_partial.d.ts +29 -0
- package/esm/object/recursive_partial.d.ts.map +1 -0
- package/esm/object/recursive_partial.js +3 -0
- package/esm/object/recursive_partial.js.map +1 -0
- package/esm/testing/stub.d.ts +1 -1
- package/esm/testing/stub.d.ts.map +1 -1
- package/esm/testing/test_type.d.ts +19 -0
- package/esm/testing/test_type.d.ts.map +1 -1
- package/esm/testing/test_type.js.map +1 -1
- package/package.json +1 -1
- package/ts/object/index.ts +1 -1
- package/ts/object/recursive_partial.ts +39 -0
- package/ts/testing/stub.ts +1 -1
- package/ts/testing/test_type.ts +19 -0
- package/cjs/object/RecursivePartial.d.ts +0 -5
- package/cjs/object/RecursivePartial.d.ts.map +0 -1
- package/cjs/object/RecursivePartial.js +0 -3
- package/cjs/object/RecursivePartial.js.map +0 -1
- package/esm/object/RecursivePartial.d.ts +0 -5
- package/esm/object/RecursivePartial.d.ts.map +0 -1
- package/esm/object/RecursivePartial.js +0 -2
- package/esm/object/RecursivePartial.js.map +0 -1
- package/ts/object/RecursivePartial.ts +0 -10
package/cjs/object/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { KnownKeys } from './KnownKeys.js';
|
|
|
10
10
|
export type { OptionalKeys } from './OptionalKeys.js';
|
|
11
11
|
export type { Partial, PartialExcept, PartialOmit, PartialPick } from './Partial.js';
|
|
12
12
|
export type { RecursiveIntersect } from './RecursiveIntersect.js';
|
|
13
|
-
export type { RecursivePartial } from './
|
|
13
|
+
export type { RecursivePartial } from './recursive_partial.js';
|
|
14
14
|
export type { RecursiveRequired } from './RecursiveRequired.js';
|
|
15
15
|
export type { RequiredExcept, RequiredPick } from './Required.js';
|
|
16
16
|
export type { RequiredKeys } from './RequiredKeys.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AnyFunction } from '../function/any_function.js';
|
|
2
|
+
import type { ExtractFunction } from '../index.js';
|
|
3
|
+
import type { AnyRecord } from './AnyRecord.js';
|
|
4
|
+
import type { Properties } from './properties.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a recursive partial type of type T.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* interface Foo {
|
|
11
|
+
* bar: number;
|
|
12
|
+
* baz: {
|
|
13
|
+
* qux: string
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* type PartialFoo = RecursivePartial<Foo>
|
|
18
|
+
* // {
|
|
19
|
+
* // bar?: number | undefined;
|
|
20
|
+
* // baz?: {
|
|
21
|
+
* // qux?: string | undefined
|
|
22
|
+
* // } | undefined
|
|
23
|
+
* // }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export type RecursivePartial<T> = {
|
|
27
|
+
[P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] | undefined : T[P] extends infer F extends AnyFunction ? [keyof T[P]] extends [undefined] ? T[P] | undefined : ExtractFunction<F> & RecursivePartial<Properties<T[P]>> : T[P] extends AnyRecord ? RecursivePartial<T[P]> | undefined : T[P] | undefined;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=recursive_partial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive_partial.d.ts","sourceRoot":"","sources":["../../ts/object/recursive_partial.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACtC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GACjC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,WAAW,GACxC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAChB,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxD,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAClC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CACnB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive_partial.js","sourceRoot":"","sources":["../../ts/object/recursive_partial.ts"],"names":[],"mappings":";AAAA,4FAA4F"}
|
package/cjs/testing/stub.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AnyFunction } from '../function/any_function.js';
|
|
2
|
-
import type { RecursivePartial } from '../object/
|
|
2
|
+
import type { RecursivePartial } from '../object/recursive_partial.js';
|
|
3
3
|
import type { NoInfer } from '../type/no_infer.js';
|
|
4
4
|
/**
|
|
5
5
|
* stub a value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub.d.ts","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"stub.d.ts","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;AACvD,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;yBAA9C,IAAI;;;QAqClB;;;;;;;WAOG;;QAIH;;WAEG"}
|
|
@@ -206,6 +206,25 @@ interface TestType {
|
|
|
206
206
|
* @return `expected` as `T` for type inspection.
|
|
207
207
|
*/
|
|
208
208
|
void<T>(expected: IsVoid<T>): T;
|
|
209
|
+
/**
|
|
210
|
+
* A quick way to inspect a type.
|
|
211
|
+
*
|
|
212
|
+
* The handler is not being call.
|
|
213
|
+
*
|
|
214
|
+
* It just make it easy to inspect a specific type.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```ts
|
|
218
|
+
* testType.inspect<SomeType>(t => ...try out the `t` which is `SomeType` here...)
|
|
219
|
+
*
|
|
220
|
+
* // instead of
|
|
221
|
+
* const r: SomeType = {} as any
|
|
222
|
+
* ...try out the `r` which is `SomeType` here...
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* After trying out the type, remove the line.
|
|
226
|
+
*/
|
|
227
|
+
inspect<T>(handler: (t: T) => unknown): (t: T) => unknown;
|
|
209
228
|
}
|
|
210
229
|
/**
|
|
211
230
|
* Test utilities for types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":";;;AAuOA;;;;;;GAMG;AACU,QAAA,QAAQ,GAAG,IAAI,KAAK,CAAC,EAAc,EAAE;IACjD,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS;QAC5B,OAAO,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;IACvC,CAAC;CACD,CAAC,CAAA"}
|
package/esm/object/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { KnownKeys } from './KnownKeys.js';
|
|
|
10
10
|
export type { OptionalKeys } from './OptionalKeys.js';
|
|
11
11
|
export type { Partial, PartialExcept, PartialOmit, PartialPick } from './Partial.js';
|
|
12
12
|
export type { RecursiveIntersect } from './RecursiveIntersect.js';
|
|
13
|
-
export type { RecursivePartial } from './
|
|
13
|
+
export type { RecursivePartial } from './recursive_partial.js';
|
|
14
14
|
export type { RecursiveRequired } from './RecursiveRequired.js';
|
|
15
15
|
export type { RequiredExcept, RequiredPick } from './Required.js';
|
|
16
16
|
export type { RequiredKeys } from './RequiredKeys.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/object/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AnyFunction } from '../function/any_function.js';
|
|
2
|
+
import type { ExtractFunction } from '../index.js';
|
|
3
|
+
import type { AnyRecord } from './AnyRecord.js';
|
|
4
|
+
import type { Properties } from './properties.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a recursive partial type of type T.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* interface Foo {
|
|
11
|
+
* bar: number;
|
|
12
|
+
* baz: {
|
|
13
|
+
* qux: string
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* type PartialFoo = RecursivePartial<Foo>
|
|
18
|
+
* // {
|
|
19
|
+
* // bar?: number | undefined;
|
|
20
|
+
* // baz?: {
|
|
21
|
+
* // qux?: string | undefined
|
|
22
|
+
* // } | undefined
|
|
23
|
+
* // }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export type RecursivePartial<T> = {
|
|
27
|
+
[P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] | undefined : T[P] extends infer F extends AnyFunction ? [keyof T[P]] extends [undefined] ? T[P] | undefined : ExtractFunction<F> & RecursivePartial<Properties<T[P]>> : T[P] extends AnyRecord ? RecursivePartial<T[P]> | undefined : T[P] | undefined;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=recursive_partial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive_partial.d.ts","sourceRoot":"","sources":["../../ts/object/recursive_partial.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACtC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GACjC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,WAAW,GACxC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAChB,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxD,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAClC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CACnB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursive_partial.js","sourceRoot":"","sources":["../../ts/object/recursive_partial.ts"],"names":[],"mappings":"AAAA,4FAA4F"}
|
package/esm/testing/stub.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AnyFunction } from '../function/any_function.js';
|
|
2
|
-
import type { RecursivePartial } from '../object/
|
|
2
|
+
import type { RecursivePartial } from '../object/recursive_partial.js';
|
|
3
3
|
import type { NoInfer } from '../type/no_infer.js';
|
|
4
4
|
/**
|
|
5
5
|
* stub a value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub.d.ts","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"stub.d.ts","sourceRoot":"","sources":["../../ts/testing/stub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;AACvD,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;yBAA9C,IAAI;;;QAqClB;;;;;;;WAOG;;QAIH;;WAEG"}
|
|
@@ -206,6 +206,25 @@ interface TestType {
|
|
|
206
206
|
* @return `expected` as `T` for type inspection.
|
|
207
207
|
*/
|
|
208
208
|
void<T>(expected: IsVoid<T>): T;
|
|
209
|
+
/**
|
|
210
|
+
* A quick way to inspect a type.
|
|
211
|
+
*
|
|
212
|
+
* The handler is not being call.
|
|
213
|
+
*
|
|
214
|
+
* It just make it easy to inspect a specific type.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```ts
|
|
218
|
+
* testType.inspect<SomeType>(t => ...try out the `t` which is `SomeType` here...)
|
|
219
|
+
*
|
|
220
|
+
* // instead of
|
|
221
|
+
* const r: SomeType = {} as any
|
|
222
|
+
* ...try out the `r` which is `SomeType` here...
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* After trying out the type, remove the line.
|
|
226
|
+
*/
|
|
227
|
+
inspect<T>(handler: (t: T) => unknown): (t: T) => unknown;
|
|
209
228
|
}
|
|
210
229
|
/**
|
|
211
230
|
* Test utilities for types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test_type.d.ts","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test_type.js","sourceRoot":"","sources":["../../ts/testing/test_type.ts"],"names":[],"mappings":"AAuOA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,EAAc,EAAE;IACjD,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS;QAC5B,OAAO,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAA;IACvC,CAAC;CACD,CAAC,CAAA"}
|
package/package.json
CHANGED
package/ts/object/index.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { KnownKeys } from './KnownKeys.js'
|
|
|
10
10
|
export type { OptionalKeys } from './OptionalKeys.js'
|
|
11
11
|
export type { Partial, PartialExcept, PartialOmit, PartialPick } from './Partial.js'
|
|
12
12
|
export type { RecursiveIntersect } from './RecursiveIntersect.js'
|
|
13
|
-
export type { RecursivePartial } from './
|
|
13
|
+
export type { RecursivePartial } from './recursive_partial.js'
|
|
14
14
|
export type { RecursiveRequired } from './RecursiveRequired.js'
|
|
15
15
|
export type { RequiredExcept, RequiredPick } from './Required.js'
|
|
16
16
|
export type { RequiredKeys } from './RequiredKeys.js'
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Source: https://stackoverflow.com/questions/41980195/recursive-partialt-in-typescript-2-1
|
|
2
|
+
|
|
3
|
+
import type { AnyFunction } from '../function/any_function.js'
|
|
4
|
+
import type { ExtractFunction } from '../index.js'
|
|
5
|
+
import type { AnyRecord } from './AnyRecord.js'
|
|
6
|
+
import type { Properties } from './properties.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Creates a recursive partial type of type T.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* interface Foo {
|
|
14
|
+
* bar: number;
|
|
15
|
+
* baz: {
|
|
16
|
+
* qux: string
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* type PartialFoo = RecursivePartial<Foo>
|
|
21
|
+
* // {
|
|
22
|
+
* // bar?: number | undefined;
|
|
23
|
+
* // baz?: {
|
|
24
|
+
* // qux?: string | undefined
|
|
25
|
+
* // } | undefined
|
|
26
|
+
* // }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export type RecursivePartial<T> = {
|
|
30
|
+
[P in keyof T]?: T[P] extends (infer U)[]
|
|
31
|
+
? RecursivePartial<U>[] | undefined
|
|
32
|
+
: T[P] extends infer F extends AnyFunction
|
|
33
|
+
? [keyof T[P]] extends [undefined]
|
|
34
|
+
? T[P] | undefined
|
|
35
|
+
: ExtractFunction<F> & RecursivePartial<Properties<T[P]>>
|
|
36
|
+
: T[P] extends AnyRecord
|
|
37
|
+
? RecursivePartial<T[P]> | undefined
|
|
38
|
+
: T[P] | undefined
|
|
39
|
+
}
|
package/ts/testing/stub.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { requiredDeep } from 'unpartial'
|
|
2
2
|
import type { AnyFunction } from '../function/any_function.js'
|
|
3
|
-
import type { RecursivePartial } from '../object/
|
|
3
|
+
import type { RecursivePartial } from '../object/recursive_partial.js'
|
|
4
4
|
import type { NoInfer } from '../type/no_infer.js'
|
|
5
5
|
|
|
6
6
|
/**
|
package/ts/testing/test_type.ts
CHANGED
|
@@ -208,6 +208,25 @@ interface TestType {
|
|
|
208
208
|
* @return `expected` as `T` for type inspection.
|
|
209
209
|
*/
|
|
210
210
|
void<T>(expected: IsVoid<T>): T
|
|
211
|
+
/**
|
|
212
|
+
* A quick way to inspect a type.
|
|
213
|
+
*
|
|
214
|
+
* The handler is not being call.
|
|
215
|
+
*
|
|
216
|
+
* It just make it easy to inspect a specific type.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```ts
|
|
220
|
+
* testType.inspect<SomeType>(t => ...try out the `t` which is `SomeType` here...)
|
|
221
|
+
*
|
|
222
|
+
* // instead of
|
|
223
|
+
* const r: SomeType = {} as any
|
|
224
|
+
* ...try out the `r` which is `SomeType` here...
|
|
225
|
+
* ```
|
|
226
|
+
*
|
|
227
|
+
* After trying out the type, remove the line.
|
|
228
|
+
*/
|
|
229
|
+
inspect<T>(handler: (t: T) => unknown): (t: T) => unknown
|
|
211
230
|
}
|
|
212
231
|
|
|
213
232
|
/**
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecursivePartial.d.ts","sourceRoot":"","sources":["../../ts/object/RecursivePartial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACtC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACrB,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,CAAC,CAAC,CAAC;CACP,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecursivePartial.js","sourceRoot":"","sources":["../../ts/object/RecursivePartial.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecursivePartial.d.ts","sourceRoot":"","sources":["../../ts/object/RecursivePartial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACtC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GACrB,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,CAAC,CAAC,CAAC;CACP,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecursivePartial.js","sourceRoot":"","sources":["../../ts/object/RecursivePartial.ts"],"names":[],"mappings":""}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AnyRecord } from './AnyRecord.js'
|
|
2
|
-
|
|
3
|
-
// Source: https://stackoverflow.com/questions/41980195/recursive-partialt-in-typescript-2-1
|
|
4
|
-
export type RecursivePartial<T> = {
|
|
5
|
-
[P in keyof T]?: T[P] extends (infer U)[]
|
|
6
|
-
? RecursivePartial<U>[]
|
|
7
|
-
: T[P] extends AnyRecord
|
|
8
|
-
? RecursivePartial<T[P]>
|
|
9
|
-
: T[P]
|
|
10
|
-
}
|