merge-anything 5.1.3 → 5.1.4

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.
@@ -1,2 +1,2 @@
1
- export * from './merge';
2
- export * from './extensions';
1
+ export * from './merge.js';
2
+ export * from './extensions.js';
@@ -1,12 +1,12 @@
1
- import type { Assign } from './typeUtils/Assign';
2
- import type { Pop } from './typeUtils/List';
3
- import type { PrettyPrint } from './typeUtils/PrettyPrint';
1
+ import type { Assign } from './typeUtils/Assign.js';
2
+ import type { Pop } from './typeUtils/List.js';
3
+ import type { PrettyPrint } from './typeUtils/PrettyPrint.js';
4
4
  /**
5
5
  * The return type of `merge()`. It reflects the type that is returned by JavaScript.
6
6
  *
7
7
  * This TS Utility can be used as standalone as well
8
8
  */
9
- export declare type Merge<T, Ts extends unknown[]> = T extends Record<string | number | symbol, unknown> ? Ts extends Record<string | number | symbol, unknown>[] ? PrettyPrint<Assign<T, Ts>> : Pop<Ts> : Pop<Ts>;
9
+ export type Merge<T, Ts extends unknown[]> = T extends Record<string | number | symbol, unknown> ? Ts extends Record<string | number | symbol, unknown>[] ? PrettyPrint<Assign<T, Ts>> : Pop<Ts> : Pop<Ts>;
10
10
  /**
11
11
  * Merge anything recursively.
12
12
  * Objects get merged, special objects (classes etc.) are re-assigned "as is".
@@ -1,6 +1,6 @@
1
- import { MergeDeep } from './MergeDeep';
2
- import { Iteration, IterationOf, Pos, Next } from './Iteration';
3
- import { Length, List } from './List';
1
+ import type { MergeDeep } from './MergeDeep.js';
2
+ import type { Iteration, IterationOf, Pos, Next } from './Iteration.js';
3
+ import type { Length, List } from './List.js';
4
4
  /**
5
5
  * Ask TS to re-check that `A1` extends `A2`.
6
6
  * And if it fails, `A2` will be enforced anyway.
@@ -14,7 +14,7 @@ import { Length, List } from './List';
14
14
  * type test1 = Cast<'42', number> // number
15
15
  * ```
16
16
  */
17
- declare type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
17
+ type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
18
18
  /**
19
19
  * Check whether `A1` is part of `A2` or not. The difference with
20
20
  * `extends` is that it forces a [[Boolean]] return.
@@ -33,9 +33,9 @@ declare type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
33
33
  * /// Nothing cannot extend nothing, use `Equals`
34
34
  * ```
35
35
  */
36
- declare type Extends<A1, A2> = [A1] extends [never] ? 0 : A1 extends A2 ? 1 : 0;
37
- declare type __Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>, I extends Iteration = IterationOf<0>> = Extends<Pos<I>, Length<Os>> extends 1 ? O : __Assign<MergeDeep<O, Os[Pos<I>]>, Os, Next<I>>;
38
- declare type _Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>> = __Assign<O, Os> extends infer X ? Cast<X, Record<string | number | symbol, unknown>> : never;
36
+ type Extends<A1, A2> = [A1] extends [never] ? 0 : A1 extends A2 ? 1 : 0;
37
+ type __Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>, I extends Iteration = IterationOf<0>> = Extends<Pos<I>, Length<Os>> extends 1 ? O : __Assign<MergeDeep<O, Os[Pos<I>]>, Os, Next<I>>;
38
+ type _Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>> = __Assign<O, Os> extends infer X ? Cast<X, Record<string | number | symbol, unknown>> : never;
39
39
  /**
40
40
  * Assign a list of [[Object]] into `O` with [[MergeDeep]]. Merges from right to
41
41
  * left, first items get overridden by the next ones (last-in overrides).
@@ -46,5 +46,5 @@ declare type _Assign<O extends Record<string | number | symbol, unknown>, Os ext
46
46
  * ```ts
47
47
  * ```
48
48
  */
49
- export declare type Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>> = O extends unknown ? (Os extends unknown ? _Assign<O, Os> : never) : never;
49
+ export type Assign<O extends Record<string | number | symbol, unknown>, Os extends List<Record<string | number | symbol, unknown>>> = O extends unknown ? (Os extends unknown ? _Assign<O, Os> : never) : never;
50
50
  export {};
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * An entry of `IterationMap`
3
3
  */
4
- export declare type Iteration = [
4
+ export type Iteration = [
5
5
  value: number,
6
6
  sign: '-' | '0' | '+',
7
7
  prev: keyof IterationMap,
8
8
  next: keyof IterationMap,
9
9
  oppo: keyof IterationMap
10
10
  ];
11
- export declare type IterationMap = {
11
+ export type IterationMap = {
12
12
  '__': [number, '-' | '0' | '+', '__', '__', '__'];
13
13
  '-100': [-100, '-', '__', '-99', '100'];
14
14
  '-99': [-99, '-', '-100', '-98', '99'];
@@ -228,7 +228,7 @@ export declare type IterationMap = {
228
228
  * type nprev = Pos<prev> // -1
229
229
  * ```
230
230
  */
231
- export declare type IterationOf<N extends number> = `${N}` extends keyof IterationMap ? IterationMap[`${N}`] : IterationMap['__'];
231
+ export type IterationOf<N extends number> = `${N}` extends keyof IterationMap ? IterationMap[`${N}`] : IterationMap['__'];
232
232
  /**
233
233
  * Get the position of `I` (**number**)
234
234
  * @param I to query
@@ -241,7 +241,7 @@ export declare type IterationOf<N extends number> = `${N}` extends keyof Iterati
241
241
  * type test1 = Pos<Next<i>> // 21
242
242
  * ```
243
243
  */
244
- export declare type Pos<I extends Iteration> = I[0];
244
+ export type Pos<I extends Iteration> = I[0];
245
245
  /**
246
246
  * Move `I`'s position forward
247
247
  * @param I to move
@@ -254,4 +254,4 @@ export declare type Pos<I extends Iteration> = I[0];
254
254
  * type test1 = Pos<Next<i>> // 21
255
255
  * ```
256
256
  */
257
- export declare type Next<I extends Iteration> = IterationMap[I[3]];
257
+ export type Next<I extends Iteration> = IterationMap[I[3]];
@@ -8,7 +8,7 @@
8
8
  * type list1 = number[]
9
9
  * ```
10
10
  */
11
- export declare type List<T = any> = readonly T[];
11
+ export type List<T = any> = readonly T[];
12
12
  /**
13
13
  * Get the length of `L`
14
14
  * @param L to get length
@@ -17,7 +17,7 @@ export declare type List<T = any> = readonly T[];
17
17
  * ```ts
18
18
  * ```
19
19
  */
20
- export declare type Length<L extends List> = L['length'];
20
+ export type Length<L extends List> = L['length'];
21
21
  /**
22
22
  * Return the last item out of a [[List]]
23
23
  * @param L
@@ -26,4 +26,4 @@ export declare type Length<L extends List> = L['length'];
26
26
  * ```ts
27
27
  * ```
28
28
  */
29
- export declare type Pop<L extends List> = L extends readonly [] ? never : L extends [...unknown[], infer Last] ? Last : L extends (infer T)[] ? T : never;
29
+ export type Pop<L extends List> = L extends readonly [] ? never : L extends [...unknown[], infer Last] ? Last : L extends (infer T)[] ? T : never;
@@ -6,7 +6,7 @@
6
6
  * ```ts
7
7
  * ```
8
8
  */
9
- declare type OptionalKeys<O extends object> = O extends unknown ? {
9
+ type OptionalKeys<O extends object> = O extends unknown ? {
10
10
  [K in keyof O]-?: {} extends Pick<O, K> ? K : never;
11
11
  }[keyof O] : never;
12
12
  /**
@@ -17,13 +17,13 @@ declare type OptionalKeys<O extends object> = O extends unknown ? {
17
17
  * ```ts
18
18
  * ```
19
19
  */
20
- declare type RequiredKeys<O extends object> = O extends unknown ? {
20
+ type RequiredKeys<O extends object> = O extends unknown ? {
21
21
  [K in keyof O]-?: {} extends Pick<O, K> ? never : K;
22
22
  }[keyof O] : never;
23
- declare type MergeObjectDeeply<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = {
23
+ type MergeObjectDeeply<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = {
24
24
  [K in keyof (O & O1)]: K extends RequiredKeys<O1> ? MergeObjectsOrReturnFallback<O[K], O1[K], O1[K]> : K extends OptionalKeys<O1> ? K extends OptionalKeys<O> ? MergeObjectsOrReturnFallback<Exclude<O[K], undefined>, Exclude<O1[K], undefined>, Exclude<O[K], undefined> | Exclude<O1[K], undefined>> : K extends RequiredKeys<O> ? Exclude<O1[K], undefined> extends O[K] ? O[K] : MergeObjectsOrReturnFallback<O[K], Exclude<O1[K], undefined>, O[K] | Exclude<O1[K], undefined>> : O1[K] : O[K];
25
25
  };
26
- declare type MergeObjectsOrReturnFallback<O, O1, Fallback> = O extends Record<string | number | symbol, unknown> ? O1 extends Record<string | number | symbol, unknown> ? MergeObjectDeeply<O, O1> : Fallback : Fallback;
26
+ type MergeObjectsOrReturnFallback<O, O1, Fallback> = O extends Record<string | number | symbol, unknown> ? O1 extends Record<string | number | symbol, unknown> ? MergeObjectDeeply<O, O1> : Fallback : Fallback;
27
27
  /**
28
28
  * Accurately merge the fields of `O` with the ones of `O1`. It is
29
29
  * equivalent to the spread operator in JavaScript. [[Union]]s and [[Optional]]
@@ -53,5 +53,5 @@ declare type MergeObjectsOrReturnFallback<O, O1, Fallback> = O extends Record<st
53
53
  * }
54
54
  * ```
55
55
  */
56
- export declare type MergeDeep<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = O extends unknown ? (O1 extends unknown ? MergeObjectDeeply<O, O1> : never) : never;
56
+ export type MergeDeep<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = O extends unknown ? (O1 extends unknown ? MergeObjectDeeply<O, O1> : never) : never;
57
57
  export {};
@@ -1,6 +1,6 @@
1
- declare type Has<U, U1> = [U1] extends [U] ? 1 : 0;
2
- declare type If<B extends 0 | 1, Then, Else = never> = B extends 1 ? Then : Else;
3
- export declare type PrettyPrint<A, Seen = never> = If<Has<Seen, A>, A, A extends Record<string | number | symbol, unknown> ? {
1
+ type Has<U, U1> = [U1] extends [U] ? 1 : 0;
2
+ type If<B extends 0 | 1, Then, Else = never> = B extends 1 ? Then : Else;
3
+ export type PrettyPrint<A, Seen = never> = If<Has<Seen, A>, A, A extends Record<string | number | symbol, unknown> ? {
4
4
  [K in keyof A]: PrettyPrint<A[K], A | Seen>;
5
5
  } & unknown : A>;
6
6
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "merge-anything",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "description": "Merge objects & other types recursively. A simple & small integration.",
@@ -60,21 +60,21 @@
60
60
  },
61
61
  "homepage": "https://github.com/mesqueeb/merge-anything#readme",
62
62
  "dependencies": {
63
- "is-what": "^4.1.7"
63
+ "is-what": "^4.1.8"
64
64
  },
65
65
  "devDependencies": {
66
- "@typescript-eslint/eslint-plugin": "^5.42.1",
67
- "@typescript-eslint/parser": "^5.42.1",
66
+ "@typescript-eslint/eslint-plugin": "^5.45.0",
67
+ "@typescript-eslint/parser": "^5.45.0",
68
68
  "del-cli": "^5.0.0",
69
- "eslint": "^8.27.0",
69
+ "eslint": "^8.28.0",
70
70
  "eslint-config-prettier": "^8.5.0",
71
71
  "eslint-plugin-tree-shaking": "^1.10.0",
72
72
  "np": "^7.6.2",
73
- "prettier": "^2.7.1",
74
- "rollup": "^3.3.0",
73
+ "prettier": "^2.8.0",
74
+ "rollup": "^3.5.0",
75
75
  "rollup-plugin-typescript2": "^0.34.1",
76
- "typescript": "^4.8.4",
77
- "vitest": "^0.25.1"
76
+ "typescript": "^4.9.3",
77
+ "vitest": "^0.25.3"
78
78
  },
79
79
  "np": {
80
80
  "yarn": false,