@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.
@@ -2,5 +2,5 @@ import { init_esm_shims } from './4RNWLMHM.js';
2
2
 
3
3
  // src/deep.ts
4
4
  init_esm_shims();
5
- //# sourceMappingURL=X43TXNZ3.js.map
6
- //# sourceMappingURL=X43TXNZ3.js.map
5
+ //# sourceMappingURL=TML6PHUW.js.map
6
+ //# sourceMappingURL=TML6PHUW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deep.ts"],"names":[],"mappings":";;;AAEA,cAAA,EAAA","file":"X43TXNZ3.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 U }\n ? Prettify<\n { [brandTag]: U } & {\n [P in keyof T]?: DeepOptional<T[P]>;\n }\n >\n : {\n [P in keyof T]?: DeepOptional<T[P]>;\n };\n"]}
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
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./LJLAUEED.cjs');
3
+ require('./B77ZZJ5J.cjs');
4
4
  require('./U7VZULNU.cjs');
5
5
 
6
6
  //# sourceMappingURL=deep.cjs.map
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 U;
10
+ [brandTag]: infer V;
11
11
  } ? Prettify<{
12
- [brandTag]: U;
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
@@ -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
@@ -1,4 +1,4 @@
1
- import './X43TXNZ3.js';
1
+ import './TML6PHUW.js';
2
2
  import './4RNWLMHM.js';
3
3
  //# sourceMappingURL=deep.js.map
4
4
  //# sourceMappingURL=deep.js.map
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var KLAVEBFH_cjs = require('./KLAVEBFH.cjs');
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
- KLAVEBFH_cjs.test("DeepOptional", () => {
9
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
10
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
11
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
12
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toEqualTypeOf();
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
@@ -1,4 +1,4 @@
1
- import { test, import_expect_type } from './OV67BGO6.js';
1
+ import { test, import_expect_type } from './AYCOZKHR.js';
2
2
  import { init_esm_shims } from './4RNWLMHM.js';
3
3
 
4
4
  // src/deep.test-d.ts
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('./CEQAD5SY.cjs');
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('./LJLAUEED.cjs');
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 './KUQBG2D5.js';
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 './X43TXNZ3.js';
13
+ import './TML6PHUW.js';
14
14
  import './HBKMB3K6.js';
15
15
  import './MNZ3MKHF.js';
16
16
  import { init_esm_shims } from './4RNWLMHM.js';
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var KLAVEBFH_cjs = require('./KLAVEBFH.cjs');
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
- KLAVEBFH_cjs.test("StringWithoutSuffix", () => {
9
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toBeString();
10
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toBeNever();
11
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toBeNever();
12
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toBeNever();
13
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toBeString();
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
- KLAVEBFH_cjs.test("HexStringIsTrimmed", () => {
16
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toExtend();
17
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toExtend();
18
- (0, KLAVEBFH_cjs.import_expect_type.expectTypeOf)().toExtend();
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
@@ -1,4 +1,4 @@
1
- import { test, import_expect_type } from './OV67BGO6.js';
1
+ import { test, import_expect_type } from './AYCOZKHR.js';
2
2
  import { init_esm_shims } from './4RNWLMHM.js';
3
3
 
4
4
  // src/strings.test-d.ts
package/dist/tuples.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./CEQAD5SY.cjs');
3
+ require('./GKC44C4P.cjs');
4
4
  require('./U7VZULNU.cjs');
5
5
 
6
6
  //# sourceMappingURL=tuples.cjs.map
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
@@ -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
@@ -1,4 +1,4 @@
1
- import './KUQBG2D5.js';
1
+ import './BLALMGVL.js';
2
2
  import './4RNWLMHM.js';
3
3
  //# sourceMappingURL=tuples.js.map
4
4
  //# sourceMappingURL=tuples.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/typescript-utils",
3
- "version": "0.0.49",
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.49",
20
- "@layerzerolabs/typescript-configuration": "0.0.49"
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 U }
12
+ export type DeepOptional<T> = T extends { [brandTag]: infer V }
13
13
  ? Prettify<
14
- { [brandTag]: U } & {
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
+ };