diff --git a/src/PromiseUtils.js b/src/PromiseUtils.js new file mode 100644 index 00000000..d2cc2a4b --- /dev/null +++ b/src/PromiseUtils.js @@ -0,0 +1,15 @@ +import isPromise from 'is-promise'; + +const UNRESOLVED = {}; + +export function checkResolved(value) { + if (!isPromise(value)) { + return value; + } + + return Promise.race([value, UNRESOLVED]); +} + +export function isResolved(value) { + return value !== UNRESOLVED; +} diff --git a/src/index.js b/src/index.js index 7dab254c..d1029dfa 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,7 @@ export HttpError from './HttpError'; export Link from './Link'; export Matcher from './Matcher'; export matchReducer from './matchReducer'; +export PromiseUtils from './PromiseUtils'; export Redirect from './Redirect'; export RedirectException from './RedirectException'; export resolveElements from './resolveElements'; diff --git a/src/resolveElements.js b/src/resolveElements.js index b448b145..4e42090a 100644 --- a/src/resolveElements.js +++ b/src/resolveElements.js @@ -2,19 +2,7 @@ import isPromise from 'is-promise'; import React from 'react'; import warning from 'warning'; -const UNRESOLVED = {}; - -function checkResolved(value) { - if (!isPromise(value)) { - return value; - } - - return Promise.race([value, UNRESOLVED]); -} - -function isResolved(value) { - return value !== UNRESOLVED; -} +import { checkResolved, isResolved } from './PromiseUtils'; function createElements(match, Components, matchData) { const { routes, routeParams: matchRouteParams } = match;