@layerzerolabs/typescript-utils 0.0.49 → 0.0.50
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/.turbo/turbo-build.log +64 -64
- package/dist/{OV67BGO6.js → AYCOZKHR.js} +4 -4
- package/dist/AYCOZKHR.js.map +1 -0
- package/dist/{LJLAUEED.cjs → B77ZZJ5J.cjs} +2 -2
- package/dist/{LJLAUEED.cjs.map → B77ZZJ5J.cjs.map} +1 -1
- package/dist/{KUQBG2D5.js → BLALMGVL.js} +2 -2
- package/dist/{KUQBG2D5.js.map → BLALMGVL.js.map} +1 -1
- package/dist/{CEQAD5SY.cjs → GKC44C4P.cjs} +2 -2
- package/dist/{CEQAD5SY.cjs.map → GKC44C4P.cjs.map} +1 -1
- package/dist/{KLAVEBFH.cjs → Q3ERQ4ME.cjs} +4 -4
- package/dist/Q3ERQ4ME.cjs.map +1 -0
- package/dist/{X43TXNZ3.js → TML6PHUW.js} +2 -2
- package/dist/{X43TXNZ3.js.map → TML6PHUW.js.map} +1 -1
- package/dist/deep.cjs +1 -1
- package/dist/deep.d.ts +5 -2
- package/dist/deep.d.ts.map +1 -1
- package/dist/deep.js +1 -1
- package/dist/deep.test-d.cjs +6 -6
- package/dist/deep.test-d.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/strings.test-d.cjs +11 -11
- package/dist/strings.test-d.js +1 -1
- package/dist/tuples.cjs +1 -1
- package/dist/tuples.d.ts +3 -0
- package/dist/tuples.d.ts.map +1 -1
- package/dist/tuples.js +1 -1
- package/package.json +3 -4
- package/src/deep.ts +8 -2
- package/src/tuples.ts +4 -0
- package/dist/KLAVEBFH.cjs.map +0 -1
- package/dist/OV67BGO6.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deep.ts"],"names":[],"mappings":";;;AAEA,cAAA,EAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/deep.ts"],"names":[],"mappings":";;;AAEA,cAAA,EAAA","file":"TML6PHUW.js","sourcesContent":["import type { Prettify } from './viem';\n\n/**\n * Copy the brand tag from the branded.ts file, can't import it to keep it hidden from library users\n */\nconst brandTag = '___tag___';\n\nexport type DeepRequire<T> = {\n [P in keyof T]-?: DeepRequire<T[P]>;\n};\n\nexport type DeepOptional<T> = T extends { [brandTag]: infer V }\n ? Prettify<\n { [brandTag]: V } & {\n [P in keyof T]?: DeepOptional<T[P]>;\n }\n >\n : {\n [P in keyof T]?: DeepOptional<T[P]>;\n };\n\nexport type DeepUnion<T, U> =\n | {\n [P in keyof T]: DeepUnion<T[P], U>;\n }\n | U;\n"]}
|
package/dist/deep.cjs
CHANGED
package/dist/deep.d.ts
CHANGED
|
@@ -7,13 +7,16 @@ export type DeepRequire<T> = {
|
|
|
7
7
|
[P in keyof T]-?: DeepRequire<T[P]>;
|
|
8
8
|
};
|
|
9
9
|
export type DeepOptional<T> = T extends {
|
|
10
|
-
[brandTag]: infer
|
|
10
|
+
[brandTag]: infer V;
|
|
11
11
|
} ? Prettify<{
|
|
12
|
-
[brandTag]:
|
|
12
|
+
[brandTag]: V;
|
|
13
13
|
} & {
|
|
14
14
|
[P in keyof T]?: DeepOptional<T[P]>;
|
|
15
15
|
}> : {
|
|
16
16
|
[P in keyof T]?: DeepOptional<T[P]>;
|
|
17
17
|
};
|
|
18
|
+
export type DeepUnion<T, U> = {
|
|
19
|
+
[P in keyof T]: DeepUnion<T[P], U>;
|
|
20
|
+
} | U;
|
|
18
21
|
export {};
|
|
19
22
|
//# sourceMappingURL=deep.d.ts.map
|
package/dist/deep.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep.d.ts","sourceRoot":"","sources":["../src/deep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,QAAA,MAAM,QAAQ,cAAc,CAAC;AAE7B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACzD,QAAQ,CACJ;IAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG;KACf,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CACJ,GACD;KACK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"deep.d.ts","sourceRoot":"","sources":["../src/deep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,QAAA,MAAM,QAAQ,cAAc,CAAC;AAE7B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACzD,QAAQ,CACJ;IAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG;KACf,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CACJ,GACD;KACK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAER,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IACpB;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACrC,GACD,CAAC,CAAC"}
|
package/dist/deep.js
CHANGED
package/dist/deep.test-d.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var Q3ERQ4ME_cjs = require('./Q3ERQ4ME.cjs');
|
|
4
4
|
var U7VZULNU_cjs = require('./U7VZULNU.cjs');
|
|
5
5
|
|
|
6
6
|
// src/deep.test-d.ts
|
|
7
7
|
U7VZULNU_cjs.init_cjs_shims();
|
|
8
|
-
|
|
9
|
-
(0,
|
|
10
|
-
(0,
|
|
11
|
-
(0,
|
|
12
|
-
(0,
|
|
8
|
+
Q3ERQ4ME_cjs.test("DeepOptional", () => {
|
|
9
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
|
|
10
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
|
|
11
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
|
|
12
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
|
|
13
13
|
});
|
|
14
14
|
//# sourceMappingURL=deep.test-d.cjs.map
|
|
15
15
|
//# sourceMappingURL=deep.test-d.cjs.map
|
package/dist/deep.test-d.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -7,12 +7,12 @@ require('./Y53SFKBY.cjs');
|
|
|
7
7
|
require('./FQTDMGIM.cjs');
|
|
8
8
|
require('./JRGCWPQC.cjs');
|
|
9
9
|
require('./KLHW5WN3.cjs');
|
|
10
|
-
require('./
|
|
10
|
+
require('./GKC44C4P.cjs');
|
|
11
11
|
require('./M2FMGCRF.cjs');
|
|
12
12
|
require('./KGYIWVDZ.cjs');
|
|
13
13
|
require('./44IBECAR.cjs');
|
|
14
14
|
require('./BPWNPHCG.cjs');
|
|
15
|
-
require('./
|
|
15
|
+
require('./B77ZZJ5J.cjs');
|
|
16
16
|
require('./3JF2BSTM.cjs');
|
|
17
17
|
require('./ZLF3Y44J.cjs');
|
|
18
18
|
var U7VZULNU_cjs = require('./U7VZULNU.cjs');
|
package/dist/index.js
CHANGED
|
@@ -5,12 +5,12 @@ import './HVKBLL5V.js';
|
|
|
5
5
|
import './C2AO2CD6.js';
|
|
6
6
|
import './FPWOFXCL.js';
|
|
7
7
|
import './7MFOZW3L.js';
|
|
8
|
-
import './
|
|
8
|
+
import './BLALMGVL.js';
|
|
9
9
|
import './ZPWIEOJR.js';
|
|
10
10
|
import './Q3ZAC463.js';
|
|
11
11
|
import './DXU6T5SS.js';
|
|
12
12
|
import './3OBHE7MG.js';
|
|
13
|
-
import './
|
|
13
|
+
import './TML6PHUW.js';
|
|
14
14
|
import './HBKMB3K6.js';
|
|
15
15
|
import './MNZ3MKHF.js';
|
|
16
16
|
import { init_esm_shims } from './4RNWLMHM.js';
|
package/dist/strings.test-d.cjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var Q3ERQ4ME_cjs = require('./Q3ERQ4ME.cjs');
|
|
4
4
|
var U7VZULNU_cjs = require('./U7VZULNU.cjs');
|
|
5
5
|
|
|
6
6
|
// src/strings.test-d.ts
|
|
7
7
|
U7VZULNU_cjs.init_cjs_shims();
|
|
8
|
-
|
|
9
|
-
(0,
|
|
10
|
-
(0,
|
|
11
|
-
(0,
|
|
12
|
-
(0,
|
|
13
|
-
(0,
|
|
8
|
+
Q3ERQ4ME_cjs.test("StringWithoutSuffix", () => {
|
|
9
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toBeString();
|
|
10
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toBeNever();
|
|
11
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toBeNever();
|
|
12
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toBeNever();
|
|
13
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toBeString();
|
|
14
14
|
});
|
|
15
|
-
|
|
16
|
-
(0,
|
|
17
|
-
(0,
|
|
18
|
-
(0,
|
|
15
|
+
Q3ERQ4ME_cjs.test("HexStringIsTrimmed", () => {
|
|
16
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toExtend();
|
|
17
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toExtend();
|
|
18
|
+
(0, Q3ERQ4ME_cjs.import_expect_type.expectTypeOf)().toExtend();
|
|
19
19
|
});
|
|
20
20
|
//# sourceMappingURL=strings.test-d.cjs.map
|
|
21
21
|
//# sourceMappingURL=strings.test-d.cjs.map
|
package/dist/strings.test-d.js
CHANGED
package/dist/tuples.cjs
CHANGED
package/dist/tuples.d.ts
CHANGED
|
@@ -4,5 +4,8 @@ export type TryGetDuplicate<T extends readonly (string | number | symbol)[], See
|
|
|
4
4
|
export type AssertUniqueCompleteSet<T extends readonly (string | number | symbol)[], AllKeys extends string | number | symbol> = IsComplete<T, AllKeys> extends false ? BrandedError<`Missing key: ${Exclude<AllKeys extends Symbol ? 'ERR' : AllKeys, T[number]>}`> : TryGetDuplicate<T> extends false ? T : BrandedError<`Duplicate key found: ${TryGetDuplicate<T>}`>;
|
|
5
5
|
type BuildTupleHelper<Element, Length extends number, Rest extends Element[]> = Rest['length'] extends Length ? readonly [...Rest] : BuildTupleHelper<Element, Length, [Element, ...Rest]>;
|
|
6
6
|
export type BuildTuple<Element, Length extends number> = number extends Length ? readonly Element[] : BuildTupleHelper<Element, Length, []>;
|
|
7
|
+
export type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {
|
|
8
|
+
[K in T[number] as K[0]]: K[1];
|
|
9
|
+
};
|
|
7
10
|
export {};
|
|
8
11
|
//# sourceMappingURL=tuples.d.ts.map
|
package/dist/tuples.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuples.d.ts","sourceRoot":"","sources":["../src/tuples.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,MAAM,MAAM,UAAU,CAClB,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAClC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvD,MAAM,MAAM,eAAe,CACvB,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,IAC9C,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACnC,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,GACrB,IAAI,GACJ,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GACnC,IAAI,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAC9C,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,GACtC,KAAK,GACT,KAAK,GACX,KAAK,CAAC;AAIZ,MAAM,MAAM,uBAAuB,CAC/B,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAExC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,GAC9B,YAAY,CAAC,gBAAgB,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAC5F,eAAe,CAAC,CAAC,CAAC,SAAS,KAAK,GAC9B,CAAC,GACD,YAAY,CAAC,wBAAwB,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEvE,KAAK,gBAAgB,CACjB,OAAO,EACP,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,OAAO,EAAE,IACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,GAC3B,SAAS,CAAC,GAAG,IAAI,CAAC,GAClB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,GAExE,SAAS,OAAO,EAAE,GAClB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"tuples.d.ts","sourceRoot":"","sources":["../src/tuples.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,MAAM,MAAM,UAAU,CAClB,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAClC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvD,MAAM,MAAM,eAAe,CACvB,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,IAC9C,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACnC,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,GACrB,IAAI,GACJ,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GACnC,IAAI,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAC9C,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,GACtC,KAAK,GACT,KAAK,GACX,KAAK,CAAC;AAIZ,MAAM,MAAM,uBAAuB,CAC/B,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAC/C,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAExC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,GAC9B,YAAY,CAAC,gBAAgB,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAC5F,eAAe,CAAC,CAAC,CAAC,SAAS,KAAK,GAC9B,CAAC,GACD,YAAY,CAAC,wBAAwB,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEvE,KAAK,gBAAgB,CACjB,OAAO,EACP,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,OAAO,EAAE,IACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,GAC3B,SAAS,CAAC,GAAG,IAAI,CAAC,GAClB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,GAExE,SAAS,OAAO,EAAE,GAClB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI;KAC5E,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC"}
|
package/dist/tuples.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/typescript-utils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.50",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"tsup": "^8.4.0",
|
|
18
18
|
"vitest": "^3.2.3",
|
|
19
|
-
"@layerzerolabs/tsup-configuration": "0.0.
|
|
20
|
-
"@layerzerolabs/typescript-configuration": "0.0.
|
|
19
|
+
"@layerzerolabs/tsup-configuration": "0.0.50",
|
|
20
|
+
"@layerzerolabs/typescript-configuration": "0.0.50"
|
|
21
21
|
},
|
|
22
22
|
"publishConfig": {
|
|
23
23
|
"access": "restricted",
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
"build": "tsup",
|
|
28
28
|
"checkdeps": "pnpm --filter @layerzerolabs/depcheck run depcheck validate --catalog --missing-dependencies --only $npm_package_name",
|
|
29
29
|
"clean": "rm -rf ./node_modules .turbo ./dist",
|
|
30
|
-
"dev": "tsup --watch",
|
|
31
30
|
"lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)"
|
|
32
31
|
}
|
|
33
32
|
}
|
package/src/deep.ts
CHANGED
|
@@ -9,12 +9,18 @@ export type DeepRequire<T> = {
|
|
|
9
9
|
[P in keyof T]-?: DeepRequire<T[P]>;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
export type DeepOptional<T> = T extends { [brandTag]: infer
|
|
12
|
+
export type DeepOptional<T> = T extends { [brandTag]: infer V }
|
|
13
13
|
? Prettify<
|
|
14
|
-
{ [brandTag]:
|
|
14
|
+
{ [brandTag]: V } & {
|
|
15
15
|
[P in keyof T]?: DeepOptional<T[P]>;
|
|
16
16
|
}
|
|
17
17
|
>
|
|
18
18
|
: {
|
|
19
19
|
[P in keyof T]?: DeepOptional<T[P]>;
|
|
20
20
|
};
|
|
21
|
+
|
|
22
|
+
export type DeepUnion<T, U> =
|
|
23
|
+
| {
|
|
24
|
+
[P in keyof T]: DeepUnion<T[P], U>;
|
|
25
|
+
}
|
|
26
|
+
| U;
|
package/src/tuples.ts
CHANGED
|
@@ -43,3 +43,7 @@ export type BuildTuple<Element, Length extends number> = number extends Length
|
|
|
43
43
|
? // Because `Length extends number` and `number extends Length`, then `Length` is not a specific finite number.
|
|
44
44
|
readonly Element[] // It's not fixed length.
|
|
45
45
|
: BuildTupleHelper<Element, Length, []>; // Otherwise it is a fixed length tuple.
|
|
46
|
+
|
|
47
|
+
export type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {
|
|
48
|
+
[K in T[number] as K[0]]: K[1];
|
|
49
|
+
};
|