diff --git a/.eslintrc.js b/.eslintrc.js index ad8be3c..ddca138 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -59,6 +59,8 @@ module.exports = { }, ], '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/consistent-type-exports': 'error', }, }, diff --git a/lib/router/index.ts b/lib/router/index.ts index 406824e..37c359b 100644 --- a/lib/router/index.ts +++ b/lib/router/index.ts @@ -1,17 +1,12 @@ export { default } from './router'; +export type { PublicTransition as Transition } from './transition'; export { default as InternalTransition, - PublicTransition as Transition, logAbort, STATE_SYMBOL, PARAMS_SYMBOL, QUERY_PARAMS_SYMBOL, } from './transition'; export { default as TransitionState, TransitionError } from './transition-state'; -export { - default as InternalRouteInfo, - ModelFor, - Route, - RouteInfo, - RouteInfoWithAttributes, -} from './route-info'; +export type { ModelFor, Route, RouteInfo, RouteInfoWithAttributes } from './route-info'; +export { default as InternalRouteInfo } from './route-info'; diff --git a/lib/router/route-info.ts b/lib/router/route-info.ts index e65f71e..78b2eec 100644 --- a/lib/router/route-info.ts +++ b/lib/router/route-info.ts @@ -1,13 +1,10 @@ import { Promise } from 'rsvp'; -import { Dict, Option } from './core'; -import Router, { SerializerFunc } from './router'; -import InternalTransition, { - isTransition, - PARAMS_SYMBOL, - prepareResult, - PublicTransition as Transition, - QUERY_PARAMS_SYMBOL, -} from './transition'; +import type { Dict, Option } from './core'; +import type { SerializerFunc } from './router'; +import type Router from './router'; +import type { PublicTransition as Transition } from './transition'; +import type InternalTransition from './transition'; +import { isTransition, PARAMS_SYMBOL, prepareResult, QUERY_PARAMS_SYMBOL } from './transition'; import { isParam, isPromise, merge } from './utils'; import { throwIfAborted } from './transition-aborted-error'; diff --git a/lib/router/router.ts b/lib/router/router.ts index cd73f4c..065b8b1 100644 --- a/lib/router/router.ts +++ b/lib/router/router.ts @@ -1,35 +1,20 @@ -import RouteRecognizer, { MatchCallback, Params, QueryParams } from 'route-recognizer'; +import type { MatchCallback, Params, QueryParams } from 'route-recognizer'; +import RouteRecognizer from 'route-recognizer'; import { Promise } from 'rsvp'; -import { Dict, Maybe, Option } from './core'; -import InternalRouteInfo, { - ModelFor, - Route, - RouteInfo, - RouteInfoWithAttributes, - toReadOnlyRouteInfo, -} from './route-info'; -import InternalTransition, { - logAbort, - OpaqueTransition, - PublicTransition as Transition, - QUERY_PARAMS_SYMBOL, - STATE_SYMBOL, -} from './transition'; +import type { Dict, Maybe, Option } from './core'; +import type { ModelFor, Route, RouteInfo, RouteInfoWithAttributes } from './route-info'; +import type InternalRouteInfo from './route-info'; +import { toReadOnlyRouteInfo } from './route-info'; +import type { OpaqueTransition, PublicTransition as Transition } from './transition'; +import InternalTransition, { logAbort, QUERY_PARAMS_SYMBOL, STATE_SYMBOL } from './transition'; import { throwIfAborted, isTransitionAborted } from './transition-aborted-error'; -import { TransitionIntent } from './transition-intent'; +import type { TransitionIntent } from './transition-intent'; import NamedTransitionIntent from './transition-intent/named-transition-intent'; import URLTransitionIntent from './transition-intent/url-transition-intent'; -import TransitionState, { TransitionError } from './transition-state'; -import { - ChangeList, - extractQueryParams, - forEach, - getChangelist, - log, - merge, - ModelsAndQueryParams, - promiseLabel, -} from './utils'; +import type { TransitionError } from './transition-state'; +import TransitionState from './transition-state'; +import type { ChangeList, ModelsAndQueryParams } from './utils'; +import { extractQueryParams, forEach, getChangelist, log, merge, promiseLabel } from './utils'; export interface SerializerFunc { (model: T, params: string[]): Dict; diff --git a/lib/router/transition-intent.ts b/lib/router/transition-intent.ts index 6d1fe6b..ec37b9f 100644 --- a/lib/router/transition-intent.ts +++ b/lib/router/transition-intent.ts @@ -1,6 +1,6 @@ -import { Route } from './route-info'; -import Router from './router'; -import TransitionState from './transition-state'; +import type { Route } from './route-info'; +import type Router from './router'; +import type TransitionState from './transition-state'; export type OpaqueIntent = TransitionIntent; diff --git a/lib/router/transition-intent/named-transition-intent.ts b/lib/router/transition-intent/named-transition-intent.ts index 18b3001..24b7754 100644 --- a/lib/router/transition-intent/named-transition-intent.ts +++ b/lib/router/transition-intent/named-transition-intent.ts @@ -1,12 +1,9 @@ -import { Dict } from '../core'; -import InternalRouteInfo, { - ModelFor, - ResolvedRouteInfo, - Route, - UnresolvedRouteInfoByObject, - UnresolvedRouteInfoByParam, -} from '../route-info'; -import Router, { ParsedHandler } from '../router'; +import type { Dict } from '../core'; +import type { ModelFor, ResolvedRouteInfo, Route } from '../route-info'; +import type InternalRouteInfo from '../route-info'; +import { UnresolvedRouteInfoByObject, UnresolvedRouteInfoByParam } from '../route-info'; +import type { ParsedHandler } from '../router'; +import type Router from '../router'; import { TransitionIntent } from '../transition-intent'; import TransitionState from '../transition-state'; import { isParam, merge } from '../utils'; diff --git a/lib/router/transition-intent/url-transition-intent.ts b/lib/router/transition-intent/url-transition-intent.ts index 05d4561..7e57939 100644 --- a/lib/router/transition-intent/url-transition-intent.ts +++ b/lib/router/transition-intent/url-transition-intent.ts @@ -1,5 +1,6 @@ -import { Route, UnresolvedRouteInfoByParam } from '../route-info'; -import Router from '../router'; +import type { Route } from '../route-info'; +import { UnresolvedRouteInfoByParam } from '../route-info'; +import type Router from '../router'; import { TransitionIntent } from '../transition-intent'; import TransitionState from '../transition-state'; import UnrecognizedURLError from '../unrecognized-url-error'; diff --git a/lib/router/transition-state.ts b/lib/router/transition-state.ts index b41f65c..c25a893 100644 --- a/lib/router/transition-state.ts +++ b/lib/router/transition-state.ts @@ -1,7 +1,8 @@ import { Promise } from 'rsvp'; -import { Dict } from './core'; -import InternalRouteInfo, { Route, ResolvedRouteInfo } from './route-info'; -import Transition from './transition'; +import type { Dict } from './core'; +import type { Route, ResolvedRouteInfo } from './route-info'; +import type InternalRouteInfo from './route-info'; +import type Transition from './transition'; import { forEach, promiseLabel } from './utils'; import { throwIfAborted } from './transition-aborted-error'; diff --git a/lib/router/transition.ts b/lib/router/transition.ts index 88be275..a163be8 100644 --- a/lib/router/transition.ts +++ b/lib/router/transition.ts @@ -1,15 +1,13 @@ import { Promise } from 'rsvp'; -import { Dict, Maybe, Option } from './core'; -import InternalRouteInfo, { - ModelFor, - Route, - RouteInfo, - RouteInfoWithAttributes, -} from './route-info'; -import Router from './router'; -import { TransitionAbortedError, buildTransitionAborted } from './transition-aborted-error'; -import { OpaqueIntent } from './transition-intent'; -import TransitionState, { TransitionError } from './transition-state'; +import type { Dict, Maybe, Option } from './core'; +import type { ModelFor, Route, RouteInfo, RouteInfoWithAttributes } from './route-info'; +import type InternalRouteInfo from './route-info'; +import type Router from './router'; +import type { TransitionAbortedError } from './transition-aborted-error'; +import { buildTransitionAborted } from './transition-aborted-error'; +import type { OpaqueIntent } from './transition-intent'; +import type { TransitionError } from './transition-state'; +import type TransitionState from './transition-state'; import { log, promiseLabel } from './utils'; import { DEBUG } from '@glimmer/env'; diff --git a/lib/router/utils.ts b/lib/router/utils.ts index dd1ac3e..0555bc3 100644 --- a/lib/router/utils.ts +++ b/lib/router/utils.ts @@ -1,7 +1,7 @@ -import { QueryParams } from 'route-recognizer'; -import { Promise } from 'rsvp'; -import { Dict } from './core'; -import Router from './router'; +import type { QueryParams } from 'route-recognizer'; +import type { Promise } from 'rsvp'; +import type { Dict } from './core'; +import type Router from './router'; export const slice = Array.prototype.slice; const hasOwnProperty = Object.prototype.hasOwnProperty; diff --git a/tests/async_get_handler_test.ts b/tests/async_get_handler_test.ts index 2b435d7..e4d233a 100644 --- a/tests/async_get_handler_test.ts +++ b/tests/async_get_handler_test.ts @@ -1,5 +1,5 @@ -import { Route } from 'router'; -import { Dict } from 'router/core'; +import type { Route } from 'router'; +import type { Dict } from 'router/core'; import { Promise } from 'rsvp'; import { createHandler, TestRouter } from './test_helpers'; diff --git a/tests/query_params_test.ts b/tests/query_params_test.ts index c80b5ba..69219c8 100644 --- a/tests/query_params_test.ts +++ b/tests/query_params_test.ts @@ -1,7 +1,8 @@ -import { MatchCallback } from 'route-recognizer'; -import Router, { Route, Transition } from 'router'; -import { Dict, Maybe } from 'router/core'; -import RouteInfo from 'router/route-info'; +import type { MatchCallback } from 'route-recognizer'; +import type { Route, Transition } from 'router'; +import type Router from 'router'; +import type { Dict, Maybe } from 'router/core'; +import type RouteInfo from 'router/route-info'; import { Promise } from 'rsvp'; import { createHandler, diff --git a/tests/route_info_test.ts b/tests/route_info_test.ts index 05b8e68..ca8cbf4 100644 --- a/tests/route_info_test.ts +++ b/tests/route_info_test.ts @@ -1,9 +1,8 @@ -import { Transition } from 'router'; -import { Dict } from 'router/core'; +import type { Transition } from 'router'; +import type { Dict } from 'router/core'; +import type { IModel, Route } from 'router/route-info'; import { - IModel, ResolvedRouteInfo, - Route, toReadOnlyRouteInfo, UnresolvedRouteInfoByObject, UnresolvedRouteInfoByParam, diff --git a/tests/router_test.ts b/tests/router_test.ts index bd3df4b..80f6eac 100644 --- a/tests/router_test.ts +++ b/tests/router_test.ts @@ -1,14 +1,16 @@ -import { MatchCallback } from 'route-recognizer'; -import Router, { Route, Transition } from 'router'; -import { Dict, Maybe } from 'router/core'; -import RouteInfo, { +import type { MatchCallback } from 'route-recognizer'; +import type { Route, Transition } from 'router'; +import type Router from 'router'; +import type { Dict, Maybe } from 'router/core'; +import type { IModel, RouteInfo as PublicRouteInfo, RouteInfoWithAttributes, } from 'router/route-info'; -import { SerializerFunc } from 'router/router'; +import type RouteInfo from 'router/route-info'; +import type { SerializerFunc } from 'router/router'; import { logAbort, PARAMS_SYMBOL, QUERY_PARAMS_SYMBOL, STATE_SYMBOL } from 'router/transition'; -import { TransitionError } from 'router/transition-state'; +import type { TransitionError } from 'router/transition-state'; import { Promise, reject } from 'rsvp'; import { assertAbort, diff --git a/tests/test_helpers.ts b/tests/test_helpers.ts index c28a757..f2cfff9 100644 --- a/tests/test_helpers.ts +++ b/tests/test_helpers.ts @@ -1,10 +1,13 @@ import Backburner from 'backburner'; -import Router, { Route, Transition } from 'router'; -import { Dict } from 'router/core'; -import RouteInfo, { IModel, UnresolvedRouteInfoByParam } from 'router/route-info'; -import { logAbort, PublicTransition } from 'router/transition'; -import { TransitionError } from 'router/transition-state'; -import { UnrecognizedURLError } from 'router/unrecognized-url-error'; +import type { Route, Transition } from 'router'; +import Router from 'router'; +import type { Dict } from 'router/core'; +import type { IModel } from 'router/route-info'; +import RouteInfo, { UnresolvedRouteInfoByParam } from 'router/route-info'; +import type { PublicTransition } from 'router/transition'; +import { logAbort } from 'router/transition'; +import type { TransitionError } from 'router/transition-state'; +import type { UnrecognizedURLError } from 'router/unrecognized-url-error'; import { configure, resolve } from 'rsvp'; import { isTransitionAborted } from 'router/transition-aborted-error'; diff --git a/tests/transition_intent_test.ts b/tests/transition_intent_test.ts index c362adf..6d267d0 100644 --- a/tests/transition_intent_test.ts +++ b/tests/transition_intent_test.ts @@ -3,9 +3,11 @@ import URLTransitionIntent from 'router/transition-intent/url-transition-intent' import TransitionState from 'router/transition-state'; import { createHandler, module, test, TestRouter } from './test_helpers'; -import Router, { Route } from 'router'; -import { Dict } from 'router/core'; -import InternalRouteInfo, { +import type { Route } from 'router'; +import type Router from 'router'; +import type { Dict } from 'router/core'; +import type InternalRouteInfo from 'router/route-info'; +import { ResolvedRouteInfo, UnresolvedRouteInfoByObject, UnresolvedRouteInfoByParam, diff --git a/tests/transition_state_test.ts b/tests/transition_state_test.ts index a1a93fe..4e1b816 100644 --- a/tests/transition_state_test.ts +++ b/tests/transition_state_test.ts @@ -1,7 +1,9 @@ -import { Transition } from 'router'; -import { Dict } from 'router/core'; -import { Route, UnresolvedRouteInfoByObject, UnresolvedRouteInfoByParam } from 'router/route-info'; -import TransitionState, { TransitionError } from 'router/transition-state'; +import type { Transition } from 'router'; +import type { Dict } from 'router/core'; +import type { Route } from 'router/route-info'; +import { UnresolvedRouteInfoByObject, UnresolvedRouteInfoByParam } from 'router/route-info'; +import type { TransitionError } from 'router/transition-state'; +import TransitionState from 'router/transition-state'; import { Promise, resolve } from 'rsvp'; import { createHandler,