Skip to content

Commit

Permalink
fix: #36 — add .js to import paths in source code
Browse files Browse the repository at this point in the history
  • Loading branch information
mesqueeb committed Dec 1, 2022
1 parent 1c4e58d commit 49f5533
Show file tree
Hide file tree
Showing 13 changed files with 172 additions and 171 deletions.
4 changes: 2 additions & 2 deletions dist/types/index.d.ts
@@ -1,2 +1,2 @@
export * from './merge';
export * from './extensions';
export * from './merge.js';
export * from './extensions.js';
8 changes: 4 additions & 4 deletions dist/types/merge.d.ts
@@ -1,12 +1,12 @@
import type { Assign } from './typeUtils/Assign';
import type { Pop } from './typeUtils/List';
import type { PrettyPrint } from './typeUtils/PrettyPrint';
import type { Assign } from './typeUtils/Assign.js';
import type { Pop } from './typeUtils/List.js';
import type { PrettyPrint } from './typeUtils/PrettyPrint.js';
/**
* The return type of `merge()`. It reflects the type that is returned by JavaScript.
*
* This TS Utility can be used as standalone as well
*/
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>;
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>;
/**
* Merge anything recursively.
* Objects get merged, special objects (classes etc.) are re-assigned "as is".
Expand Down
16 changes: 8 additions & 8 deletions dist/types/typeUtils/Assign.d.ts
@@ -1,6 +1,6 @@
import { MergeDeep } from './MergeDeep';
import { Iteration, IterationOf, Pos, Next } from './Iteration';
import { Length, List } from './List';
import type { MergeDeep } from './MergeDeep.js';
import type { Iteration, IterationOf, Pos, Next } from './Iteration.js';
import type { Length, List } from './List.js';
/**
* Ask TS to re-check that `A1` extends `A2`.
* And if it fails, `A2` will be enforced anyway.
Expand All @@ -14,7 +14,7 @@ import { Length, List } from './List';
* type test1 = Cast<'42', number> // number
* ```
*/
declare type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
/**
* Check whether `A1` is part of `A2` or not. The difference with
* `extends` is that it forces a [[Boolean]] return.
Expand All @@ -33,9 +33,9 @@ declare type Cast<A1, A2> = A1 extends A2 ? A1 : A2;
* /// Nothing cannot extend nothing, use `Equals`
* ```
*/
declare type Extends<A1, A2> = [A1] extends [never] ? 0 : A1 extends A2 ? 1 : 0;
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>>;
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;
type Extends<A1, A2> = [A1] extends [never] ? 0 : A1 extends A2 ? 1 : 0;
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>>;
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;
/**
* Assign a list of [[Object]] into `O` with [[MergeDeep]]. Merges from right to
* left, first items get overridden by the next ones (last-in overrides).
Expand All @@ -46,5 +46,5 @@ declare type _Assign<O extends Record<string | number | symbol, unknown>, Os ext
* ```ts
* ```
*/
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;
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;
export {};
10 changes: 5 additions & 5 deletions dist/types/typeUtils/Iteration.d.ts
@@ -1,14 +1,14 @@
/**
* An entry of `IterationMap`
*/
export declare type Iteration = [
export type Iteration = [
value: number,
sign: '-' | '0' | '+',
prev: keyof IterationMap,
next: keyof IterationMap,
oppo: keyof IterationMap
];
export declare type IterationMap = {
export type IterationMap = {
'__': [number, '-' | '0' | '+', '__', '__', '__'];
'-100': [-100, '-', '__', '-99', '100'];
'-99': [-99, '-', '-100', '-98', '99'];
Expand Down Expand Up @@ -228,7 +228,7 @@ export declare type IterationMap = {
* type nprev = Pos<prev> // -1
* ```
*/
export declare type IterationOf<N extends number> = `${N}` extends keyof IterationMap ? IterationMap[`${N}`] : IterationMap['__'];
export type IterationOf<N extends number> = `${N}` extends keyof IterationMap ? IterationMap[`${N}`] : IterationMap['__'];
/**
* Get the position of `I` (**number**)
* @param I to query
Expand All @@ -241,7 +241,7 @@ export declare type IterationOf<N extends number> = `${N}` extends keyof Iterati
* type test1 = Pos<Next<i>> // 21
* ```
*/
export declare type Pos<I extends Iteration> = I[0];
export type Pos<I extends Iteration> = I[0];
/**
* Move `I`'s position forward
* @param I to move
Expand All @@ -254,4 +254,4 @@ export declare type Pos<I extends Iteration> = I[0];
* type test1 = Pos<Next<i>> // 21
* ```
*/
export declare type Next<I extends Iteration> = IterationMap[I[3]];
export type Next<I extends Iteration> = IterationMap[I[3]];
6 changes: 3 additions & 3 deletions dist/types/typeUtils/List.d.ts
Expand Up @@ -8,7 +8,7 @@
* type list1 = number[]
* ```
*/
export declare type List<T = any> = readonly T[];
export type List<T = any> = readonly T[];
/**
* Get the length of `L`
* @param L to get length
Expand All @@ -17,7 +17,7 @@ export declare type List<T = any> = readonly T[];
* ```ts
* ```
*/
export declare type Length<L extends List> = L['length'];
export type Length<L extends List> = L['length'];
/**
* Return the last item out of a [[List]]
* @param L
Expand All @@ -26,4 +26,4 @@ export declare type Length<L extends List> = L['length'];
* ```ts
* ```
*/
export declare type Pop<L extends List> = L extends readonly [] ? never : L extends [...unknown[], infer Last] ? Last : L extends (infer T)[] ? T : never;
export type Pop<L extends List> = L extends readonly [] ? never : L extends [...unknown[], infer Last] ? Last : L extends (infer T)[] ? T : never;
10 changes: 5 additions & 5 deletions dist/types/typeUtils/MergeDeep.d.ts
Expand Up @@ -6,7 +6,7 @@
* ```ts
* ```
*/
declare type OptionalKeys<O extends object> = O extends unknown ? {
type OptionalKeys<O extends object> = O extends unknown ? {
[K in keyof O]-?: {} extends Pick<O, K> ? K : never;
}[keyof O] : never;
/**
Expand All @@ -17,13 +17,13 @@ declare type OptionalKeys<O extends object> = O extends unknown ? {
* ```ts
* ```
*/
declare type RequiredKeys<O extends object> = O extends unknown ? {
type RequiredKeys<O extends object> = O extends unknown ? {
[K in keyof O]-?: {} extends Pick<O, K> ? never : K;
}[keyof O] : never;
declare type MergeObjectDeeply<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = {
type MergeObjectDeeply<O extends Record<string | number | symbol, unknown>, O1 extends Record<string | number | symbol, unknown>> = {
[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];
};
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;
type MergeObjectsOrReturnFallback<O, O1, Fallback> = O extends Record<string | number | symbol, unknown> ? O1 extends Record<string | number | symbol, unknown> ? MergeObjectDeeply<O, O1> : Fallback : Fallback;
/**
* Accurately merge the fields of `O` with the ones of `O1`. It is
* equivalent to the spread operator in JavaScript. [[Union]]s and [[Optional]]
Expand Down Expand Up @@ -53,5 +53,5 @@ declare type MergeObjectsOrReturnFallback<O, O1, Fallback> = O extends Record<st
* }
* ```
*/
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;
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;
export {};
6 changes: 3 additions & 3 deletions dist/types/typeUtils/PrettyPrint.d.ts
@@ -1,6 +1,6 @@
declare type Has<U, U1> = [U1] extends [U] ? 1 : 0;
declare type If<B extends 0 | 1, Then, Else = never> = B extends 1 ? Then : Else;
export declare type PrettyPrint<A, Seen = never> = If<Has<Seen, A>, A, A extends Record<string | number | symbol, unknown> ? {
type Has<U, U1> = [U1] extends [U] ? 1 : 0;
type If<B extends 0 | 1, Then, Else = never> = B extends 1 ? Then : Else;
export type PrettyPrint<A, Seen = never> = If<Has<Seen, A>, A, A extends Record<string | number | symbol, unknown> ? {
[K in keyof A]: PrettyPrint<A[K], A | Seen>;
} & unknown : A>;
export {};

0 comments on commit 49f5533

Please sign in to comment.