@js-toolkit/utils
Advanced tools
Comparing version
@@ -17,2 +17,5 @@ export declare class PromiseCancelledError extends Error { | ||
} | ||
interface CancellablePromiseWithResolvers<T> extends PromiseWithResolvers<T> { | ||
promise: CancellablePromise<T>; | ||
} | ||
export interface CancellablePromiseConstructor extends DefineAll<keyof PromiseConstructor, { | ||
@@ -99,4 +102,6 @@ readonly prototype: CancellablePromise<any>; | ||
any<T>(values: (T | PromiseLike<T>)[] | Iterable<T | PromiseLike<T>>): CancellablePromise<T>; | ||
withResolvers<T>(): CancellablePromiseWithResolvers<T>; | ||
}> { | ||
new <T>(executorOrPromise: ((resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, cancel: VoidFunction) => void) | Promise<T>): CancellablePromise<T>; | ||
} | ||
export {}; |
@@ -19,2 +19,5 @@ import EventEmitter from 'eventemitter3'; | ||
export type DataEventListener<EventTypes extends string | symbol | EventMap, K extends EventEmitter.EventNames<ConvertToDataEventMap<EventTypes, Target>>, Target> = EventEmitter.EventListener<ConvertToDataEventMap<EventTypes, Target>, K>; | ||
type ListenersMap<EventTypes extends string | symbol | EventMap, Target> = { | ||
[P in EventEmitter.EventNames<ConvertToDataEventMap<EventTypes, Target>>]: DataEventListener<EventTypes, P, Target>[]; | ||
}; | ||
type NormalizeEventTypes<EventTypes extends string | symbol | EventMap> = EventTypes extends EventMap ? EventTypes extends Record<string, DataEvent<string, any, any>> ? { | ||
@@ -29,3 +32,4 @@ [P in keyof EventTypes]: Exclude<EventTypes[P]['data'], undefined> extends never ? [] : IfExtends<EventTypes[P]['data'], undefined, [ | ||
emit<T extends EventEmitter.EventNames<NormalizeEventTypes<EventTypes>>>(event: T, ...args: EventEmitter.EventArgs<NormalizeEventTypes<EventTypes>, T>): boolean; | ||
listenersMap(): ListenersMap<EventTypes, Target>; | ||
} | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
import EventEmitter from"eventemitter3";export class DataEventEmitter extends EventEmitter{emit(t,...e){const r={type:t,data:e[0],target:this};return super.emit(t,r)}} | ||
import EventEmitter from"eventemitter3";export class DataEventEmitter extends EventEmitter{emit(t,...e){const r={type:t,data:e[0],target:this};return super.emit(t,r)}listenersMap(){return this.eventNames().reduce(((t,e)=>{var r;return t[e]=null!==(r=t[e])&&void 0!==r?r:[],t[e]=this.listeners(e),t}),{})}} |
@@ -1,1 +0,1 @@ | ||
function objectToString(t,r){const{message:e,cause:n}=t;if(e)return n?`${e} => cause: ${getErrorMessage(n,r)}`:e;const o=t.toString();if(t.constructor.name&&o===`[object ${t.constructor.name}]`)try{const r=JSON.stringify(t);return"{}"===r?"":r}catch(r){console.warn("Stringify object failed:",t,r)}return o}export function getErrorMessage(t,r={}){if("object"!=typeof t||null==t)return String(t);const e=Object.getPrototypeOf(t);if(t instanceof Error&&e===Error.prototype&&null!=t.cause){return`${r.simple?"":`${t.constructor.name}: `}${t.message} => cause: ${getErrorMessage(t.cause,r)}`}if(Object.hasOwn(t,"toString"))return t.toString();if(t.constructor==={}.constructor)return objectToString(t,r);if(e&&Object.hasOwn(e,"toString"))return t.toString();if(!r.simple&&t.constructor.name){const e=objectToString(t,r);return`${t instanceof Error&&t.name||t.constructor.name}${e?`: ${e}`:""}`}return objectToString(t,r)} | ||
function objectToString(t,r){const{message:e,cause:n}=t;if(e)return n?`${e} => cause: ${getErrorMessage(n,r)}`:e;const o=t.toString();if(t.constructor.name&&o===`[object ${t.constructor.name}]`)try{const r=JSON.stringify(t);return"{}"===r?"":r}catch(r){console.warn("Stringify object failed:",t,r)}return o}export function getErrorMessage(t,r={}){if("object"!=typeof t||null==t)return String(t);const e=Object.getPrototypeOf(t);if(t instanceof Error&&e===Error.prototype&&null!=t.cause){return`${r.simple?"":`${t.name||t.constructor.name}: `}${t.message} => cause: ${getErrorMessage(t.cause,r)}`}if(Object.hasOwn(t,"toString"))return t.toString();if(t.constructor==={}.constructor)return objectToString(t,r);if(e&&Object.hasOwn(e,"toString"))return t.toString();if(!r.simple&&t.constructor.name){const e=objectToString(t,r);return`${t instanceof Error&&t.name||t.constructor.name}${e?`: ${e}`:""}`}return objectToString(t,r)} |
@@ -1,1 +0,1 @@ | ||
import{__awaiter}from"tslib";import{beforeCall}from"./beforeCall";import{delayed}from"./delayed";export function getListIterator(e,i,t){let o=-1;const n=i=>__awaiter(this,void 0,void 0,(function*(){const[t,o]=yield Promise.all([e.getSize(),e.getCurrentIndex()]);return o===t-1?i?0:-1:Math.min(o+1,t-1)})),l=i=>__awaiter(this,void 0,void 0,(function*(){const[t,o]=yield Promise.all([e.getSize(),e.getCurrentIndex()]);return 0===o?i?t-1:-1:Math.min(o-1,t-1)})),r=delayed((()=>{i(o)}),0),a=()=>r.cancel();return{get isPending(){return r.isPending},next:beforeCall((({delay:e=(null==t?void 0:t.delay)}={})=>{o>=0&&r.delay(null!=e?e:0)}),(({loop:e=(null==t?void 0:t.loop)}={})=>__awaiter(this,void 0,void 0,(function*(){o=yield n(e)})))),back:beforeCall((()=>{o>=0&&i(o)}),(()=>__awaiter(this,void 0,void 0,(function*(){a(),o=yield l()})))),isCanNext:e=>__awaiter(this,void 0,void 0,(function*(){return(yield n(null==e?void 0:e.loop))>=0})),isCanBack:e=>__awaiter(this,void 0,void 0,(function*(){return(yield l(null==e?void 0:e.loop))>=0})),cancel:a}} | ||
import{__awaiter}from"tslib";import{beforeCall}from"./beforeCall";import{delayed}from"./delayed";export function getListIterator(e,i,t){let o=-1;const n=i=>__awaiter(this,void 0,void 0,(function*(){const[t,o]=yield Promise.all([e.getSize(),e.getCurrentIndex()]);return o===t-1?i?0:-1:Math.min(o+1,t-1)})),l=i=>__awaiter(this,void 0,void 0,(function*(){const[t,o]=yield Promise.all([e.getSize(),e.getCurrentIndex()]);return 0===o?i?t-1:-1:Math.min(o-1,t-1)})),r=delayed((()=>{i(o)}),0),a=()=>r.cancel();return{get isPending(){return r.isPending},next:beforeCall((({delay:e=(null==t?void 0:t.delay)}={})=>{o>=0&&r.delay(null!=e?e:0)}),((...e)=>__awaiter(this,[...e],void 0,(function*({loop:e=(null==t?void 0:t.loop)}={}){o=yield n(e)})))),back:beforeCall((()=>{o>=0&&i(o)}),(()=>__awaiter(this,void 0,void 0,(function*(){a(),o=yield l()})))),isCanNext:e=>__awaiter(this,void 0,void 0,(function*(){return(yield n(null==e?void 0:e.loop))>=0})),isCanBack:e=>__awaiter(this,void 0,void 0,(function*(){return(yield l(null==e?void 0:e.loop))>=0})),cancel:a}} |
{ | ||
"name": "@js-toolkit/utils", | ||
"version": "1.52.1", | ||
"version": "1.53.0", | ||
"description": "Typescript helper types and utils", | ||
@@ -28,4 +28,4 @@ "author": "VZH", | ||
"@types/lodash.debounce": "^4.0.9", | ||
"@typescript-eslint/eslint-plugin": "^7.1.0", | ||
"@typescript-eslint/parser": "^7.1.0", | ||
"@typescript-eslint/eslint-plugin": "^7.2.0", | ||
"@typescript-eslint/parser": "^7.2.0", | ||
"copyfiles": "^2.4.1", | ||
@@ -42,7 +42,7 @@ "eslint": "^8.57.0", | ||
"rimraf": "^5.0.5", | ||
"terser": "^5.28.1", | ||
"terser": "^5.29.1", | ||
"ts-jest": "^29.1.2", | ||
"typescript": "^5.3.3", | ||
"typescript": "^5.4.2", | ||
"yargs": "^17.7.2" | ||
} | ||
} |
@@ -24,5 +24,5 @@ type NonNullValue = {}; | ||
type IfExtends<T, Type, Then = T, Else = never> = Extract<T, Type> extends never ? Else : Extract<T, Type> extends Type ? Then : Else; | ||
type KeysOfType<T extends AnyObject, Type, Strict extends boolean = true> = T extends T ? NonNullable<{ | ||
type KeysOfType<T extends AnyObject, Type, Strict extends boolean = true> = T extends T ? Exclude<{ | ||
[P in keyof T]: Strict extends true ? IfExtends<T[P], Type, P, never> : T[P] extends Type ? P : never; | ||
}[keyof T]> : never; | ||
}[keyof T], null | undefined> : never; | ||
type ExcludeKeysOfType<A extends AnyObject, B, Strict extends boolean = false> = Pick<A, Exclude<keyof A, KeysOfType<A, B, Strict>>>; | ||
@@ -29,0 +29,0 @@ type ExtractKeysOfType<A extends AnyObject, B, Strict extends boolean = false> = Pick<A, KeysOfType<A, B, Strict>>; |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 4 instances in 1 package
87182
10.33%113
9.71%1202
8.68%18
28.57%