@idlebox/common 1.3.6 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/lib/string/concatType.generated.cjs +1 -1
  2. package/lib/string/concatType.generated.cjs.map +1 -1
  3. package/lib/string/concatType.generated.js +1 -1
  4. package/lib/string/concatType.generated.js.map +1 -1
  5. package/package.json +1 -1
  6. package/.rush/temp/8ffc60c66c29712a4b0392d78f8ceb08fd99cd43.log +0 -10
  7. package/.rush/temp/shrinkwrap-deps.json +0 -671
  8. package/Gulpfile.js +0 -4
  9. package/build-script.json +0 -55
  10. package/common.build.log +0 -42
  11. package/config/rush-project.json +0 -4
  12. package/docs/common.api.json +0 -21006
  13. package/docs/common.api.md +0 -1125
  14. package/docs/tsdoc-metadata.json +0 -11
  15. package/idlebox-common-v1.3.2.tgz +0 -0
  16. package/idlebox-common-v1.3.3.tgz +0 -0
  17. package/src/array/arrayDiff.ts +0 -31
  18. package/src/array/arraySame.ts +0 -15
  19. package/src/array/arrayUnique.ts +0 -50
  20. package/src/array/normalizeArray.ts +0 -13
  21. package/src/array/sortAlpha.ts +0 -15
  22. package/src/date/consts.ts +0 -5
  23. package/src/date/isInvalid.ts +0 -6
  24. package/src/date/sibling.ts +0 -28
  25. package/src/date/timeString.ts +0 -150
  26. package/src/date/unix.ts +0 -13
  27. package/src/debugging/tryInspect.ts +0 -37
  28. package/src/error/convertUnknown.ts +0 -10
  29. package/src/error/getFrame.ts +0 -13
  30. package/src/function/asyncCallbackList.ts +0 -75
  31. package/src/function/callbackList.ts +0 -84
  32. package/src/function/delayCallbackList.ts +0 -45
  33. package/src/function/functionName.ts +0 -39
  34. package/src/lifecycle/dispose/bridges/rxjs.ts +0 -6
  35. package/src/lifecycle/dispose/disposableEvent.ts +0 -117
  36. package/src/lifecycle/dispose/disposedError.ts +0 -16
  37. package/src/lifecycle/dispose/lifecycle.async.ts +0 -61
  38. package/src/lifecycle/dispose/lifecycle.global.ts +0 -61
  39. package/src/lifecycle/dispose/lifecycle.sync.ts +0 -79
  40. package/src/lifecycle/dispose/lifecycle.ts +0 -28
  41. package/src/lifecycle/event/event.ts +0 -63
  42. package/src/lifecycle/promise/cancel.ts +0 -16
  43. package/src/lifecycle/promise/cancellationToken/driver.browser.ts +0 -55
  44. package/src/lifecycle/promise/cancellationToken/driver.common.ts +0 -43
  45. package/src/lifecycle/promise/cancellationToken/source.ts +0 -48
  46. package/src/lifecycle/promise/deferredPromise.ts +0 -102
  47. package/src/lifecycle/timeout/timeout.ts +0 -48
  48. package/src/lifecycle/timeout/timeoutError.ts +0 -16
  49. package/src/log/logger.ts +0 -148
  50. package/src/mapSet/customSet.ts +0 -91
  51. package/src/mapSet/extendMap.ts +0 -40
  52. package/src/misc/assertNotNull.ts +0 -21
  53. package/src/object/definePublicConstant.ts +0 -10
  54. package/src/object/initOnRead.ts +0 -27
  55. package/src/object/objectPath.ts +0 -10
  56. package/src/object/objectSame.ts +0 -52
  57. package/src/path/isAbsolute.ts +0 -11
  58. package/src/path/normalizePath.ts +0 -8
  59. package/src/path/pathArray.ts +0 -42
  60. package/src/platform/globalObject.ts +0 -18
  61. package/src/platform/globalSingleton.ts +0 -82
  62. package/src/platform/globalSymbol.ts +0 -36
  63. package/src/platform/os.ts +0 -45
  64. package/src/promise/awaitIterator.ts +0 -19
  65. package/src/promise/finishAllPromise.ts +0 -50
  66. package/src/promise/promiseBool.ts +0 -10
  67. package/src/promise/promisePool.ts +0 -40
  68. package/src/promise/timeoutPromisePool.ts +0 -22
  69. package/src/reflection/classes/hookClass.ts +0 -47
  70. package/src/reflection/classes/singleton.ts +0 -33
  71. package/src/reflection/methods/bind.ts +0 -30
  72. package/src/reflection/methods/initOnRead.ts +0 -11
  73. package/src/reflection/methods/memorize.ts +0 -33
  74. package/src/string/castCase.ts +0 -44
  75. package/src/string/concatType.generated.ts +0 -255
  76. package/src/string/concatType.generator.ts +0 -31
  77. package/src/string/escapeRegexp.ts +0 -4
  78. package/src/string/pad2.ts +0 -11
  79. package/src/string/sizeString.ts +0 -52
  80. package/src/tsconfig.json +0 -13
@@ -1,117 +0,0 @@
1
- import { IDisposable } from './lifecycle';
2
-
3
- declare const AbortController: new () => any;
4
-
5
- export interface IEventListenerOptions {
6
- capture?: boolean;
7
- once?: boolean;
8
- passive?: boolean;
9
- }
10
-
11
- export interface IEventHostObject<T extends Function> {
12
- addEventListener(type: string, handler: T, options?: IEventListenerOptions): any;
13
- removeEventListener(type: string, handler: T, options?: IEventListenerOptions): any;
14
- }
15
-
16
- export interface IEventEmitterObject<T extends Function> {
17
- addListener(type: string, handler: T): any;
18
- removeListener(type: string, handler: T): any;
19
- }
20
-
21
- export function addDisposableEventListener<T extends Function>(
22
- target: IEventHostObject<T> | IEventEmitterObject<T>,
23
- type: string,
24
- options: IEventListenerOptions,
25
- handler: T
26
- ): IDisposable;
27
-
28
- export function addDisposableEventListener<T extends Function>(
29
- target: IEventHostObject<T> | IEventEmitterObject<T>,
30
- type: string,
31
- handler: T
32
- ): IDisposable;
33
-
34
- export function addDisposableEventListener<T extends Function>(
35
- target: IEventHostObject<T> | IEventEmitterObject<T>,
36
- type: string,
37
- _options: IEventListenerOptions | T | undefined,
38
- _handler?: T
39
- ): IDisposable {
40
- if (!_handler) {
41
- if (typeof _options === 'function') {
42
- _handler = _options;
43
- _options = undefined;
44
- } else {
45
- throw new Error('missing handler');
46
- }
47
- }
48
-
49
- const handler = _handler as T;
50
- const options = _options as IEventListenerOptions;
51
-
52
- let remove: IDisposable['dispose'];
53
-
54
- if ('addEventListener' in target) {
55
- if (passiveSupported === undefined || abortSupported === undefined) {
56
- checkAllSupport(target);
57
- }
58
- const [abort, xOptions] = check(options);
59
- target.addEventListener(type, handler, xOptions);
60
- if (abort) {
61
- remove = () => {
62
- abort;
63
- };
64
- } else {
65
- remove = () => {
66
- target.removeEventListener(type, handler, xOptions);
67
- };
68
- }
69
- } else {
70
- target.addListener(type, handler);
71
- remove = () => {
72
- target.removeListener(type, handler);
73
- };
74
- }
75
- return { dispose: remove };
76
- }
77
-
78
- let passiveSupported: boolean;
79
- let abortSupported: boolean;
80
- function check(options: IEventListenerOptions = {}): [{ abort(): void } | undefined, IEventListenerOptions] {
81
- if (!passiveSupported) {
82
- return [undefined, (options.capture || false) as any];
83
- }
84
-
85
- if (abortSupported) {
86
- const controller = new AbortController();
87
- (options as any).signal = controller.signal;
88
- return [controller, options];
89
- } else {
90
- return [undefined, options];
91
- }
92
- }
93
-
94
- function checkAllSupport(ele: IEventHostObject<any>) {
95
- passiveSupported = checkSupport('passive', ele);
96
- abortSupported = typeof AbortController !== 'undefined' && checkSupport('signal', ele);
97
- }
98
-
99
- function checkSupport(field: string, ele: IEventHostObject<any>) {
100
- let supported = false;
101
- try {
102
- const options = {
103
- get [field]() {
104
- // This function will be called when the browser
105
- // attempts to access the passive property.
106
- supported = true;
107
- return undefined;
108
- },
109
- };
110
-
111
- ele.addEventListener('_test_', null, options);
112
- ele.removeEventListener('_test_', null, options);
113
- } catch (err) {
114
- supported = false;
115
- }
116
- return supported;
117
- }
@@ -1,16 +0,0 @@
1
- import { getErrorFrame } from '../../error/getFrame';
2
- import { tryInspect } from '../../debugging/tryInspect';
3
-
4
- /**
5
- * Error when call dispose() twice
6
- */
7
- export class DisposedError extends Error {
8
- constructor(object: any, previous: Error) {
9
- super(`Object [${tryInspect(object)}] has already disposed at ${getErrorFrame(previous, 2)}.`);
10
- this.name = 'Warning';
11
- }
12
- }
13
-
14
- export function isDisposedError(error: any): boolean {
15
- return error instanceof DisposedError;
16
- }
@@ -1,61 +0,0 @@
1
- import { convertCatchedError } from '../../error/convertUnknown';
2
- import { Emitter, EventRegister } from '../event/event';
3
- import { DisposedError } from './disposedError';
4
- import { IAsyncDisposable, IDisposableBaseInternal } from './lifecycle';
5
-
6
- /**
7
- * Async version of Disposable
8
- * @public
9
- */
10
- export class AsyncDisposable implements IAsyncDisposable, IDisposableBaseInternal {
11
- private readonly _disposables: IAsyncDisposable[] = [];
12
-
13
- protected readonly _onDisposeError = new Emitter<Error>();
14
- public readonly onDisposeError: EventRegister<Error> = this._onDisposeError.register;
15
-
16
- protected readonly _onBeforeDispose = new Emitter<void>();
17
- public readonly onBeforeDispose: EventRegister<void> = this._onBeforeDispose.register;
18
-
19
- private _disposed?: Error;
20
-
21
- public get hasDisposed() {
22
- return !!this._disposed;
23
- }
24
-
25
- /**
26
- * @throws if already disposed
27
- */
28
- public assertNotDisposed() {
29
- if (this._disposed) {
30
- throw new DisposedError(this, this._disposed);
31
- }
32
- }
33
-
34
- /**
35
- * register a disposable object
36
- */
37
- public _register<T extends IAsyncDisposable>(d: T): T {
38
- this.assertNotDisposed();
39
- this._disposables.unshift(d);
40
- return d;
41
- }
42
-
43
- public async dispose(): Promise<void> {
44
- if (this._disposed) {
45
- console.warn(new DisposedError(this, this._disposed).message);
46
- return;
47
- }
48
- this._onBeforeDispose.fireNoError();
49
- this._disposed = new Error('disposed');
50
-
51
- this._disposables.push(this._onBeforeDispose);
52
- this._disposables.push(this._onDisposeError);
53
- for (const cb of this._disposables) {
54
- try {
55
- await cb.dispose();
56
- } catch (e) {
57
- this._onDisposeError.fire(convertCatchedError(e));
58
- }
59
- }
60
- }
61
- }
@@ -1,61 +0,0 @@
1
- import { globalSingletonStrong } from '../../platform/globalSingleton';
2
- import { createSymbol } from '../../platform/globalSymbol';
3
- import { IDisposable } from './lifecycle';
4
- import { AsyncDisposable } from './lifecycle.async';
5
-
6
- const symbol = createSymbol('lifecycle', 'application');
7
-
8
- function create() {
9
- return new AsyncDisposable();
10
- }
11
-
12
- /**
13
- * Add object into global disposable store, it will be dispose when call to `disposeGlobal`
14
- */
15
- export function registerGlobalLifecycle(object: IDisposable) {
16
- globalSingletonStrong(symbol, create)._register(object);
17
- }
18
-
19
- /**
20
- * Same as disposeGlobal, but do not throw by duplicate call
21
- */
22
- export function ensureDisposeGlobal() {
23
- const obj = globalSingletonStrong<AsyncDisposable>(symbol);
24
- if (obj && !obj.hasDisposed) {
25
- return Promise.resolve(obj.dispose());
26
- } else {
27
- return Promise.resolve();
28
- }
29
- }
30
-
31
- /**
32
- * Dispose the global disposable store
33
- * this function must be manually called by user, when registerGlobalLifecycle is used
34
- *
35
- * @throws when call twice
36
- */
37
- export function disposeGlobal() {
38
- const obj = globalSingletonStrong<AsyncDisposable>(symbol);
39
- if (obj && obj.hasDisposed) {
40
- throw new Error('global already disposed.');
41
- } else if (obj) {
42
- return Promise.resolve(obj.dispose());
43
- } else {
44
- return Promise.resolve();
45
- }
46
- }
47
-
48
- /**
49
- * Note: sub-class should singleton
50
- * @alpha
51
- */
52
- export abstract class LifecycleObject extends AsyncDisposable {
53
- /** sub-class should shutdown program in this method */
54
- protected abstract done(): void;
55
-
56
- public async dispose(): Promise<void> {
57
- return super.dispose().finally(() => {
58
- this.done();
59
- });
60
- }
61
- }
@@ -1,79 +0,0 @@
1
- import { DisposedError } from './disposedError';
2
- import { Emitter, EventRegister } from '../event/event';
3
- import { IDisposable, IDisposableBaseInternal } from './lifecycle';
4
-
5
- export abstract class DisposableOnce implements IDisposable {
6
- private _disposed?: Error;
7
-
8
- public get hasDisposed() {
9
- return !!this._disposed;
10
- }
11
- public dispose(): void {
12
- if (this._disposed) {
13
- console.warn(new DisposedError(this, this._disposed).message);
14
- return;
15
- }
16
- this._disposed = new Error('disposed');
17
- this._dispose();
18
- }
19
-
20
- protected abstract _dispose(): void;
21
- }
22
-
23
- /**
24
- * Standalone disposable class, can use as instance or base class.
25
- */
26
- export class Disposable implements IDisposable, IDisposableBaseInternal {
27
- private readonly _disposables: IDisposable[] = [];
28
-
29
- protected readonly _onDisposeError = new Emitter<Error>();
30
- public readonly onDisposeError: EventRegister<Error> = this._onDisposeError.register;
31
-
32
- protected readonly _onBeforeDispose = new Emitter<void>();
33
- public readonly onBeforeDispose: EventRegister<void> = this._onBeforeDispose.register;
34
-
35
- private _disposed?: Error;
36
-
37
- public get hasDisposed() {
38
- return !!this._disposed;
39
- }
40
-
41
- /**
42
- * @throws if already disposed
43
- */
44
- public assertNotDisposed() {
45
- if (this._disposed) {
46
- throw new DisposedError(this, this._disposed);
47
- }
48
- }
49
-
50
- public _register<T extends IDisposable>(d: T): T {
51
- this.assertNotDisposed();
52
- this._disposables.unshift(d);
53
- return d;
54
- }
55
-
56
- public dispose(): void {
57
- if (this._disposed) {
58
- console.warn(new DisposedError(this, this._disposed).message);
59
- return;
60
- }
61
- this._onBeforeDispose.fireNoError();
62
- this._disposed = new Error('disposed');
63
-
64
- this._disposables.push(this._onBeforeDispose);
65
- this._disposables.push(this._onDisposeError);
66
- for (const item of this._disposables.values()) {
67
- try {
68
- item.dispose();
69
- } catch (e) {
70
- if (e instanceof Error) {
71
- this._onDisposeError.fire(e);
72
- } else {
73
- console.error('error during dispose, throw:', e);
74
- this._onDisposeError.fire(new Error('' + e));
75
- }
76
- }
77
- }
78
- }
79
- }
@@ -1,28 +0,0 @@
1
- import { EventRegister } from '../event/event';
2
-
3
- /**
4
- * @private
5
- */
6
- export interface IDisposableBaseInternal {
7
- onDisposeError: EventRegister<Error>;
8
- onBeforeDispose: EventRegister<void>;
9
- readonly hasDisposed: boolean;
10
- }
11
-
12
- /** @public */
13
- export interface IDisposable {
14
- dispose(): void;
15
- }
16
-
17
- /** @public */
18
- export interface IAsyncDisposable {
19
- dispose(): void | Promise<void>;
20
- }
21
-
22
- /**
23
- * Convert "dispose function" to disposable object
24
- * @public
25
- */
26
- export function toDisposable(fn: () => void): IDisposable {
27
- return { dispose: fn };
28
- }
@@ -1,63 +0,0 @@
1
- import { IDisposable } from '../dispose/lifecycle';
2
-
3
- export interface EventHandler<T> {
4
- (data: T): void;
5
- }
6
-
7
- export interface EventRegister<T> {
8
- (callback: EventHandler<T>): IDisposable;
9
- }
10
-
11
- export class Emitter<T> implements IDisposable {
12
- private readonly _callbacks: EventHandler<T>[] = [];
13
-
14
- constructor() {
15
- this.handle = this.handle.bind(this);
16
- }
17
-
18
- listenerCount() {
19
- return this._callbacks.length;
20
- }
21
-
22
- fire(data: T) {
23
- for (const callback of this._callbacks) {
24
- callback(data);
25
- }
26
- }
27
-
28
- /**
29
- * Same with `fire`, but do not stop run when catch error
30
- */
31
- public fireNoError(data: T) {
32
- for (const callback of this._callbacks) {
33
- try {
34
- callback(data);
35
- } catch (e) {
36
- console.error('Error ignored: ', e);
37
- }
38
- }
39
- }
40
-
41
- get register(): EventRegister<T> {
42
- return this.handle;
43
- }
44
-
45
- handle(callback: EventHandler<T>): IDisposable {
46
- this._callbacks.unshift(callback);
47
- return {
48
- dispose: () => {
49
- const index = this._callbacks.indexOf(callback);
50
- if (index !== -1) {
51
- this._callbacks.splice(index, 1);
52
- }
53
- },
54
- };
55
- }
56
-
57
- dispose() {
58
- this._callbacks.length = 0;
59
- this.fire = this.handle = () => {
60
- throw new Error('Event is disposed');
61
- };
62
- }
63
- }
@@ -1,16 +0,0 @@
1
- const canceledName = 'Canceled';
2
-
3
- /**
4
- * Error when cancel() is called
5
- * @public
6
- */
7
- export class CanceledError extends Error {
8
- constructor() {
9
- super(canceledName);
10
- }
11
- }
12
-
13
- /** @public */
14
- export function isCanceledError(error: any): boolean {
15
- return error instanceof CanceledError;
16
- }
@@ -1,55 +0,0 @@
1
- import { EventHandler } from '../../event/event';
2
-
3
- import type { CancellationDriver, __CancellationToken } from './source';
4
-
5
- declare const AbortController: any; // TODO
6
- declare type AbortController = any; // TODO
7
-
8
- /** @internal */
9
- export class CancellationDriverBrowser implements CancellationDriver {
10
- private readonly controller: AbortController;
11
- public readonly token: __CancellationToken;
12
- private readonly disposeList: (() => void)[] = [];
13
-
14
- constructor() {
15
- this.controller = new AbortController();
16
-
17
- const signal = this.controller.signal;
18
- signal.addEventListener('abort', () => {
19
- token.isCancellationRequested = true;
20
- });
21
-
22
- const disposeList = this.disposeList;
23
- const token = {
24
- isCancellationRequested: false,
25
- onCancellationRequested(listener: EventHandler<void>) {
26
- const callback = () => listener();
27
-
28
- signal.addEventListener('abort', callback);
29
-
30
- const dispose = () => signal.removeEventListener('abort', callback);
31
- disposeList.push(dispose);
32
-
33
- return { dispose };
34
- },
35
- };
36
-
37
- this.token = token;
38
- }
39
-
40
- cancel() {
41
- if (this.token.isCancellationRequested) {
42
- console.warn('[CancellationTokenSource] is already canceled.');
43
- } else {
44
- this.token.isCancellationRequested = true;
45
- this.controller.abort();
46
- }
47
- }
48
-
49
- dispose() {
50
- for (const removeListener of this.disposeList) removeListener();
51
- if (!this.token.isCancellationRequested) {
52
- this.controller.abort();
53
- }
54
- }
55
- }
@@ -1,43 +0,0 @@
1
- import { IDisposable } from '../../dispose/lifecycle';
2
- import { Emitter, EventHandler } from '../../event/event';
3
-
4
- import type { CancellationDriver, __CancellationToken } from './source';
5
-
6
- /** @internal */
7
- export class CancellationDriverCommon implements CancellationDriver {
8
- private readonly emitter: Emitter<void>;
9
- public readonly token: __CancellationToken;
10
- private readonly disposeList: IDisposable[] = [];
11
-
12
- constructor() {
13
- const emitter = new Emitter<void>();
14
- this.emitter = emitter;
15
-
16
- const disposeList = this.disposeList;
17
- const token = {
18
- isCancellationRequested: false,
19
- onCancellationRequested(callback: EventHandler<void>) {
20
- const ret = emitter.handle(callback);
21
- disposeList.push(ret);
22
- return ret;
23
- },
24
- };
25
- this.token = token;
26
- }
27
-
28
- cancel() {
29
- if (this.token.isCancellationRequested) {
30
- console.warn('[CancellationTokenSource] is already canceled.');
31
- } else {
32
- this.token.isCancellationRequested = true;
33
- this.emitter.fire();
34
- }
35
- }
36
-
37
- dispose() {
38
- for (const listen of this.disposeList) listen.dispose();
39
- if (!this.token.isCancellationRequested) {
40
- this.cancel();
41
- }
42
- }
43
- }
@@ -1,48 +0,0 @@
1
- import { globalObject } from '../../../platform/globalObject';
2
- import { IDisposable } from '../../dispose/lifecycle';
3
- import { DisposableOnce } from '../../dispose/lifecycle.sync';
4
- import { EventHandler } from '../../event/event';
5
- import { CancellationDriverBrowser } from './driver.browser';
6
- import { CancellationDriverCommon } from './driver.common';
7
-
8
- /** @public */
9
- export interface CancellationToken {
10
- readonly isCancellationRequested: boolean;
11
- onCancellationRequested(callback: EventHandler<void>): IDisposable;
12
- }
13
-
14
- /** @internal */
15
- export interface __CancellationToken {
16
- isCancellationRequested: boolean;
17
- onCancellationRequested(callback: EventHandler<void>): IDisposable;
18
- }
19
-
20
- /** @internal */
21
- export interface CancellationDriver extends IDisposable {
22
- readonly token: CancellationToken;
23
- cancel(): void;
24
- }
25
-
26
- /** @public */
27
- export class CancellationTokenSource extends DisposableOnce implements IDisposable {
28
- private readonly driver: CancellationDriver;
29
- public readonly token: CancellationToken;
30
-
31
- constructor() {
32
- super();
33
- if ('AbortController' in globalObject) {
34
- this.driver = new CancellationDriverBrowser();
35
- } else {
36
- this.driver = new CancellationDriverCommon();
37
- }
38
- this.token = this.driver.token;
39
- }
40
-
41
- cancel(): void {
42
- this.driver.cancel();
43
- }
44
-
45
- _dispose(): void {
46
- this.driver.dispose();
47
- }
48
- }
@@ -1,102 +0,0 @@
1
- import { CanceledError } from './cancel';
2
-
3
- export type ValueCallback<T = any> = (value: T | Promise<T>) => void;
4
- export type ProgressCallback<T = any> = (value: T) => void;
5
-
6
- export interface IProgressHolder<T, PT> {
7
- progress(fn: ProgressCallback<PT>): Promise<T> & IProgressHolder<T, PT>;
8
- }
9
-
10
- /**
11
- * a promise can resolve or reject later
12
- * @public
13
- */
14
- export class DeferredPromise<T, PT = any> {
15
- public readonly p: Promise<T> & IProgressHolder<T, PT>;
16
- private declare _completeCallback: ValueCallback<T>;
17
- private declare _errorCallback: (err: any) => void;
18
- private _state: boolean | null = null;
19
- private _progressList?: ProgressCallback<PT>[] = [];
20
-
21
- constructor() {
22
- this.p = Object.assign(
23
- new Promise<any>((c, e) => {
24
- this._completeCallback = c;
25
- this._errorCallback = e;
26
- }),
27
- {
28
- progress: (fn: ProgressCallback<PT>) => {
29
- this.progress(fn);
30
- return this.p;
31
- },
32
- }
33
- );
34
- this.p.finally(() => {
35
- delete this._progressList;
36
- });
37
- }
38
-
39
- notify(progress: PT): this {
40
- for (const cb of this._progressList!) {
41
- cb(progress);
42
- }
43
- return this;
44
- }
45
-
46
- progress(fn: ProgressCallback<PT>): void {
47
- this._progressList!.push(fn);
48
- }
49
-
50
- get completed(): boolean {
51
- return typeof this._state === 'boolean';
52
- }
53
-
54
- get resolved(): boolean {
55
- return this._state === true;
56
- }
57
-
58
- get rejected(): boolean {
59
- return this._state === false;
60
- }
61
-
62
- /**
63
- * resolve the promise
64
- */
65
- public complete(value: T) {
66
- this._state = true;
67
- this._completeCallback(value);
68
- }
69
-
70
- /**
71
- * reject the promise
72
- */
73
- public error(err: any) {
74
- this._state = false;
75
- this._errorCallback(err);
76
- }
77
-
78
- /**
79
- * reject the promise with CancelError
80
- */
81
- public cancel() {
82
- this._state = false;
83
- this._errorCallback(new CanceledError());
84
- }
85
-
86
- /**
87
- * Convert promise into deferred
88
- * returns a DeferredPromise, resolve when prev resolve, reject when prev reject
89
- */
90
- static wrap(prev: Promise<any>) {
91
- const p = new DeferredPromise();
92
- prev.then(
93
- (d) => {
94
- p.complete(d);
95
- },
96
- (e) => {
97
- p.error(e);
98
- }
99
- );
100
- return p;
101
- }
102
- }