Socket
Socket
Sign inDemoInstall

cancelable-promise

Package Overview
Dependencies
Maintainers
2
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cancelable-promise - npm Package Compare versions

Comparing version 4.1.0 to 4.2.0

esm/CancelablePromise.min.mjs.map

7

CHANGELOG.md

@@ -0,1 +1,8 @@

## [4.2.0](https://github.com/alkemics/CancelablePromise/releases/tag/v4.2.0) (2021-06-17)
- Fix finally usecase always been called
- Merge onCancelList and finallyList
- Add isCancelablePromise util
- Migrate to Typescript and improve umd/esm outputs
## [4.1.0](https://github.com/alkemics/CancelablePromise/releases/tag/v4.1.0) (2021-06-16)

@@ -2,0 +9,0 @@

353

esm/CancelablePromise.d.ts

@@ -1,311 +0,48 @@

type CancelablePromiseExecutor<T> = (
resolve: (value?: T | PromiseLike<T>) => void,
reject: (reason?: any) => void,
onCancel: (cancelHandler: () => void) => void
) => void;
interface PromiseFulfilledResult<T> {
status: 'fulfilled';
value: T;
declare class CancelablePromiseInternal<T = any> {
#private;
constructor({ executor, internals, promise, }: {
executor?: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: (cancelHandler: () => void) => void) => void;
internals?: Internals;
promise?: Promise<T>;
});
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1> | CancelablePromise<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2> | CancelablePromise<TResult2>) | undefined | null): CancelablePromise<TResult1 | TResult2>;
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>) | undefined | null): CancelablePromise<T | TResult>;
finally(onfinally?: (() => void) | undefined | null, runWhenCanceled?: boolean): CancelablePromise<T>;
cancel(): void;
isCanceled(): boolean;
}
interface PromiseRejectedResult {
status: 'rejected';
reason: any;
export declare class CancelablePromise<T = any> extends CancelablePromiseInternal<T> {
static all: {
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>, T11 | PromiseLike<T11>, T12 | PromiseLike<T12>]): CancelablePromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]>;
<T1_1, T2_1, T3_1, T4_1, T5_1, T6_1, T7_1, T8_1, T9_1, T10_1, T11_1>(values: readonly [T1_1 | PromiseLike<T1_1>, T2_1 | PromiseLike<T2_1>, T3_1 | PromiseLike<T3_1>, T4_1 | PromiseLike<T4_1>, T5_1 | PromiseLike<T5_1>, T6_1 | PromiseLike<T6_1>, T7_1 | PromiseLike<T7_1>, T8_1 | PromiseLike<T8_1>, T9_1 | PromiseLike<T9_1>, T10_1 | PromiseLike<T10_1>, T11_1 | PromiseLike<T11_1>]): CancelablePromise<[T1_1, T2_1, T3_1, T4_1, T5_1, T6_1, T7_1, T8_1, T9_1, T10_1, T11_1]>;
<T1_2, T2_2, T3_2, T4_2, T5_2, T6_2, T7_2, T8_2, T9_2, T10_2>(values: readonly [T1_2 | PromiseLike<T1_2>, T2_2 | PromiseLike<T2_2>, T3_2 | PromiseLike<T3_2>, T4_2 | PromiseLike<T4_2>, T5_2 | PromiseLike<T5_2>, T6_2 | PromiseLike<T6_2>, T7_2 | PromiseLike<T7_2>, T8_2 | PromiseLike<T8_2>, T9_2 | PromiseLike<T9_2>, T10_2 | PromiseLike<T10_2>]): CancelablePromise<[T1_2, T2_2, T3_2, T4_2, T5_2, T6_2, T7_2, T8_2, T9_2, T10_2]>;
<T1_3, T2_3, T3_3, T4_3, T5_3, T6_3, T7_3, T8_3, T9_3>(values: readonly [T1_3 | PromiseLike<T1_3>, T2_3 | PromiseLike<T2_3>, T3_3 | PromiseLike<T3_3>, T4_3 | PromiseLike<T4_3>, T5_3 | PromiseLike<T5_3>, T6_3 | PromiseLike<T6_3>, T7_3 | PromiseLike<T7_3>, T8_3 | PromiseLike<T8_3>, T9_3 | PromiseLike<T9_3>]): CancelablePromise<[T1_3, T2_3, T3_3, T4_3, T5_3, T6_3, T7_3, T8_3, T9_3]>;
<T1_4, T2_4, T3_4, T4_4, T5_4, T6_4, T7_4, T8_4>(values: readonly [T1_4 | PromiseLike<T1_4>, T2_4 | PromiseLike<T2_4>, T3_4 | PromiseLike<T3_4>, T4_4 | PromiseLike<T4_4>, T5_4 | PromiseLike<T5_4>, T6_4 | PromiseLike<T6_4>, T7_4 | PromiseLike<T7_4>, T8_4 | PromiseLike<T8_4>]): CancelablePromise<[T1_4, T2_4, T3_4, T4_4, T5_4, T6_4, T7_4, T8_4]>;
<T1_5, T2_5, T3_5, T4_5, T5_5, T6_5, T7_5>(values: readonly [T1_5 | PromiseLike<T1_5>, T2_5 | PromiseLike<T2_5>, T3_5 | PromiseLike<T3_5>, T4_5 | PromiseLike<T4_5>, T5_5 | PromiseLike<T5_5>, T6_5 | PromiseLike<T6_5>, T7_5 | PromiseLike<T7_5>]): CancelablePromise<[T1_5, T2_5, T3_5, T4_5, T5_5, T6_5, T7_5]>;
<T1_6, T2_6, T3_6, T4_6, T5_6, T6_6>(values: readonly [T1_6 | PromiseLike<T1_6>, T2_6 | PromiseLike<T2_6>, T3_6 | PromiseLike<T3_6>, T4_6 | PromiseLike<T4_6>, T5_6 | PromiseLike<T5_6>, T6_6 | PromiseLike<T6_6>]): CancelablePromise<[T1_6, T2_6, T3_6, T4_6, T5_6, T6_6]>;
<T1_7, T2_7, T3_7, T4_7, T5_7>(values: readonly [T1_7 | PromiseLike<T1_7>, T2_7 | PromiseLike<T2_7>, T3_7 | PromiseLike<T3_7>, T4_7 | PromiseLike<T4_7>, T5_7 | PromiseLike<T5_7>]): CancelablePromise<[T1_7, T2_7, T3_7, T4_7, T5_7]>;
<T1_8, T2_8, T3_8, T4_8>(values: readonly [T1_8 | PromiseLike<T1_8>, T2_8 | PromiseLike<T2_8>, T3_8 | PromiseLike<T3_8>, T4_8 | PromiseLike<T4_8>]): CancelablePromise<[T1_8, T2_8, T3_8, T4_8]>;
<T1_9, T2_9, T3_9>(values: readonly [T1_9 | PromiseLike<T1_9>, T2_9 | PromiseLike<T2_9>, T3_9 | PromiseLike<T3_9>]): CancelablePromise<[T1_9, T2_9, T3_9]>;
<T1_10, T2_10>(values: readonly [T1_10 | PromiseLike<T1_10>, T2_10 | PromiseLike<T2_10>]): CancelablePromise<[T1_10, T2_10]>;
<T_1>(values: readonly (T_1 | PromiseLike<T_1>)[]): CancelablePromise<T_1[]>;
};
static allSettled: {
<T_1 extends readonly unknown[] | readonly [unknown]>(values: T_1): CancelablePromise<{ -readonly [P in keyof T_1]: PromiseSettledResult<T_1[P] extends PromiseLike<infer U> ? U : T_1[P]>; }>;
<T_2>(values: Iterable<T_2>): CancelablePromise<PromiseSettledResult<T_2 extends PromiseLike<infer U_1> ? U_1 : T_2>[]>;
};
static race: <T_1>(values: readonly T_1[]) => CancelablePromise<T_1 extends PromiseLike<infer U> ? U : T_1>;
static resolve: {
(): CancelablePromise<void>;
<T_1>(value: T_1 | PromiseLike<T_1> | CancelablePromise<T_1>): CancelablePromise<T_1>;
};
static reject: <T_1 = never>(reason?: any) => CancelablePromise<T_1>;
static isCancelable: typeof isCancelablePromise;
constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: (cancelHandler: () => void) => void) => void);
}
type PromiseSettledResult<T> =
| PromiseFulfilledResult<T>
| PromiseRejectedResult;
export interface CancelablePromiseType<T> {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1 = T, TResult2 = never>(
onfulfilled?:
| ((value: T) => TResult1 | PromiseLike<TResult1>)
| undefined
| null,
onrejected?:
| ((reason: any) => TResult2 | PromiseLike<TResult2>)
| undefined
| null
): CancelablePromiseType<TResult1 | TResult2>;
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch<TResult = never>(
onrejected?:
| ((reason: any) => TResult | PromiseLike<TResult>)
| undefined
| null
): CancelablePromiseType<T | TResult>;
/**
* Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
* resolved value cannot be modified from the callback.
* @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
* @returns A Promise for the completion of the callback.
*/
finally(
onfinally?: (() => void) | undefined | null,
runWhenCanceled?: boolean
): CancelablePromiseType<T>;
cancel(): void;
isCanceled(): boolean;
export default CancelablePromise;
export declare function cancelable<T = any>(promise: Promise<T>): CancelablePromise<T>;
export declare function isCancelablePromise(promise: any): boolean;
interface Internals {
isCanceled: boolean;
onCancelList: any[];
}
export interface CancelablePromiseConstructor {
/**
* Creates a new Promise.
* @param executor A callback used to initialize the promise. This callback is passed two arguments:
* a resolve callback used to resolve the promise with a value or the result of another promise,
* and a reject callback used to reject the promise with a provided reason or error.
*/
new <T1>(executor: CancelablePromiseExecutor<T1>): CancelablePromiseType<T1>;
<T1>(executor: CancelablePromiseExecutor<T1>): CancelablePromiseType<T1>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>,
T9 | PromiseLike<T9>,
T10 | PromiseLike<T10>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>,
T9 | PromiseLike<T9>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>
]
): CancelablePromiseType<[T1, T2, T3, T4]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>
]
): CancelablePromiseType<[T1, T2, T3]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2>(
values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]
): CancelablePromiseType<[T1, T2]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1>(
values: readonly (T1 | PromiseLike<T1>)[]
): CancelablePromiseType<T1[]>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1>(
values: readonly T1[]
): CancelablePromiseType<T1 extends PromiseLike<infer U> ? U : T1>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An iterable of Promises.
* @returns A new Promise.
*/
race<T1>(
values: Iterable<T1>
): CancelablePromiseType<T1 extends PromiseLike<infer U> ? U : T1>;
/**
* Creates a new rejected promise for the provided reason.
* @param reason The reason the promise was rejected.
* @returns A new rejected Promise.
*/
reject<T1 = never>(reason?: any): CancelablePromiseType<T1>;
/**
* Creates a new resolved promise for the provided value.
* @param value A promise.
* @returns A promise whose internal state matches the provided promise.
*/
resolve<T1>(value: T1 | PromiseLike<T1>): CancelablePromiseType<T1>;
/**
* Creates a new resolved promise .
* @returns A resolved promise.
*/
resolve(): CancelablePromiseType<void>;
/**
* Creates a Promise that is resolved with an array of results when all
* of the provided Promises resolve or reject.
* @param values An array of Promises.
* @returns A new Promise.
*/
allSettled<T1 extends readonly unknown[] | readonly [unknown]>(
values: T1
): CancelablePromiseType<
{
-readonly [P in keyof T1]: PromiseSettledResult<
T1[P] extends PromiseLike<infer U> ? U : T1[P]
>;
}
>;
/**
* Creates a Promise that is resolved with an array of results when all
* of the provided Promises resolve or reject.
* @param values An array of Promises.
* @returns A new Promise.
*/
allSettled<T1>(
values: Iterable<T1>
): CancelablePromiseType<
PromiseSettledResult<T1 extends PromiseLike<infer U> ? U : T1>[]
>;
}
export function cancelable<T>(
promise: PromiseLike<T>
): CancelablePromiseType<T>;
export const CancelablePromise: CancelablePromiseConstructor;
export default CancelablePromise;
{
"name": "cancelable-promise",
"version": "4.1.0",
"version": "4.2.0",
"description": "A simple cancelable promise",

@@ -12,13 +12,15 @@ "keywords": [

"module": "esm/CancelablePromise.mjs",
"jsnext:main": "src/CancelablePromise.js",
"types": "src/CancelablePromise.d.ts",
"types": "esm/CancelablePromise.d.ts",
"files": [
"umd/CancelablePromise.js",
"umd/CancelablePromise.js.map",
"umd/CancelablePromise.min.js",
"umd/CancelablePromise.min.js.map",
"umd/CancelablePromise.d.ts",
"esm/CancelablePromise.mjs",
"esm/CancelablePromise.mjs.map",
"esm/CancelablePromise.min.mjs",
"esm/CancelablePromise.min.mjs.map",
"esm/CancelablePromise.d.ts",
"src/CancelablePromise.js",
"src/CancelablePromise.d.ts",
"src/CancelablePromise.ts",
"LICENSE",

@@ -30,11 +32,16 @@ "README.md",

"scripts": {
"babel": "babel src/CancelablePromise.js -d umd",
"build": "npm run clean && npm run babel && npm run copy && npm run uglify",
"build:babel:umd": "BABEL_ENV=umd babel src/CancelablePromise.ts -x '.ts' -d umd -s",
"build:babel:esm": "BABEL_ENV=esm babel src/CancelablePromise.ts -x '.ts' -d esm -s -f 'CancelablePromise.mjs' --out-file-extension '.mjs'",
"build:type": "tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir umd",
"build:umd": "npm run build:babel:umd && npm run build:type",
"build:esm": "npm run build:babel:esm",
"build": "npm run clean && npm run build:umd && npm run build:esm && npm run copy && npm run uglify",
"clean": "node scripts.js clean",
"copy": "node scripts.js copy",
"cypress:electron": "cypress run --browser electron --headless",
"cypress": "cypress run --browser chrome --headless",
"jest:rc": "jest --findRelatedTests",
"jest": "jest --ci --maxWorkers 1",
"lint:rc": "eslint --fix",
"lint": "eslint .",
"jest:rc": "BABEL_ENV=test jest --findRelatedTests",
"jest": "BABEL_ENV=test jest --ci --maxWorkers 1",
"lint:rc": "eslint --ext .js,.ts --fix",
"lint": "eslint . --ext .js,.ts",
"prepare": "husky install",

@@ -50,7 +57,8 @@ "prepublish": "npm run build",

"release:patch": "node scripts.js prepare_release patch",
"test:e2e": "concurrently 'npm run test:serve' 'wait-on http://localhost:3000/esm.html && npm run cypress' --kill-others --success first",
"test:e2e": "concurrently 'npm run test:serve' 'wait-on http://localhost:3000/esm.html && npm run cypress' --kill-others --kill-others-on-fail --success first",
"test:serve": "node tests/esm.server.js",
"test": "npm run lint && npm run jest",
"uglify:esm": "terser esm/CancelablePromise.mjs -c -m -o esm/CancelablePromise.min.mjs",
"uglify:umd": "terser umd/CancelablePromise.js -c -m -o umd/CancelablePromise.min.js",
"test": "npm run types && npm run lint && npm run jest",
"types": "tsc --project tsconfig.json --noEmit --pretty",
"uglify:esm": "terser esm/CancelablePromise.mjs -c -m -o esm/CancelablePromise.min.mjs --source-map \"filename='CancelablePromise.min.mjs.map',url='CancelablePromise.min.mjs.map'\"",
"uglify:umd": "terser umd/CancelablePromise.js -c -m -o umd/CancelablePromise.min.js --source-map \"filename='CancelablePromise.min.js.map',url='CancelablePromise.min.js.map'\"",
"uglify": "npm run uglify:umd && npm run uglify:esm"

@@ -69,20 +77,25 @@ },

"devDependencies": {
"@babel/cli": "~7.14.3",
"@babel/core": "~7.14.3",
"@babel/preset-env": "~7.14.2",
"@babel/cli": "~7.14.5",
"@babel/core": "~7.14.6",
"@babel/preset-env": "~7.14.5",
"@babel/preset-typescript": "~7.14.5",
"@types/jest": "~26.0.23",
"@typescript-eslint/eslint-plugin": "~4.27.0",
"@typescript-eslint/parser": "~4.27.0",
"babel-eslint": "~10.1.0",
"concurrently": "~6.2.0",
"core-js": "~3.13.0",
"cypress": "~7.4.0",
"eslint": "~7.27.0",
"core-js": "~3.14.0",
"cypress": "~7.5.0",
"eslint": "~7.28.0",
"express": "~4.17.1",
"fs-extra": "~10.0.0",
"husky": "~6.0.0",
"jest": "~27.0.1",
"jest": "~27.0.4",
"lint-staged": "~11.0.0",
"prettier": "~2.3.0",
"prettier": "~2.3.1",
"semver": "~7.3.5",
"terser": "~5.7.0",
"typescript": "~4.3.2",
"wait-on": "~5.3.0"
}
}

@@ -11,2 +11,3 @@ # cancelable-promise

- See [core-js](https://github.com/zloirock/core-js#ecmascript-promise) for polyfills
- For example, you can use https://polyfill.io/v3/polyfill.min.js?features=Promise%2CPromise.prototype.finally for Internet Explorer 11

@@ -134,3 +135,3 @@ FYI, you can cancel a fetch request with AbortController & AbortSignal.

### CancelablePromise.cancel
### cancelablePromise.cancel

@@ -144,3 +145,3 @@ ```javascript

### CancelablePromise.isCanceled
### cancelablePromise.isCanceled

@@ -154,3 +155,3 @@ ```javascript

### CancelablePromise.finally
### cancelablePromise.finally

@@ -221,2 +222,36 @@ ```javascript

#### CancelablePromise.isCancelable
Returns `true` if parameter is a cancelable promise.
```javascript
import { cancelable, CancelablePromise } from 'cancelable-promise';
CancelablePromise.isCancelable(cancelable(new Promise(() => {}))); // true
CancelablePromise.isCancelable(new CancelablePromise(() => {})); // true
CancelablePromise.isCancelable(new Promise(() => {})); // false
CancelablePromise.isCancelable(undefined); // false
CancelablePromise.isCancelable({ cancel() {} }); // false
```
### Utils
#### isCancelablePromise
Same as `CancelablePromise.isCancelable`, it returns `true` if parameter is a cancelable promise.
```javascript
import {
cancelable,
CancelablePromise,
isCancelablePromise,
} from 'cancelable-promise';
isCancelablePromise(cancelable(new Promise(() => {}))); // true
isCancelablePromise(new CancelablePromise(() => {})); // true
isCancelablePromise(new Promise(() => {})); // false
isCancelablePromise(undefined); // false
isCancelablePromise({ cancel() {} }); // false
```
## Scripts

@@ -223,0 +258,0 @@

@@ -1,311 +0,48 @@

type CancelablePromiseExecutor<T> = (
resolve: (value?: T | PromiseLike<T>) => void,
reject: (reason?: any) => void,
onCancel: (cancelHandler: () => void) => void
) => void;
interface PromiseFulfilledResult<T> {
status: 'fulfilled';
value: T;
declare class CancelablePromiseInternal<T = any> {
#private;
constructor({ executor, internals, promise, }: {
executor?: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: (cancelHandler: () => void) => void) => void;
internals?: Internals;
promise?: Promise<T>;
});
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1> | CancelablePromise<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2> | CancelablePromise<TResult2>) | undefined | null): CancelablePromise<TResult1 | TResult2>;
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>) | undefined | null): CancelablePromise<T | TResult>;
finally(onfinally?: (() => void) | undefined | null, runWhenCanceled?: boolean): CancelablePromise<T>;
cancel(): void;
isCanceled(): boolean;
}
interface PromiseRejectedResult {
status: 'rejected';
reason: any;
export declare class CancelablePromise<T = any> extends CancelablePromiseInternal<T> {
static all: {
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>, T11 | PromiseLike<T11>, T12 | PromiseLike<T12>]): CancelablePromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]>;
<T1_1, T2_1, T3_1, T4_1, T5_1, T6_1, T7_1, T8_1, T9_1, T10_1, T11_1>(values: readonly [T1_1 | PromiseLike<T1_1>, T2_1 | PromiseLike<T2_1>, T3_1 | PromiseLike<T3_1>, T4_1 | PromiseLike<T4_1>, T5_1 | PromiseLike<T5_1>, T6_1 | PromiseLike<T6_1>, T7_1 | PromiseLike<T7_1>, T8_1 | PromiseLike<T8_1>, T9_1 | PromiseLike<T9_1>, T10_1 | PromiseLike<T10_1>, T11_1 | PromiseLike<T11_1>]): CancelablePromise<[T1_1, T2_1, T3_1, T4_1, T5_1, T6_1, T7_1, T8_1, T9_1, T10_1, T11_1]>;
<T1_2, T2_2, T3_2, T4_2, T5_2, T6_2, T7_2, T8_2, T9_2, T10_2>(values: readonly [T1_2 | PromiseLike<T1_2>, T2_2 | PromiseLike<T2_2>, T3_2 | PromiseLike<T3_2>, T4_2 | PromiseLike<T4_2>, T5_2 | PromiseLike<T5_2>, T6_2 | PromiseLike<T6_2>, T7_2 | PromiseLike<T7_2>, T8_2 | PromiseLike<T8_2>, T9_2 | PromiseLike<T9_2>, T10_2 | PromiseLike<T10_2>]): CancelablePromise<[T1_2, T2_2, T3_2, T4_2, T5_2, T6_2, T7_2, T8_2, T9_2, T10_2]>;
<T1_3, T2_3, T3_3, T4_3, T5_3, T6_3, T7_3, T8_3, T9_3>(values: readonly [T1_3 | PromiseLike<T1_3>, T2_3 | PromiseLike<T2_3>, T3_3 | PromiseLike<T3_3>, T4_3 | PromiseLike<T4_3>, T5_3 | PromiseLike<T5_3>, T6_3 | PromiseLike<T6_3>, T7_3 | PromiseLike<T7_3>, T8_3 | PromiseLike<T8_3>, T9_3 | PromiseLike<T9_3>]): CancelablePromise<[T1_3, T2_3, T3_3, T4_3, T5_3, T6_3, T7_3, T8_3, T9_3]>;
<T1_4, T2_4, T3_4, T4_4, T5_4, T6_4, T7_4, T8_4>(values: readonly [T1_4 | PromiseLike<T1_4>, T2_4 | PromiseLike<T2_4>, T3_4 | PromiseLike<T3_4>, T4_4 | PromiseLike<T4_4>, T5_4 | PromiseLike<T5_4>, T6_4 | PromiseLike<T6_4>, T7_4 | PromiseLike<T7_4>, T8_4 | PromiseLike<T8_4>]): CancelablePromise<[T1_4, T2_4, T3_4, T4_4, T5_4, T6_4, T7_4, T8_4]>;
<T1_5, T2_5, T3_5, T4_5, T5_5, T6_5, T7_5>(values: readonly [T1_5 | PromiseLike<T1_5>, T2_5 | PromiseLike<T2_5>, T3_5 | PromiseLike<T3_5>, T4_5 | PromiseLike<T4_5>, T5_5 | PromiseLike<T5_5>, T6_5 | PromiseLike<T6_5>, T7_5 | PromiseLike<T7_5>]): CancelablePromise<[T1_5, T2_5, T3_5, T4_5, T5_5, T6_5, T7_5]>;
<T1_6, T2_6, T3_6, T4_6, T5_6, T6_6>(values: readonly [T1_6 | PromiseLike<T1_6>, T2_6 | PromiseLike<T2_6>, T3_6 | PromiseLike<T3_6>, T4_6 | PromiseLike<T4_6>, T5_6 | PromiseLike<T5_6>, T6_6 | PromiseLike<T6_6>]): CancelablePromise<[T1_6, T2_6, T3_6, T4_6, T5_6, T6_6]>;
<T1_7, T2_7, T3_7, T4_7, T5_7>(values: readonly [T1_7 | PromiseLike<T1_7>, T2_7 | PromiseLike<T2_7>, T3_7 | PromiseLike<T3_7>, T4_7 | PromiseLike<T4_7>, T5_7 | PromiseLike<T5_7>]): CancelablePromise<[T1_7, T2_7, T3_7, T4_7, T5_7]>;
<T1_8, T2_8, T3_8, T4_8>(values: readonly [T1_8 | PromiseLike<T1_8>, T2_8 | PromiseLike<T2_8>, T3_8 | PromiseLike<T3_8>, T4_8 | PromiseLike<T4_8>]): CancelablePromise<[T1_8, T2_8, T3_8, T4_8]>;
<T1_9, T2_9, T3_9>(values: readonly [T1_9 | PromiseLike<T1_9>, T2_9 | PromiseLike<T2_9>, T3_9 | PromiseLike<T3_9>]): CancelablePromise<[T1_9, T2_9, T3_9]>;
<T1_10, T2_10>(values: readonly [T1_10 | PromiseLike<T1_10>, T2_10 | PromiseLike<T2_10>]): CancelablePromise<[T1_10, T2_10]>;
<T_1>(values: readonly (T_1 | PromiseLike<T_1>)[]): CancelablePromise<T_1[]>;
};
static allSettled: {
<T_1 extends readonly unknown[] | readonly [unknown]>(values: T_1): CancelablePromise<{ -readonly [P in keyof T_1]: PromiseSettledResult<T_1[P] extends PromiseLike<infer U> ? U : T_1[P]>; }>;
<T_2>(values: Iterable<T_2>): CancelablePromise<PromiseSettledResult<T_2 extends PromiseLike<infer U_1> ? U_1 : T_2>[]>;
};
static race: <T_1>(values: readonly T_1[]) => CancelablePromise<T_1 extends PromiseLike<infer U> ? U : T_1>;
static resolve: {
(): CancelablePromise<void>;
<T_1>(value: T_1 | PromiseLike<T_1> | CancelablePromise<T_1>): CancelablePromise<T_1>;
};
static reject: <T_1 = never>(reason?: any) => CancelablePromise<T_1>;
static isCancelable: typeof isCancelablePromise;
constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: (cancelHandler: () => void) => void) => void);
}
type PromiseSettledResult<T> =
| PromiseFulfilledResult<T>
| PromiseRejectedResult;
export interface CancelablePromiseType<T> {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1 = T, TResult2 = never>(
onfulfilled?:
| ((value: T) => TResult1 | PromiseLike<TResult1>)
| undefined
| null,
onrejected?:
| ((reason: any) => TResult2 | PromiseLike<TResult2>)
| undefined
| null
): CancelablePromiseType<TResult1 | TResult2>;
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch<TResult = never>(
onrejected?:
| ((reason: any) => TResult | PromiseLike<TResult>)
| undefined
| null
): CancelablePromiseType<T | TResult>;
/**
* Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
* resolved value cannot be modified from the callback.
* @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
* @returns A Promise for the completion of the callback.
*/
finally(
onfinally?: (() => void) | undefined | null,
runWhenCanceled?: boolean
): CancelablePromiseType<T>;
cancel(): void;
isCanceled(): boolean;
export default CancelablePromise;
export declare function cancelable<T = any>(promise: Promise<T>): CancelablePromise<T>;
export declare function isCancelablePromise(promise: any): boolean;
interface Internals {
isCanceled: boolean;
onCancelList: any[];
}
export interface CancelablePromiseConstructor {
/**
* Creates a new Promise.
* @param executor A callback used to initialize the promise. This callback is passed two arguments:
* a resolve callback used to resolve the promise with a value or the result of another promise,
* and a reject callback used to reject the promise with a provided reason or error.
*/
new <T1>(executor: CancelablePromiseExecutor<T1>): CancelablePromiseType<T1>;
<T1>(executor: CancelablePromiseExecutor<T1>): CancelablePromiseType<T1>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>,
T9 | PromiseLike<T9>,
T10 | PromiseLike<T10>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>,
T9 | PromiseLike<T9>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7, T8>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>,
T8 | PromiseLike<T8>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7, T8]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6, T7>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>,
T7 | PromiseLike<T7>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6, T7]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5, T6>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>,
T6 | PromiseLike<T6>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5, T6]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4, T5>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>,
T5 | PromiseLike<T5>
]
): CancelablePromiseType<[T1, T2, T3, T4, T5]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3, T4>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>,
T4 | PromiseLike<T4>
]
): CancelablePromiseType<[T1, T2, T3, T4]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2, T3>(
values: readonly [
T1 | PromiseLike<T1>,
T2 | PromiseLike<T2>,
T3 | PromiseLike<T3>
]
): CancelablePromiseType<[T1, T2, T3]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1, T2>(
values: readonly [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]
): CancelablePromiseType<[T1, T2]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises
* resolve, or rejected when any Promise is rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
all<T1>(
values: readonly (T1 | PromiseLike<T1>)[]
): CancelablePromiseType<T1[]>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An array of Promises.
* @returns A new Promise.
*/
race<T1>(
values: readonly T1[]
): CancelablePromiseType<T1 extends PromiseLike<infer U> ? U : T1>;
/**
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
* or rejected.
* @param values An iterable of Promises.
* @returns A new Promise.
*/
race<T1>(
values: Iterable<T1>
): CancelablePromiseType<T1 extends PromiseLike<infer U> ? U : T1>;
/**
* Creates a new rejected promise for the provided reason.
* @param reason The reason the promise was rejected.
* @returns A new rejected Promise.
*/
reject<T1 = never>(reason?: any): CancelablePromiseType<T1>;
/**
* Creates a new resolved promise for the provided value.
* @param value A promise.
* @returns A promise whose internal state matches the provided promise.
*/
resolve<T1>(value: T1 | PromiseLike<T1>): CancelablePromiseType<T1>;
/**
* Creates a new resolved promise .
* @returns A resolved promise.
*/
resolve(): CancelablePromiseType<void>;
/**
* Creates a Promise that is resolved with an array of results when all
* of the provided Promises resolve or reject.
* @param values An array of Promises.
* @returns A new Promise.
*/
allSettled<T1 extends readonly unknown[] | readonly [unknown]>(
values: T1
): CancelablePromiseType<
{
-readonly [P in keyof T1]: PromiseSettledResult<
T1[P] extends PromiseLike<infer U> ? U : T1[P]
>;
}
>;
/**
* Creates a Promise that is resolved with an array of results when all
* of the provided Promises resolve or reject.
* @param values An array of Promises.
* @returns A new Promise.
*/
allSettled<T1>(
values: Iterable<T1>
): CancelablePromiseType<
PromiseSettledResult<T1 extends PromiseLike<infer U> ? U : T1>[]
>;
}
export function cancelable<T>(
promise: PromiseLike<T>
): CancelablePromiseType<T>;
export const CancelablePromise: CancelablePromiseConstructor;
export default CancelablePromise;

@@ -0,1 +1,3 @@

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
(function (global, factory) {

@@ -20,121 +22,263 @@ if (typeof define === "function" && define.amd) {

_exports.cancelable = cancelable;
_exports.CancelablePromise = CancelablePromise;
_exports.default = void 0;
_exports.isCancelablePromise = isCancelablePromise;
_exports.default = _exports.CancelablePromise = void 0;
function createCallback(onResult, options) {
if (onResult) {
return function (arg) {
if (!options.isCanceled) {
var result = onResult(arg);
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
if (result && typeof result.cancel === 'function') {
if (!options.onCancelList) {
options.onCancelList = [];
}
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
options.onCancelList.push(result.cancel);
}
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
return result;
}
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
return arg;
};
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
var _internals = /*#__PURE__*/new WeakMap();
var _promise = /*#__PURE__*/new WeakMap();
var CancelablePromiseInternal = /*#__PURE__*/function () {
function CancelablePromiseInternal(_ref) {
var _ref$executor = _ref.executor,
executor = _ref$executor === void 0 ? function () {} : _ref$executor,
_ref$internals = _ref.internals,
internals = _ref$internals === void 0 ? defaultInternals() : _ref$internals,
_ref$promise = _ref.promise,
promise = _ref$promise === void 0 ? new Promise(function (resolve, reject) {
return executor(resolve, reject, function (onCancel) {
internals.onCancelList.push(onCancel);
});
}) : _ref$promise;
_classCallCheck(this, CancelablePromiseInternal);
_internals.set(this, {
writable: true,
value: void 0
});
_promise.set(this, {
writable: true,
value: void 0
});
this.cancel = this.cancel.bind(this);
_classPrivateFieldSet(this, _internals, internals);
_classPrivateFieldSet(this, _promise, promise || new Promise(function (resolve, reject) {
return executor(resolve, reject, function (onCancel) {
internals.onCancelList.push(onCancel);
});
}));
}
}
function makeCancelable(promise, options) {
var methods = {
then: function then(onSuccess, onError) {
return makeCancelable(promise.then(createCallback(onSuccess, options), createCallback(onError, options)), options);
},
catch: function _catch(onError) {
return makeCancelable(promise.catch(createCallback(onError, options)), options);
},
finally: function _finally(onFinally, runWhenCanceled) {
_createClass(CancelablePromiseInternal, [{
key: "then",
value: function then(onfulfilled, onrejected) {
return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));
}
}, {
key: "catch",
value: function _catch(onrejected) {
return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));
}
}, {
key: "finally",
value: function _finally(onfinally, runWhenCanceled) {
var _this = this;
if (runWhenCanceled) {
if (!options.finallyList) {
options.finallyList = [];
}
options.finallyList.push(onFinally);
_classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);
}
return makeCancelable(promise.finally(function () {
if (runWhenCanceled) {
options.finallyList = options.finallyList.filter(function (callback) {
return callback !== onFinally;
});
return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(function () {
if (onfinally) {
if (runWhenCanceled) {
_classPrivateFieldGet(_this, _internals).onCancelList = _classPrivateFieldGet(_this, _internals).onCancelList.filter(function (callback) {
return callback !== onfinally;
});
}
return onfinally();
}
}, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));
}
}, {
key: "cancel",
value: function cancel() {
_classPrivateFieldGet(this, _internals).isCanceled = true;
return onFinally();
}), options);
},
cancel: function cancel() {
options.isCanceled = true;
var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;
for (var _i = 0, _arr = [options.onCancelList, options.finallyList]; _i < _arr.length; _i++) {
var callbacks = _arr[_i];
_classPrivateFieldGet(this, _internals).onCancelList = [];
if (callbacks) {
while (callbacks.length) {
var onCancel = callbacks.shift();
var _iterator = _createForOfIteratorHelper(callbacks),
_step;
if (typeof onCancel === 'function') {
onCancel();
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var callback = _step.value;
if (typeof callback === 'function') {
try {
callback();
} catch (err) {
console.error(err);
}
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
},
isCanceled: function isCanceled() {
return options.isCanceled === true;
}
};
return {
then: methods.then.bind(undefined),
catch: methods.catch.bind(undefined),
finally: methods.finally.bind(undefined),
cancel: methods.cancel.bind(undefined),
isCanceled: methods.isCanceled.bind(undefined)
};
}
}, {
key: "isCanceled",
value: function isCanceled() {
return _classPrivateFieldGet(this, _internals).isCanceled === true;
}
}]);
function cancelable(promise) {
return makeCancelable(promise, {});
}
return CancelablePromiseInternal;
}();
function CancelablePromise(executor) {
var onCancelList = [];
return makeCancelable(new Promise(function (resolve, reject) {
return executor(resolve, reject, function (onCancel) {
onCancelList.push(onCancel);
var CancelablePromise = /*#__PURE__*/function (_CancelablePromiseInt) {
_inherits(CancelablePromise, _CancelablePromiseInt);
var _super = _createSuper(CancelablePromise);
function CancelablePromise(executor) {
_classCallCheck(this, CancelablePromise);
return _super.call(this, {
executor: executor
});
}), {
onCancelList: onCancelList
});
}
}
CancelablePromise.all = function (iterable) {
return cancelable(Promise.all(iterable));
};
return CancelablePromise;
}(CancelablePromiseInternal);
CancelablePromise.allSettled = function (iterable) {
return cancelable(Promise.allSettled(iterable));
};
_exports.CancelablePromise = CancelablePromise;
CancelablePromise.race = function (iterable) {
return cancelable(Promise.race(iterable));
};
_defineProperty(CancelablePromise, "all", function all(iterable) {
return makeAllCancelable(iterable, Promise.all(iterable));
});
CancelablePromise.resolve = function (value) {
_defineProperty(CancelablePromise, "allSettled", function allSettled(iterable) {
return makeAllCancelable(iterable, Promise.allSettled(iterable));
});
_defineProperty(CancelablePromise, "race", function race(iterable) {
return makeAllCancelable(iterable, Promise.race(iterable));
});
_defineProperty(CancelablePromise, "resolve", function resolve(value) {
return cancelable(Promise.resolve(value));
};
});
CancelablePromise.reject = function (value) {
return cancelable(Promise.reject(value));
};
_defineProperty(CancelablePromise, "reject", function reject(reason) {
return cancelable(Promise.reject(reason));
});
_defineProperty(CancelablePromise, "isCancelable", isCancelablePromise);
var _default = CancelablePromise;
_exports.default = _default;
});
function cancelable(promise) {
return makeCancelable(promise, defaultInternals());
}
function isCancelablePromise(promise) {
return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;
}
function createCallback(onResult, internals) {
if (onResult) {
return function (arg) {
if (!internals.isCanceled) {
var result = onResult(arg);
if (isCancelablePromise(result)) {
internals.onCancelList.push(result.cancel);
}
return result;
}
return arg;
};
}
}
function makeCancelable(promise, internals) {
return new CancelablePromiseInternal({
internals: internals,
promise: promise
});
}
function makeAllCancelable(iterable, promise) {
var internals = defaultInternals();
internals.onCancelList.push(function () {
var _iterator2 = _createForOfIteratorHelper(iterable),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var resolvable = _step2.value;
if (isCancelablePromise(resolvable)) {
resolvable.cancel();
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
});
return new CancelablePromiseInternal({
internals: internals,
promise: promise
});
}
function defaultInternals() {
return {
isCanceled: false,
onCancelList: []
};
}
});
//# sourceMappingURL=CancelablePromise.js.map

@@ -1,1 +0,2 @@

!function(n,e){if("function"==typeof define&&define.amd)define(["exports"],e);else if("undefined"!=typeof exports)e(exports);else{var t={exports:{}};e(t.exports),n.CancelablePromise=t.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(n){"use strict";function e(n,e){if(n)return function(t){if(!e.isCanceled){var i=n(t);return i&&"function"==typeof i.cancel&&(e.onCancelList||(e.onCancelList=[]),e.onCancelList.push(i.cancel)),i}return t}}function t(n,i){var r={then:function(r,l){return t(n.then(e(r,i),e(l,i)),i)},catch:function(r){return t(n.catch(e(r,i)),i)},finally:function(e,r){return r&&(i.finallyList||(i.finallyList=[]),i.finallyList.push(e)),t(n.finally((function(){return r&&(i.finallyList=i.finallyList.filter((function(n){return n!==e}))),e()})),i)},cancel:function(){i.isCanceled=!0;for(var n=0,e=[i.onCancelList,i.finallyList];n<e.length;n++){var t=e[n];if(t)for(;t.length;){var r=t.shift();"function"==typeof r&&r()}}},isCanceled:function(){return!0===i.isCanceled}};return{then:r.then.bind(void 0),catch:r.catch.bind(void 0),finally:r.finally.bind(void 0),cancel:r.cancel.bind(void 0),isCanceled:r.isCanceled.bind(void 0)}}function i(n){return t(n,{})}function r(n){var e=[];return t(new Promise((function(t,i){return n(t,i,(function(n){e.push(n)}))})),{onCancelList:e})}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelable=i,n.CancelablePromise=r,n.default=void 0,r.all=function(n){return i(Promise.all(n))},r.allSettled=function(n){return i(Promise.allSettled(n))},r.race=function(n){return i(Promise.race(n))},r.resolve=function(n){return i(Promise.resolve(n))},r.reject=function(n){return i(Promise.reject(n))};var l=r;n.default=l}));
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t){if("function"==typeof define&&define.amd)define(["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.CancelablePromise=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){"use strict";function t(e,n){return(t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,n)}function n(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=o(e);if(t){var u=o(this).constructor;n=Reflect.construct(i,arguments,u)}else n=i.apply(this,arguments);return r(this,n)}}function r(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw i}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t){return function(e,t){if(t.get)return t.get.call(e);return t.value}(e,p(e,t,"get"))}function s(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,p(e,t,"set"),n),n}function p(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.cancelable=m,e.isCancelablePromise=w,e.default=e.CancelablePromise=void 0;var y=new WeakMap,h=new WeakMap,v=function(){function e(t){var n=t.executor,r=void 0===n?function(){}:n,o=t.internals,i=void 0===o?{isCanceled:!1,onCancelList:[]}:o,u=t.promise,c=void 0===u?new Promise((function(e,t){return r(e,t,(function(e){i.onCancelList.push(e)}))})):u;a(this,e),y.set(this,{writable:!0,value:void 0}),h.set(this,{writable:!0,value:void 0}),this.cancel=this.cancel.bind(this),s(this,y,i),s(this,h,c||new Promise((function(e,t){return r(e,t,(function(e){i.onCancelList.push(e)}))})))}var t,n,r;return t=e,(n=[{key:"then",value:function(e,t){return g(l(this,h).then(C(e,l(this,y)),C(t,l(this,y))),l(this,y))}},{key:"catch",value:function(e){return g(l(this,h).catch(C(e,l(this,y))),l(this,y))}},{key:"finally",value:function(e,t){var n=this;return t&&l(this,y).onCancelList.push(e),g(l(this,h).finally(C((function(){if(e)return t&&(l(n,y).onCancelList=l(n,y).onCancelList.filter((function(t){return t!==e}))),e()}),l(this,y))),l(this,y))}},{key:"cancel",value:function(){l(this,y).isCanceled=!0;var e=l(this,y).onCancelList;l(this,y).onCancelList=[];var t,n=u(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;if("function"==typeof r)try{r()}catch(e){console.error(e)}}}catch(e){n.e(e)}finally{n.f()}}},{key:"isCanceled",value:function(){return!0===l(this,y).isCanceled}}])&&f(t.prototype,n),r&&f(t,r),e}(),d=function(e){!function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),n&&t(e,n)}(o,e);var r=n(o);function o(e){return a(this,o),r.call(this,{executor:e})}return o}(v);e.CancelablePromise=d,i(d,"all",(function(e){return P(e,Promise.all(e))})),i(d,"allSettled",(function(e){return P(e,Promise.allSettled(e))})),i(d,"race",(function(e){return P(e,Promise.race(e))})),i(d,"resolve",(function(e){return m(Promise.resolve(e))})),i(d,"reject",(function(e){return m(Promise.reject(e))})),i(d,"isCancelable",w);var b=d;function m(e){return g(e,{isCanceled:!1,onCancelList:[]})}function w(e){return e instanceof d||e instanceof v}function C(e,t){if(e)return function(n){if(!t.isCanceled){var r=e(n);return w(r)&&t.onCancelList.push(r.cancel),r}return n}}function g(e,t){return new v({internals:t,promise:e})}function P(e,t){var n={isCanceled:!1,onCancelList:[]};return n.onCancelList.push((function(){var t,n=u(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;w(r)&&r.cancel()}}catch(e){n.e(e)}finally{n.f()}})),new v({internals:n,promise:t})}e.default=b}));
//# sourceMappingURL=CancelablePromise.min.js.map

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc