@storybook/addon-vitest 0.0.0-pr-32795-sha-81cf1f23 → 0.0.0-pr-32717-sha-f340a68b

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