@depup/nuxt 4.2.2-depup.0 → 4.3.0-depup.0

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 (65) hide show
  1. package/README.md +4 -2
  2. package/app.d.ts +1 -1
  3. package/dist/app/compat/capi.d.ts +1 -1
  4. package/dist/app/compat/interval.d.ts +1 -1
  5. package/dist/app/compat/interval.js +3 -3
  6. package/dist/app/components/client-fallback.client.js +5 -1
  7. package/dist/app/components/client-fallback.server.js +5 -1
  8. package/dist/app/components/error-404.d.vue.ts +6 -6
  9. package/dist/app/components/error-404.vue +4 -4
  10. package/dist/app/components/error-404.vue.d.ts +6 -6
  11. package/dist/app/components/error-500.d.vue.ts +6 -6
  12. package/dist/app/components/error-500.vue +4 -4
  13. package/dist/app/components/error-500.vue.d.ts +6 -6
  14. package/dist/app/components/island-renderer.js +2 -2
  15. package/dist/app/components/nuxt-error-page.vue +4 -4
  16. package/dist/app/components/nuxt-island.js +1 -1
  17. package/dist/app/components/nuxt-layout.js +6 -3
  18. package/dist/app/components/nuxt-link.js +1 -1
  19. package/dist/app/components/nuxt-stubs.d.ts +2 -2
  20. package/dist/app/components/nuxt-stubs.js +2 -2
  21. package/dist/app/components/welcome.vue +1 -1
  22. package/dist/app/composables/asyncData.d.ts +6 -1
  23. package/dist/app/composables/asyncData.js +8 -3
  24. package/dist/app/composables/component.js +1 -2
  25. package/dist/app/composables/cookie.js +8 -1
  26. package/dist/app/composables/error.d.ts +8 -5
  27. package/dist/app/composables/error.js +3 -0
  28. package/dist/app/composables/manifest.d.ts +3 -5
  29. package/dist/app/composables/manifest.js +6 -21
  30. package/dist/app/composables/payload.d.ts +4 -0
  31. package/dist/app/composables/payload.js +32 -14
  32. package/dist/app/composables/router.d.ts +7 -3
  33. package/dist/app/composables/router.js +7 -3
  34. package/dist/app/composables/script-stubs.js +2 -2
  35. package/dist/app/composables/ssr.d.ts +1 -1
  36. package/dist/app/entry.async.d.ts +2 -2
  37. package/dist/app/entry.d.ts +3 -2
  38. package/dist/app/entry.js +2 -2
  39. package/dist/app/index.d.ts +1 -1
  40. package/dist/app/middleware/{manifest-route-rule.js → route-rules.js} +2 -2
  41. package/dist/app/nuxt.d.ts +12 -9
  42. package/dist/app/plugins/dev-server-logs.js +1 -1
  43. package/dist/app/plugins/payload.client.js +0 -3
  44. package/dist/app/plugins/preload.server.js +3 -1
  45. package/dist/app/plugins/router.js +15 -16
  46. package/dist/app/types.d.ts +1 -1
  47. package/dist/app/utils.d.ts +6 -9
  48. package/dist/components/runtime/lazy-hydrated-component.js +2 -1
  49. package/dist/components/runtime/server-component.js +0 -1
  50. package/dist/head/runtime/components.js +70 -26
  51. package/dist/index.d.mts +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.mjs +1004 -644
  54. package/dist/pages/runtime/composables.d.ts +10 -1
  55. package/dist/pages/runtime/index.d.ts +1 -1
  56. package/dist/pages/runtime/page.js +13 -3
  57. package/dist/pages/runtime/plugins/prerender.server.js +5 -10
  58. package/dist/pages/runtime/plugins/router.js +15 -18
  59. package/dist/pages/runtime/utils.d.ts +7 -0
  60. package/dist/pages/runtime/validate.js +4 -2
  61. package/meta.d.ts +1 -0
  62. package/meta.js +18 -0
  63. package/package.json +34 -49
  64. package/types.d.ts +1 -1
  65. /package/dist/app/middleware/{manifest-route-rule.d.ts → route-rules.d.ts} +0 -0
@@ -2,6 +2,9 @@ import type { KeepAliveProps, TransitionProps, UnwrapRef } from 'vue';
2
2
  import type { RouteLocationNormalized, RouteLocationNormalizedLoaded, RouteRecordRaw, RouteRecordRedirectOption } from 'vue-router';
3
3
  import type { NitroRouteConfig } from 'nitropack/types';
4
4
  import type { NuxtError } from 'nuxt/app';
5
+ import type { SerializableValue } from './utils.js';
6
+ export interface NuxtLayouts {
7
+ }
5
8
  export interface PageMeta {
6
9
  [key: string]: unknown;
7
10
  /**
@@ -9,7 +12,7 @@ export interface PageMeta {
9
12
  *
10
13
  * Return true if it is valid, or false if not. If another match can't be found,
11
14
  * this will mean a 404. You can also directly return an object with
12
- * statusCode/statusMessage to respond immediately with an error (other matches
15
+ * status/statusText to respond immediately with an error (other matches
13
16
  * will not be checked).
14
17
  */
15
18
  validate?: (route: RouteLocationNormalized) => boolean | Partial<NuxtError> | Promise<boolean | Partial<NuxtError>>;
@@ -33,6 +36,8 @@ export interface PageMeta {
33
36
  name?: string;
34
37
  /** You may define a path matcher, if you have a more complex pattern than can be expressed with the file name. */
35
38
  path?: string;
39
+ /** Route groups based on the file path, like `/(protected)/users/profile` -> ['protected'] */
40
+ groups?: string[];
36
41
  /**
37
42
  * Allows accessing the route `params` as props passed to the page component.
38
43
  * @see https://router.vuejs.org/guide/essentials/passing-props
@@ -43,6 +48,10 @@ export interface PageMeta {
43
48
  }
44
49
  declare module 'vue-router' {
45
50
  interface RouteMeta extends UnwrapRef<PageMeta> {
51
+ /**
52
+ * @internal
53
+ */
54
+ layoutProps?: Record<string, SerializableValue>;
46
55
  }
47
56
  }
48
57
  export declare const definePageMeta: (meta: PageMeta) => void;
@@ -1,3 +1,3 @@
1
1
  export { definePageMeta, defineRouteRules } from './composables.js';
2
- export type { PageMeta } from './composables.js';
2
+ export type { PageMeta, NuxtLayouts } from './composables.js';
3
3
  export type { NuxtPageProps } from './page.js';
@@ -41,6 +41,8 @@ export default defineComponent({
41
41
  const _layoutMeta = inject(LayoutMetaSymbol, null);
42
42
  let vnode;
43
43
  const done = nuxtApp.deferHydration();
44
+ let isSuspensePending = false;
45
+ let suspenseKey = 0;
44
46
  if (import.meta.client && nuxtApp.isHydrating) {
45
47
  const removeErrorHook = nuxtApp.hooks.hookOnce("app:error", done);
46
48
  useRouter().beforeEach(removeErrorHook);
@@ -99,10 +101,15 @@ export default defineComponent({
99
101
  const willRenderAnotherChild = hasChildrenRoutes(forkRoute, routeProps.route, routeProps.Component);
100
102
  if (!nuxtApp.isHydrating && previousPageKey === key && !willRenderAnotherChild) {
101
103
  nextTick(() => {
102
- pageLoadingEndHookAlreadyCalled = true;
103
- nuxtApp.callHook("page:loading:end");
104
+ if (!pageLoadingEndHookAlreadyCalled) {
105
+ pageLoadingEndHookAlreadyCalled = true;
106
+ nuxtApp.callHook("page:loading:end");
107
+ }
104
108
  });
105
109
  }
110
+ if (isSuspensePending && previousPageKey !== key) {
111
+ suspenseKey++;
112
+ }
106
113
  previousPageKey = key;
107
114
  const hasTransition = !!(props.transition ?? routeProps.route.meta.pageTransition ?? defaultPageTransition);
108
115
  const transitionProps = hasTransition && _mergeTransitionProps([
@@ -122,16 +129,19 @@ export default defineComponent({
122
129
  wrapInKeepAlive(
123
130
  keepaliveConfig,
124
131
  h(Suspense, {
132
+ key: suspenseKey,
125
133
  suspensible: true,
126
134
  onPending: () => {
135
+ isSuspensePending = true;
127
136
  if (hasTransition) {
128
137
  nuxtApp._runningTransition = true;
129
138
  }
130
139
  nuxtApp.callHook("page:start", routeProps.Component);
131
140
  },
132
141
  onResolve: async () => {
133
- await nextTick();
142
+ isSuspensePending = false;
134
143
  try {
144
+ await nextTick();
135
145
  nuxtApp._route.sync?.();
136
146
  await nuxtApp.callHook("page:finish", routeProps.Component);
137
147
  delete nuxtApp._runningTransition;
@@ -1,13 +1,12 @@
1
1
  import { joinURL } from "ufo";
2
- import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
3
- import defu from "defu";
4
- import { defineNuxtPlugin, useRuntimeConfig } from "#app/nuxt";
2
+ import { defineNuxtPlugin } from "#app/nuxt";
5
3
  import { prerenderRoutes } from "#app/composables/ssr";
6
4
  import _routes from "#build/routes";
7
- import routerOptions, { hashMode } from "#build/router.options";
5
+ import routerOptions, { hashMode } from "#build/router.options.mjs";
8
6
  import { crawlLinks } from "#build/nuxt.config.mjs";
7
+ import _routeRulesMatcher from "#build/route-rules.mjs";
8
+ const routeRulesMatcher = _routeRulesMatcher;
9
9
  let routes;
10
- let _routeRulesMatcher = void 0;
11
10
  export default defineNuxtPlugin(async () => {
12
11
  if (!import.meta.server || !import.meta.prerender || hashMode) {
13
12
  return;
@@ -15,17 +14,13 @@ export default defineNuxtPlugin(async () => {
15
14
  if (routes && !routes.length) {
16
15
  return;
17
16
  }
18
- const routeRules = useRuntimeConfig().nitro.routeRules;
19
- if (!crawlLinks && routeRules && Object.values(routeRules).some((r) => r.prerender)) {
20
- _routeRulesMatcher = toRouteMatcher(createRadixRouter({ routes: routeRules }));
21
- }
22
17
  routes ||= Array.from(processRoutes(await routerOptions.routes?.(_routes) ?? _routes));
23
18
  const batch = routes.splice(0, 10);
24
19
  prerenderRoutes(batch);
25
20
  });
26
21
  const OPTIONAL_PARAM_RE = /^\/?:.*(?:\?|\(\.\*\)\*)$/;
27
22
  function shouldPrerender(path) {
28
- return !_routeRulesMatcher || defu({}, ..._routeRulesMatcher.matchAll(path).reverse()).prerender;
23
+ return crawlLinks || !!routeRulesMatcher(path).prerender;
29
24
  }
30
25
  function processRoutes(routes2, currentPath = "/", routesToPrerender = /* @__PURE__ */ new Set()) {
31
26
  for (const route of routes2) {
@@ -1,14 +1,13 @@
1
1
  import { isReadonly, reactive, shallowReactive, shallowRef } from "vue";
2
2
  import { START_LOCATION, createMemoryHistory, createRouter, createWebHashHistory, createWebHistory } from "vue-router";
3
- import { isSamePath, withoutBase } from "ufo";
3
+ import { decodePath, isSamePath, withoutBase } from "ufo";
4
4
  import { toArray } from "../utils.js";
5
5
  import { getRouteRules } from "#app/composables/manifest";
6
6
  import { defineNuxtPlugin, useRuntimeConfig } from "#app/nuxt";
7
7
  import { clearError, createError, isNuxtError, showError, useError } from "#app/composables/error";
8
8
  import { navigateTo } from "#app/composables/router";
9
- import { appManifest as isAppManifestEnabled } from "#build/nuxt.config.mjs";
10
9
  import _routes, { handleHotUpdate } from "#build/routes";
11
- import routerOptions, { hashMode } from "#build/router.options";
10
+ import routerOptions, { hashMode } from "#build/router.options.mjs";
12
11
  import { globalMiddleware, namedMiddleware } from "#build/middleware";
13
12
  function createCurrentLocation(base, location, renderedPath) {
14
13
  const { pathname, search, hash } = location;
@@ -19,9 +18,9 @@ function createCurrentLocation(base, location, renderedPath) {
19
18
  if (pathFromHash[0] !== "/") {
20
19
  pathFromHash = "/" + pathFromHash;
21
20
  }
22
- return withoutBase(pathFromHash, "");
21
+ return decodePath(withoutBase(pathFromHash, ""));
23
22
  }
24
- const displayedPath = withoutBase(pathname, base);
23
+ const displayedPath = decodePath(withoutBase(pathname, base));
25
24
  const path = !renderedPath || isSamePath(displayedPath, renderedPath) ? displayedPath : renderedPath;
26
25
  return path + (path.includes("?") ? "" : search) + hash;
27
26
  }
@@ -143,15 +142,13 @@ const plugin = defineNuxtPlugin({
143
142
  middlewareEntries.add(entry);
144
143
  }
145
144
  }
146
- if (isAppManifestEnabled) {
147
- const routeRules = await nuxtApp.runWithContext(() => getRouteRules({ path: to.path }));
148
- if (routeRules.appMiddleware) {
149
- for (const key in routeRules.appMiddleware) {
150
- if (routeRules.appMiddleware[key]) {
151
- middlewareEntries.add(key);
152
- } else {
153
- middlewareEntries.delete(key);
154
- }
145
+ const routeRules = getRouteRules({ path: to.path });
146
+ if (routeRules.appMiddleware) {
147
+ for (const key in routeRules.appMiddleware) {
148
+ if (routeRules.appMiddleware[key]) {
149
+ middlewareEntries.add(key);
150
+ } else {
151
+ middlewareEntries.delete(key);
155
152
  }
156
153
  }
157
154
  }
@@ -171,8 +168,8 @@ const plugin = defineNuxtPlugin({
171
168
  if (import.meta.server || !nuxtApp.payload.serverRendered && nuxtApp.isHydrating) {
172
169
  if (result === false || result instanceof Error) {
173
170
  const error2 = result || createError({
174
- statusCode: 404,
175
- statusMessage: `Page Not Found: ${initialURL}`
171
+ status: 404,
172
+ statusText: `Page Not Found: ${initialURL}`
176
173
  });
177
174
  await nuxtApp.runWithContext(() => showError(error2));
178
175
  return false;
@@ -207,9 +204,9 @@ const plugin = defineNuxtPlugin({
207
204
  router.afterEach((to) => {
208
205
  if (to.matched.length === 0) {
209
206
  return nuxtApp.runWithContext(() => showError(createError({
210
- statusCode: 404,
207
+ status: 404,
211
208
  fatal: false,
212
- statusMessage: `Page not found: ${to.fullPath}`,
209
+ statusText: `Page not found: ${to.fullPath}`,
213
210
  data: {
214
211
  path: to.fullPath
215
212
  }
@@ -2,6 +2,13 @@ import type { RouteLocationNormalizedLoaded, RouterView } from 'vue-router';
2
2
  type InstanceOf<T> = T extends new (...args: any[]) => infer R ? R : never;
3
3
  type RouterViewSlot = Exclude<InstanceOf<typeof RouterView>['$slots']['default'], undefined>;
4
4
  export type RouterViewSlotProps = Parameters<RouterViewSlot>[0];
5
+ type SerializablePrimitive = string | number | boolean | null | undefined;
6
+ /** JSON-serializable value (non-recursive definition to avoid excessive type depth) */
7
+ export type SerializableValue = SerializablePrimitive | SerializablePrimitive[] | Record<string, unknown>;
8
+ /** Constrains T to only contain serializable properties. Non-serializable properties become `never`. */
9
+ export type MakeSerializableObject<T> = T extends Function | symbol ? never : {
10
+ [K in keyof T]: T[K] extends SerializablePrimitive ? T[K] : T[K] extends (infer U)[] ? U extends SerializablePrimitive ? T[K] : never : T[K] extends Record<string, unknown> ? T[K] : never;
11
+ };
5
12
  export declare const generateRouteKey: (routeProps: RouterViewSlotProps, override?: string | ((route: RouteLocationNormalizedLoaded) => string)) => string | false | undefined;
6
13
  export declare const wrapInKeepAlive: (props: any, children: any) => {
7
14
  default: () => any;
@@ -10,8 +10,10 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
10
10
  }
11
11
  const error = createError({
12
12
  fatal: import.meta.client,
13
- statusCode: result && result.statusCode || 404,
14
- statusMessage: result && result.statusMessage || `Page Not Found: ${to.fullPath}`,
13
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
14
+ status: result && (result.status || result.statusCode) || 404,
15
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
16
+ statusText: result && (result.statusText || result.statusMessage) || `Page Not Found: ${to.fullPath}`,
15
17
  data: {
16
18
  path: to.fullPath
17
19
  }
package/meta.d.ts ADDED
@@ -0,0 +1 @@
1
+ export const runtimeDependencies: string[]
package/meta.js ADDED
@@ -0,0 +1,18 @@
1
+ export const runtimeDependencies = [
2
+ // other deps
3
+ 'devalue',
4
+ 'klona',
5
+ // unjs ecosystem
6
+ 'defu',
7
+ 'ufo',
8
+ 'h3',
9
+ 'destr',
10
+ 'consola',
11
+ 'hookable',
12
+ 'unctx',
13
+ 'cookie-es',
14
+ 'perfect-debounce',
15
+ 'ohash',
16
+ 'pathe',
17
+ 'uncrypto',
18
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@depup/nuxt",
3
- "version": "4.2.2-depup.0",
3
+ "version": "4.3.0-depup.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/nuxt/nuxt.git",
@@ -25,33 +25,16 @@
25
25
  "import": "./config.js",
26
26
  "require": "./config.cjs"
27
27
  },
28
- "./schema": {
29
- "types": "./schema.d.ts",
30
- "import": "./schema.js"
31
- },
32
- "./kit": {
33
- "types": "./kit.d.ts",
34
- "import": "./kit.js"
35
- },
36
- "./app": {
37
- "types": "./dist/app/index.d.ts",
38
- "import": "./dist/app/index.js"
39
- },
28
+ "./schema": "./schema.js",
29
+ "./kit": "./kit.js",
30
+ "./meta": "./meta.js",
31
+ "./app": "./dist/app/index.js",
40
32
  "./package.json": "./package.json"
41
33
  },
42
34
  "imports": {
43
- "#app": {
44
- "types": "./dist/app/index.d.ts",
45
- "import": "./dist/app/index.js"
46
- },
47
- "#app/nuxt": {
48
- "types": "./dist/app/nuxt.d.ts",
49
- "import": "./dist/app/nuxt.js"
50
- },
51
- "#unhead/composables": {
52
- "types": "./dist/head/runtime/composables.d.ts",
53
- "import": "./dist/head/runtime/composables.js"
54
- }
35
+ "#app": "./dist/app/index.js",
36
+ "#app/nuxt": "./dist/app/nuxt.js",
37
+ "#unhead/composables": "./dist/head/runtime/composables.js"
55
38
  },
56
39
  "files": [
57
40
  "app.d.ts",
@@ -61,6 +44,7 @@
61
44
  "dist",
62
45
  "config.*",
63
46
  "kit.*",
47
+ "meta.*",
64
48
  "schema.*"
65
49
  ],
66
50
  "dependencies": {
@@ -69,7 +53,7 @@
69
53
  "@nuxt/devtools": "^3.1.1",
70
54
  "@nuxt/telemetry": "^2.6.6",
71
55
  "@unhead/vue": "^2.1.2",
72
- "@vue/shared": "^3.5.26",
56
+ "@vue/shared": "^3.5.27",
73
57
  "c12": "^3.3.3",
74
58
  "chokidar": "^5.0.0",
75
59
  "compatx": "^0.2.0",
@@ -77,11 +61,11 @@
77
61
  "cookie-es": "^2.0.0",
78
62
  "defu": "^6.1.4",
79
63
  "destr": "^2.0.5",
80
- "devalue": "^5.6.1",
64
+ "devalue": "^5.6.2",
81
65
  "errx": "^0.1.0",
82
66
  "escape-string-regexp": "^5.0.0",
83
67
  "exsolve": "^1.0.8",
84
- "h3": "^2.0.1-rc.7",
68
+ "h3": "^2.0.1-rc.11",
85
69
  "hookable": "^6.0.1",
86
70
  "ignore": "^7.0.5",
87
71
  "impound": "^1.0.0",
@@ -91,47 +75,47 @@
91
75
  "magic-string": "^0.30.21",
92
76
  "mlly": "^1.8.0",
93
77
  "nanotar": "^0.2.0",
94
- "nypm": "^0.6.2",
78
+ "nypm": "^0.6.4",
95
79
  "ofetch": "^1.5.1",
96
80
  "ohash": "^2.0.11",
97
81
  "on-change": "^6.0.1",
98
- "oxc-minify": "^0.108.0",
99
- "oxc-parser": "^0.108.0",
100
- "oxc-transform": "^0.108.0",
101
- "oxc-walker": "^0.6.0",
82
+ "oxc-minify": "^0.110.0",
83
+ "oxc-parser": "^0.110.0",
84
+ "oxc-transform": "^0.110.0",
85
+ "oxc-walker": "^0.7.0",
102
86
  "pathe": "^2.0.3",
103
- "perfect-debounce": "^2.0.0",
87
+ "perfect-debounce": "^2.1.0",
104
88
  "pkg-types": "^2.3.0",
105
- "radix3": "^1.1.2",
89
+ "rou3": "^0.7.12",
106
90
  "scule": "^1.3.0",
107
91
  "semver": "^7.7.3",
108
92
  "std-env": "^3.10.0",
109
93
  "tinyglobby": "^0.2.15",
110
- "ufo": "^1.6.2",
94
+ "ufo": "^1.6.3",
111
95
  "ultrahtml": "^1.6.0",
112
96
  "uncrypto": "^0.1.3",
113
97
  "unctx": "^2.5.0",
114
98
  "unimport": "^5.6.0",
115
- "unplugin": "^2.3.11",
99
+ "unplugin": "^3.0.0",
116
100
  "unplugin-vue-router": "^0.19.2",
117
101
  "untyped": "^2.0.0",
118
- "vue": "^3.5.26",
102
+ "vue": "^3.5.27",
119
103
  "vue-router": "^4.6.4",
120
- "@nuxt/kit": "4.2.2",
121
- "@nuxt/nitro-server": "4.2.2",
122
- "@nuxt/schema": "4.2.2",
123
- "@nuxt/vite-builder": "4.2.2"
104
+ "@nuxt/kit": "4.3.0",
105
+ "@nuxt/nitro-server": "4.3.0",
106
+ "@nuxt/schema": "4.3.0",
107
+ "@nuxt/vite-builder": "4.3.0"
124
108
  },
125
109
  "devDependencies": {
126
- "@nuxt/scripts": "^0.13.2",
127
- "@parcel/watcher": "^2.5.4",
110
+ "@nuxt/scripts": "0.13.2",
111
+ "@parcel/watcher": "2.5.4",
128
112
  "@types/estree": "1.0.8",
129
- "@vitejs/plugin-vue": "^6.0.3",
130
- "@vitejs/plugin-vue-jsx": "^5.1.3",
131
- "@vue/compiler-sfc": "^3.5.26",
113
+ "@vitejs/plugin-vue": "6.0.3",
114
+ "@vitejs/plugin-vue-jsx": "5.1.3",
115
+ "@vue/compiler-sfc": "3.5.27",
132
116
  "unbuild": "3.6.1",
133
- "vite": "^7.3.1",
134
- "vitest": "^4.0.17",
117
+ "vite": "7.3.1",
118
+ "vitest": "^4.0.18",
135
119
  "vue-bundle-renderer": "2.2.0",
136
120
  "vue-sfc-transformer": "0.1.17"
137
121
  },
@@ -151,6 +135,7 @@
151
135
  "node": "^20.19.0 || >=22.12.0"
152
136
  },
153
137
  "scripts": {
138
+ "build:stub": "unbuild --stub",
154
139
  "test:attw": "attw --pack"
155
140
  }
156
141
  }
package/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { SchemaDefinition } from 'nuxt/schema'
2
2
  import type { DefineNuxtConfig } from 'nuxt/config'
3
3
 
4
- export * from './dist/index'
4
+ export * from './dist/index.ts'
5
5
 
6
6
  declare global {
7
7
  const defineNuxtConfig: DefineNuxtConfig