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 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 Extract<keyof L, `${number}`> as L[I]]: T[I extends `${infer N extends number}` ? N : never];
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
- labeledTuple[label] = tuple[index];
37
+ tuple[label] = tuple[index];
39
38
  });
40
- return Object.freeze(labeledTuple);
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.2",
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
  },