diff --git a/package.json b/package.json index 3a8c55ef1..682e75e40 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,10 @@ "require": "./dist/runtime.js", "import": "./dist/runtime.mjs" }, + "./types": { + "require": "./dist/types.js", + "import": "./dist/types.mjs" + }, "./*": "./*" }, "files": [ diff --git a/playground/typed-router.d.ts b/playground/typed-router.d.ts index dbd0013c5..ad60fd4db 100644 --- a/playground/typed-router.d.ts +++ b/playground/typed-router.d.ts @@ -31,7 +31,7 @@ import type { // data fetching _DataLoader, _DefineLoaderOptions, -} from 'unplugin-vue-router' +} from 'unplugin-vue-router/types' declare module 'vue-router/auto/routes' { export interface RouteNamedMap { @@ -127,7 +127,7 @@ declare module 'vue-router/auto' { export function onBeforeRouteUpdate(guard: NavigationGuard): void export const RouterLink: RouterLinkTyped - + // Experimental Data Fetching export function defineLoader< diff --git a/src/codegen/generateDTS.ts b/src/codegen/generateDTS.ts index b87cce4ef..d65559965 100644 --- a/src/codegen/generateDTS.ts +++ b/src/codegen/generateDTS.ts @@ -40,7 +40,7 @@ import type { // data fetching _DataLoader, _DefineLoaderOptions, -} from 'unplugin-vue-router' +} from 'unplugin-vue-router/types' declare module '${routesModule}' { ${routeNamedMap} @@ -100,7 +100,7 @@ declare module '${vueRouterModule}' { export function onBeforeRouteUpdate(guard: NavigationGuard): void export const RouterLink: RouterLinkTyped - + // Experimental Data Fetching export function defineLoader< diff --git a/src/index.ts b/src/index.ts index fc1ced099..ad4c512c0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,9 @@ import { createViteContext } from './core/vite' import { createFilter } from '@rollup/pluginutils' import { join } from 'pathe' -export { Options, DEFAULT_OPTIONS } +export * from './types' + +export { DEFAULT_OPTIONS } export default createUnplugin((opt = {}, meta) => { const options = resolveOptions(opt) @@ -135,55 +137,11 @@ export default createUnplugin((opt = {}, meta) => { export { createRoutesContext } export { getFileBasedRouteName, getPascalCaseRouteName } from './core/utils' -export type { - _RouteMapGeneric, - RouteRecordInfo, -} from './codegen/generateRouteMap' -export type { - // TODO: mark all of these as internals since the dynamically exposed versions are fully typed, these are just helpers - // to generate the convenient types - RouteLocationAsRelativeTyped, - RouteLocationAsRelativeTypedList, - RouteLocationAsPathTyped, - RouteLocationAsPathTypedList, - RouteLocationAsString, - RouteLocationTyped, - RouteLocationTypedList, - RouteLocationResolvedTyped, - RouteLocationResolvedTypedList, - RouteLocationNormalizedTyped, - RouteLocationNormalizedTypedList, - RouteLocationNormalizedLoadedTyped, - RouteLocationNormalizedLoadedTypedList, -} from './typeExtensions/routeLocation' -export type { NavigationGuard } from './typeExtensions/navigationGuards' -export type { _RouterTyped } from './typeExtensions/router' -export type { - RouterLinkTyped, - UseLinkFnTyped, - _UseLinkReturnTyped, -} from './typeExtensions/RouterLink' -export type { - ParamValue, - ParamValueOneOrMore, - ParamValueZeroOrMore, - ParamValueZeroOrOne, -} from './codegen/generateRouteParams' - -export { TreeNode, createPrefixTree } from './core/tree' -export { - createTreeNodeValue, - TreeNodeValueParam, - TreeNodeValueStatic, -} from './core/treeNodeValue' +// Route Tree and edition +export { createPrefixTree } from './core/tree' +export { createTreeNodeValue } from './core/treeNodeValue' export { EditableTreeNode } from './core/extendRoutes' -// expose for generated type extensions -export type { - DefineLoaderOptions as _DefineLoaderOptions, - DataLoader as _DataLoader, -} from './data-fetching/defineLoader' - /** * @deprecated use `VueRouterAutoImports` instead */ diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 000000000..24e053135 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,53 @@ +/** + * This file only contain types and is used for the generated d.ts to avoid polluting the global namespace. + * https://github.com/posva/unplugin-vue-router/issues/136 + */ + +export type { Options } from './options' + +export type { + _RouteMapGeneric, + RouteRecordInfo, +} from './codegen/generateRouteMap' +export type { + // TODO: mark all of these as internals since the dynamically exposed versions are fully typed, these are just helpers + // to generate the convenient types + RouteLocationAsRelativeTyped, + RouteLocationAsRelativeTypedList, + RouteLocationAsPathTyped, + RouteLocationAsPathTypedList, + RouteLocationAsString, + RouteLocationTyped, + RouteLocationTypedList, + RouteLocationResolvedTyped, + RouteLocationResolvedTypedList, + RouteLocationNormalizedTyped, + RouteLocationNormalizedTypedList, + RouteLocationNormalizedLoadedTyped, + RouteLocationNormalizedLoadedTypedList, +} from './typeExtensions/routeLocation' +export type { NavigationGuard } from './typeExtensions/navigationGuards' +export type { _RouterTyped } from './typeExtensions/router' +export type { + RouterLinkTyped, + UseLinkFnTyped, + _UseLinkReturnTyped, +} from './typeExtensions/RouterLink' +export type { + ParamValue, + ParamValueOneOrMore, + ParamValueZeroOrMore, + ParamValueZeroOrOne, +} from './codegen/generateRouteParams' + +export type { TreeNode } from './core/tree' +export type { + TreeNodeValueParam, + TreeNodeValueStatic, +} from './core/treeNodeValue' + +// expose for generated type extensions +export type { + DefineLoaderOptions as _DefineLoaderOptions, + DataLoader as _DataLoader, +} from './data-fetching/defineLoader'