@nuxt/kit 4.0.0-alpha.4 → 4.0.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.
package/dist/index.d.mts CHANGED
@@ -407,6 +407,7 @@ declare function addTypeTemplate<T>(_template: NuxtTypeTemplate<T>, context?: {
407
407
  nitro?: boolean;
408
408
  nuxt?: boolean;
409
409
  node?: boolean;
410
+ shared?: boolean;
410
411
  }): ResolvedNuxtTemplate<T>;
411
412
  /**
412
413
  * Normalize a nuxt template object
package/dist/index.d.ts CHANGED
@@ -407,6 +407,7 @@ declare function addTypeTemplate<T>(_template: NuxtTypeTemplate<T>, context?: {
407
407
  nitro?: boolean;
408
408
  nuxt?: boolean;
409
409
  node?: boolean;
410
+ shared?: boolean;
410
411
  }): ResolvedNuxtTemplate<T>;
411
412
  /**
412
413
  * Normalize a nuxt template object
package/dist/index.mjs CHANGED
@@ -1066,6 +1066,11 @@ function addTypeTemplate(_template, context) {
1066
1066
  nodeReferences.push({ path: template.dst });
1067
1067
  });
1068
1068
  }
1069
+ if (context?.shared) {
1070
+ nuxt.hook("prepare:types", ({ sharedReferences }) => {
1071
+ sharedReferences.push({ path: template.dst });
1072
+ });
1073
+ }
1069
1074
  if (context?.nitro) {
1070
1075
  nuxt.hook("nitro:prepare:types", ({ references }) => {
1071
1076
  references.push({ path: template.dst });
@@ -1106,25 +1111,44 @@ function normalizeTemplate(template, buildDir) {
1106
1111
  async function updateTemplates(options) {
1107
1112
  return await tryUseNuxt()?.hooks.callHook("builder:generateApp", options);
1108
1113
  }
1109
- function resolveLayerPaths(buildDir, rootDir, srcDir) {
1114
+ function resolveLayerPaths(dir, buildDir, rootDir, srcDir) {
1110
1115
  const relativeRootDir = relativeWithDot(buildDir, rootDir);
1116
+ const relativeSrcDir = relativeWithDot(buildDir, srcDir);
1117
+ const relativeModulesDir = relativeWithDot(buildDir, resolve(rootDir, dir.modules || "modules"));
1118
+ const relativeSharedDir = relativeWithDot(buildDir, resolve(rootDir, dir.shared || "shared"));
1111
1119
  return {
1112
1120
  nuxt: [
1113
- join(relativeWithDot(buildDir, srcDir), "**/*"),
1114
- join(relativeRootDir, "modules/*/runtime/**/*"),
1115
- join(relativeRootDir, "layers/*/modules/*/runtime/**/*")
1121
+ join(relativeSrcDir, "**/*"),
1122
+ join(relativeModulesDir, `*/runtime/**/*`),
1123
+ join(relativeRootDir, `layers/*/app/**/*`),
1124
+ join(relativeRootDir, `layers/*/modules/*/runtime/**/*`)
1116
1125
  ],
1117
1126
  nitro: [
1118
- join(relativeRootDir, "modules/*/runtime/server/**/*"),
1119
- join(relativeRootDir, "layers/*/modules/*/runtime/server/**/*")
1127
+ join(relativeModulesDir, `*/runtime/server/**/*`),
1128
+ join(relativeRootDir, `layers/*/server/**/*`),
1129
+ join(relativeRootDir, `layers/*/modules/*/runtime/server/**/*`)
1120
1130
  ],
1121
1131
  node: [
1122
- join(relativeRootDir, "modules/**/*"),
1123
- join(relativeRootDir, "nuxt.config.*"),
1124
- join(relativeRootDir, ".config/nuxt.*"),
1125
- join(relativeRootDir, "layers/*/nuxt.config.*"),
1126
- join(relativeRootDir, "layers/*/.config/nuxt.*"),
1127
- join(relativeRootDir, "layers/*/modules/**/*")
1132
+ join(relativeModulesDir, `*.*`),
1133
+ join(relativeRootDir, `nuxt.config.*`),
1134
+ join(relativeRootDir, `.config/nuxt.*`),
1135
+ join(relativeRootDir, `layers/*/nuxt.config.*`),
1136
+ join(relativeRootDir, `layers/*/.config/nuxt.*`),
1137
+ join(relativeRootDir, `layers/*/modules/**/*`)
1138
+ ],
1139
+ shared: [
1140
+ join(relativeSharedDir, `**/*`),
1141
+ join(relativeModulesDir, `*/shared/**/*`),
1142
+ join(relativeRootDir, `layers/*/shared/**/*`)
1143
+ ],
1144
+ sharedDeclarations: [
1145
+ join(relativeSharedDir, `**/*.d.ts`),
1146
+ join(relativeModulesDir, `*/shared/**/*.d.ts`),
1147
+ join(relativeRootDir, `layers/*/shared/**/*.d.ts`)
1148
+ ],
1149
+ globalDeclarations: [
1150
+ join(relativeRootDir, `*.d.ts`),
1151
+ join(relativeRootDir, `layers/*/*.d.ts`)
1128
1152
  ]
1129
1153
  };
1130
1154
  }
@@ -1133,9 +1157,11 @@ const excludedAlias = [/^@vue\/.*$/, /^#internal\/nuxt/];
1133
1157
  async function _generateTypes(nuxt) {
1134
1158
  const include = /* @__PURE__ */ new Set(["./nuxt.d.ts"]);
1135
1159
  const nodeInclude = /* @__PURE__ */ new Set(["./nuxt.node.d.ts"]);
1136
- const legacyInclude = /* @__PURE__ */ new Set(["./nuxt.d.ts"]);
1160
+ const sharedInclude = /* @__PURE__ */ new Set(["./nuxt.shared.d.ts"]);
1161
+ const legacyInclude = /* @__PURE__ */ new Set([...include, ...nodeInclude]);
1137
1162
  const exclude = /* @__PURE__ */ new Set();
1138
1163
  const nodeExclude = /* @__PURE__ */ new Set();
1164
+ const sharedExclude = /* @__PURE__ */ new Set();
1139
1165
  const legacyExclude = /* @__PURE__ */ new Set();
1140
1166
  if (nuxt.options.typescript.includeWorkspace && nuxt.options.workspaceDir !== nuxt.options.srcDir) {
1141
1167
  include.add(join(relative(nuxt.options.buildDir, nuxt.options.workspaceDir), "**/*"));
@@ -1156,7 +1182,7 @@ async function _generateTypes(nuxt) {
1156
1182
  const srcOrCwd = withTrailingSlash(layer.config.srcDir ?? layer.cwd);
1157
1183
  if (!srcOrCwd.startsWith(rootDirWithSlash) || layer.cwd === nuxt.options.rootDir || srcOrCwd.includes("node_modules")) {
1158
1184
  const rootGlob = join(relativeWithDot(nuxt.options.buildDir, layer.cwd), "**/*");
1159
- const paths = resolveLayerPaths(nuxt.options.buildDir, layer.cwd, layer.config.srcDir);
1185
+ const paths = resolveLayerPaths(defu(layer.config.dir, nuxt.options.dir), nuxt.options.buildDir, layer.cwd, layer.config.srcDir);
1160
1186
  for (const path of paths.nuxt) {
1161
1187
  include.add(path);
1162
1188
  legacyInclude.add(path);
@@ -1174,6 +1200,18 @@ async function _generateTypes(nuxt) {
1174
1200
  legacyInclude.add(path);
1175
1201
  exclude.add(path);
1176
1202
  }
1203
+ for (const path of paths.shared) {
1204
+ legacyInclude.add(path);
1205
+ sharedInclude.add(path);
1206
+ }
1207
+ for (const path of paths.sharedDeclarations) {
1208
+ include.add(path);
1209
+ }
1210
+ for (const path of paths.globalDeclarations) {
1211
+ include.add(path);
1212
+ legacyInclude.add(path);
1213
+ sharedInclude.add(path);
1214
+ }
1177
1215
  }
1178
1216
  }
1179
1217
  const moduleEntryPaths = [];
@@ -1185,14 +1223,18 @@ async function _generateTypes(nuxt) {
1185
1223
  const modulePaths = await resolveNuxtModule(rootDirWithSlash, moduleEntryPaths);
1186
1224
  for (const path of modulePaths) {
1187
1225
  const relative2 = relativeWithDot(nuxt.options.buildDir, path);
1188
- include.add(join(relative2, "runtime"));
1189
- include.add(join(relative2, "dist/runtime"));
1226
+ if (!path.includes("node_modules")) {
1227
+ include.add(join(relative2, "runtime"));
1228
+ include.add(join(relative2, "dist/runtime"));
1229
+ nodeInclude.add(join(relative2, "*.*"));
1230
+ }
1190
1231
  legacyInclude.add(join(relative2, "runtime"));
1191
1232
  legacyInclude.add(join(relative2, "dist/runtime"));
1192
1233
  nodeExclude.add(join(relative2, "runtime"));
1193
1234
  nodeExclude.add(join(relative2, "dist/runtime"));
1194
1235
  exclude.add(join(relative2, "runtime/server"));
1195
1236
  exclude.add(join(relative2, "dist/runtime/server"));
1237
+ exclude.add(join(relative2, "*.*"));
1196
1238
  legacyExclude.add(join(relative2, "runtime/server"));
1197
1239
  legacyExclude.add(join(relative2, "dist/runtime/server"));
1198
1240
  }
@@ -1209,41 +1251,6 @@ async function _generateTypes(nuxt) {
1209
1251
  }
1210
1252
  hasTypescriptVersionWithModulePreserve ??= true;
1211
1253
  const useDecorators = Boolean(nuxt.options.experimental?.decorators);
1212
- const nodeReferences = [];
1213
- const nodeTsConfig = defu(nuxt.options.typescript?.nodeTsConfig, {
1214
- compilerOptions: {
1215
- /* Base options: */
1216
- esModuleInterop: true,
1217
- skipLibCheck: true,
1218
- target: "ESNext",
1219
- allowJs: true,
1220
- resolveJsonModule: true,
1221
- moduleDetection: "force",
1222
- isolatedModules: true,
1223
- verbatimModuleSyntax: true,
1224
- /* Strictness */
1225
- strict: nuxt.options.typescript?.strict ?? true,
1226
- noUncheckedIndexedAccess: true,
1227
- forceConsistentCasingInFileNames: true,
1228
- noImplicitOverride: true,
1229
- /* If NOT transpiling with TypeScript: */
1230
- module: hasTypescriptVersionWithModulePreserve ? "preserve" : "ESNext",
1231
- noEmit: true,
1232
- /* remove auto-scanning for types */
1233
- types: [],
1234
- /* add paths object for filling-in later */
1235
- paths: {},
1236
- /* Possibly consider removing the following in future */
1237
- moduleResolution: hasTypescriptVersionWithModulePreserve ? void 0 : "Bundler",
1238
- useDefineForClassFields: true,
1239
- /* implied by target: es2022+ */
1240
- noImplicitThis: true,
1241
- /* enabled with `strict` */
1242
- allowSyntheticDefaultImports: true
1243
- },
1244
- include: [...nodeInclude],
1245
- exclude: [...nodeExclude]
1246
- });
1247
1254
  const tsConfig = defu(nuxt.options.typescript?.tsConfig, {
1248
1255
  compilerOptions: {
1249
1256
  /* Base options: */
@@ -1294,6 +1301,70 @@ async function _generateTypes(nuxt) {
1294
1301
  include: [...include],
1295
1302
  exclude: [...exclude]
1296
1303
  });
1304
+ const nodeTsConfig = defu(nuxt.options.typescript?.nodeTsConfig, {
1305
+ compilerOptions: {
1306
+ /* Base options: */
1307
+ esModuleInterop: tsConfig.compilerOptions?.esModuleInterop,
1308
+ skipLibCheck: tsConfig.compilerOptions?.skipLibCheck,
1309
+ target: tsConfig.compilerOptions?.target,
1310
+ allowJs: tsConfig.compilerOptions?.allowJs,
1311
+ resolveJsonModule: tsConfig.compilerOptions?.resolveJsonModule,
1312
+ moduleDetection: tsConfig.compilerOptions?.moduleDetection,
1313
+ isolatedModules: tsConfig.compilerOptions?.isolatedModules,
1314
+ verbatimModuleSyntax: tsConfig.compilerOptions?.verbatimModuleSyntax,
1315
+ /* Strictness */
1316
+ strict: tsConfig.compilerOptions?.strict,
1317
+ noUncheckedIndexedAccess: tsConfig.compilerOptions?.noUncheckedIndexedAccess,
1318
+ forceConsistentCasingInFileNames: tsConfig.compilerOptions?.forceConsistentCasingInFileNames,
1319
+ noImplicitOverride: tsConfig.compilerOptions?.noImplicitOverride,
1320
+ /* If NOT transpiling with TypeScript: */
1321
+ module: tsConfig.compilerOptions?.module,
1322
+ noEmit: true,
1323
+ /* remove auto-scanning for types */
1324
+ types: [],
1325
+ /* add paths object for filling-in later */
1326
+ paths: {},
1327
+ /* Possibly consider removing the following in future */
1328
+ moduleResolution: tsConfig.compilerOptions?.moduleResolution,
1329
+ useDefineForClassFields: tsConfig.compilerOptions?.useDefineForClassFields,
1330
+ noImplicitThis: tsConfig.compilerOptions?.noImplicitThis,
1331
+ allowSyntheticDefaultImports: tsConfig.compilerOptions?.allowSyntheticDefaultImports
1332
+ },
1333
+ include: [...nodeInclude],
1334
+ exclude: [...nodeExclude]
1335
+ });
1336
+ const sharedTsConfig = defu(nuxt.options.typescript?.sharedTsConfig, {
1337
+ compilerOptions: {
1338
+ /* Base options: */
1339
+ esModuleInterop: tsConfig.compilerOptions?.esModuleInterop,
1340
+ skipLibCheck: tsConfig.compilerOptions?.skipLibCheck,
1341
+ target: tsConfig.compilerOptions?.target,
1342
+ allowJs: tsConfig.compilerOptions?.allowJs,
1343
+ resolveJsonModule: tsConfig.compilerOptions?.resolveJsonModule,
1344
+ moduleDetection: tsConfig.compilerOptions?.moduleDetection,
1345
+ isolatedModules: tsConfig.compilerOptions?.isolatedModules,
1346
+ verbatimModuleSyntax: tsConfig.compilerOptions?.verbatimModuleSyntax,
1347
+ /* Strictness */
1348
+ strict: tsConfig.compilerOptions?.strict,
1349
+ noUncheckedIndexedAccess: tsConfig.compilerOptions?.noUncheckedIndexedAccess,
1350
+ forceConsistentCasingInFileNames: tsConfig.compilerOptions?.forceConsistentCasingInFileNames,
1351
+ noImplicitOverride: tsConfig.compilerOptions?.noImplicitOverride,
1352
+ /* If NOT transpiling with TypeScript: */
1353
+ module: tsConfig.compilerOptions?.module,
1354
+ noEmit: true,
1355
+ /* remove auto-scanning for types */
1356
+ types: [],
1357
+ /* add paths object for filling-in later */
1358
+ paths: {},
1359
+ /* Possibly consider removing the following in future */
1360
+ moduleResolution: tsConfig.compilerOptions?.moduleResolution,
1361
+ useDefineForClassFields: tsConfig.compilerOptions?.useDefineForClassFields,
1362
+ noImplicitThis: tsConfig.compilerOptions?.noImplicitThis,
1363
+ allowSyntheticDefaultImports: tsConfig.compilerOptions?.allowSyntheticDefaultImports
1364
+ },
1365
+ include: [...sharedInclude],
1366
+ exclude: [...sharedExclude]
1367
+ });
1297
1368
  const aliases = nuxt.options.alias;
1298
1369
  const basePath = tsConfig.compilerOptions.baseUrl ? resolve(nuxt.options.buildDir, tsConfig.compilerOptions.baseUrl) : nuxt.options.buildDir;
1299
1370
  tsConfig.compilerOptions ||= {};
@@ -1330,6 +1401,8 @@ async function _generateTypes(nuxt) {
1330
1401
  }
1331
1402
  }
1332
1403
  const references = [];
1404
+ const nodeReferences = [];
1405
+ const sharedReferences = [];
1333
1406
  await Promise.all([...nuxt.options.modules, ...nuxt.options._modules].map(async (id) => {
1334
1407
  if (typeof id !== "string") {
1335
1408
  return;
@@ -1337,30 +1410,43 @@ async function _generateTypes(nuxt) {
1337
1410
  for (const parent of nestedModulesDirs) {
1338
1411
  const pkg = await readPackageJSON(id, { parent }).catch(() => null);
1339
1412
  if (pkg) {
1340
- references.push({ types: pkg.name ?? id });
1413
+ nodeReferences.push({ types: pkg.name ?? id });
1341
1414
  return;
1342
1415
  }
1343
1416
  }
1344
- references.push({ types: id });
1417
+ nodeReferences.push({ types: id });
1345
1418
  }));
1346
1419
  const declarations = [];
1347
- await nuxt.callHook("prepare:types", { references, declarations, tsConfig, nodeTsConfig, nodeReferences });
1348
- for (const alias in tsConfig.compilerOptions.paths) {
1349
- const paths = tsConfig.compilerOptions.paths[alias];
1350
- tsConfig.compilerOptions.paths[alias] = await Promise.all(paths.map(async (path) => {
1351
- if (!isAbsolute(path)) {
1352
- return path;
1353
- }
1354
- const stats = await promises.stat(path).catch(
1355
- () => null
1356
- /* file does not exist */
1357
- );
1358
- return relativeWithDot(nuxt.options.buildDir, stats?.isFile() ? path.replace(EXTENSION_RE, "") : path);
1359
- }));
1420
+ await nuxt.callHook("prepare:types", { references, declarations, tsConfig, nodeTsConfig, nodeReferences, sharedTsConfig, sharedReferences });
1421
+ const legacyTsConfig = defu({}, {
1422
+ ...tsConfig,
1423
+ include: [...tsConfig.include, ...legacyInclude],
1424
+ exclude: [...legacyExclude]
1425
+ });
1426
+ async function resolveConfig(tsConfig2) {
1427
+ for (const alias in tsConfig2.compilerOptions.paths) {
1428
+ const paths = tsConfig2.compilerOptions.paths[alias];
1429
+ tsConfig2.compilerOptions.paths[alias] = [...new Set(await Promise.all(paths.map(async (path) => {
1430
+ if (!isAbsolute(path)) {
1431
+ return path;
1432
+ }
1433
+ const stats = await promises.stat(path).catch(
1434
+ () => null
1435
+ /* file does not exist */
1436
+ );
1437
+ return relativeWithDot(nuxt.options.buildDir, stats?.isFile() ? path.replace(EXTENSION_RE, "") : path);
1438
+ })))];
1439
+ }
1440
+ sortTsPaths(tsConfig2.compilerOptions.paths);
1441
+ tsConfig2.include = [...new Set(tsConfig2.include.map((p) => isAbsolute(p) ? relativeWithDot(nuxt.options.buildDir, p) : p))];
1442
+ tsConfig2.exclude = [...new Set(tsConfig2.exclude.map((p) => isAbsolute(p) ? relativeWithDot(nuxt.options.buildDir, p) : p))];
1360
1443
  }
1361
- sortTsPaths(tsConfig.compilerOptions.paths);
1362
- tsConfig.include = [...new Set(tsConfig.include.map((p) => isAbsolute(p) ? relativeWithDot(nuxt.options.buildDir, p) : p))];
1363
- tsConfig.exclude = [...new Set(tsConfig.exclude.map((p) => isAbsolute(p) ? relativeWithDot(nuxt.options.buildDir, p) : p))];
1444
+ await Promise.all([
1445
+ resolveConfig(tsConfig),
1446
+ resolveConfig(nodeTsConfig),
1447
+ resolveConfig(sharedTsConfig),
1448
+ resolveConfig(legacyTsConfig)
1449
+ ]);
1364
1450
  const declaration = [
1365
1451
  ...references.map((ref) => {
1366
1452
  if ("path" in ref && isAbsolute(ref.path)) {
@@ -1384,12 +1470,21 @@ async function _generateTypes(nuxt) {
1384
1470
  "export {}",
1385
1471
  ""
1386
1472
  ].join("\n");
1387
- const legacyTsConfig = defu({}, tsConfig, {
1388
- include: [...legacyInclude],
1389
- exclude: [...legacyExclude]
1390
- });
1473
+ const sharedDeclaration = [
1474
+ ...sharedReferences.map((ref) => {
1475
+ if ("path" in ref && isAbsolute(ref.path)) {
1476
+ ref.path = relative(nuxt.options.buildDir, ref.path);
1477
+ }
1478
+ return `/// <reference ${renderAttrs(ref)} />`;
1479
+ }),
1480
+ "",
1481
+ "export {}",
1482
+ ""
1483
+ ].join("\n");
1391
1484
  return {
1392
1485
  declaration,
1486
+ sharedTsConfig,
1487
+ sharedDeclaration,
1393
1488
  nodeTsConfig,
1394
1489
  nodeDeclaration,
1395
1490
  tsConfig,
@@ -1397,19 +1492,23 @@ async function _generateTypes(nuxt) {
1397
1492
  };
1398
1493
  }
1399
1494
  async function writeTypes(nuxt) {
1400
- const { tsConfig, nodeTsConfig, nodeDeclaration, declaration, legacyTsConfig } = await _generateTypes(nuxt);
1495
+ const { tsConfig, nodeTsConfig, nodeDeclaration, declaration, legacyTsConfig, sharedDeclaration, sharedTsConfig } = await _generateTypes(nuxt);
1401
1496
  const appTsConfigPath = resolve(nuxt.options.buildDir, "tsconfig.app.json");
1402
1497
  const legacyTsConfigPath = resolve(nuxt.options.buildDir, "tsconfig.json");
1403
1498
  const nodeTsConfigPath = resolve(nuxt.options.buildDir, "tsconfig.node.json");
1499
+ const sharedTsConfigPath = resolve(nuxt.options.buildDir, "tsconfig.shared.json");
1404
1500
  const declarationPath = resolve(nuxt.options.buildDir, "nuxt.d.ts");
1405
1501
  const nodeDeclarationPath = resolve(nuxt.options.buildDir, "nuxt.node.d.ts");
1502
+ const sharedDeclarationPath = resolve(nuxt.options.buildDir, "nuxt.shared.d.ts");
1406
1503
  await promises.mkdir(nuxt.options.buildDir, { recursive: true });
1407
1504
  await Promise.all([
1408
1505
  promises.writeFile(appTsConfigPath, JSON.stringify(tsConfig, null, 2)),
1409
1506
  promises.writeFile(legacyTsConfigPath, JSON.stringify(legacyTsConfig, null, 2)),
1410
1507
  promises.writeFile(nodeTsConfigPath, JSON.stringify(nodeTsConfig, null, 2)),
1508
+ promises.writeFile(sharedTsConfigPath, JSON.stringify(sharedTsConfig, null, 2)),
1411
1509
  promises.writeFile(declarationPath, declaration),
1412
- promises.writeFile(nodeDeclarationPath, nodeDeclaration)
1510
+ promises.writeFile(nodeDeclarationPath, nodeDeclaration),
1511
+ promises.writeFile(sharedDeclarationPath, sharedDeclaration)
1413
1512
  ]);
1414
1513
  }
1415
1514
  function sortTsPaths(paths) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxt/kit",
3
- "version": "4.0.0-alpha.4",
3
+ "version": "4.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/nuxt/nuxt.git",
@@ -23,7 +23,7 @@
23
23
  "dist"
24
24
  ],
25
25
  "dependencies": {
26
- "c12": "^3.0.4",
26
+ "c12": "^3.1.0",
27
27
  "consola": "^3.4.2",
28
28
  "defu": "^6.1.4",
29
29
  "destr": "^2.0.5",
@@ -35,26 +35,26 @@
35
35
  "mlly": "^1.7.4",
36
36
  "ohash": "^2.0.11",
37
37
  "pathe": "^2.0.3",
38
- "pkg-types": "^2.1.0",
38
+ "pkg-types": "^2.2.0",
39
39
  "scule": "^1.3.0",
40
40
  "semver": "^7.7.2",
41
41
  "std-env": "^3.9.0",
42
42
  "tinyglobby": "^0.2.14",
43
43
  "ufo": "^1.6.1",
44
44
  "unctx": "^2.4.1",
45
- "unimport": "^5.0.1",
45
+ "unimport": "^5.1.0",
46
46
  "untyped": "^2.0.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@rspack/core": "1.3.15",
49
+ "@rspack/core": "1.4.8",
50
50
  "@types/semver": "7.7.0",
51
51
  "hookable": "5.5.3",
52
- "nitropack": "2.11.13",
52
+ "nitropack": "2.12.0",
53
53
  "unbuild": "3.5.0",
54
- "vite": "7.0.0",
54
+ "vite": "7.0.4",
55
55
  "vitest": "3.2.4",
56
56
  "webpack": "5.99.9",
57
- "@nuxt/schema": "4.0.0-alpha.4"
57
+ "@nuxt/schema": "4.0.0"
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=18.12.0"