@storybook/addon-vitest 10.1.0-alpha.9 → 10.1.0-beta.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.
@@ -1,33 +1,32 @@
1
- import CJS_COMPAT_NODE_URL_6xsmo987rp5 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_6xsmo987rp5 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_6xsmo987rp5 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_2cm23o1mqpi from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_2cm23o1mqpi from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_2cm23o1mqpi from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_6xsmo987rp5.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_6xsmo987rp5.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_6xsmo987rp5.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_2cm23o1mqpi.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_2cm23o1mqpi.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_2cm23o1mqpi.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
- execa,
14
13
  resolvePackageDir
15
- } from "./_node-chunks/chunk-XKCUKATS.js";
14
+ } from "./_node-chunks/chunk-NTUEKICW.js";
16
15
  import {
17
- any,
18
- getAddonNames,
19
- up
20
- } from "./_node-chunks/chunk-EQRHHTTK.js";
16
+ any
17
+ } from "./_node-chunks/chunk-LZHFU3IY.js";
21
18
  import {
22
- DOCUMENTATION_LINK,
23
- SUPPORTED_FRAMEWORKS
24
- } from "./_node-chunks/chunk-4TORVAZH.js";
19
+ DOCUMENTATION_LINK
20
+ } from "./_node-chunks/chunk-ERO7LVWY.js";
21
+ import {
22
+ require_dist
23
+ } from "./_node-chunks/chunk-4GXXLLOJ.js";
25
24
  import {
26
25
  dirname,
27
26
  join,
28
27
  relative,
29
28
  resolve
30
- } from "./_node-chunks/chunk-RDCJFLHV.js";
29
+ } from "./_node-chunks/chunk-KJQIXLJD.js";
31
30
  import {
32
31
  require_compare,
33
32
  require_constants,
@@ -37,31 +36,27 @@ import {
37
36
  require_parse_options,
38
37
  require_re,
39
38
  require_semver
40
- } from "./_node-chunks/chunk-EWGF3LDY.js";
39
+ } from "./_node-chunks/chunk-AP5IIXAM.js";
41
40
  import {
42
41
  __commonJS,
43
- __name,
44
42
  __toESM
45
- } from "./_node-chunks/chunk-W5CYX7PP.js";
43
+ } from "./_node-chunks/chunk-BGBUUVQU.js";
46
44
 
47
45
  // ../../node_modules/semver/functions/parse.js
48
46
  var require_parse = __commonJS({
49
47
  "../../node_modules/semver/functions/parse.js"(exports, module) {
50
48
  "use strict";
51
- var SemVer = require_semver();
52
- var parse = /* @__PURE__ */ __name((version, options, throwErrors = false) => {
53
- if (version instanceof SemVer) {
49
+ var SemVer = require_semver(), parse = (version, options, throwErrors = !1) => {
50
+ if (version instanceof SemVer)
54
51
  return version;
55
- }
56
52
  try {
57
53
  return new SemVer(version, options);
58
54
  } catch (er) {
59
- if (!throwErrors) {
55
+ if (!throwErrors)
60
56
  return null;
61
- }
62
57
  throw er;
63
58
  }
64
- }, "parse");
59
+ };
65
60
  module.exports = parse;
66
61
  }
67
62
  });
@@ -70,11 +65,10 @@ var require_parse = __commonJS({
70
65
  var require_valid = __commonJS({
71
66
  "../../node_modules/semver/functions/valid.js"(exports, module) {
72
67
  "use strict";
73
- var parse = require_parse();
74
- var valid = /* @__PURE__ */ __name((version, options) => {
75
- const v = parse(version, options);
68
+ var parse = require_parse(), valid = (version, options) => {
69
+ let v = parse(version, options);
76
70
  return v ? v.version : null;
77
- }, "valid");
71
+ };
78
72
  module.exports = valid;
79
73
  }
80
74
  });
@@ -83,11 +77,10 @@ var require_valid = __commonJS({
83
77
  var require_clean = __commonJS({
84
78
  "../../node_modules/semver/functions/clean.js"(exports, module) {
85
79
  "use strict";
86
- var parse = require_parse();
87
- var clean = /* @__PURE__ */ __name((version, options) => {
88
- const s = parse(version.trim().replace(/^[=v]+/, ""), options);
80
+ var parse = require_parse(), clean = (version, options) => {
81
+ let s = parse(version.trim().replace(/^[=v]+/, ""), options);
89
82
  return s ? s.version : null;
90
- }, "clean");
83
+ };
91
84
  module.exports = clean;
92
85
  }
93
86
  });
@@ -96,22 +89,17 @@ var require_clean = __commonJS({
96
89
  var require_inc = __commonJS({
97
90
  "../../node_modules/semver/functions/inc.js"(exports, module) {
98
91
  "use strict";
99
- var SemVer = require_semver();
100
- var inc = /* @__PURE__ */ __name((version, release, options, identifier, identifierBase) => {
101
- if (typeof options === "string") {
102
- identifierBase = identifier;
103
- identifier = options;
104
- options = void 0;
105
- }
92
+ var SemVer = require_semver(), inc = (version, release, options, identifier, identifierBase) => {
93
+ typeof options == "string" && (identifierBase = identifier, identifier = options, options = void 0);
106
94
  try {
107
95
  return new SemVer(
108
96
  version instanceof SemVer ? version.version : version,
109
97
  options
110
98
  ).inc(release, identifier, identifierBase).version;
111
- } catch (er) {
99
+ } catch {
112
100
  return null;
113
101
  }
114
- }, "inc");
102
+ };
115
103
  module.exports = inc;
116
104
  }
117
105
  });
@@ -120,42 +108,20 @@ var require_inc = __commonJS({
120
108
  var require_diff = __commonJS({
121
109
  "../../node_modules/semver/functions/diff.js"(exports, module) {
122
110
  "use strict";
123
- var parse = require_parse();
124
- var diff = /* @__PURE__ */ __name((version1, version2) => {
125
- const v1 = parse(version1, null, true);
126
- const v2 = parse(version2, null, true);
127
- const comparison = v1.compare(v2);
128
- if (comparison === 0) {
111
+ var parse = require_parse(), diff = (version1, version2) => {
112
+ let v1 = parse(version1, null, !0), v2 = parse(version2, null, !0), comparison = v1.compare(v2);
113
+ if (comparison === 0)
129
114
  return null;
130
- }
131
- const v1Higher = comparison > 0;
132
- const highVersion = v1Higher ? v1 : v2;
133
- const lowVersion = v1Higher ? v2 : v1;
134
- const highHasPre = !!highVersion.prerelease.length;
135
- const lowHasPre = !!lowVersion.prerelease.length;
136
- if (lowHasPre && !highHasPre) {
137
- if (!lowVersion.patch && !lowVersion.minor) {
115
+ let v1Higher = comparison > 0, highVersion = v1Higher ? v1 : v2, lowVersion = v1Higher ? v2 : v1, highHasPre = !!highVersion.prerelease.length;
116
+ if (!!lowVersion.prerelease.length && !highHasPre) {
117
+ if (!lowVersion.patch && !lowVersion.minor)
138
118
  return "major";
139
- }
140
- if (lowVersion.compareMain(highVersion) === 0) {
141
- if (lowVersion.minor && !lowVersion.patch) {
142
- return "minor";
143
- }
144
- return "patch";
145
- }
146
- }
147
- const prefix = highHasPre ? "pre" : "";
148
- if (v1.major !== v2.major) {
149
- return prefix + "major";
119
+ if (lowVersion.compareMain(highVersion) === 0)
120
+ return lowVersion.minor && !lowVersion.patch ? "minor" : "patch";
150
121
  }
151
- if (v1.minor !== v2.minor) {
152
- return prefix + "minor";
153
- }
154
- if (v1.patch !== v2.patch) {
155
- return prefix + "patch";
156
- }
157
- return "prerelease";
158
- }, "diff");
122
+ let prefix = highHasPre ? "pre" : "";
123
+ return v1.major !== v2.major ? prefix + "major" : v1.minor !== v2.minor ? prefix + "minor" : v1.patch !== v2.patch ? prefix + "patch" : "prerelease";
124
+ };
159
125
  module.exports = diff;
160
126
  }
161
127
  });
@@ -164,8 +130,7 @@ var require_diff = __commonJS({
164
130
  var require_major = __commonJS({
165
131
  "../../node_modules/semver/functions/major.js"(exports, module) {
166
132
  "use strict";
167
- var SemVer = require_semver();
168
- var major = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).major, "major");
133
+ var SemVer = require_semver(), major = (a, loose) => new SemVer(a, loose).major;
169
134
  module.exports = major;
170
135
  }
171
136
  });
@@ -174,8 +139,7 @@ var require_major = __commonJS({
174
139
  var require_minor = __commonJS({
175
140
  "../../node_modules/semver/functions/minor.js"(exports, module) {
176
141
  "use strict";
177
- var SemVer = require_semver();
178
- var minor = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).minor, "minor");
142
+ var SemVer = require_semver(), minor = (a, loose) => new SemVer(a, loose).minor;
179
143
  module.exports = minor;
180
144
  }
181
145
  });
@@ -184,8 +148,7 @@ var require_minor = __commonJS({
184
148
  var require_patch = __commonJS({
185
149
  "../../node_modules/semver/functions/patch.js"(exports, module) {
186
150
  "use strict";
187
- var SemVer = require_semver();
188
- var patch = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).patch, "patch");
151
+ var SemVer = require_semver(), patch = (a, loose) => new SemVer(a, loose).patch;
189
152
  module.exports = patch;
190
153
  }
191
154
  });
@@ -194,11 +157,10 @@ var require_patch = __commonJS({
194
157
  var require_prerelease = __commonJS({
195
158
  "../../node_modules/semver/functions/prerelease.js"(exports, module) {
196
159
  "use strict";
197
- var parse = require_parse();
198
- var prerelease = /* @__PURE__ */ __name((version, options) => {
199
- const parsed = parse(version, options);
160
+ var parse = require_parse(), prerelease = (version, options) => {
161
+ let parsed = parse(version, options);
200
162
  return parsed && parsed.prerelease.length ? parsed.prerelease : null;
201
- }, "prerelease");
163
+ };
202
164
  module.exports = prerelease;
203
165
  }
204
166
  });
@@ -207,8 +169,7 @@ var require_prerelease = __commonJS({
207
169
  var require_rcompare = __commonJS({
208
170
  "../../node_modules/semver/functions/rcompare.js"(exports, module) {
209
171
  "use strict";
210
- var compare = require_compare();
211
- var rcompare = /* @__PURE__ */ __name((a, b, loose) => compare(b, a, loose), "rcompare");
172
+ var compare = require_compare(), rcompare = (a, b, loose) => compare(b, a, loose);
212
173
  module.exports = rcompare;
213
174
  }
214
175
  });
@@ -217,8 +178,7 @@ var require_rcompare = __commonJS({
217
178
  var require_compare_loose = __commonJS({
218
179
  "../../node_modules/semver/functions/compare-loose.js"(exports, module) {
219
180
  "use strict";
220
- var compare = require_compare();
221
- var compareLoose = /* @__PURE__ */ __name((a, b) => compare(a, b, true), "compareLoose");
181
+ var compare = require_compare(), compareLoose = (a, b) => compare(a, b, !0);
222
182
  module.exports = compareLoose;
223
183
  }
224
184
  });
@@ -227,12 +187,10 @@ var require_compare_loose = __commonJS({
227
187
  var require_compare_build = __commonJS({
228
188
  "../../node_modules/semver/functions/compare-build.js"(exports, module) {
229
189
  "use strict";
230
- var SemVer = require_semver();
231
- var compareBuild = /* @__PURE__ */ __name((a, b, loose) => {
232
- const versionA = new SemVer(a, loose);
233
- const versionB = new SemVer(b, loose);
190
+ var SemVer = require_semver(), compareBuild = (a, b, loose) => {
191
+ let versionA = new SemVer(a, loose), versionB = new SemVer(b, loose);
234
192
  return versionA.compare(versionB) || versionA.compareBuild(versionB);
235
- }, "compareBuild");
193
+ };
236
194
  module.exports = compareBuild;
237
195
  }
238
196
  });
@@ -241,8 +199,7 @@ var require_compare_build = __commonJS({
241
199
  var require_sort = __commonJS({
242
200
  "../../node_modules/semver/functions/sort.js"(exports, module) {
243
201
  "use strict";
244
- var compareBuild = require_compare_build();
245
- var sort = /* @__PURE__ */ __name((list, loose) => list.sort((a, b) => compareBuild(a, b, loose)), "sort");
202
+ var compareBuild = require_compare_build(), sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
246
203
  module.exports = sort;
247
204
  }
248
205
  });
@@ -251,8 +208,7 @@ var require_sort = __commonJS({
251
208
  var require_rsort = __commonJS({
252
209
  "../../node_modules/semver/functions/rsort.js"(exports, module) {
253
210
  "use strict";
254
- var compareBuild = require_compare_build();
255
- var rsort = /* @__PURE__ */ __name((list, loose) => list.sort((a, b) => compareBuild(b, a, loose)), "rsort");
211
+ var compareBuild = require_compare_build(), rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
256
212
  module.exports = rsort;
257
213
  }
258
214
  });
@@ -261,8 +217,7 @@ var require_rsort = __commonJS({
261
217
  var require_gt = __commonJS({
262
218
  "../../node_modules/semver/functions/gt.js"(exports, module) {
263
219
  "use strict";
264
- var compare = require_compare();
265
- var gt = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) > 0, "gt");
220
+ var compare = require_compare(), gt = (a, b, loose) => compare(a, b, loose) > 0;
266
221
  module.exports = gt;
267
222
  }
268
223
  });
@@ -271,8 +226,7 @@ var require_gt = __commonJS({
271
226
  var require_lt = __commonJS({
272
227
  "../../node_modules/semver/functions/lt.js"(exports, module) {
273
228
  "use strict";
274
- var compare = require_compare();
275
- var lt = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) < 0, "lt");
229
+ var compare = require_compare(), lt = (a, b, loose) => compare(a, b, loose) < 0;
276
230
  module.exports = lt;
277
231
  }
278
232
  });
@@ -281,8 +235,7 @@ var require_lt = __commonJS({
281
235
  var require_eq = __commonJS({
282
236
  "../../node_modules/semver/functions/eq.js"(exports, module) {
283
237
  "use strict";
284
- var compare = require_compare();
285
- var eq = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) === 0, "eq");
238
+ var compare = require_compare(), eq = (a, b, loose) => compare(a, b, loose) === 0;
286
239
  module.exports = eq;
287
240
  }
288
241
  });
@@ -291,8 +244,7 @@ var require_eq = __commonJS({
291
244
  var require_neq = __commonJS({
292
245
  "../../node_modules/semver/functions/neq.js"(exports, module) {
293
246
  "use strict";
294
- var compare = require_compare();
295
- var neq = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) !== 0, "neq");
247
+ var compare = require_compare(), neq = (a, b, loose) => compare(a, b, loose) !== 0;
296
248
  module.exports = neq;
297
249
  }
298
250
  });
@@ -301,8 +253,7 @@ var require_neq = __commonJS({
301
253
  var require_lte = __commonJS({
302
254
  "../../node_modules/semver/functions/lte.js"(exports, module) {
303
255
  "use strict";
304
- var compare = require_compare();
305
- var lte = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) <= 0, "lte");
256
+ var compare = require_compare(), lte = (a, b, loose) => compare(a, b, loose) <= 0;
306
257
  module.exports = lte;
307
258
  }
308
259
  });
@@ -311,30 +262,12 @@ var require_lte = __commonJS({
311
262
  var require_cmp = __commonJS({
312
263
  "../../node_modules/semver/functions/cmp.js"(exports, module) {
313
264
  "use strict";
314
- var eq = require_eq();
315
- var neq = require_neq();
316
- var gt = require_gt();
317
- var gte = require_gte();
318
- var lt = require_lt();
319
- var lte = require_lte();
320
- var cmp = /* @__PURE__ */ __name((a, op, b, loose) => {
265
+ var eq = require_eq(), neq = require_neq(), gt = require_gt(), gte = require_gte(), lt = require_lt(), lte = require_lte(), cmp = (a, op, b, loose) => {
321
266
  switch (op) {
322
267
  case "===":
323
- if (typeof a === "object") {
324
- a = a.version;
325
- }
326
- if (typeof b === "object") {
327
- b = b.version;
328
- }
329
- return a === b;
268
+ return typeof a == "object" && (a = a.version), typeof b == "object" && (b = b.version), a === b;
330
269
  case "!==":
331
- if (typeof a === "object") {
332
- a = a.version;
333
- }
334
- if (typeof b === "object") {
335
- b = b.version;
336
- }
337
- return a !== b;
270
+ return typeof a == "object" && (a = a.version), typeof b == "object" && (b = b.version), a !== b;
338
271
  case "":
339
272
  case "=":
340
273
  case "==":
@@ -352,7 +285,7 @@ var require_cmp = __commonJS({
352
285
  default:
353
286
  throw new TypeError(`Invalid operator: ${op}`);
354
287
  }
355
- }, "cmp");
288
+ };
356
289
  module.exports = cmp;
357
290
  }
358
291
  });
@@ -361,45 +294,27 @@ var require_cmp = __commonJS({
361
294
  var require_coerce = __commonJS({
362
295
  "../../node_modules/semver/functions/coerce.js"(exports, module) {
363
296
  "use strict";
364
- var SemVer = require_semver();
365
- var parse = require_parse();
366
- var { safeRe: re, t } = require_re();
367
- var coerce2 = /* @__PURE__ */ __name((version, options) => {
368
- if (version instanceof SemVer) {
297
+ var SemVer = require_semver(), parse = require_parse(), { safeRe: re, t } = require_re(), coerce = (version, options) => {
298
+ if (version instanceof SemVer)
369
299
  return version;
370
- }
371
- if (typeof version === "number") {
372
- version = String(version);
373
- }
374
- if (typeof version !== "string") {
300
+ if (typeof version == "number" && (version = String(version)), typeof version != "string")
375
301
  return null;
376
- }
377
302
  options = options || {};
378
303
  let match = null;
379
- if (!options.rtl) {
304
+ if (!options.rtl)
380
305
  match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
381
- } else {
382
- const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
383
- let next;
384
- while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {
385
- if (!match || next.index + next[0].length !== match.index + match[0].length) {
386
- match = next;
387
- }
388
- coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
389
- }
306
+ else {
307
+ let coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL], next;
308
+ for (; (next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length); )
309
+ (!match || next.index + next[0].length !== match.index + match[0].length) && (match = next), coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
390
310
  coerceRtlRegex.lastIndex = -1;
391
311
  }
392
- if (match === null) {
312
+ if (match === null)
393
313
  return null;
394
- }
395
- const major = match[2];
396
- const minor = match[3] || "0";
397
- const patch = match[4] || "0";
398
- const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
399
- const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
314
+ let major = match[2], minor = match[3] || "0", patch = match[4] || "0", prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "", build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
400
315
  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
401
- }, "coerce");
402
- module.exports = coerce2;
316
+ };
317
+ module.exports = coerce;
403
318
  }
404
319
  });
405
320
 
@@ -408,31 +323,21 @@ var require_lrucache = __commonJS({
408
323
  "../../node_modules/semver/internal/lrucache.js"(exports, module) {
409
324
  "use strict";
410
325
  var LRUCache = class {
411
- static {
412
- __name(this, "LRUCache");
413
- }
414
326
  constructor() {
415
- this.max = 1e3;
416
- this.map = /* @__PURE__ */ new Map();
327
+ this.max = 1e3, this.map = /* @__PURE__ */ new Map();
417
328
  }
418
329
  get(key) {
419
- const value = this.map.get(key);
420
- if (value === void 0) {
421
- return void 0;
422
- } else {
423
- this.map.delete(key);
424
- this.map.set(key, value);
425
- return value;
426
- }
330
+ let value = this.map.get(key);
331
+ if (value !== void 0)
332
+ return this.map.delete(key), this.map.set(key, value), value;
427
333
  }
428
334
  delete(key) {
429
335
  return this.map.delete(key);
430
336
  }
431
337
  set(key, value) {
432
- const deleted = this.delete(key);
433
- if (!deleted && value !== void 0) {
338
+ if (!this.delete(key) && value !== void 0) {
434
339
  if (this.map.size >= this.max) {
435
- const firstKey = this.map.keys().next().value;
340
+ let firstKey = this.map.keys().next().value;
436
341
  this.delete(firstKey);
437
342
  }
438
343
  this.map.set(key, value);
@@ -448,46 +353,24 @@ var require_lrucache = __commonJS({
448
353
  var require_range = __commonJS({
449
354
  "../../node_modules/semver/classes/range.js"(exports, module) {
450
355
  "use strict";
451
- var SPACE_CHARACTERS = /\s+/g;
452
- var Range = class _Range {
453
- static {
454
- __name(this, "Range");
455
- }
356
+ var SPACE_CHARACTERS = /\s+/g, Range = class _Range {
456
357
  constructor(range, options) {
457
- options = parseOptions(options);
458
- if (range instanceof _Range) {
459
- if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
460
- return range;
461
- } else {
462
- return new _Range(range.raw, options);
463
- }
464
- }
465
- if (range instanceof Comparator) {
466
- this.raw = range.value;
467
- this.set = [[range]];
468
- this.formatted = void 0;
469
- return this;
470
- }
471
- this.options = options;
472
- this.loose = !!options.loose;
473
- this.includePrerelease = !!options.includePrerelease;
474
- this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
475
- this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
476
- if (!this.set.length) {
358
+ if (options = parseOptions(options), range instanceof _Range)
359
+ return range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease ? range : new _Range(range.raw, options);
360
+ if (range instanceof Comparator)
361
+ return this.raw = range.value, this.set = [[range]], this.formatted = void 0, this;
362
+ if (this.options = options, this.loose = !!options.loose, this.includePrerelease = !!options.includePrerelease, this.raw = range.trim().replace(SPACE_CHARACTERS, " "), this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length), !this.set.length)
477
363
  throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
478
- }
479
364
  if (this.set.length > 1) {
480
- const first = this.set[0];
481
- this.set = this.set.filter((c) => !isNullSet(c[0]));
482
- if (this.set.length === 0) {
365
+ let first = this.set[0];
366
+ if (this.set = this.set.filter((c) => !isNullSet(c[0])), this.set.length === 0)
483
367
  this.set = [first];
484
- } else if (this.set.length > 1) {
485
- for (const c of this.set) {
368
+ else if (this.set.length > 1) {
369
+ for (let c of this.set)
486
370
  if (c.length === 1 && isAny(c[0])) {
487
371
  this.set = [c];
488
372
  break;
489
373
  }
490
- }
491
374
  }
492
375
  }
493
376
  this.formatted = void 0;
@@ -496,16 +379,10 @@ var require_range = __commonJS({
496
379
  if (this.formatted === void 0) {
497
380
  this.formatted = "";
498
381
  for (let i = 0; i < this.set.length; i++) {
499
- if (i > 0) {
500
- this.formatted += "||";
501
- }
502
- const comps = this.set[i];
503
- for (let k = 0; k < comps.length; k++) {
504
- if (k > 0) {
505
- this.formatted += " ";
506
- }
507
- this.formatted += comps[k].toString().trim();
508
- }
382
+ i > 0 && (this.formatted += "||");
383
+ let comps = this.set[i];
384
+ for (let k = 0; k < comps.length; k++)
385
+ k > 0 && (this.formatted += " "), this.formatted += comps[k].toString().trim();
509
386
  }
510
387
  }
511
388
  return this.formatted;
@@ -517,309 +394,94 @@ var require_range = __commonJS({
517
394
  return this.range;
518
395
  }
519
396
  parseRange(range) {
520
- const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
521
- const memoKey = memoOpts + ":" + range;
522
- const cached = cache.get(memoKey);
523
- if (cached) {
397
+ let memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + ":" + range, cached = cache.get(memoKey);
398
+ if (cached)
524
399
  return cached;
525
- }
526
- const loose = this.options.loose;
527
- const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
528
- range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
529
- debug("hyphen replace", range);
530
- range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
531
- debug("comparator trim", range);
532
- range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
533
- debug("tilde trim", range);
534
- range = range.replace(re[t.CARETTRIM], caretTrimReplace);
535
- debug("caret trim", range);
400
+ let loose = this.options.loose, hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
401
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease)), debug("hyphen replace", range), range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace), debug("comparator trim", range), range = range.replace(re[t.TILDETRIM], tildeTrimReplace), debug("tilde trim", range), range = range.replace(re[t.CARETTRIM], caretTrimReplace), debug("caret trim", range);
536
402
  let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
537
- if (loose) {
538
- rangeList = rangeList.filter((comp) => {
539
- debug("loose invalid filter", comp, this.options);
540
- return !!comp.match(re[t.COMPARATORLOOSE]);
541
- });
542
- }
543
- debug("range list", rangeList);
544
- const rangeMap = /* @__PURE__ */ new Map();
545
- const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
546
- for (const comp of comparators) {
547
- if (isNullSet(comp)) {
403
+ loose && (rangeList = rangeList.filter((comp) => (debug("loose invalid filter", comp, this.options), !!comp.match(re[t.COMPARATORLOOSE])))), debug("range list", rangeList);
404
+ let rangeMap = /* @__PURE__ */ new Map(), comparators = rangeList.map((comp) => new Comparator(comp, this.options));
405
+ for (let comp of comparators) {
406
+ if (isNullSet(comp))
548
407
  return [comp];
549
- }
550
408
  rangeMap.set(comp.value, comp);
551
409
  }
552
- if (rangeMap.size > 1 && rangeMap.has("")) {
553
- rangeMap.delete("");
554
- }
555
- const result = [...rangeMap.values()];
556
- cache.set(memoKey, result);
557
- return result;
410
+ rangeMap.size > 1 && rangeMap.has("") && rangeMap.delete("");
411
+ let result = [...rangeMap.values()];
412
+ return cache.set(memoKey, result), result;
558
413
  }
559
414
  intersects(range, options) {
560
- if (!(range instanceof _Range)) {
415
+ if (!(range instanceof _Range))
561
416
  throw new TypeError("a Range is required");
562
- }
563
- return this.set.some((thisComparators) => {
564
- return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
565
- return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
566
- return rangeComparators.every((rangeComparator) => {
567
- return thisComparator.intersects(rangeComparator, options);
568
- });
569
- });
570
- });
571
- });
417
+ return this.set.some((thisComparators) => isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => rangeComparators.every((rangeComparator) => thisComparator.intersects(rangeComparator, options)))));
572
418
  }
573
419
  // if ANY of the sets match ALL of its comparators, then pass
574
420
  test(version) {
575
- if (!version) {
576
- return false;
577
- }
578
- if (typeof version === "string") {
421
+ if (!version)
422
+ return !1;
423
+ if (typeof version == "string")
579
424
  try {
580
425
  version = new SemVer(version, this.options);
581
- } catch (er) {
582
- return false;
426
+ } catch {
427
+ return !1;
583
428
  }
584
- }
585
- for (let i = 0; i < this.set.length; i++) {
586
- if (testSet(this.set[i], version, this.options)) {
587
- return true;
588
- }
589
- }
590
- return false;
429
+ for (let i = 0; i < this.set.length; i++)
430
+ if (testSet(this.set[i], version, this.options))
431
+ return !0;
432
+ return !1;
591
433
  }
592
434
  };
593
435
  module.exports = Range;
594
- var LRU = require_lrucache();
595
- var cache = new LRU();
596
- var parseOptions = require_parse_options();
597
- var Comparator = require_comparator();
598
- var debug = require_debug();
599
- var SemVer = require_semver();
600
- var {
436
+ var LRU = require_lrucache(), cache = new LRU(), parseOptions = require_parse_options(), Comparator = require_comparator(), debug = require_debug(), SemVer = require_semver(), {
601
437
  safeRe: re,
602
438
  t,
603
439
  comparatorTrimReplace,
604
440
  tildeTrimReplace,
605
441
  caretTrimReplace
606
- } = require_re();
607
- var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
608
- var isNullSet = /* @__PURE__ */ __name((c) => c.value === "<0.0.0-0", "isNullSet");
609
- var isAny = /* @__PURE__ */ __name((c) => c.value === "", "isAny");
610
- var isSatisfiable = /* @__PURE__ */ __name((comparators, options) => {
611
- let result = true;
612
- const remainingComparators = comparators.slice();
613
- let testComparator = remainingComparators.pop();
614
- while (result && remainingComparators.length) {
615
- result = remainingComparators.every((otherComparator) => {
616
- return testComparator.intersects(otherComparator, options);
617
- });
618
- testComparator = remainingComparators.pop();
619
- }
442
+ } = require_re(), { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(), isNullSet = (c) => c.value === "<0.0.0-0", isAny = (c) => c.value === "", isSatisfiable = (comparators, options) => {
443
+ let result = !0, remainingComparators = comparators.slice(), testComparator = remainingComparators.pop();
444
+ for (; result && remainingComparators.length; )
445
+ result = remainingComparators.every((otherComparator) => testComparator.intersects(otherComparator, options)), testComparator = remainingComparators.pop();
620
446
  return result;
621
- }, "isSatisfiable");
622
- var parseComparator = /* @__PURE__ */ __name((comp, options) => {
623
- debug("comp", comp, options);
624
- comp = replaceCarets(comp, options);
625
- debug("caret", comp);
626
- comp = replaceTildes(comp, options);
627
- debug("tildes", comp);
628
- comp = replaceXRanges(comp, options);
629
- debug("xrange", comp);
630
- comp = replaceStars(comp, options);
631
- debug("stars", comp);
632
- return comp;
633
- }, "parseComparator");
634
- var isX = /* @__PURE__ */ __name((id) => !id || id.toLowerCase() === "x" || id === "*", "isX");
635
- var replaceTildes = /* @__PURE__ */ __name((comp, options) => {
636
- return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
637
- }, "replaceTildes");
638
- var replaceTilde = /* @__PURE__ */ __name((comp, options) => {
639
- const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
447
+ }, parseComparator = (comp, options) => (comp = comp.replace(re[t.BUILD], ""), debug("comp", comp, options), comp = replaceCarets(comp, options), debug("caret", comp), comp = replaceTildes(comp, options), debug("tildes", comp), comp = replaceXRanges(comp, options), debug("xrange", comp), comp = replaceStars(comp, options), debug("stars", comp), comp), isX = (id) => !id || id.toLowerCase() === "x" || id === "*", replaceTildes = (comp, options) => comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "), replaceTilde = (comp, options) => {
448
+ let r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
640
449
  return comp.replace(r, (_, M, m, p, pr) => {
641
450
  debug("tilde", comp, _, M, m, p, pr);
642
451
  let ret;
643
- if (isX(M)) {
644
- ret = "";
645
- } else if (isX(m)) {
646
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
647
- } else if (isX(p)) {
648
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
649
- } else if (pr) {
650
- debug("replaceTilde pr", pr);
651
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
652
- } else {
653
- ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
654
- }
655
- debug("tilde return", ret);
656
- return ret;
452
+ return isX(M) ? ret = "" : isX(m) ? ret = `>=${M}.0.0 <${+M + 1}.0.0-0` : isX(p) ? ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` : pr ? (debug("replaceTilde pr", pr), ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`) : ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`, debug("tilde return", ret), ret;
657
453
  });
658
- }, "replaceTilde");
659
- var replaceCarets = /* @__PURE__ */ __name((comp, options) => {
660
- return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
661
- }, "replaceCarets");
662
- var replaceCaret = /* @__PURE__ */ __name((comp, options) => {
454
+ }, replaceCarets = (comp, options) => comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "), replaceCaret = (comp, options) => {
663
455
  debug("caret", comp, options);
664
- const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
665
- const z = options.includePrerelease ? "-0" : "";
456
+ let r = options.loose ? re[t.CARETLOOSE] : re[t.CARET], z = options.includePrerelease ? "-0" : "";
666
457
  return comp.replace(r, (_, M, m, p, pr) => {
667
458
  debug("caret", comp, _, M, m, p, pr);
668
459
  let ret;
669
- if (isX(M)) {
670
- ret = "";
671
- } else if (isX(m)) {
672
- ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
673
- } else if (isX(p)) {
674
- if (M === "0") {
675
- ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
676
- } else {
677
- ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
678
- }
679
- } else if (pr) {
680
- debug("replaceCaret pr", pr);
681
- if (M === "0") {
682
- if (m === "0") {
683
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
684
- } else {
685
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
686
- }
687
- } else {
688
- ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
689
- }
690
- } else {
691
- debug("no pr");
692
- if (M === "0") {
693
- if (m === "0") {
694
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
695
- } else {
696
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
697
- }
698
- } else {
699
- ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
700
- }
701
- }
702
- debug("caret return", ret);
703
- return ret;
460
+ return isX(M) ? ret = "" : isX(m) ? ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` : isX(p) ? M === "0" ? ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` : ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` : pr ? (debug("replaceCaret pr", pr), M === "0" ? m === "0" ? ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0` : ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0` : ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`) : (debug("no pr"), M === "0" ? m === "0" ? ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0` : ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0` : ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`), debug("caret return", ret), ret;
704
461
  });
705
- }, "replaceCaret");
706
- var replaceXRanges = /* @__PURE__ */ __name((comp, options) => {
707
- debug("replaceXRanges", comp, options);
708
- return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
709
- }, "replaceXRanges");
710
- var replaceXRange = /* @__PURE__ */ __name((comp, options) => {
462
+ }, replaceXRanges = (comp, options) => (debug("replaceXRanges", comp, options), comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ")), replaceXRange = (comp, options) => {
711
463
  comp = comp.trim();
712
- const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
464
+ let r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
713
465
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
714
466
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
715
- const xM = isX(M);
716
- const xm = xM || isX(m);
717
- const xp = xm || isX(p);
718
- const anyX = xp;
719
- if (gtlt === "=" && anyX) {
720
- gtlt = "";
721
- }
722
- pr = options.includePrerelease ? "-0" : "";
723
- if (xM) {
724
- if (gtlt === ">" || gtlt === "<") {
725
- ret = "<0.0.0-0";
726
- } else {
727
- ret = "*";
728
- }
729
- } else if (gtlt && anyX) {
730
- if (xm) {
731
- m = 0;
732
- }
733
- p = 0;
734
- if (gtlt === ">") {
735
- gtlt = ">=";
736
- if (xm) {
737
- M = +M + 1;
738
- m = 0;
739
- p = 0;
740
- } else {
741
- m = +m + 1;
742
- p = 0;
743
- }
744
- } else if (gtlt === "<=") {
745
- gtlt = "<";
746
- if (xm) {
747
- M = +M + 1;
748
- } else {
749
- m = +m + 1;
750
- }
751
- }
752
- if (gtlt === "<") {
753
- pr = "-0";
754
- }
755
- ret = `${gtlt + M}.${m}.${p}${pr}`;
756
- } else if (xm) {
757
- ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
758
- } else if (xp) {
759
- ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
760
- }
761
- debug("xRange return", ret);
762
- return ret;
467
+ let xM = isX(M), xm = xM || isX(m), xp = xm || isX(p), anyX = xp;
468
+ return gtlt === "=" && anyX && (gtlt = ""), pr = options.includePrerelease ? "-0" : "", xM ? gtlt === ">" || gtlt === "<" ? ret = "<0.0.0-0" : ret = "*" : gtlt && anyX ? (xm && (m = 0), p = 0, gtlt === ">" ? (gtlt = ">=", xm ? (M = +M + 1, m = 0, p = 0) : (m = +m + 1, p = 0)) : gtlt === "<=" && (gtlt = "<", xm ? M = +M + 1 : m = +m + 1), gtlt === "<" && (pr = "-0"), ret = `${gtlt + M}.${m}.${p}${pr}`) : xm ? ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` : xp && (ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`), debug("xRange return", ret), ret;
763
469
  });
764
- }, "replaceXRange");
765
- var replaceStars = /* @__PURE__ */ __name((comp, options) => {
766
- debug("replaceStars", comp, options);
767
- return comp.trim().replace(re[t.STAR], "");
768
- }, "replaceStars");
769
- var replaceGTE0 = /* @__PURE__ */ __name((comp, options) => {
770
- debug("replaceGTE0", comp, options);
771
- return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
772
- }, "replaceGTE0");
773
- var hyphenReplace = /* @__PURE__ */ __name((incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
774
- if (isX(fM)) {
775
- from = "";
776
- } else if (isX(fm)) {
777
- from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
778
- } else if (isX(fp)) {
779
- from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
780
- } else if (fpr) {
781
- from = `>=${from}`;
782
- } else {
783
- from = `>=${from}${incPr ? "-0" : ""}`;
784
- }
785
- if (isX(tM)) {
786
- to = "";
787
- } else if (isX(tm)) {
788
- to = `<${+tM + 1}.0.0-0`;
789
- } else if (isX(tp)) {
790
- to = `<${tM}.${+tm + 1}.0-0`;
791
- } else if (tpr) {
792
- to = `<=${tM}.${tm}.${tp}-${tpr}`;
793
- } else if (incPr) {
794
- to = `<${tM}.${tm}.${+tp + 1}-0`;
795
- } else {
796
- to = `<=${to}`;
797
- }
798
- return `${from} ${to}`.trim();
799
- }, "hyphenReplace");
800
- var testSet = /* @__PURE__ */ __name((set, version, options) => {
801
- for (let i = 0; i < set.length; i++) {
802
- if (!set[i].test(version)) {
803
- return false;
804
- }
805
- }
470
+ }, replaceStars = (comp, options) => (debug("replaceStars", comp, options), comp.trim().replace(re[t.STAR], "")), replaceGTE0 = (comp, options) => (debug("replaceGTE0", comp, options), comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "")), hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => (isX(fM) ? from = "" : isX(fm) ? from = `>=${fM}.0.0${incPr ? "-0" : ""}` : isX(fp) ? from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}` : fpr ? from = `>=${from}` : from = `>=${from}${incPr ? "-0" : ""}`, isX(tM) ? to = "" : isX(tm) ? to = `<${+tM + 1}.0.0-0` : isX(tp) ? to = `<${tM}.${+tm + 1}.0-0` : tpr ? to = `<=${tM}.${tm}.${tp}-${tpr}` : incPr ? to = `<${tM}.${tm}.${+tp + 1}-0` : to = `<=${to}`, `${from} ${to}`.trim()), testSet = (set, version, options) => {
471
+ for (let i = 0; i < set.length; i++)
472
+ if (!set[i].test(version))
473
+ return !1;
806
474
  if (version.prerelease.length && !options.includePrerelease) {
807
- for (let i = 0; i < set.length; i++) {
808
- debug(set[i].semver);
809
- if (set[i].semver === Comparator.ANY) {
810
- continue;
811
- }
812
- if (set[i].semver.prerelease.length > 0) {
813
- const allowed = set[i].semver;
814
- if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
815
- return true;
816
- }
475
+ for (let i = 0; i < set.length; i++)
476
+ if (debug(set[i].semver), set[i].semver !== Comparator.ANY && set[i].semver.prerelease.length > 0) {
477
+ let allowed = set[i].semver;
478
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch)
479
+ return !0;
817
480
  }
818
- }
819
- return false;
481
+ return !1;
820
482
  }
821
- return true;
822
- }, "testSet");
483
+ return !0;
484
+ };
823
485
  }
824
486
  });
825
487
 
@@ -827,115 +489,46 @@ var require_range = __commonJS({
827
489
  var require_comparator = __commonJS({
828
490
  "../../node_modules/semver/classes/comparator.js"(exports, module) {
829
491
  "use strict";
830
- var ANY = Symbol("SemVer ANY");
831
- var Comparator = class _Comparator {
832
- static {
833
- __name(this, "Comparator");
834
- }
492
+ var ANY = Symbol("SemVer ANY"), Comparator = class _Comparator {
835
493
  static get ANY() {
836
494
  return ANY;
837
495
  }
838
496
  constructor(comp, options) {
839
- options = parseOptions(options);
840
- if (comp instanceof _Comparator) {
841
- if (comp.loose === !!options.loose) {
497
+ if (options = parseOptions(options), comp instanceof _Comparator) {
498
+ if (comp.loose === !!options.loose)
842
499
  return comp;
843
- } else {
844
- comp = comp.value;
845
- }
500
+ comp = comp.value;
846
501
  }
847
- comp = comp.trim().split(/\s+/).join(" ");
848
- debug("comparator", comp, options);
849
- this.options = options;
850
- this.loose = !!options.loose;
851
- this.parse(comp);
852
- if (this.semver === ANY) {
853
- this.value = "";
854
- } else {
855
- this.value = this.operator + this.semver.version;
856
- }
857
- debug("comp", this);
502
+ comp = comp.trim().split(/\s+/).join(" "), debug("comparator", comp, options), this.options = options, this.loose = !!options.loose, this.parse(comp), this.semver === ANY ? this.value = "" : this.value = this.operator + this.semver.version, debug("comp", this);
858
503
  }
859
504
  parse(comp) {
860
- const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
861
- const m = comp.match(r);
862
- if (!m) {
505
+ let r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR], m = comp.match(r);
506
+ if (!m)
863
507
  throw new TypeError(`Invalid comparator: ${comp}`);
864
- }
865
- this.operator = m[1] !== void 0 ? m[1] : "";
866
- if (this.operator === "=") {
867
- this.operator = "";
868
- }
869
- if (!m[2]) {
870
- this.semver = ANY;
871
- } else {
872
- this.semver = new SemVer(m[2], this.options.loose);
873
- }
508
+ this.operator = m[1] !== void 0 ? m[1] : "", this.operator === "=" && (this.operator = ""), m[2] ? this.semver = new SemVer(m[2], this.options.loose) : this.semver = ANY;
874
509
  }
875
510
  toString() {
876
511
  return this.value;
877
512
  }
878
513
  test(version) {
879
- debug("Comparator.test", version, this.options.loose);
880
- if (this.semver === ANY || version === ANY) {
881
- return true;
882
- }
883
- if (typeof version === "string") {
514
+ if (debug("Comparator.test", version, this.options.loose), this.semver === ANY || version === ANY)
515
+ return !0;
516
+ if (typeof version == "string")
884
517
  try {
885
518
  version = new SemVer(version, this.options);
886
- } catch (er) {
887
- return false;
519
+ } catch {
520
+ return !1;
888
521
  }
889
- }
890
522
  return cmp(version, this.operator, this.semver, this.options);
891
523
  }
892
524
  intersects(comp, options) {
893
- if (!(comp instanceof _Comparator)) {
525
+ if (!(comp instanceof _Comparator))
894
526
  throw new TypeError("a Comparator is required");
895
- }
896
- if (this.operator === "") {
897
- if (this.value === "") {
898
- return true;
899
- }
900
- return new Range(comp.value, options).test(this.value);
901
- } else if (comp.operator === "") {
902
- if (comp.value === "") {
903
- return true;
904
- }
905
- return new Range(this.value, options).test(comp.semver);
906
- }
907
- options = parseOptions(options);
908
- if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
909
- return false;
910
- }
911
- if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
912
- return false;
913
- }
914
- if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
915
- return true;
916
- }
917
- if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
918
- return true;
919
- }
920
- if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
921
- return true;
922
- }
923
- if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
924
- return true;
925
- }
926
- if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
927
- return true;
928
- }
929
- return false;
527
+ return this.operator === "" ? this.value === "" ? !0 : new Range(comp.value, options).test(this.value) : comp.operator === "" ? comp.value === "" ? !0 : new Range(this.value, options).test(comp.semver) : (options = parseOptions(options), options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0") || !options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0")) ? !1 : !!(this.operator.startsWith(">") && comp.operator.startsWith(">") || this.operator.startsWith("<") && comp.operator.startsWith("<") || this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=") || cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<") || cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")));
930
528
  }
931
529
  };
932
530
  module.exports = Comparator;
933
- var parseOptions = require_parse_options();
934
- var { safeRe: re, t } = require_re();
935
- var cmp = require_cmp();
936
- var debug = require_debug();
937
- var SemVer = require_semver();
938
- var Range = require_range();
531
+ var parseOptions = require_parse_options(), { safeRe: re, t } = require_re(), cmp = require_cmp(), debug = require_debug(), SemVer = require_semver(), Range = require_range();
939
532
  }
940
533
  });
941
534
 
@@ -943,15 +536,14 @@ var require_comparator = __commonJS({
943
536
  var require_satisfies = __commonJS({
944
537
  "../../node_modules/semver/functions/satisfies.js"(exports, module) {
945
538
  "use strict";
946
- var Range = require_range();
947
- var satisfies2 = /* @__PURE__ */ __name((version, range, options) => {
539
+ var Range = require_range(), satisfies2 = (version, range, options) => {
948
540
  try {
949
541
  range = new Range(range, options);
950
- } catch (er) {
951
- return false;
542
+ } catch {
543
+ return !1;
952
544
  }
953
545
  return range.test(version);
954
- }, "satisfies");
546
+ };
955
547
  module.exports = satisfies2;
956
548
  }
957
549
  });
@@ -960,8 +552,7 @@ var require_satisfies = __commonJS({
960
552
  var require_to_comparators = __commonJS({
961
553
  "../../node_modules/semver/ranges/to-comparators.js"(exports, module) {
962
554
  "use strict";
963
- var Range = require_range();
964
- var toComparators = /* @__PURE__ */ __name((range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")), "toComparators");
555
+ var Range = require_range(), toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
965
556
  module.exports = toComparators;
966
557
  }
967
558
  });
@@ -970,27 +561,17 @@ var require_to_comparators = __commonJS({
970
561
  var require_max_satisfying = __commonJS({
971
562
  "../../node_modules/semver/ranges/max-satisfying.js"(exports, module) {
972
563
  "use strict";
973
- var SemVer = require_semver();
974
- var Range = require_range();
975
- var maxSatisfying = /* @__PURE__ */ __name((versions, range, options) => {
976
- let max = null;
977
- let maxSV = null;
978
- let rangeObj = null;
564
+ var SemVer = require_semver(), Range = require_range(), maxSatisfying = (versions, range, options) => {
565
+ let max = null, maxSV = null, rangeObj = null;
979
566
  try {
980
567
  rangeObj = new Range(range, options);
981
- } catch (er) {
568
+ } catch {
982
569
  return null;
983
570
  }
984
- versions.forEach((v) => {
985
- if (rangeObj.test(v)) {
986
- if (!max || maxSV.compare(v) === -1) {
987
- max = v;
988
- maxSV = new SemVer(max, options);
989
- }
990
- }
991
- });
992
- return max;
993
- }, "maxSatisfying");
571
+ return versions.forEach((v) => {
572
+ rangeObj.test(v) && (!max || maxSV.compare(v) === -1) && (max = v, maxSV = new SemVer(max, options));
573
+ }), max;
574
+ };
994
575
  module.exports = maxSatisfying;
995
576
  }
996
577
  });
@@ -999,27 +580,17 @@ var require_max_satisfying = __commonJS({
999
580
  var require_min_satisfying = __commonJS({
1000
581
  "../../node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1001
582
  "use strict";
1002
- var SemVer = require_semver();
1003
- var Range = require_range();
1004
- var minSatisfying = /* @__PURE__ */ __name((versions, range, options) => {
1005
- let min = null;
1006
- let minSV = null;
1007
- let rangeObj = null;
583
+ var SemVer = require_semver(), Range = require_range(), minSatisfying = (versions, range, options) => {
584
+ let min = null, minSV = null, rangeObj = null;
1008
585
  try {
1009
586
  rangeObj = new Range(range, options);
1010
- } catch (er) {
587
+ } catch {
1011
588
  return null;
1012
589
  }
1013
- versions.forEach((v) => {
1014
- if (rangeObj.test(v)) {
1015
- if (!min || minSV.compare(v) === 1) {
1016
- min = v;
1017
- minSV = new SemVer(min, options);
1018
- }
1019
- }
1020
- });
1021
- return min;
1022
- }, "minSatisfying");
590
+ return versions.forEach((v) => {
591
+ rangeObj.test(v) && (!min || minSV.compare(v) === 1) && (min = v, minSV = new SemVer(min, options));
592
+ }), min;
593
+ };
1023
594
  module.exports = minSatisfying;
1024
595
  }
1025
596
  });
@@ -1028,39 +599,23 @@ var require_min_satisfying = __commonJS({
1028
599
  var require_min_version = __commonJS({
1029
600
  "../../node_modules/semver/ranges/min-version.js"(exports, module) {
1030
601
  "use strict";
1031
- var SemVer = require_semver();
1032
- var Range = require_range();
1033
- var gt = require_gt();
1034
- var minVersion = /* @__PURE__ */ __name((range, loose) => {
602
+ var SemVer = require_semver(), Range = require_range(), gt = require_gt(), minVersion = (range, loose) => {
1035
603
  range = new Range(range, loose);
1036
604
  let minver = new SemVer("0.0.0");
1037
- if (range.test(minver)) {
1038
- return minver;
1039
- }
1040
- minver = new SemVer("0.0.0-0");
1041
- if (range.test(minver)) {
605
+ if (range.test(minver) || (minver = new SemVer("0.0.0-0"), range.test(minver)))
1042
606
  return minver;
1043
- }
1044
607
  minver = null;
1045
608
  for (let i = 0; i < range.set.length; ++i) {
1046
- const comparators = range.set[i];
1047
- let setMin = null;
609
+ let comparators = range.set[i], setMin = null;
1048
610
  comparators.forEach((comparator) => {
1049
- const compver = new SemVer(comparator.semver.version);
611
+ let compver = new SemVer(comparator.semver.version);
1050
612
  switch (comparator.operator) {
1051
613
  case ">":
1052
- if (compver.prerelease.length === 0) {
1053
- compver.patch++;
1054
- } else {
1055
- compver.prerelease.push(0);
1056
- }
1057
- compver.raw = compver.format();
614
+ compver.prerelease.length === 0 ? compver.patch++ : compver.prerelease.push(0), compver.raw = compver.format();
1058
615
  /* fallthrough */
1059
616
  case "":
1060
617
  case ">=":
1061
- if (!setMin || gt(compver, setMin)) {
1062
- setMin = compver;
1063
- }
618
+ (!setMin || gt(compver, setMin)) && (setMin = compver);
1064
619
  break;
1065
620
  case "<":
1066
621
  case "<=":
@@ -1069,16 +624,10 @@ var require_min_version = __commonJS({
1069
624
  default:
1070
625
  throw new Error(`Unexpected operation: ${comparator.operator}`);
1071
626
  }
1072
- });
1073
- if (setMin && (!minver || gt(minver, setMin))) {
1074
- minver = setMin;
1075
- }
627
+ }), setMin && (!minver || gt(minver, setMin)) && (minver = setMin);
1076
628
  }
1077
- if (minver && range.test(minver)) {
1078
- return minver;
1079
- }
1080
- return null;
1081
- }, "minVersion");
629
+ return minver && range.test(minver) ? minver : null;
630
+ };
1082
631
  module.exports = minVersion;
1083
632
  }
1084
633
  });
@@ -1087,14 +636,13 @@ var require_min_version = __commonJS({
1087
636
  var require_valid2 = __commonJS({
1088
637
  "../../node_modules/semver/ranges/valid.js"(exports, module) {
1089
638
  "use strict";
1090
- var Range = require_range();
1091
- var validRange = /* @__PURE__ */ __name((range, options) => {
639
+ var Range = require_range(), validRange = (range, options) => {
1092
640
  try {
1093
641
  return new Range(range, options).range || "*";
1094
- } catch (er) {
642
+ } catch {
1095
643
  return null;
1096
644
  }
1097
- }, "validRange");
645
+ };
1098
646
  module.exports = validRange;
1099
647
  }
1100
648
  });
@@ -1103,67 +651,32 @@ var require_valid2 = __commonJS({
1103
651
  var require_outside = __commonJS({
1104
652
  "../../node_modules/semver/ranges/outside.js"(exports, module) {
1105
653
  "use strict";
1106
- var SemVer = require_semver();
1107
- var Comparator = require_comparator();
1108
- var { ANY } = Comparator;
1109
- var Range = require_range();
1110
- var satisfies2 = require_satisfies();
1111
- var gt = require_gt();
1112
- var lt = require_lt();
1113
- var lte = require_lte();
1114
- var gte = require_gte();
1115
- var outside = /* @__PURE__ */ __name((version, range, hilo, options) => {
1116
- version = new SemVer(version, options);
1117
- range = new Range(range, options);
654
+ var SemVer = require_semver(), Comparator = require_comparator(), { ANY } = Comparator, Range = require_range(), satisfies2 = require_satisfies(), gt = require_gt(), lt = require_lt(), lte = require_lte(), gte = require_gte(), outside = (version, range, hilo, options) => {
655
+ version = new SemVer(version, options), range = new Range(range, options);
1118
656
  let gtfn, ltefn, ltfn, comp, ecomp;
1119
657
  switch (hilo) {
1120
658
  case ">":
1121
- gtfn = gt;
1122
- ltefn = lte;
1123
- ltfn = lt;
1124
- comp = ">";
1125
- ecomp = ">=";
659
+ gtfn = gt, ltefn = lte, ltfn = lt, comp = ">", ecomp = ">=";
1126
660
  break;
1127
661
  case "<":
1128
- gtfn = lt;
1129
- ltefn = gte;
1130
- ltfn = gt;
1131
- comp = "<";
1132
- ecomp = "<=";
662
+ gtfn = lt, ltefn = gte, ltfn = gt, comp = "<", ecomp = "<=";
1133
663
  break;
1134
664
  default:
1135
665
  throw new TypeError('Must provide a hilo val of "<" or ">"');
1136
666
  }
1137
- if (satisfies2(version, range, options)) {
1138
- return false;
1139
- }
667
+ if (satisfies2(version, range, options))
668
+ return !1;
1140
669
  for (let i = 0; i < range.set.length; ++i) {
1141
- const comparators = range.set[i];
1142
- let high = null;
1143
- let low = null;
1144
- comparators.forEach((comparator) => {
1145
- if (comparator.semver === ANY) {
1146
- comparator = new Comparator(">=0.0.0");
1147
- }
1148
- high = high || comparator;
1149
- low = low || comparator;
1150
- if (gtfn(comparator.semver, high.semver, options)) {
1151
- high = comparator;
1152
- } else if (ltfn(comparator.semver, low.semver, options)) {
1153
- low = comparator;
1154
- }
1155
- });
1156
- if (high.operator === comp || high.operator === ecomp) {
1157
- return false;
1158
- }
1159
- if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
1160
- return false;
1161
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
1162
- return false;
1163
- }
1164
- }
1165
- return true;
1166
- }, "outside");
670
+ let comparators = range.set[i], high = null, low = null;
671
+ if (comparators.forEach((comparator) => {
672
+ comparator.semver === ANY && (comparator = new Comparator(">=0.0.0")), high = high || comparator, low = low || comparator, gtfn(comparator.semver, high.semver, options) ? high = comparator : ltfn(comparator.semver, low.semver, options) && (low = comparator);
673
+ }), high.operator === comp || high.operator === ecomp || (!low.operator || low.operator === comp) && ltefn(version, low.semver))
674
+ return !1;
675
+ if (low.operator === ecomp && ltfn(version, low.semver))
676
+ return !1;
677
+ }
678
+ return !0;
679
+ };
1167
680
  module.exports = outside;
1168
681
  }
1169
682
  });
@@ -1172,8 +685,7 @@ var require_outside = __commonJS({
1172
685
  var require_gtr = __commonJS({
1173
686
  "../../node_modules/semver/ranges/gtr.js"(exports, module) {
1174
687
  "use strict";
1175
- var outside = require_outside();
1176
- var gtr = /* @__PURE__ */ __name((version, range, options) => outside(version, range, ">", options), "gtr");
688
+ var outside = require_outside(), gtr = (version, range, options) => outside(version, range, ">", options);
1177
689
  module.exports = gtr;
1178
690
  }
1179
691
  });
@@ -1182,8 +694,7 @@ var require_gtr = __commonJS({
1182
694
  var require_ltr = __commonJS({
1183
695
  "../../node_modules/semver/ranges/ltr.js"(exports, module) {
1184
696
  "use strict";
1185
- var outside = require_outside();
1186
- var ltr = /* @__PURE__ */ __name((version, range, options) => outside(version, range, "<", options), "ltr");
697
+ var outside = require_outside(), ltr = (version, range, options) => outside(version, range, "<", options);
1187
698
  module.exports = ltr;
1188
699
  }
1189
700
  });
@@ -1192,12 +703,7 @@ var require_ltr = __commonJS({
1192
703
  var require_intersects = __commonJS({
1193
704
  "../../node_modules/semver/ranges/intersects.js"(exports, module) {
1194
705
  "use strict";
1195
- var Range = require_range();
1196
- var intersects = /* @__PURE__ */ __name((r1, r2, options) => {
1197
- r1 = new Range(r1, options);
1198
- r2 = new Range(r2, options);
1199
- return r1.intersects(r2, options);
1200
- }, "intersects");
706
+ var Range = require_range(), intersects = (r1, r2, options) => (r1 = new Range(r1, options), r2 = new Range(r2, options), r1.intersects(r2, options));
1201
707
  module.exports = intersects;
1202
708
  }
1203
709
  });
@@ -1206,47 +712,16 @@ var require_intersects = __commonJS({
1206
712
  var require_simplify = __commonJS({
1207
713
  "../../node_modules/semver/ranges/simplify.js"(exports, module) {
1208
714
  "use strict";
1209
- var satisfies2 = require_satisfies();
1210
- var compare = require_compare();
715
+ var satisfies2 = require_satisfies(), compare = require_compare();
1211
716
  module.exports = (versions, range, options) => {
1212
- const set = [];
1213
- let first = null;
1214
- let prev = null;
1215
- const v = versions.sort((a, b) => compare(a, b, options));
1216
- for (const version of v) {
1217
- const included = satisfies2(version, range, options);
1218
- if (included) {
1219
- prev = version;
1220
- if (!first) {
1221
- first = version;
1222
- }
1223
- } else {
1224
- if (prev) {
1225
- set.push([first, prev]);
1226
- }
1227
- prev = null;
1228
- first = null;
1229
- }
1230
- }
1231
- if (first) {
1232
- set.push([first, null]);
1233
- }
1234
- const ranges = [];
1235
- for (const [min, max] of set) {
1236
- if (min === max) {
1237
- ranges.push(min);
1238
- } else if (!max && min === v[0]) {
1239
- ranges.push("*");
1240
- } else if (!max) {
1241
- ranges.push(`>=${min}`);
1242
- } else if (min === v[0]) {
1243
- ranges.push(`<=${max}`);
1244
- } else {
1245
- ranges.push(`${min} - ${max}`);
1246
- }
1247
- }
1248
- const simplified = ranges.join(" || ");
1249
- const original = typeof range.raw === "string" ? range.raw : String(range);
717
+ let set = [], first = null, prev = null, v = versions.sort((a, b) => compare(a, b, options));
718
+ for (let version of v)
719
+ satisfies2(version, range, options) ? (prev = version, first || (first = version)) : (prev && set.push([first, prev]), prev = null, first = null);
720
+ first && set.push([first, null]);
721
+ let ranges = [];
722
+ for (let [min, max] of set)
723
+ min === max ? ranges.push(min) : !max && min === v[0] ? ranges.push("*") : max ? min === v[0] ? ranges.push(`<=${max}`) : ranges.push(`${min} - ${max}`) : ranges.push(`>=${min}`);
724
+ let simplified = ranges.join(" || "), original = typeof range.raw == "string" ? range.raw : String(range);
1250
725
  return simplified.length < original.length ? simplified : range;
1251
726
  };
1252
727
  }
@@ -1256,160 +731,86 @@ var require_simplify = __commonJS({
1256
731
  var require_subset = __commonJS({
1257
732
  "../../node_modules/semver/ranges/subset.js"(exports, module) {
1258
733
  "use strict";
1259
- var Range = require_range();
1260
- var Comparator = require_comparator();
1261
- var { ANY } = Comparator;
1262
- var satisfies2 = require_satisfies();
1263
- var compare = require_compare();
1264
- var subset = /* @__PURE__ */ __name((sub, dom, options = {}) => {
1265
- if (sub === dom) {
1266
- return true;
1267
- }
1268
- sub = new Range(sub, options);
1269
- dom = new Range(dom, options);
1270
- let sawNonNull = false;
1271
- OUTER: for (const simpleSub of sub.set) {
1272
- for (const simpleDom of dom.set) {
1273
- const isSub = simpleSubset(simpleSub, simpleDom, options);
1274
- sawNonNull = sawNonNull || isSub !== null;
1275
- if (isSub) {
734
+ var Range = require_range(), Comparator = require_comparator(), { ANY } = Comparator, satisfies2 = require_satisfies(), compare = require_compare(), subset = (sub, dom, options = {}) => {
735
+ if (sub === dom)
736
+ return !0;
737
+ sub = new Range(sub, options), dom = new Range(dom, options);
738
+ let sawNonNull = !1;
739
+ OUTER: for (let simpleSub of sub.set) {
740
+ for (let simpleDom of dom.set) {
741
+ let isSub = simpleSubset(simpleSub, simpleDom, options);
742
+ if (sawNonNull = sawNonNull || isSub !== null, isSub)
1276
743
  continue OUTER;
1277
- }
1278
744
  }
1279
- if (sawNonNull) {
1280
- return false;
1281
- }
1282
- }
1283
- return true;
1284
- }, "subset");
1285
- var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
1286
- var minimumVersion = [new Comparator(">=0.0.0")];
1287
- var simpleSubset = /* @__PURE__ */ __name((sub, dom, options) => {
1288
- if (sub === dom) {
1289
- return true;
745
+ if (sawNonNull)
746
+ return !1;
1290
747
  }
748
+ return !0;
749
+ }, minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")], minimumVersion = [new Comparator(">=0.0.0")], simpleSubset = (sub, dom, options) => {
750
+ if (sub === dom)
751
+ return !0;
1291
752
  if (sub.length === 1 && sub[0].semver === ANY) {
1292
- if (dom.length === 1 && dom[0].semver === ANY) {
1293
- return true;
1294
- } else if (options.includePrerelease) {
1295
- sub = minimumVersionWithPreRelease;
1296
- } else {
1297
- sub = minimumVersion;
1298
- }
753
+ if (dom.length === 1 && dom[0].semver === ANY)
754
+ return !0;
755
+ options.includePrerelease ? sub = minimumVersionWithPreRelease : sub = minimumVersion;
1299
756
  }
1300
757
  if (dom.length === 1 && dom[0].semver === ANY) {
1301
- if (options.includePrerelease) {
1302
- return true;
1303
- } else {
1304
- dom = minimumVersion;
1305
- }
1306
- }
1307
- const eqSet = /* @__PURE__ */ new Set();
1308
- let gt, lt;
1309
- for (const c of sub) {
1310
- if (c.operator === ">" || c.operator === ">=") {
1311
- gt = higherGT(gt, c, options);
1312
- } else if (c.operator === "<" || c.operator === "<=") {
1313
- lt = lowerLT(lt, c, options);
1314
- } else {
1315
- eqSet.add(c.semver);
1316
- }
1317
- }
1318
- if (eqSet.size > 1) {
758
+ if (options.includePrerelease)
759
+ return !0;
760
+ dom = minimumVersion;
761
+ }
762
+ let eqSet = /* @__PURE__ */ new Set(), gt, lt;
763
+ for (let c of sub)
764
+ c.operator === ">" || c.operator === ">=" ? gt = higherGT(gt, c, options) : c.operator === "<" || c.operator === "<=" ? lt = lowerLT(lt, c, options) : eqSet.add(c.semver);
765
+ if (eqSet.size > 1)
1319
766
  return null;
1320
- }
1321
767
  let gtltComp;
1322
768
  if (gt && lt) {
1323
- gtltComp = compare(gt.semver, lt.semver, options);
1324
- if (gtltComp > 0) {
769
+ if (gtltComp = compare(gt.semver, lt.semver, options), gtltComp > 0)
1325
770
  return null;
1326
- } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
771
+ if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<="))
1327
772
  return null;
1328
- }
1329
773
  }
1330
- for (const eq of eqSet) {
1331
- if (gt && !satisfies2(eq, String(gt), options)) {
1332
- return null;
1333
- }
1334
- if (lt && !satisfies2(eq, String(lt), options)) {
774
+ for (let eq of eqSet) {
775
+ if (gt && !satisfies2(eq, String(gt), options) || lt && !satisfies2(eq, String(lt), options))
1335
776
  return null;
1336
- }
1337
- for (const c of dom) {
1338
- if (!satisfies2(eq, String(c), options)) {
1339
- return false;
1340
- }
1341
- }
1342
- return true;
1343
- }
1344
- let higher, lower;
1345
- let hasDomLT, hasDomGT;
1346
- let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
1347
- let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
1348
- if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
1349
- needDomLTPre = false;
1350
- }
1351
- for (const c of dom) {
1352
- hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
1353
- hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
1354
- if (gt) {
1355
- if (needDomGTPre) {
1356
- if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
1357
- needDomGTPre = false;
1358
- }
1359
- }
1360
- if (c.operator === ">" || c.operator === ">=") {
1361
- higher = higherGT(gt, c, options);
1362
- if (higher === c && higher !== gt) {
1363
- return false;
1364
- }
1365
- } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options)) {
1366
- return false;
1367
- }
777
+ for (let c of dom)
778
+ if (!satisfies2(eq, String(c), options))
779
+ return !1;
780
+ return !0;
781
+ }
782
+ let higher, lower, hasDomLT, hasDomGT, needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : !1, needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : !1;
783
+ needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0 && (needDomLTPre = !1);
784
+ for (let c of dom) {
785
+ if (hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=", hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=", gt) {
786
+ if (needDomGTPre && c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch && (needDomGTPre = !1), c.operator === ">" || c.operator === ">=") {
787
+ if (higher = higherGT(gt, c, options), higher === c && higher !== gt)
788
+ return !1;
789
+ } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options))
790
+ return !1;
1368
791
  }
1369
792
  if (lt) {
1370
- if (needDomLTPre) {
1371
- if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
1372
- needDomLTPre = false;
1373
- }
1374
- }
1375
- if (c.operator === "<" || c.operator === "<=") {
1376
- lower = lowerLT(lt, c, options);
1377
- if (lower === c && lower !== lt) {
1378
- return false;
1379
- }
1380
- } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
1381
- return false;
1382
- }
1383
- }
1384
- if (!c.operator && (lt || gt) && gtltComp !== 0) {
1385
- return false;
1386
- }
1387
- }
1388
- if (gt && hasDomLT && !lt && gtltComp !== 0) {
1389
- return false;
1390
- }
1391
- if (lt && hasDomGT && !gt && gtltComp !== 0) {
1392
- return false;
1393
- }
1394
- if (needDomGTPre || needDomLTPre) {
1395
- return false;
1396
- }
1397
- return true;
1398
- }, "simpleSubset");
1399
- var higherGT = /* @__PURE__ */ __name((a, b, options) => {
1400
- if (!a) {
793
+ if (needDomLTPre && c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch && (needDomLTPre = !1), c.operator === "<" || c.operator === "<=") {
794
+ if (lower = lowerLT(lt, c, options), lower === c && lower !== lt)
795
+ return !1;
796
+ } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options))
797
+ return !1;
798
+ }
799
+ if (!c.operator && (lt || gt) && gtltComp !== 0)
800
+ return !1;
801
+ }
802
+ return !(gt && hasDomLT && !lt && gtltComp !== 0 || lt && hasDomGT && !gt && gtltComp !== 0 || needDomGTPre || needDomLTPre);
803
+ }, higherGT = (a, b, options) => {
804
+ if (!a)
1401
805
  return b;
1402
- }
1403
- const comp = compare(a.semver, b.semver, options);
1404
- return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
1405
- }, "higherGT");
1406
- var lowerLT = /* @__PURE__ */ __name((a, b, options) => {
1407
- if (!a) {
806
+ let comp = compare(a.semver, b.semver, options);
807
+ return comp > 0 ? a : comp < 0 || b.operator === ">" && a.operator === ">=" ? b : a;
808
+ }, lowerLT = (a, b, options) => {
809
+ if (!a)
1408
810
  return b;
1409
- }
1410
- const comp = compare(a.semver, b.semver, options);
1411
- return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
1412
- }, "lowerLT");
811
+ let comp = compare(a.semver, b.semver, options);
812
+ return comp < 0 ? a : comp > 0 || b.operator === "<" && a.operator === "<=" ? b : a;
813
+ };
1413
814
  module.exports = subset;
1414
815
  }
1415
816
  });
@@ -1418,47 +819,7 @@ var require_subset = __commonJS({
1418
819
  var require_semver2 = __commonJS({
1419
820
  "../../node_modules/semver/index.js"(exports, module) {
1420
821
  "use strict";
1421
- var internalRe = require_re();
1422
- var constants = require_constants();
1423
- var SemVer = require_semver();
1424
- var identifiers = require_identifiers();
1425
- var parse = require_parse();
1426
- var valid = require_valid();
1427
- var clean = require_clean();
1428
- var inc = require_inc();
1429
- var diff = require_diff();
1430
- var major = require_major();
1431
- var minor = require_minor();
1432
- var patch = require_patch();
1433
- var prerelease = require_prerelease();
1434
- var compare = require_compare();
1435
- var rcompare = require_rcompare();
1436
- var compareLoose = require_compare_loose();
1437
- var compareBuild = require_compare_build();
1438
- var sort = require_sort();
1439
- var rsort = require_rsort();
1440
- var gt = require_gt();
1441
- var lt = require_lt();
1442
- var eq = require_eq();
1443
- var neq = require_neq();
1444
- var gte = require_gte();
1445
- var lte = require_lte();
1446
- var cmp = require_cmp();
1447
- var coerce2 = require_coerce();
1448
- var Comparator = require_comparator();
1449
- var Range = require_range();
1450
- var satisfies2 = require_satisfies();
1451
- var toComparators = require_to_comparators();
1452
- var maxSatisfying = require_max_satisfying();
1453
- var minSatisfying = require_min_satisfying();
1454
- var minVersion = require_min_version();
1455
- var validRange = require_valid2();
1456
- var outside = require_outside();
1457
- var gtr = require_gtr();
1458
- var ltr = require_ltr();
1459
- var intersects = require_intersects();
1460
- var simplifyRange = require_simplify();
1461
- var subset = require_subset();
822
+ var internalRe = require_re(), constants = require_constants(), SemVer = require_semver(), identifiers = require_identifiers(), parse = require_parse(), valid = require_valid(), clean = require_clean(), inc = require_inc(), diff = require_diff(), major = require_major(), minor = require_minor(), patch = require_patch(), prerelease = require_prerelease(), compare = require_compare(), rcompare = require_rcompare(), compareLoose = require_compare_loose(), compareBuild = require_compare_build(), sort = require_sort(), rsort = require_rsort(), gt = require_gt(), lt = require_lt(), eq = require_eq(), neq = require_neq(), gte = require_gte(), lte = require_lte(), cmp = require_cmp(), coerce = require_coerce(), Comparator = require_comparator(), Range = require_range(), satisfies2 = require_satisfies(), toComparators = require_to_comparators(), maxSatisfying = require_max_satisfying(), minSatisfying = require_min_satisfying(), minVersion = require_min_version(), validRange = require_valid2(), outside = require_outside(), gtr = require_gtr(), ltr = require_ltr(), intersects = require_intersects(), simplifyRange = require_simplify(), subset = require_subset();
1462
823
  module.exports = {
1463
824
  parse,
1464
825
  valid,
@@ -1482,7 +843,7 @@ var require_semver2 = __commonJS({
1482
843
  gte,
1483
844
  lte,
1484
845
  cmp,
1485
- coerce: coerce2,
846
+ coerce,
1486
847
  Comparator,
1487
848
  Range,
1488
849
  satisfies: satisfies2,
@@ -1513,120 +874,58 @@ var require_semver2 = __commonJS({
1513
874
  import { existsSync } from "node:fs";
1514
875
  import * as fs2 from "node:fs/promises";
1515
876
  import { writeFile } from "node:fs/promises";
1516
- import { isAbsolute, posix, sep } from "node:path";
1517
- import { fileURLToPath, pathToFileURL } from "node:url";
1518
- import { babelParse, generate, traverse } from "storybook/internal/babel";
877
+ import { babelParse, generate } from "storybook/internal/babel";
878
+ import { AddonVitestService } from "storybook/internal/cli";
1519
879
  import {
1520
880
  JsPackageManagerFactory,
1521
881
  formatFileContent,
1522
- getInterpretedFile,
1523
882
  getProjectRoot,
1524
- isCI as isCI2,
1525
- loadMainConfig,
1526
- scanAndTransformFiles,
1527
- transformImportFiles
883
+ getStorybookInfo
1528
884
  } from "storybook/internal/common";
1529
- import { experimental_loadStorybook } from "storybook/internal/core-server";
1530
- import { readConfig, writeConfig } from "storybook/internal/csf-tools";
1531
- import { logger as logger2 } from "storybook/internal/node-logger";
1532
-
1533
- // ../../node_modules/empathic/package.mjs
1534
- function up2(options) {
1535
- return up("package.json", options);
1536
- }
1537
- __name(up2, "up");
1538
-
1539
- // src/postinstall.ts
1540
- var import_semver = __toESM(require_semver2(), 1);
1541
- import prompts from "prompts";
1542
- import { dedent } from "ts-dedent";
1543
-
1544
- // src/postinstall-logger.ts
1545
- import { isCI } from "storybook/internal/common";
1546
- import { colors, logger } from "storybook/internal/node-logger";
1547
- var fancy = process.platform !== "win32" || isCI() || process.env.TERM === "xterm-256color";
1548
- var step = colors.gray("\u203A");
1549
- var info = colors.blue(fancy ? "\u2139" : "i");
1550
- var success = colors.green(fancy ? "\u2714" : "\u221A");
1551
- var warning = colors.orange(fancy ? "\u26A0" : "\u203C");
1552
- var error = colors.red(fancy ? "\u2716" : "\xD7");
1553
- var baseOptions = {
1554
- borderStyle: "round",
1555
- padding: 1
1556
- };
1557
- var print = /* @__PURE__ */ __name((message, options) => {
1558
- logger.line(1);
1559
- logger.logBox(message, { ...baseOptions, ...options });
1560
- }, "print");
1561
- var printInfo = /* @__PURE__ */ __name((title, message, options) => print(message, { borderColor: "blue", title, ...options }), "printInfo");
1562
- var printWarning = /* @__PURE__ */ __name((title, message, options) => print(message, { borderColor: "yellow", title, ...options }), "printWarning");
1563
- var printError = /* @__PURE__ */ __name((title, message, options) => print(message, { borderColor: "red", title, ...options }), "printError");
1564
- var printSuccess = /* @__PURE__ */ __name((title, message, options) => print(message, { borderColor: "green", title, ...options }), "printSuccess");
885
+ import { CLI_COLORS } from "storybook/internal/node-logger";
886
+ import {
887
+ AddonVitestPostinstallError,
888
+ AddonVitestPostinstallPrerequisiteCheckError
889
+ } from "storybook/internal/server-errors";
890
+ import { SupportedFramework } from "storybook/internal/types";
891
+ var import_semver = __toESM(require_semver2(), 1), import_ts_dedent = __toESM(require_dist(), 1);
1565
892
 
1566
893
  // src/updateVitestFile.ts
1567
894
  import * as fs from "node:fs/promises";
1568
- var loadTemplate = /* @__PURE__ */ __name(async (name, replacements) => {
895
+ var loadTemplate = async (name, replacements) => {
1569
896
  let template = await fs.readFile(
1570
897
  join(resolvePackageDir("@storybook/addon-vitest"), "templates", name),
1571
898
  "utf8"
1572
899
  );
1573
- Object.entries(replacements).forEach(([key, value]) => template = template.replace(key, value));
1574
- return template;
1575
- }, "loadTemplate");
1576
- var mergeProperties = /* @__PURE__ */ __name((source, target) => {
1577
- for (const sourceProp of source) {
900
+ return Object.entries(replacements).forEach(([key, value]) => template = template.replace(key, value)), template;
901
+ }, mergeProperties = (source, target) => {
902
+ for (let sourceProp of source)
1578
903
  if (sourceProp.type === "ObjectProperty") {
1579
- const targetProp = target.find(
904
+ let targetProp = target.find(
1580
905
  (p) => sourceProp.key.type === "Identifier" && p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === sourceProp.key.name
1581
906
  );
1582
- if (targetProp && targetProp.type === "ObjectProperty") {
1583
- if (sourceProp.value.type === "ObjectExpression" && targetProp.value.type === "ObjectExpression") {
1584
- mergeProperties(sourceProp.value.properties, targetProp.value.properties);
1585
- } else if (sourceProp.value.type === "ArrayExpression" && targetProp.value.type === "ArrayExpression") {
1586
- targetProp.value.elements.push(...sourceProp.value.elements);
1587
- } else {
1588
- targetProp.value = sourceProp.value;
1589
- }
1590
- } else {
1591
- target.push(sourceProp);
1592
- }
907
+ targetProp && targetProp.type === "ObjectProperty" ? sourceProp.value.type === "ObjectExpression" && targetProp.value.type === "ObjectExpression" ? mergeProperties(sourceProp.value.properties, targetProp.value.properties) : sourceProp.value.type === "ArrayExpression" && targetProp.value.type === "ArrayExpression" ? targetProp.value.elements.push(...sourceProp.value.elements) : targetProp.value = sourceProp.value : target.push(sourceProp);
1593
908
  }
1594
- }
1595
- }, "mergeProperties");
1596
- var updateConfigFile = /* @__PURE__ */ __name((source, target) => {
1597
- let updated = false;
1598
- const sourceExportDefault = source.program.body.find(
909
+ }, updateConfigFile = (source, target) => {
910
+ let updated = !1, sourceExportDefault = source.program.body.find(
1599
911
  (n) => n.type === "ExportDefaultDeclaration"
1600
912
  );
1601
- if (!sourceExportDefault || sourceExportDefault.declaration.type !== "CallExpression") {
1602
- return false;
1603
- }
1604
- const targetExportDefault = target.program.body.find(
913
+ if (!sourceExportDefault || sourceExportDefault.declaration.type !== "CallExpression")
914
+ return !1;
915
+ let targetExportDefault = target.program.body.find(
1605
916
  (n) => n.type === "ExportDefaultDeclaration"
1606
917
  );
1607
- if (!targetExportDefault) {
1608
- return false;
1609
- }
1610
- if (targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "defineConfig" && targetExportDefault.declaration.arguments.length > 0 && targetExportDefault.declaration.arguments[0].type === "ArrowFunctionExpression") {
1611
- return false;
1612
- }
1613
- let canHandleConfig = false;
1614
- if (targetExportDefault.declaration.type === "ObjectExpression") {
1615
- canHandleConfig = true;
1616
- } else if (targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "defineConfig" && targetExportDefault.declaration.arguments[0]?.type === "ObjectExpression") {
1617
- canHandleConfig = true;
1618
- } else if (targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "mergeConfig" && targetExportDefault.declaration.arguments.length >= 2) {
1619
- canHandleConfig = true;
1620
- }
1621
- if (!canHandleConfig) {
1622
- return false;
1623
- }
1624
- for (const sourceNode of source.program.body) {
918
+ if (!targetExportDefault || targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "defineConfig" && targetExportDefault.declaration.arguments.length > 0 && targetExportDefault.declaration.arguments[0].type === "ArrowFunctionExpression")
919
+ return !1;
920
+ let canHandleConfig = !1;
921
+ if ((targetExportDefault.declaration.type === "ObjectExpression" || targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "defineConfig" && targetExportDefault.declaration.arguments[0]?.type === "ObjectExpression" || targetExportDefault.declaration.type === "CallExpression" && targetExportDefault.declaration.callee.type === "Identifier" && targetExportDefault.declaration.callee.name === "mergeConfig" && targetExportDefault.declaration.arguments.length >= 2) && (canHandleConfig = !0), !canHandleConfig)
922
+ return !1;
923
+ for (let sourceNode of source.program.body)
1625
924
  if (sourceNode.type === "ImportDeclaration") {
1626
925
  if (!target.program.body.some(
1627
926
  (targetNode) => targetNode.type === sourceNode.type && targetNode.specifiers.some((s) => s.local.name === sourceNode.specifiers[0].local.name)
1628
927
  )) {
1629
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
928
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1630
929
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1631
930
  }
1632
931
  } else if (sourceNode.type === "VariableDeclaration") {
@@ -1635,110 +934,88 @@ var updateConfigFile = /* @__PURE__ */ __name((source, target) => {
1635
934
  (d) => "name" in d.id && "name" in sourceNode.declarations[0].id && d.id.name === sourceNode.declarations[0].id.name
1636
935
  )
1637
936
  )) {
1638
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
937
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1639
938
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1640
939
  }
1641
940
  } else if (sourceNode.type === "ExportDefaultDeclaration") {
1642
- const exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
941
+ let exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1643
942
  if (exportDefault && sourceNode.declaration.type === "CallExpression" && sourceNode.declaration.arguments.length > 0 && sourceNode.declaration.arguments[0].type === "ObjectExpression") {
1644
- const { properties } = sourceNode.declaration.arguments[0];
1645
- if (exportDefault.declaration.type === "ObjectExpression") {
1646
- mergeProperties(properties, exportDefault.declaration.properties);
1647
- updated = true;
1648
- } else if (exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "defineConfig" && exportDefault.declaration.arguments[0]?.type === "ObjectExpression") {
1649
- mergeProperties(properties, exportDefault.declaration.arguments[0].properties);
1650
- updated = true;
1651
- } else if (exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "mergeConfig" && exportDefault.declaration.arguments.length >= 2) {
1652
- const configObjectNodes = [];
1653
- for (const arg of exportDefault.declaration.arguments) {
1654
- if (arg?.type === "CallExpression" && arg.callee.type === "Identifier" && arg.callee.name === "defineConfig" && arg.arguments[0]?.type === "ObjectExpression") {
1655
- configObjectNodes.push(arg.arguments[0]);
1656
- } else if (arg?.type === "ObjectExpression") {
1657
- configObjectNodes.push(arg);
1658
- }
1659
- }
1660
- const configObjectWithTest = configObjectNodes.find(
943
+ let { properties } = sourceNode.declaration.arguments[0];
944
+ if (exportDefault.declaration.type === "ObjectExpression")
945
+ mergeProperties(properties, exportDefault.declaration.properties), updated = !0;
946
+ else if (exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "defineConfig" && exportDefault.declaration.arguments[0]?.type === "ObjectExpression")
947
+ mergeProperties(properties, exportDefault.declaration.arguments[0].properties), updated = !0;
948
+ else if (exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "mergeConfig" && exportDefault.declaration.arguments.length >= 2) {
949
+ let configObjectNodes = [];
950
+ for (let arg of exportDefault.declaration.arguments)
951
+ arg?.type === "CallExpression" && arg.callee.type === "Identifier" && arg.callee.name === "defineConfig" && arg.arguments[0]?.type === "ObjectExpression" ? configObjectNodes.push(arg.arguments[0]) : arg?.type === "ObjectExpression" && configObjectNodes.push(arg);
952
+ let targetConfigObject = configObjectNodes.find(
1661
953
  (obj) => obj.properties.some(
1662
954
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1663
955
  )
1664
- );
1665
- const targetConfigObject = configObjectWithTest || configObjectNodes[0];
1666
- if (!targetConfigObject) {
1667
- return false;
1668
- }
1669
- const existingTestProp = targetConfigObject.properties.find(
956
+ ) || configObjectNodes[0];
957
+ if (!targetConfigObject)
958
+ return !1;
959
+ let existingTestProp = targetConfigObject.properties.find(
1670
960
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1671
961
  );
1672
962
  if (existingTestProp && existingTestProp.value.type === "ObjectExpression") {
1673
- const templateTestProp = properties.find(
963
+ let templateTestProp = properties.find(
1674
964
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1675
965
  );
1676
966
  if (templateTestProp && templateTestProp.value.type === "ObjectExpression") {
1677
- const workspaceOrProjectsProp = templateTestProp.value.properties.find(
967
+ let workspaceOrProjectsProp = templateTestProp.value.properties.find(
1678
968
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && (p.key.name === "workspace" || p.key.name === "projects")
1679
969
  );
1680
970
  if (workspaceOrProjectsProp && workspaceOrProjectsProp.value.type === "ArrayExpression") {
1681
- const coverageProp = existingTestProp.value.properties.find(
971
+ let coverageProp = existingTestProp.value.properties.find(
1682
972
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "coverage"
1683
- );
1684
- const testPropsWithoutCoverage = existingTestProp.value.properties.filter(
1685
- (p) => p !== coverageProp
1686
- );
1687
- const testConfigForProject = {
973
+ ), testConfigForProject = {
1688
974
  type: "ObjectExpression",
1689
- properties: testPropsWithoutCoverage
1690
- };
1691
- const existingTestProject = {
975
+ properties: existingTestProp.value.properties.filter(
976
+ (p) => p !== coverageProp
977
+ )
978
+ }, existingTestProject = {
1692
979
  type: "ObjectExpression",
1693
980
  properties: [
1694
981
  {
1695
982
  type: "ObjectProperty",
1696
983
  key: { type: "Identifier", name: "extends" },
1697
- value: { type: "BooleanLiteral", value: true },
1698
- computed: false,
1699
- shorthand: false
984
+ value: { type: "BooleanLiteral", value: !0 },
985
+ computed: !1,
986
+ shorthand: !1
1700
987
  },
1701
988
  {
1702
989
  type: "ObjectProperty",
1703
990
  key: { type: "Identifier", name: "test" },
1704
991
  value: testConfigForProject,
1705
- computed: false,
1706
- shorthand: false
992
+ computed: !1,
993
+ shorthand: !1
1707
994
  }
1708
995
  ]
1709
996
  };
1710
- workspaceOrProjectsProp.value.elements.unshift(existingTestProject);
1711
- targetConfigObject.properties = targetConfigObject.properties.filter(
997
+ workspaceOrProjectsProp.value.elements.unshift(existingTestProject), targetConfigObject.properties = targetConfigObject.properties.filter(
1712
998
  (p) => p !== existingTestProp
1713
- );
1714
- if (coverageProp && templateTestProp.value.type === "ObjectExpression") {
1715
- templateTestProp.value.properties.unshift(coverageProp);
1716
- }
1717
- mergeProperties(properties, targetConfigObject.properties);
1718
- } else {
999
+ ), coverageProp && templateTestProp.value.type === "ObjectExpression" && templateTestProp.value.properties.unshift(coverageProp), mergeProperties(properties, targetConfigObject.properties);
1000
+ } else
1719
1001
  mergeProperties(properties, targetConfigObject.properties);
1720
- }
1721
- } else {
1002
+ } else
1722
1003
  mergeProperties(properties, targetConfigObject.properties);
1723
- }
1724
- } else {
1004
+ } else
1725
1005
  mergeProperties(properties, targetConfigObject.properties);
1726
- }
1727
- updated = true;
1006
+ updated = !0;
1728
1007
  }
1729
1008
  }
1730
1009
  }
1731
- }
1732
1010
  return updated;
1733
- }, "updateConfigFile");
1734
- var updateWorkspaceFile = /* @__PURE__ */ __name((source, target) => {
1735
- let updated = false;
1736
- for (const sourceNode of source.program.body) {
1011
+ }, updateWorkspaceFile = (source, target) => {
1012
+ let updated = !1;
1013
+ for (let sourceNode of source.program.body)
1737
1014
  if (sourceNode.type === "ImportDeclaration") {
1738
1015
  if (!target.program.body.some(
1739
1016
  (targetNode) => targetNode.type === sourceNode.type && targetNode.source.value === sourceNode.source.value && targetNode.specifiers.some((s) => s.local.name === sourceNode.specifiers[0].local.name)
1740
1017
  )) {
1741
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1018
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1742
1019
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1743
1020
  }
1744
1021
  } else if (sourceNode.type === "VariableDeclaration") {
@@ -1747,338 +1024,134 @@ var updateWorkspaceFile = /* @__PURE__ */ __name((source, target) => {
1747
1024
  (d) => "name" in d.id && "name" in sourceNode.declarations[0].id && d.id.name === sourceNode.declarations[0].id.name
1748
1025
  )
1749
1026
  )) {
1750
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1027
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1751
1028
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1752
1029
  }
1753
1030
  } else if (sourceNode.type === "ExportDefaultDeclaration") {
1754
- const exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1031
+ let exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1755
1032
  if (exportDefault && sourceNode.declaration.type === "CallExpression" && sourceNode.declaration.arguments.length > 0 && sourceNode.declaration.arguments[0].type === "ArrayExpression" && sourceNode.declaration.arguments[0].elements.length > 0) {
1756
- const { elements } = sourceNode.declaration.arguments[0];
1757
- if (exportDefault.declaration.type === "ArrayExpression") {
1758
- exportDefault.declaration.elements.push(...elements);
1759
- updated = true;
1760
- } else if (exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "defineWorkspace" && exportDefault.declaration.arguments[0]?.type === "ArrayExpression") {
1761
- exportDefault.declaration.arguments[0].elements.push(...elements);
1762
- updated = true;
1763
- }
1033
+ let { elements } = sourceNode.declaration.arguments[0];
1034
+ exportDefault.declaration.type === "ArrayExpression" ? (exportDefault.declaration.elements.push(...elements), updated = !0) : exportDefault.declaration.type === "CallExpression" && exportDefault.declaration.callee.type === "Identifier" && exportDefault.declaration.callee.name === "defineWorkspace" && exportDefault.declaration.arguments[0]?.type === "ArrayExpression" && (exportDefault.declaration.arguments[0].elements.push(...elements), updated = !0);
1764
1035
  }
1765
1036
  }
1766
- }
1767
1037
  return updated;
1768
- }, "updateWorkspaceFile");
1038
+ };
1769
1039
 
1770
1040
  // src/postinstall.ts
1771
- var ADDON_NAME = "@storybook/addon-vitest";
1772
- var EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".cts", ".mts", ".cjs", ".mjs"];
1773
- var addonA11yName = "@storybook/addon-a11y";
1774
- var hasErrors = false;
1775
- function nameMatches(name, pattern) {
1776
- if (name === pattern) {
1777
- return true;
1778
- }
1779
- if (name.includes(`${pattern}${sep}`)) {
1780
- return true;
1781
- }
1782
- if (name.includes(`${pattern}${posix.sep}`)) {
1783
- return true;
1784
- }
1785
- return false;
1786
- }
1787
- __name(nameMatches, "nameMatches");
1788
- var logErrors = /* @__PURE__ */ __name((...args) => {
1789
- hasErrors = true;
1790
- printError(...args);
1791
- }, "logErrors");
1792
- var findFile = /* @__PURE__ */ __name((basename, extensions = EXTENSIONS) => any(
1793
- extensions.map((ext) => basename + ext),
1794
- { last: getProjectRoot() }
1795
- ), "findFile");
1041
+ var ADDON_NAME = "@storybook/addon-vitest", EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".cts", ".mts", ".cjs", ".mjs"], addonA11yName = "@storybook/addon-a11y";
1796
1042
  async function postInstall(options) {
1797
- printSuccess(
1798
- "\u{1F44B} Howdy!",
1799
- dedent`
1800
- I'm the installation helper for ${ADDON_NAME}
1801
-
1802
- Hold on for a moment while I look at your project and get it set up...
1803
- `
1804
- );
1805
- const packageManager = JsPackageManagerFactory.getPackageManager({
1043
+ let errors = [], { logger, prompt } = options, packageManager = JsPackageManagerFactory.getPackageManager({
1806
1044
  force: options.packageManager
1807
- });
1808
- const vitestVersionSpecifier = await packageManager.getInstalledVersion("vitest");
1809
- const coercedVitestVersion = vitestVersionSpecifier ? (0, import_semver.coerce)(vitestVersionSpecifier) : null;
1810
- const isVitest3_2To4 = vitestVersionSpecifier ? (0, import_semver.satisfies)(vitestVersionSpecifier, ">=3.2.0 <4.0.0") : false;
1811
- const isVitest4OrNewer = vitestVersionSpecifier ? (0, import_semver.satisfies)(vitestVersionSpecifier, ">=4.0.0") : true;
1812
- const info2 = await getStorybookInfo(options);
1813
- const allDeps = packageManager.getAllDependencies();
1814
- const dependencies = [
1815
- "vitest",
1816
- "playwright",
1817
- isVitest4OrNewer ? "@vitest/browser-playwright" : "@vitest/browser"
1818
- ];
1819
- const uniqueDependencies = dependencies.filter((p) => !allDeps[p]);
1820
- const mainJsPath = getInterpretedFile(resolve(options.configDir, "main"));
1821
- const config = await readConfig(mainJsPath);
1822
- const hasCustomWebpackConfig = !!config.getFieldNode(["webpackFinal"]);
1823
- const isInteractive = process.stdout.isTTY && !isCI2();
1824
- if (nameMatches(info2.frameworkPackageName, "@storybook/nextjs") && !hasCustomWebpackConfig) {
1825
- const out = options.yes || !isInteractive ? { migrateToNextjsVite: !!options.yes } : await prompts({
1826
- type: "confirm",
1827
- name: "migrateToNextjsVite",
1828
- message: dedent`
1829
- The addon requires the use of @storybook/nextjs-vite to work with Next.js.
1830
- https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#install-and-set-up
1045
+ }), findFile = (basename, extensions = EXTENSIONS) => any(
1046
+ extensions.map((ext) => basename + ext),
1047
+ { last: getProjectRoot(), cwd: options.configDir }
1048
+ ), vitestVersionSpecifier = await packageManager.getInstalledVersion("vitest");
1049
+ logger.debug(`Vitest version specifier: ${vitestVersionSpecifier}`);
1050
+ let isVitest3_2To4 = vitestVersionSpecifier ? (0, import_semver.satisfies)(vitestVersionSpecifier, ">=3.2.0 <4.0.0") : !1, isVitest4OrNewer = vitestVersionSpecifier ? (0, import_semver.satisfies)(vitestVersionSpecifier, ">=4.0.0") : !0, info = await getStorybookInfo(options.configDir), allDeps = packageManager.getAllDependencies(), addonVitestService = new AddonVitestService(), compatibilityResult = await addonVitestService.validateCompatibility({
1051
+ packageManager,
1052
+ framework: info.framework,
1053
+ builder: info.builder
1054
+ }), result = null;
1055
+ if (!compatibilityResult.compatible && compatibilityResult.reasons) {
1056
+ let reasons = compatibilityResult.reasons.map((r) => `\u2022 ${CLI_COLORS.error(r)}`);
1057
+ reasons.unshift(import_ts_dedent.dedent`
1058
+ Automated setup failed
1059
+ The following packages have incompatibilities that prevent automated setup:
1060
+ `), reasons.push(
1061
+ import_ts_dedent.dedent`
1062
+ You can fix these issues and rerun the command to reinstall. If you wish to roll back the installation, remove ${ADDON_NAME} from the "addons" array
1063
+ in your main Storybook config file and remove the dependency from your package.json file.
1831
1064
 
1832
- Do you want to migrate?
1833
- `,
1834
- initial: true
1835
- });
1836
- if (out.migrateToNextjsVite) {
1837
- await packageManager.addDependencies({ type: "devDependencies", skipInstall: true }, [
1838
- "@storybook/nextjs-vite"
1839
- ]);
1840
- await packageManager.removeDependencies(["@storybook/nextjs"]);
1841
- traverse(config._ast, {
1842
- StringLiteral(path) {
1843
- if (path.node.value === "@storybook/nextjs") {
1844
- path.node.value = "@storybook/nextjs-vite";
1845
- }
1846
- }
1847
- });
1848
- await writeConfig(config, mainJsPath);
1849
- info2.frameworkPackageName = "@storybook/nextjs-vite";
1850
- info2.builderPackageName = "@storybook/builder-vite";
1851
- await scanAndTransformFiles({
1852
- promptMessage: "Enter a glob to scan for all @storybook/nextjs imports to substitute with @storybook/nextjs-vite:",
1853
- force: options.yes,
1854
- dryRun: false,
1855
- transformFn: /* @__PURE__ */ __name((files, options2, dryRun) => transformImportFiles(files, options2, dryRun), "transformFn"),
1856
- transformOptions: {
1857
- "@storybook/nextjs": "@storybook/nextjs-vite"
1858
- }
1859
- });
1860
- }
1861
- }
1862
- const annotationsImport = SUPPORTED_FRAMEWORKS.find(
1863
- (f) => nameMatches(info2.frameworkPackageName, f)
1864
- ) ? info2.frameworkPackageName === "@storybook/nextjs" ? "@storybook/nextjs-vite" : info2.frameworkPackageName : null;
1865
- const isRendererSupported = !!annotationsImport;
1866
- const prerequisiteCheck = /* @__PURE__ */ __name(async () => {
1867
- const reasons = [];
1868
- if (hasCustomWebpackConfig) {
1869
- reasons.push("\u2022 The addon can not be used with a custom Webpack configuration.");
1870
- }
1871
- if (!nameMatches(info2.frameworkPackageName, "@storybook/nextjs") && !nameMatches(info2.builderPackageName, "@storybook/builder-vite")) {
1872
- reasons.push(
1873
- "\u2022 The addon can only be used with a Vite-based Storybook framework or Next.js."
1874
- );
1875
- }
1876
- if (!isRendererSupported) {
1877
- reasons.push(dedent`
1878
- • The addon cannot yet be used with ${info2.frameworkPackageName}
1879
- `);
1880
- }
1881
- if (coercedVitestVersion && !(0, import_semver.satisfies)(coercedVitestVersion, ">=3.0.0")) {
1882
- reasons.push(dedent`
1883
- • The addon requires Vitest 3.0.0 or higher. You are currently using ${vitestVersionSpecifier}.
1884
- Please update all of your Vitest dependencies and try again.
1885
- `);
1886
- }
1887
- const mswVersionSpecifier = await packageManager.getInstalledVersion("msw");
1888
- const coercedMswVersion = mswVersionSpecifier ? (0, import_semver.coerce)(mswVersionSpecifier) : null;
1889
- if (coercedMswVersion && !(0, import_semver.satisfies)(coercedMswVersion, ">=2.0.0")) {
1890
- reasons.push(dedent`
1891
- • The addon uses Vitest behind the scenes, which supports only version 2 and above of MSW. However, we have detected version ${coercedMswVersion.version} in this project.
1892
- Please update the 'msw' package and try again.
1893
- `);
1894
- }
1895
- if (nameMatches(info2.frameworkPackageName, "@storybook/nextjs")) {
1896
- const nextVersion = await packageManager.getInstalledVersion("next");
1897
- if (!nextVersion) {
1898
- reasons.push(dedent`
1899
- • You are using @storybook/nextjs without having "next" installed.
1900
- Please install "next" or use a different Storybook framework integration and try again.
1901
- `);
1902
- }
1903
- }
1904
- if (reasons.length > 0) {
1905
- reasons.unshift(
1906
- `@storybook/addon-vitest's automated setup failed due to the following package incompatibilities:`
1907
- );
1908
- reasons.push("--------------------------------");
1909
- reasons.push(
1910
- dedent`
1911
- You can fix these issues and rerun the command to reinstall. If you wish to roll back the installation, remove ${ADDON_NAME} from the "addons" array
1912
- in your main Storybook config file and remove the dependency from your package.json file.
1913
- `
1914
- );
1915
- if (!isRendererSupported) {
1916
- reasons.push(
1917
- dedent`
1918
- Please check the documentation for more information about its requirements and installation:
1919
- https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}
1920
- `
1921
- );
1922
- } else {
1923
- reasons.push(
1924
- dedent`
1925
- Fear not, however, you can follow the manual installation process instead at:
1926
- https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
1927
- `
1928
- );
1929
- }
1930
- return reasons.map((r) => r.trim()).join("\n\n");
1931
- }
1932
- return null;
1933
- }, "prerequisiteCheck");
1934
- const result = await prerequisiteCheck();
1935
- if (result) {
1936
- logErrors("\u26D4\uFE0F Sorry!", result);
1937
- logger2.line(1);
1938
- return;
1939
- }
1940
- if (info2.frameworkPackageName === "@storybook/nextjs") {
1941
- printInfo(
1942
- "\u{1F37F} Just so you know...",
1943
- dedent`
1944
- It looks like you're using Next.js.
1945
-
1946
- Adding "@storybook/nextjs-vite/vite-plugin" so you can use it with Vitest.
1947
-
1948
- More info about the plugin at https://github.com/storybookjs/vite-plugin-storybook-nextjs
1065
+ Please check the documentation for more information about its requirements and installation:
1066
+ https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}
1949
1067
  `
1950
- );
1951
- try {
1952
- const storybookVersion = await packageManager.getInstalledVersion("storybook");
1953
- uniqueDependencies.push(`@storybook/nextjs-vite@^${storybookVersion}`);
1954
- } catch (e) {
1955
- console.error("Failed to install @storybook/nextjs-vite. Please install it manually");
1956
- }
1957
- }
1958
- const v8Version = await packageManager.getInstalledVersion("@vitest/coverage-v8");
1959
- const istanbulVersion = await packageManager.getInstalledVersion("@vitest/coverage-istanbul");
1960
- if (!v8Version && !istanbulVersion) {
1961
- printInfo(
1962
- "\u{1F648} Let me cover this for you",
1963
- dedent`
1964
- You don't seem to have a coverage reporter installed. Vitest needs either V8 or Istanbul to generate coverage reports.
1068
+ ), result = reasons.map((r) => r.trim()).join(`
1965
1069
 
1966
- Adding "@vitest/coverage-v8" to enable coverage reporting.
1967
- Read more about Vitest coverage providers at https://vitest.dev/guide/coverage.html#coverage-providers
1968
- `
1969
- );
1970
- uniqueDependencies.push(`@vitest/coverage-v8`);
1070
+ `);
1971
1071
  }
1972
- const versionedDependencies = uniqueDependencies.map((p) => {
1973
- if (p.includes("vitest")) {
1974
- return vitestVersionSpecifier ? `${p}@${vitestVersionSpecifier}` : p;
1975
- }
1976
- return p;
1977
- });
1978
- if (versionedDependencies.length > 0) {
1979
- await packageManager.addDependencies(
1980
- { type: "devDependencies", skipInstall: true },
1072
+ if (result)
1073
+ throw logger.error(result), new AddonVitestPostinstallPrerequisiteCheckError({
1074
+ reasons: compatibilityResult.reasons
1075
+ });
1076
+ if (!options.skipDependencyManagement) {
1077
+ let versionedDependencies = await addonVitestService.collectDependencies(packageManager);
1078
+ info.framework === SupportedFramework.NEXTJS && packageManager.getAllDependencies()["@storybook/nextjs-vite"];
1079
+ let v8Version = await packageManager.getInstalledVersion("@vitest/coverage-v8"), istanbulVersion = await packageManager.getInstalledVersion("@vitest/coverage-istanbul");
1080
+ !v8Version && !istanbulVersion && logger.step(
1081
+ import_ts_dedent.dedent`
1082
+ You don't seem to have a coverage reporter installed. Vitest needs either V8 or Istanbul to generate coverage reports.
1083
+
1084
+ Adding "@vitest/coverage-v8" to enable coverage reporting.
1085
+ Read more about Vitest coverage providers at https://vitest.dev/guide/coverage.html#coverage-providers
1086
+ `
1087
+ ), versionedDependencies.length > 0 && (logger.step("Adding dependencies to your package.json"), logger.log(" " + versionedDependencies.join(", ")), await packageManager.addDependencies(
1088
+ { type: "devDependencies", skipInstall: !0 },
1981
1089
  versionedDependencies
1982
- );
1983
- logger2.line(1);
1984
- logger2.plain(`${step} Installing dependencies:`);
1985
- logger2.plain(" " + versionedDependencies.join(", "));
1090
+ )), options.skipInstall || await packageManager.installDependencies();
1986
1091
  }
1987
- await packageManager.installDependencies();
1988
- logger2.line(1);
1989
- if (options.skipInstall) {
1990
- logger2.plain("Skipping Playwright installation, please run this command manually:");
1991
- logger2.plain(" npx playwright install chromium --with-deps");
1992
- } else {
1993
- logger2.plain(`${step} Configuring Playwright with Chromium (this might take some time):`);
1994
- logger2.plain(" npx playwright install chromium --with-deps");
1995
- try {
1996
- await packageManager.executeCommand({
1997
- command: "npx",
1998
- args: ["playwright", "install", "chromium", "--with-deps"]
1999
- });
2000
- } catch (e) {
2001
- console.error("Failed to install Playwright. Please install it manually");
1092
+ if (!options.skipDependencyManagement)
1093
+ if (options.skipInstall)
1094
+ logger.warn(import_ts_dedent.dedent`
1095
+ Playwright browser binaries installation skipped. Please run the following command manually later:
1096
+ ${CLI_COLORS.cta("npx playwright install chromium --with-deps")}
1097
+ `);
1098
+ else {
1099
+ let { errors: playwrightErrors } = await addonVitestService.installPlaywright(
1100
+ packageManager,
1101
+ {
1102
+ yes: options.yes
1103
+ }
1104
+ );
1105
+ errors.push(...playwrightErrors);
2002
1106
  }
2003
- }
2004
- const fileExtension = allDeps.typescript || findFile("tsconfig", [...EXTENSIONS, ".json"]) ? "ts" : "js";
2005
- const vitestSetupFile = resolve(options.configDir, `vitest.setup.${fileExtension}`);
1107
+ let fileExtension = allDeps.typescript || findFile("tsconfig", [...EXTENSIONS, ".json"]) ? "ts" : "js", vitestSetupFile = resolve(options.configDir, `vitest.setup.${fileExtension}`);
2006
1108
  if (existsSync(vitestSetupFile)) {
2007
- logErrors(
2008
- "\u{1F6A8} Oh no!",
2009
- dedent`
2010
- Found an existing Vitest setup file:
2011
- ${vitestSetupFile}
2012
-
2013
- Please refer to the documentation to complete the setup manually:
2014
- https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
2015
- `
2016
- );
2017
- logger2.line(1);
2018
- return;
2019
- }
2020
- logger2.line(1);
2021
- logger2.plain(`${step} Creating a Vitest setup file for Storybook:`);
2022
- logger2.plain(` ${vitestSetupFile}`);
2023
- const previewExists = EXTENSIONS.map((ext) => resolve(options.configDir, `preview${ext}`)).some(
2024
- existsSync
2025
- );
2026
- const imports = [`import { setProjectAnnotations } from '${annotationsImport}';`];
2027
- const projectAnnotations = [];
2028
- if (previewExists) {
2029
- imports.push(`import * as projectAnnotations from './preview';`);
2030
- projectAnnotations.push("projectAnnotations");
2031
- }
2032
- await writeFile(
2033
- vitestSetupFile,
2034
- dedent`
2035
- ${imports.join("\n")}
1109
+ let errorMessage = import_ts_dedent.dedent`
1110
+ Found an existing Vitest setup file:
1111
+ ${vitestSetupFile}
1112
+ Please refer to the documentation to complete the setup manually:
1113
+ https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
1114
+ `;
1115
+ logger.line(), logger.error(`${errorMessage}
1116
+ `), errors.push("Found existing Vitest setup file");
1117
+ } else {
1118
+ logger.step("Creating a Vitest setup file for Storybook:"), logger.log(`${vitestSetupFile}
1119
+ `);
1120
+ let previewExists = EXTENSIONS.map((ext) => resolve(options.configDir, `preview${ext}`)).some(
1121
+ existsSync
1122
+ ), imports = [`import { setProjectAnnotations } from '${info.frameworkPackage}';`], projectAnnotations = [];
1123
+ previewExists && (imports.push("import * as projectAnnotations from './preview';"), projectAnnotations.push("projectAnnotations")), await writeFile(
1124
+ vitestSetupFile,
1125
+ import_ts_dedent.dedent`
1126
+ ${imports.join(`
1127
+ `)}
2036
1128
 
2037
1129
  // This is an important step to apply the right configuration when testing your stories.
2038
1130
  // More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
2039
1131
  setProjectAnnotations([${projectAnnotations.join(", ")}]);
2040
1132
  `
2041
- );
2042
- const vitestWorkspaceFile = findFile("vitest.workspace", [".ts", ".js", ".json"]);
2043
- const viteConfigFile = findFile("vite.config");
2044
- const vitestConfigFile = findFile("vitest.config");
2045
- const vitestShimFile = findFile("vitest.shims.d");
2046
- const rootConfig = vitestConfigFile || viteConfigFile;
2047
- if (fileExtension === "ts" && !vitestShimFile) {
2048
- await writeFile(
2049
- "vitest.shims.d.ts",
2050
- isVitest4OrNewer ? '/// <reference types="@vitest/browser-playwright" />' : '/// <reference types="@vitest/browser/providers/playwright" />'
2051
1133
  );
2052
1134
  }
2053
- const getTemplateName = /* @__PURE__ */ __name(() => {
2054
- if (isVitest4OrNewer) {
2055
- return "vitest.config.4.template.ts";
2056
- } else if (isVitest3_2To4) {
2057
- return "vitest.config.3.2.template.ts";
2058
- }
2059
- return "vitest.config.template.ts";
2060
- }, "getTemplateName");
1135
+ let vitestWorkspaceFile = findFile("vitest.workspace", [".ts", ".js", ".json"]), viteConfigFile = findFile("vite.config"), vitestConfigFile = findFile("vitest.config"), vitestShimFile = findFile("vitest.shims.d"), rootConfig = vitestConfigFile || viteConfigFile;
1136
+ fileExtension === "ts" && !vitestShimFile && await writeFile(
1137
+ "vitest.shims.d.ts",
1138
+ isVitest4OrNewer ? '/// <reference types="@vitest/browser-playwright" />' : '/// <reference types="@vitest/browser/providers/playwright" />'
1139
+ );
1140
+ let getTemplateName = () => isVitest4OrNewer ? "vitest.config.4.template.ts" : isVitest3_2To4 ? "vitest.config.3.2.template.ts" : "vitest.config.template.ts";
2061
1141
  if (vitestWorkspaceFile) {
2062
- const workspaceTemplate = await loadTemplate("vitest.workspace.template.ts", {
1142
+ let workspaceTemplate = await loadTemplate("vitest.workspace.template.ts", {
2063
1143
  EXTENDS_WORKSPACE: viteConfigFile ? relative(dirname(vitestWorkspaceFile), viteConfigFile) : "",
2064
1144
  CONFIG_DIR: options.configDir,
2065
1145
  SETUP_FILE: relative(dirname(vitestWorkspaceFile), vitestSetupFile)
2066
1146
  }).then((t) => t.replace(`
2067
- 'ROOT_CONFIG',`, "").replace(/\s+extends: '',/, ""));
2068
- const workspaceFile = await fs2.readFile(vitestWorkspaceFile, "utf8");
2069
- const source = babelParse(workspaceTemplate);
2070
- const target = babelParse(workspaceFile);
2071
- const updated = updateWorkspaceFile(source, target);
2072
- if (updated) {
2073
- logger2.line(1);
2074
- logger2.plain(`${step} Updating your Vitest workspace file:`);
2075
- logger2.plain(` ${vitestWorkspaceFile}`);
2076
- const formattedContent = await formatFileContent(vitestWorkspaceFile, generate(target).code);
1147
+ 'ROOT_CONFIG',`, "").replace(/\s+extends: '',/, "")), workspaceFile = await fs2.readFile(vitestWorkspaceFile, "utf8"), source = babelParse(workspaceTemplate), target = babelParse(workspaceFile);
1148
+ if (updateWorkspaceFile(source, target)) {
1149
+ logger.step("Updating your Vitest workspace file..."), logger.log(`${vitestWorkspaceFile}`);
1150
+ let formattedContent = await formatFileContent(vitestWorkspaceFile, generate(target).code);
2077
1151
  await writeFile(vitestWorkspaceFile, formattedContent);
2078
- } else {
2079
- logErrors(
2080
- "\u{1F6A8} Oh no!",
2081
- dedent`
1152
+ } else
1153
+ logger.error(
1154
+ import_ts_dedent.dedent`
2082
1155
  Could not update existing Vitest workspace file:
2083
1156
  ${vitestWorkspaceFile}
2084
1157
 
@@ -2088,170 +1161,92 @@ async function postInstall(options) {
2088
1161
  Please refer to the documentation to complete the setup manually:
2089
1162
  https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
2090
1163
  `
2091
- );
2092
- logger2.line(1);
2093
- return;
2094
- }
1164
+ ), errors.push("Unable to update existing Vitest workspace file");
2095
1165
  } else if (rootConfig) {
2096
- let target, updated;
2097
- const configFile = await fs2.readFile(rootConfig, "utf8");
2098
- const configFileHasTypeReference = configFile.match(
1166
+ let target, updated, configFile = await fs2.readFile(rootConfig, "utf8"), configFileHasTypeReference = configFile.match(
2099
1167
  /\/\/\/\s*<reference\s+types=["']vitest\/config["']\s*\/>/
2100
- );
2101
- const templateName = getTemplateName();
1168
+ ), templateName = getTemplateName();
2102
1169
  if (templateName) {
2103
- const configTemplate = await loadTemplate(templateName, {
1170
+ let configTemplate = await loadTemplate(templateName, {
2104
1171
  CONFIG_DIR: options.configDir,
2105
1172
  SETUP_FILE: relative(dirname(rootConfig), vitestSetupFile)
2106
- });
2107
- const source = babelParse(configTemplate);
2108
- target = babelParse(configFile);
2109
- updated = updateConfigFile(source, target);
1173
+ }), source = babelParse(configTemplate);
1174
+ target = babelParse(configFile), updated = updateConfigFile(source, target);
2110
1175
  }
2111
1176
  if (target && updated) {
2112
- logger2.line(1);
2113
- logger2.plain(`${step} Updating your ${vitestConfigFile ? "Vitest" : "Vite"} config file:`);
2114
- logger2.plain(` ${rootConfig}`);
2115
- const formattedContent = await formatFileContent(rootConfig, generate(target).code);
2116
- const shouldAddReference = !configFileHasTypeReference && !vitestConfigFile;
1177
+ logger.step(`Updating your ${vitestConfigFile ? "Vitest" : "Vite"} config file:`), logger.log(` ${rootConfig}`);
1178
+ let formattedContent = await formatFileContent(rootConfig, generate(target).code);
2117
1179
  await writeFile(
2118
1180
  rootConfig,
2119
- shouldAddReference ? '/// <reference types="vitest/config" />\n' + formattedContent : formattedContent
1181
+ !configFileHasTypeReference && !vitestConfigFile ? `/// <reference types="vitest/config" />
1182
+ ` + formattedContent : formattedContent
2120
1183
  );
2121
- } else {
2122
- logErrors(
2123
- "\u{1F6A8} Oh no!",
2124
- dedent`
1184
+ } else
1185
+ logger.error(import_ts_dedent.dedent`
2125
1186
  We were unable to update your existing ${vitestConfigFile ? "Vitest" : "Vite"} config file.
2126
1187
 
2127
1188
  Please refer to the documentation to complete the setup manually:
2128
1189
  https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup
2129
- `
2130
- );
2131
- }
1190
+ `), errors.push("Unable to update existing Vitest config file");
2132
1191
  } else {
2133
- const newConfigFile = resolve(`vitest.config.${fileExtension}`);
2134
- const configTemplate = await loadTemplate(getTemplateName(), {
1192
+ let parentDir = dirname(options.configDir), newConfigFile = resolve(parentDir, `vitest.config.${fileExtension}`), configTemplate = await loadTemplate(getTemplateName(), {
2135
1193
  CONFIG_DIR: options.configDir,
2136
1194
  SETUP_FILE: relative(dirname(newConfigFile), vitestSetupFile)
2137
1195
  });
2138
- logger2.line(1);
2139
- logger2.plain(`${step} Creating a Vitest config file:`);
2140
- logger2.plain(` ${newConfigFile}`);
2141
- const formattedContent = await formatFileContent(newConfigFile, configTemplate);
1196
+ logger.step("Creating a Vitest config file:"), logger.log(`${newConfigFile}`);
1197
+ let formattedContent = await formatFileContent(newConfigFile, configTemplate);
2142
1198
  await writeFile(newConfigFile, formattedContent);
2143
1199
  }
2144
- const a11yAddon = info2.addons.find((addon) => addon.includes(addonA11yName));
2145
- if (a11yAddon) {
1200
+ if (info.addons.find((addon) => addon.includes(addonA11yName)))
2146
1201
  try {
2147
- logger2.plain(`${step} Setting up ${addonA11yName} for @storybook/addon-vitest:`);
2148
- await execa(
1202
+ let command = [
2149
1203
  "storybook",
2150
- [
2151
- "automigrate",
2152
- "addon-a11y-addon-test",
2153
- "--loglevel",
2154
- "silent",
2155
- "--yes",
2156
- "--skip-doctor",
2157
- ...options.packageManager ? ["--package-manager", options.packageManager] : [],
2158
- ...options.skipInstall ? ["--skip-install"] : [],
2159
- ...options.configDir !== ".storybook" ? ["--config-dir", `"${options.configDir}"`] : []
2160
- ],
1204
+ "automigrate",
1205
+ "addon-a11y-addon-test",
1206
+ "--loglevel",
1207
+ "silent",
1208
+ "--yes",
1209
+ "--skip-doctor"
1210
+ ];
1211
+ options.packageManager && command.push("--package-manager", options.packageManager), options.skipInstall && command.push("--skip-install"), options.configDir !== ".storybook" && command.push("--config-dir", options.configDir), await prompt.executeTask(
1212
+ // TODO: Remove stdio: 'ignore' once we have a way to log the output of the command properly
1213
+ () => packageManager.runPackageCommand({ args: command, stdio: "ignore" }),
2161
1214
  {
2162
- stdio: "inherit"
1215
+ intro: "Setting up a11y addon for @storybook/addon-vitest",
1216
+ error: "Failed to setup a11y addon for @storybook/addon-vitest",
1217
+ success: "a11y addon setup successfully"
2163
1218
  }
2164
1219
  );
2165
1220
  } catch (e) {
2166
- logErrors(
2167
- "\u{1F6A8} Oh no!",
2168
- dedent`
2169
- We have detected that you have ${addonA11yName} installed but could not automatically set it up for @storybook/addon-vitest:
2170
-
2171
- ${e instanceof Error ? e.message : String(e)}
2172
-
1221
+ logger.error(import_ts_dedent.dedent`
1222
+ Could not automatically set up ${addonA11yName} for @storybook/addon-vitest.
2173
1223
  Please refer to the documentation to complete the setup manually:
2174
1224
  https://storybook.js.org/docs/writing-tests/accessibility-testing#test-addon-integration
2175
- `
1225
+ `), errors.push(
1226
+ "The @storybook/addon-a11y couldn't be set up for the Vitest addon" + (e instanceof Error ? e.stack : String(e))
2176
1227
  );
2177
1228
  }
2178
- }
2179
- const runCommand = rootConfig ? `npx vitest --project=storybook` : `npx vitest`;
2180
- if (!hasErrors) {
2181
- printSuccess(
2182
- "\u{1F389} All done!",
2183
- dedent`
1229
+ let runCommand = rootConfig ? "npx vitest --project=storybook" : "npx vitest";
1230
+ if (errors.length === 0)
1231
+ logger.step(CLI_COLORS.success("@storybook/addon-vitest setup completed successfully")), logger.log(import_ts_dedent.dedent`
2184
1232
  @storybook/addon-vitest is now configured and you're ready to run your tests!
2185
-
2186
1233
  Here are a couple of tips to get you started:
2187
- • You can run tests with "${runCommand}"
2188
- When using the Vitest extension in your editor, all of your stories will be shown as tests!
2189
-
1234
+
1235
+ You can run tests with "${CLI_COLORS.cta(runCommand)}"
1236
+ • Vitest IDE extension shows all stories as tests in your editor!
1237
+
2190
1238
  Check the documentation for more information about its features and options at:
2191
1239
  https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}
2192
- `
2193
- );
2194
- } else {
2195
- printWarning(
2196
- "\u26A0\uFE0F Done, but with errors!",
2197
- dedent`
2198
- @storybook/addon-vitest was installed successfully, but there were some errors during the setup process.
2199
-
2200
- Please refer to the documentation to complete the setup manually and check the errors above:
1240
+ `);
1241
+ else
1242
+ throw logger.warn(
1243
+ import_ts_dedent.dedent`
1244
+ Done, but with errors!
1245
+ @storybook/addon-vitest was installed successfully, but there were some errors during the setup process. Please refer to the documentation to complete the setup manually and check the errors above:
2201
1246
  https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
2202
1247
  `
2203
- );
2204
- }
2205
- logger2.line(1);
2206
- }
2207
- __name(postInstall, "postInstall");
2208
- async function getPackageNameFromPath(input) {
2209
- const path = input.startsWith("file://") ? fileURLToPath(input) : input;
2210
- if (!isAbsolute(path)) {
2211
- return path;
2212
- }
2213
- const packageJsonPath = up2({ cwd: path });
2214
- if (!packageJsonPath) {
2215
- throw new Error(`Could not find package.json in path: ${path}`);
2216
- }
2217
- const { default: packageJson } = await import(pathToFileURL(packageJsonPath).href, {
2218
- with: { type: "json" }
2219
- });
2220
- return packageJson.name;
2221
- }
2222
- __name(getPackageNameFromPath, "getPackageNameFromPath");
2223
- async function getStorybookInfo({ configDir, packageManager: pkgMgr }) {
2224
- const packageManager = JsPackageManagerFactory.getPackageManager({ force: pkgMgr, configDir });
2225
- const { packageJson } = packageManager.primaryPackageJson;
2226
- const config = await loadMainConfig({ configDir });
2227
- const { presets } = await experimental_loadStorybook({
2228
- configDir,
2229
- packageJson
2230
- });
2231
- const framework = await presets.apply("framework", {});
2232
- const core = await presets.apply("core", {});
2233
- const { builder, renderer } = core;
2234
- if (!builder) {
2235
- throw new Error("Could not detect your Storybook builder.");
2236
- }
2237
- const frameworkPackageName = await getPackageNameFromPath(
2238
- typeof framework === "string" ? framework : framework.name
2239
- );
2240
- const builderPackageName = await getPackageNameFromPath(
2241
- typeof builder === "string" ? builder : builder.name
2242
- );
2243
- let rendererPackageName;
2244
- if (renderer) {
2245
- rendererPackageName = await getPackageNameFromPath(renderer);
2246
- }
2247
- return {
2248
- frameworkPackageName,
2249
- builderPackageName,
2250
- rendererPackageName,
2251
- addons: getAddonNames(config)
2252
- };
1248
+ ), new AddonVitestPostinstallError({ errors });
2253
1249
  }
2254
- __name(getStorybookInfo, "getStorybookInfo");
2255
1250
  export {
2256
1251
  postInstall as default
2257
1252
  };