Skip to content

Commit

Permalink
Fixed typo in all.js + fixed TS results
Browse files Browse the repository at this point in the history
  • Loading branch information
WebReflection committed Nov 22, 2023
1 parent 5a5713c commit 6b8e3b0
Show file tree
Hide file tree
Showing 14 changed files with 190 additions and 83 deletions.
16 changes: 10 additions & 6 deletions esm/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ export { bound, unbound } from './utils.js';
* @typedef {import("./utils.js").Obj<T, V>} Obj
*/

/**
* @template W, T, V
* @typedef {W extends Ctx<V> ? ReturnType<W> : W extends Arr<V> ? W[0] : W extends Obj<T, V> ? W["v"] : never} ValueOf
*/

/**
* @template {string} T
* @template V
Expand All @@ -36,7 +41,8 @@ export const target = (type, value) => // @ts-ignore
/**
* @template W, T, V
* @param {W} wrap
* @returns {W extends Ctx<V> ? ReturnType<W> : W extends Arr<V> ? W[0] : W extends Obj<T, V> ? W["value"] : never}
* @param {typeof reviver} [revive]
* @returns
*/
export const unwrap = (wrap, revive = reviver) => {
/** @type {string} */
Expand All @@ -48,12 +54,10 @@ export const unwrap = (wrap, revive = reviver) => {
type = ARRAY;
value = wrap.at(0);
}
else {
// @ts-ignore
({ t: type, v: value } = wrap);
}
else
({ t: type, v: value } = /** @type {Obj<string, any>} */ (wrap));
}
return revive(type, value);
return revive(type, /** @type {ValueOf<W, T, V>} */ (value));
};

/**
Expand Down
20 changes: 12 additions & 8 deletions esm/array.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,28 @@ export { bound, unbound } from './utils.js';
* @typedef {import("./utils.js").Obj<T, V>} Obj
*/

/**
* @template W, T, V
* @typedef {W extends Function ? W : W extends Arr<V> ? W[0] : W extends Obj<T, V> ? W["v"] : never} ValueOf
*/

/**
* @template {string} T
* @template V
* @param {T} type
* @param {V} value
* @returns {T extends typeof ARRAY ? Arr<V> : Obj<T, V>}
*/
// @ts-ignore
export const target = (type, value) => (
export const target = (type, value) => // @ts-ignore
(
type === ARRAY ? [value] : tv(type, value)
);

/**
* @template W, T, V
* @param {W} wrap
* @returns {W extends Function ? W : W extends Arr<V> ? W[0] : W extends Obj<T, V> ? W["v"] : never}
* @param {typeof reviver} [revive]
* @returns
*/
export const unwrap = (wrap, revive = reviver) => {
/** @type {string} */
Expand All @@ -38,12 +44,10 @@ export const unwrap = (wrap, revive = reviver) => {
type = ARRAY;
value = wrap.at(0);
}
else {
// @ts-ignore
({ t: type, v: value } = wrap);
}
else
({ t: type, v: value } = /** @type {Obj<string, any>} */ (wrap));
}
return revive(type, value);
return revive(type, /** @type {ValueOf<W, T, V>} */ (value));
};

const resolver = (type, value) => (
Expand Down
13 changes: 9 additions & 4 deletions esm/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ export { bound, unbound } from './utils.js';

export const target = tv;

/**
* @template W, T, V
* @typedef {W extends Function ? W : W extends Array ? W : W extends import("./utils.js").Obj<T, V> ? W["v"] : never} ValueOf
*/

/**
* @template W, T, V
* @param {W} wrap
* @returns {W extends import("./utils.js").Obj<T, V> ? W["v"] : W}
* @param {typeof reviver} [revive]
* @returns
*/
export const unwrap = (wrap, revive = reviver) => {
/** @type {string} */
Expand All @@ -17,10 +23,9 @@ export const unwrap = (wrap, revive = reviver) => {
if (isArray(wrap))
type = ARRAY;
else
// @ts-ignore
({ t: type, v: value } = wrap);
({ t: type, v: value } = /** @type {import("./utils.js").Obj<string, any>} */ (wrap));
}
return revive(type, value);
return revive(type, /** @type {ValueOf<W, T, V>} */ (value));
};

const resolver = (type, value) => (
Expand Down
7 changes: 4 additions & 3 deletions esm/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ const { isArray } = Array;

export { isArray };

export const invoke = value => (/** @type {Function} */ (value))();
export const invoke = value => /** @type {Function} */ (value)();

/**
* @template Value
* @param {string} type
* @param {any} value
* @returns
* @param {Value} value
* @returns {Value}
*/
export const reviver = (type, value) => value;

Expand Down
112 changes: 56 additions & 56 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
"@rollup/plugin-terser": "^0.4.4",
"ascjs": "^6.0.3",
"c8": "^8.0.1",
"rollup": "^4.5.0",
"rollup": "^4.5.1",
"type-fest": "^4.8.2",
"typescript": "^5.2.2"
"typescript": "^5.3.2"
},
"module": "./esm/index.js",
"type": "module",
Expand Down
4 changes: 4 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,8 @@ assert(
require('./all.js');
require('./array.js');

require('./types/all.js');
require('./types/array.js');
require('./types/index.js');

console.log('OK');

0 comments on commit 6b8e3b0

Please sign in to comment.