tuple-ts 0.8.2 → 0.8.3
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/dist/index.d.ts +3 -1
- package/dist/index.js +2 -3
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import InternCache from "./intern-cache.js";
|
|
2
2
|
type BaseTuple = readonly unknown[];
|
|
3
3
|
type BaseLabels = readonly string[];
|
|
4
|
+
type NumericKeyOf<T> = keyof T & `${number}`;
|
|
5
|
+
type ToNumber<K> = K extends `${infer N extends number}` ? N : never;
|
|
4
6
|
export type TupleFactory<T extends BaseTuple = BaseTuple> = {
|
|
5
7
|
<const T_ extends T>(...args: T_): T_;
|
|
6
8
|
typed<T_ extends T>(...exemplar: T_ | []): TupleFactory<T_>;
|
|
7
9
|
};
|
|
8
10
|
type ObjectOf<T extends BaseTuple, L extends BaseLabels> = {
|
|
9
|
-
[I in
|
|
11
|
+
[I in NumericKeyOf<L> as L[I]]: T[ToNumber<I>];
|
|
10
12
|
};
|
|
11
13
|
type TupleFromObject<T extends BaseTuple, L extends BaseLabels, O extends ObjectOf<T, L>> = T & {
|
|
12
14
|
[I in keyof L]: O[L[I]];
|
package/dist/index.js
CHANGED
|
@@ -33,11 +33,10 @@ export const _tupleCache = new InternCache(hash.valuesHash, arrayEquivalent, Obj
|
|
|
33
33
|
export const tuple = defineTuple();
|
|
34
34
|
export const struct = (labels) => {
|
|
35
35
|
const cacheInjestFn = (tuple) => {
|
|
36
|
-
const labeledTuple = tuple;
|
|
37
36
|
labels.forEach((label, index) => {
|
|
38
|
-
|
|
37
|
+
tuple[label] = tuple[index];
|
|
39
38
|
});
|
|
40
|
-
return Object.freeze(
|
|
39
|
+
return Object.freeze(tuple);
|
|
41
40
|
};
|
|
42
41
|
const cache = new InternCache(hash.valuesHash, arrayEquivalent, cacheInjestFn);
|
|
43
42
|
return defineStruct(cache, labels);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "tuple-ts",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.3",
|
|
5
5
|
"description": "Tuples and structs for TypeScript and JavaScript with equality and identity semantics.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"tuple",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsc",
|
|
38
|
-
"test": "vitest run src/",
|
|
38
|
+
"test": "tsc --noEmit && vitest run src/",
|
|
39
39
|
"prepare": "npm run build",
|
|
40
40
|
"prepublishOnly": "npm test"
|
|
41
41
|
},
|