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

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,32 +1,33 @@
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";
1
+ import CJS_COMPAT_NODE_URL_oycy7mg2pm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_oycy7mg2pm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_oycy7mg2pm from "node:module";
4
4
 
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);
5
+ var __filename = CJS_COMPAT_NODE_URL_oycy7mg2pm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_oycy7mg2pm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_oycy7mg2pm.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,
13
14
  resolvePackageDir
14
- } from "./_node-chunks/chunk-MLM43G3E.js";
15
+ } from "./_node-chunks/chunk-3JME42XS.js";
15
16
  import {
16
- any
17
- } from "./_node-chunks/chunk-NGOGIT42.js";
17
+ any,
18
+ getAddonNames,
19
+ up
20
+ } from "./_node-chunks/chunk-CKQN7IR2.js";
18
21
  import {
19
- DOCUMENTATION_LINK
20
- } from "./_node-chunks/chunk-KHNVQCL7.js";
21
- import {
22
- require_dist
23
- } from "./_node-chunks/chunk-G6ASZ6US.js";
22
+ DOCUMENTATION_LINK,
23
+ SUPPORTED_FRAMEWORKS
24
+ } from "./_node-chunks/chunk-RIAV333R.js";
24
25
  import {
25
26
  dirname,
26
27
  join,
27
28
  relative,
28
29
  resolve
29
- } from "./_node-chunks/chunk-TXTKPPIA.js";
30
+ } from "./_node-chunks/chunk-SNWBLFHL.js";
30
31
  import {
31
32
  require_compare,
32
33
  require_constants,
@@ -36,31 +37,27 @@ import {
36
37
  require_parse_options,
37
38
  require_re,
38
39
  require_semver
39
- } from "./_node-chunks/chunk-A4VFZRVB.js";
40
+ } from "./_node-chunks/chunk-3MTE45JW.js";
40
41
  import {
41
42
  __commonJS,
42
- __name,
43
43
  __toESM
44
- } from "./_node-chunks/chunk-K5BRNZW2.js";
44
+ } from "./_node-chunks/chunk-HCCHV65D.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();
51
- var parse = /* @__PURE__ */ __name((version, options, throwErrors = false) => {
52
- if (version instanceof SemVer) {
50
+ var SemVer = require_semver(), parse = (version, options, throwErrors = !1) => {
51
+ if (version instanceof SemVer)
53
52
  return version;
54
- }
55
53
  try {
56
54
  return new SemVer(version, options);
57
55
  } catch (er) {
58
- if (!throwErrors) {
56
+ if (!throwErrors)
59
57
  return null;
60
- }
61
58
  throw er;
62
59
  }
63
- }, "parse");
60
+ };
64
61
  module.exports = parse;
65
62
  }
66
63
  });
@@ -69,11 +66,10 @@ var require_parse = __commonJS({
69
66
  var require_valid = __commonJS({
70
67
  "../../node_modules/semver/functions/valid.js"(exports, module) {
71
68
  "use strict";
72
- var parse = require_parse();
73
- var valid = /* @__PURE__ */ __name((version, options) => {
74
- const v = parse(version, options);
69
+ var parse = require_parse(), valid = (version, options) => {
70
+ let v = parse(version, options);
75
71
  return v ? v.version : null;
76
- }, "valid");
72
+ };
77
73
  module.exports = valid;
78
74
  }
79
75
  });
@@ -82,11 +78,10 @@ var require_valid = __commonJS({
82
78
  var require_clean = __commonJS({
83
79
  "../../node_modules/semver/functions/clean.js"(exports, module) {
84
80
  "use strict";
85
- var parse = require_parse();
86
- var clean = /* @__PURE__ */ __name((version, options) => {
87
- const s = parse(version.trim().replace(/^[=v]+/, ""), options);
81
+ var parse = require_parse(), clean = (version, options) => {
82
+ let s = parse(version.trim().replace(/^[=v]+/, ""), options);
88
83
  return s ? s.version : null;
89
- }, "clean");
84
+ };
90
85
  module.exports = clean;
91
86
  }
92
87
  });
@@ -95,22 +90,17 @@ var require_clean = __commonJS({
95
90
  var require_inc = __commonJS({
96
91
  "../../node_modules/semver/functions/inc.js"(exports, module) {
97
92
  "use strict";
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
- }
93
+ var SemVer = require_semver(), inc = (version, release, options, identifier, identifierBase) => {
94
+ typeof options == "string" && (identifierBase = identifier, identifier = options, options = void 0);
105
95
  try {
106
96
  return new SemVer(
107
97
  version instanceof SemVer ? version.version : version,
108
98
  options
109
99
  ).inc(release, identifier, identifierBase).version;
110
- } catch (er) {
100
+ } catch {
111
101
  return null;
112
102
  }
113
- }, "inc");
103
+ };
114
104
  module.exports = inc;
115
105
  }
116
106
  });
@@ -119,42 +109,20 @@ var require_inc = __commonJS({
119
109
  var require_diff = __commonJS({
120
110
  "../../node_modules/semver/functions/diff.js"(exports, module) {
121
111
  "use strict";
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) {
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)
128
115
  return null;
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) {
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)
137
119
  return "major";
138
- }
139
- if (lowVersion.compareMain(highVersion) === 0) {
140
- if (lowVersion.minor && !lowVersion.patch) {
141
- return "minor";
142
- }
143
- return "patch";
144
- }
120
+ if (lowVersion.compareMain(highVersion) === 0)
121
+ return lowVersion.minor && !lowVersion.patch ? "minor" : "patch";
145
122
  }
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");
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
+ };
158
126
  module.exports = diff;
159
127
  }
160
128
  });
@@ -163,8 +131,7 @@ var require_diff = __commonJS({
163
131
  var require_major = __commonJS({
164
132
  "../../node_modules/semver/functions/major.js"(exports, module) {
165
133
  "use strict";
166
- var SemVer = require_semver();
167
- var major = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).major, "major");
134
+ var SemVer = require_semver(), major = (a, loose) => new SemVer(a, loose).major;
168
135
  module.exports = major;
169
136
  }
170
137
  });
@@ -173,8 +140,7 @@ var require_major = __commonJS({
173
140
  var require_minor = __commonJS({
174
141
  "../../node_modules/semver/functions/minor.js"(exports, module) {
175
142
  "use strict";
176
- var SemVer = require_semver();
177
- var minor = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).minor, "minor");
143
+ var SemVer = require_semver(), minor = (a, loose) => new SemVer(a, loose).minor;
178
144
  module.exports = minor;
179
145
  }
180
146
  });
@@ -183,8 +149,7 @@ var require_minor = __commonJS({
183
149
  var require_patch = __commonJS({
184
150
  "../../node_modules/semver/functions/patch.js"(exports, module) {
185
151
  "use strict";
186
- var SemVer = require_semver();
187
- var patch = /* @__PURE__ */ __name((a, loose) => new SemVer(a, loose).patch, "patch");
152
+ var SemVer = require_semver(), patch = (a, loose) => new SemVer(a, loose).patch;
188
153
  module.exports = patch;
189
154
  }
190
155
  });
@@ -193,11 +158,10 @@ var require_patch = __commonJS({
193
158
  var require_prerelease = __commonJS({
194
159
  "../../node_modules/semver/functions/prerelease.js"(exports, module) {
195
160
  "use strict";
196
- var parse = require_parse();
197
- var prerelease = /* @__PURE__ */ __name((version, options) => {
198
- const parsed = parse(version, options);
161
+ var parse = require_parse(), prerelease = (version, options) => {
162
+ let parsed = parse(version, options);
199
163
  return parsed && parsed.prerelease.length ? parsed.prerelease : null;
200
- }, "prerelease");
164
+ };
201
165
  module.exports = prerelease;
202
166
  }
203
167
  });
@@ -206,8 +170,7 @@ var require_prerelease = __commonJS({
206
170
  var require_rcompare = __commonJS({
207
171
  "../../node_modules/semver/functions/rcompare.js"(exports, module) {
208
172
  "use strict";
209
- var compare = require_compare();
210
- var rcompare = /* @__PURE__ */ __name((a, b, loose) => compare(b, a, loose), "rcompare");
173
+ var compare = require_compare(), rcompare = (a, b, loose) => compare(b, a, loose);
211
174
  module.exports = rcompare;
212
175
  }
213
176
  });
@@ -216,8 +179,7 @@ var require_rcompare = __commonJS({
216
179
  var require_compare_loose = __commonJS({
217
180
  "../../node_modules/semver/functions/compare-loose.js"(exports, module) {
218
181
  "use strict";
219
- var compare = require_compare();
220
- var compareLoose = /* @__PURE__ */ __name((a, b) => compare(a, b, true), "compareLoose");
182
+ var compare = require_compare(), compareLoose = (a, b) => compare(a, b, !0);
221
183
  module.exports = compareLoose;
222
184
  }
223
185
  });
@@ -226,12 +188,10 @@ var require_compare_loose = __commonJS({
226
188
  var require_compare_build = __commonJS({
227
189
  "../../node_modules/semver/functions/compare-build.js"(exports, module) {
228
190
  "use strict";
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);
191
+ var SemVer = require_semver(), compareBuild = (a, b, loose) => {
192
+ let versionA = new SemVer(a, loose), versionB = new SemVer(b, loose);
233
193
  return versionA.compare(versionB) || versionA.compareBuild(versionB);
234
- }, "compareBuild");
194
+ };
235
195
  module.exports = compareBuild;
236
196
  }
237
197
  });
@@ -240,8 +200,7 @@ var require_compare_build = __commonJS({
240
200
  var require_sort = __commonJS({
241
201
  "../../node_modules/semver/functions/sort.js"(exports, module) {
242
202
  "use strict";
243
- var compareBuild = require_compare_build();
244
- var sort = /* @__PURE__ */ __name((list, loose) => list.sort((a, b) => compareBuild(a, b, loose)), "sort");
203
+ var compareBuild = require_compare_build(), sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
245
204
  module.exports = sort;
246
205
  }
247
206
  });
@@ -250,8 +209,7 @@ var require_sort = __commonJS({
250
209
  var require_rsort = __commonJS({
251
210
  "../../node_modules/semver/functions/rsort.js"(exports, module) {
252
211
  "use strict";
253
- var compareBuild = require_compare_build();
254
- var rsort = /* @__PURE__ */ __name((list, loose) => list.sort((a, b) => compareBuild(b, a, loose)), "rsort");
212
+ var compareBuild = require_compare_build(), rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
255
213
  module.exports = rsort;
256
214
  }
257
215
  });
@@ -260,8 +218,7 @@ var require_rsort = __commonJS({
260
218
  var require_gt = __commonJS({
261
219
  "../../node_modules/semver/functions/gt.js"(exports, module) {
262
220
  "use strict";
263
- var compare = require_compare();
264
- var gt = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) > 0, "gt");
221
+ var compare = require_compare(), gt = (a, b, loose) => compare(a, b, loose) > 0;
265
222
  module.exports = gt;
266
223
  }
267
224
  });
@@ -270,8 +227,7 @@ var require_gt = __commonJS({
270
227
  var require_lt = __commonJS({
271
228
  "../../node_modules/semver/functions/lt.js"(exports, module) {
272
229
  "use strict";
273
- var compare = require_compare();
274
- var lt = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) < 0, "lt");
230
+ var compare = require_compare(), lt = (a, b, loose) => compare(a, b, loose) < 0;
275
231
  module.exports = lt;
276
232
  }
277
233
  });
@@ -280,8 +236,7 @@ var require_lt = __commonJS({
280
236
  var require_eq = __commonJS({
281
237
  "../../node_modules/semver/functions/eq.js"(exports, module) {
282
238
  "use strict";
283
- var compare = require_compare();
284
- var eq = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) === 0, "eq");
239
+ var compare = require_compare(), eq = (a, b, loose) => compare(a, b, loose) === 0;
285
240
  module.exports = eq;
286
241
  }
287
242
  });
@@ -290,8 +245,7 @@ var require_eq = __commonJS({
290
245
  var require_neq = __commonJS({
291
246
  "../../node_modules/semver/functions/neq.js"(exports, module) {
292
247
  "use strict";
293
- var compare = require_compare();
294
- var neq = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) !== 0, "neq");
248
+ var compare = require_compare(), neq = (a, b, loose) => compare(a, b, loose) !== 0;
295
249
  module.exports = neq;
296
250
  }
297
251
  });
@@ -300,8 +254,7 @@ var require_neq = __commonJS({
300
254
  var require_lte = __commonJS({
301
255
  "../../node_modules/semver/functions/lte.js"(exports, module) {
302
256
  "use strict";
303
- var compare = require_compare();
304
- var lte = /* @__PURE__ */ __name((a, b, loose) => compare(a, b, loose) <= 0, "lte");
257
+ var compare = require_compare(), lte = (a, b, loose) => compare(a, b, loose) <= 0;
305
258
  module.exports = lte;
306
259
  }
307
260
  });
@@ -310,30 +263,12 @@ var require_lte = __commonJS({
310
263
  var require_cmp = __commonJS({
311
264
  "../../node_modules/semver/functions/cmp.js"(exports, module) {
312
265
  "use strict";
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) => {
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) => {
320
267
  switch (op) {
321
268
  case "===":
322
- if (typeof a === "object") {
323
- a = a.version;
324
- }
325
- if (typeof b === "object") {
326
- b = b.version;
327
- }
328
- return a === b;
269
+ return typeof a == "object" && (a = a.version), typeof b == "object" && (b = b.version), a === b;
329
270
  case "!==":
330
- if (typeof a === "object") {
331
- a = a.version;
332
- }
333
- if (typeof b === "object") {
334
- b = b.version;
335
- }
336
- return a !== b;
271
+ return typeof a == "object" && (a = a.version), typeof b == "object" && (b = b.version), a !== b;
337
272
  case "":
338
273
  case "=":
339
274
  case "==":
@@ -351,7 +286,7 @@ var require_cmp = __commonJS({
351
286
  default:
352
287
  throw new TypeError(`Invalid operator: ${op}`);
353
288
  }
354
- }, "cmp");
289
+ };
355
290
  module.exports = cmp;
356
291
  }
357
292
  });
@@ -360,45 +295,27 @@ var require_cmp = __commonJS({
360
295
  var require_coerce = __commonJS({
361
296
  "../../node_modules/semver/functions/coerce.js"(exports, module) {
362
297
  "use strict";
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) {
298
+ var SemVer = require_semver(), parse = require_parse(), { safeRe: re, t } = require_re(), coerce2 = (version, options) => {
299
+ if (version instanceof SemVer)
368
300
  return version;
369
- }
370
- if (typeof version === "number") {
371
- version = String(version);
372
- }
373
- if (typeof version !== "string") {
301
+ if (typeof version == "number" && (version = String(version)), typeof version != "string")
374
302
  return null;
375
- }
376
303
  options = options || {};
377
304
  let match = null;
378
- if (!options.rtl) {
305
+ if (!options.rtl)
379
306
  match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
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
- }
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;
389
311
  coerceRtlRegex.lastIndex = -1;
390
312
  }
391
- if (match === null) {
313
+ if (match === null)
392
314
  return null;
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]}` : "";
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]}` : "";
399
316
  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
400
- }, "coerce");
401
- module.exports = coerce;
317
+ };
318
+ module.exports = coerce2;
402
319
  }
403
320
  });
404
321
 
@@ -407,31 +324,21 @@ var require_lrucache = __commonJS({
407
324
  "../../node_modules/semver/internal/lrucache.js"(exports, module) {
408
325
  "use strict";
409
326
  var LRUCache = class {
410
- static {
411
- __name(this, "LRUCache");
412
- }
413
327
  constructor() {
414
- this.max = 1e3;
415
- this.map = /* @__PURE__ */ new Map();
328
+ this.max = 1e3, this.map = /* @__PURE__ */ new Map();
416
329
  }
417
330
  get(key) {
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
- }
331
+ let value = this.map.get(key);
332
+ if (value !== void 0)
333
+ return this.map.delete(key), this.map.set(key, value), value;
426
334
  }
427
335
  delete(key) {
428
336
  return this.map.delete(key);
429
337
  }
430
338
  set(key, value) {
431
- const deleted = this.delete(key);
432
- if (!deleted && value !== void 0) {
339
+ if (!this.delete(key) && value !== void 0) {
433
340
  if (this.map.size >= this.max) {
434
- const firstKey = this.map.keys().next().value;
341
+ let firstKey = this.map.keys().next().value;
435
342
  this.delete(firstKey);
436
343
  }
437
344
  this.map.set(key, value);
@@ -447,46 +354,24 @@ var require_lrucache = __commonJS({
447
354
  var require_range = __commonJS({
448
355
  "../../node_modules/semver/classes/range.js"(exports, module) {
449
356
  "use strict";
450
- var SPACE_CHARACTERS = /\s+/g;
451
- var Range = class _Range {
452
- static {
453
- __name(this, "Range");
454
- }
357
+ var SPACE_CHARACTERS = /\s+/g, Range = class _Range {
455
358
  constructor(range, options) {
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) {
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)
476
364
  throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
477
- }
478
365
  if (this.set.length > 1) {
479
- const first = this.set[0];
480
- this.set = this.set.filter((c) => !isNullSet(c[0]));
481
- if (this.set.length === 0) {
366
+ let first = this.set[0];
367
+ if (this.set = this.set.filter((c) => !isNullSet(c[0])), this.set.length === 0)
482
368
  this.set = [first];
483
- } else if (this.set.length > 1) {
484
- for (const c of this.set) {
369
+ else if (this.set.length > 1) {
370
+ for (let c of this.set)
485
371
  if (c.length === 1 && isAny(c[0])) {
486
372
  this.set = [c];
487
373
  break;
488
374
  }
489
- }
490
375
  }
491
376
  }
492
377
  this.formatted = void 0;
@@ -495,16 +380,10 @@ var require_range = __commonJS({
495
380
  if (this.formatted === void 0) {
496
381
  this.formatted = "";
497
382
  for (let i = 0; i < this.set.length; i++) {
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
- }
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();
508
387
  }
509
388
  }
510
389
  return this.formatted;
@@ -516,310 +395,94 @@ var require_range = __commonJS({
516
395
  return this.range;
517
396
  }
518
397
  parseRange(range) {
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) {
398
+ let memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + ":" + range, cached = cache.get(memoKey);
399
+ if (cached)
523
400
  return cached;
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);
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);
535
403
  let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
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)) {
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))
547
408
  return [comp];
548
- }
549
409
  rangeMap.set(comp.value, comp);
550
410
  }
551
- if (rangeMap.size > 1 && rangeMap.has("")) {
552
- rangeMap.delete("");
553
- }
554
- const result = [...rangeMap.values()];
555
- cache.set(memoKey, result);
556
- return result;
411
+ rangeMap.size > 1 && rangeMap.has("") && rangeMap.delete("");
412
+ let result = [...rangeMap.values()];
413
+ return cache.set(memoKey, result), result;
557
414
  }
558
415
  intersects(range, options) {
559
- if (!(range instanceof _Range)) {
416
+ if (!(range instanceof _Range))
560
417
  throw new TypeError("a Range is required");
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
- });
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)))));
571
419
  }
572
420
  // if ANY of the sets match ALL of its comparators, then pass
573
421
  test(version) {
574
- if (!version) {
575
- return false;
576
- }
577
- if (typeof version === "string") {
422
+ if (!version)
423
+ return !1;
424
+ if (typeof version == "string")
578
425
  try {
579
426
  version = new SemVer(version, this.options);
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;
427
+ } catch {
428
+ return !1;
587
429
  }
588
- }
589
- return false;
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;
590
434
  }
591
435
  };
592
436
  module.exports = Range;
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 {
437
+ var LRU = require_lrucache(), cache = new LRU(), parseOptions = require_parse_options(), Comparator = require_comparator(), debug = require_debug(), SemVer = require_semver(), {
600
438
  safeRe: re,
601
439
  t,
602
440
  comparatorTrimReplace,
603
441
  tildeTrimReplace,
604
442
  caretTrimReplace
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
- }
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();
619
447
  return result;
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];
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];
640
450
  return comp.replace(r, (_, M, m, p, pr) => {
641
451
  debug("tilde", comp, _, M, m, p, pr);
642
452
  let ret;
643
- if (isX(M)) {
644
- ret = "";
645
- } else if (isX(m)) {
646
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
647
- } else if (isX(p)) {
648
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
649
- } else if (pr) {
650
- debug("replaceTilde pr", pr);
651
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
652
- } else {
653
- ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
654
- }
655
- debug("tilde return", ret);
656
- return ret;
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;
657
454
  });
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) => {
455
+ }, replaceCarets = (comp, options) => comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "), replaceCaret = (comp, options) => {
663
456
  debug("caret", comp, options);
664
- const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
665
- const z = options.includePrerelease ? "-0" : "";
457
+ let r = options.loose ? re[t.CARETLOOSE] : re[t.CARET], z = options.includePrerelease ? "-0" : "";
666
458
  return comp.replace(r, (_, M, m, p, pr) => {
667
459
  debug("caret", comp, _, M, m, p, pr);
668
460
  let ret;
669
- if (isX(M)) {
670
- ret = "";
671
- } else if (isX(m)) {
672
- ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
673
- } else if (isX(p)) {
674
- if (M === "0") {
675
- ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
676
- } else {
677
- ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
678
- }
679
- } else if (pr) {
680
- debug("replaceCaret pr", pr);
681
- if (M === "0") {
682
- if (m === "0") {
683
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
684
- } else {
685
- ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
686
- }
687
- } else {
688
- ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
689
- }
690
- } else {
691
- debug("no pr");
692
- if (M === "0") {
693
- if (m === "0") {
694
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
695
- } else {
696
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
697
- }
698
- } else {
699
- ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
700
- }
701
- }
702
- debug("caret return", ret);
703
- return ret;
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;
704
462
  });
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) => {
463
+ }, replaceXRanges = (comp, options) => (debug("replaceXRanges", comp, options), comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ")), replaceXRange = (comp, options) => {
711
464
  comp = comp.trim();
712
- const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
465
+ let r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
713
466
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
714
467
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
715
- const xM = isX(M);
716
- const xm = xM || isX(m);
717
- const xp = xm || isX(p);
718
- const anyX = xp;
719
- if (gtlt === "=" && anyX) {
720
- gtlt = "";
721
- }
722
- pr = options.includePrerelease ? "-0" : "";
723
- if (xM) {
724
- if (gtlt === ">" || gtlt === "<") {
725
- ret = "<0.0.0-0";
726
- } else {
727
- ret = "*";
728
- }
729
- } else if (gtlt && anyX) {
730
- if (xm) {
731
- m = 0;
732
- }
733
- p = 0;
734
- if (gtlt === ">") {
735
- gtlt = ">=";
736
- if (xm) {
737
- M = +M + 1;
738
- m = 0;
739
- p = 0;
740
- } else {
741
- m = +m + 1;
742
- p = 0;
743
- }
744
- } else if (gtlt === "<=") {
745
- gtlt = "<";
746
- if (xm) {
747
- M = +M + 1;
748
- } else {
749
- m = +m + 1;
750
- }
751
- }
752
- if (gtlt === "<") {
753
- pr = "-0";
754
- }
755
- ret = `${gtlt + M}.${m}.${p}${pr}`;
756
- } else if (xm) {
757
- ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
758
- } else if (xp) {
759
- ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
760
- }
761
- debug("xRange return", ret);
762
- return ret;
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;
763
470
  });
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
- }
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;
806
475
  if (version.prerelease.length && !options.includePrerelease) {
807
- for (let i = 0; i < set.length; i++) {
808
- debug(set[i].semver);
809
- if (set[i].semver === Comparator.ANY) {
810
- continue;
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;
811
481
  }
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;
482
+ return !1;
820
483
  }
821
- return true;
822
- }, "testSet");
484
+ return !0;
485
+ };
823
486
  }
824
487
  });
825
488
 
@@ -827,115 +490,46 @@ var require_range = __commonJS({
827
490
  var require_comparator = __commonJS({
828
491
  "../../node_modules/semver/classes/comparator.js"(exports, module) {
829
492
  "use strict";
830
- var ANY = Symbol("SemVer ANY");
831
- var Comparator = class _Comparator {
832
- static {
833
- __name(this, "Comparator");
834
- }
493
+ var ANY = Symbol("SemVer ANY"), Comparator = class _Comparator {
835
494
  static get ANY() {
836
495
  return ANY;
837
496
  }
838
497
  constructor(comp, options) {
839
- options = parseOptions(options);
840
- if (comp instanceof _Comparator) {
841
- if (comp.loose === !!options.loose) {
498
+ if (options = parseOptions(options), comp instanceof _Comparator) {
499
+ if (comp.loose === !!options.loose)
842
500
  return comp;
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;
501
+ comp = comp.value;
856
502
  }
857
- debug("comp", this);
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);
858
504
  }
859
505
  parse(comp) {
860
- const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
861
- const m = comp.match(r);
862
- if (!m) {
506
+ let r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR], m = comp.match(r);
507
+ if (!m)
863
508
  throw new TypeError(`Invalid comparator: ${comp}`);
864
- }
865
- this.operator = m[1] !== void 0 ? m[1] : "";
866
- if (this.operator === "=") {
867
- this.operator = "";
868
- }
869
- if (!m[2]) {
870
- this.semver = ANY;
871
- } else {
872
- this.semver = new SemVer(m[2], this.options.loose);
873
- }
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;
874
510
  }
875
511
  toString() {
876
512
  return this.value;
877
513
  }
878
514
  test(version) {
879
- debug("Comparator.test", version, this.options.loose);
880
- if (this.semver === ANY || version === ANY) {
881
- return true;
882
- }
883
- if (typeof version === "string") {
515
+ if (debug("Comparator.test", version, this.options.loose), this.semver === ANY || version === ANY)
516
+ return !0;
517
+ if (typeof version == "string")
884
518
  try {
885
519
  version = new SemVer(version, this.options);
886
- } catch (er) {
887
- return false;
520
+ } catch {
521
+ return !1;
888
522
  }
889
- }
890
523
  return cmp(version, this.operator, this.semver, this.options);
891
524
  }
892
525
  intersects(comp, options) {
893
- if (!(comp instanceof _Comparator)) {
526
+ if (!(comp instanceof _Comparator))
894
527
  throw new TypeError("a Comparator is required");
895
- }
896
- if (this.operator === "") {
897
- if (this.value === "") {
898
- return true;
899
- }
900
- return new Range(comp.value, options).test(this.value);
901
- } else if (comp.operator === "") {
902
- if (comp.value === "") {
903
- return true;
904
- }
905
- return new Range(this.value, options).test(comp.semver);
906
- }
907
- options = parseOptions(options);
908
- if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
909
- return false;
910
- }
911
- if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
912
- return false;
913
- }
914
- if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
915
- return true;
916
- }
917
- if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
918
- return true;
919
- }
920
- if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
921
- return true;
922
- }
923
- if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
924
- return true;
925
- }
926
- if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
927
- return true;
928
- }
929
- return false;
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(">")));
930
529
  }
931
530
  };
932
531
  module.exports = Comparator;
933
- var parseOptions = require_parse_options();
934
- var { safeRe: re, t } = require_re();
935
- var cmp = require_cmp();
936
- var debug = require_debug();
937
- var SemVer = require_semver();
938
- var Range = require_range();
532
+ var parseOptions = require_parse_options(), { safeRe: re, t } = require_re(), cmp = require_cmp(), debug = require_debug(), SemVer = require_semver(), Range = require_range();
939
533
  }
940
534
  });
941
535
 
@@ -943,15 +537,14 @@ var require_comparator = __commonJS({
943
537
  var require_satisfies = __commonJS({
944
538
  "../../node_modules/semver/functions/satisfies.js"(exports, module) {
945
539
  "use strict";
946
- var Range = require_range();
947
- var satisfies2 = /* @__PURE__ */ __name((version, range, options) => {
540
+ var Range = require_range(), satisfies2 = (version, range, options) => {
948
541
  try {
949
542
  range = new Range(range, options);
950
- } catch (er) {
951
- return false;
543
+ } catch {
544
+ return !1;
952
545
  }
953
546
  return range.test(version);
954
- }, "satisfies");
547
+ };
955
548
  module.exports = satisfies2;
956
549
  }
957
550
  });
@@ -960,8 +553,7 @@ var require_satisfies = __commonJS({
960
553
  var require_to_comparators = __commonJS({
961
554
  "../../node_modules/semver/ranges/to-comparators.js"(exports, module) {
962
555
  "use strict";
963
- var Range = require_range();
964
- var toComparators = /* @__PURE__ */ __name((range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")), "toComparators");
556
+ var Range = require_range(), toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
965
557
  module.exports = toComparators;
966
558
  }
967
559
  });
@@ -970,27 +562,17 @@ var require_to_comparators = __commonJS({
970
562
  var require_max_satisfying = __commonJS({
971
563
  "../../node_modules/semver/ranges/max-satisfying.js"(exports, module) {
972
564
  "use strict";
973
- var SemVer = require_semver();
974
- var Range = require_range();
975
- var maxSatisfying = /* @__PURE__ */ __name((versions, range, options) => {
976
- let max = null;
977
- let maxSV = null;
978
- let rangeObj = null;
565
+ var SemVer = require_semver(), Range = require_range(), maxSatisfying = (versions, range, options) => {
566
+ let max = null, maxSV = null, rangeObj = null;
979
567
  try {
980
568
  rangeObj = new Range(range, options);
981
- } catch (er) {
569
+ } catch {
982
570
  return null;
983
571
  }
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");
572
+ return versions.forEach((v) => {
573
+ rangeObj.test(v) && (!max || maxSV.compare(v) === -1) && (max = v, maxSV = new SemVer(max, options));
574
+ }), max;
575
+ };
994
576
  module.exports = maxSatisfying;
995
577
  }
996
578
  });
@@ -999,27 +581,17 @@ var require_max_satisfying = __commonJS({
999
581
  var require_min_satisfying = __commonJS({
1000
582
  "../../node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1001
583
  "use strict";
1002
- var SemVer = require_semver();
1003
- var Range = require_range();
1004
- var minSatisfying = /* @__PURE__ */ __name((versions, range, options) => {
1005
- let min = null;
1006
- let minSV = null;
1007
- let rangeObj = null;
584
+ var SemVer = require_semver(), Range = require_range(), minSatisfying = (versions, range, options) => {
585
+ let min = null, minSV = null, rangeObj = null;
1008
586
  try {
1009
587
  rangeObj = new Range(range, options);
1010
- } catch (er) {
588
+ } catch {
1011
589
  return null;
1012
590
  }
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");
591
+ return versions.forEach((v) => {
592
+ rangeObj.test(v) && (!min || minSV.compare(v) === 1) && (min = v, minSV = new SemVer(min, options));
593
+ }), min;
594
+ };
1023
595
  module.exports = minSatisfying;
1024
596
  }
1025
597
  });
@@ -1028,39 +600,23 @@ var require_min_satisfying = __commonJS({
1028
600
  var require_min_version = __commonJS({
1029
601
  "../../node_modules/semver/ranges/min-version.js"(exports, module) {
1030
602
  "use strict";
1031
- var SemVer = require_semver();
1032
- var Range = require_range();
1033
- var gt = require_gt();
1034
- var minVersion = /* @__PURE__ */ __name((range, loose) => {
603
+ var SemVer = require_semver(), Range = require_range(), gt = require_gt(), minVersion = (range, loose) => {
1035
604
  range = new Range(range, loose);
1036
605
  let minver = new SemVer("0.0.0");
1037
- if (range.test(minver)) {
1038
- return minver;
1039
- }
1040
- minver = new SemVer("0.0.0-0");
1041
- if (range.test(minver)) {
606
+ if (range.test(minver) || (minver = new SemVer("0.0.0-0"), range.test(minver)))
1042
607
  return minver;
1043
- }
1044
608
  minver = null;
1045
609
  for (let i = 0; i < range.set.length; ++i) {
1046
- const comparators = range.set[i];
1047
- let setMin = null;
610
+ let comparators = range.set[i], setMin = null;
1048
611
  comparators.forEach((comparator) => {
1049
- const compver = new SemVer(comparator.semver.version);
612
+ let compver = new SemVer(comparator.semver.version);
1050
613
  switch (comparator.operator) {
1051
614
  case ">":
1052
- if (compver.prerelease.length === 0) {
1053
- compver.patch++;
1054
- } else {
1055
- compver.prerelease.push(0);
1056
- }
1057
- compver.raw = compver.format();
615
+ compver.prerelease.length === 0 ? compver.patch++ : compver.prerelease.push(0), compver.raw = compver.format();
1058
616
  /* fallthrough */
1059
617
  case "":
1060
618
  case ">=":
1061
- if (!setMin || gt(compver, setMin)) {
1062
- setMin = compver;
1063
- }
619
+ (!setMin || gt(compver, setMin)) && (setMin = compver);
1064
620
  break;
1065
621
  case "<":
1066
622
  case "<=":
@@ -1069,16 +625,10 @@ var require_min_version = __commonJS({
1069
625
  default:
1070
626
  throw new Error(`Unexpected operation: ${comparator.operator}`);
1071
627
  }
1072
- });
1073
- if (setMin && (!minver || gt(minver, setMin))) {
1074
- minver = setMin;
1075
- }
628
+ }), setMin && (!minver || gt(minver, setMin)) && (minver = setMin);
1076
629
  }
1077
- if (minver && range.test(minver)) {
1078
- return minver;
1079
- }
1080
- return null;
1081
- }, "minVersion");
630
+ return minver && range.test(minver) ? minver : null;
631
+ };
1082
632
  module.exports = minVersion;
1083
633
  }
1084
634
  });
@@ -1087,14 +637,13 @@ var require_min_version = __commonJS({
1087
637
  var require_valid2 = __commonJS({
1088
638
  "../../node_modules/semver/ranges/valid.js"(exports, module) {
1089
639
  "use strict";
1090
- var Range = require_range();
1091
- var validRange = /* @__PURE__ */ __name((range, options) => {
640
+ var Range = require_range(), validRange = (range, options) => {
1092
641
  try {
1093
642
  return new Range(range, options).range || "*";
1094
- } catch (er) {
643
+ } catch {
1095
644
  return null;
1096
645
  }
1097
- }, "validRange");
646
+ };
1098
647
  module.exports = validRange;
1099
648
  }
1100
649
  });
@@ -1103,67 +652,32 @@ var require_valid2 = __commonJS({
1103
652
  var require_outside = __commonJS({
1104
653
  "../../node_modules/semver/ranges/outside.js"(exports, module) {
1105
654
  "use strict";
1106
- var SemVer = require_semver();
1107
- var Comparator = require_comparator();
1108
- var { ANY } = Comparator;
1109
- var Range = require_range();
1110
- var satisfies2 = require_satisfies();
1111
- var gt = require_gt();
1112
- var lt = require_lt();
1113
- var lte = require_lte();
1114
- var gte = require_gte();
1115
- var outside = /* @__PURE__ */ __name((version, range, hilo, options) => {
1116
- version = new SemVer(version, options);
1117
- range = new Range(range, options);
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);
1118
657
  let gtfn, ltefn, ltfn, comp, ecomp;
1119
658
  switch (hilo) {
1120
659
  case ">":
1121
- gtfn = gt;
1122
- ltefn = lte;
1123
- ltfn = lt;
1124
- comp = ">";
1125
- ecomp = ">=";
660
+ gtfn = gt, ltefn = lte, ltfn = lt, comp = ">", ecomp = ">=";
1126
661
  break;
1127
662
  case "<":
1128
- gtfn = lt;
1129
- ltefn = gte;
1130
- ltfn = gt;
1131
- comp = "<";
1132
- ecomp = "<=";
663
+ gtfn = lt, ltefn = gte, ltfn = gt, comp = "<", ecomp = "<=";
1133
664
  break;
1134
665
  default:
1135
666
  throw new TypeError('Must provide a hilo val of "<" or ">"');
1136
667
  }
1137
- if (satisfies2(version, range, options)) {
1138
- return false;
1139
- }
668
+ if (satisfies2(version, range, options))
669
+ return !1;
1140
670
  for (let i = 0; i < range.set.length; ++i) {
1141
- const comparators = range.set[i];
1142
- let high = null;
1143
- let low = null;
1144
- comparators.forEach((comparator) => {
1145
- if (comparator.semver === ANY) {
1146
- comparator = new Comparator(">=0.0.0");
1147
- }
1148
- high = high || comparator;
1149
- low = low || comparator;
1150
- if (gtfn(comparator.semver, high.semver, options)) {
1151
- high = comparator;
1152
- } else if (ltfn(comparator.semver, low.semver, options)) {
1153
- low = comparator;
1154
- }
1155
- });
1156
- if (high.operator === comp || high.operator === ecomp) {
1157
- return false;
1158
- }
1159
- if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
1160
- return false;
1161
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
1162
- return false;
1163
- }
1164
- }
1165
- return true;
1166
- }, "outside");
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
+ };
1167
681
  module.exports = outside;
1168
682
  }
1169
683
  });
@@ -1172,8 +686,7 @@ var require_outside = __commonJS({
1172
686
  var require_gtr = __commonJS({
1173
687
  "../../node_modules/semver/ranges/gtr.js"(exports, module) {
1174
688
  "use strict";
1175
- var outside = require_outside();
1176
- var gtr = /* @__PURE__ */ __name((version, range, options) => outside(version, range, ">", options), "gtr");
689
+ var outside = require_outside(), gtr = (version, range, options) => outside(version, range, ">", options);
1177
690
  module.exports = gtr;
1178
691
  }
1179
692
  });
@@ -1182,8 +695,7 @@ var require_gtr = __commonJS({
1182
695
  var require_ltr = __commonJS({
1183
696
  "../../node_modules/semver/ranges/ltr.js"(exports, module) {
1184
697
  "use strict";
1185
- var outside = require_outside();
1186
- var ltr = /* @__PURE__ */ __name((version, range, options) => outside(version, range, "<", options), "ltr");
698
+ var outside = require_outside(), ltr = (version, range, options) => outside(version, range, "<", options);
1187
699
  module.exports = ltr;
1188
700
  }
1189
701
  });
@@ -1192,12 +704,7 @@ var require_ltr = __commonJS({
1192
704
  var require_intersects = __commonJS({
1193
705
  "../../node_modules/semver/ranges/intersects.js"(exports, module) {
1194
706
  "use strict";
1195
- var Range = require_range();
1196
- var intersects = /* @__PURE__ */ __name((r1, r2, options) => {
1197
- r1 = new Range(r1, options);
1198
- r2 = new Range(r2, options);
1199
- return r1.intersects(r2, options);
1200
- }, "intersects");
707
+ var Range = require_range(), intersects = (r1, r2, options) => (r1 = new Range(r1, options), r2 = new Range(r2, options), r1.intersects(r2, options));
1201
708
  module.exports = intersects;
1202
709
  }
1203
710
  });
@@ -1206,47 +713,16 @@ var require_intersects = __commonJS({
1206
713
  var require_simplify = __commonJS({
1207
714
  "../../node_modules/semver/ranges/simplify.js"(exports, module) {
1208
715
  "use strict";
1209
- var satisfies2 = require_satisfies();
1210
- var compare = require_compare();
716
+ var satisfies2 = require_satisfies(), compare = require_compare();
1211
717
  module.exports = (versions, range, options) => {
1212
- const set = [];
1213
- let first = null;
1214
- let prev = null;
1215
- const v = versions.sort((a, b) => compare(a, b, options));
1216
- for (const version of v) {
1217
- const included = satisfies2(version, range, options);
1218
- if (included) {
1219
- prev = version;
1220
- if (!first) {
1221
- first = version;
1222
- }
1223
- } else {
1224
- if (prev) {
1225
- set.push([first, prev]);
1226
- }
1227
- prev = null;
1228
- first = null;
1229
- }
1230
- }
1231
- if (first) {
1232
- set.push([first, null]);
1233
- }
1234
- const ranges = [];
1235
- for (const [min, max] of set) {
1236
- if (min === max) {
1237
- ranges.push(min);
1238
- } else if (!max && min === v[0]) {
1239
- ranges.push("*");
1240
- } else if (!max) {
1241
- ranges.push(`>=${min}`);
1242
- } else if (min === v[0]) {
1243
- ranges.push(`<=${max}`);
1244
- } else {
1245
- ranges.push(`${min} - ${max}`);
1246
- }
1247
- }
1248
- const simplified = ranges.join(" || ");
1249
- const original = typeof range.raw === "string" ? range.raw : String(range);
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);
1250
726
  return simplified.length < original.length ? simplified : range;
1251
727
  };
1252
728
  }
@@ -1256,160 +732,86 @@ var require_simplify = __commonJS({
1256
732
  var require_subset = __commonJS({
1257
733
  "../../node_modules/semver/ranges/subset.js"(exports, module) {
1258
734
  "use strict";
1259
- var Range = require_range();
1260
- var Comparator = require_comparator();
1261
- var { ANY } = Comparator;
1262
- var satisfies2 = require_satisfies();
1263
- var compare = require_compare();
1264
- var subset = /* @__PURE__ */ __name((sub, dom, options = {}) => {
1265
- if (sub === dom) {
1266
- return true;
1267
- }
1268
- sub = new Range(sub, options);
1269
- dom = new Range(dom, options);
1270
- let sawNonNull = false;
1271
- OUTER: for (const simpleSub of sub.set) {
1272
- for (const simpleDom of dom.set) {
1273
- const isSub = simpleSubset(simpleSub, simpleDom, options);
1274
- sawNonNull = sawNonNull || isSub !== null;
1275
- if (isSub) {
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)
1276
744
  continue OUTER;
1277
- }
1278
745
  }
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;
746
+ if (sawNonNull)
747
+ return !1;
1290
748
  }
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;
1291
753
  if (sub.length === 1 && sub[0].semver === ANY) {
1292
- if (dom.length === 1 && dom[0].semver === ANY) {
1293
- return true;
1294
- } else if (options.includePrerelease) {
1295
- sub = minimumVersionWithPreRelease;
1296
- } else {
1297
- sub = minimumVersion;
1298
- }
754
+ if (dom.length === 1 && dom[0].semver === ANY)
755
+ return !0;
756
+ options.includePrerelease ? sub = minimumVersionWithPreRelease : sub = minimumVersion;
1299
757
  }
1300
758
  if (dom.length === 1 && dom[0].semver === ANY) {
1301
- if (options.includePrerelease) {
1302
- return true;
1303
- } else {
1304
- dom = minimumVersion;
1305
- }
1306
- }
1307
- const eqSet = /* @__PURE__ */ new Set();
1308
- let gt, lt;
1309
- for (const c of sub) {
1310
- if (c.operator === ">" || c.operator === ">=") {
1311
- gt = higherGT(gt, c, options);
1312
- } else if (c.operator === "<" || c.operator === "<=") {
1313
- lt = lowerLT(lt, c, options);
1314
- } else {
1315
- eqSet.add(c.semver);
1316
- }
1317
- }
1318
- if (eqSet.size > 1) {
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)
1319
767
  return null;
1320
- }
1321
768
  let gtltComp;
1322
769
  if (gt && lt) {
1323
- gtltComp = compare(gt.semver, lt.semver, options);
1324
- if (gtltComp > 0) {
770
+ if (gtltComp = compare(gt.semver, lt.semver, options), gtltComp > 0)
1325
771
  return null;
1326
- } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
772
+ if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<="))
1327
773
  return null;
1328
- }
1329
774
  }
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)) {
775
+ for (let eq of eqSet) {
776
+ if (gt && !satisfies2(eq, String(gt), options) || lt && !satisfies2(eq, String(lt), options))
1335
777
  return null;
1336
- }
1337
- for (const c of dom) {
1338
- if (!satisfies2(eq, String(c), options)) {
1339
- return false;
1340
- }
1341
- }
1342
- return true;
1343
- }
1344
- let higher, lower;
1345
- let hasDomLT, hasDomGT;
1346
- let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
1347
- let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
1348
- if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
1349
- needDomLTPre = false;
1350
- }
1351
- for (const c of dom) {
1352
- hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
1353
- hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
1354
- if (gt) {
1355
- if (needDomGTPre) {
1356
- if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
1357
- needDomGTPre = false;
1358
- }
1359
- }
1360
- if (c.operator === ">" || c.operator === ">=") {
1361
- higher = higherGT(gt, c, options);
1362
- if (higher === c && higher !== gt) {
1363
- return false;
1364
- }
1365
- } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options)) {
1366
- return false;
1367
- }
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;
1368
792
  }
1369
793
  if (lt) {
1370
- if (needDomLTPre) {
1371
- if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
1372
- needDomLTPre = false;
1373
- }
1374
- }
1375
- if (c.operator === "<" || c.operator === "<=") {
1376
- lower = lowerLT(lt, c, options);
1377
- if (lower === c && lower !== lt) {
1378
- return false;
1379
- }
1380
- } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
1381
- return false;
1382
- }
1383
- }
1384
- if (!c.operator && (lt || gt) && gtltComp !== 0) {
1385
- return false;
1386
- }
1387
- }
1388
- if (gt && hasDomLT && !lt && gtltComp !== 0) {
1389
- return false;
1390
- }
1391
- if (lt && hasDomGT && !gt && gtltComp !== 0) {
1392
- return false;
1393
- }
1394
- if (needDomGTPre || needDomLTPre) {
1395
- return false;
1396
- }
1397
- return true;
1398
- }, "simpleSubset");
1399
- var higherGT = /* @__PURE__ */ __name((a, b, options) => {
1400
- if (!a) {
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)
1401
806
  return b;
1402
- }
1403
- const comp = compare(a.semver, b.semver, options);
1404
- return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
1405
- }, "higherGT");
1406
- var lowerLT = /* @__PURE__ */ __name((a, b, options) => {
1407
- if (!a) {
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)
1408
811
  return b;
1409
- }
1410
- const comp = compare(a.semver, b.semver, options);
1411
- return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
1412
- }, "lowerLT");
812
+ let comp = compare(a.semver, b.semver, options);
813
+ return comp < 0 ? a : comp > 0 || b.operator === "<" && a.operator === "<=" ? b : a;
814
+ };
1413
815
  module.exports = subset;
1414
816
  }
1415
817
  });
@@ -1418,47 +820,7 @@ var require_subset = __commonJS({
1418
820
  var require_semver2 = __commonJS({
1419
821
  "../../node_modules/semver/index.js"(exports, module) {
1420
822
  "use strict";
1421
- var internalRe = require_re();
1422
- var constants = require_constants();
1423
- var SemVer = require_semver();
1424
- var identifiers = require_identifiers();
1425
- var parse = require_parse();
1426
- var valid = require_valid();
1427
- var clean = require_clean();
1428
- var inc = require_inc();
1429
- var diff = require_diff();
1430
- var major = require_major();
1431
- var minor = require_minor();
1432
- var patch = require_patch();
1433
- var prerelease = require_prerelease();
1434
- var compare = require_compare();
1435
- var rcompare = require_rcompare();
1436
- var compareLoose = require_compare_loose();
1437
- var compareBuild = require_compare_build();
1438
- var sort = require_sort();
1439
- var rsort = require_rsort();
1440
- var gt = require_gt();
1441
- var lt = require_lt();
1442
- var eq = require_eq();
1443
- var neq = require_neq();
1444
- var gte = require_gte();
1445
- var lte = require_lte();
1446
- var cmp = require_cmp();
1447
- var 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();
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();
1462
824
  module.exports = {
1463
825
  parse,
1464
826
  valid,
@@ -1482,7 +844,7 @@ var require_semver2 = __commonJS({
1482
844
  gte,
1483
845
  lte,
1484
846
  cmp,
1485
- coerce,
847
+ coerce: coerce2,
1486
848
  Comparator,
1487
849
  Range,
1488
850
  satisfies: satisfies2,
@@ -1513,87 +875,79 @@ var require_semver2 = __commonJS({
1513
875
  import { existsSync } from "node:fs";
1514
876
  import * as fs2 from "node:fs/promises";
1515
877
  import { writeFile } from "node:fs/promises";
1516
- import { babelParse, generate } from "storybook/internal/babel";
1517
- import { AddonVitestService } from "storybook/internal/cli";
878
+ import { isAbsolute, posix, sep } from "node:path";
879
+ import { fileURLToPath, pathToFileURL } from "node:url";
880
+ import { babelParse, generate, traverse } from "storybook/internal/babel";
1518
881
  import {
1519
882
  JsPackageManagerFactory,
1520
883
  formatFileContent,
884
+ getInterpretedFile,
1521
885
  getProjectRoot,
1522
- getStorybookInfo
886
+ isCI as isCI2,
887
+ loadMainConfig,
888
+ scanAndTransformFiles,
889
+ transformImportFiles
1523
890
  } from "storybook/internal/common";
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";
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
1530
901
  var import_semver = __toESM(require_semver2(), 1);
1531
- var import_ts_dedent = __toESM(require_dist(), 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 });
1532
914
 
1533
915
  // src/updateVitestFile.ts
1534
916
  import * as fs from "node:fs/promises";
1535
- var loadTemplate = /* @__PURE__ */ __name(async (name, replacements) => {
917
+ var loadTemplate = async (name, replacements) => {
1536
918
  let template = await fs.readFile(
1537
919
  join(resolvePackageDir("@storybook/addon-vitest"), "templates", name),
1538
920
  "utf8"
1539
921
  );
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) {
922
+ return Object.entries(replacements).forEach(([key, value]) => template = template.replace(key, value)), template;
923
+ }, mergeProperties = (source, target) => {
924
+ for (let sourceProp of source)
1545
925
  if (sourceProp.type === "ObjectProperty") {
1546
- const targetProp = target.find(
926
+ let targetProp = target.find(
1547
927
  (p) => sourceProp.key.type === "Identifier" && p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === sourceProp.key.name
1548
928
  );
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
- }
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);
1560
930
  }
1561
- }
1562
- }, "mergeProperties");
1563
- var updateConfigFile = /* @__PURE__ */ __name((source, target) => {
1564
- let updated = false;
1565
- const sourceExportDefault = source.program.body.find(
931
+ }, updateConfigFile = (source, target) => {
932
+ let updated = !1, sourceExportDefault = source.program.body.find(
1566
933
  (n) => n.type === "ExportDefaultDeclaration"
1567
934
  );
1568
- if (!sourceExportDefault || sourceExportDefault.declaration.type !== "CallExpression") {
1569
- return false;
1570
- }
1571
- const targetExportDefault = target.program.body.find(
935
+ if (!sourceExportDefault || sourceExportDefault.declaration.type !== "CallExpression")
936
+ return !1;
937
+ let targetExportDefault = target.program.body.find(
1572
938
  (n) => n.type === "ExportDefaultDeclaration"
1573
939
  );
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) {
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)
1592
946
  if (sourceNode.type === "ImportDeclaration") {
1593
947
  if (!target.program.body.some(
1594
948
  (targetNode) => targetNode.type === sourceNode.type && targetNode.specifiers.some((s) => s.local.name === sourceNode.specifiers[0].local.name)
1595
949
  )) {
1596
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
950
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1597
951
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1598
952
  }
1599
953
  } else if (sourceNode.type === "VariableDeclaration") {
@@ -1602,110 +956,88 @@ var updateConfigFile = /* @__PURE__ */ __name((source, target) => {
1602
956
  (d) => "name" in d.id && "name" in sourceNode.declarations[0].id && d.id.name === sourceNode.declarations[0].id.name
1603
957
  )
1604
958
  )) {
1605
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
959
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1606
960
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1607
961
  }
1608
962
  } else if (sourceNode.type === "ExportDefaultDeclaration") {
1609
- const exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
963
+ let exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1610
964
  if (exportDefault && sourceNode.declaration.type === "CallExpression" && sourceNode.declaration.arguments.length > 0 && sourceNode.declaration.arguments[0].type === "ObjectExpression") {
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(
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(
1628
975
  (obj) => obj.properties.some(
1629
976
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1630
977
  )
1631
- );
1632
- const targetConfigObject = configObjectWithTest || configObjectNodes[0];
1633
- if (!targetConfigObject) {
1634
- return false;
1635
- }
1636
- const existingTestProp = targetConfigObject.properties.find(
978
+ ) || configObjectNodes[0];
979
+ if (!targetConfigObject)
980
+ return !1;
981
+ let existingTestProp = targetConfigObject.properties.find(
1637
982
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1638
983
  );
1639
984
  if (existingTestProp && existingTestProp.value.type === "ObjectExpression") {
1640
- const templateTestProp = properties.find(
985
+ let templateTestProp = properties.find(
1641
986
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "test"
1642
987
  );
1643
988
  if (templateTestProp && templateTestProp.value.type === "ObjectExpression") {
1644
- const workspaceOrProjectsProp = templateTestProp.value.properties.find(
989
+ let workspaceOrProjectsProp = templateTestProp.value.properties.find(
1645
990
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && (p.key.name === "workspace" || p.key.name === "projects")
1646
991
  );
1647
992
  if (workspaceOrProjectsProp && workspaceOrProjectsProp.value.type === "ArrayExpression") {
1648
- const coverageProp = existingTestProp.value.properties.find(
993
+ let coverageProp = existingTestProp.value.properties.find(
1649
994
  (p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "coverage"
1650
- );
1651
- const testPropsWithoutCoverage = existingTestProp.value.properties.filter(
1652
- (p) => p !== coverageProp
1653
- );
1654
- const testConfigForProject = {
995
+ ), testConfigForProject = {
1655
996
  type: "ObjectExpression",
1656
- properties: testPropsWithoutCoverage
1657
- };
1658
- const existingTestProject = {
997
+ properties: existingTestProp.value.properties.filter(
998
+ (p) => p !== coverageProp
999
+ )
1000
+ }, existingTestProject = {
1659
1001
  type: "ObjectExpression",
1660
1002
  properties: [
1661
1003
  {
1662
1004
  type: "ObjectProperty",
1663
1005
  key: { type: "Identifier", name: "extends" },
1664
- value: { type: "BooleanLiteral", value: true },
1665
- computed: false,
1666
- shorthand: false
1006
+ value: { type: "BooleanLiteral", value: !0 },
1007
+ computed: !1,
1008
+ shorthand: !1
1667
1009
  },
1668
1010
  {
1669
1011
  type: "ObjectProperty",
1670
1012
  key: { type: "Identifier", name: "test" },
1671
1013
  value: testConfigForProject,
1672
- computed: false,
1673
- shorthand: false
1014
+ computed: !1,
1015
+ shorthand: !1
1674
1016
  }
1675
1017
  ]
1676
1018
  };
1677
- workspaceOrProjectsProp.value.elements.unshift(existingTestProject);
1678
- targetConfigObject.properties = targetConfigObject.properties.filter(
1019
+ workspaceOrProjectsProp.value.elements.unshift(existingTestProject), targetConfigObject.properties = targetConfigObject.properties.filter(
1679
1020
  (p) => p !== existingTestProp
1680
- );
1681
- if (coverageProp && templateTestProp.value.type === "ObjectExpression") {
1682
- templateTestProp.value.properties.unshift(coverageProp);
1683
- }
1684
- mergeProperties(properties, targetConfigObject.properties);
1685
- } else {
1021
+ ), coverageProp && templateTestProp.value.type === "ObjectExpression" && templateTestProp.value.properties.unshift(coverageProp), mergeProperties(properties, targetConfigObject.properties);
1022
+ } else
1686
1023
  mergeProperties(properties, targetConfigObject.properties);
1687
- }
1688
- } else {
1024
+ } else
1689
1025
  mergeProperties(properties, targetConfigObject.properties);
1690
- }
1691
- } else {
1026
+ } else
1692
1027
  mergeProperties(properties, targetConfigObject.properties);
1693
- }
1694
- updated = true;
1028
+ updated = !0;
1695
1029
  }
1696
1030
  }
1697
1031
  }
1698
- }
1699
1032
  return updated;
1700
- }, "updateConfigFile");
1701
- var updateWorkspaceFile = /* @__PURE__ */ __name((source, target) => {
1702
- let updated = false;
1703
- for (const sourceNode of source.program.body) {
1033
+ }, updateWorkspaceFile = (source, target) => {
1034
+ let updated = !1;
1035
+ for (let sourceNode of source.program.body)
1704
1036
  if (sourceNode.type === "ImportDeclaration") {
1705
1037
  if (!target.program.body.some(
1706
1038
  (targetNode) => targetNode.type === sourceNode.type && targetNode.source.value === sourceNode.source.value && targetNode.specifiers.some((s) => s.local.name === sourceNode.specifiers[0].local.name)
1707
1039
  )) {
1708
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1040
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1709
1041
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1710
1042
  }
1711
1043
  } else if (sourceNode.type === "VariableDeclaration") {
@@ -1714,196 +1046,210 @@ var updateWorkspaceFile = /* @__PURE__ */ __name((source, target) => {
1714
1046
  (d) => "name" in d.id && "name" in sourceNode.declarations[0].id && d.id.name === sourceNode.declarations[0].id.name
1715
1047
  )
1716
1048
  )) {
1717
- const lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1049
+ let lastImport = target.program.body.findLastIndex((n) => n.type === "ImportDeclaration");
1718
1050
  target.program.body.splice(lastImport + 1, 0, sourceNode);
1719
1051
  }
1720
1052
  } else if (sourceNode.type === "ExportDefaultDeclaration") {
1721
- const exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1053
+ let exportDefault = target.program.body.find((n) => n.type === "ExportDefaultDeclaration");
1722
1054
  if (exportDefault && sourceNode.declaration.type === "CallExpression" && sourceNode.declaration.arguments.length > 0 && sourceNode.declaration.arguments[0].type === "ArrayExpression" && sourceNode.declaration.arguments[0].elements.length > 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
- }
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);
1731
1057
  }
1732
1058
  }
1733
- }
1734
1059
  return updated;
1735
- }, "updateWorkspaceFile");
1060
+ };
1736
1061
 
1737
1062
  // src/postinstall.ts
1738
- var ADDON_NAME = "@storybook/addon-vitest";
1739
- var EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".cts", ".mts", ".cjs", ".mjs"];
1740
- var addonA11yName = "@storybook/addon-a11y";
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
+ );
1741
1073
  async function postInstall(options) {
1742
- const errors = [];
1743
- const { logger, prompt } = options;
1744
- const packageManager = JsPackageManagerFactory.getPackageManager({
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({
1745
1083
  force: options.packageManager
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.
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
1774
1095
 
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
- }
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(`
1151
+
1152
+ `)) : null;
1153
+ })();
1781
1154
  if (result) {
1782
- logger.error(result);
1783
- throw new AddonVitestPostinstallPrerequisiteCheckError({
1784
- reasons: compatibilityResult.reasons
1785
- });
1155
+ logErrors("\u26D4\uFE0F Sorry!", result), logger2.line(1);
1156
+ return;
1786
1157
  }
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.
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.
1800
1163
 
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();
1164
+ Adding "@storybook/nextjs-vite/vite-plugin" so you can use it with Vitest.
1165
+
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");
1816
1174
  }
1817
1175
  }
1818
- if (!options.skipDependencyManagement) {
1819
- if (!options.skipInstall) {
1820
- const playwrightErrors = await addonVitestService.installPlaywright(packageManager, {
1821
- yes: options.yes
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"]
1822
1198
  });
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
- `);
1199
+ } catch {
1200
+ console.error("Failed to install Playwright. Please install it manually");
1829
1201
  }
1830
1202
  }
1831
- const fileExtension = allDeps.typescript || findFile("tsconfig", [...EXTENSIONS, ".json"]) ? "ts" : "js";
1832
- const vitestSetupFile = resolve(options.configDir, `vitest.setup.${fileExtension}`);
1203
+ let fileExtension = allDeps.typescript || findFile("tsconfig", [...EXTENSIONS, ".json"]) ? "ts" : "js", vitestSetupFile = resolve(options.configDir, `vitest.setup.${fileExtension}`);
1833
1204
  if (existsSync(vitestSetupFile)) {
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")}
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
+ `)}
1862
1226
 
1863
1227
  // This is an important step to apply the right configuration when testing your stories.
1864
1228
  // More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
1865
1229
  setProjectAnnotations([${projectAnnotations.join(", ")}]);
1866
1230
  `
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");
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";
1888
1238
  if (vitestWorkspaceFile) {
1889
- const workspaceTemplate = await loadTemplate("vitest.workspace.template.ts", {
1239
+ let workspaceTemplate = await loadTemplate("vitest.workspace.template.ts", {
1890
1240
  EXTENDS_WORKSPACE: viteConfigFile ? relative(dirname(vitestWorkspaceFile), viteConfigFile) : "",
1891
1241
  CONFIG_DIR: options.configDir,
1892
1242
  SETUP_FILE: relative(dirname(vitestWorkspaceFile), vitestSetupFile)
1893
1243
  }).then((t) => t.replace(`
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);
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);
1903
1248
  await writeFile(vitestWorkspaceFile, formattedContent);
1904
1249
  } else {
1905
- logger.error(
1906
- import_ts_dedent.dedent`
1250
+ logErrors(
1251
+ "\u{1F6A8} Oh no!",
1252
+ dedent`
1907
1253
  Could not update existing Vitest workspace file:
1908
1254
  ${vitestWorkspaceFile}
1909
1255
 
@@ -1913,121 +1259,132 @@ async function postInstall(options) {
1913
1259
  Please refer to the documentation to complete the setup manually:
1914
1260
  https://storybook.js.org/docs/next/${DOCUMENTATION_LINK}#manual-setup
1915
1261
  `
1916
- );
1917
- errors.push("Unable to update existing Vitest workspace file");
1262
+ ), logger2.line(1);
1263
+ return;
1918
1264
  }
1919
1265
  } else if (rootConfig) {
1920
- let target, updated;
1921
- const configFile = await fs2.readFile(rootConfig, "utf8");
1922
- const configFileHasTypeReference = configFile.match(
1266
+ let target, updated, configFile = await fs2.readFile(rootConfig, "utf8"), configFileHasTypeReference = configFile.match(
1923
1267
  /\/\/\/\s*<reference\s+types=["']vitest\/config["']\s*\/>/
1924
- );
1925
- const templateName = getTemplateName();
1268
+ ), templateName = getTemplateName();
1926
1269
  if (templateName) {
1927
- const configTemplate = await loadTemplate(templateName, {
1270
+ let configTemplate = await loadTemplate(templateName, {
1928
1271
  CONFIG_DIR: options.configDir,
1929
1272
  SETUP_FILE: relative(dirname(rootConfig), vitestSetupFile)
1930
- });
1931
- const source = babelParse(configTemplate);
1932
- target = babelParse(configFile);
1933
- updated = updateConfigFile(source, target);
1273
+ }), source = babelParse(configTemplate);
1274
+ target = babelParse(configFile), updated = updateConfigFile(source, target);
1934
1275
  }
1935
1276
  if (target && updated) {
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;
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);
1940
1279
  await writeFile(
1941
1280
  rootConfig,
1942
- shouldAddReference ? '/// <reference types="vitest/config" />\n' + formattedContent : formattedContent
1281
+ !configFileHasTypeReference && !vitestConfigFile ? `/// <reference types="vitest/config" />
1282
+ ` + formattedContent : formattedContent
1943
1283
  );
1944
- } else {
1945
- logger.error(import_ts_dedent.dedent`
1284
+ } else
1285
+ logErrors(
1286
+ "\u{1F6A8} Oh no!",
1287
+ dedent`
1946
1288
  We were unable to update your existing ${vitestConfigFile ? "Vitest" : "Vite"} config file.
1947
1289
 
1948
1290
  Please refer to the documentation to complete the setup manually:
1949
1291
  https://storybook.js.org/docs/writing-tests/integrations/vitest-addon#manual-setup
1950
- `);
1951
- errors.push("Unable to update existing Vitest config file");
1952
- }
1292
+ `
1293
+ );
1953
1294
  } else {
1954
- const parentDir = dirname(options.configDir);
1955
- const newConfigFile = resolve(parentDir, `vitest.config.${fileExtension}`);
1956
- const configTemplate = await loadTemplate(getTemplateName(), {
1295
+ let newConfigFile = resolve(`vitest.config.${fileExtension}`), configTemplate = await loadTemplate(getTemplateName(), {
1957
1296
  CONFIG_DIR: options.configDir,
1958
1297
  SETUP_FILE: relative(dirname(newConfigFile), vitestSetupFile)
1959
1298
  });
1960
- logger.step(`Creating a Vitest config file:`);
1961
- logger.log(`${newConfigFile}`);
1962
- const formattedContent = await formatFileContent(newConfigFile, configTemplate);
1299
+ logger2.line(1), logger2.plain(`${step} Creating a Vitest config file:`), logger2.plain(` ${newConfigFile}`);
1300
+ let formattedContent = await formatFileContent(newConfigFile, configTemplate);
1963
1301
  await writeFile(newConfigFile, formattedContent);
1964
1302
  }
1965
- const a11yAddon = info.addons.find((addon) => addon.includes(addonA11yName));
1966
- if (a11yAddon) {
1303
+ if (info2.addons.find((addon) => addon.includes(addonA11yName)))
1967
1304
  try {
1968
- const command = [
1305
+ logger2.plain(`${step} Setting up ${addonA11yName} for @storybook/addon-vitest:`), await execa(
1969
1306
  "storybook",
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" }),
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
+ ],
1989
1318
  {
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"
1319
+ stdio: "inherit"
1993
1320
  }
1994
1321
  );
1995
1322
  } catch (e) {
1996
- logger.error(import_ts_dedent.dedent`
1997
- Could not automatically set up ${addonA11yName} for @storybook/addon-vitest.
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
+
1998
1330
  Please refer to the documentation to complete the setup manually:
1999
1331
  https://storybook.js.org/docs/writing-tests/accessibility-testing#test-addon-integration
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))
1332
+ `
2003
1333
  );
2004
1334
  }
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`
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`
2010
1346
  @storybook/addon-vitest is now configured and you're ready to run your tests!
1347
+
2011
1348
  Here are a couple of tips to get you started:
2012
-
2013
- You can run tests with "${CLI_COLORS.cta(runCommand)}"
2014
- • Vitest IDE extension shows all stories as tests in your editor!
2015
-
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
+
2016
1352
  Check the documentation for more information about its features and options at:
2017
1353
  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
2025
1354
  `
2026
- );
2027
- throw new AddonVitestPostinstallError({ errors });
2028
- }
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
+ };
2029
1387
  }
2030
- __name(postInstall, "postInstall");
2031
1388
  export {
2032
1389
  postInstall as default
2033
1390
  };