refactor(facade): move isPromise to core private (#10573)
This commit is contained in:
parent
14ee75924b
commit
df4254ae89
|
@ -8,7 +8,8 @@
|
||||||
|
|
||||||
import {ChangeDetectorRef, OnDestroy, Pipe, WrappedValue} from '@angular/core';
|
import {ChangeDetectorRef, OnDestroy, Pipe, WrappedValue} from '@angular/core';
|
||||||
import {EventEmitter, Observable} from '../facade/async';
|
import {EventEmitter, Observable} from '../facade/async';
|
||||||
import {isBlank, isPresent, isPromise} from '../facade/lang';
|
import {isBlank, isPresent} from '../facade/lang';
|
||||||
|
import {isPromise} from '../private_import_core';
|
||||||
import {InvalidPipeArgumentError} from './invalid_pipe_argument_error';
|
import {InvalidPipeArgumentError} from './invalid_pipe_argument_error';
|
||||||
|
|
||||||
interface SubscriptionStrategy {
|
interface SubscriptionStrategy {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {__core_private__ as r} from '@angular/core';
|
||||||
|
|
||||||
|
export const isPromise: typeof r.isPromise = r.isPromise;
|
|
@ -6,7 +6,7 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {isPromise} from '../src/facade/lang';
|
import {isPromise} from '../src/util/lang';
|
||||||
|
|
||||||
import {Inject, Injectable, OpaqueToken, Optional} from './di';
|
import {Inject, Injectable, OpaqueToken, Optional} from './di';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
import {ErrorHandler} from '../src/error_handler';
|
import {ErrorHandler} from '../src/error_handler';
|
||||||
import {ListWrapper} from '../src/facade/collection';
|
import {ListWrapper} from '../src/facade/collection';
|
||||||
import {unimplemented} from '../src/facade/errors';
|
import {unimplemented} from '../src/facade/errors';
|
||||||
import {isBlank, isPresent, isPromise, stringify} from '../src/facade/lang';
|
import {isBlank, isPresent, stringify} from '../src/facade/lang';
|
||||||
|
import {isPromise} from '../src/util/lang';
|
||||||
|
|
||||||
import {ApplicationInitStatus} from './application_init';
|
import {ApplicationInitStatus} from './application_init';
|
||||||
import {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens';
|
import {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens';
|
||||||
|
|
|
@ -39,6 +39,7 @@ import * as reflector_reader from './reflection/reflector_reader';
|
||||||
import * as reflection_types from './reflection/types';
|
import * as reflection_types from './reflection/types';
|
||||||
import * as api from './render/api';
|
import * as api from './render/api';
|
||||||
import * as decorators from './util/decorators';
|
import * as decorators from './util/decorators';
|
||||||
|
import {isPromise} from './util/lang';
|
||||||
|
|
||||||
export var __core_private__: {
|
export var __core_private__: {
|
||||||
isDefaultChangeDetectionStrategy: typeof constants.isDefaultChangeDetectionStrategy,
|
isDefaultChangeDetectionStrategy: typeof constants.isDefaultChangeDetectionStrategy,
|
||||||
|
@ -118,9 +119,11 @@ export var __core_private__: {
|
||||||
ANY_STATE: typeof ANY_STATE_,
|
ANY_STATE: typeof ANY_STATE_,
|
||||||
DEFAULT_STATE: typeof DEFAULT_STATE_,
|
DEFAULT_STATE: typeof DEFAULT_STATE_,
|
||||||
EMPTY_STATE: typeof EMPTY_STATE_,
|
EMPTY_STATE: typeof EMPTY_STATE_,
|
||||||
FILL_STYLE_FLAG: typeof FILL_STYLE_FLAG_, _ComponentStillLoadingError?: ComponentStillLoadingError
|
FILL_STYLE_FLAG: typeof FILL_STYLE_FLAG_,
|
||||||
ComponentStillLoadingError: typeof ComponentStillLoadingError
|
_ComponentStillLoadingError?: ComponentStillLoadingError,
|
||||||
} = {
|
ComponentStillLoadingError: typeof ComponentStillLoadingError,
|
||||||
|
isPromise: typeof isPromise
|
||||||
|
} = {
|
||||||
isDefaultChangeDetectionStrategy: constants.isDefaultChangeDetectionStrategy,
|
isDefaultChangeDetectionStrategy: constants.isDefaultChangeDetectionStrategy,
|
||||||
ChangeDetectorStatus: constants.ChangeDetectorStatus,
|
ChangeDetectorStatus: constants.ChangeDetectorStatus,
|
||||||
CHANGE_DETECTION_STRATEGY_VALUES: constants.CHANGE_DETECTION_STRATEGY_VALUES,
|
CHANGE_DETECTION_STRATEGY_VALUES: constants.CHANGE_DETECTION_STRATEGY_VALUES,
|
||||||
|
@ -185,5 +188,6 @@ export var __core_private__: {
|
||||||
DEFAULT_STATE: DEFAULT_STATE_,
|
DEFAULT_STATE: DEFAULT_STATE_,
|
||||||
EMPTY_STATE: EMPTY_STATE_,
|
EMPTY_STATE: EMPTY_STATE_,
|
||||||
FILL_STYLE_FLAG: FILL_STYLE_FLAG_,
|
FILL_STYLE_FLAG: FILL_STYLE_FLAG_,
|
||||||
ComponentStillLoadingError: ComponentStillLoadingError
|
ComponentStillLoadingError: ComponentStillLoadingError,
|
||||||
|
isPromise: isPromise
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function isPromise(obj: any): obj is Promise<any> {
|
||||||
|
// allow any Promise/A+ compliant thenable.
|
||||||
|
// It's up to the caller to ensure that obj.then conforms to the spec
|
||||||
|
return !!obj && typeof obj.then === 'function';
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
import {isPromise} from '@angular/core/src/util/lang';
|
||||||
|
|
||||||
|
export function main() {
|
||||||
|
describe('isPromise', () => {
|
||||||
|
it('should be true for native Promises',
|
||||||
|
() => expect(isPromise(Promise.resolve(true))).toEqual(true));
|
||||||
|
|
||||||
|
it('should be true for thenables', () => expect(isPromise({then: () => {}})).toEqual(true));
|
||||||
|
|
||||||
|
it('should be false if "then" is not a function',
|
||||||
|
() => expect(isPromise({then: 0})).toEqual(false));
|
||||||
|
|
||||||
|
it('should be false if the argument has no "then" function',
|
||||||
|
() => expect(isPromise({})).toEqual(false));
|
||||||
|
|
||||||
|
it('should be false if the argument is undefined or null', () => {
|
||||||
|
expect(isPromise(undefined)).toEqual(false);
|
||||||
|
expect(isPromise(null)).toEqual(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {__core_private__ as r} from '@angular/core';
|
||||||
|
|
||||||
|
export const isPromise: typeof r.isPromise = r.isPromise;
|
|
@ -8,7 +8,8 @@
|
||||||
|
|
||||||
import {AsyncTestCompleter} from './async_test_completer';
|
import {AsyncTestCompleter} from './async_test_completer';
|
||||||
import {StringMapWrapper} from './facade/collection';
|
import {StringMapWrapper} from './facade/collection';
|
||||||
import {Math, global, isPromise} from './facade/lang';
|
import {Math, global} from './facade/lang';
|
||||||
|
import {isPromise} from './private_import_core';
|
||||||
import {TestBed, getTestBed, inject} from './test_bed';
|
import {TestBed, getTestBed, inject} from './test_bed';
|
||||||
|
|
||||||
export {AsyncTestCompleter} from './async_test_completer';
|
export {AsyncTestCompleter} from './async_test_completer';
|
||||||
|
|
|
@ -113,12 +113,6 @@ export function isStrictStringMap(obj: any): boolean {
|
||||||
return isStringMap(obj) && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;
|
return isStringMap(obj) && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isPromise(obj: any): boolean {
|
|
||||||
// allow any Promise/A+ compliant thenable.
|
|
||||||
// It's up to the caller to ensure that obj.then conforms to the spec
|
|
||||||
return isPresent(obj) && isFunction(obj.then);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isArray(obj: any): boolean {
|
export function isArray(obj: any): boolean {
|
||||||
return Array.isArray(obj);
|
return Array.isArray(obj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {NumberWrapper, StringWrapper, escapeRegExp, hasConstructor, isPresent, isPromise, resolveEnumToken} from '../src/lang';
|
import {NumberWrapper, StringWrapper, escapeRegExp, hasConstructor, isPresent, resolveEnumToken} from '../src/lang';
|
||||||
|
|
||||||
enum UsefulEnum {
|
enum UsefulEnum {
|
||||||
MyToken,
|
MyToken,
|
||||||
|
@ -153,22 +153,4 @@ export function main() {
|
||||||
() => { expect(hasConstructor(new MySubclass(), MySuperclass)).toEqual(false); });
|
() => { expect(hasConstructor(new MySubclass(), MySuperclass)).toEqual(false); });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe('isPromise', () => {
|
|
||||||
it('should be true for native Promises',
|
|
||||||
() => expect(isPromise(Promise.resolve(true))).toEqual(true));
|
|
||||||
|
|
||||||
it('should be true for thenables',
|
|
||||||
() => expect(isPromise({then: function() {}})).toEqual(true));
|
|
||||||
|
|
||||||
it('should be false if "then" is not a function',
|
|
||||||
() => expect(isPromise({then: 0})).toEqual(false));
|
|
||||||
|
|
||||||
it('should be false if the argument has no "then" function',
|
|
||||||
() => expect(isPromise({})).toEqual(false));
|
|
||||||
|
|
||||||
it('should be false if the argument is undefined or null', () => {
|
|
||||||
expect(isPromise(undefined)).toEqual(false);
|
|
||||||
expect(isPromise(null)).toEqual(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,8 @@ import {composeAsyncValidators, composeValidators} from './directives/shared';
|
||||||
import {AsyncValidatorFn, ValidatorFn} from './directives/validators';
|
import {AsyncValidatorFn, ValidatorFn} from './directives/validators';
|
||||||
import {EventEmitter, Observable} from './facade/async';
|
import {EventEmitter, Observable} from './facade/async';
|
||||||
import {ListWrapper, StringMapWrapper} from './facade/collection';
|
import {ListWrapper, StringMapWrapper} from './facade/collection';
|
||||||
import {isBlank, isPresent, isPromise, isStringMap, normalizeBool} from './facade/lang';
|
import {isBlank, isPresent, isStringMap, normalizeBool} from './facade/lang';
|
||||||
|
import {isPromise} from './private_import_core';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {__core_private__ as r} from '@angular/core';
|
||||||
|
|
||||||
|
export const isPromise: typeof r.isPromise = r.isPromise;
|
|
@ -11,8 +11,10 @@ import {toPromise} from 'rxjs/operator/toPromise';
|
||||||
|
|
||||||
import {AsyncValidatorFn, ValidatorFn} from './directives/validators';
|
import {AsyncValidatorFn, ValidatorFn} from './directives/validators';
|
||||||
import {StringMapWrapper} from './facade/collection';
|
import {StringMapWrapper} from './facade/collection';
|
||||||
import {isBlank, isPresent, isPromise, isString} from './facade/lang';
|
import {isBlank, isPresent, isString} from './facade/lang';
|
||||||
import {AbstractControl} from './model';
|
import {AbstractControl} from './model';
|
||||||
|
import {isPromise} from './private_import_core';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue