bunchee 6.10.0 → 6.12.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/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  <p align="left">
8
8
  <a href="https://npm.im/bunchee">
9
- <img src="https://badgen.net/npm/v/bunchee">
9
+ <img src="https://img.shields.io/npm/v/bunchee?style=flat&colorA=000000&colorB=000000">
10
10
  </a>
11
11
 
12
- <a href="https://github.com/huozhi/bunchee/actions?workflow=CI">
13
- <img src="https://github.com/huozhi/bunchee/workflows/CI/badge.svg">
12
+ <a href="https://npm.im/bunchee">
13
+ <img src="https://img.shields.io/npm/dt/bunchee.svg?style=flat&colorA=000000&colorB=000000">
14
14
  </a>
15
15
  </p>
16
16
 
@@ -28,6 +28,13 @@ By using the standard `exports` configuration as the single source of truth, **b
28
28
  npm install --save-dev bunchee typescript
29
29
  ```
30
30
 
31
+ > [!NOTE]
32
+ > TypeScript 7+ compiles natively and its `typescript` package no longer ships the JavaScript compiler API used for generating type declarations. If you're on TypeScript 7 or above, also install the official compat API package [`@typescript/typescript6`](https://www.npmjs.com/package/@typescript/typescript6) and `bunchee` will pick it up automatically:
33
+ >
34
+ > ```sh
35
+ > npm install --save-dev @typescript/typescript6
36
+ > ```
37
+
31
38
  ### Configuration
32
39
 
33
40
  Create entry files of your library and `package.json`.
@@ -550,14 +557,6 @@ export { readme, config, styles, content }
550
557
 
551
558
  All these imports will be bundled as string content, regardless of the original file extension.
552
559
 
553
- ### Agent Skills
554
-
555
- If you want to use bunchee with coding agents with skills, run:
556
-
557
- ```sh
558
- npx skills add huozhi/npm-skills
559
- ```
560
-
561
560
  ### Node.js API
562
561
 
563
562
  ```ts
package/dist/bin/cli.js CHANGED
@@ -525,9 +525,8 @@ function addToExportDistMap(exportToDist, exportPath, outputConditionPairs) {
525
525
  * './index.react-server': { development: ..., default: ... }
526
526
  * }
527
527
  */ async function parseExports(pkg, cwd) {
528
- var _pkg_exports;
528
+ var _pkg_exports, _pkg_bin;
529
529
  const exportsField = (_pkg_exports = pkg.exports) != null ? _pkg_exports : {};
530
- var _pkg_bin;
531
530
  const bins = (_pkg_bin = pkg.bin) != null ? _pkg_bin : {};
532
531
  const exportToDist = new Map();
533
532
  const isEsmPkg = isESModulePackage(pkg.type);
@@ -856,7 +855,7 @@ async function lint$1(cwd) {
856
855
  }
857
856
  }
858
857
 
859
- var version = "6.10.0";
858
+ var version = "6.12.0";
860
859
 
861
860
  async function writeDefaultTsconfig(tsConfigPath) {
862
861
  await fs.promises.writeFile(tsConfigPath, JSON.stringify(DEFAULT_TS_CONFIG, null, 2), 'utf-8');
package/dist/index.js CHANGED
@@ -306,7 +306,7 @@ function validateEntryFiles(entryFiles) {
306
306
 
307
307
  function exit(err) {
308
308
  logger.error(err);
309
- throw new Error(err) ;
309
+ throw typeof err === 'string' ? new Error(err) : err;
310
310
  }
311
311
  async function getPackageMeta(cwd) {
312
312
  const pkgFilePath = path__default.default.resolve(cwd, 'package.json');
@@ -650,9 +650,8 @@ function addToExportDistMap(exportToDist, exportPath, outputConditionPairs) {
650
650
  * './index.react-server': { development: ..., default: ... }
651
651
  * }
652
652
  */ async function parseExports(pkg, cwd) {
653
- var _pkg_exports;
653
+ var _pkg_exports, _pkg_bin;
654
654
  const exportsField = (_pkg_exports = pkg.exports) != null ? _pkg_exports : {};
655
- var _pkg_bin;
656
655
  const bins = (_pkg_bin = pkg.bin) != null ? _pkg_bin : {};
657
656
  const exportToDist = new Map();
658
657
  const isEsmPkg = isESModulePackage(pkg.type);
@@ -915,6 +914,12 @@ function getSpecialExportTypeFromSourcePath(sourcePath) {
915
914
  const fileBaseName = baseNameWithoutExtension(sourcePath);
916
915
  return getSpecialExportTypeFromComposedExportPath(fileBaseName);
917
916
  }
917
+ const ModuleFormat = {
918
+ none: 0,
919
+ esm: 1,
920
+ cjs: 2,
921
+ all: 3
922
+ };
918
923
  function getExportTypeFromExportTypesArray(types) {
919
924
  let exportType = 'default';
920
925
  new Set(types).forEach((value)=>{
@@ -1033,9 +1038,16 @@ async function collectSourceEntriesByExportPath(sourceFolderPath, originalSubpat
1033
1038
  */ async function collectSourceEntriesFromExportPaths(sourceFolderPath, parsedExportsInfo, pkg) {
1034
1039
  const bins = new Map();
1035
1040
  const exportsEntries = new Map();
1041
+ let requiredPrivateModuleFormats = ModuleFormat.none;
1036
1042
  for (const [exportPath, exportInfo] of parsedExportsInfo.entries()){
1037
1043
  const specialConditions = new Set();
1038
- for (const [_, composedExportType] of exportInfo){
1044
+ for (const [outputPath, composedExportType] of exportInfo){
1045
+ // Collect required private shared module formats while walking export outputs.
1046
+ const exportType = composedExportType.split('.').pop();
1047
+ if (exportType !== 'types') {
1048
+ const ext = path__default.default.extname(outputPath).slice(1);
1049
+ requiredPrivateModuleFormats |= isCjsExportName(pkg, composedExportType, ext) ? ModuleFormat.cjs : ModuleFormat.esm;
1050
+ }
1039
1051
  const specialExportType = getSpecialExportTypeFromComposedExportPath(composedExportType);
1040
1052
  if (specialExportType !== 'default') {
1041
1053
  specialConditions.add(specialExportType);
@@ -1064,6 +1076,7 @@ async function collectSourceEntriesByExportPath(sourceFolderPath, originalSubpat
1064
1076
  ],
1065
1077
  expandDirectories: false
1066
1078
  });
1079
+ const defaultPrivateModuleFormats = requiredPrivateModuleFormats !== ModuleFormat.none ? requiredPrivateModuleFormats : ModuleFormat.all;
1067
1080
  for (const file of privateFiles){
1068
1081
  const sourceFileAbsolutePath = path__default.default.join(sourceFolderPath, file);
1069
1082
  const exportPath = sourceFilenameToExportFullPath(file);
@@ -1074,31 +1087,36 @@ async function collectSourceEntriesByExportPath(sourceFolderPath, originalSubpat
1074
1087
  // export type: default => ''
1075
1088
  // export type: development => '.development'
1076
1089
  const condPart = isSpecialExport ? specialExportType + '.' : '';
1090
+ const sourceExt = path__default.default.extname(file).slice(1);
1091
+ const formats = sourceExt === 'cts' ? ModuleFormat.cjs : sourceExt === 'mts' ? ModuleFormat.esm : defaultPrivateModuleFormats;
1077
1092
  // Map private shared files to the dist directory
1078
1093
  // e.g. ./_utils.ts -> ./dist/_utils.js
1079
- // TODO: improve the logic to only generate the required files, not all possible files
1080
1094
  const isTs = isTypescriptFile(file);
1081
- const typesInfos = [
1082
- [
1083
- posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.d.ts' : '.d.mts'))),
1084
- condPart + 'import.types'
1085
- ],
1086
- [
1087
- posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.d.cts' : '.d.ts'))),
1088
- condPart + 'require.types'
1089
- ]
1090
- ];
1091
- const privateExportInfo = [
1092
- ...isTs ? typesInfos : [],
1093
- [
1095
+ const privateExportInfo = [];
1096
+ if (formats === ModuleFormat.esm || formats === ModuleFormat.all) {
1097
+ if (isTs) {
1098
+ privateExportInfo.push([
1099
+ posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.d.ts' : '.d.mts'))),
1100
+ condPart + 'import.types'
1101
+ ]);
1102
+ }
1103
+ privateExportInfo.push([
1094
1104
  posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.js' : '.mjs'))),
1095
1105
  condPart + 'import.default'
1096
- ],
1097
- [
1106
+ ]);
1107
+ }
1108
+ if (formats === ModuleFormat.cjs || formats === ModuleFormat.all) {
1109
+ if (isTs) {
1110
+ privateExportInfo.push([
1111
+ posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.d.cts' : '.d.ts'))),
1112
+ condPart + 'require.types'
1113
+ ]);
1114
+ }
1115
+ privateExportInfo.push([
1098
1116
  posixRelativify(path.posix.join('./dist', exportPath + (isEsmPkg ? '.cjs' : '.js'))),
1099
1117
  condPart + 'require.default'
1100
- ]
1101
- ];
1118
+ ]);
1119
+ }
1102
1120
  const exportsInfo = parsedExportsInfo.get(normalizedExportPath);
1103
1121
  if (!exportsInfo) {
1104
1122
  // Add private shared files to parsedExportsInfo
@@ -1202,27 +1220,80 @@ const memoizeByKey = (fn)=>{
1202
1220
  };
1203
1221
  const memoize = (fn)=>createMemoize(fn);
1204
1222
 
1223
+ // TypeScript 7+ compiles natively and its `typescript` package no longer ships
1224
+ // the JavaScript compiler API (the main export only contains the version).
1225
+ // `@typescript/typescript6` is the official package re-exporting the TS 6 API.
1226
+ const TS_COMPAT_PACKAGE = '@typescript/typescript6';
1205
1227
  let hasLoggedTsWarning = false;
1206
- function resolveTypescript(cwd) {
1207
- let ts;
1208
- const m = new module$1.Module('', undefined);
1209
- m.paths = module$1.Module._nodeModulePaths(cwd);
1228
+ let hasLoggedTsCompatFallback = false;
1229
+ let hasRedirectedTsRequire = false;
1230
+ // Resolve to a concrete file path (works in both Node.js and Bun); the TS 7 fallback also needs the path to redirect `require('typescript')`.
1231
+ function resolveModulePath(request, paths) {
1210
1232
  try {
1211
- // Bun does not yet support the `Module` class properly.
1212
- if (typeof (m == null ? void 0 : m.require) === 'undefined') {
1213
- const tsPath = require.resolve('typescript', {
1214
- paths: module$1.Module._nodeModulePaths(cwd)
1215
- });
1233
+ return require.resolve(request, {
1234
+ paths
1235
+ });
1236
+ } catch {
1237
+ return null;
1238
+ }
1239
+ }
1240
+ function hasTsCompilerApi(ts) {
1241
+ return typeof (ts == null ? void 0 : ts.readConfigFile) === 'function' && typeof (ts == null ? void 0 : ts.parseJsonConfigFileContent) === 'function';
1242
+ }
1243
+ // Redirect `require('typescript')` to the TS 6 compat API so dependencies
1244
+ // relying on the JS compiler API (e.g. rollup-plugin-dts) keep working
1245
+ // when the workspace TypeScript is v7+.
1246
+ function redirectTypescriptRequire(tsApiPath) {
1247
+ if (hasRedirectedTsRequire) return;
1248
+ hasRedirectedTsRequire = true;
1249
+ const moduleAny = module$1.Module;
1250
+ const originalResolveFilename = moduleAny._resolveFilename;
1251
+ moduleAny._resolveFilename = function(request, ...args) {
1252
+ if (request === 'typescript') {
1253
+ return tsApiPath;
1254
+ }
1255
+ return originalResolveFilename.apply(this, [
1256
+ request,
1257
+ ...args
1258
+ ]);
1259
+ };
1260
+ }
1261
+ function resolveTypescript(cwd) {
1262
+ const searchPaths = module$1.Module._nodeModulePaths(cwd);
1263
+ const tsPath = resolveModulePath('typescript', searchPaths);
1264
+ let ts = null;
1265
+ if (tsPath) {
1266
+ try {
1216
1267
  ts = require(tsPath);
1217
- } else {
1218
- ts = m.require('typescript');
1268
+ } catch (e) {
1269
+ console.error(e);
1219
1270
  }
1220
- } catch (e) {
1221
- console.error(e);
1271
+ }
1272
+ if (!ts) {
1222
1273
  if (!hasLoggedTsWarning) {
1223
1274
  hasLoggedTsWarning = true;
1224
1275
  exit('Could not load TypeScript compiler. Try to install `typescript` as dev dependency');
1225
1276
  }
1277
+ return ts;
1278
+ }
1279
+ if (!hasTsCompilerApi(ts)) {
1280
+ var _resolveModulePath;
1281
+ const tsCompatPath = (_resolveModulePath = resolveModulePath(TS_COMPAT_PACKAGE, searchPaths)) != null ? _resolveModulePath : resolveModulePath(TS_COMPAT_PACKAGE, [
1282
+ __dirname
1283
+ ]);
1284
+ if (!tsCompatPath) {
1285
+ if (!hasLoggedTsWarning) {
1286
+ hasLoggedTsWarning = true;
1287
+ exit(`Detected TypeScript ${ts.version || '7+'}, which no longer ships the JavaScript compiler API required for generating type declarations. Install \`${TS_COMPAT_PACKAGE}\` as dev dependency to keep building types`);
1288
+ }
1289
+ return ts;
1290
+ }
1291
+ redirectTypescriptRequire(tsCompatPath);
1292
+ if (!hasLoggedTsCompatFallback) {
1293
+ hasLoggedTsCompatFallback = true;
1294
+ logger.log(pc.dim(`Using ${TS_COMPAT_PACKAGE} API for TypeScript ${ts.version} type declaration generation`));
1295
+ }
1296
+ ts = require(tsCompatPath);
1226
1297
  }
1227
1298
  return ts;
1228
1299
  }
@@ -1299,21 +1370,16 @@ async function writeDefaultTsconfig(tsConfigPath) {
1299
1370
 
1300
1371
  const FILENAME_REGEX = /__filename/;
1301
1372
  const DIRNAME_REGEX = /__dirname/;
1302
- // not char, or space before require(.resolve)?(
1303
- const GLOBAL_REQUIRE_REGEX = /(?:^|[^.\w'"`])\brequire(\.resolve)?\(\s*[\r\n]*(\w|['"`])/;
1304
1373
  const PolyfillComment = '/** rollup-private-do-not-use-esm-shim-polyfill */';
1305
- const createESMShim = ({ filename, dirname, globalRequire })=>{
1374
+ const createESMShim = ({ filename, dirname })=>{
1306
1375
  const useNodeUrl = filename || dirname;
1307
1376
  const useNodePath = dirname;
1308
- const useNodeModule = globalRequire;
1309
1377
  return `\
1310
1378
  ${PolyfillComment}
1311
1379
  ${useNodeUrl ? `import __node_cjsUrl from 'node:url'` : ''};
1312
1380
  ${useNodePath ? `import __node_cjsPath from 'node:path';` : ''}
1313
- ${useNodeModule ? `import __node_cjsModule from 'node:module';` : ''}
1314
1381
  ${useNodeUrl ? 'const __filename = __node_cjsUrl.fileURLToPath(import.meta.url);' : ''}
1315
1382
  ${useNodePath ? 'const __dirname = __node_cjsPath.dirname(__filename);' : ''}
1316
- ${useNodeModule ? 'const require = __node_cjsModule.createRequire(import.meta.url);' : ''}
1317
1383
  `.trim() + '\n';
1318
1384
  };
1319
1385
  function esmShim() {
@@ -1328,17 +1394,13 @@ function esmShim() {
1328
1394
  }
1329
1395
  let hasFilename = false;
1330
1396
  let hasDirname = false;
1331
- let hasGlobalRequire = false;
1332
1397
  if (FILENAME_REGEX.test(code)) {
1333
1398
  hasFilename = true;
1334
1399
  }
1335
1400
  if (DIRNAME_REGEX.test(code)) {
1336
1401
  hasDirname = true;
1337
1402
  }
1338
- if (GLOBAL_REQUIRE_REGEX.test(code)) {
1339
- hasGlobalRequire = true;
1340
- }
1341
- if (!hasFilename && !hasDirname && !hasGlobalRequire) {
1403
+ if (!hasFilename && !hasDirname) {
1342
1404
  return null;
1343
1405
  }
1344
1406
  const magicString = new MagicString__default.default(code);
@@ -1370,8 +1432,7 @@ function esmShim() {
1370
1432
  }
1371
1433
  magicString.appendRight(end, '\n' + createESMShim({
1372
1434
  filename: hasFilename,
1373
- dirname: hasDirname,
1374
- globalRequire: hasGlobalRequire
1435
+ dirname: hasDirname
1375
1436
  }));
1376
1437
  return {
1377
1438
  code: magicString.toString(),
@@ -1406,8 +1467,8 @@ function minify(code) {
1406
1467
  return cleanCssInstance.minify(code).styles;
1407
1468
  }
1408
1469
  function inlineCss(options) {
1409
- const cssIds = new Set();
1410
1470
  var _options_exclude;
1471
+ const cssIds = new Set();
1411
1472
  const filter = pluginutils.createFilter([
1412
1473
  '**/*.css'
1413
1474
  ], (_options_exclude = options.exclude) != null ? _options_exclude : []);
@@ -1809,11 +1870,11 @@ async function createDtsPlugin(tsCompilerOptions, tsConfigPath, respectExternal,
1809
1870
  }
1810
1871
  const memoizeDtsPluginByKey = memoizeByKey(createDtsPlugin);
1811
1872
  async function buildInputConfig(entry, bundleConfig, exportCondition, buildContext, dts) {
1873
+ var _bundleConfig_external;
1812
1874
  var _bundleConfig_file, _bundleConfig_file1;
1813
1875
  const { entries, pkg, cwd, tsOptions: { tsConfigPath, tsCompilerOptions }, browserslistConfig, pluginContext } = buildContext;
1814
1876
  const isBinEntry = isBinExportPath(exportCondition.name);
1815
1877
  const hasNoExternal = bundleConfig.external === null;
1816
- var _bundleConfig_external;
1817
1878
  const externals = hasNoExternal ? [] : [
1818
1879
  pkg.peerDependencies,
1819
1880
  pkg.dependencies,
@@ -2124,6 +2185,7 @@ function createSplitChunks(dependencyGraphMap, entryFiles) {
2124
2185
  }
2125
2186
 
2126
2187
  async function buildOutputConfigs(bundleConfig, exportCondition, buildContext, dts) {
2188
+ var _exportCondition_export_types;
2127
2189
  const { format } = bundleConfig;
2128
2190
  const { entries, pkg, cwd, tsOptions: { tsCompilerOptions }, pluginContext } = buildContext;
2129
2191
  // Add esm mark and interop helper if esm export is detected
@@ -2131,7 +2193,6 @@ async function buildOutputConfigs(bundleConfig, exportCondition, buildContext, d
2131
2193
  const absoluteOutputFile = path.resolve(cwd, bundleConfig.file);
2132
2194
  const isEsmPkg = isESModulePackage(pkg.type);
2133
2195
  const name = filePathWithoutExtension(absoluteOutputFile);
2134
- var _exportCondition_export_types;
2135
2196
  const dtsFile = path.resolve(cwd, dts ? bundleConfig.file : (_exportCondition_export_types = exportCondition.export.types) != null ? _exportCondition_export_types : getExportFileTypePath(bundleConfig.file));
2136
2197
  const typesDir = path.dirname(dtsFile);
2137
2198
  const jsDir = path.dirname(absoluteOutputFile);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunchee",
3
- "version": "6.10.0",
3
+ "version": "6.12.0",
4
4
  "description": "zero config bundler for js/ts/jsx libraries",
5
5
  "bin": "./dist/bin/cli.js",
6
6
  "main": "./dist/index.js",
@@ -10,17 +10,18 @@
10
10
  "test:update": "TEST_UPDATE_SNAPSHOT=1 pnpm test",
11
11
  "test:post": "cross-env POST_BUILD=1 pnpm test test/compile.test.ts test/integration.test.ts",
12
12
  "site": "next dev docs",
13
- "docs:build": "next build docs",
13
+ "docs:build": "pnpm --dir docs install && next build docs",
14
14
  "clean": "rm -rf ./dist",
15
15
  "new-test": "node ./scripts/new-test.js",
16
16
  "test:ts-matrix": "node ./scripts/test-ts-matrix.js all",
17
17
  "test:ts5": "node ./scripts/test-ts-matrix.js ts5",
18
18
  "test:ts6": "node ./scripts/test-ts-matrix.js ts6",
19
+ "test:ts7": "node ./scripts/test-ts-matrix.js ts7",
19
20
  "typecheck": "tsc --noEmit && tsc -p test/tsconfig.json --noEmit",
20
21
  "prepare-release": "pnpm clean && pnpm build",
21
22
  "publish-local": "pnpm prepare-release && pnpm test && pnpm publish",
22
23
  "prepublishOnly": "pnpm prepare-release && chmod +x ./dist/bin/cli.js",
23
- "run-ts": "cross-env SWC_NODE_IGNORE_DYNAMIC=1 node -r @swc-node/register",
24
+ "run-ts": "cross-env SWC_NODE_IGNORE_DYNAMIC=1 node -r ./scripts/ts6-compat.js -r @swc-node/register",
24
25
  "ts-bunchee": "pnpm run-ts ./src/bin/index.ts",
25
26
  "build-dir": "pnpm ts-bunchee --cwd",
26
27
  "build": "pnpm run-ts ./src/bin/index.ts --runtime node",
@@ -59,20 +60,20 @@
59
60
  },
60
61
  "license": "MIT",
61
62
  "dependencies": {
62
- "@rollup/plugin-commonjs": "^29.0.0",
63
+ "@rollup/plugin-commonjs": "^29.0.3",
63
64
  "@rollup/plugin-json": "^6.1.0",
64
- "@rollup/plugin-node-resolve": "^16.0.1",
65
- "@rollup/plugin-replace": "^6.0.2",
65
+ "@rollup/plugin-node-resolve": "^16.0.3",
66
+ "@rollup/plugin-replace": "^6.0.3",
66
67
  "@rollup/plugin-wasm": "^6.2.2",
67
- "@rollup/pluginutils": "^5.1.4",
68
- "@swc/core": "^1.13.3",
68
+ "@rollup/pluginutils": "^5.4.0",
69
+ "@swc/core": "^1.15.40",
69
70
  "@swc/helpers": "^0.5.17",
70
71
  "clean-css": "^5.3.3",
71
72
  "magic-string": "^0.30.17",
72
73
  "nanospinner": "^1.2.2",
73
74
  "picomatch": "^4.0.2",
74
75
  "pretty-bytes": "^5.6.0",
75
- "rollup": "^4.52.4",
76
+ "rollup": "^4.61.0",
76
77
  "rollup-plugin-dts": "^6.4.1",
77
78
  "rollup-plugin-swc3": "^0.11.1",
78
79
  "rollup-preserve-directives": "^1.1.3",
@@ -81,7 +82,7 @@
81
82
  "yargs": "^17.7.2"
82
83
  },
83
84
  "peerDependencies": {
84
- "typescript": "^4.1 || ^5.0 || ^6.0"
85
+ "typescript": "^4.1 || ^5.0 || ^6.0 || ^7.0"
85
86
  },
86
87
  "peerDependenciesMeta": {
87
88
  "typescript": {
@@ -93,7 +94,7 @@
93
94
  },
94
95
  "devDependencies": {
95
96
  "@huozhi/testing-package": "1.0.0",
96
- "@swc-node/register": "^1.10.9",
97
+ "@swc-node/register": "^1.11.1",
97
98
  "@swc/types": "^0.1.17",
98
99
  "@tailwindcss/postcss": "^4.1.8",
99
100
  "@types/clean-css": "^4.2.11",
@@ -102,12 +103,12 @@
102
103
  "@types/react": "^19.2.14",
103
104
  "@types/react-dom": "^19.2.3",
104
105
  "@types/yargs": "^17.0.33",
105
- "@typescript/native-preview": "*",
106
+ "@typescript/typescript6": "^6.0.2",
106
107
  "bunchee": "link:./",
107
108
  "cross-env": "^7.0.3",
108
109
  "husky": "^9.0.11",
109
110
  "lint-staged": "^15.2.2",
110
- "next": "16.1.1-canary.31",
111
+ "next": "^16.2.6",
111
112
  "picocolors": "^1.0.0",
112
113
  "postcss": "^8.5.4",
113
114
  "prettier": "3.4.2",
@@ -115,10 +116,10 @@
115
116
  "react-dom": "^19.2.1",
116
117
  "tailwindcss": "^4.1.8",
117
118
  "typescript": "^6.0.2",
118
- "vitest": "^3.0.4"
119
+ "vitest": "^4.1.8"
119
120
  },
120
121
  "lint-staged": {
121
122
  "*.{js,jsx,ts,tsx,md,json,yml,yaml}": "prettier --write"
122
123
  },
123
- "packageManager": "pnpm@9.4.0"
124
+ "packageManager": "pnpm@11.10.0"
124
125
  }