@voidzero-dev/vite-plus-core 0.2.5 → 0.2.6

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 (79) hide show
  1. package/LICENSE +31 -7
  2. package/dist/rolldown/cli.d.mts +1 -1
  3. package/dist/rolldown/cli.mjs +6 -6
  4. package/dist/rolldown/config.d.mts +16 -17
  5. package/dist/rolldown/config.mjs +2 -2
  6. package/dist/rolldown/experimental-index.d.mts +164 -155
  7. package/dist/rolldown/experimental-index.mjs +23 -14
  8. package/dist/rolldown/experimental-runtime-types.d.ts +111 -41
  9. package/dist/rolldown/filter-index.d.mts +6 -5
  10. package/dist/rolldown/get-log-filter.d.mts +2 -2
  11. package/dist/rolldown/index.d.mts +3 -3
  12. package/dist/rolldown/index.mjs +4 -4
  13. package/dist/rolldown/parallel-plugin-worker.d.mts +1 -1
  14. package/dist/rolldown/parallel-plugin-worker.mjs +2 -2
  15. package/dist/rolldown/parallel-plugin.d.mts +3 -4
  16. package/dist/rolldown/parse-ast-index.d.mts +19 -20
  17. package/dist/rolldown/parse-ast-index.mjs +1 -1
  18. package/dist/rolldown/plugins-index.d.mts +27 -28
  19. package/dist/rolldown/plugins-index.mjs +2 -2
  20. package/dist/rolldown/shared/{binding-D26QphWG.d.mts → binding-Dbbi0RbO.d.mts} +37 -25
  21. package/dist/rolldown/shared/{binding-TuFFIE_J.mjs → binding-Dby9rwGk.mjs} +26 -26
  22. package/dist/rolldown/shared/{bindingify-input-options-CwbcQL6W.mjs → bindingify-input-options-DVQ4K-zY.mjs} +5 -5
  23. package/dist/rolldown/shared/{constructors-BbWPse2X.d.mts → constructors-CSWbNgBZ.d.mts} +9 -10
  24. package/dist/rolldown/shared/{constructors-D_3i7dpX.mjs → constructors-CuGa75s-.mjs} +1 -1
  25. package/dist/rolldown/shared/define-config-B-IDOhDz.d.mts +4003 -0
  26. package/dist/rolldown/shared/{error-BHRSI0R7.mjs → error-DFGNOCle.mjs} +1 -1
  27. package/dist/rolldown/shared/get-log-filter-AjBknEEO.d.mts +34 -0
  28. package/dist/rolldown/shared/{load-config-Bd7MgqCK.mjs → load-config-R0z2olkB.mjs} +1 -1
  29. package/dist/rolldown/shared/{logging-BSNejiLS.d.mts → logging-xuHO4mAy.d.mts} +6 -6
  30. package/dist/rolldown/shared/{normalize-string-or-regex-dnh67V_w.mjs → normalize-string-or-regex-SiXbePVH.mjs} +1 -1
  31. package/dist/rolldown/shared/{parse-B6_waszz.mjs → parse-D5dkElpf.mjs} +2 -2
  32. package/dist/rolldown/shared/{resolve-tsconfig-DxqIJB3x.mjs → resolve-tsconfig-2TXRF_zr.mjs} +2 -2
  33. package/dist/rolldown/shared/{rolldown-CACDGVWV.mjs → rolldown-BnV7isAX.mjs} +1 -1
  34. package/dist/rolldown/shared/{rolldown-build-BV22mk7t.mjs → rolldown-build-BGXNOfvH.mjs} +4 -4
  35. package/dist/rolldown/shared/transform-Cs2bUDRH.d.mts +148 -0
  36. package/dist/rolldown/shared/{watch-CS_JygCu.mjs → watch-DVucf-VG.mjs} +4 -4
  37. package/dist/rolldown/utils-index.d.mts +29 -30
  38. package/dist/rolldown/utils-index.mjs +6 -8
  39. package/dist/tsdown/{build-BlM3pDGJ-C8Uovnt4.js → build-oq13wECG-Bymq3jT5.js} +131 -1240
  40. package/dist/tsdown/debug-BntVTkRq-BGIoAiTa.js +159 -0
  41. package/dist/tsdown/{detect-BNXt7gkp-DKAC9Z7n.js → detect-DGhJGEqb-S-tkSzpt.js} +7 -1
  42. package/dist/tsdown/{dist-Pjag7IPt.js → dist-CxIM8o7n.js} +1936 -2529
  43. package/dist/tsdown/dist-DCMiHFrJ.js +1061 -0
  44. package/dist/tsdown/index-types.d.ts +729 -553
  45. package/dist/tsdown/index.js +4 -4
  46. package/dist/tsdown/internal-C7ewSPAZ.js +3 -0
  47. package/dist/tsdown/load-tsc-BKULZsrs-BFmeD6Bu.js +18 -0
  48. package/dist/tsdown/{main-BlTcyuFi.js → main-BdzlWPt6.js} +214 -9
  49. package/dist/tsdown/{resolver-DtsKFXi2-B8Z3WwZh.js → resolver-cwLsPb2o-oj1hqxK6.js} +4 -3
  50. package/dist/tsdown/run.js +4 -4
  51. package/dist/tsdown/{src-CK50m8R_.js → src-BV-UJr_R.js} +5 -5
  52. package/dist/tsdown/target-CNxIDvSz-eoHNdJNs.js +576 -0
  53. package/dist/tsdown/tsc-context-CA76SkkZ.js +23 -0
  54. package/dist/tsdown/{tsc-CilQvmj4.js → tsc-zcbB6ZVY.js} +49 -116
  55. package/dist/tsdown/tsdown-css.js +5 -5
  56. package/dist/tsdown/tsdown-exe.js +129 -877
  57. package/dist/vite/client/client.mjs +5 -5
  58. package/dist/vite/node/chunks/build.js +19 -19
  59. package/dist/vite/node/chunks/moduleRunnerTransport.d.ts +25 -26
  60. package/dist/vite/node/chunks/node.js +73 -38
  61. package/dist/vite/node/chunks/postcss-import.js +10 -10
  62. package/dist/vite/node/index.d.ts +1282 -1283
  63. package/dist/vite/node/module-runner.d.ts +76 -77
  64. package/dist/vite/node/module-runner.js +6 -7
  65. package/package.json +16 -16
  66. package/dist/rolldown/shared/define-config-BhJ90aEv.d.mts +0 -3978
  67. package/dist/rolldown/shared/get-log-filter-BpNVNJ5-.d.mts +0 -35
  68. package/dist/rolldown/shared/transform-BPrUvqEZ.d.mts +0 -149
  69. package/dist/tsdown/debug-B1wUEHkd-DhRzGJTf.js +0 -265
  70. package/dist/tsdown/fs-qxJxxoCE-B_amenYz.js +0 -46
  71. package/dist/tsdown/general-Cp4NiJNK-xAqmPhMP.js +0 -97
  72. package/dist/tsdown/internal-Bn6NGoha.js +0 -3
  73. package/dist/tsdown/npm_cjs_chunk_range.cjs +0 -475
  74. package/dist/tsdown/npm_cjs_chunk_semver.cjs +0 -357
  75. package/dist/tsdown/npm_entry_semver_functions_coerce.cjs +0 -52
  76. package/dist/tsdown/npm_entry_semver_functions_satisfies.cjs +0 -19
  77. package/dist/tsdown/npm_entry_semver_ranges_min-version.cjs +0 -46
  78. package/dist/tsdown/target-CqeSqtms-CIvlAiuG.js +0 -35
  79. package/dist/tsdown/tsc-context-BusiAGCd.js +0 -27
@@ -0,0 +1,576 @@
1
+ import { C as resolveComma, E as toArray, l as bold, p as red, r as createDebug, t as R, u as dim, v as importWithError } from "./main-BdzlWPt6.js";
2
+ import process from "node:process";
3
+ import path from "node:path";
4
+ import { RUNTIME_MODULE_ID } from "@voidzero-dev/vite-plus-core/rolldown";
5
+ import { access, cp, mkdir, mkdtemp, rm, stat, writeFile } from "node:fs/promises";
6
+ import { exactRegex } from "@voidzero-dev/vite-plus-core/rolldown/filter";
7
+ import { tmpdir } from "node:os";
8
+ //#region ../../node_modules/.pnpm/tsdown@0.22.13_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.13_@tsdown+exe@0.22.13_@t_f26a610f558bef85f3db2230cc877c56/node_modules/tsdown/dist/format-DLxyxnif.mjs
9
+ function fsExists(path) {
10
+ return access(path).then(() => true, () => false);
11
+ }
12
+ function fsStat(path) {
13
+ return stat(path).catch(() => null);
14
+ }
15
+ function fsRemove(path) {
16
+ return rm(path, {
17
+ force: true,
18
+ recursive: true
19
+ }).catch(() => {});
20
+ }
21
+ function fsCopy(from, to) {
22
+ return cp(from, to, {
23
+ recursive: true,
24
+ force: true
25
+ });
26
+ }
27
+ function lowestCommonAncestor(...filepaths) {
28
+ if (filepaths.length === 0) return "";
29
+ if (filepaths.length === 1) return path.dirname(filepaths[0]);
30
+ filepaths = filepaths.map(path.normalize);
31
+ const [first, ...rest] = filepaths;
32
+ let ancestor = first.split(path.sep);
33
+ for (const filepath of rest) {
34
+ const directories = filepath.split(path.sep, ancestor.length);
35
+ let index = 0;
36
+ for (const directory of directories) if (directory === ancestor[index]) index += 1;
37
+ else {
38
+ ancestor = ancestor.slice(0, index);
39
+ break;
40
+ }
41
+ ancestor = ancestor.slice(0, index);
42
+ }
43
+ return ancestor.length <= 1 && ancestor[0] === "" ? path.sep + ancestor[0] : ancestor.join(path.sep);
44
+ }
45
+ function stripExtname(filePath) {
46
+ const ext = path.extname(filePath);
47
+ if (!ext.length) return filePath;
48
+ return filePath.slice(0, -ext.length);
49
+ }
50
+ function formatBytes(bytes) {
51
+ if (bytes === Infinity) return void 0;
52
+ if (bytes > 1e6) return `${(bytes / 1e6).toFixed(2)} MB`;
53
+ return `${(bytes / 1e3).toFixed(2)} kB`;
54
+ }
55
+ //#endregion
56
+ //#region ../../node_modules/.pnpm/rolldown-plugin-dts@0.27.12_@typescript+native-preview@7.0.0-dev.20260605.1_oxc-resolve_d94a4da753642eee691447f5bf042e95/node_modules/rolldown-plugin-dts/dist/filename-BrNNypc2.mjs
57
+ const RE_JS = /\.([cm]?)jsx?$/;
58
+ const RE_TS = /\.([cm]?)tsx?$/;
59
+ const RE_DTS = /\.d\.([cm]?)ts$/;
60
+ const RE_DTS_MAP = /\.d\.([cm]?)ts\.map$/;
61
+ const RE_NODE_MODULES = /[\\/]node_modules[\\/]/;
62
+ const RE_CSS = /\.(?:css|scss|sass|less|styl|stylus)$/;
63
+ const RE_JSON = /\.json$/;
64
+ const RE_ROLLDOWN_RUNTIME = exactRegex(RUNTIME_MODULE_ID);
65
+ function filename_js_to_dts(id) {
66
+ return id.replace(RE_JS, ".d.$1ts");
67
+ }
68
+ function filename_to_dts(id, volarContext) {
69
+ id = volarContext?.toTsFilename?.(id) ?? id;
70
+ return id.replace(RE_TS, ".d.$1ts").replace(RE_JS, ".d.$1ts").replace(RE_JSON, ".json.d.ts");
71
+ }
72
+ function filename_dts_to(id, ext) {
73
+ return id.replace(RE_DTS, `.$1${ext}`);
74
+ }
75
+ function resolveTemplateFn(fn, chunk) {
76
+ return typeof fn === "function" ? fn(chunk) : fn;
77
+ }
78
+ function replaceTemplateName(template, name) {
79
+ return template.replaceAll("[name]", name);
80
+ }
81
+ //#endregion
82
+ //#region ../../node_modules/.pnpm/verkit@0.1.2/node_modules/verkit/dist/index.js
83
+ const LETTER_DASH_NUMBER = "[a-zA-Z0-9-]";
84
+ const NUMERIC_IDENTIFIER = String.raw`0|[1-9]\d*`;
85
+ const NUMERIC_IDENTIFIER_LOOSE = String.raw`\d+`;
86
+ const NON_NUMERIC_IDENTIFIER = String.raw`\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;
87
+ const MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})`;
88
+ const MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})`;
89
+ const PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;
90
+ const PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;
91
+ const PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\.${PRERELEASE_IDENTIFIER})*))`;
92
+ const PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;
93
+ const BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;
94
+ const BUILD = String.raw`(?:\+(${BUILD_IDENTIFIER}(?:\.${BUILD_IDENTIFIER})*))`;
95
+ const FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;
96
+ const LOOSE_PLAIN = String.raw`[v=\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;
97
+ const GREATER_LESS_THAN = "((?:<|>)?=?)";
98
+ const XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\*`;
99
+ const XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\*`;
100
+ const XRANGE_PLAIN = String.raw`[v=\s]*(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;
101
+ const XRANGE_PLAIN_LOOSE = String.raw`[v=\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;
102
+ const LONE_TILDE = "(?:~>?)";
103
+ const LONE_CARET = String.raw`(?:\^)`;
104
+ const COERCE_PLAIN = String.raw`(^|[^\d])(\d{1,${16}})(?:\.(\d{1,${16}}))?(?:\.(\d{1,${16}}))?`;
105
+ const COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\d])`;
106
+ const COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\d])`;
107
+ function makeSafeRegexSource(source) {
108
+ const replacements = [
109
+ [String.raw`\s`, 1],
110
+ [String.raw`\d`, 256],
111
+ [LETTER_DASH_NUMBER, 250]
112
+ ];
113
+ for (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);
114
+ return source;
115
+ }
116
+ function safeRegex(source, flags) {
117
+ return new RegExp(makeSafeRegexSource(source), flags);
118
+ }
119
+ const NUMERIC$1 = /^\d+$/;
120
+ function compareIdentifiers(left, right) {
121
+ if (typeof left === "number" && typeof right === "number") return left === right ? 0 : left < right ? -1 : 1;
122
+ const leftNumeric = NUMERIC$1.test(String(left));
123
+ const rightNumeric = NUMERIC$1.test(String(right));
124
+ const normalizedLeft = leftNumeric ? Number(left) : left;
125
+ const normalizedRight = rightNumeric ? Number(right) : right;
126
+ return normalizedLeft === normalizedRight ? 0 : leftNumeric && !rightNumeric ? -1 : rightNumeric && !leftNumeric ? 1 : normalizedLeft < normalizedRight ? -1 : 1;
127
+ }
128
+ const FULL = safeRegex(`^${FULL_PLAIN}$`);
129
+ const LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);
130
+ safeRegex(`^${PRERELEASE}$`);
131
+ safeRegex(`^${PRERELEASE_LOOSE}$`);
132
+ const COERCE_EXACT = safeRegex(COERCE);
133
+ const COERCE_FULL_EXACT = safeRegex(COERCE_FULL);
134
+ const NUMERIC = /^\d+$/;
135
+ function formatComparableVersion(version) {
136
+ const base = `${version.major}.${version.minor}.${version.patch}`;
137
+ return version.prerelease.length > 0 ? `${base}-${version.prerelease.join(".")}` : base;
138
+ }
139
+ function formatFullVersion(version) {
140
+ const comparable = formatComparableVersion(version);
141
+ return version.build.length > 0 ? `${comparable}+${version.build.join(".")}` : comparable;
142
+ }
143
+ function parse$1(version, options = {}) {
144
+ if (typeof version !== "string") return version;
145
+ if (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);
146
+ const match = version.trim().match(options.loose ? LOOSE : FULL);
147
+ if (!match) throw new TypeError(`Invalid version syntax: ${version}`);
148
+ const major = Number(match[1]);
149
+ const minor = Number(match[2]);
150
+ const patch = Number(match[3]);
151
+ if (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);
152
+ if (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);
153
+ if (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);
154
+ const prerelease = match[4] ? match[4].split(".").map((identifier) => {
155
+ if (NUMERIC.test(identifier)) {
156
+ const numeric = Number(identifier);
157
+ if (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;
158
+ }
159
+ return identifier;
160
+ }) : [];
161
+ return {
162
+ build: match[5] ? match[5].split(".") : [],
163
+ major,
164
+ minor,
165
+ patch,
166
+ prerelease
167
+ };
168
+ }
169
+ function tryParse(version, options = {}) {
170
+ try {
171
+ return parse$1(version, options);
172
+ } catch {
173
+ return null;
174
+ }
175
+ }
176
+ function compareMainParsed(left, right) {
177
+ return left.major === right.major ? left.minor === right.minor ? left.patch === right.patch ? 0 : left.patch < right.patch ? -1 : 1 : left.minor < right.minor ? -1 : 1 : left.major < right.major ? -1 : 1;
178
+ }
179
+ function comparePrereleaseParsed(left, right) {
180
+ if (left.prerelease.length > 0 && right.prerelease.length === 0) return -1;
181
+ if (left.prerelease.length === 0 && right.prerelease.length > 0) return 1;
182
+ if (left.prerelease.length === 0 && right.prerelease.length === 0) return 0;
183
+ for (let index = 0;; index++) {
184
+ const leftIdentifier = left.prerelease[index];
185
+ const rightIdentifier = right.prerelease[index];
186
+ if (leftIdentifier === void 0 && rightIdentifier === void 0) return 0;
187
+ if (rightIdentifier === void 0) return 1;
188
+ if (leftIdentifier === void 0) return -1;
189
+ if (leftIdentifier !== rightIdentifier) return compareIdentifiers(leftIdentifier, rightIdentifier);
190
+ }
191
+ }
192
+ function compareParsed(left, right) {
193
+ return compareMainParsed(left, right) || comparePrereleaseParsed(left, right);
194
+ }
195
+ function coerceParsedVersion(value, options = {}) {
196
+ if (typeof value === "object") return value;
197
+ const input = typeof value === "number" ? String(value) : value;
198
+ if (typeof input !== "string") return null;
199
+ let match = null;
200
+ if (options.rtl) {
201
+ const expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, "g");
202
+ let next;
203
+ while ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {
204
+ if (!match || next.index + next[0].length !== match.index + match[0].length) match = next;
205
+ expression.lastIndex = next.index + next[1].length + next[2].length;
206
+ }
207
+ } else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);
208
+ if (!match) return null;
209
+ const major = match[2];
210
+ return tryParse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options);
211
+ }
212
+ const STRICT_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\s*(${FULL_PLAIN})$|^$`);
213
+ const LOOSE_COMPARATOR$1 = safeRegex(String.raw`^${GREATER_LESS_THAN}\s*(${LOOSE_PLAIN})$|^$`);
214
+ function parseComparator(comparator, options = {}) {
215
+ const normalized = comparator.trim().replaceAll(/\s+/g, " ");
216
+ const match = normalized.match(options.loose ? LOOSE_COMPARATOR$1 : STRICT_COMPARATOR);
217
+ if (!match) throw new TypeError(`Invalid comparator: ${normalized}`);
218
+ const operator = match[1] === "=" ? "" : match[1] || "";
219
+ const version = match[2] ? parse$1(match[2], options) : null;
220
+ return {
221
+ operator,
222
+ options,
223
+ value: version ? `${operator}${formatComparableVersion(version)}` : "",
224
+ version
225
+ };
226
+ }
227
+ function testParsedComparator(comparator, version) {
228
+ if (!comparator.version) return true;
229
+ const comparison = compareParsed(version, comparator.version);
230
+ switch (comparator.operator) {
231
+ case "": return comparison === 0;
232
+ case ">": return comparison > 0;
233
+ case ">=": return comparison >= 0;
234
+ case "<": return comparison < 0;
235
+ case "<=": return comparison <= 0;
236
+ }
237
+ }
238
+ function compare(left, right, options = {}) {
239
+ return compareParsed(parse$1(left, options), parse$1(right, options));
240
+ }
241
+ function isGreaterOrEqual(left, right, options = {}) {
242
+ return compare(left, right, options) >= 0;
243
+ }
244
+ const BUILD_STRIP = new RegExp(BUILD, "g");
245
+ const BUILD_SAFE = safeRegex(BUILD);
246
+ const STRICT_HYPHEN = safeRegex(String.raw`^\s*(${XRANGE_PLAIN})\s+-\s+(${XRANGE_PLAIN})\s*$`);
247
+ const LOOSE_HYPHEN = safeRegex(String.raw`^\s*(${XRANGE_PLAIN_LOOSE})\s+-\s+(${XRANGE_PLAIN_LOOSE})\s*$`);
248
+ const COMPARATOR_TRIM = safeRegex(String.raw`(\s*)${GREATER_LESS_THAN}\s*(${LOOSE_PLAIN}|${XRANGE_PLAIN})`, "g");
249
+ const TILDE_TRIM = safeRegex(String.raw`(\s*)${LONE_TILDE}\s+`, "g");
250
+ const CARET_TRIM = safeRegex(String.raw`(\s*)${LONE_CARET}\s+`, "g");
251
+ const STRICT_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN}$`);
252
+ const LOOSE_TILDE = safeRegex(`^${LONE_TILDE}${XRANGE_PLAIN_LOOSE}$`);
253
+ const STRICT_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN}$`);
254
+ const LOOSE_CARET = safeRegex(`^${LONE_CARET}${XRANGE_PLAIN_LOOSE}$`);
255
+ const STRICT_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\s*${XRANGE_PLAIN}$`);
256
+ const LOOSE_XRANGE = safeRegex(String.raw`^${GREATER_LESS_THAN}\s*${XRANGE_PLAIN_LOOSE}$`);
257
+ const STAR = safeRegex(String.raw`(<|>)?=?\s*\*`);
258
+ const GTE_ZERO = /^\s*>=\s*0\.0\.0\s*$/;
259
+ const GTE_ZERO_PRERELEASE = /^\s*>=\s*0\.0\.0-0\s*$/;
260
+ const LOOSE_COMPARATOR = safeRegex(String.raw`^${GREATER_LESS_THAN}\s*(${LOOSE_PLAIN})$|^$`);
261
+ function isWildcard(value) {
262
+ return !value || String(value).toLowerCase() === "x" || String(value) === "*";
263
+ }
264
+ function hasInvalidWildcardOrder(major, minor, patch) {
265
+ return isWildcard(major) && !isWildcard(minor) || isWildcard(minor) && Boolean(patch) && !isWildcard(patch);
266
+ }
267
+ function replaceTilde(comparator, options) {
268
+ const expression = options.loose ? LOOSE_TILDE : STRICT_TILDE;
269
+ const lowerPrerelease = options.includePrerelease ? "-0" : "";
270
+ return comparator.replace(expression, (_match, major, minor, patch, prerelease) => {
271
+ if (isWildcard(major)) return "";
272
+ if (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;
273
+ if (isWildcard(patch)) return `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0`;
274
+ return prerelease ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;
275
+ });
276
+ }
277
+ function replaceTildes(comparator, options) {
278
+ return comparator.trim().split(/\s+/).map((part) => replaceTilde(part, options)).join(" ");
279
+ }
280
+ function replaceCaret(comparator, options) {
281
+ const expression = options.loose ? LOOSE_CARET : STRICT_CARET;
282
+ const lowerPrerelease = options.includePrerelease ? "-0" : "";
283
+ return comparator.replace(expression, (_match, major, minor, patch, prerelease) => {
284
+ if (isWildcard(major)) return "";
285
+ if (isWildcard(minor)) return `>=${major}.0.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;
286
+ if (isWildcard(patch)) return major === "0" ? `>=${major}.${minor}.0${lowerPrerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.0${lowerPrerelease} <${Number(major) + 1}.0.0-0`;
287
+ if (prerelease) return major === "0" ? minor === "0" ? `>=${major}.${minor}.${patch}-${prerelease} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch}-${prerelease} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch}-${prerelease} <${Number(major) + 1}.0.0-0`;
288
+ return major === "0" ? minor === "0" ? `>=${major}.${minor}.${patch} <${major}.${minor}.${Number(patch) + 1}-0` : `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0` : `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;
289
+ });
290
+ }
291
+ function replaceCarets(comparator, options) {
292
+ return comparator.trim().split(/\s+/).map((part) => replaceCaret(part, options)).join(" ");
293
+ }
294
+ function replaceXRange(comparator, options) {
295
+ const expression = options.loose ? LOOSE_XRANGE : STRICT_XRANGE;
296
+ return comparator.trim().replace(expression, (match, rawOperator, rawMajor, rawMinor, rawPatch) => {
297
+ let operator = rawOperator;
298
+ let major = rawMajor;
299
+ let minor = rawMinor;
300
+ let patch = rawPatch;
301
+ if (hasInvalidWildcardOrder(String(major), minor === void 0 ? void 0 : String(minor), patch === void 0 ? void 0 : String(patch))) return comparator;
302
+ const wildcardMajor = isWildcard(major);
303
+ const wildcardMinor = wildcardMajor || isWildcard(minor);
304
+ const wildcardPatch = wildcardMinor || isWildcard(patch);
305
+ if (operator === "=" && wildcardPatch) operator = "";
306
+ let prerelease = options.includePrerelease ? "-0" : "";
307
+ if (wildcardMajor) return operator === ">" || operator === "<" ? "<0.0.0-0" : "*";
308
+ if (operator && wildcardPatch) {
309
+ if (wildcardMinor) minor = 0;
310
+ patch = 0;
311
+ if (operator === ">") {
312
+ operator = ">=";
313
+ if (wildcardMinor) {
314
+ major = Number(major) + 1;
315
+ minor = 0;
316
+ } else minor = Number(minor) + 1;
317
+ } else if (operator === "<=") {
318
+ operator = "<";
319
+ if (wildcardMinor) major = Number(major) + 1;
320
+ else minor = Number(minor) + 1;
321
+ }
322
+ if (operator === "<") prerelease = "-0";
323
+ return `${operator}${major}.${minor}.${patch}${prerelease}`;
324
+ }
325
+ if (wildcardMinor) return `>=${major}.0.0${prerelease} <${Number(major) + 1}.0.0-0`;
326
+ if (wildcardPatch) return `>=${major}.${minor}.0${prerelease} <${major}.${Number(minor) + 1}.0-0`;
327
+ return match;
328
+ });
329
+ }
330
+ function replaceXRanges(comparator, options) {
331
+ return comparator.split(/\s+/).map((part) => replaceXRange(part, options)).join(" ");
332
+ }
333
+ function replaceHyphenRange(range, options) {
334
+ const expression = options.loose ? LOOSE_HYPHEN : STRICT_HYPHEN;
335
+ return range.replace(expression, (_match, rawFrom, fromMajor, fromMinor, fromPatch, fromPrerelease, _fromBuild, rawTo, toMajor, toMinor, toPatch, toPrerelease) => {
336
+ let from = rawFrom;
337
+ let to = rawTo;
338
+ if (isWildcard(fromMajor)) from = "";
339
+ else if (isWildcard(fromMinor)) from = `>=${fromMajor}.0.0${options.includePrerelease ? "-0" : ""}`;
340
+ else if (isWildcard(fromPatch)) from = `>=${fromMajor}.${fromMinor}.0${options.includePrerelease ? "-0" : ""}`;
341
+ else if (fromPrerelease) from = `>=${from}`;
342
+ else from = `>=${from}${options.includePrerelease ? "-0" : ""}`;
343
+ if (isWildcard(toMajor)) to = "";
344
+ else if (isWildcard(toMinor)) to = `<${Number(toMajor) + 1}.0.0-0`;
345
+ else if (isWildcard(toPatch)) to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;
346
+ else if (toPrerelease) to = `<=${toMajor}.${toMinor}.${toPatch}-${toPrerelease}`;
347
+ else if (options.includePrerelease) to = `<${toMajor}.${toMinor}.${Number(toPatch) + 1}-0`;
348
+ else to = `<=${to}`;
349
+ return `${from} ${to}`.trim();
350
+ });
351
+ }
352
+ function expandComparator(comparator, options) {
353
+ return replaceXRanges(replaceTildes(replaceCarets(comparator.replace(BUILD_SAFE, ""), options), options), options).trim().replace(STAR, "");
354
+ }
355
+ function parseSimpleRange(input, options) {
356
+ let parts = replaceHyphenRange(input.replace(BUILD_STRIP, ""), options).replace(COMPARATOR_TRIM, "$1$2$3").replace(TILDE_TRIM, "$1~").replace(CARET_TRIM, "$1^").split(" ").map((part) => expandComparator(part, options)).join(" ").split(/\s+/).map((part) => part.trim().replace(options.includePrerelease ? GTE_ZERO_PRERELEASE : GTE_ZERO, ""));
357
+ if (options.loose) parts = parts.filter((part) => LOOSE_COMPARATOR.test(part));
358
+ const unique = /* @__PURE__ */ new Map();
359
+ for (const comparator of parts.map((part) => parseComparator(part, options))) {
360
+ if (comparator.value === "<0.0.0-0") return [comparator];
361
+ unique.set(comparator.value, comparator);
362
+ }
363
+ if (unique.size > 1) unique.delete("");
364
+ return [...unique.values()];
365
+ }
366
+ function parseRange(range, options = {}) {
367
+ if (typeof range !== "string") return range;
368
+ const parsedOptions = { ...options };
369
+ const raw = range.trim().replaceAll(/\s+/g, " ");
370
+ let sets = raw.split("||").map((part) => parseSimpleRange(part.trim(), parsedOptions)).filter((set) => set.length > 0);
371
+ if (sets.length === 0) throw new TypeError(`Range contains no valid comparator sets: ${raw}`);
372
+ if (sets.length > 1) {
373
+ const first = sets[0];
374
+ sets = sets.filter((set) => set[0]?.value !== "<0.0.0-0");
375
+ if (sets.length === 0) sets = [first];
376
+ else if (sets.length > 1) {
377
+ const any = sets.find((set) => set.length === 1 && set[0]?.value === "");
378
+ if (any) sets = [any];
379
+ }
380
+ }
381
+ return {
382
+ normalized: sets.map((set) => set.map((comparator) => comparator.value).join(" ")).join("||"),
383
+ options: parsedOptions,
384
+ raw,
385
+ sets
386
+ };
387
+ }
388
+ function tryParseRange(range, options = {}) {
389
+ try {
390
+ return parseRange(range, options);
391
+ } catch {
392
+ return null;
393
+ }
394
+ }
395
+ function testComparatorSet(set, version, options) {
396
+ if (!set.every((comparator) => testParsedComparator(comparator, version))) return false;
397
+ if (version.prerelease.length === 0 || options.includePrerelease) return true;
398
+ return set.some((comparator) => {
399
+ const allowed = comparator.version;
400
+ return allowed !== null && allowed.prerelease.length > 0 && allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch;
401
+ });
402
+ }
403
+ function testParsedRange(range, version) {
404
+ return range.sets.some((set) => testComparatorSet(set, version, range.options));
405
+ }
406
+ function testRangeVersion(range, version) {
407
+ const parsed = tryParse(version, range.options);
408
+ return parsed ? testParsedRange(range, parsed) : false;
409
+ }
410
+ function satisfies(version, range, options = {}) {
411
+ const parsed = tryParseRange(range, options);
412
+ return parsed ? testRangeVersion(parsed, version) : false;
413
+ }
414
+ function nextVersionAfter(version) {
415
+ return parse$1(version.prerelease.length === 0 ? formatComparableVersion({
416
+ major: version.major,
417
+ minor: version.minor,
418
+ patch: version.patch + 1,
419
+ prerelease: []
420
+ }) : formatComparableVersion({
421
+ major: version.major,
422
+ minor: version.minor,
423
+ patch: version.patch,
424
+ prerelease: [...version.prerelease, 0]
425
+ }));
426
+ }
427
+ function findMinimumForRange(range, options = {}) {
428
+ const parsedRange = parseRange(range, options);
429
+ const zero = parse$1("0.0.0");
430
+ if (testParsedRange(parsedRange, zero)) return formatComparableVersion(zero);
431
+ const zeroPrerelease = parse$1("0.0.0-0");
432
+ if (testParsedRange(parsedRange, zeroPrerelease)) return formatComparableVersion(zeroPrerelease);
433
+ let minimum = null;
434
+ for (const set of parsedRange.sets) {
435
+ let setMinimum = null;
436
+ for (const comparator of set) {
437
+ if (!comparator.version) continue;
438
+ const candidate = comparator.operator === ">" ? nextVersionAfter(comparator.version) : comparator.operator === "" || comparator.operator === ">=" ? comparator.version : null;
439
+ if (candidate && (!setMinimum || compareParsed(candidate, setMinimum) > 0)) setMinimum = candidate;
440
+ }
441
+ if (setMinimum && (!minimum || compareParsed(minimum, setMinimum) > 0)) minimum = setMinimum;
442
+ }
443
+ return minimum && testParsedRange(parsedRange, minimum) ? formatComparableVersion(minimum) : null;
444
+ }
445
+ function normalize$1(version, options = {}) {
446
+ const parsed = tryParse(version, options);
447
+ return parsed ? formatComparableVersion(parsed) : null;
448
+ }
449
+ function coerce(value, options = {}) {
450
+ const parsed = coerceParsedVersion(value, options);
451
+ return parsed ? formatFullVersion(parsed) : null;
452
+ }
453
+ //#endregion
454
+ //#region ../../node_modules/.pnpm/tsdown@0.22.13_@arethetypeswrong+core@0.18.2_@tsdown+css@0.22.13_@tsdown+exe@0.22.13_@t_f26a610f558bef85f3db2230cc877c56/node_modules/tsdown/dist/target-CNxIDvSz.mjs
455
+ const NODE_SEA_MIN_VERSION = "25.7.0";
456
+ const NODE_SEA_MIN_VERSION_PARSED = parse$1(NODE_SEA_MIN_VERSION);
457
+ const debug = createDebug("tsdown:exe");
458
+ function validateSea({ dts, entry, logger, nameLabel }) {
459
+ if (process.versions.bun || process.versions.deno) throw new Error("The `exe` option is not supported in Bun and Deno environments.");
460
+ if (!isGreaterOrEqual(process.version, NODE_SEA_MIN_VERSION_PARSED)) throw new Error(`Node.js version ${process.version} does not support \`exe\` option. Please upgrade to Node.js ${NODE_SEA_MIN_VERSION} or later.`);
461
+ if (Object.keys(entry).length > 1) throw new Error(`The \`exe\` feature currently only supports single entry points. Found entries:\n${JSON.stringify(entry, void 0, 2)}`);
462
+ if (dts) logger.warn(nameLabel, `Generating .d.ts files with \`exe\` option is not recommended since they won't be included in the executable. Consider separating your library and executable targets if you need type declarations.`);
463
+ logger.info(nameLabel, "`exe` option is experimental and may change in future releases.");
464
+ }
465
+ async function buildExe(config, chunks) {
466
+ if (!config.exe) return;
467
+ const filteredChunks = chunks.filter((chunk) => !RE_DTS.test(chunk.fileName));
468
+ if (filteredChunks.length > 1) throw new Error(`The 'exe' feature currently only supports single-chunk outputs. Found ${filteredChunks.length} chunks.\nChunks:\n${filteredChunks.map((c) => `- ${c.fileName}`).join("\n")}`);
469
+ const chunk = filteredChunks[0];
470
+ debug("Building executable with SEA for chunk:", chunk.fileName);
471
+ const bundledFile = path.join(config.outDir, chunk.fileName);
472
+ const { targets } = config.exe;
473
+ if (targets?.length) {
474
+ if (config.exe.seaConfig?.executable) config.logger.warn(config.nameLabel, "`seaConfig.executable` is ignored when `targets` is specified.");
475
+ const { resolveNodeBinary, getTargetSuffix } = await import("./tsdown-exe.js");
476
+ for (const target of targets) {
477
+ const nodeBinaryPath = await resolveNodeBinary(target, config.exe, config.logger);
478
+ const suffix = getTargetSuffix(target);
479
+ await buildSingleExe(config, bundledFile, resolveOutputFileName(config.exe, chunk, bundledFile, target, suffix), nodeBinaryPath, target);
480
+ }
481
+ } else await buildSingleExe(config, bundledFile, resolveOutputFileName(config.exe, chunk, bundledFile));
482
+ }
483
+ function resolveOutputFileName(exe, chunk, bundledFile, target, suffix) {
484
+ let baseName;
485
+ if (exe.fileName) baseName = typeof exe.fileName === "function" ? exe.fileName(chunk) : exe.fileName;
486
+ else baseName = path.basename(bundledFile, path.extname(bundledFile));
487
+ if (suffix) baseName += suffix;
488
+ if (target?.platform ? target.platform === "win" : process.platform === "win32") baseName += ".exe";
489
+ return baseName;
490
+ }
491
+ async function buildSingleExe(config, bundledFile, outputFile, executable, target) {
492
+ const exe = config.exe;
493
+ const exeOutDir = path.resolve(config.cwd, exe.outDir || "build");
494
+ await mkdir(exeOutDir, { recursive: true });
495
+ const outputPath = path.join(exeOutDir, outputFile);
496
+ debug("Building SEA executable: %s -> %s", bundledFile, outputPath);
497
+ const t = performance.now();
498
+ const tempDir = await mkdtemp(path.join(tmpdir(), "tsdown-sea-"));
499
+ try {
500
+ const seaConfig = {
501
+ disableExperimentalSEAWarning: true,
502
+ ...exe.seaConfig,
503
+ main: bundledFile,
504
+ output: outputPath,
505
+ mainFormat: config.format === "es" ? "module" : "commonjs"
506
+ };
507
+ if (executable) seaConfig.executable = executable;
508
+ const seaConfigPath = path.join(tempDir, "sea-config.json");
509
+ await writeFile(seaConfigPath, JSON.stringify(seaConfig));
510
+ debug("Wrote sea-config.json: %O -> %s", seaConfig, seaConfigPath);
511
+ debug("Running: %s --build-sea %s", process.execPath, seaConfigPath);
512
+ await R(process.execPath, ["--build-sea", seaConfigPath], {
513
+ nodeOptions: { stdio: [
514
+ "ignore",
515
+ "ignore",
516
+ "inherit"
517
+ ] },
518
+ throwOnError: true,
519
+ nodePath: false
520
+ });
521
+ } finally {
522
+ if (debug.enabled) debug("Preserving temp directory for debugging: %s", tempDir);
523
+ else await fsRemove(tempDir);
524
+ }
525
+ if ((target?.platform || process.platform) === "darwin") try {
526
+ await R("codesign", [
527
+ "--sign",
528
+ "-",
529
+ outputPath
530
+ ], {
531
+ nodeOptions: { stdio: "inherit" },
532
+ throwOnError: true,
533
+ nodePath: false
534
+ });
535
+ } catch {
536
+ config.logger.warn(config.nameLabel, `Failed to code-sign the executable. ${process.platform === "darwin" ? `You can sign it manually using:\n codesign --sign - "${outputPath}"` : `Automatic code signing is not supported on ${process.platform}.`}`);
537
+ }
538
+ const stat = await fsStat(outputPath);
539
+ if (stat) {
540
+ const sizeText = formatBytes(stat.size);
541
+ config.logger.info(config.nameLabel, bold(path.relative(config.cwd, outputPath)), ` ${dim(sizeText)}`);
542
+ }
543
+ config.logger.success(config.nameLabel, `Built executable: ${red(path.relative(config.cwd, outputPath))}`, dim`(${Math.round(performance.now() - t)}ms)`);
544
+ }
545
+ const BASELINE_WIDELY_AVAILABLE_TARGET = [
546
+ "chrome111",
547
+ "edge111",
548
+ "firefox114",
549
+ "safari16.4",
550
+ "ios16.4"
551
+ ];
552
+ function expandBaselineTarget(targets) {
553
+ return targets.flatMap((t) => t === "baseline-widely-available" ? BASELINE_WIDELY_AVAILABLE_TARGET : t);
554
+ }
555
+ function resolveTarget(logger, target, color, pkg, nameLabel) {
556
+ if (target === false) return;
557
+ if (target == null) {
558
+ const pkgTarget = resolvePackageTarget(pkg);
559
+ if (pkgTarget) target = pkgTarget;
560
+ else return;
561
+ }
562
+ if (typeof target === "number") throw new TypeError(`Invalid target: ${target}`);
563
+ const targets = expandBaselineTarget(resolveComma(toArray(target)));
564
+ if (targets.length) logger.info(nameLabel, `target${targets.length > 1 ? "s" : ""}: ${color(targets.join(", "))}`);
565
+ return targets;
566
+ }
567
+ function resolvePackageTarget(pkg) {
568
+ const nodeVersion = pkg?.engines?.node;
569
+ if (!nodeVersion) return;
570
+ const nodeMinVersion = findMinimumForRange(nodeVersion);
571
+ if (!nodeMinVersion) return;
572
+ if (nodeMinVersion === "0.0.0") return;
573
+ return `node${nodeMinVersion}`;
574
+ }
575
+ //#endregion
576
+ export { fsStat as A, filename_to_dts as C, fsCopy as D, formatBytes as E, stripExtname as M, fsExists as O, filename_js_to_dts as S, resolveTemplateFn as T, RE_JSON as _, resolveTarget as a, RE_TS as b, isGreaterOrEqual as c, satisfies as d, tryParse as f, RE_JS as g, RE_DTS_MAP as h, expandBaselineTarget as i, lowestCommonAncestor as j, fsRemove as k, normalize$1 as l, RE_DTS as m, NODE_SEA_MIN_VERSION_PARSED as n, validateSea as o, RE_CSS as p, buildExe as r, coerce as s, NODE_SEA_MIN_VERSION as t, parseRange as u, RE_NODE_MODULES as v, replaceTemplateName as w, filename_dts_to as x, RE_ROLLDOWN_RUNTIME as y };
@@ -0,0 +1,23 @@
1
+ import { r as createDebug } from "./main-BdzlWPt6.js";
2
+ import path from "node:path";
3
+ //#region ../../node_modules/.pnpm/rolldown-plugin-dts@0.27.12_@typescript+native-preview@7.0.0-dev.20260605.1_oxc-resolve_d94a4da753642eee691447f5bf042e95/node_modules/rolldown-plugin-dts/dist/tsc-context.mjs
4
+ const debug = createDebug("rolldown-plugin-dts:tsc-context");
5
+ function createContext() {
6
+ return {
7
+ programs: [],
8
+ files: /* @__PURE__ */ new Map(),
9
+ projects: /* @__PURE__ */ new Map()
10
+ };
11
+ }
12
+ function invalidateContextFile(context, file) {
13
+ file = path.resolve(file).replaceAll("\\", "/");
14
+ debug(`invalidating context file: ${file}`);
15
+ context.files.delete(file);
16
+ context.programs = context.programs.filter((program) => {
17
+ return !program.getSourceFiles().some((sourceFile) => sourceFile.fileName === file);
18
+ });
19
+ context.projects.clear();
20
+ }
21
+ const globalContext = createContext();
22
+ //#endregion
23
+ export { globalContext as n, invalidateContextFile as r, createContext as t };