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