rolldown-plugin-dts 0.16.0 → 0.16.2
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/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/{context-b9aW37YD.js → context-Digr9tkU.js} +3 -6
- package/dist/index.js +40 -34
- package/dist/tsc-context.js +1 -1
- package/dist/{tsc-B1sK0Lli.js → tsc-q7n7-QbP.js} +17 -18
- package/dist/tsc-worker.js +3 -4
- package/dist/tsc.js +2 -2
- package/package.json +11 -11
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright © 2025
|
|
3
|
+
Copyright © 2025-PRESENT Kevin Deng (https://github.com/sxzz)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -216,7 +216,7 @@ Furthermore, the test suite is authorized by them and distributed under the MIT
|
|
|
216
216
|
|
|
217
217
|
## License
|
|
218
218
|
|
|
219
|
-
[MIT](./LICENSE) License © 2025 [
|
|
219
|
+
[MIT](./LICENSE) License © 2025-PRESENT [Kevin Deng](https://github.com/sxzz)
|
|
220
220
|
|
|
221
221
|
<!-- Badges -->
|
|
222
222
|
|
|
@@ -3,13 +3,10 @@ import Debug from "debug";
|
|
|
3
3
|
//#region src/tsc/context.ts
|
|
4
4
|
const debug = Debug("rolldown-plugin-dts:tsc-context");
|
|
5
5
|
function createContext() {
|
|
6
|
-
const programs = [];
|
|
7
|
-
const files = /* @__PURE__ */ new Map();
|
|
8
|
-
const projects = /* @__PURE__ */ new Map();
|
|
9
6
|
return {
|
|
10
|
-
programs,
|
|
11
|
-
files,
|
|
12
|
-
projects
|
|
7
|
+
programs: [],
|
|
8
|
+
files: /* @__PURE__ */ new Map(),
|
|
9
|
+
projects: /* @__PURE__ */ new Map()
|
|
13
10
|
};
|
|
14
11
|
}
|
|
15
12
|
function invalidateContextFile(context, file) {
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RE_CSS, RE_DTS, RE_DTS_MAP, RE_JS, RE_NODE_MODULES, RE_TS, RE_VUE, filename_dts_to, filename_js_to_dts, filename_to_dts, replaceTemplateName, resolveTemplateFn } from "./filename-Dd76wOJT.js";
|
|
2
|
-
import { createContext, globalContext, invalidateContextFile } from "./context-
|
|
2
|
+
import { createContext, globalContext, invalidateContextFile } from "./context-Digr9tkU.js";
|
|
3
3
|
import Debug from "debug";
|
|
4
4
|
import _generate from "@babel/generator";
|
|
5
5
|
import { parse } from "@babel/parser";
|
|
@@ -232,8 +232,7 @@ function isNode(value) {
|
|
|
232
232
|
* @returns {Node | null}
|
|
233
233
|
*/
|
|
234
234
|
function walk(ast, { enter, leave }) {
|
|
235
|
-
|
|
236
|
-
return instance.visit(ast, null);
|
|
235
|
+
return new SyncWalker(enter, leave).visit(ast, null);
|
|
237
236
|
}
|
|
238
237
|
|
|
239
238
|
//#endregion
|
|
@@ -366,12 +365,11 @@ function createFakeJsPlugin({ sourcemap, cjsDefault }) {
|
|
|
366
365
|
...appendStmts
|
|
367
366
|
];
|
|
368
367
|
typeOnlyMap.set(id, typeOnlyIds);
|
|
369
|
-
|
|
368
|
+
return generate(file, {
|
|
370
369
|
comments: false,
|
|
371
370
|
sourceMaps: sourcemap,
|
|
372
371
|
sourceFileName: id
|
|
373
372
|
});
|
|
374
|
-
return result;
|
|
375
373
|
}
|
|
376
374
|
function renderChunk(code, chunk) {
|
|
377
375
|
if (!RE_DTS.test(chunk.fileName)) return;
|
|
@@ -429,12 +427,11 @@ function createFakeJsPlugin({ sourcemap, cjsDefault }) {
|
|
|
429
427
|
program.body[0].leadingComments ||= [];
|
|
430
428
|
program.body[0].leadingComments.unshift(...comments);
|
|
431
429
|
}
|
|
432
|
-
|
|
430
|
+
return generate(file, {
|
|
433
431
|
comments: true,
|
|
434
432
|
sourceMaps: sourcemap,
|
|
435
433
|
sourceFileName: chunk.fileName
|
|
436
434
|
});
|
|
437
|
-
return result;
|
|
438
435
|
}
|
|
439
436
|
function getIdentifierIndex(name) {
|
|
440
437
|
if (name in identifierMap) return identifierMap[name]++;
|
|
@@ -503,13 +500,12 @@ function createFakeJsPlugin({ sourcemap, cjsDefault }) {
|
|
|
503
500
|
overwriteNode(node, t.tsTypeReference(local, node.typeParameters));
|
|
504
501
|
replacement = local;
|
|
505
502
|
} else overwriteNode(node, local);
|
|
506
|
-
|
|
503
|
+
return {
|
|
507
504
|
...TSEntityNameToRuntime(local),
|
|
508
505
|
replace(newNode) {
|
|
509
506
|
overwriteNode(replacement, newNode);
|
|
510
507
|
}
|
|
511
508
|
};
|
|
512
|
-
return dep;
|
|
513
509
|
}
|
|
514
510
|
}
|
|
515
511
|
const REFERENCE_RE = /\/\s*<reference\s+(?:path|types)=/;
|
|
@@ -546,29 +542,19 @@ function patchImportExport(node, typeOnlyIds, cjsDefault) {
|
|
|
546
542
|
node.source.value = filename_dts_to(node.source.value, "js");
|
|
547
543
|
return node;
|
|
548
544
|
}
|
|
549
|
-
if (cjsDefault && node.type === "ExportNamedDeclaration" && !node.source && node.specifiers.length === 1 && node.specifiers[0].type === "ExportSpecifier" && resolveString(node.specifiers[0].exported) === "default") {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
expression: defaultExport.local
|
|
554
|
-
};
|
|
555
|
-
}
|
|
545
|
+
if (cjsDefault && node.type === "ExportNamedDeclaration" && !node.source && node.specifiers.length === 1 && node.specifiers[0].type === "ExportSpecifier" && resolveString(node.specifiers[0].exported) === "default") return {
|
|
546
|
+
type: "TSExportAssignment",
|
|
547
|
+
expression: node.specifiers[0].local
|
|
548
|
+
};
|
|
556
549
|
}
|
|
557
550
|
}
|
|
558
551
|
function patchTsNamespace(nodes) {
|
|
559
552
|
const emptyObjectAssignments = /* @__PURE__ */ new Map();
|
|
560
553
|
const removed = /* @__PURE__ */ new Set();
|
|
561
554
|
for (const [i, node] of nodes.entries()) {
|
|
562
|
-
|
|
563
|
-
if (
|
|
564
|
-
const [binding, exports] =
|
|
565
|
-
if (binding.type !== "Identifier") continue;
|
|
566
|
-
const bindingText = binding.name;
|
|
567
|
-
if (emptyObjectAssignments.has(bindingText)) {
|
|
568
|
-
const emptyNode = emptyObjectAssignments.get(bindingText);
|
|
569
|
-
emptyObjectAssignments.delete(bindingText);
|
|
570
|
-
removed.add(emptyNode);
|
|
571
|
-
}
|
|
555
|
+
const result = handleExport(node) || handleLegacyExport(node);
|
|
556
|
+
if (!result) continue;
|
|
557
|
+
const [binding, exports] = result;
|
|
572
558
|
nodes[i] = {
|
|
573
559
|
type: "TSModuleDeclaration",
|
|
574
560
|
id: binding,
|
|
@@ -590,6 +576,31 @@ function patchTsNamespace(nodes) {
|
|
|
590
576
|
};
|
|
591
577
|
}
|
|
592
578
|
return nodes.filter((node) => !removed.has(node));
|
|
579
|
+
function handleExport(node) {
|
|
580
|
+
if (node.type !== "VariableDeclaration" || node.declarations.length !== 1 || node.declarations[0].id.type !== "Identifier" || node.declarations[0].init?.type !== "CallExpression" || node.declarations[0].init.callee.type !== "Identifier" || node.declarations[0].init.callee.name !== "__export" || node.declarations[0].init.arguments.length !== 1 || node.declarations[0].init.arguments[0].type !== "ObjectExpression") return false;
|
|
581
|
+
const source = node.declarations[0].id;
|
|
582
|
+
const exports = node.declarations[0].init.arguments[0];
|
|
583
|
+
return [source, exports];
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* @deprecated remove me in future
|
|
587
|
+
*/
|
|
588
|
+
function handleLegacyExport(node) {
|
|
589
|
+
if (node.type === "VariableDeclaration" && node.declarations.length === 1 && node.declarations[0].id.type === "Identifier" && node.declarations[0].init?.type === "ObjectExpression" && node.declarations[0].init.properties.length === 0) {
|
|
590
|
+
emptyObjectAssignments.set(node.declarations[0].id.name, node);
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
if (node.type !== "ExpressionStatement" || node.expression.type !== "CallExpression" || node.expression.callee.type !== "Identifier" || !node.expression.callee.name.startsWith("__export")) return false;
|
|
594
|
+
const [binding, exports] = node.expression.arguments;
|
|
595
|
+
if (binding.type !== "Identifier" || exports.type !== "ObjectExpression") return false;
|
|
596
|
+
const bindingText = binding.name;
|
|
597
|
+
if (emptyObjectAssignments.has(bindingText)) {
|
|
598
|
+
const emptyNode = emptyObjectAssignments.get(bindingText);
|
|
599
|
+
emptyObjectAssignments.delete(bindingText);
|
|
600
|
+
removed.add(emptyNode);
|
|
601
|
+
}
|
|
602
|
+
return [binding, exports];
|
|
603
|
+
}
|
|
593
604
|
}
|
|
594
605
|
function rewriteImportExport(node, set, typeOnlyIds) {
|
|
595
606
|
if (node.type === "ImportDeclaration" || node.type === "ExportNamedDeclaration" && !node.declaration) {
|
|
@@ -734,10 +745,8 @@ function createGeneratePlugin({ tsconfig, tsconfigRaw, build, incremental, cwd,
|
|
|
734
745
|
exclude: [RE_DTS, RE_NODE_MODULES]
|
|
735
746
|
} },
|
|
736
747
|
handler(code, id) {
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
const mod = this.getModuleInfo(id);
|
|
740
|
-
const isEntry = !!mod?.isEntry;
|
|
748
|
+
if (!RE_JS.test(id) || emitJs) {
|
|
749
|
+
const isEntry = !!this.getModuleInfo(id)?.isEntry;
|
|
741
750
|
const dtsId = filename_to_dts(id);
|
|
742
751
|
dtsMap.set(dtsId, {
|
|
743
752
|
code,
|
|
@@ -954,10 +963,7 @@ function createDtsResolvePlugin({ tsconfig, resolve }) {
|
|
|
954
963
|
if (RE_CSS.test(id)) return external;
|
|
955
964
|
const rolldownResolution = await this.resolve(id, importer, options);
|
|
956
965
|
const dtsResolution = resolveDtsPath(id, importer, rolldownResolution);
|
|
957
|
-
if (!dtsResolution)
|
|
958
|
-
const isFileImport = id.startsWith(".") || path.isAbsolute(id);
|
|
959
|
-
return isFileImport ? null : external;
|
|
960
|
-
}
|
|
966
|
+
if (!dtsResolution) return id.startsWith(".") || path.isAbsolute(id) ? null : external;
|
|
961
967
|
if (RE_NODE_MODULES.test(dtsResolution) && !shouldBundleNodeModule(id) && (!RE_NODE_MODULES.test(importer) || rolldownResolution?.external)) return external;
|
|
962
968
|
if (RE_DTS.test(dtsResolution)) return dtsResolution;
|
|
963
969
|
if (isSourceFile(dtsResolution)) {
|
package/dist/tsc-context.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { globalContext } from "./context-
|
|
1
|
+
import { globalContext } from "./context-Digr9tkU.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import Debug from "debug";
|
|
4
4
|
import path from "node:path";
|
|
@@ -70,6 +70,13 @@ const stripPrivateFields = (ctx) => {
|
|
|
70
70
|
return (sourceFile) => ts.visitNode(sourceFile, visitor, ts.isSourceFile) ?? sourceFile;
|
|
71
71
|
};
|
|
72
72
|
const customTransformers = { afterDeclarations: [stripPrivateFields] };
|
|
73
|
+
function setSourceMapRoot(map, originalFilePath, finalFilePath) {
|
|
74
|
+
if (!map) return;
|
|
75
|
+
if (map.sourceRoot) return;
|
|
76
|
+
const originalDir = path.posix.dirname(pathToFileURL(originalFilePath).pathname);
|
|
77
|
+
const finalDir = path.posix.dirname(pathToFileURL(finalFilePath).pathname);
|
|
78
|
+
if (originalDir !== finalDir) map.sourceRoot = path.posix.relative(finalDir, originalDir);
|
|
79
|
+
}
|
|
73
80
|
|
|
74
81
|
//#endregion
|
|
75
82
|
//#region src/tsc/emit-build.ts
|
|
@@ -81,8 +88,7 @@ function tscEmitBuild(tscOptions) {
|
|
|
81
88
|
const fsSystem = (incremental ? createFsSystem : createMemorySystem)(context.files);
|
|
82
89
|
const resolvedId = fsSystem.resolvePath(id);
|
|
83
90
|
if (resolvedId !== id) debug$3(`resolved id from ${id} to ${resolvedId}`);
|
|
84
|
-
const
|
|
85
|
-
const project = sourceFileToProjectMap.get(resolvedId);
|
|
91
|
+
const project = getOrBuildProjects(context, fsSystem, tsconfig, !incremental, sourcemap).get(resolvedId);
|
|
86
92
|
if (!project) {
|
|
87
93
|
debug$3(`unable to locate a project containing ${resolvedId}`);
|
|
88
94
|
return { error: `Unable to locate ${id} from the given tsconfig file ${tsconfig}` };
|
|
@@ -109,10 +115,7 @@ function tscEmitBuild(tscOptions) {
|
|
|
109
115
|
continue;
|
|
110
116
|
}
|
|
111
117
|
map = JSON.parse(text);
|
|
112
|
-
|
|
113
|
-
const outputFileDir = path.posix.dirname(pathToFileURL(outputFile).pathname);
|
|
114
|
-
const resolvedIdDir = path.posix.dirname(pathToFileURL(resolvedId).pathname);
|
|
115
|
-
if (outputFileDir !== resolvedIdDir) map.sourceRoot = path.posix.relative(resolvedIdDir, outputFileDir);
|
|
118
|
+
setSourceMapRoot(map, outputFile, resolvedId);
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
if (code) return {
|
|
@@ -148,11 +151,10 @@ function buildProjects(fsSystem, tsconfig, force, sourcemap) {
|
|
|
148
151
|
const projects = collectProjectGraph(tsconfig, fsSystem, force, sourcemap);
|
|
149
152
|
debug$3("collected %d projects: %j", projects.length, projects.map((project) => project.tsconfigPath));
|
|
150
153
|
const host = ts.createSolutionBuilderHost(fsSystem, createProgramWithPatchedCompilerOptions);
|
|
151
|
-
const
|
|
154
|
+
const exitStatus = ts.createSolutionBuilder(host, [tsconfig], {
|
|
152
155
|
force,
|
|
153
156
|
verbose: true
|
|
154
|
-
})
|
|
155
|
-
const exitStatus = builder.build(void 0, void 0, void 0, (project) => {
|
|
157
|
+
}).build(void 0, void 0, void 0, (project) => {
|
|
156
158
|
debug$3(`transforming project ${project}`);
|
|
157
159
|
return customTransformers;
|
|
158
160
|
});
|
|
@@ -261,8 +263,7 @@ function createVueProgramFactory(ts$1) {
|
|
|
261
263
|
resolver.addConfig($configRaw?.vueCompilerOptions ?? {}, $rootDir);
|
|
262
264
|
const vueOptions = resolver.build();
|
|
263
265
|
vue.writeGlobalTypes(vueOptions, ts$2.sys.writeFile);
|
|
264
|
-
|
|
265
|
-
return { languagePlugins: [vueLanguagePlugin] };
|
|
266
|
+
return { languagePlugins: [vue.createVueLanguagePlugin(ts$2, options.options, vueOptions, (id) => id)] };
|
|
266
267
|
});
|
|
267
268
|
}
|
|
268
269
|
|
|
@@ -324,8 +325,7 @@ function createTsProgramFromParsedConfig({ parsedConfig, fsSystem, baseDir, id,
|
|
|
324
325
|
};
|
|
325
326
|
const rootNames = [...new Set([id, ...entries || parsedConfig.fileNames].map((f) => fsSystem.resolvePath(f)))];
|
|
326
327
|
const host = ts.createCompilerHost(compilerOptions, true);
|
|
327
|
-
const
|
|
328
|
-
const program = createProgram({
|
|
328
|
+
const program = (vue ? createVueProgramFactory(ts) : ts.createProgram)({
|
|
329
329
|
rootNames,
|
|
330
330
|
options: compilerOptions,
|
|
331
331
|
host,
|
|
@@ -334,8 +334,7 @@ function createTsProgramFromParsedConfig({ parsedConfig, fsSystem, baseDir, id,
|
|
|
334
334
|
const sourceFile = program.getSourceFile(id);
|
|
335
335
|
if (!sourceFile) {
|
|
336
336
|
debug$1(`source file not found in program: ${id}`);
|
|
337
|
-
|
|
338
|
-
if (hasReferences) throw new Error(`[rolldown-plugin-dts] Unable to load ${id}; You have "references" in your tsconfig file. Perhaps you want to add \`dts: { build: true }\` in your config?`);
|
|
337
|
+
if (!!parsedConfig.projectReferences?.length) throw new Error(`[rolldown-plugin-dts] Unable to load ${id}; You have "references" in your tsconfig file. Perhaps you want to add \`dts: { build: true }\` in your config?`);
|
|
339
338
|
if (!fsSystem.fileExists(id)) {
|
|
340
339
|
debug$1(`File ${id} does not exist on disk.`);
|
|
341
340
|
throw new Error(`Source file not found: ${id}`);
|
|
@@ -351,8 +350,7 @@ function createTsProgramFromParsedConfig({ parsedConfig, fsSystem, baseDir, id,
|
|
|
351
350
|
}
|
|
352
351
|
function tscEmitCompiler(tscOptions) {
|
|
353
352
|
debug$1(`running tscEmitCompiler ${tscOptions.id}`);
|
|
354
|
-
const
|
|
355
|
-
const { program, file } = module;
|
|
353
|
+
const { program, file } = createOrGetTsModule(tscOptions);
|
|
356
354
|
debug$1(`got source file: ${file.fileName}`);
|
|
357
355
|
let dtsCode;
|
|
358
356
|
let map;
|
|
@@ -360,6 +358,7 @@ function tscEmitCompiler(tscOptions) {
|
|
|
360
358
|
if (fileName.endsWith(".map")) {
|
|
361
359
|
debug$1(`emit dts sourcemap: ${fileName}`);
|
|
362
360
|
map = JSON.parse(code);
|
|
361
|
+
setSourceMapRoot(map, fileName, tscOptions.id);
|
|
363
362
|
} else {
|
|
364
363
|
debug$1(`emit dts: ${fileName}`);
|
|
365
364
|
dtsCode = code;
|
package/dist/tsc-worker.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import "./context-
|
|
2
|
-
import { tscEmit } from "./tsc-
|
|
1
|
+
import "./context-Digr9tkU.js";
|
|
2
|
+
import { tscEmit } from "./tsc-q7n7-QbP.js";
|
|
3
3
|
import process from "node:process";
|
|
4
4
|
import { createBirpc } from "birpc";
|
|
5
5
|
|
|
6
6
|
//#region src/tsc/worker.ts
|
|
7
|
-
|
|
8
|
-
createBirpc(functions, {
|
|
7
|
+
createBirpc({ tscEmit }, {
|
|
9
8
|
post: (data) => process.send(data),
|
|
10
9
|
on: (fn) => process.on("message", fn)
|
|
11
10
|
});
|
package/dist/tsc.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rolldown-plugin-dts",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.2",
|
|
4
4
|
"description": "A Rolldown plugin to generate and bundle dts files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "git",
|
|
21
21
|
"url": "git+https://github.com/sxzz/rolldown-plugin-dts.git"
|
|
22
22
|
},
|
|
23
|
-
"author": "
|
|
23
|
+
"author": "Kevin Deng <sxzz@sxzz.moe>",
|
|
24
24
|
"funding": "https://github.com/sponsors/sxzz",
|
|
25
25
|
"files": [
|
|
26
26
|
"dist"
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@babel/generator": "^7.28.3",
|
|
61
|
-
"@babel/parser": "^7.28.
|
|
62
|
-
"@babel/types": "^7.28.
|
|
61
|
+
"@babel/parser": "^7.28.4",
|
|
62
|
+
"@babel/types": "^7.28.4",
|
|
63
63
|
"ast-kit": "^2.1.2",
|
|
64
64
|
"birpc": "^2.5.0",
|
|
65
65
|
"debug": "^4.4.1",
|
|
@@ -72,19 +72,19 @@
|
|
|
72
72
|
"@sxzz/test-utils": "^0.5.10",
|
|
73
73
|
"@types/babel__generator": "^7.27.0",
|
|
74
74
|
"@types/debug": "^4.1.12",
|
|
75
|
-
"@types/node": "^24.3.
|
|
76
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
75
|
+
"@types/node": "^24.3.1",
|
|
76
|
+
"@typescript/native-preview": "7.0.0-dev.20250910.1",
|
|
77
77
|
"@volar/typescript": "^2.4.23",
|
|
78
78
|
"@vue/language-core": "^3.0.6",
|
|
79
79
|
"bumpp": "^10.2.3",
|
|
80
80
|
"diff": "^8.0.2",
|
|
81
|
-
"eslint": "^9.
|
|
81
|
+
"eslint": "^9.35.0",
|
|
82
82
|
"estree-walker": "^3.0.3",
|
|
83
83
|
"prettier": "^3.6.2",
|
|
84
|
-
"rolldown": "^1.0.0-beta.
|
|
84
|
+
"rolldown": "^1.0.0-beta.36",
|
|
85
85
|
"rollup-plugin-dts": "^6.2.3",
|
|
86
|
-
"tinyglobby": "^0.2.
|
|
87
|
-
"tsdown": "^0.
|
|
86
|
+
"tinyglobby": "^0.2.15",
|
|
87
|
+
"tsdown": "^0.15.0",
|
|
88
88
|
"typescript": "^5.9.2",
|
|
89
89
|
"vitest": "^3.2.4",
|
|
90
90
|
"vue": "^3.5.21",
|
|
@@ -102,6 +102,6 @@
|
|
|
102
102
|
"test": "vitest",
|
|
103
103
|
"typecheck": "tsc --noEmit",
|
|
104
104
|
"format": "prettier --cache --write .",
|
|
105
|
-
"release": "bumpp
|
|
105
|
+
"release": "bumpp"
|
|
106
106
|
}
|
|
107
107
|
}
|