Comparing version 2.0.1 to 2.0.2
/** | ||
* @callback Handler | ||
* @param {...unknown} value | ||
* @return {unknown} | ||
* | ||
* @typedef {Record<string, Handler>} Handlers | ||
* | ||
* @typedef {Object} Options | ||
* @property {Handler} [unknown] | ||
* @property {Handler} [invalid] | ||
* @property {Handlers} [handlers] | ||
* Base type that handlers extend from | ||
*/ | ||
export type Handler = (...props: unknown[]) => unknown | ||
/** | ||
* Handle values based on a property. | ||
* | ||
* @param {string} key | ||
* @param {Options} [options] | ||
* @param key key | ||
* @param options options | ||
* @returns handler | ||
*/ | ||
export function zwitch( | ||
export declare function zwitch< | ||
KnownHandler extends Handler = (...parameters: unknown[]) => void, | ||
UnknownHandler extends Handler = (...parameters: unknown[]) => void, | ||
InvalidHandler extends Handler = (...parameters: unknown[]) => void | ||
>( | ||
key: string, | ||
options?: Options | ||
options?: { | ||
unknown?: UnknownHandler | ||
invalid?: InvalidHandler | ||
handlers?: Record<string, KnownHandler> | ||
} | ||
): { | ||
(...args: unknown[]): unknown | ||
handlers: Handlers | ||
invalid: Handler | ||
unknown: Handler | ||
unknown: UnknownHandler | ||
invalid: InvalidHandler | ||
handlers: Record<string, KnownHandler> | ||
(...parameters: Parameters<UnknownHandler>): ReturnType<UnknownHandler> | ||
(...parameters: Parameters<InvalidHandler>): ReturnType<InvalidHandler> | ||
(...parameters: Parameters<KnownHandler>): ReturnType<KnownHandler> | ||
} | ||
export type Handler = (...value: unknown[]) => unknown | ||
export type Handlers = Record<string, Handler> | ||
export type Options = { | ||
unknown?: Handler | ||
invalid?: Handler | ||
handlers?: Handlers | ||
} |
@@ -37,2 +37,3 @@ var own = {}.hasOwnProperty | ||
* @param {...unknown} [value] | ||
* @this {unknown} | ||
* @returns {unknown} | ||
@@ -39,0 +40,0 @@ * @property {Handler} invalid |
{ | ||
"name": "zwitch", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "Handle values based on a property", | ||
@@ -37,2 +37,3 @@ "license": "MIT", | ||
"tape": "^5.0.0", | ||
"type-coverage": "^2.0.0", | ||
"typescript": "^4.0.0", | ||
@@ -42,5 +43,4 @@ "xo": "^0.38.0" | ||
"scripts": { | ||
"prepublishOnly": "npm run build && npm run format", | ||
"prebuild": "rimraf \"*.d.ts\"", | ||
"build": "tsc", | ||
"prepack": "npm run build && npm run format", | ||
"build": "tsc && type-coverage", | ||
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", | ||
@@ -71,3 +71,8 @@ "test-api": "node test.js", | ||
] | ||
}, | ||
"typeCoverage": { | ||
"atLeast": 100, | ||
"detail": true, | ||
"strict": true | ||
} | ||
} |
8621
10
84