vite 2.9.12 → 3.0.0-alpha.10

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.
@@ -0,0 +1,2040 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var path$1 = require('path');
6
+ var url = require('url');
7
+ var fs$1 = require('fs');
8
+ var os$1 = require('os');
9
+ var require$$1 = require('util');
10
+ var module$1 = require('module');
11
+ var require$$0 = require('tty');
12
+ var require$$0$1 = require('crypto');
13
+ var readline = require('readline');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
16
+
17
+ var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
18
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs$1);
19
+ var os__default = /*#__PURE__*/_interopDefaultLegacy(os$1);
20
+ var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
21
+ var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
22
+ var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
23
+ var readline__default = /*#__PURE__*/_interopDefaultLegacy(readline);
24
+
25
+ var version = "3.0.0-alpha.10";
26
+
27
+ const VERSION = version;
28
+ const VITE_PACKAGE_DIR = path$1.resolve(url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node-cjs/publicUtils.cjs', document.baseURI).href))), '../../..');
29
+ const CLIENT_ENTRY = path$1.resolve(VITE_PACKAGE_DIR, 'dist/client/client.mjs');
30
+ path$1.resolve(VITE_PACKAGE_DIR, 'dist/client/env.mjs');
31
+ path__default.dirname(CLIENT_ENTRY);
32
+
33
+ // This file will be built for both ESM and CJS. Avoid relying on other modules as possible.
34
+ const cssLangs = `\\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\\?)`;
35
+ const cssLangRE = new RegExp(cssLangs);
36
+ const isCSSRequest = (request) => cssLangRE.test(request);
37
+ // Use splitVendorChunkPlugin() to get the same manualChunks strategy as Vite 2.7
38
+ // We don't recommend using this strategy as a general solution moving forward
39
+ // splitVendorChunk is a simple index/vendor strategy that was used in Vite
40
+ // until v2.8. It is exposed to let people continue to use it in case it was
41
+ // working well for their setups.
42
+ // The cache needs to be reset on buildStart for watch mode to work correctly
43
+ // Don't use this manualChunks strategy for ssr, lib mode, and 'umd' or 'iife'
44
+ class SplitVendorChunkCache {
45
+ constructor() {
46
+ this.cache = new Map();
47
+ }
48
+ reset() {
49
+ this.cache = new Map();
50
+ }
51
+ }
52
+ function splitVendorChunk(options = {}) {
53
+ const cache = options.cache ?? new SplitVendorChunkCache();
54
+ return (id, { getModuleInfo }) => {
55
+ if (id.includes('node_modules') &&
56
+ !isCSSRequest(id) &&
57
+ staticImportedByEntry(id, getModuleInfo, cache.cache)) {
58
+ return 'vendor';
59
+ }
60
+ };
61
+ }
62
+ function staticImportedByEntry(id, getModuleInfo, cache, importStack = []) {
63
+ if (cache.has(id)) {
64
+ return cache.get(id);
65
+ }
66
+ if (importStack.includes(id)) {
67
+ // circular deps!
68
+ cache.set(id, false);
69
+ return false;
70
+ }
71
+ const mod = getModuleInfo(id);
72
+ if (!mod) {
73
+ cache.set(id, false);
74
+ return false;
75
+ }
76
+ if (mod.isEntry) {
77
+ cache.set(id, true);
78
+ return true;
79
+ }
80
+ const someImporterIs = mod.importers.some((importer) => staticImportedByEntry(importer, getModuleInfo, cache, importStack.concat(id)));
81
+ cache.set(id, someImporterIs);
82
+ return someImporterIs;
83
+ }
84
+ function splitVendorChunkPlugin() {
85
+ const caches = [];
86
+ function createSplitVendorChunk(output, config) {
87
+ const cache = new SplitVendorChunkCache();
88
+ caches.push(cache);
89
+ const build = config.build ?? {};
90
+ const format = output?.format;
91
+ if (!build.ssr && !build.lib && format !== 'umd' && format !== 'iife') {
92
+ return splitVendorChunk({ cache });
93
+ }
94
+ }
95
+ return {
96
+ name: 'vite:split-vendor-chunk',
97
+ config(config) {
98
+ let outputs = config?.build?.rollupOptions?.output;
99
+ if (outputs) {
100
+ outputs = Array.isArray(outputs) ? outputs : [outputs];
101
+ for (const output of outputs) {
102
+ const viteManualChunks = createSplitVendorChunk(output, config);
103
+ if (viteManualChunks) {
104
+ if (output.manualChunks) {
105
+ if (typeof output.manualChunks === 'function') {
106
+ const userManualChunks = output.manualChunks;
107
+ output.manualChunks = (id, api) => {
108
+ return userManualChunks(id, api) ?? viteManualChunks(id, api);
109
+ };
110
+ }
111
+ // else, leave the object form of manualChunks untouched, as
112
+ // we can't safely replicate rollup handling.
113
+ }
114
+ else {
115
+ output.manualChunks = viteManualChunks;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ return {
122
+ build: {
123
+ rollupOptions: {
124
+ output: {
125
+ manualChunks: createSplitVendorChunk({}, config)
126
+ }
127
+ }
128
+ }
129
+ };
130
+ }
131
+ },
132
+ buildStart() {
133
+ caches.forEach((cache) => cache.reset());
134
+ }
135
+ };
136
+ }
137
+
138
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
139
+ const intToChar = new Uint8Array(64); // 64 possible chars.
140
+ const charToInt = new Uint8Array(128); // z is 122 in ASCII
141
+ for (let i = 0; i < chars.length; i++) {
142
+ const c = chars.charCodeAt(i);
143
+ intToChar[i] = c;
144
+ charToInt[c] = i;
145
+ }
146
+
147
+ var picocolors = {exports: {}};
148
+
149
+ let tty = require$$0__default;
150
+
151
+ let isColorSupported =
152
+ !("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
153
+ ("FORCE_COLOR" in process.env ||
154
+ process.argv.includes("--color") ||
155
+ process.platform === "win32" ||
156
+ (tty.isatty(1) && process.env.TERM !== "dumb") ||
157
+ "CI" in process.env);
158
+
159
+ let formatter =
160
+ (open, close, replace = open) =>
161
+ input => {
162
+ let string = "" + input;
163
+ let index = string.indexOf(close, open.length);
164
+ return ~index
165
+ ? open + replaceClose(string, close, replace, index) + close
166
+ : open + string + close
167
+ };
168
+
169
+ let replaceClose = (string, close, replace, index) => {
170
+ let start = string.substring(0, index) + replace;
171
+ let end = string.substring(index + close.length);
172
+ let nextIndex = end.indexOf(close);
173
+ return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
174
+ };
175
+
176
+ let createColors = (enabled = isColorSupported) => ({
177
+ isColorSupported: enabled,
178
+ reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
179
+ bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
180
+ dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
181
+ italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
182
+ underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
183
+ inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
184
+ hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
185
+ strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
186
+ black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
187
+ red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
188
+ green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
189
+ yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
190
+ blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
191
+ magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
192
+ cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
193
+ white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
194
+ gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
195
+ bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
196
+ bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
197
+ bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
198
+ bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
199
+ bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
200
+ bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
201
+ bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
202
+ bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
203
+ });
204
+
205
+ picocolors.exports = createColors();
206
+ picocolors.exports.createColors = createColors;
207
+
208
+ var colors = picocolors.exports;
209
+
210
+ var src = {exports: {}};
211
+
212
+ var browser = {exports: {}};
213
+
214
+ /**
215
+ * Helpers.
216
+ */
217
+
218
+ var s = 1000;
219
+ var m = s * 60;
220
+ var h = m * 60;
221
+ var d = h * 24;
222
+ var w = d * 7;
223
+ var y = d * 365.25;
224
+
225
+ /**
226
+ * Parse or format the given `val`.
227
+ *
228
+ * Options:
229
+ *
230
+ * - `long` verbose formatting [false]
231
+ *
232
+ * @param {String|Number} val
233
+ * @param {Object} [options]
234
+ * @throws {Error} throw an error if val is not a non-empty string or a number
235
+ * @return {String|Number}
236
+ * @api public
237
+ */
238
+
239
+ var ms = function(val, options) {
240
+ options = options || {};
241
+ var type = typeof val;
242
+ if (type === 'string' && val.length > 0) {
243
+ return parse$1(val);
244
+ } else if (type === 'number' && isFinite(val)) {
245
+ return options.long ? fmtLong(val) : fmtShort(val);
246
+ }
247
+ throw new Error(
248
+ 'val is not a non-empty string or a valid number. val=' +
249
+ JSON.stringify(val)
250
+ );
251
+ };
252
+
253
+ /**
254
+ * Parse the given `str` and return milliseconds.
255
+ *
256
+ * @param {String} str
257
+ * @return {Number}
258
+ * @api private
259
+ */
260
+
261
+ function parse$1(str) {
262
+ str = String(str);
263
+ if (str.length > 100) {
264
+ return;
265
+ }
266
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
267
+ str
268
+ );
269
+ if (!match) {
270
+ return;
271
+ }
272
+ var n = parseFloat(match[1]);
273
+ var type = (match[2] || 'ms').toLowerCase();
274
+ switch (type) {
275
+ case 'years':
276
+ case 'year':
277
+ case 'yrs':
278
+ case 'yr':
279
+ case 'y':
280
+ return n * y;
281
+ case 'weeks':
282
+ case 'week':
283
+ case 'w':
284
+ return n * w;
285
+ case 'days':
286
+ case 'day':
287
+ case 'd':
288
+ return n * d;
289
+ case 'hours':
290
+ case 'hour':
291
+ case 'hrs':
292
+ case 'hr':
293
+ case 'h':
294
+ return n * h;
295
+ case 'minutes':
296
+ case 'minute':
297
+ case 'mins':
298
+ case 'min':
299
+ case 'm':
300
+ return n * m;
301
+ case 'seconds':
302
+ case 'second':
303
+ case 'secs':
304
+ case 'sec':
305
+ case 's':
306
+ return n * s;
307
+ case 'milliseconds':
308
+ case 'millisecond':
309
+ case 'msecs':
310
+ case 'msec':
311
+ case 'ms':
312
+ return n;
313
+ default:
314
+ return undefined;
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Short format for `ms`.
320
+ *
321
+ * @param {Number} ms
322
+ * @return {String}
323
+ * @api private
324
+ */
325
+
326
+ function fmtShort(ms) {
327
+ var msAbs = Math.abs(ms);
328
+ if (msAbs >= d) {
329
+ return Math.round(ms / d) + 'd';
330
+ }
331
+ if (msAbs >= h) {
332
+ return Math.round(ms / h) + 'h';
333
+ }
334
+ if (msAbs >= m) {
335
+ return Math.round(ms / m) + 'm';
336
+ }
337
+ if (msAbs >= s) {
338
+ return Math.round(ms / s) + 's';
339
+ }
340
+ return ms + 'ms';
341
+ }
342
+
343
+ /**
344
+ * Long format for `ms`.
345
+ *
346
+ * @param {Number} ms
347
+ * @return {String}
348
+ * @api private
349
+ */
350
+
351
+ function fmtLong(ms) {
352
+ var msAbs = Math.abs(ms);
353
+ if (msAbs >= d) {
354
+ return plural(ms, msAbs, d, 'day');
355
+ }
356
+ if (msAbs >= h) {
357
+ return plural(ms, msAbs, h, 'hour');
358
+ }
359
+ if (msAbs >= m) {
360
+ return plural(ms, msAbs, m, 'minute');
361
+ }
362
+ if (msAbs >= s) {
363
+ return plural(ms, msAbs, s, 'second');
364
+ }
365
+ return ms + ' ms';
366
+ }
367
+
368
+ /**
369
+ * Pluralization helper.
370
+ */
371
+
372
+ function plural(ms, msAbs, n, name) {
373
+ var isPlural = msAbs >= n * 1.5;
374
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
375
+ }
376
+
377
+ /**
378
+ * This is the common logic for both the Node.js and web browser
379
+ * implementations of `debug()`.
380
+ */
381
+
382
+ function setup(env) {
383
+ createDebug.debug = createDebug;
384
+ createDebug.default = createDebug;
385
+ createDebug.coerce = coerce;
386
+ createDebug.disable = disable;
387
+ createDebug.enable = enable;
388
+ createDebug.enabled = enabled;
389
+ createDebug.humanize = ms;
390
+ createDebug.destroy = destroy;
391
+
392
+ Object.keys(env).forEach(key => {
393
+ createDebug[key] = env[key];
394
+ });
395
+
396
+ /**
397
+ * The currently active debug mode names, and names to skip.
398
+ */
399
+
400
+ createDebug.names = [];
401
+ createDebug.skips = [];
402
+
403
+ /**
404
+ * Map of special "%n" handling functions, for the debug "format" argument.
405
+ *
406
+ * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
407
+ */
408
+ createDebug.formatters = {};
409
+
410
+ /**
411
+ * Selects a color for a debug namespace
412
+ * @param {String} namespace The namespace string for the debug instance to be colored
413
+ * @return {Number|String} An ANSI color code for the given namespace
414
+ * @api private
415
+ */
416
+ function selectColor(namespace) {
417
+ let hash = 0;
418
+
419
+ for (let i = 0; i < namespace.length; i++) {
420
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
421
+ hash |= 0; // Convert to 32bit integer
422
+ }
423
+
424
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
425
+ }
426
+ createDebug.selectColor = selectColor;
427
+
428
+ /**
429
+ * Create a debugger with the given `namespace`.
430
+ *
431
+ * @param {String} namespace
432
+ * @return {Function}
433
+ * @api public
434
+ */
435
+ function createDebug(namespace) {
436
+ let prevTime;
437
+ let enableOverride = null;
438
+ let namespacesCache;
439
+ let enabledCache;
440
+
441
+ function debug(...args) {
442
+ // Disabled?
443
+ if (!debug.enabled) {
444
+ return;
445
+ }
446
+
447
+ const self = debug;
448
+
449
+ // Set `diff` timestamp
450
+ const curr = Number(new Date());
451
+ const ms = curr - (prevTime || curr);
452
+ self.diff = ms;
453
+ self.prev = prevTime;
454
+ self.curr = curr;
455
+ prevTime = curr;
456
+
457
+ args[0] = createDebug.coerce(args[0]);
458
+
459
+ if (typeof args[0] !== 'string') {
460
+ // Anything else let's inspect with %O
461
+ args.unshift('%O');
462
+ }
463
+
464
+ // Apply any `formatters` transformations
465
+ let index = 0;
466
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
467
+ // If we encounter an escaped % then don't increase the array index
468
+ if (match === '%%') {
469
+ return '%';
470
+ }
471
+ index++;
472
+ const formatter = createDebug.formatters[format];
473
+ if (typeof formatter === 'function') {
474
+ const val = args[index];
475
+ match = formatter.call(self, val);
476
+
477
+ // Now we need to remove `args[index]` since it's inlined in the `format`
478
+ args.splice(index, 1);
479
+ index--;
480
+ }
481
+ return match;
482
+ });
483
+
484
+ // Apply env-specific formatting (colors, etc.)
485
+ createDebug.formatArgs.call(self, args);
486
+
487
+ const logFn = self.log || createDebug.log;
488
+ logFn.apply(self, args);
489
+ }
490
+
491
+ debug.namespace = namespace;
492
+ debug.useColors = createDebug.useColors();
493
+ debug.color = createDebug.selectColor(namespace);
494
+ debug.extend = extend;
495
+ debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
496
+
497
+ Object.defineProperty(debug, 'enabled', {
498
+ enumerable: true,
499
+ configurable: false,
500
+ get: () => {
501
+ if (enableOverride !== null) {
502
+ return enableOverride;
503
+ }
504
+ if (namespacesCache !== createDebug.namespaces) {
505
+ namespacesCache = createDebug.namespaces;
506
+ enabledCache = createDebug.enabled(namespace);
507
+ }
508
+
509
+ return enabledCache;
510
+ },
511
+ set: v => {
512
+ enableOverride = v;
513
+ }
514
+ });
515
+
516
+ // Env-specific initialization logic for debug instances
517
+ if (typeof createDebug.init === 'function') {
518
+ createDebug.init(debug);
519
+ }
520
+
521
+ return debug;
522
+ }
523
+
524
+ function extend(namespace, delimiter) {
525
+ const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
526
+ newDebug.log = this.log;
527
+ return newDebug;
528
+ }
529
+
530
+ /**
531
+ * Enables a debug mode by namespaces. This can include modes
532
+ * separated by a colon and wildcards.
533
+ *
534
+ * @param {String} namespaces
535
+ * @api public
536
+ */
537
+ function enable(namespaces) {
538
+ createDebug.save(namespaces);
539
+ createDebug.namespaces = namespaces;
540
+
541
+ createDebug.names = [];
542
+ createDebug.skips = [];
543
+
544
+ let i;
545
+ const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
546
+ const len = split.length;
547
+
548
+ for (i = 0; i < len; i++) {
549
+ if (!split[i]) {
550
+ // ignore empty strings
551
+ continue;
552
+ }
553
+
554
+ namespaces = split[i].replace(/\*/g, '.*?');
555
+
556
+ if (namespaces[0] === '-') {
557
+ createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
558
+ } else {
559
+ createDebug.names.push(new RegExp('^' + namespaces + '$'));
560
+ }
561
+ }
562
+ }
563
+
564
+ /**
565
+ * Disable debug output.
566
+ *
567
+ * @return {String} namespaces
568
+ * @api public
569
+ */
570
+ function disable() {
571
+ const namespaces = [
572
+ ...createDebug.names.map(toNamespace),
573
+ ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
574
+ ].join(',');
575
+ createDebug.enable('');
576
+ return namespaces;
577
+ }
578
+
579
+ /**
580
+ * Returns true if the given mode name is enabled, false otherwise.
581
+ *
582
+ * @param {String} name
583
+ * @return {Boolean}
584
+ * @api public
585
+ */
586
+ function enabled(name) {
587
+ if (name[name.length - 1] === '*') {
588
+ return true;
589
+ }
590
+
591
+ let i;
592
+ let len;
593
+
594
+ for (i = 0, len = createDebug.skips.length; i < len; i++) {
595
+ if (createDebug.skips[i].test(name)) {
596
+ return false;
597
+ }
598
+ }
599
+
600
+ for (i = 0, len = createDebug.names.length; i < len; i++) {
601
+ if (createDebug.names[i].test(name)) {
602
+ return true;
603
+ }
604
+ }
605
+
606
+ return false;
607
+ }
608
+
609
+ /**
610
+ * Convert regexp to namespace
611
+ *
612
+ * @param {RegExp} regxep
613
+ * @return {String} namespace
614
+ * @api private
615
+ */
616
+ function toNamespace(regexp) {
617
+ return regexp.toString()
618
+ .substring(2, regexp.toString().length - 2)
619
+ .replace(/\.\*\?$/, '*');
620
+ }
621
+
622
+ /**
623
+ * Coerce `val`.
624
+ *
625
+ * @param {Mixed} val
626
+ * @return {Mixed}
627
+ * @api private
628
+ */
629
+ function coerce(val) {
630
+ if (val instanceof Error) {
631
+ return val.stack || val.message;
632
+ }
633
+ return val;
634
+ }
635
+
636
+ /**
637
+ * XXX DO NOT USE. This is a temporary stub function.
638
+ * XXX It WILL be removed in the next major release.
639
+ */
640
+ function destroy() {
641
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
642
+ }
643
+
644
+ createDebug.enable(createDebug.load());
645
+
646
+ return createDebug;
647
+ }
648
+
649
+ var common = setup;
650
+
651
+ /* eslint-env browser */
652
+
653
+ (function (module, exports) {
654
+ /**
655
+ * This is the web browser implementation of `debug()`.
656
+ */
657
+
658
+ exports.formatArgs = formatArgs;
659
+ exports.save = save;
660
+ exports.load = load;
661
+ exports.useColors = useColors;
662
+ exports.storage = localstorage();
663
+ exports.destroy = (() => {
664
+ let warned = false;
665
+
666
+ return () => {
667
+ if (!warned) {
668
+ warned = true;
669
+ console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
670
+ }
671
+ };
672
+ })();
673
+
674
+ /**
675
+ * Colors.
676
+ */
677
+
678
+ exports.colors = [
679
+ '#0000CC',
680
+ '#0000FF',
681
+ '#0033CC',
682
+ '#0033FF',
683
+ '#0066CC',
684
+ '#0066FF',
685
+ '#0099CC',
686
+ '#0099FF',
687
+ '#00CC00',
688
+ '#00CC33',
689
+ '#00CC66',
690
+ '#00CC99',
691
+ '#00CCCC',
692
+ '#00CCFF',
693
+ '#3300CC',
694
+ '#3300FF',
695
+ '#3333CC',
696
+ '#3333FF',
697
+ '#3366CC',
698
+ '#3366FF',
699
+ '#3399CC',
700
+ '#3399FF',
701
+ '#33CC00',
702
+ '#33CC33',
703
+ '#33CC66',
704
+ '#33CC99',
705
+ '#33CCCC',
706
+ '#33CCFF',
707
+ '#6600CC',
708
+ '#6600FF',
709
+ '#6633CC',
710
+ '#6633FF',
711
+ '#66CC00',
712
+ '#66CC33',
713
+ '#9900CC',
714
+ '#9900FF',
715
+ '#9933CC',
716
+ '#9933FF',
717
+ '#99CC00',
718
+ '#99CC33',
719
+ '#CC0000',
720
+ '#CC0033',
721
+ '#CC0066',
722
+ '#CC0099',
723
+ '#CC00CC',
724
+ '#CC00FF',
725
+ '#CC3300',
726
+ '#CC3333',
727
+ '#CC3366',
728
+ '#CC3399',
729
+ '#CC33CC',
730
+ '#CC33FF',
731
+ '#CC6600',
732
+ '#CC6633',
733
+ '#CC9900',
734
+ '#CC9933',
735
+ '#CCCC00',
736
+ '#CCCC33',
737
+ '#FF0000',
738
+ '#FF0033',
739
+ '#FF0066',
740
+ '#FF0099',
741
+ '#FF00CC',
742
+ '#FF00FF',
743
+ '#FF3300',
744
+ '#FF3333',
745
+ '#FF3366',
746
+ '#FF3399',
747
+ '#FF33CC',
748
+ '#FF33FF',
749
+ '#FF6600',
750
+ '#FF6633',
751
+ '#FF9900',
752
+ '#FF9933',
753
+ '#FFCC00',
754
+ '#FFCC33'
755
+ ];
756
+
757
+ /**
758
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
759
+ * and the Firebug extension (any Firefox version) are known
760
+ * to support "%c" CSS customizations.
761
+ *
762
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
763
+ */
764
+
765
+ // eslint-disable-next-line complexity
766
+ function useColors() {
767
+ // NB: In an Electron preload script, document will be defined but not fully
768
+ // initialized. Since we know we're in Chrome, we'll just detect this case
769
+ // explicitly
770
+ if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
771
+ return true;
772
+ }
773
+
774
+ // Internet Explorer and Edge do not support colors.
775
+ if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
776
+ return false;
777
+ }
778
+
779
+ // Is webkit? http://stackoverflow.com/a/16459606/376773
780
+ // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
781
+ return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
782
+ // Is firebug? http://stackoverflow.com/a/398120/376773
783
+ (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
784
+ // Is firefox >= v31?
785
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
786
+ (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
787
+ // Double check webkit in userAgent just in case we are in a worker
788
+ (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
789
+ }
790
+
791
+ /**
792
+ * Colorize log arguments if enabled.
793
+ *
794
+ * @api public
795
+ */
796
+
797
+ function formatArgs(args) {
798
+ args[0] = (this.useColors ? '%c' : '') +
799
+ this.namespace +
800
+ (this.useColors ? ' %c' : ' ') +
801
+ args[0] +
802
+ (this.useColors ? '%c ' : ' ') +
803
+ '+' + module.exports.humanize(this.diff);
804
+
805
+ if (!this.useColors) {
806
+ return;
807
+ }
808
+
809
+ const c = 'color: ' + this.color;
810
+ args.splice(1, 0, c, 'color: inherit');
811
+
812
+ // The final "%c" is somewhat tricky, because there could be other
813
+ // arguments passed either before or after the %c, so we need to
814
+ // figure out the correct index to insert the CSS into
815
+ let index = 0;
816
+ let lastC = 0;
817
+ args[0].replace(/%[a-zA-Z%]/g, match => {
818
+ if (match === '%%') {
819
+ return;
820
+ }
821
+ index++;
822
+ if (match === '%c') {
823
+ // We only are interested in the *last* %c
824
+ // (the user may have provided their own)
825
+ lastC = index;
826
+ }
827
+ });
828
+
829
+ args.splice(lastC, 0, c);
830
+ }
831
+
832
+ /**
833
+ * Invokes `console.debug()` when available.
834
+ * No-op when `console.debug` is not a "function".
835
+ * If `console.debug` is not available, falls back
836
+ * to `console.log`.
837
+ *
838
+ * @api public
839
+ */
840
+ exports.log = console.debug || console.log || (() => {});
841
+
842
+ /**
843
+ * Save `namespaces`.
844
+ *
845
+ * @param {String} namespaces
846
+ * @api private
847
+ */
848
+ function save(namespaces) {
849
+ try {
850
+ if (namespaces) {
851
+ exports.storage.setItem('debug', namespaces);
852
+ } else {
853
+ exports.storage.removeItem('debug');
854
+ }
855
+ } catch (error) {
856
+ // Swallow
857
+ // XXX (@Qix-) should we be logging these?
858
+ }
859
+ }
860
+
861
+ /**
862
+ * Load `namespaces`.
863
+ *
864
+ * @return {String} returns the previously persisted debug modes
865
+ * @api private
866
+ */
867
+ function load() {
868
+ let r;
869
+ try {
870
+ r = exports.storage.getItem('debug');
871
+ } catch (error) {
872
+ // Swallow
873
+ // XXX (@Qix-) should we be logging these?
874
+ }
875
+
876
+ // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
877
+ if (!r && typeof process !== 'undefined' && 'env' in process) {
878
+ r = process.env.DEBUG;
879
+ }
880
+
881
+ return r;
882
+ }
883
+
884
+ /**
885
+ * Localstorage attempts to return the localstorage.
886
+ *
887
+ * This is necessary because safari throws
888
+ * when a user disables cookies/localstorage
889
+ * and you attempt to access it.
890
+ *
891
+ * @return {LocalStorage}
892
+ * @api private
893
+ */
894
+
895
+ function localstorage() {
896
+ try {
897
+ // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
898
+ // The Browser also has localStorage in the global context.
899
+ return localStorage;
900
+ } catch (error) {
901
+ // Swallow
902
+ // XXX (@Qix-) should we be logging these?
903
+ }
904
+ }
905
+
906
+ module.exports = common(exports);
907
+
908
+ const {formatters} = module.exports;
909
+
910
+ /**
911
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
912
+ */
913
+
914
+ formatters.j = function (v) {
915
+ try {
916
+ return JSON.stringify(v);
917
+ } catch (error) {
918
+ return '[UnexpectedJSONParseError]: ' + error.message;
919
+ }
920
+ };
921
+ }(browser, browser.exports));
922
+
923
+ var node = {exports: {}};
924
+
925
+ /**
926
+ * Module dependencies.
927
+ */
928
+
929
+ (function (module, exports) {
930
+ const tty = require$$0__default;
931
+ const util = require$$1__default;
932
+
933
+ /**
934
+ * This is the Node.js implementation of `debug()`.
935
+ */
936
+
937
+ exports.init = init;
938
+ exports.log = log;
939
+ exports.formatArgs = formatArgs;
940
+ exports.save = save;
941
+ exports.load = load;
942
+ exports.useColors = useColors;
943
+ exports.destroy = util.deprecate(
944
+ () => {},
945
+ 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'
946
+ );
947
+
948
+ /**
949
+ * Colors.
950
+ */
951
+
952
+ exports.colors = [6, 2, 3, 4, 5, 1];
953
+
954
+ try {
955
+ // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
956
+ // eslint-disable-next-line import/no-extraneous-dependencies
957
+ const supportsColor = require('supports-color');
958
+
959
+ if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
960
+ exports.colors = [
961
+ 20,
962
+ 21,
963
+ 26,
964
+ 27,
965
+ 32,
966
+ 33,
967
+ 38,
968
+ 39,
969
+ 40,
970
+ 41,
971
+ 42,
972
+ 43,
973
+ 44,
974
+ 45,
975
+ 56,
976
+ 57,
977
+ 62,
978
+ 63,
979
+ 68,
980
+ 69,
981
+ 74,
982
+ 75,
983
+ 76,
984
+ 77,
985
+ 78,
986
+ 79,
987
+ 80,
988
+ 81,
989
+ 92,
990
+ 93,
991
+ 98,
992
+ 99,
993
+ 112,
994
+ 113,
995
+ 128,
996
+ 129,
997
+ 134,
998
+ 135,
999
+ 148,
1000
+ 149,
1001
+ 160,
1002
+ 161,
1003
+ 162,
1004
+ 163,
1005
+ 164,
1006
+ 165,
1007
+ 166,
1008
+ 167,
1009
+ 168,
1010
+ 169,
1011
+ 170,
1012
+ 171,
1013
+ 172,
1014
+ 173,
1015
+ 178,
1016
+ 179,
1017
+ 184,
1018
+ 185,
1019
+ 196,
1020
+ 197,
1021
+ 198,
1022
+ 199,
1023
+ 200,
1024
+ 201,
1025
+ 202,
1026
+ 203,
1027
+ 204,
1028
+ 205,
1029
+ 206,
1030
+ 207,
1031
+ 208,
1032
+ 209,
1033
+ 214,
1034
+ 215,
1035
+ 220,
1036
+ 221
1037
+ ];
1038
+ }
1039
+ } catch (error) {
1040
+ // Swallow - we only care if `supports-color` is available; it doesn't have to be.
1041
+ }
1042
+
1043
+ /**
1044
+ * Build up the default `inspectOpts` object from the environment variables.
1045
+ *
1046
+ * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
1047
+ */
1048
+
1049
+ exports.inspectOpts = Object.keys(process.env).filter(key => {
1050
+ return /^debug_/i.test(key);
1051
+ }).reduce((obj, key) => {
1052
+ // Camel-case
1053
+ const prop = key
1054
+ .substring(6)
1055
+ .toLowerCase()
1056
+ .replace(/_([a-z])/g, (_, k) => {
1057
+ return k.toUpperCase();
1058
+ });
1059
+
1060
+ // Coerce string value into JS value
1061
+ let val = process.env[key];
1062
+ if (/^(yes|on|true|enabled)$/i.test(val)) {
1063
+ val = true;
1064
+ } else if (/^(no|off|false|disabled)$/i.test(val)) {
1065
+ val = false;
1066
+ } else if (val === 'null') {
1067
+ val = null;
1068
+ } else {
1069
+ val = Number(val);
1070
+ }
1071
+
1072
+ obj[prop] = val;
1073
+ return obj;
1074
+ }, {});
1075
+
1076
+ /**
1077
+ * Is stdout a TTY? Colored output is enabled when `true`.
1078
+ */
1079
+
1080
+ function useColors() {
1081
+ return 'colors' in exports.inspectOpts ?
1082
+ Boolean(exports.inspectOpts.colors) :
1083
+ tty.isatty(process.stderr.fd);
1084
+ }
1085
+
1086
+ /**
1087
+ * Adds ANSI color escape codes if enabled.
1088
+ *
1089
+ * @api public
1090
+ */
1091
+
1092
+ function formatArgs(args) {
1093
+ const {namespace: name, useColors} = this;
1094
+
1095
+ if (useColors) {
1096
+ const c = this.color;
1097
+ const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
1098
+ const prefix = ` ${colorCode};1m${name} \u001B[0m`;
1099
+
1100
+ args[0] = prefix + args[0].split('\n').join('\n' + prefix);
1101
+ args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
1102
+ } else {
1103
+ args[0] = getDate() + name + ' ' + args[0];
1104
+ }
1105
+ }
1106
+
1107
+ function getDate() {
1108
+ if (exports.inspectOpts.hideDate) {
1109
+ return '';
1110
+ }
1111
+ return new Date().toISOString() + ' ';
1112
+ }
1113
+
1114
+ /**
1115
+ * Invokes `util.format()` with the specified arguments and writes to stderr.
1116
+ */
1117
+
1118
+ function log(...args) {
1119
+ return process.stderr.write(util.format(...args) + '\n');
1120
+ }
1121
+
1122
+ /**
1123
+ * Save `namespaces`.
1124
+ *
1125
+ * @param {String} namespaces
1126
+ * @api private
1127
+ */
1128
+ function save(namespaces) {
1129
+ if (namespaces) {
1130
+ process.env.DEBUG = namespaces;
1131
+ } else {
1132
+ // If you set a process.env field to null or undefined, it gets cast to the
1133
+ // string 'null' or 'undefined'. Just delete instead.
1134
+ delete process.env.DEBUG;
1135
+ }
1136
+ }
1137
+
1138
+ /**
1139
+ * Load `namespaces`.
1140
+ *
1141
+ * @return {String} returns the previously persisted debug modes
1142
+ * @api private
1143
+ */
1144
+
1145
+ function load() {
1146
+ return process.env.DEBUG;
1147
+ }
1148
+
1149
+ /**
1150
+ * Init logic for `debug` instances.
1151
+ *
1152
+ * Create a new `inspectOpts` object in case `useColors` is set
1153
+ * differently for a particular `debug` instance.
1154
+ */
1155
+
1156
+ function init(debug) {
1157
+ debug.inspectOpts = {};
1158
+
1159
+ const keys = Object.keys(exports.inspectOpts);
1160
+ for (let i = 0; i < keys.length; i++) {
1161
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
1162
+ }
1163
+ }
1164
+
1165
+ module.exports = common(exports);
1166
+
1167
+ const {formatters} = module.exports;
1168
+
1169
+ /**
1170
+ * Map %o to `util.inspect()`, all on a single line.
1171
+ */
1172
+
1173
+ formatters.o = function (v) {
1174
+ this.inspectOpts.colors = this.useColors;
1175
+ return util.inspect(v, this.inspectOpts)
1176
+ .split('\n')
1177
+ .map(str => str.trim())
1178
+ .join(' ');
1179
+ };
1180
+
1181
+ /**
1182
+ * Map %O to `util.inspect()`, allowing multiple lines if needed.
1183
+ */
1184
+
1185
+ formatters.O = function (v) {
1186
+ this.inspectOpts.colors = this.useColors;
1187
+ return util.inspect(v, this.inspectOpts);
1188
+ };
1189
+ }(node, node.exports));
1190
+
1191
+ /**
1192
+ * Detect Electron renderer / nwjs process, which is node, but we should
1193
+ * treat as a browser.
1194
+ */
1195
+
1196
+ if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
1197
+ src.exports = browser.exports;
1198
+ } else {
1199
+ src.exports = node.exports;
1200
+ }
1201
+
1202
+ var debug = src.exports;
1203
+
1204
+ function slash(p) {
1205
+ return p.replace(/\\/g, '/');
1206
+ }
1207
+ // TODO: use import()
1208
+ const _require = module$1.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node-cjs/publicUtils.cjs', document.baseURI).href)));
1209
+ try {
1210
+ Boolean(_require('pnpapi'));
1211
+ }
1212
+ catch { }
1213
+ // set in bin/vite.js
1214
+ const filter = process.env.VITE_DEBUG_FILTER;
1215
+ const DEBUG = process.env.DEBUG;
1216
+ function createDebugger(namespace, options = {}) {
1217
+ const log = debug(namespace);
1218
+ const { onlyWhenFocused } = options;
1219
+ const focus = typeof onlyWhenFocused === 'string' ? onlyWhenFocused : namespace;
1220
+ return (msg, ...args) => {
1221
+ if (filter && !msg.includes(filter)) {
1222
+ return;
1223
+ }
1224
+ if (onlyWhenFocused && !DEBUG?.includes(focus)) {
1225
+ return;
1226
+ }
1227
+ log(msg, ...args);
1228
+ };
1229
+ }
1230
+ function testCaseInsensitiveFS() {
1231
+ if (!CLIENT_ENTRY.endsWith('client.mjs')) {
1232
+ throw new Error(`cannot test case insensitive FS, CLIENT_ENTRY const doesn't contain client.mjs`);
1233
+ }
1234
+ if (!fs__default.existsSync(CLIENT_ENTRY)) {
1235
+ throw new Error('cannot test case insensitive FS, CLIENT_ENTRY does not point to an existing file: ' +
1236
+ CLIENT_ENTRY);
1237
+ }
1238
+ return fs__default.existsSync(CLIENT_ENTRY.replace('client.mjs', 'cLiEnT.mjs'));
1239
+ }
1240
+ testCaseInsensitiveFS();
1241
+ const isWindows = os__default.platform() === 'win32';
1242
+ function normalizePath(id) {
1243
+ return path__default.posix.normalize(isWindows ? slash(id) : id);
1244
+ }
1245
+ function isObject(value) {
1246
+ return Object.prototype.toString.call(value) === '[object Object]';
1247
+ }
1248
+ function lookupFile(dir, formats, options) {
1249
+ for (const format of formats) {
1250
+ const fullPath = path__default.join(dir, format);
1251
+ if (fs__default.existsSync(fullPath) && fs__default.statSync(fullPath).isFile()) {
1252
+ return options?.pathOnly ? fullPath : fs__default.readFileSync(fullPath, 'utf-8');
1253
+ }
1254
+ }
1255
+ const parentDir = path__default.dirname(dir);
1256
+ if (parentDir !== dir &&
1257
+ (!options?.rootDir || parentDir.startsWith(options?.rootDir))) {
1258
+ return lookupFile(parentDir, formats, options);
1259
+ }
1260
+ }
1261
+ /**
1262
+ * Use fs.statSync(filename) instead of fs.existsSync(filename)
1263
+ * #2051 if we don't have read permission on a directory, existsSync() still
1264
+ * works and will result in massively slow subsequent checks (which are
1265
+ * unnecessary in the first place)
1266
+ */
1267
+ function isFileReadable(filename) {
1268
+ try {
1269
+ const stat = fs__default.statSync(filename, { throwIfNoEntry: false });
1270
+ return !!stat;
1271
+ }
1272
+ catch {
1273
+ return false;
1274
+ }
1275
+ }
1276
+ isWindows
1277
+ ? require$$1.promisify(gracefulRemoveDir)
1278
+ : function removeDirSync(dir) {
1279
+ fs__default.rmSync(dir, { recursive: true, force: true });
1280
+ };
1281
+ isWindows ? require$$1.promisify(gracefulRename) : fs__default.renameSync;
1282
+ function arraify(target) {
1283
+ return Array.isArray(target) ? target : [target];
1284
+ }
1285
+ // @ts-expect-error
1286
+ const usingDynamicImport = typeof jest === 'undefined';
1287
+ /**
1288
+ * Dynamically import files. It will make sure it's not being compiled away by TS/Rollup.
1289
+ *
1290
+ * As a temporary workaround for Jest's lack of stable ESM support, we fallback to require
1291
+ * if we're in a Jest environment.
1292
+ * See https://github.com/vitejs/vite/pull/5197#issuecomment-938054077
1293
+ *
1294
+ * @param file File path to import.
1295
+ */
1296
+ usingDynamicImport
1297
+ ? new Function('file', 'return import(file)')
1298
+ : _require;
1299
+ // Based on node-graceful-fs
1300
+ // The ISC License
1301
+ // Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors
1302
+ // https://github.com/isaacs/node-graceful-fs/blob/main/LICENSE
1303
+ // On Windows, A/V software can lock the directory, causing this
1304
+ // to fail with an EACCES or EPERM if the directory contains newly
1305
+ // created files. The original tried for up to 60 seconds, we only
1306
+ // wait for 5 seconds, as a longer time would be seen as an error
1307
+ const GRACEFUL_RENAME_TIMEOUT = 5000;
1308
+ function gracefulRename(from, to, cb) {
1309
+ const start = Date.now();
1310
+ let backoff = 0;
1311
+ fs__default.rename(from, to, function CB(er) {
1312
+ if (er &&
1313
+ (er.code === 'EACCES' || er.code === 'EPERM') &&
1314
+ Date.now() - start < GRACEFUL_RENAME_TIMEOUT) {
1315
+ setTimeout(function () {
1316
+ fs__default.stat(to, function (stater, st) {
1317
+ if (stater && stater.code === 'ENOENT')
1318
+ fs__default.rename(from, to, CB);
1319
+ else
1320
+ CB(er);
1321
+ });
1322
+ }, backoff);
1323
+ if (backoff < 100)
1324
+ backoff += 10;
1325
+ return;
1326
+ }
1327
+ if (cb)
1328
+ cb(er);
1329
+ });
1330
+ }
1331
+ const GRACEFUL_REMOVE_DIR_TIMEOUT = 5000;
1332
+ function gracefulRemoveDir(dir, cb) {
1333
+ const start = Date.now();
1334
+ let backoff = 0;
1335
+ fs__default.rm(dir, { recursive: true }, function CB(er) {
1336
+ if (er) {
1337
+ if ((er.code === 'ENOTEMPTY' ||
1338
+ er.code === 'EACCES' ||
1339
+ er.code === 'EPERM') &&
1340
+ Date.now() - start < GRACEFUL_REMOVE_DIR_TIMEOUT) {
1341
+ setTimeout(function () {
1342
+ fs__default.rm(dir, { recursive: true }, CB);
1343
+ }, backoff);
1344
+ if (backoff < 100)
1345
+ backoff += 10;
1346
+ return;
1347
+ }
1348
+ if (er.code === 'ENOENT') {
1349
+ er = null;
1350
+ }
1351
+ }
1352
+ if (cb)
1353
+ cb(er);
1354
+ });
1355
+ }
1356
+ function mergeConfigRecursively(defaults, overrides, rootPath) {
1357
+ const merged = { ...defaults };
1358
+ for (const key in overrides) {
1359
+ const value = overrides[key];
1360
+ if (value == null) {
1361
+ continue;
1362
+ }
1363
+ const existing = merged[key];
1364
+ if (existing == null) {
1365
+ merged[key] = value;
1366
+ continue;
1367
+ }
1368
+ // fields that require special handling
1369
+ if (key === 'alias' && (rootPath === 'resolve' || rootPath === '')) {
1370
+ merged[key] = mergeAlias(existing, value);
1371
+ continue;
1372
+ }
1373
+ else if (key === 'assetsInclude' && rootPath === '') {
1374
+ merged[key] = [].concat(existing, value);
1375
+ continue;
1376
+ }
1377
+ else if (key === 'noExternal' &&
1378
+ rootPath === 'ssr' &&
1379
+ (existing === true || value === true)) {
1380
+ merged[key] = true;
1381
+ continue;
1382
+ }
1383
+ if (Array.isArray(existing) || Array.isArray(value)) {
1384
+ merged[key] = [...arraify(existing ?? []), ...arraify(value ?? [])];
1385
+ continue;
1386
+ }
1387
+ if (isObject(existing) && isObject(value)) {
1388
+ merged[key] = mergeConfigRecursively(existing, value, rootPath ? `${rootPath}.${key}` : key);
1389
+ continue;
1390
+ }
1391
+ merged[key] = value;
1392
+ }
1393
+ return merged;
1394
+ }
1395
+ function mergeConfig(defaults, overrides, isRoot = true) {
1396
+ return mergeConfigRecursively(defaults, overrides, isRoot ? '' : '.');
1397
+ }
1398
+ function mergeAlias(a, b) {
1399
+ if (!a)
1400
+ return b;
1401
+ if (!b)
1402
+ return a;
1403
+ if (isObject(a) && isObject(b)) {
1404
+ return { ...a, ...b };
1405
+ }
1406
+ // the order is flipped because the alias is resolved from top-down,
1407
+ // where the later should have higher priority
1408
+ return [...normalizeAlias(b), ...normalizeAlias(a)];
1409
+ }
1410
+ function normalizeAlias(o = []) {
1411
+ return Array.isArray(o)
1412
+ ? o.map(normalizeSingleAlias)
1413
+ : Object.keys(o).map((find) => normalizeSingleAlias({
1414
+ find,
1415
+ replacement: o[find]
1416
+ }));
1417
+ }
1418
+ // https://github.com/vitejs/vite/issues/1363
1419
+ // work around https://github.com/rollup/plugins/issues/759
1420
+ function normalizeSingleAlias({ find, replacement, customResolver }) {
1421
+ if (typeof find === 'string' &&
1422
+ find.endsWith('/') &&
1423
+ replacement.endsWith('/')) {
1424
+ find = find.slice(0, find.length - 1);
1425
+ replacement = replacement.slice(0, replacement.length - 1);
1426
+ }
1427
+ const alias = {
1428
+ find,
1429
+ replacement
1430
+ };
1431
+ if (customResolver) {
1432
+ alias.customResolver = customResolver;
1433
+ }
1434
+ return alias;
1435
+ }
1436
+
1437
+ /*!
1438
+ * etag
1439
+ * Copyright(c) 2014-2016 Douglas Christopher Wilson
1440
+ * MIT Licensed
1441
+ */
1442
+
1443
+ /**
1444
+ * Module exports.
1445
+ * @public
1446
+ */
1447
+
1448
+ var etag_1 = etag;
1449
+
1450
+ /**
1451
+ * Module dependencies.
1452
+ * @private
1453
+ */
1454
+
1455
+ var crypto = require$$0__default$1;
1456
+ var Stats = fs__default.Stats;
1457
+
1458
+ /**
1459
+ * Module variables.
1460
+ * @private
1461
+ */
1462
+
1463
+ var toString = Object.prototype.toString;
1464
+
1465
+ /**
1466
+ * Generate an entity tag.
1467
+ *
1468
+ * @param {Buffer|string} entity
1469
+ * @return {string}
1470
+ * @private
1471
+ */
1472
+
1473
+ function entitytag (entity) {
1474
+ if (entity.length === 0) {
1475
+ // fast-path empty
1476
+ return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'
1477
+ }
1478
+
1479
+ // compute hash of entity
1480
+ var hash = crypto
1481
+ .createHash('sha1')
1482
+ .update(entity, 'utf8')
1483
+ .digest('base64')
1484
+ .substring(0, 27);
1485
+
1486
+ // compute length of entity
1487
+ var len = typeof entity === 'string'
1488
+ ? Buffer.byteLength(entity, 'utf8')
1489
+ : entity.length;
1490
+
1491
+ return '"' + len.toString(16) + '-' + hash + '"'
1492
+ }
1493
+
1494
+ /**
1495
+ * Create a simple ETag.
1496
+ *
1497
+ * @param {string|Buffer|Stats} entity
1498
+ * @param {object} [options]
1499
+ * @param {boolean} [options.weak]
1500
+ * @return {String}
1501
+ * @public
1502
+ */
1503
+
1504
+ function etag (entity, options) {
1505
+ if (entity == null) {
1506
+ throw new TypeError('argument entity is required')
1507
+ }
1508
+
1509
+ // support fs.Stats object
1510
+ var isStats = isstats(entity);
1511
+ var weak = options && typeof options.weak === 'boolean'
1512
+ ? options.weak
1513
+ : isStats;
1514
+
1515
+ // validate argument
1516
+ if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {
1517
+ throw new TypeError('argument entity must be string, Buffer, or fs.Stats')
1518
+ }
1519
+
1520
+ // generate entity tag
1521
+ var tag = isStats
1522
+ ? stattag(entity)
1523
+ : entitytag(entity);
1524
+
1525
+ return weak
1526
+ ? 'W/' + tag
1527
+ : tag
1528
+ }
1529
+
1530
+ /**
1531
+ * Determine if object is a Stats object.
1532
+ *
1533
+ * @param {object} obj
1534
+ * @return {boolean}
1535
+ * @api private
1536
+ */
1537
+
1538
+ function isstats (obj) {
1539
+ // genuine fs.Stats
1540
+ if (typeof Stats === 'function' && obj instanceof Stats) {
1541
+ return true
1542
+ }
1543
+
1544
+ // quack quack
1545
+ return obj && typeof obj === 'object' &&
1546
+ 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' &&
1547
+ 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' &&
1548
+ 'ino' in obj && typeof obj.ino === 'number' &&
1549
+ 'size' in obj && typeof obj.size === 'number'
1550
+ }
1551
+
1552
+ /**
1553
+ * Generate a tag for a stat.
1554
+ *
1555
+ * @param {object} stat
1556
+ * @return {string}
1557
+ * @private
1558
+ */
1559
+
1560
+ function stattag (stat) {
1561
+ var mtime = stat.mtime.getTime().toString(16);
1562
+ var size = stat.size.toString(16);
1563
+
1564
+ return '"' + size + '-' + mtime + '"'
1565
+ }
1566
+
1567
+ const isDebug = !!process.env.DEBUG;
1568
+ createDebugger('vite:sourcemap', {
1569
+ onlyWhenFocused: true
1570
+ });
1571
+ function genSourceMapUrl(map) {
1572
+ if (typeof map !== 'string') {
1573
+ map = JSON.stringify(map);
1574
+ }
1575
+ return `data:application/json;base64,${Buffer.from(map).toString('base64')}`;
1576
+ }
1577
+ function getCodeWithSourcemap(type, code, map) {
1578
+ if (isDebug) {
1579
+ code += `\n/*${JSON.stringify(map, null, 2).replace(/\*\//g, '*\\/')}*/\n`;
1580
+ }
1581
+ if (type === 'js') {
1582
+ code += `\n//# sourceMappingURL=${genSourceMapUrl(map ?? undefined)}`;
1583
+ }
1584
+ else if (type === 'css') {
1585
+ code += `\n/*# sourceMappingURL=${genSourceMapUrl(map ?? undefined)} */`;
1586
+ }
1587
+ return code;
1588
+ }
1589
+
1590
+ const alias = {
1591
+ js: 'application/javascript',
1592
+ css: 'text/css',
1593
+ html: 'text/html',
1594
+ json: 'application/json'
1595
+ };
1596
+ function send(req, res, content, type, options) {
1597
+ const { etag = etag_1(content, { weak: true }), cacheControl = 'no-cache', headers, map } = options;
1598
+ if (res.writableEnded) {
1599
+ return;
1600
+ }
1601
+ if (req.headers['if-none-match'] === etag) {
1602
+ res.statusCode = 304;
1603
+ res.end();
1604
+ return;
1605
+ }
1606
+ res.setHeader('Content-Type', alias[type] || type);
1607
+ res.setHeader('Cache-Control', cacheControl);
1608
+ res.setHeader('Etag', etag);
1609
+ if (headers) {
1610
+ for (const name in headers) {
1611
+ res.setHeader(name, headers[name]);
1612
+ }
1613
+ }
1614
+ // inject source map reference
1615
+ if (map && map.mappings) {
1616
+ if (type === 'js' || type === 'css') {
1617
+ content = getCodeWithSourcemap(type, content.toString(), map);
1618
+ }
1619
+ }
1620
+ res.statusCode = 200;
1621
+ res.end(content);
1622
+ return;
1623
+ }
1624
+
1625
+ /* eslint no-console: 0 */
1626
+ const LogLevels = {
1627
+ silent: 0,
1628
+ error: 1,
1629
+ warn: 2,
1630
+ info: 3
1631
+ };
1632
+ let lastType;
1633
+ let lastMsg;
1634
+ let sameCount = 0;
1635
+ function clearScreen() {
1636
+ const repeatCount = process.stdout.rows - 2;
1637
+ const blank = repeatCount > 0 ? '\n'.repeat(repeatCount) : '';
1638
+ console.log(blank);
1639
+ readline__default.cursorTo(process.stdout, 0, 0);
1640
+ readline__default.clearScreenDown(process.stdout);
1641
+ }
1642
+ function createLogger(level = 'info', options = {}) {
1643
+ if (options.customLogger) {
1644
+ return options.customLogger;
1645
+ }
1646
+ const loggedErrors = new WeakSet();
1647
+ const { prefix = '[vite]', allowClearScreen = true } = options;
1648
+ const thresh = LogLevels[level];
1649
+ const canClearScreen = allowClearScreen && process.stdout.isTTY && !process.env.CI;
1650
+ const clear = canClearScreen ? clearScreen : () => { };
1651
+ function output(type, msg, options = {}) {
1652
+ if (thresh >= LogLevels[type]) {
1653
+ const method = type === 'info' ? 'log' : type;
1654
+ const format = () => {
1655
+ if (options.timestamp) {
1656
+ const tag = type === 'info'
1657
+ ? colors.cyan(colors.bold(prefix))
1658
+ : type === 'warn'
1659
+ ? colors.yellow(colors.bold(prefix))
1660
+ : colors.red(colors.bold(prefix));
1661
+ return `${colors.dim(new Date().toLocaleTimeString())} ${tag} ${msg}`;
1662
+ }
1663
+ else {
1664
+ return msg;
1665
+ }
1666
+ };
1667
+ if (options.error) {
1668
+ loggedErrors.add(options.error);
1669
+ }
1670
+ if (canClearScreen) {
1671
+ if (type === lastType && msg === lastMsg) {
1672
+ sameCount++;
1673
+ clear();
1674
+ console[method](format(), colors.yellow(`(x${sameCount + 1})`));
1675
+ }
1676
+ else {
1677
+ sameCount = 0;
1678
+ lastMsg = msg;
1679
+ lastType = type;
1680
+ if (options.clear) {
1681
+ clear();
1682
+ }
1683
+ console[method](format());
1684
+ }
1685
+ }
1686
+ else {
1687
+ console[method](format());
1688
+ }
1689
+ }
1690
+ }
1691
+ const warnedMessages = new Set();
1692
+ const logger = {
1693
+ hasWarned: false,
1694
+ info(msg, opts) {
1695
+ output('info', msg, opts);
1696
+ },
1697
+ warn(msg, opts) {
1698
+ logger.hasWarned = true;
1699
+ output('warn', msg, opts);
1700
+ },
1701
+ warnOnce(msg, opts) {
1702
+ if (warnedMessages.has(msg))
1703
+ return;
1704
+ logger.hasWarned = true;
1705
+ output('warn', msg, opts);
1706
+ warnedMessages.add(msg);
1707
+ },
1708
+ error(msg, opts) {
1709
+ logger.hasWarned = true;
1710
+ output('error', msg, opts);
1711
+ },
1712
+ clearScreen(type) {
1713
+ if (thresh >= LogLevels[type]) {
1714
+ clear();
1715
+ }
1716
+ },
1717
+ hasErrorLogged(error) {
1718
+ return loggedErrors.has(error);
1719
+ }
1720
+ };
1721
+ return logger;
1722
+ }
1723
+
1724
+ // https://github.com/vitejs/vite/issues/2820#issuecomment-812495079
1725
+ const ROOT_FILES = [
1726
+ // '.git',
1727
+ // https://pnpm.js.org/workspaces/
1728
+ 'pnpm-workspace.yaml',
1729
+ // https://rushjs.io/pages/advanced/config_files/
1730
+ // 'rush.json',
1731
+ // https://nx.dev/latest/react/getting-started/nx-setup
1732
+ // 'workspace.json',
1733
+ // 'nx.json',
1734
+ // https://github.com/lerna/lerna#lernajson
1735
+ 'lerna.json'
1736
+ ];
1737
+ // npm: https://docs.npmjs.com/cli/v7/using-npm/workspaces#installing-workspaces
1738
+ // yarn: https://classic.yarnpkg.com/en/docs/workspaces/#toc-how-to-use-it
1739
+ function hasWorkspacePackageJSON(root) {
1740
+ const path = path$1.join(root, 'package.json');
1741
+ if (!isFileReadable(path)) {
1742
+ return false;
1743
+ }
1744
+ const content = JSON.parse(fs__default.readFileSync(path, 'utf-8')) || {};
1745
+ return !!content.workspaces;
1746
+ }
1747
+ function hasRootFile(root) {
1748
+ return ROOT_FILES.some((file) => fs__default.existsSync(path$1.join(root, file)));
1749
+ }
1750
+ function hasPackageJSON(root) {
1751
+ const path = path$1.join(root, 'package.json');
1752
+ return fs__default.existsSync(path);
1753
+ }
1754
+ /**
1755
+ * Search up for the nearest `package.json`
1756
+ */
1757
+ function searchForPackageRoot(current, root = current) {
1758
+ if (hasPackageJSON(current))
1759
+ return current;
1760
+ const dir = path$1.dirname(current);
1761
+ // reach the fs root
1762
+ if (!dir || dir === current)
1763
+ return root;
1764
+ return searchForPackageRoot(dir, root);
1765
+ }
1766
+ /**
1767
+ * Search up for the nearest workspace root
1768
+ */
1769
+ function searchForWorkspaceRoot(current, root = searchForPackageRoot(current)) {
1770
+ if (hasRootFile(current))
1771
+ return current;
1772
+ if (hasWorkspacePackageJSON(current))
1773
+ return current;
1774
+ const dir = path$1.dirname(current);
1775
+ // reach the fs root
1776
+ if (!dir || dir === current)
1777
+ return root;
1778
+ return searchForWorkspaceRoot(dir, root);
1779
+ }
1780
+
1781
+ var main$1 = {exports: {}};
1782
+
1783
+ const fs = fs__default;
1784
+ const path = path__default;
1785
+ const os = os__default;
1786
+
1787
+ function log (message) {
1788
+ console.log(`[dotenv][DEBUG] ${message}`);
1789
+ }
1790
+
1791
+ const NEWLINE = '\n';
1792
+ const RE_INI_KEY_VAL = /^\s*([\w.-]+)\s*=\s*("[^"]*"|'[^']*'|.*?)(\s+#.*)?$/;
1793
+ const RE_NEWLINES = /\\n/g;
1794
+ const NEWLINES_MATCH = /\r\n|\n|\r/;
1795
+
1796
+ // Parses src into an Object
1797
+ function parse (src, options) {
1798
+ const debug = Boolean(options && options.debug);
1799
+ const multiline = Boolean(options && options.multiline);
1800
+ const obj = {};
1801
+
1802
+ // convert Buffers before splitting into lines and processing
1803
+ const lines = src.toString().split(NEWLINES_MATCH);
1804
+
1805
+ for (let idx = 0; idx < lines.length; idx++) {
1806
+ let line = lines[idx];
1807
+
1808
+ // matching "KEY' and 'VAL' in 'KEY=VAL'
1809
+ const keyValueArr = line.match(RE_INI_KEY_VAL);
1810
+ // matched?
1811
+ if (keyValueArr != null) {
1812
+ const key = keyValueArr[1];
1813
+ // default undefined or missing values to empty string
1814
+ let val = (keyValueArr[2] || '');
1815
+ let end = val.length - 1;
1816
+ const isDoubleQuoted = val[0] === '"' && val[end] === '"';
1817
+ const isSingleQuoted = val[0] === "'" && val[end] === "'";
1818
+
1819
+ const isMultilineDoubleQuoted = val[0] === '"' && val[end] !== '"';
1820
+ const isMultilineSingleQuoted = val[0] === "'" && val[end] !== "'";
1821
+
1822
+ // if parsing line breaks and the value starts with a quote
1823
+ if (multiline && (isMultilineDoubleQuoted || isMultilineSingleQuoted)) {
1824
+ const quoteChar = isMultilineDoubleQuoted ? '"' : "'";
1825
+
1826
+ val = val.substring(1);
1827
+
1828
+ while (idx++ < lines.length - 1) {
1829
+ line = lines[idx];
1830
+ end = line.length - 1;
1831
+ if (line[end] === quoteChar) {
1832
+ val += NEWLINE + line.substring(0, end);
1833
+ break
1834
+ }
1835
+ val += NEWLINE + line;
1836
+ }
1837
+ // if single or double quoted, remove quotes
1838
+ } else if (isSingleQuoted || isDoubleQuoted) {
1839
+ val = val.substring(1, end);
1840
+
1841
+ // if double quoted, expand newlines
1842
+ if (isDoubleQuoted) {
1843
+ val = val.replace(RE_NEWLINES, NEWLINE);
1844
+ }
1845
+ } else {
1846
+ // remove surrounding whitespace
1847
+ val = val.trim();
1848
+ }
1849
+
1850
+ obj[key] = val;
1851
+ } else if (debug) {
1852
+ const trimmedLine = line.trim();
1853
+
1854
+ // ignore empty and commented lines
1855
+ if (trimmedLine.length && trimmedLine[0] !== '#') {
1856
+ log(`Failed to match key and value when parsing line ${idx + 1}: ${line}`);
1857
+ }
1858
+ }
1859
+ }
1860
+
1861
+ return obj
1862
+ }
1863
+
1864
+ function resolveHome (envPath) {
1865
+ return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath
1866
+ }
1867
+
1868
+ // Populates process.env from .env file
1869
+ function config (options) {
1870
+ let dotenvPath = path.resolve(process.cwd(), '.env');
1871
+ let encoding = 'utf8';
1872
+ const debug = Boolean(options && options.debug);
1873
+ const override = Boolean(options && options.override);
1874
+ const multiline = Boolean(options && options.multiline);
1875
+
1876
+ if (options) {
1877
+ if (options.path != null) {
1878
+ dotenvPath = resolveHome(options.path);
1879
+ }
1880
+ if (options.encoding != null) {
1881
+ encoding = options.encoding;
1882
+ }
1883
+ }
1884
+
1885
+ try {
1886
+ // specifying an encoding returns a string instead of a buffer
1887
+ const parsed = DotenvModule.parse(fs.readFileSync(dotenvPath, { encoding }), { debug, multiline });
1888
+
1889
+ Object.keys(parsed).forEach(function (key) {
1890
+ if (!Object.prototype.hasOwnProperty.call(process.env, key)) {
1891
+ process.env[key] = parsed[key];
1892
+ } else {
1893
+ if (override === true) {
1894
+ process.env[key] = parsed[key];
1895
+ }
1896
+
1897
+ if (debug) {
1898
+ if (override === true) {
1899
+ log(`"${key}" is already defined in \`process.env\` and WAS overwritten`);
1900
+ } else {
1901
+ log(`"${key}" is already defined in \`process.env\` and was NOT overwritten`);
1902
+ }
1903
+ }
1904
+ }
1905
+ });
1906
+
1907
+ return { parsed }
1908
+ } catch (e) {
1909
+ if (debug) {
1910
+ log(`Failed to load ${dotenvPath} ${e.message}`);
1911
+ }
1912
+
1913
+ return { error: e }
1914
+ }
1915
+ }
1916
+
1917
+ const DotenvModule = {
1918
+ config,
1919
+ parse
1920
+ };
1921
+
1922
+ main$1.exports.config = DotenvModule.config;
1923
+ main$1.exports.parse = DotenvModule.parse;
1924
+ main$1.exports = DotenvModule;
1925
+
1926
+ var dotenv = main$1.exports;
1927
+
1928
+ var dotenvExpand = function (config) {
1929
+ // if ignoring process.env, use a blank object
1930
+ var environment = config.ignoreProcessEnv ? {} : process.env;
1931
+
1932
+ var interpolate = function (envValue) {
1933
+ var matches = envValue.match(/(.?\${?(?:[a-zA-Z0-9_]+)?}?)/g) || [];
1934
+
1935
+ return matches.reduce(function (newEnv, match) {
1936
+ var parts = /(.?)\${?([a-zA-Z0-9_]+)?}?/g.exec(match);
1937
+ var prefix = parts[1];
1938
+
1939
+ var value, replacePart;
1940
+
1941
+ if (prefix === '\\') {
1942
+ replacePart = parts[0];
1943
+ value = replacePart.replace('\\$', '$');
1944
+ } else {
1945
+ var key = parts[2];
1946
+ replacePart = parts[0].substring(prefix.length);
1947
+ // process.env value 'wins' over .env file's value
1948
+ value = environment.hasOwnProperty(key) ? environment[key] : (config.parsed[key] || '');
1949
+
1950
+ // Resolve recursive interpolations
1951
+ value = interpolate(value);
1952
+ }
1953
+
1954
+ return newEnv.replace(replacePart, value)
1955
+ }, envValue)
1956
+ };
1957
+
1958
+ for (var configKey in config.parsed) {
1959
+ var value = environment.hasOwnProperty(configKey) ? environment[configKey] : config.parsed[configKey];
1960
+
1961
+ config.parsed[configKey] = interpolate(value);
1962
+ }
1963
+
1964
+ for (var processKey in config.parsed) {
1965
+ environment[processKey] = config.parsed[processKey];
1966
+ }
1967
+
1968
+ return config
1969
+ };
1970
+
1971
+ var main = dotenvExpand;
1972
+
1973
+ function loadEnv(mode, envDir, prefixes = 'VITE_') {
1974
+ if (mode === 'local') {
1975
+ throw new Error(`"local" cannot be used as a mode name because it conflicts with ` +
1976
+ `the .local postfix for .env files.`);
1977
+ }
1978
+ prefixes = arraify(prefixes);
1979
+ const env = {};
1980
+ const envFiles = [
1981
+ /** mode local file */ `.env.${mode}.local`,
1982
+ /** mode file */ `.env.${mode}`,
1983
+ /** local file */ `.env.local`,
1984
+ /** default file */ `.env`
1985
+ ];
1986
+ // check if there are actual env variables starting with VITE_*
1987
+ // these are typically provided inline and should be prioritized
1988
+ for (const key in process.env) {
1989
+ if (prefixes.some((prefix) => key.startsWith(prefix)) &&
1990
+ env[key] === undefined) {
1991
+ env[key] = process.env[key];
1992
+ }
1993
+ }
1994
+ for (const file of envFiles) {
1995
+ const path = lookupFile(envDir, [file], { pathOnly: true, rootDir: envDir });
1996
+ if (path) {
1997
+ const parsed = dotenv.parse(fs__default.readFileSync(path), {
1998
+ debug: process.env.DEBUG?.includes('vite:dotenv') || undefined
1999
+ });
2000
+ // let environment variables use each other
2001
+ main({
2002
+ parsed,
2003
+ // prevent process.env mutation
2004
+ ignoreProcessEnv: true
2005
+ });
2006
+ // only keys that start with prefix are exposed to client
2007
+ for (const [key, value] of Object.entries(parsed)) {
2008
+ if (prefixes.some((prefix) => key.startsWith(prefix)) &&
2009
+ env[key] === undefined) {
2010
+ env[key] = value;
2011
+ }
2012
+ else if (key === 'NODE_ENV' &&
2013
+ process.env.VITE_USER_NODE_ENV === undefined) {
2014
+ // NODE_ENV override in .env file
2015
+ process.env.VITE_USER_NODE_ENV = value;
2016
+ }
2017
+ }
2018
+ }
2019
+ }
2020
+ return env;
2021
+ }
2022
+ function resolveEnvPrefix({ envPrefix = 'VITE_' }) {
2023
+ envPrefix = arraify(envPrefix);
2024
+ if (envPrefix.some((prefix) => prefix === '')) {
2025
+ throw new Error(`envPrefix option contains value '', which could lead unexpected exposure of sensitive information.`);
2026
+ }
2027
+ return envPrefix;
2028
+ }
2029
+
2030
+ exports.createLogger = createLogger;
2031
+ exports.loadEnv = loadEnv;
2032
+ exports.mergeAlias = mergeAlias;
2033
+ exports.mergeConfig = mergeConfig;
2034
+ exports.normalizePath = normalizePath;
2035
+ exports.resolveEnvPrefix = resolveEnvPrefix;
2036
+ exports.searchForWorkspaceRoot = searchForWorkspaceRoot;
2037
+ exports.send = send;
2038
+ exports.splitVendorChunk = splitVendorChunk;
2039
+ exports.splitVendorChunkPlugin = splitVendorChunkPlugin;
2040
+ exports.version = VERSION;