@layerzerolabs/typescript-utils 0.2.28 → 0.2.30

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.
@@ -11,46 +11,123 @@
11
11
  CLI Cleaning output folder
12
12
  CJS Build start
13
13
  ESM Build start
14
- Entry module "dist/EUBM3LSR.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
15
14
  "default" is imported from external module "path" but never used in "dist/6AHA7PAZ.js".
16
15
  "fileURLToPath" is imported from external module "url" but never used in "dist/6AHA7PAZ.js".
16
+ Entry module "dist/EUBM3LSR.cjs" is using named and default exports together. Consumers of your bundle will have to use `chunk.default` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning.
17
+ ESM dist/valueOf.js 119.00 B
18
+ ESM dist/withRequired.js 129.00 B
19
+ ESM dist/maybeUndefined.js 133.00 B
20
+ ESM dist/lastOf.js 117.00 B
21
+ ESM dist/merge.js 115.00 B
22
+ ESM dist/methodOf.js 121.00 B
23
+ ESM dist/removeNever.js 127.00 B
24
+ ESM dist/strings.test-d.js 745.00 B
25
+ ESM dist/tuples.js 117.00 B
26
+ ESM dist/strings.js 119.00 B
27
+ ESM dist/advancedRecord.js 133.00 B
28
+ ESM dist/branded.js 119.00 B
29
+ ESM dist/constructor.js 127.00 B
30
+ ESM dist/viem.js 113.00 B
31
+ ESM dist/disallowedAny.js 131.00 B
32
+ ESM dist/deep.test-d.js 491.00 B
33
+ ESM dist/deep.js 113.00 B
34
+ ESM dist/GGKJNPTT.js 42.15 KB
35
+ ESM dist/index.js 534.00 B
36
+ ESM dist/identity.js 121.00 B
37
+ ESM dist/TQNP6GIE.js 158.00 B
38
+ ESM dist/62TVLGZP.js 163.00 B
39
+ ESM dist/ENRZFLLD.js 155.00 B
40
+ ESM dist/KZQATXOW.js 157.00 B
41
+ ESM dist/Q6UBIYTZ.js 165.00 B
42
+ ESM dist/DDDCRYAA.js 156.00 B
43
+ ESM dist/KEJFF7VD.js 159.00 B
44
+ ESM dist/I5NXBMAF.js 162.00 B
45
+ ESM dist/CFTTK4D6.js 165.00 B
46
+ ESM dist/6IUBP3YE.js 158.00 B
47
+ ESM dist/B5GSIBEU.js 158.00 B
48
+ ESM dist/EM7SXG4B.js 157.00 B
49
+ ESM dist/FQ2L5NQU.js 155.00 B
50
+ ESM dist/P3JODCMF.js 159.00 B
51
+ ESM dist/V353KAGF.js 164.00 B
52
+ ESM dist/X6GYSLZB.js 162.00 B
53
+ ESM dist/6AHA7PAZ.js 1.87 KB
54
+ ESM dist/CI7BVOAG.js 295.28 KB
55
+ ESM dist/valueOf.js.map 71.00 B
56
+ ESM dist/maybeUndefined.js.map 78.00 B
57
+ ESM dist/withRequired.js.map 76.00 B
58
+ ESM dist/lastOf.js.map 70.00 B
59
+ ESM dist/merge.js.map 69.00 B
60
+ ESM dist/methodOf.js.map 72.00 B
61
+ ESM dist/removeNever.js.map 75.00 B
62
+ ESM dist/tuples.js.map 70.00 B
63
+ ESM dist/strings.test-d.js.map 1.68 KB
64
+ ESM dist/viem.js.map 68.00 B
65
+ ESM dist/strings.js.map 71.00 B
66
+ ESM dist/branded.js.map 71.00 B
67
+ ESM dist/advancedRecord.js.map 78.00 B
68
+ ESM dist/constructor.js.map 75.00 B
69
+ ESM dist/disallowedAny.js.map 77.00 B
70
+ ESM dist/deep.test-d.js.map 1.45 KB
71
+ ESM dist/deep.js.map 68.00 B
72
+ ESM dist/index.js.map 614.00 B
73
+ ESM dist/62TVLGZP.js.map 278.00 B
74
+ ESM dist/ENRZFLLD.js.map 8.23 KB
75
+ ESM dist/Q6UBIYTZ.js.map 621.00 B
76
+ ESM dist/identity.js.map 72.00 B
77
+ ESM dist/KZQATXOW.js.map 638.00 B
78
+ ESM dist/TQNP6GIE.js.map 517.00 B
79
+ ESM dist/DDDCRYAA.js.map 448.00 B
80
+ ESM dist/GGKJNPTT.js.map 100.16 KB
81
+ ESM dist/KEJFF7VD.js.map 378.00 B
82
+ ESM dist/CFTTK4D6.js.map 885.00 B
83
+ ESM dist/6IUBP3YE.js.map 698.00 B
84
+ ESM dist/EM7SXG4B.js.map 2.66 KB
85
+ ESM dist/FQ2L5NQU.js.map 759.00 B
86
+ ESM dist/B5GSIBEU.js.map 1.40 KB
87
+ ESM dist/P3JODCMF.js.map 244.00 B
88
+ ESM dist/V353KAGF.js.map 369.00 B
89
+ ESM dist/I5NXBMAF.js.map 231.00 B
90
+ ESM dist/X6GYSLZB.js.map 193.00 B
91
+ ESM dist/6AHA7PAZ.js.map 666.00 B
92
+ ESM dist/CI7BVOAG.js.map 761.96 KB
93
+ ESM ⚡️ Build success in 1201ms
17
94
  CJS dist/valueOf.cjs 143.00 B
18
- CJS dist/viem.cjs 137.00 B
19
95
  CJS dist/withRequired.cjs 153.00 B
20
- CJS dist/maybeUndefined.cjs 157.00 B
21
96
  CJS dist/lastOf.cjs 141.00 B
97
+ CJS dist/viem.cjs 137.00 B
22
98
  CJS dist/merge.cjs 139.00 B
99
+ CJS dist/maybeUndefined.cjs 157.00 B
23
100
  CJS dist/methodOf.cjs 145.00 B
24
101
  CJS dist/removeNever.cjs 151.00 B
25
102
  CJS dist/strings.cjs 143.00 B
26
103
  CJS dist/strings.test-d.cjs 904.00 B
27
104
  CJS dist/tuples.cjs 141.00 B
28
105
  CJS dist/advancedRecord.cjs 157.00 B
106
+ CJS dist/constructor.cjs 151.00 B
29
107
  CJS dist/branded.cjs 143.00 B
30
108
  CJS dist/deep.test-d.cjs 580.00 B
31
- CJS dist/constructor.cjs 151.00 B
32
- CJS dist/EUBM3LSR.cjs 42.53 KB
33
- CJS dist/deep.cjs 137.00 B
34
109
  CJS dist/disallowedAny.cjs 155.00 B
35
- CJS dist/identity.cjs 145.00 B
36
- CJS dist/index.cjs 612.00 B
37
- CJS dist/ZDGUYQPS.cjs 185.00 B
110
+ CJS dist/EUBM3LSR.cjs 42.53 KB
38
111
  CJS dist/2MZ52QXI.cjs 188.00 B
112
+ CJS dist/ZDGUYQPS.cjs 185.00 B
39
113
  CJS dist/4W25K7RR.cjs 193.00 B
40
- CJS dist/2OSBYVBM.cjs 187.00 B
114
+ CJS dist/index.cjs 612.00 B
115
+ CJS dist/deep.cjs 137.00 B
116
+ CJS dist/identity.cjs 145.00 B
117
+ CJS dist/7RPBI4LQ.cjs 195.00 B
41
118
  CJS dist/AKBGASRF.cjs 186.00 B
42
119
  CJS dist/NKWLAYNJ.cjs 189.00 B
43
- CJS dist/7RPBI4LQ.cjs 195.00 B
44
120
  CJS dist/Q35ZNXMT.cjs 192.00 B
45
121
  CJS dist/K3FZ3EZT.cjs 188.00 B
122
+ CJS dist/KQUDWU4T.cjs 187.00 B
46
123
  CJS dist/C7GMKBCN.cjs 195.00 B
47
- CJS dist/EFBUJ7T4.cjs 187.00 B
48
124
  CJS dist/2SJJDCZI.cjs 188.00 B
49
- CJS dist/MLSONTXK.cjs 185.00 B
50
- CJS dist/53OHF4EH.cjs 192.00 B
51
125
  CJS dist/574X5FJM.cjs 194.00 B
126
+ CJS dist/2OSBYVBM.cjs 187.00 B
52
127
  CJS dist/TVCGTTL5.cjs 189.00 B
128
+ CJS dist/53OHF4EH.cjs 192.00 B
53
129
  CJS dist/24WEKBY3.cjs 2.10 KB
130
+ CJS dist/MLSONTXK.cjs 185.00 B
54
131
  CJS dist/7BSTQVJO.cjs 301.19 KB
55
132
  CJS dist/valueOf.cjs.map 72.00 B
56
133
  CJS dist/withRequired.cjs.map 77.00 B
@@ -59,112 +136,35 @@ Entry module "dist/EUBM3LSR.cjs" is using named and default exports together. Co
59
136
  CJS dist/lastOf.cjs.map 71.00 B
60
137
  CJS dist/merge.cjs.map 70.00 B
61
138
  CJS dist/methodOf.cjs.map 73.00 B
62
- CJS dist/strings.cjs.map 72.00 B
63
139
  CJS dist/removeNever.cjs.map 76.00 B
140
+ CJS dist/strings.cjs.map 72.00 B
64
141
  CJS dist/strings.test-d.cjs.map 1.70 KB
65
- CJS dist/advancedRecord.cjs.map 79.00 B
66
142
  CJS dist/tuples.cjs.map 71.00 B
67
- CJS dist/branded.cjs.map 72.00 B
68
- CJS dist/deep.test-d.cjs.map 1.47 KB
143
+ CJS dist/advancedRecord.cjs.map 79.00 B
69
144
  CJS dist/constructor.cjs.map 76.00 B
70
- CJS dist/deep.cjs.map 69.00 B
71
145
  CJS dist/disallowedAny.cjs.map 78.00 B
72
- CJS dist/identity.cjs.map 73.00 B
73
- CJS dist/index.cjs.map 635.00 B
74
- CJS dist/EUBM3LSR.cjs.map 100.19 KB
146
+ CJS dist/deep.test-d.cjs.map 1.47 KB
75
147
  CJS dist/ZDGUYQPS.cjs.map 8.25 KB
76
148
  CJS dist/2MZ52QXI.cjs.map 538.00 B
149
+ CJS dist/branded.cjs.map 72.00 B
150
+ CJS dist/EUBM3LSR.cjs.map 100.19 KB
77
151
  CJS dist/4W25K7RR.cjs.map 299.00 B
78
- CJS dist/2OSBYVBM.cjs.map 659.00 B
79
- CJS dist/AKBGASRF.cjs.map 469.00 B
80
- CJS dist/NKWLAYNJ.cjs.map 399.00 B
152
+ CJS dist/index.cjs.map 635.00 B
153
+ CJS dist/deep.cjs.map 69.00 B
81
154
  CJS dist/7RPBI4LQ.cjs.map 642.00 B
155
+ CJS dist/AKBGASRF.cjs.map 469.00 B
156
+ CJS dist/identity.cjs.map 73.00 B
82
157
  CJS dist/Q35ZNXMT.cjs.map 252.00 B
83
158
  CJS dist/K3FZ3EZT.cjs.map 1.42 KB
159
+ CJS dist/KQUDWU4T.cjs.map 2.68 KB
84
160
  CJS dist/C7GMKBCN.cjs.map 906.00 B
85
- CJS dist/EFBUJ7T4.cjs.map 2.17 KB
86
161
  CJS dist/2SJJDCZI.cjs.map 719.00 B
87
- CJS dist/MLSONTXK.cjs.map 780.00 B
88
- CJS dist/53OHF4EH.cjs.map 214.00 B
162
+ CJS dist/NKWLAYNJ.cjs.map 399.00 B
89
163
  CJS dist/574X5FJM.cjs.map 390.00 B
164
+ CJS dist/2OSBYVBM.cjs.map 659.00 B
165
+ CJS dist/53OHF4EH.cjs.map 214.00 B
90
166
  CJS dist/TVCGTTL5.cjs.map 265.00 B
91
167
  CJS dist/24WEKBY3.cjs.map 923.00 B
168
+ CJS dist/MLSONTXK.cjs.map 780.00 B
92
169
  CJS dist/7BSTQVJO.cjs.map 762.74 KB
93
- CJS ⚡️ Build success in 2183ms
94
- ESM dist/valueOf.js 119.00 B
95
- ESM dist/viem.js 113.00 B
96
- ESM dist/GGKJNPTT.js 42.15 KB
97
- ESM dist/withRequired.js 129.00 B
98
- ESM dist/lastOf.js 117.00 B
99
- ESM dist/maybeUndefined.js 133.00 B
100
- ESM dist/methodOf.js 121.00 B
101
- ESM dist/merge.js 115.00 B
102
- ESM dist/removeNever.js 127.00 B
103
- ESM dist/strings.test-d.js 745.00 B
104
- ESM dist/strings.js 119.00 B
105
- ESM dist/tuples.js 117.00 B
106
- ESM dist/advancedRecord.js 133.00 B
107
- ESM dist/branded.js 119.00 B
108
- ESM dist/constructor.js 127.00 B
109
- ESM dist/deep.test-d.js 491.00 B
110
- ESM dist/deep.js 113.00 B
111
- ESM dist/disallowedAny.js 131.00 B
112
- ESM dist/identity.js 121.00 B
113
- ESM dist/index.js 534.00 B
114
- ESM dist/TQNP6GIE.js 158.00 B
115
- ESM dist/62TVLGZP.js 163.00 B
116
- ESM dist/KZQATXOW.js 157.00 B
117
- ESM dist/Q6UBIYTZ.js 165.00 B
118
- ESM dist/DDDCRYAA.js 156.00 B
119
- ESM dist/KEJFF7VD.js 159.00 B
120
- ESM dist/I5NXBMAF.js 162.00 B
121
- ESM dist/B5GSIBEU.js 158.00 B
122
- ESM dist/CFTTK4D6.js 165.00 B
123
- ESM dist/ZS6LQCLY.js 157.00 B
124
- ESM dist/6IUBP3YE.js 158.00 B
125
- ESM dist/X6GYSLZB.js 162.00 B
126
- ESM dist/FQ2L5NQU.js 155.00 B
127
- ESM dist/V353KAGF.js 164.00 B
128
- ESM dist/P3JODCMF.js 159.00 B
129
- ESM dist/ENRZFLLD.js 155.00 B
130
- ESM dist/6AHA7PAZ.js 1.87 KB
131
- ESM dist/CI7BVOAG.js 295.28 KB
132
- ESM dist/viem.js.map 68.00 B
133
- ESM dist/withRequired.js.map 76.00 B
134
- ESM dist/valueOf.js.map 71.00 B
135
- ESM dist/lastOf.js.map 70.00 B
136
- ESM dist/maybeUndefined.js.map 78.00 B
137
- ESM dist/methodOf.js.map 72.00 B
138
- ESM dist/merge.js.map 69.00 B
139
- ESM dist/removeNever.js.map 75.00 B
140
- ESM dist/strings.test-d.js.map 1.68 KB
141
- ESM dist/strings.js.map 71.00 B
142
- ESM dist/tuples.js.map 70.00 B
143
- ESM dist/advancedRecord.js.map 78.00 B
144
- ESM dist/branded.js.map 71.00 B
145
- ESM dist/deep.test-d.js.map 1.45 KB
146
- ESM dist/deep.js.map 68.00 B
147
- ESM dist/constructor.js.map 75.00 B
148
- ESM dist/disallowedAny.js.map 77.00 B
149
- ESM dist/GGKJNPTT.js.map 100.16 KB
150
- ESM dist/identity.js.map 72.00 B
151
- ESM dist/index.js.map 614.00 B
152
- ESM dist/TQNP6GIE.js.map 517.00 B
153
- ESM dist/62TVLGZP.js.map 278.00 B
154
- ESM dist/Q6UBIYTZ.js.map 621.00 B
155
- ESM dist/KZQATXOW.js.map 638.00 B
156
- ESM dist/KEJFF7VD.js.map 378.00 B
157
- ESM dist/DDDCRYAA.js.map 448.00 B
158
- ESM dist/B5GSIBEU.js.map 1.40 KB
159
- ESM dist/I5NXBMAF.js.map 231.00 B
160
- ESM dist/CFTTK4D6.js.map 885.00 B
161
- ESM dist/ZS6LQCLY.js.map 2.15 KB
162
- ESM dist/X6GYSLZB.js.map 193.00 B
163
- ESM dist/6IUBP3YE.js.map 698.00 B
164
- ESM dist/P3JODCMF.js.map 244.00 B
165
- ESM dist/FQ2L5NQU.js.map 759.00 B
166
- ESM dist/V353KAGF.js.map 369.00 B
167
- ESM dist/ENRZFLLD.js.map 8.23 KB
168
- ESM dist/6AHA7PAZ.js.map 666.00 B
169
- ESM dist/CI7BVOAG.js.map 761.96 KB
170
- ESM ⚡️ Build success in 2189ms
170
+ CJS ⚡️ Build success in 1204ms
@@ -2,7 +2,7 @@
2
2
  > @layerzerolabs/typescript-utils@0.0.0 lint /home/runner/work/monorepo-internal/monorepo-internal/packages/typescript-utils
3
3
  > eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)
4
4
 
5
- (node:57373) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/eslint.config.js?mtime=1771045407926 is not specified and it doesn't parse as CommonJS.
5
+ (node:55022) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/eslint.config.js?mtime=1771449390046 is not specified and it doesn't parse as CommonJS.
6
6
  Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
7
7
  To eliminate this warning, add "type": "module" to /home/runner/work/monorepo-internal/monorepo-internal/package.json.
8
8
  (Use `node --trace-warnings ...` to show where the warning was created)
@@ -2,5 +2,5 @@ import { init_esm_shims } from './6AHA7PAZ.js';
2
2
 
3
3
  // src/tuples.ts
4
4
  init_esm_shims();
5
- //# sourceMappingURL=ZS6LQCLY.js.map
6
- //# sourceMappingURL=ZS6LQCLY.js.map
5
+ //# sourceMappingURL=EM7SXG4B.js.map
6
+ //# sourceMappingURL=EM7SXG4B.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tuples.ts"],"names":[],"mappings":";;;AA8CA,cAAA,EAAA","file":"ZS6LQCLY.js","sourcesContent":["import type { BrandedError } from './branded';\n\n//check that the tuple T uses every type in the union K at least once\nexport type IsComplete<\n T extends readonly (string | number | symbol)[],\n K extends string | number | symbol,\n> = Exclude<K, T[number]> extends never ? true : false;\n\nexport type TryGetDuplicate<\n T extends readonly (string | number | symbol)[],\n Seen extends (string | number | symbol)[] = [],\n> = T extends [infer Head, ...infer Tail]\n ? Head extends Seen[number]\n ? Head\n : Head extends string | number | symbol\n ? Tail extends readonly (string | number | symbol)[]\n ? TryGetDuplicate<Tail, [...Seen, Head]>\n : false\n : false\n : false;\n\n//check that the tuple T is a valid ordering of AllKeys, using IsComplete and TryGetDuplicate\n//returns a branded error if there are missing keys or duplicates\nexport type AssertUniqueCompleteSet<\n T extends readonly (string | number | symbol)[],\n AllKeys extends string | number | symbol,\n> =\n IsComplete<T, AllKeys> extends false\n ? BrandedError<`Missing key: ${Exclude<AllKeys extends Symbol ? 'ERR' : AllKeys, T[number]>}`>\n : TryGetDuplicate<T> extends false\n ? T\n : BrandedError<`Duplicate key found: ${TryGetDuplicate<T>}`>;\n\ntype BuildTupleHelper<\n Element,\n Length extends number,\n Rest extends Element[],\n> = Rest['length'] extends Length\n ? readonly [...Rest] // Terminate with readonly array (aka tuple)\n : BuildTupleHelper<Element, Length, [Element, ...Rest]>;\n\nexport type BuildTuple<Element, Length extends number> = number extends Length\n ? // Because `Length extends number` and `number extends Length`, then `Length` is not a specific finite number.\n readonly Element[] // It's not fixed length.\n : BuildTupleHelper<Element, Length, []>; // Otherwise it is a fixed length tuple.\n\nexport type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {\n [K in T[number] as K[0]]: K[1];\n};\n"]}
1
+ {"version":3,"sources":["../src/tuples.ts"],"names":[],"mappings":";;;AAsDA,cAAA,EAAA","file":"EM7SXG4B.js","sourcesContent":["import type { BrandedError } from './branded';\n\n//check that the tuple T uses every type in the union K at least once\nexport type IsComplete<\n T extends readonly (string | number | symbol)[],\n K extends string | number | symbol,\n> = Exclude<K, T[number]> extends never ? true : false;\n\nexport type TryGetDuplicate<\n T extends readonly (string | number | symbol)[],\n Seen extends (string | number | symbol)[] = [],\n> = T extends [infer Head, ...infer Tail]\n ? Head extends Seen[number]\n ? Head\n : Head extends string | number | symbol\n ? Tail extends readonly (string | number | symbol)[]\n ? TryGetDuplicate<Tail, [...Seen, Head]>\n : false\n : false\n : false;\n\n//check that the tuple T is a valid ordering of AllKeys, using IsComplete and TryGetDuplicate\n//returns a branded error if there are missing keys or duplicates\nexport type AssertUniqueCompleteSet<\n T extends readonly (string | number | symbol)[],\n AllKeys extends string | number | symbol,\n> =\n IsComplete<T, AllKeys> extends false\n ? BrandedError<`Missing key: ${Exclude<AllKeys extends Symbol ? 'ERR' : AllKeys, T[number]>}`>\n : TryGetDuplicate<T> extends false\n ? T\n : BrandedError<`Duplicate key found: ${TryGetDuplicate<T>}`>;\n\ntype BuildTupleHelper<\n Element,\n Length extends number,\n Rest extends Element[],\n> = Rest['length'] extends Length\n ? readonly [...Rest] // Terminate with readonly array (aka tuple)\n : BuildTupleHelper<Element, Length, [Element, ...Rest]>;\n\nexport type BuildTuple<Element, Length extends number> = number extends Length\n ? // Because `Length extends number` and `number extends Length`, then `Length` is not a specific finite number.\n readonly Element[] // It's not fixed length.\n : BuildTupleHelper<Element, Length, []>; // Otherwise it is a fixed length tuple.\n\nexport type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {\n [K in T[number] as K[0]]: K[1];\n};\n\nexport type TuplePrefixUnion<T extends any[]> =\n | []\n | (Required<T> extends [...infer Init, any] ? Required<T> | TuplePrefixUnion<Init> : never);\n\nexport type SubtractTuple<Minuend extends any[], Subtrahend extends any[]> = Subtrahend extends [\n any,\n ...infer S,\n]\n ? Minuend extends [any, ...infer M]\n ? // keep subtracting\n SubtractTuple<M, S>\n : // subtrahend has a cardinality less than minuend\n never\n : // we fully subtracted already\n Minuend;\n"]}
@@ -4,5 +4,5 @@ var _24WEKBY3_cjs = require('./24WEKBY3.cjs');
4
4
 
5
5
  // src/tuples.ts
6
6
  _24WEKBY3_cjs.init_cjs_shims();
7
- //# sourceMappingURL=EFBUJ7T4.cjs.map
8
- //# sourceMappingURL=EFBUJ7T4.cjs.map
7
+ //# sourceMappingURL=KQUDWU4T.cjs.map
8
+ //# sourceMappingURL=KQUDWU4T.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tuples.ts"],"names":["init_cjs_shims"],"mappings":";;;;;AA8CAA,4BAAA,EAAA","file":"EFBUJ7T4.cjs","sourcesContent":["import type { BrandedError } from './branded';\n\n//check that the tuple T uses every type in the union K at least once\nexport type IsComplete<\n T extends readonly (string | number | symbol)[],\n K extends string | number | symbol,\n> = Exclude<K, T[number]> extends never ? true : false;\n\nexport type TryGetDuplicate<\n T extends readonly (string | number | symbol)[],\n Seen extends (string | number | symbol)[] = [],\n> = T extends [infer Head, ...infer Tail]\n ? Head extends Seen[number]\n ? Head\n : Head extends string | number | symbol\n ? Tail extends readonly (string | number | symbol)[]\n ? TryGetDuplicate<Tail, [...Seen, Head]>\n : false\n : false\n : false;\n\n//check that the tuple T is a valid ordering of AllKeys, using IsComplete and TryGetDuplicate\n//returns a branded error if there are missing keys or duplicates\nexport type AssertUniqueCompleteSet<\n T extends readonly (string | number | symbol)[],\n AllKeys extends string | number | symbol,\n> =\n IsComplete<T, AllKeys> extends false\n ? BrandedError<`Missing key: ${Exclude<AllKeys extends Symbol ? 'ERR' : AllKeys, T[number]>}`>\n : TryGetDuplicate<T> extends false\n ? T\n : BrandedError<`Duplicate key found: ${TryGetDuplicate<T>}`>;\n\ntype BuildTupleHelper<\n Element,\n Length extends number,\n Rest extends Element[],\n> = Rest['length'] extends Length\n ? readonly [...Rest] // Terminate with readonly array (aka tuple)\n : BuildTupleHelper<Element, Length, [Element, ...Rest]>;\n\nexport type BuildTuple<Element, Length extends number> = number extends Length\n ? // Because `Length extends number` and `number extends Length`, then `Length` is not a specific finite number.\n readonly Element[] // It's not fixed length.\n : BuildTupleHelper<Element, Length, []>; // Otherwise it is a fixed length tuple.\n\nexport type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {\n [K in T[number] as K[0]]: K[1];\n};\n"]}
1
+ {"version":3,"sources":["../src/tuples.ts"],"names":["init_cjs_shims"],"mappings":";;;;;AAsDAA,4BAAA,EAAA","file":"KQUDWU4T.cjs","sourcesContent":["import type { BrandedError } from './branded';\n\n//check that the tuple T uses every type in the union K at least once\nexport type IsComplete<\n T extends readonly (string | number | symbol)[],\n K extends string | number | symbol,\n> = Exclude<K, T[number]> extends never ? true : false;\n\nexport type TryGetDuplicate<\n T extends readonly (string | number | symbol)[],\n Seen extends (string | number | symbol)[] = [],\n> = T extends [infer Head, ...infer Tail]\n ? Head extends Seen[number]\n ? Head\n : Head extends string | number | symbol\n ? Tail extends readonly (string | number | symbol)[]\n ? TryGetDuplicate<Tail, [...Seen, Head]>\n : false\n : false\n : false;\n\n//check that the tuple T is a valid ordering of AllKeys, using IsComplete and TryGetDuplicate\n//returns a branded error if there are missing keys or duplicates\nexport type AssertUniqueCompleteSet<\n T extends readonly (string | number | symbol)[],\n AllKeys extends string | number | symbol,\n> =\n IsComplete<T, AllKeys> extends false\n ? BrandedError<`Missing key: ${Exclude<AllKeys extends Symbol ? 'ERR' : AllKeys, T[number]>}`>\n : TryGetDuplicate<T> extends false\n ? T\n : BrandedError<`Duplicate key found: ${TryGetDuplicate<T>}`>;\n\ntype BuildTupleHelper<\n Element,\n Length extends number,\n Rest extends Element[],\n> = Rest['length'] extends Length\n ? readonly [...Rest] // Terminate with readonly array (aka tuple)\n : BuildTupleHelper<Element, Length, [Element, ...Rest]>;\n\nexport type BuildTuple<Element, Length extends number> = number extends Length\n ? // Because `Length extends number` and `number extends Length`, then `Length` is not a specific finite number.\n readonly Element[] // It's not fixed length.\n : BuildTupleHelper<Element, Length, []>; // Otherwise it is a fixed length tuple.\n\nexport type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {\n [K in T[number] as K[0]]: K[1];\n};\n\nexport type TuplePrefixUnion<T extends any[]> =\n | []\n | (Required<T> extends [...infer Init, any] ? Required<T> | TuplePrefixUnion<Init> : never);\n\nexport type SubtractTuple<Minuend extends any[], Subtrahend extends any[]> = Subtrahend extends [\n any,\n ...infer S,\n]\n ? Minuend extends [any, ...infer M]\n ? // keep subtracting\n SubtractTuple<M, S>\n : // subtrahend has a cardinality less than minuend\n never\n : // we fully subtracted already\n Minuend;\n"]}
package/dist/index.cjs CHANGED
@@ -9,7 +9,7 @@ require('./AKBGASRF.cjs');
9
9
  require('./NKWLAYNJ.cjs');
10
10
  require('./Q35ZNXMT.cjs');
11
11
  require('./K3FZ3EZT.cjs');
12
- require('./EFBUJ7T4.cjs');
12
+ require('./KQUDWU4T.cjs');
13
13
  require('./C7GMKBCN.cjs');
14
14
  require('./2SJJDCZI.cjs');
15
15
  require('./53OHF4EH.cjs');
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import './DDDCRYAA.js';
7
7
  import './KEJFF7VD.js';
8
8
  import './I5NXBMAF.js';
9
9
  import './B5GSIBEU.js';
10
- import './ZS6LQCLY.js';
10
+ import './EM7SXG4B.js';
11
11
  import './CFTTK4D6.js';
12
12
  import './6IUBP3YE.js';
13
13
  import './X6GYSLZB.js';
package/dist/tuples.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./EFBUJ7T4.cjs');
3
+ require('./KQUDWU4T.cjs');
4
4
  require('./24WEKBY3.cjs');
5
5
 
6
6
  //# sourceMappingURL=tuples.cjs.map
package/dist/tuples.d.ts CHANGED
@@ -7,5 +7,10 @@ export type BuildTuple<Element, Length extends number> = number extends Length ?
7
7
  export type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {
8
8
  [K in T[number] as K[0]]: K[1];
9
9
  };
10
+ export type TuplePrefixUnion<T extends any[]> = [] | (Required<T> extends [...infer Init, any] ? Required<T> | TuplePrefixUnion<Init> : never);
11
+ export type SubtractTuple<Minuend extends any[], Subtrahend extends any[]> = Subtrahend extends [
12
+ any,
13
+ ...infer S
14
+ ] ? Minuend extends [any, ...infer M] ? SubtractTuple<M, S> : never : Minuend;
10
15
  export {};
11
16
  //# 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;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"}
1
+ {"version":3,"file":"tuples.d.ts","sourceRoot":"","sources":["../src/tuples.ts"],"names":[],"mappings":"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"}
package/dist/tuples.js CHANGED
@@ -1,4 +1,4 @@
1
- import './ZS6LQCLY.js';
1
+ import './EM7SXG4B.js';
2
2
  import './6AHA7PAZ.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.2.28",
3
+ "version": "0.2.30",
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.2.28",
20
- "@layerzerolabs/typescript-configuration": "0.2.28"
19
+ "@layerzerolabs/tsup-configuration": "0.2.30",
20
+ "@layerzerolabs/typescript-configuration": "0.2.30"
21
21
  },
22
22
  "publishConfig": {
23
23
  "access": "public",
package/src/tuples.ts CHANGED
@@ -47,3 +47,19 @@ export type BuildTuple<Element, Length extends number> = number extends Length
47
47
  export type TuplesToObject<T extends readonly (readonly [PropertyKey, any])[]> = {
48
48
  [K in T[number] as K[0]]: K[1];
49
49
  };
50
+
51
+ export type TuplePrefixUnion<T extends any[]> =
52
+ | []
53
+ | (Required<T> extends [...infer Init, any] ? Required<T> | TuplePrefixUnion<Init> : never);
54
+
55
+ export type SubtractTuple<Minuend extends any[], Subtrahend extends any[]> = Subtrahend extends [
56
+ any,
57
+ ...infer S,
58
+ ]
59
+ ? Minuend extends [any, ...infer M]
60
+ ? // keep subtracting
61
+ SubtractTuple<M, S>
62
+ : // subtrahend has a cardinality less than minuend
63
+ never
64
+ : // we fully subtracted already
65
+ Minuend;