@shopify/cli-hydrogen 1.0.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ import require$$0$6 from 'assert';
6
6
  import require$$0$8, { join, dirname, basename, parse as parse$b, resolve as resolve$2 } from 'path';
7
7
  import require$$0$9 from 'os';
8
8
  import require$$0$a from 'events';
9
- import { path as path$t, output as output$1 } from '@shopify/cli-kit';
9
+ import { path as path$t, output } from '@shopify/cli-kit';
10
10
  import require$$0$2 from 'tty';
11
11
  import require$$1$1 from 'readline';
12
12
  import require$$0$b from 'buffer';
@@ -21,7 +21,7 @@ import 'prettier';
21
21
  import { Command as Command$1 } from '@oclif/core';
22
22
 
23
23
  var name = "@shopify/cli-hydrogen";
24
- var version$1 = "1.0.9";
24
+ var version$1 = "2.0.0";
25
25
  var description$1 = "Commands for building Hydrogen storefronts";
26
26
  var type$2 = "module";
27
27
  var files = [
@@ -54,22 +54,18 @@ var eslintConfig = {
54
54
  };
55
55
  var dependencies$1 = {
56
56
  "@oclif/core": "1.3.6",
57
- "@miniflare/cache": "^2.2.0",
58
- "@miniflare/core": "^2.2.0",
59
- "@miniflare/runner-vm": "^2.2.0",
60
- "@miniflare/shared": "^2.2.0",
61
- "@miniflare/storage-memory": "^2.2.0",
62
- "@miniflare/web-sockets": "^2.2.0",
57
+ "@shopify/mini-oxygen": "^0.0.5",
63
58
  "@types/prettier": "^2.4.4",
64
- prettier: "^2.6.1"
59
+ prettier: "^2.6.1",
60
+ vite: "^2.9.1"
65
61
  };
66
62
  var peerDependencies = {
67
- "@shopify/cli-kit": "1.0.9"
63
+ "@shopify/cli-kit": "1.1.1"
68
64
  };
69
65
  var devDependencies = {
70
- "@shopify/cli-testing": "0.30.2",
71
66
  "@babel/core": "^7.17.8",
72
67
  "@shopify/ast-utilities": "^1.3.4",
68
+ "@shopify/cli-testing": "0.30.2",
73
69
  "@shopify/prettier-config": "^1.1.2",
74
70
  "@types/change-case": "^2.3.1",
75
71
  "@types/connect": "^3.4.35",
@@ -103,7 +99,7 @@ var devDependencies = {
103
99
  typescript: "^4.2.3",
104
100
  unconfig: "^0.3.2",
105
101
  vite: "^2.9.1",
106
- vitest: "0.8.1"
102
+ vitest: "0.9.4"
107
103
  };
108
104
  var engines = {
109
105
  node: "^14.13.1 || ^16.0.0 || ^17.0.0"
@@ -154,7 +150,7 @@ const SEMVER_SPEC_VERSION = '2.0.0';
154
150
 
155
151
  const MAX_LENGTH$4 = 256;
156
152
  const MAX_SAFE_INTEGER$3 = Number.MAX_SAFE_INTEGER ||
157
- /* istanbul ignore next */ 9007199254740991;
153
+ /* istanbul ignore next */ 9007199254740991;
158
154
 
159
155
  // Max safe segment length for coercion.
160
156
  const MAX_SAFE_COMPONENT_LENGTH = 16;
@@ -163,7 +159,7 @@ var constants$6 = {
163
159
  SEMVER_SPEC_VERSION,
164
160
  MAX_LENGTH: MAX_LENGTH$4,
165
161
  MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$3,
166
- MAX_SAFE_COMPONENT_LENGTH
162
+ MAX_SAFE_COMPONENT_LENGTH,
167
163
  };
168
164
 
169
165
  const debug$5 = (
@@ -189,7 +185,7 @@ let R = 0;
189
185
 
190
186
  const createToken = (name, value, isGlobal) => {
191
187
  const index = R++;
192
- debug(index, value);
188
+ debug(name, index, value);
193
189
  t[name] = index;
194
190
  src[index] = value;
195
191
  re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
@@ -357,8 +353,8 @@ createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
357
353
  // Star ranges basically just allow anything at all.
358
354
  createToken('STAR', '(<|>)?=?\\s*\\*');
359
355
  // >=0.0.0 is like a star
360
- createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$');
361
- createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$');
356
+ createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$');
357
+ createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$');
362
358
  }(re$5, re$5.exports));
363
359
 
364
360
  // parse out just the options we care about so we always get a consistent
@@ -367,9 +363,9 @@ const opts = ['includePrerelease', 'loose', 'rtl'];
367
363
  const parseOptions$4 = options =>
368
364
  !options ? {}
369
365
  : typeof options !== 'object' ? { loose: true }
370
- : opts.filter(k => options[k]).reduce((options, k) => {
371
- options[k] = true;
372
- return options
366
+ : opts.filter(k => options[k]).reduce((o, k) => {
367
+ o[k] = true;
368
+ return o
373
369
  }, {});
374
370
  var parseOptions_1 = parseOptions$4;
375
371
 
@@ -394,7 +390,7 @@ const rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a);
394
390
 
395
391
  var identifiers = {
396
392
  compareIdentifiers: compareIdentifiers$1,
397
- rcompareIdentifiers
393
+ rcompareIdentifiers,
398
394
  };
399
395
 
400
396
  const debug$4 = debug_1;
@@ -664,7 +660,7 @@ class SemVer$e {
664
660
  if (identifier) {
665
661
  // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
666
662
  // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
667
- if (this.prerelease[0] === identifier) {
663
+ if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
668
664
  if (isNaN(this.prerelease[1])) {
669
665
  this.prerelease = [identifier, 0];
670
666
  }
@@ -685,7 +681,7 @@ class SemVer$e {
685
681
 
686
682
  var semver$1 = SemVer$e;
687
683
 
688
- const {MAX_LENGTH: MAX_LENGTH$2} = constants$6;
684
+ const { MAX_LENGTH: MAX_LENGTH$2 } = constants$6;
689
685
  const { re: re$3, t: t$3 } = re$5.exports;
690
686
  const SemVer$d = semver$1;
691
687
 
@@ -742,7 +738,10 @@ const inc = (version, release, options, identifier) => {
742
738
  }
743
739
 
744
740
  try {
745
- return new SemVer$c(version, options).inc(release, identifier).version
741
+ return new SemVer$c(
742
+ version instanceof SemVer$c ? version.version : version,
743
+ options
744
+ ).inc(release, identifier).version
746
745
  } catch (er) {
747
746
  return null
748
747
  }
@@ -856,17 +855,21 @@ const lte$1 = lte_1;
856
855
  const cmp$1 = (a, op, b, loose) => {
857
856
  switch (op) {
858
857
  case '===':
859
- if (typeof a === 'object')
858
+ if (typeof a === 'object') {
860
859
  a = a.version;
861
- if (typeof b === 'object')
860
+ }
861
+ if (typeof b === 'object') {
862
862
  b = b.version;
863
+ }
863
864
  return a === b
864
865
 
865
866
  case '!==':
866
- if (typeof a === 'object')
867
+ if (typeof a === 'object') {
867
868
  a = a.version;
868
- if (typeof b === 'object')
869
+ }
870
+ if (typeof b === 'object') {
869
871
  b = b.version;
872
+ }
870
873
  return a !== b
871
874
 
872
875
  case '':
@@ -897,7 +900,7 @@ var cmp_1 = cmp$1;
897
900
 
898
901
  const SemVer$6 = semver$1;
899
902
  const parse$5 = parse_1$2;
900
- const {re: re$2, t: t$2} = re$5.exports;
903
+ const { re: re$2, t: t$2 } = re$5.exports;
901
904
 
902
905
  const coerce = (version, options) => {
903
906
  if (version instanceof SemVer$6) {
@@ -940,8 +943,9 @@ const coerce = (version, options) => {
940
943
  re$2[t$2.COERCERTL].lastIndex = -1;
941
944
  }
942
945
 
943
- if (match === null)
946
+ if (match === null) {
944
947
  return null
948
+ }
945
949
 
946
950
  return parse$5(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
947
951
  };
@@ -1737,9 +1741,9 @@ class Range$a {
1737
1741
  // First, split based on boolean or ||
1738
1742
  this.raw = range;
1739
1743
  this.set = range
1740
- .split(/\s*\|\|\s*/)
1744
+ .split('||')
1741
1745
  // map the range to a 2d array of comparators
1742
- .map(range => this.parseRange(range.trim()))
1746
+ .map(r => this.parseRange(r.trim()))
1743
1747
  // throw out any comparator lists that are empty
1744
1748
  // this generally means that it was not a valid range, which is allowed
1745
1749
  // in loose mode, but will still throw if the WHOLE range is invalid.
@@ -1754,9 +1758,9 @@ class Range$a {
1754
1758
  // keep the first one, in case they're all null sets
1755
1759
  const first = this.set[0];
1756
1760
  this.set = this.set.filter(c => !isNullSet(c[0]));
1757
- if (this.set.length === 0)
1761
+ if (this.set.length === 0) {
1758
1762
  this.set = [first];
1759
- else if (this.set.length > 1) {
1763
+ } else if (this.set.length > 1) {
1760
1764
  // if we have any that are *, then the range is just *
1761
1765
  for (const c of this.set) {
1762
1766
  if (c.length === 1 && isAny(c[0])) {
@@ -1792,8 +1796,9 @@ class Range$a {
1792
1796
  const memoOpts = Object.keys(this.options).join(',');
1793
1797
  const memoKey = `parseRange:${memoOpts}:${range}`;
1794
1798
  const cached = cache.get(memoKey);
1795
- if (cached)
1799
+ if (cached) {
1796
1800
  return cached
1801
+ }
1797
1802
 
1798
1803
  const loose = this.options.loose;
1799
1804
  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
@@ -1802,7 +1807,7 @@ class Range$a {
1802
1807
  debug$3('hyphen replace', range);
1803
1808
  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
1804
1809
  range = range.replace(re$1[t$1.COMPARATORTRIM], comparatorTrimReplace);
1805
- debug$3('comparator trim', range, re$1[t$1.COMPARATORTRIM]);
1810
+ debug$3('comparator trim', range);
1806
1811
 
1807
1812
  // `~ 1.2.3` => `~1.2.3`
1808
1813
  range = range.replace(re$1[t$1.TILDETRIM], tildeTrimReplace);
@@ -1816,30 +1821,37 @@ class Range$a {
1816
1821
  // At this point, the range is completely trimmed and
1817
1822
  // ready to be split into comparators.
1818
1823
 
1819
- const compRe = loose ? re$1[t$1.COMPARATORLOOSE] : re$1[t$1.COMPARATOR];
1820
- const rangeList = range
1824
+ let rangeList = range
1821
1825
  .split(' ')
1822
1826
  .map(comp => parseComparator(comp, this.options))
1823
1827
  .join(' ')
1824
1828
  .split(/\s+/)
1825
1829
  // >=0.0.0 is equivalent to *
1826
- .map(comp => replaceGTE0(comp, this.options))
1830
+ .map(comp => replaceGTE0(comp, this.options));
1831
+
1832
+ if (loose) {
1827
1833
  // in loose mode, throw out any that are not valid comparators
1828
- .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)
1829
- .map(comp => new Comparator$3(comp, this.options));
1834
+ rangeList = rangeList.filter(comp => {
1835
+ debug$3('loose invalid filter', comp, this.options);
1836
+ return !!comp.match(re$1[t$1.COMPARATORLOOSE])
1837
+ });
1838
+ }
1839
+ debug$3('range list', rangeList);
1830
1840
 
1831
1841
  // if any comparators are the null set, then replace with JUST null set
1832
1842
  // if more than one comparator, remove any * comparators
1833
1843
  // also, don't include the same comparator more than once
1834
- rangeList.length;
1835
1844
  const rangeMap = new Map();
1836
- for (const comp of rangeList) {
1837
- if (isNullSet(comp))
1845
+ const comparators = rangeList.map(comp => new Comparator$3(comp, this.options));
1846
+ for (const comp of comparators) {
1847
+ if (isNullSet(comp)) {
1838
1848
  return [comp]
1849
+ }
1839
1850
  rangeMap.set(comp.value, comp);
1840
1851
  }
1841
- if (rangeMap.size > 1 && rangeMap.has(''))
1852
+ if (rangeMap.size > 1 && rangeMap.has('')) {
1842
1853
  rangeMap.delete('');
1854
+ }
1843
1855
 
1844
1856
  const result = [...rangeMap.values()];
1845
1857
  cache.set(memoKey, result);
@@ -1904,7 +1916,7 @@ const {
1904
1916
  t: t$1,
1905
1917
  comparatorTrimReplace,
1906
1918
  tildeTrimReplace,
1907
- caretTrimReplace
1919
+ caretTrimReplace,
1908
1920
  } = re$5.exports;
1909
1921
 
1910
1922
  const isNullSet = c => c.value === '<0.0.0-0';
@@ -1953,8 +1965,8 @@ const isX = id => !id || id.toLowerCase() === 'x' || id === '*';
1953
1965
  // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
1954
1966
  // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
1955
1967
  const replaceTildes = (comp, options) =>
1956
- comp.trim().split(/\s+/).map((comp) => {
1957
- return replaceTilde(comp, options)
1968
+ comp.trim().split(/\s+/).map((c) => {
1969
+ return replaceTilde(c, options)
1958
1970
  }).join(' ');
1959
1971
 
1960
1972
  const replaceTilde = (comp, options) => {
@@ -1992,8 +2004,8 @@ const replaceTilde = (comp, options) => {
1992
2004
  // ^1.2.3 --> >=1.2.3 <2.0.0-0
1993
2005
  // ^1.2.0 --> >=1.2.0 <2.0.0-0
1994
2006
  const replaceCarets = (comp, options) =>
1995
- comp.trim().split(/\s+/).map((comp) => {
1996
- return replaceCaret(comp, options)
2007
+ comp.trim().split(/\s+/).map((c) => {
2008
+ return replaceCaret(c, options)
1997
2009
  }).join(' ');
1998
2010
 
1999
2011
  const replaceCaret = (comp, options) => {
@@ -2051,8 +2063,8 @@ const replaceCaret = (comp, options) => {
2051
2063
 
2052
2064
  const replaceXRanges = (comp, options) => {
2053
2065
  debug$3('replaceXRanges', comp, options);
2054
- return comp.split(/\s+/).map((comp) => {
2055
- return replaceXRange(comp, options)
2066
+ return comp.split(/\s+/).map((c) => {
2067
+ return replaceXRange(c, options)
2056
2068
  }).join(' ')
2057
2069
  };
2058
2070
 
@@ -2113,8 +2125,9 @@ const replaceXRange = (comp, options) => {
2113
2125
  }
2114
2126
  }
2115
2127
 
2116
- if (gtlt === '<')
2128
+ if (gtlt === '<') {
2117
2129
  pr = '-0';
2130
+ }
2118
2131
 
2119
2132
  ret = `${gtlt + M}.${m}.${p}${pr}`;
2120
2133
  } else if (xm) {
@@ -2223,6 +2236,7 @@ class Comparator$2 {
2223
2236
  static get ANY () {
2224
2237
  return ANY$2
2225
2238
  }
2239
+
2226
2240
  constructor (comp, options) {
2227
2241
  options = parseOptions(options);
2228
2242
 
@@ -2299,7 +2313,7 @@ class Comparator$2 {
2299
2313
  if (!options || typeof options !== 'object') {
2300
2314
  options = {
2301
2315
  loose: !!options,
2302
- includePrerelease: false
2316
+ includePrerelease: false,
2303
2317
  };
2304
2318
  }
2305
2319
 
@@ -2347,7 +2361,7 @@ class Comparator$2 {
2347
2361
  var comparator = Comparator$2;
2348
2362
 
2349
2363
  const parseOptions = parseOptions_1;
2350
- const {re, t} = re$5.exports;
2364
+ const { re, t } = re$5.exports;
2351
2365
  const cmp = cmp_1;
2352
2366
  const debug$2 = debug_1;
2353
2367
  const SemVer$4 = semver$1;
@@ -2473,8 +2487,9 @@ const minVersion = (range, loose) => {
2473
2487
  throw new Error(`Unexpected operation: ${comparator.operator}`)
2474
2488
  }
2475
2489
  });
2476
- if (setMin && (!minver || gt$1(minver, setMin)))
2490
+ if (setMin && (!minver || gt$1(minver, setMin))) {
2477
2491
  minver = setMin;
2492
+ }
2478
2493
  }
2479
2494
 
2480
2495
  if (minver && range.test(minver)) {
@@ -2499,7 +2514,7 @@ var valid = validRange;
2499
2514
 
2500
2515
  const SemVer = semver$1;
2501
2516
  const Comparator$1 = comparator;
2502
- const {ANY: ANY$1} = Comparator$1;
2517
+ const { ANY: ANY$1 } = Comparator$1;
2503
2518
  const Range$2 = range$2;
2504
2519
  const satisfies$2 = satisfies_1;
2505
2520
  const gt = gt_1;
@@ -2603,38 +2618,41 @@ const satisfies$1 = satisfies_1;
2603
2618
  const compare$2 = compare_1;
2604
2619
  var simplify = (versions, range, options) => {
2605
2620
  const set = [];
2606
- let min = null;
2621
+ let first = null;
2607
2622
  let prev = null;
2608
2623
  const v = versions.sort((a, b) => compare$2(a, b, options));
2609
2624
  for (const version of v) {
2610
2625
  const included = satisfies$1(version, range, options);
2611
2626
  if (included) {
2612
2627
  prev = version;
2613
- if (!min)
2614
- min = version;
2628
+ if (!first) {
2629
+ first = version;
2630
+ }
2615
2631
  } else {
2616
2632
  if (prev) {
2617
- set.push([min, prev]);
2633
+ set.push([first, prev]);
2618
2634
  }
2619
2635
  prev = null;
2620
- min = null;
2636
+ first = null;
2621
2637
  }
2622
2638
  }
2623
- if (min)
2624
- set.push([min, null]);
2639
+ if (first) {
2640
+ set.push([first, null]);
2641
+ }
2625
2642
 
2626
2643
  const ranges = [];
2627
2644
  for (const [min, max] of set) {
2628
- if (min === max)
2645
+ if (min === max) {
2629
2646
  ranges.push(min);
2630
- else if (!max && min === v[0])
2647
+ } else if (!max && min === v[0]) {
2631
2648
  ranges.push('*');
2632
- else if (!max)
2649
+ } else if (!max) {
2633
2650
  ranges.push(`>=${min}`);
2634
- else if (min === v[0])
2651
+ } else if (min === v[0]) {
2635
2652
  ranges.push(`<=${max}`);
2636
- else
2653
+ } else {
2637
2654
  ranges.push(`${min} - ${max}`);
2655
+ }
2638
2656
  }
2639
2657
  const simplified = ranges.join(' || ');
2640
2658
  const original = typeof range.raw === 'string' ? range.raw : String(range);
@@ -2684,8 +2702,9 @@ const compare$1 = compare_1;
2684
2702
  // - Else return true
2685
2703
 
2686
2704
  const subset = (sub, dom, options = {}) => {
2687
- if (sub === dom)
2705
+ if (sub === dom) {
2688
2706
  return true
2707
+ }
2689
2708
 
2690
2709
  sub = new Range(sub, options);
2691
2710
  dom = new Range(dom, options);
@@ -2695,73 +2714,84 @@ const subset = (sub, dom, options = {}) => {
2695
2714
  for (const simpleDom of dom.set) {
2696
2715
  const isSub = simpleSubset(simpleSub, simpleDom, options);
2697
2716
  sawNonNull = sawNonNull || isSub !== null;
2698
- if (isSub)
2717
+ if (isSub) {
2699
2718
  continue OUTER
2719
+ }
2700
2720
  }
2701
2721
  // the null set is a subset of everything, but null simple ranges in
2702
2722
  // a complex range should be ignored. so if we saw a non-null range,
2703
2723
  // then we know this isn't a subset, but if EVERY simple range was null,
2704
2724
  // then it is a subset.
2705
- if (sawNonNull)
2725
+ if (sawNonNull) {
2706
2726
  return false
2727
+ }
2707
2728
  }
2708
2729
  return true
2709
2730
  };
2710
2731
 
2711
2732
  const simpleSubset = (sub, dom, options) => {
2712
- if (sub === dom)
2733
+ if (sub === dom) {
2713
2734
  return true
2735
+ }
2714
2736
 
2715
2737
  if (sub.length === 1 && sub[0].semver === ANY) {
2716
- if (dom.length === 1 && dom[0].semver === ANY)
2738
+ if (dom.length === 1 && dom[0].semver === ANY) {
2717
2739
  return true
2718
- else if (options.includePrerelease)
2719
- sub = [ new Comparator('>=0.0.0-0') ];
2720
- else
2721
- sub = [ new Comparator('>=0.0.0') ];
2740
+ } else if (options.includePrerelease) {
2741
+ sub = [new Comparator('>=0.0.0-0')];
2742
+ } else {
2743
+ sub = [new Comparator('>=0.0.0')];
2744
+ }
2722
2745
  }
2723
2746
 
2724
2747
  if (dom.length === 1 && dom[0].semver === ANY) {
2725
- if (options.includePrerelease)
2748
+ if (options.includePrerelease) {
2726
2749
  return true
2727
- else
2728
- dom = [ new Comparator('>=0.0.0') ];
2750
+ } else {
2751
+ dom = [new Comparator('>=0.0.0')];
2752
+ }
2729
2753
  }
2730
2754
 
2731
2755
  const eqSet = new Set();
2732
2756
  let gt, lt;
2733
2757
  for (const c of sub) {
2734
- if (c.operator === '>' || c.operator === '>=')
2758
+ if (c.operator === '>' || c.operator === '>=') {
2735
2759
  gt = higherGT(gt, c, options);
2736
- else if (c.operator === '<' || c.operator === '<=')
2760
+ } else if (c.operator === '<' || c.operator === '<=') {
2737
2761
  lt = lowerLT(lt, c, options);
2738
- else
2762
+ } else {
2739
2763
  eqSet.add(c.semver);
2764
+ }
2740
2765
  }
2741
2766
 
2742
- if (eqSet.size > 1)
2767
+ if (eqSet.size > 1) {
2743
2768
  return null
2769
+ }
2744
2770
 
2745
2771
  let gtltComp;
2746
2772
  if (gt && lt) {
2747
2773
  gtltComp = compare$1(gt.semver, lt.semver, options);
2748
- if (gtltComp > 0)
2774
+ if (gtltComp > 0) {
2749
2775
  return null
2750
- else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))
2776
+ } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
2751
2777
  return null
2778
+ }
2752
2779
  }
2753
2780
 
2754
2781
  // will iterate one or zero times
2755
2782
  for (const eq of eqSet) {
2756
- if (gt && !satisfies(eq, String(gt), options))
2783
+ if (gt && !satisfies(eq, String(gt), options)) {
2757
2784
  return null
2785
+ }
2758
2786
 
2759
- if (lt && !satisfies(eq, String(lt), options))
2787
+ if (lt && !satisfies(eq, String(lt), options)) {
2760
2788
  return null
2789
+ }
2761
2790
 
2762
2791
  for (const c of dom) {
2763
- if (!satisfies(eq, String(c), options))
2792
+ if (!satisfies(eq, String(c), options)) {
2764
2793
  return false
2794
+ }
2765
2795
  }
2766
2796
 
2767
2797
  return true
@@ -2797,10 +2827,12 @@ const simpleSubset = (sub, dom, options) => {
2797
2827
  }
2798
2828
  if (c.operator === '>' || c.operator === '>=') {
2799
2829
  higher = higherGT(gt, c, options);
2800
- if (higher === c && higher !== gt)
2830
+ if (higher === c && higher !== gt) {
2801
2831
  return false
2802
- } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))
2832
+ }
2833
+ } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
2803
2834
  return false
2835
+ }
2804
2836
  }
2805
2837
  if (lt) {
2806
2838
  if (needDomLTPre) {
@@ -2813,37 +2845,44 @@ const simpleSubset = (sub, dom, options) => {
2813
2845
  }
2814
2846
  if (c.operator === '<' || c.operator === '<=') {
2815
2847
  lower = lowerLT(lt, c, options);
2816
- if (lower === c && lower !== lt)
2848
+ if (lower === c && lower !== lt) {
2817
2849
  return false
2818
- } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))
2850
+ }
2851
+ } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
2819
2852
  return false
2853
+ }
2820
2854
  }
2821
- if (!c.operator && (lt || gt) && gtltComp !== 0)
2855
+ if (!c.operator && (lt || gt) && gtltComp !== 0) {
2822
2856
  return false
2857
+ }
2823
2858
  }
2824
2859
 
2825
2860
  // if there was a < or >, and nothing in the dom, then must be false
2826
2861
  // UNLESS it was limited by another range in the other direction.
2827
2862
  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
2828
- if (gt && hasDomLT && !lt && gtltComp !== 0)
2863
+ if (gt && hasDomLT && !lt && gtltComp !== 0) {
2829
2864
  return false
2865
+ }
2830
2866
 
2831
- if (lt && hasDomGT && !gt && gtltComp !== 0)
2867
+ if (lt && hasDomGT && !gt && gtltComp !== 0) {
2832
2868
  return false
2869
+ }
2833
2870
 
2834
2871
  // we needed a prerelease range in a specific tuple, but didn't get one
2835
2872
  // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
2836
2873
  // because it includes prereleases in the 1.2.3 tuple
2837
- if (needDomGTPre || needDomLTPre)
2874
+ if (needDomGTPre || needDomLTPre) {
2838
2875
  return false
2876
+ }
2839
2877
 
2840
2878
  return true
2841
2879
  };
2842
2880
 
2843
2881
  // >=1.2.3 is lower than >1.2.3
2844
2882
  const higherGT = (a, b, options) => {
2845
- if (!a)
2883
+ if (!a) {
2846
2884
  return b
2885
+ }
2847
2886
  const comp = compare$1(a.semver, b.semver, options);
2848
2887
  return comp > 0 ? a
2849
2888
  : comp < 0 ? b
@@ -2853,8 +2892,9 @@ const higherGT = (a, b, options) => {
2853
2892
 
2854
2893
  // <=1.2.3 is higher than <1.2.3
2855
2894
  const lowerLT = (a, b, options) => {
2856
- if (!a)
2895
+ if (!a) {
2857
2896
  return b
2897
+ }
2858
2898
  const comp = compare$1(a.semver, b.semver, options);
2859
2899
  return comp < 0 ? a
2860
2900
  : comp > 0 ? b
@@ -4059,13 +4099,13 @@ function patch$1 (fs) {
4059
4099
  fs.lstatSync = statFixSync(fs.lstatSync);
4060
4100
 
4061
4101
  // if lchmod/lchown do not exist, then make them no-ops
4062
- if (!fs.lchmod) {
4102
+ if (fs.chmod && !fs.lchmod) {
4063
4103
  fs.lchmod = function (path, mode, cb) {
4064
4104
  if (cb) process.nextTick(cb);
4065
4105
  };
4066
4106
  fs.lchmodSync = function () {};
4067
4107
  }
4068
- if (!fs.lchown) {
4108
+ if (fs.chown && !fs.lchown) {
4069
4109
  fs.lchown = function (path, uid, gid, cb) {
4070
4110
  if (cb) process.nextTick(cb);
4071
4111
  };
@@ -4082,32 +4122,38 @@ function patch$1 (fs) {
4082
4122
  // CPU to a busy looping process, which can cause the program causing the lock
4083
4123
  // contention to be starved of CPU by node, so the contention doesn't resolve.
4084
4124
  if (platform$1 === "win32") {
4085
- fs.rename = (function (fs$rename) { return function (from, to, cb) {
4086
- var start = Date.now();
4087
- var backoff = 0;
4088
- fs$rename(from, to, function CB (er) {
4089
- if (er
4090
- && (er.code === "EACCES" || er.code === "EPERM")
4091
- && Date.now() - start < 60000) {
4092
- setTimeout(function() {
4093
- fs.stat(to, function (stater, st) {
4094
- if (stater && stater.code === "ENOENT")
4095
- fs$rename(from, to, CB);
4096
- else
4097
- cb(er);
4098
- });
4099
- }, backoff);
4100
- if (backoff < 100)
4101
- backoff += 10;
4102
- return;
4103
- }
4104
- if (cb) cb(er);
4105
- });
4106
- }})(fs.rename);
4125
+ fs.rename = typeof fs.rename !== 'function' ? fs.rename
4126
+ : (function (fs$rename) {
4127
+ function rename (from, to, cb) {
4128
+ var start = Date.now();
4129
+ var backoff = 0;
4130
+ fs$rename(from, to, function CB (er) {
4131
+ if (er
4132
+ && (er.code === "EACCES" || er.code === "EPERM")
4133
+ && Date.now() - start < 60000) {
4134
+ setTimeout(function() {
4135
+ fs.stat(to, function (stater, st) {
4136
+ if (stater && stater.code === "ENOENT")
4137
+ fs$rename(from, to, CB);
4138
+ else
4139
+ cb(er);
4140
+ });
4141
+ }, backoff);
4142
+ if (backoff < 100)
4143
+ backoff += 10;
4144
+ return;
4145
+ }
4146
+ if (cb) cb(er);
4147
+ });
4148
+ }
4149
+ if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
4150
+ return rename
4151
+ })(fs.rename);
4107
4152
  }
4108
4153
 
4109
4154
  // if read() returns EAGAIN, then just try it again.
4110
- fs.read = (function (fs$read) {
4155
+ fs.read = typeof fs.read !== 'function' ? fs.read
4156
+ : (function (fs$read) {
4111
4157
  function read (fd, buffer, offset, length, position, callback_) {
4112
4158
  var callback;
4113
4159
  if (callback_ && typeof callback_ === 'function') {
@@ -4128,7 +4174,8 @@ function patch$1 (fs) {
4128
4174
  return read
4129
4175
  })(fs.read);
4130
4176
 
4131
- fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
4177
+ fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync
4178
+ : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
4132
4179
  var eagCounter = 0;
4133
4180
  while (true) {
4134
4181
  try {
@@ -4187,7 +4234,7 @@ function patch$1 (fs) {
4187
4234
  }
4188
4235
 
4189
4236
  function patchLutimes (fs) {
4190
- if (constants$5.hasOwnProperty("O_SYMLINK")) {
4237
+ if (constants$5.hasOwnProperty("O_SYMLINK") && fs.futimes) {
4191
4238
  fs.lutimes = function (path, at, mt, cb) {
4192
4239
  fs.open(path, constants$5.O_SYMLINK, function (er, fd) {
4193
4240
  if (er) {
@@ -4221,7 +4268,7 @@ function patch$1 (fs) {
4221
4268
  return ret
4222
4269
  };
4223
4270
 
4224
- } else {
4271
+ } else if (fs.futimes) {
4225
4272
  fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb); };
4226
4273
  fs.lutimesSync = function () {};
4227
4274
  }
@@ -4669,16 +4716,35 @@ function patch (fs) {
4669
4716
 
4670
4717
  var fs$readdir = fs.readdir;
4671
4718
  fs.readdir = readdir;
4719
+ var noReaddirOptionVersions = /^v[0-5]\./;
4672
4720
  function readdir (path, options, cb) {
4673
4721
  if (typeof options === 'function')
4674
4722
  cb = options, options = null;
4675
4723
 
4724
+ var go$readdir = noReaddirOptionVersions.test(process.version)
4725
+ ? function go$readdir (path, options, cb, startTime) {
4726
+ return fs$readdir(path, fs$readdirCallback(
4727
+ path, options, cb, startTime
4728
+ ))
4729
+ }
4730
+ : function go$readdir (path, options, cb, startTime) {
4731
+ return fs$readdir(path, options, fs$readdirCallback(
4732
+ path, options, cb, startTime
4733
+ ))
4734
+ };
4735
+
4676
4736
  return go$readdir(path, options, cb)
4677
4737
 
4678
- function go$readdir (path, options, cb, startTime) {
4679
- return fs$readdir(path, options, function (err, files) {
4738
+ function fs$readdirCallback (path, options, cb, startTime) {
4739
+ return function (err, files) {
4680
4740
  if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
4681
- enqueue([go$readdir, [path, options, cb], err, startTime || Date.now(), Date.now()]);
4741
+ enqueue([
4742
+ go$readdir,
4743
+ [path, options, cb],
4744
+ err,
4745
+ startTime || Date.now(),
4746
+ Date.now()
4747
+ ]);
4682
4748
  else {
4683
4749
  if (files && files.sort)
4684
4750
  files.sort();
@@ -4686,7 +4752,7 @@ function patch (fs) {
4686
4752
  if (typeof cb === 'function')
4687
4753
  cb.call(this, err, files);
4688
4754
  }
4689
- })
4755
+ }
4690
4756
  }
4691
4757
  }
4692
4758
 
@@ -4962,7 +5028,6 @@ Object.assign(exports, fs);
4962
5028
  api.forEach(method => {
4963
5029
  exports[method] = u(fs[method]);
4964
5030
  });
4965
- exports.realpath.native = u(fs.realpath.native);
4966
5031
 
4967
5032
  // We differ from mz/fs in that we still ship the old, broken, fs.exists()
4968
5033
  // since we are a drop-in replacement for the native module
@@ -5025,6 +5090,16 @@ if (typeof fs.writev === 'function') {
5025
5090
  })
5026
5091
  };
5027
5092
  }
5093
+
5094
+ // fs.realpath.native sometimes not available if fs is monkey-patched
5095
+ if (typeof fs.realpath.native === 'function') {
5096
+ exports.realpath.native = u(fs.realpath.native);
5097
+ } else {
5098
+ process.emitWarning(
5099
+ 'fs.realpath.native is not a function. Is fs being monkey-patched?',
5100
+ 'Warning', 'fs-extra-WARN0003'
5101
+ );
5102
+ }
5028
5103
  }(fs$v));
5029
5104
 
5030
5105
  var makeDir$1 = {};
@@ -5088,14 +5163,26 @@ var mkdirs$2 = {
5088
5163
  ensureDirSync: makeDirSync
5089
5164
  };
5090
5165
 
5091
- const fs$s = gracefulFs;
5166
+ const u$9 = universalify$1.fromPromise;
5167
+ const fs$s = fs$v;
5168
+
5169
+ function pathExists$8 (path) {
5170
+ return fs$s.access(path).then(() => true).catch(() => false)
5171
+ }
5172
+
5173
+ var pathExists_1 = {
5174
+ pathExists: u$9(pathExists$8),
5175
+ pathExistsSync: fs$s.existsSync
5176
+ };
5177
+
5178
+ const fs$r = gracefulFs;
5092
5179
 
5093
5180
  function utimesMillis$1 (path, atime, mtime, callback) {
5094
5181
  // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)
5095
- fs$s.open(path, 'r+', (err, fd) => {
5182
+ fs$r.open(path, 'r+', (err, fd) => {
5096
5183
  if (err) return callback(err)
5097
- fs$s.futimes(fd, atime, mtime, futimesErr => {
5098
- fs$s.close(fd, closeErr => {
5184
+ fs$r.futimes(fd, atime, mtime, futimesErr => {
5185
+ fs$r.close(fd, closeErr => {
5099
5186
  if (callback) callback(futimesErr || closeErr);
5100
5187
  });
5101
5188
  });
@@ -5103,9 +5190,9 @@ function utimesMillis$1 (path, atime, mtime, callback) {
5103
5190
  }
5104
5191
 
5105
5192
  function utimesMillisSync$1 (path, atime, mtime) {
5106
- const fd = fs$s.openSync(path, 'r+');
5107
- fs$s.futimesSync(fd, atime, mtime);
5108
- return fs$s.closeSync(fd)
5193
+ const fd = fs$r.openSync(path, 'r+');
5194
+ fs$r.futimesSync(fd, atime, mtime);
5195
+ return fs$r.closeSync(fd)
5109
5196
  }
5110
5197
 
5111
5198
  var utimes = {
@@ -5113,14 +5200,14 @@ var utimes = {
5113
5200
  utimesMillisSync: utimesMillisSync$1
5114
5201
  };
5115
5202
 
5116
- const fs$r = fs$v;
5203
+ const fs$q = fs$v;
5117
5204
  const path$r = require$$0$8;
5118
5205
  const util$6 = require$$0$3;
5119
5206
 
5120
5207
  function getStats$2 (src, dest, opts) {
5121
5208
  const statFunc = opts.dereference
5122
- ? (file) => fs$r.stat(file, { bigint: true })
5123
- : (file) => fs$r.lstat(file, { bigint: true });
5209
+ ? (file) => fs$q.stat(file, { bigint: true })
5210
+ : (file) => fs$q.lstat(file, { bigint: true });
5124
5211
  return Promise.all([
5125
5212
  statFunc(src),
5126
5213
  statFunc(dest).catch(err => {
@@ -5133,8 +5220,8 @@ function getStats$2 (src, dest, opts) {
5133
5220
  function getStatsSync (src, dest, opts) {
5134
5221
  let destStat;
5135
5222
  const statFunc = opts.dereference
5136
- ? (file) => fs$r.statSync(file, { bigint: true })
5137
- : (file) => fs$r.lstatSync(file, { bigint: true });
5223
+ ? (file) => fs$q.statSync(file, { bigint: true })
5224
+ : (file) => fs$q.lstatSync(file, { bigint: true });
5138
5225
  const srcStat = statFunc(src);
5139
5226
  try {
5140
5227
  destStat = statFunc(dest);
@@ -5212,7 +5299,7 @@ function checkParentPaths (src, srcStat, dest, funcName, cb) {
5212
5299
  const srcParent = path$r.resolve(path$r.dirname(src));
5213
5300
  const destParent = path$r.resolve(path$r.dirname(dest));
5214
5301
  if (destParent === srcParent || destParent === path$r.parse(destParent).root) return cb()
5215
- fs$r.stat(destParent, { bigint: true }, (err, destStat) => {
5302
+ fs$q.stat(destParent, { bigint: true }, (err, destStat) => {
5216
5303
  if (err) {
5217
5304
  if (err.code === 'ENOENT') return cb()
5218
5305
  return cb(err)
@@ -5230,7 +5317,7 @@ function checkParentPathsSync (src, srcStat, dest, funcName) {
5230
5317
  if (destParent === srcParent || destParent === path$r.parse(destParent).root) return
5231
5318
  let destStat;
5232
5319
  try {
5233
- destStat = fs$r.statSync(destParent, { bigint: true });
5320
+ destStat = fs$q.statSync(destParent, { bigint: true });
5234
5321
  } catch (err) {
5235
5322
  if (err.code === 'ENOENT') return
5236
5323
  throw err
@@ -5266,193 +5353,12 @@ var stat$5 = {
5266
5353
  areIdentical: areIdentical$2
5267
5354
  };
5268
5355
 
5269
- const fs$q = gracefulFs;
5356
+ const fs$p = gracefulFs;
5270
5357
  const path$q = require$$0$8;
5271
- const mkdirsSync$1 = mkdirs$2.mkdirsSync;
5272
- const utimesMillisSync = utimes.utimesMillisSync;
5273
- const stat$4 = stat$5;
5274
-
5275
- function copySync$2 (src, dest, opts) {
5276
- if (typeof opts === 'function') {
5277
- opts = { filter: opts };
5278
- }
5279
-
5280
- opts = opts || {};
5281
- opts.clobber = 'clobber' in opts ? !!opts.clobber : true; // default to true for now
5282
- opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber; // overwrite falls back to clobber
5283
-
5284
- // Warn about using preserveTimestamps on 32-bit node
5285
- if (opts.preserveTimestamps && process.arch === 'ia32') {
5286
- console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
5287
- see https://github.com/jprichardson/node-fs-extra/issues/269`);
5288
- }
5289
-
5290
- const { srcStat, destStat } = stat$4.checkPathsSync(src, dest, 'copy', opts);
5291
- stat$4.checkParentPathsSync(src, srcStat, dest, 'copy');
5292
- return handleFilterAndCopy(destStat, src, dest, opts)
5293
- }
5294
-
5295
- function handleFilterAndCopy (destStat, src, dest, opts) {
5296
- if (opts.filter && !opts.filter(src, dest)) return
5297
- const destParent = path$q.dirname(dest);
5298
- if (!fs$q.existsSync(destParent)) mkdirsSync$1(destParent);
5299
- return getStats$1(destStat, src, dest, opts)
5300
- }
5301
-
5302
- function startCopy$1 (destStat, src, dest, opts) {
5303
- if (opts.filter && !opts.filter(src, dest)) return
5304
- return getStats$1(destStat, src, dest, opts)
5305
- }
5306
-
5307
- function getStats$1 (destStat, src, dest, opts) {
5308
- const statSync = opts.dereference ? fs$q.statSync : fs$q.lstatSync;
5309
- const srcStat = statSync(src);
5310
-
5311
- if (srcStat.isDirectory()) return onDir$1(srcStat, destStat, src, dest, opts)
5312
- else if (srcStat.isFile() ||
5313
- srcStat.isCharacterDevice() ||
5314
- srcStat.isBlockDevice()) return onFile$1(srcStat, destStat, src, dest, opts)
5315
- else if (srcStat.isSymbolicLink()) return onLink$1(destStat, src, dest, opts)
5316
- else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)
5317
- else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)
5318
- throw new Error(`Unknown file: ${src}`)
5319
- }
5320
-
5321
- function onFile$1 (srcStat, destStat, src, dest, opts) {
5322
- if (!destStat) return copyFile$1(srcStat, src, dest, opts)
5323
- return mayCopyFile$1(srcStat, src, dest, opts)
5324
- }
5325
-
5326
- function mayCopyFile$1 (srcStat, src, dest, opts) {
5327
- if (opts.overwrite) {
5328
- fs$q.unlinkSync(dest);
5329
- return copyFile$1(srcStat, src, dest, opts)
5330
- } else if (opts.errorOnExist) {
5331
- throw new Error(`'${dest}' already exists`)
5332
- }
5333
- }
5334
-
5335
- function copyFile$1 (srcStat, src, dest, opts) {
5336
- fs$q.copyFileSync(src, dest);
5337
- if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest);
5338
- return setDestMode$1(dest, srcStat.mode)
5339
- }
5340
-
5341
- function handleTimestamps (srcMode, src, dest) {
5342
- // Make sure the file is writable before setting the timestamp
5343
- // otherwise open fails with EPERM when invoked with 'r+'
5344
- // (through utimes call)
5345
- if (fileIsNotWritable$1(srcMode)) makeFileWritable$1(dest, srcMode);
5346
- return setDestTimestamps$1(src, dest)
5347
- }
5348
-
5349
- function fileIsNotWritable$1 (srcMode) {
5350
- return (srcMode & 0o200) === 0
5351
- }
5352
-
5353
- function makeFileWritable$1 (dest, srcMode) {
5354
- return setDestMode$1(dest, srcMode | 0o200)
5355
- }
5356
-
5357
- function setDestMode$1 (dest, srcMode) {
5358
- return fs$q.chmodSync(dest, srcMode)
5359
- }
5360
-
5361
- function setDestTimestamps$1 (src, dest) {
5362
- // The initial srcStat.atime cannot be trusted
5363
- // because it is modified by the read(2) system call
5364
- // (See https://nodejs.org/api/fs.html#fs_stat_time_values)
5365
- const updatedSrcStat = fs$q.statSync(src);
5366
- return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)
5367
- }
5368
-
5369
- function onDir$1 (srcStat, destStat, src, dest, opts) {
5370
- if (!destStat) return mkDirAndCopy$1(srcStat.mode, src, dest, opts)
5371
- return copyDir$1(src, dest, opts)
5372
- }
5373
-
5374
- function mkDirAndCopy$1 (srcMode, src, dest, opts) {
5375
- fs$q.mkdirSync(dest);
5376
- copyDir$1(src, dest, opts);
5377
- return setDestMode$1(dest, srcMode)
5378
- }
5379
-
5380
- function copyDir$1 (src, dest, opts) {
5381
- fs$q.readdirSync(src).forEach(item => copyDirItem$1(item, src, dest, opts));
5382
- }
5383
-
5384
- function copyDirItem$1 (item, src, dest, opts) {
5385
- const srcItem = path$q.join(src, item);
5386
- const destItem = path$q.join(dest, item);
5387
- const { destStat } = stat$4.checkPathsSync(srcItem, destItem, 'copy', opts);
5388
- return startCopy$1(destStat, srcItem, destItem, opts)
5389
- }
5390
-
5391
- function onLink$1 (destStat, src, dest, opts) {
5392
- let resolvedSrc = fs$q.readlinkSync(src);
5393
- if (opts.dereference) {
5394
- resolvedSrc = path$q.resolve(process.cwd(), resolvedSrc);
5395
- }
5396
-
5397
- if (!destStat) {
5398
- return fs$q.symlinkSync(resolvedSrc, dest)
5399
- } else {
5400
- let resolvedDest;
5401
- try {
5402
- resolvedDest = fs$q.readlinkSync(dest);
5403
- } catch (err) {
5404
- // dest exists and is a regular file or directory,
5405
- // Windows may throw UNKNOWN error. If dest already exists,
5406
- // fs throws error anyway, so no need to guard against it here.
5407
- if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs$q.symlinkSync(resolvedSrc, dest)
5408
- throw err
5409
- }
5410
- if (opts.dereference) {
5411
- resolvedDest = path$q.resolve(process.cwd(), resolvedDest);
5412
- }
5413
- if (stat$4.isSrcSubdir(resolvedSrc, resolvedDest)) {
5414
- throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)
5415
- }
5416
-
5417
- // prevent copy if src is a subdir of dest since unlinking
5418
- // dest in this case would result in removing src contents
5419
- // and therefore a broken symlink would be created.
5420
- if (fs$q.statSync(dest).isDirectory() && stat$4.isSrcSubdir(resolvedDest, resolvedSrc)) {
5421
- throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)
5422
- }
5423
- return copyLink$1(resolvedSrc, dest)
5424
- }
5425
- }
5426
-
5427
- function copyLink$1 (resolvedSrc, dest) {
5428
- fs$q.unlinkSync(dest);
5429
- return fs$q.symlinkSync(resolvedSrc, dest)
5430
- }
5431
-
5432
- var copySync_1 = copySync$2;
5433
-
5434
- var copySync$1 = {
5435
- copySync: copySync_1
5436
- };
5437
-
5438
- const u$9 = universalify$1.fromPromise;
5439
- const fs$p = fs$v;
5440
-
5441
- function pathExists$8 (path) {
5442
- return fs$p.access(path).then(() => true).catch(() => false)
5443
- }
5444
-
5445
- var pathExists_1 = {
5446
- pathExists: u$9(pathExists$8),
5447
- pathExistsSync: fs$p.existsSync
5448
- };
5449
-
5450
- const fs$o = gracefulFs;
5451
- const path$p = require$$0$8;
5452
5358
  const mkdirs$1 = mkdirs$2.mkdirs;
5453
5359
  const pathExists$7 = pathExists_1.pathExists;
5454
5360
  const utimesMillis = utimes.utimesMillis;
5455
- const stat$3 = stat$5;
5361
+ const stat$4 = stat$5;
5456
5362
 
5457
5363
  function copy$2 (src, dest, opts, cb) {
5458
5364
  if (typeof opts === 'function' && !cb) {
@@ -5470,14 +5376,17 @@ function copy$2 (src, dest, opts, cb) {
5470
5376
 
5471
5377
  // Warn about using preserveTimestamps on 32-bit node
5472
5378
  if (opts.preserveTimestamps && process.arch === 'ia32') {
5473
- console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n
5474
- see https://github.com/jprichardson/node-fs-extra/issues/269`);
5379
+ process.emitWarning(
5380
+ 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' +
5381
+ '\tsee https://github.com/jprichardson/node-fs-extra/issues/269',
5382
+ 'Warning', 'fs-extra-WARN0001'
5383
+ );
5475
5384
  }
5476
5385
 
5477
- stat$3.checkPaths(src, dest, 'copy', opts, (err, stats) => {
5386
+ stat$4.checkPaths(src, dest, 'copy', opts, (err, stats) => {
5478
5387
  if (err) return cb(err)
5479
5388
  const { srcStat, destStat } = stats;
5480
- stat$3.checkParentPaths(src, srcStat, dest, 'copy', err => {
5389
+ stat$4.checkParentPaths(src, srcStat, dest, 'copy', err => {
5481
5390
  if (err) return cb(err)
5482
5391
  if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb)
5483
5392
  return checkParentDir(destStat, src, dest, opts, cb)
@@ -5486,13 +5395,13 @@ function copy$2 (src, dest, opts, cb) {
5486
5395
  }
5487
5396
 
5488
5397
  function checkParentDir (destStat, src, dest, opts, cb) {
5489
- const destParent = path$p.dirname(dest);
5398
+ const destParent = path$q.dirname(dest);
5490
5399
  pathExists$7(destParent, (err, dirExists) => {
5491
5400
  if (err) return cb(err)
5492
- if (dirExists) return getStats(destStat, src, dest, opts, cb)
5401
+ if (dirExists) return getStats$1(destStat, src, dest, opts, cb)
5493
5402
  mkdirs$1(destParent, err => {
5494
5403
  if (err) return cb(err)
5495
- return getStats(destStat, src, dest, opts, cb)
5404
+ return getStats$1(destStat, src, dest, opts, cb)
5496
5405
  });
5497
5406
  });
5498
5407
  }
@@ -5504,48 +5413,48 @@ function handleFilter (onInclude, destStat, src, dest, opts, cb) {
5504
5413
  }, error => cb(error));
5505
5414
  }
5506
5415
 
5507
- function startCopy (destStat, src, dest, opts, cb) {
5508
- if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb)
5509
- return getStats(destStat, src, dest, opts, cb)
5416
+ function startCopy$1 (destStat, src, dest, opts, cb) {
5417
+ if (opts.filter) return handleFilter(getStats$1, destStat, src, dest, opts, cb)
5418
+ return getStats$1(destStat, src, dest, opts, cb)
5510
5419
  }
5511
5420
 
5512
- function getStats (destStat, src, dest, opts, cb) {
5513
- const stat = opts.dereference ? fs$o.stat : fs$o.lstat;
5421
+ function getStats$1 (destStat, src, dest, opts, cb) {
5422
+ const stat = opts.dereference ? fs$p.stat : fs$p.lstat;
5514
5423
  stat(src, (err, srcStat) => {
5515
5424
  if (err) return cb(err)
5516
5425
 
5517
- if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb)
5426
+ if (srcStat.isDirectory()) return onDir$1(srcStat, destStat, src, dest, opts, cb)
5518
5427
  else if (srcStat.isFile() ||
5519
5428
  srcStat.isCharacterDevice() ||
5520
- srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb)
5521
- else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb)
5429
+ srcStat.isBlockDevice()) return onFile$1(srcStat, destStat, src, dest, opts, cb)
5430
+ else if (srcStat.isSymbolicLink()) return onLink$1(destStat, src, dest, opts, cb)
5522
5431
  else if (srcStat.isSocket()) return cb(new Error(`Cannot copy a socket file: ${src}`))
5523
5432
  else if (srcStat.isFIFO()) return cb(new Error(`Cannot copy a FIFO pipe: ${src}`))
5524
5433
  return cb(new Error(`Unknown file: ${src}`))
5525
5434
  });
5526
5435
  }
5527
5436
 
5528
- function onFile (srcStat, destStat, src, dest, opts, cb) {
5529
- if (!destStat) return copyFile(srcStat, src, dest, opts, cb)
5530
- return mayCopyFile(srcStat, src, dest, opts, cb)
5437
+ function onFile$1 (srcStat, destStat, src, dest, opts, cb) {
5438
+ if (!destStat) return copyFile$1(srcStat, src, dest, opts, cb)
5439
+ return mayCopyFile$1(srcStat, src, dest, opts, cb)
5531
5440
  }
5532
5441
 
5533
- function mayCopyFile (srcStat, src, dest, opts, cb) {
5442
+ function mayCopyFile$1 (srcStat, src, dest, opts, cb) {
5534
5443
  if (opts.overwrite) {
5535
- fs$o.unlink(dest, err => {
5444
+ fs$p.unlink(dest, err => {
5536
5445
  if (err) return cb(err)
5537
- return copyFile(srcStat, src, dest, opts, cb)
5446
+ return copyFile$1(srcStat, src, dest, opts, cb)
5538
5447
  });
5539
5448
  } else if (opts.errorOnExist) {
5540
5449
  return cb(new Error(`'${dest}' already exists`))
5541
5450
  } else return cb()
5542
5451
  }
5543
5452
 
5544
- function copyFile (srcStat, src, dest, opts, cb) {
5545
- fs$o.copyFile(src, dest, err => {
5453
+ function copyFile$1 (srcStat, src, dest, opts, cb) {
5454
+ fs$p.copyFile(src, dest, err => {
5546
5455
  if (err) return cb(err)
5547
5456
  if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb)
5548
- return setDestMode(dest, srcStat.mode, cb)
5457
+ return setDestMode$1(dest, srcStat.mode, cb)
5549
5458
  });
5550
5459
  }
5551
5460
 
@@ -5553,8 +5462,8 @@ function handleTimestampsAndMode (srcMode, src, dest, cb) {
5553
5462
  // Make sure the file is writable before setting the timestamp
5554
5463
  // otherwise open fails with EPERM when invoked with 'r+'
5555
5464
  // (through utimes call)
5556
- if (fileIsNotWritable(srcMode)) {
5557
- return makeFileWritable(dest, srcMode, err => {
5465
+ if (fileIsNotWritable$1(srcMode)) {
5466
+ return makeFileWritable$1(dest, srcMode, err => {
5558
5467
  if (err) return cb(err)
5559
5468
  return setDestTimestampsAndMode(srcMode, src, dest, cb)
5560
5469
  })
@@ -5562,52 +5471,52 @@ function handleTimestampsAndMode (srcMode, src, dest, cb) {
5562
5471
  return setDestTimestampsAndMode(srcMode, src, dest, cb)
5563
5472
  }
5564
5473
 
5565
- function fileIsNotWritable (srcMode) {
5474
+ function fileIsNotWritable$1 (srcMode) {
5566
5475
  return (srcMode & 0o200) === 0
5567
5476
  }
5568
5477
 
5569
- function makeFileWritable (dest, srcMode, cb) {
5570
- return setDestMode(dest, srcMode | 0o200, cb)
5478
+ function makeFileWritable$1 (dest, srcMode, cb) {
5479
+ return setDestMode$1(dest, srcMode | 0o200, cb)
5571
5480
  }
5572
5481
 
5573
5482
  function setDestTimestampsAndMode (srcMode, src, dest, cb) {
5574
- setDestTimestamps(src, dest, err => {
5483
+ setDestTimestamps$1(src, dest, err => {
5575
5484
  if (err) return cb(err)
5576
- return setDestMode(dest, srcMode, cb)
5485
+ return setDestMode$1(dest, srcMode, cb)
5577
5486
  });
5578
5487
  }
5579
5488
 
5580
- function setDestMode (dest, srcMode, cb) {
5581
- return fs$o.chmod(dest, srcMode, cb)
5489
+ function setDestMode$1 (dest, srcMode, cb) {
5490
+ return fs$p.chmod(dest, srcMode, cb)
5582
5491
  }
5583
5492
 
5584
- function setDestTimestamps (src, dest, cb) {
5493
+ function setDestTimestamps$1 (src, dest, cb) {
5585
5494
  // The initial srcStat.atime cannot be trusted
5586
5495
  // because it is modified by the read(2) system call
5587
5496
  // (See https://nodejs.org/api/fs.html#fs_stat_time_values)
5588
- fs$o.stat(src, (err, updatedSrcStat) => {
5497
+ fs$p.stat(src, (err, updatedSrcStat) => {
5589
5498
  if (err) return cb(err)
5590
5499
  return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb)
5591
5500
  });
5592
5501
  }
5593
5502
 
5594
- function onDir (srcStat, destStat, src, dest, opts, cb) {
5595
- if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb)
5596
- return copyDir(src, dest, opts, cb)
5503
+ function onDir$1 (srcStat, destStat, src, dest, opts, cb) {
5504
+ if (!destStat) return mkDirAndCopy$1(srcStat.mode, src, dest, opts, cb)
5505
+ return copyDir$1(src, dest, opts, cb)
5597
5506
  }
5598
5507
 
5599
- function mkDirAndCopy (srcMode, src, dest, opts, cb) {
5600
- fs$o.mkdir(dest, err => {
5508
+ function mkDirAndCopy$1 (srcMode, src, dest, opts, cb) {
5509
+ fs$p.mkdir(dest, err => {
5601
5510
  if (err) return cb(err)
5602
- copyDir(src, dest, opts, err => {
5511
+ copyDir$1(src, dest, opts, err => {
5603
5512
  if (err) return cb(err)
5604
- return setDestMode(dest, srcMode, cb)
5513
+ return setDestMode$1(dest, srcMode, cb)
5605
5514
  });
5606
5515
  });
5607
5516
  }
5608
5517
 
5609
- function copyDir (src, dest, opts, cb) {
5610
- fs$o.readdir(src, (err, items) => {
5518
+ function copyDir$1 (src, dest, opts, cb) {
5519
+ fs$p.readdir(src, (err, items) => {
5611
5520
  if (err) return cb(err)
5612
5521
  return copyDirItems(items, src, dest, opts, cb)
5613
5522
  });
@@ -5616,71 +5525,240 @@ function copyDir (src, dest, opts, cb) {
5616
5525
  function copyDirItems (items, src, dest, opts, cb) {
5617
5526
  const item = items.pop();
5618
5527
  if (!item) return cb()
5619
- return copyDirItem(items, item, src, dest, opts, cb)
5528
+ return copyDirItem$1(items, item, src, dest, opts, cb)
5620
5529
  }
5621
5530
 
5622
- function copyDirItem (items, item, src, dest, opts, cb) {
5623
- const srcItem = path$p.join(src, item);
5624
- const destItem = path$p.join(dest, item);
5625
- stat$3.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => {
5531
+ function copyDirItem$1 (items, item, src, dest, opts, cb) {
5532
+ const srcItem = path$q.join(src, item);
5533
+ const destItem = path$q.join(dest, item);
5534
+ stat$4.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => {
5626
5535
  if (err) return cb(err)
5627
5536
  const { destStat } = stats;
5628
- startCopy(destStat, srcItem, destItem, opts, err => {
5537
+ startCopy$1(destStat, srcItem, destItem, opts, err => {
5629
5538
  if (err) return cb(err)
5630
5539
  return copyDirItems(items, src, dest, opts, cb)
5631
5540
  });
5632
5541
  });
5633
5542
  }
5634
5543
 
5635
- function onLink (destStat, src, dest, opts, cb) {
5636
- fs$o.readlink(src, (err, resolvedSrc) => {
5544
+ function onLink$1 (destStat, src, dest, opts, cb) {
5545
+ fs$p.readlink(src, (err, resolvedSrc) => {
5637
5546
  if (err) return cb(err)
5638
5547
  if (opts.dereference) {
5639
- resolvedSrc = path$p.resolve(process.cwd(), resolvedSrc);
5548
+ resolvedSrc = path$q.resolve(process.cwd(), resolvedSrc);
5640
5549
  }
5641
5550
 
5642
5551
  if (!destStat) {
5643
- return fs$o.symlink(resolvedSrc, dest, cb)
5552
+ return fs$p.symlink(resolvedSrc, dest, cb)
5644
5553
  } else {
5645
- fs$o.readlink(dest, (err, resolvedDest) => {
5554
+ fs$p.readlink(dest, (err, resolvedDest) => {
5646
5555
  if (err) {
5647
5556
  // dest exists and is a regular file or directory,
5648
5557
  // Windows may throw UNKNOWN error. If dest already exists,
5649
5558
  // fs throws error anyway, so no need to guard against it here.
5650
- if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs$o.symlink(resolvedSrc, dest, cb)
5559
+ if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs$p.symlink(resolvedSrc, dest, cb)
5651
5560
  return cb(err)
5652
5561
  }
5653
5562
  if (opts.dereference) {
5654
- resolvedDest = path$p.resolve(process.cwd(), resolvedDest);
5563
+ resolvedDest = path$q.resolve(process.cwd(), resolvedDest);
5655
5564
  }
5656
- if (stat$3.isSrcSubdir(resolvedSrc, resolvedDest)) {
5565
+ if (stat$4.isSrcSubdir(resolvedSrc, resolvedDest)) {
5657
5566
  return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`))
5658
5567
  }
5659
5568
 
5660
5569
  // do not copy if src is a subdir of dest since unlinking
5661
5570
  // dest in this case would result in removing src contents
5662
5571
  // and therefore a broken symlink would be created.
5663
- if (destStat.isDirectory() && stat$3.isSrcSubdir(resolvedDest, resolvedSrc)) {
5572
+ if (destStat.isDirectory() && stat$4.isSrcSubdir(resolvedDest, resolvedSrc)) {
5664
5573
  return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`))
5665
5574
  }
5666
- return copyLink(resolvedSrc, dest, cb)
5575
+ return copyLink$1(resolvedSrc, dest, cb)
5667
5576
  });
5668
5577
  }
5669
5578
  });
5670
5579
  }
5671
5580
 
5672
- function copyLink (resolvedSrc, dest, cb) {
5673
- fs$o.unlink(dest, err => {
5581
+ function copyLink$1 (resolvedSrc, dest, cb) {
5582
+ fs$p.unlink(dest, err => {
5674
5583
  if (err) return cb(err)
5675
- return fs$o.symlink(resolvedSrc, dest, cb)
5584
+ return fs$p.symlink(resolvedSrc, dest, cb)
5676
5585
  });
5677
5586
  }
5678
5587
 
5679
5588
  var copy_1 = copy$2;
5680
5589
 
5590
+ const fs$o = gracefulFs;
5591
+ const path$p = require$$0$8;
5592
+ const mkdirsSync$1 = mkdirs$2.mkdirsSync;
5593
+ const utimesMillisSync = utimes.utimesMillisSync;
5594
+ const stat$3 = stat$5;
5595
+
5596
+ function copySync$1 (src, dest, opts) {
5597
+ if (typeof opts === 'function') {
5598
+ opts = { filter: opts };
5599
+ }
5600
+
5601
+ opts = opts || {};
5602
+ opts.clobber = 'clobber' in opts ? !!opts.clobber : true; // default to true for now
5603
+ opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber; // overwrite falls back to clobber
5604
+
5605
+ // Warn about using preserveTimestamps on 32-bit node
5606
+ if (opts.preserveTimestamps && process.arch === 'ia32') {
5607
+ process.emitWarning(
5608
+ 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' +
5609
+ '\tsee https://github.com/jprichardson/node-fs-extra/issues/269',
5610
+ 'Warning', 'fs-extra-WARN0002'
5611
+ );
5612
+ }
5613
+
5614
+ const { srcStat, destStat } = stat$3.checkPathsSync(src, dest, 'copy', opts);
5615
+ stat$3.checkParentPathsSync(src, srcStat, dest, 'copy');
5616
+ return handleFilterAndCopy(destStat, src, dest, opts)
5617
+ }
5618
+
5619
+ function handleFilterAndCopy (destStat, src, dest, opts) {
5620
+ if (opts.filter && !opts.filter(src, dest)) return
5621
+ const destParent = path$p.dirname(dest);
5622
+ if (!fs$o.existsSync(destParent)) mkdirsSync$1(destParent);
5623
+ return getStats(destStat, src, dest, opts)
5624
+ }
5625
+
5626
+ function startCopy (destStat, src, dest, opts) {
5627
+ if (opts.filter && !opts.filter(src, dest)) return
5628
+ return getStats(destStat, src, dest, opts)
5629
+ }
5630
+
5631
+ function getStats (destStat, src, dest, opts) {
5632
+ const statSync = opts.dereference ? fs$o.statSync : fs$o.lstatSync;
5633
+ const srcStat = statSync(src);
5634
+
5635
+ if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)
5636
+ else if (srcStat.isFile() ||
5637
+ srcStat.isCharacterDevice() ||
5638
+ srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)
5639
+ else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)
5640
+ else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)
5641
+ else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)
5642
+ throw new Error(`Unknown file: ${src}`)
5643
+ }
5644
+
5645
+ function onFile (srcStat, destStat, src, dest, opts) {
5646
+ if (!destStat) return copyFile(srcStat, src, dest, opts)
5647
+ return mayCopyFile(srcStat, src, dest, opts)
5648
+ }
5649
+
5650
+ function mayCopyFile (srcStat, src, dest, opts) {
5651
+ if (opts.overwrite) {
5652
+ fs$o.unlinkSync(dest);
5653
+ return copyFile(srcStat, src, dest, opts)
5654
+ } else if (opts.errorOnExist) {
5655
+ throw new Error(`'${dest}' already exists`)
5656
+ }
5657
+ }
5658
+
5659
+ function copyFile (srcStat, src, dest, opts) {
5660
+ fs$o.copyFileSync(src, dest);
5661
+ if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest);
5662
+ return setDestMode(dest, srcStat.mode)
5663
+ }
5664
+
5665
+ function handleTimestamps (srcMode, src, dest) {
5666
+ // Make sure the file is writable before setting the timestamp
5667
+ // otherwise open fails with EPERM when invoked with 'r+'
5668
+ // (through utimes call)
5669
+ if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode);
5670
+ return setDestTimestamps(src, dest)
5671
+ }
5672
+
5673
+ function fileIsNotWritable (srcMode) {
5674
+ return (srcMode & 0o200) === 0
5675
+ }
5676
+
5677
+ function makeFileWritable (dest, srcMode) {
5678
+ return setDestMode(dest, srcMode | 0o200)
5679
+ }
5680
+
5681
+ function setDestMode (dest, srcMode) {
5682
+ return fs$o.chmodSync(dest, srcMode)
5683
+ }
5684
+
5685
+ function setDestTimestamps (src, dest) {
5686
+ // The initial srcStat.atime cannot be trusted
5687
+ // because it is modified by the read(2) system call
5688
+ // (See https://nodejs.org/api/fs.html#fs_stat_time_values)
5689
+ const updatedSrcStat = fs$o.statSync(src);
5690
+ return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)
5691
+ }
5692
+
5693
+ function onDir (srcStat, destStat, src, dest, opts) {
5694
+ if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)
5695
+ return copyDir(src, dest, opts)
5696
+ }
5697
+
5698
+ function mkDirAndCopy (srcMode, src, dest, opts) {
5699
+ fs$o.mkdirSync(dest);
5700
+ copyDir(src, dest, opts);
5701
+ return setDestMode(dest, srcMode)
5702
+ }
5703
+
5704
+ function copyDir (src, dest, opts) {
5705
+ fs$o.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts));
5706
+ }
5707
+
5708
+ function copyDirItem (item, src, dest, opts) {
5709
+ const srcItem = path$p.join(src, item);
5710
+ const destItem = path$p.join(dest, item);
5711
+ const { destStat } = stat$3.checkPathsSync(srcItem, destItem, 'copy', opts);
5712
+ return startCopy(destStat, srcItem, destItem, opts)
5713
+ }
5714
+
5715
+ function onLink (destStat, src, dest, opts) {
5716
+ let resolvedSrc = fs$o.readlinkSync(src);
5717
+ if (opts.dereference) {
5718
+ resolvedSrc = path$p.resolve(process.cwd(), resolvedSrc);
5719
+ }
5720
+
5721
+ if (!destStat) {
5722
+ return fs$o.symlinkSync(resolvedSrc, dest)
5723
+ } else {
5724
+ let resolvedDest;
5725
+ try {
5726
+ resolvedDest = fs$o.readlinkSync(dest);
5727
+ } catch (err) {
5728
+ // dest exists and is a regular file or directory,
5729
+ // Windows may throw UNKNOWN error. If dest already exists,
5730
+ // fs throws error anyway, so no need to guard against it here.
5731
+ if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs$o.symlinkSync(resolvedSrc, dest)
5732
+ throw err
5733
+ }
5734
+ if (opts.dereference) {
5735
+ resolvedDest = path$p.resolve(process.cwd(), resolvedDest);
5736
+ }
5737
+ if (stat$3.isSrcSubdir(resolvedSrc, resolvedDest)) {
5738
+ throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)
5739
+ }
5740
+
5741
+ // prevent copy if src is a subdir of dest since unlinking
5742
+ // dest in this case would result in removing src contents
5743
+ // and therefore a broken symlink would be created.
5744
+ if (fs$o.statSync(dest).isDirectory() && stat$3.isSrcSubdir(resolvedDest, resolvedSrc)) {
5745
+ throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)
5746
+ }
5747
+ return copyLink(resolvedSrc, dest)
5748
+ }
5749
+ }
5750
+
5751
+ function copyLink (resolvedSrc, dest) {
5752
+ fs$o.unlinkSync(dest);
5753
+ return fs$o.symlinkSync(resolvedSrc, dest)
5754
+ }
5755
+
5756
+ var copySync_1 = copySync$1;
5757
+
5681
5758
  const u$8 = universalify$1.fromCallback;
5682
5759
  var copy$1 = {
5683
- copy: u$8(copy_1)
5760
+ copy: u$8(copy_1),
5761
+ copySync: copySync_1
5684
5762
  };
5685
5763
 
5686
5764
  const fs$n = gracefulFs;
@@ -6048,7 +6126,7 @@ const path$m = require$$0$8;
6048
6126
  const fs$k = gracefulFs;
6049
6127
  const mkdir$2 = mkdirs$2;
6050
6128
 
6051
- function createFile (file, callback) {
6129
+ function createFile$1 (file, callback) {
6052
6130
  function makeFile () {
6053
6131
  fs$k.writeFile(file, '', err => {
6054
6132
  if (err) return callback(err)
@@ -6083,7 +6161,7 @@ function createFile (file, callback) {
6083
6161
  });
6084
6162
  }
6085
6163
 
6086
- function createFileSync (file) {
6164
+ function createFileSync$1 (file) {
6087
6165
  let stats;
6088
6166
  try {
6089
6167
  stats = fs$k.statSync(file);
@@ -6106,9 +6184,9 @@ function createFileSync (file) {
6106
6184
  fs$k.writeFileSync(file, '');
6107
6185
  }
6108
6186
 
6109
- var file$2 = {
6110
- createFile: u$5(createFile),
6111
- createFileSync
6187
+ var file$1 = {
6188
+ createFile: u$5(createFile$1),
6189
+ createFileSync: createFileSync$1
6112
6190
  };
6113
6191
 
6114
6192
  const u$4 = universalify$1.fromCallback;
@@ -6118,7 +6196,7 @@ const mkdir$1 = mkdirs$2;
6118
6196
  const pathExists$6 = pathExists_1.pathExists;
6119
6197
  const { areIdentical: areIdentical$1 } = stat$5;
6120
6198
 
6121
- function createLink (srcpath, dstpath, callback) {
6199
+ function createLink$1 (srcpath, dstpath, callback) {
6122
6200
  function makeLink (srcpath, dstpath) {
6123
6201
  fs$j.link(srcpath, dstpath, err => {
6124
6202
  if (err) return callback(err)
@@ -6147,7 +6225,7 @@ function createLink (srcpath, dstpath, callback) {
6147
6225
  });
6148
6226
  }
6149
6227
 
6150
- function createLinkSync (srcpath, dstpath) {
6228
+ function createLinkSync$1 (srcpath, dstpath) {
6151
6229
  let dstStat;
6152
6230
  try {
6153
6231
  dstStat = fs$j.lstatSync(dstpath);
@@ -6169,9 +6247,9 @@ function createLinkSync (srcpath, dstpath) {
6169
6247
  return fs$j.linkSync(srcpath, dstpath)
6170
6248
  }
6171
6249
 
6172
- var link$2 = {
6173
- createLink: u$4(createLink),
6174
- createLinkSync
6250
+ var link$1 = {
6251
+ createLink: u$4(createLink$1),
6252
+ createLinkSync: createLinkSync$1
6175
6253
  };
6176
6254
 
6177
6255
  const path$k = require$$0$8;
@@ -6321,7 +6399,7 @@ const pathExists$4 = pathExists_1.pathExists;
6321
6399
 
6322
6400
  const { areIdentical } = stat$5;
6323
6401
 
6324
- function createSymlink (srcpath, dstpath, type, callback) {
6402
+ function createSymlink$1 (srcpath, dstpath, type, callback) {
6325
6403
  callback = (typeof type === 'function') ? type : callback;
6326
6404
  type = (typeof type === 'function') ? false : type;
6327
6405
 
@@ -6357,7 +6435,7 @@ function _createSymlink (srcpath, dstpath, type, callback) {
6357
6435
  });
6358
6436
  }
6359
6437
 
6360
- function createSymlinkSync (srcpath, dstpath, type) {
6438
+ function createSymlinkSync$1 (srcpath, dstpath, type) {
6361
6439
  let stats;
6362
6440
  try {
6363
6441
  stats = fs$g.lstatSync(dstpath);
@@ -6378,31 +6456,31 @@ function createSymlinkSync (srcpath, dstpath, type) {
6378
6456
  return fs$g.symlinkSync(srcpath, dstpath, type)
6379
6457
  }
6380
6458
 
6381
- var symlink$1 = {
6382
- createSymlink: u$3(createSymlink),
6383
- createSymlinkSync
6459
+ var symlink = {
6460
+ createSymlink: u$3(createSymlink$1),
6461
+ createSymlinkSync: createSymlinkSync$1
6384
6462
  };
6385
6463
 
6386
- const file$1 = file$2;
6387
- const link$1 = link$2;
6388
- const symlink = symlink$1;
6464
+ const { createFile, createFileSync } = file$1;
6465
+ const { createLink, createLinkSync } = link$1;
6466
+ const { createSymlink, createSymlinkSync } = symlink;
6389
6467
 
6390
6468
  var ensure = {
6391
6469
  // file
6392
- createFile: file$1.createFile,
6393
- createFileSync: file$1.createFileSync,
6394
- ensureFile: file$1.createFile,
6395
- ensureFileSync: file$1.createFileSync,
6470
+ createFile,
6471
+ createFileSync,
6472
+ ensureFile: createFile,
6473
+ ensureFileSync: createFileSync,
6396
6474
  // link
6397
- createLink: link$1.createLink,
6398
- createLinkSync: link$1.createLinkSync,
6399
- ensureLink: link$1.createLink,
6400
- ensureLinkSync: link$1.createLinkSync,
6475
+ createLink,
6476
+ createLinkSync,
6477
+ ensureLink: createLink,
6478
+ ensureLinkSync: createLinkSync,
6401
6479
  // symlink
6402
- createSymlink: symlink.createSymlink,
6403
- createSymlinkSync: symlink.createSymlinkSync,
6404
- ensureSymlink: symlink.createSymlink,
6405
- ensureSymlinkSync: symlink.createSymlinkSync
6480
+ createSymlink,
6481
+ createSymlinkSync,
6482
+ ensureSymlink: createSymlink,
6483
+ ensureSymlinkSync: createSymlinkSync
6406
6484
  };
6407
6485
 
6408
6486
  function stringify$8 (obj, { EOL = '\n', finalEOL = true, replacer = null, spaces } = {}) {
@@ -6553,13 +6631,13 @@ function outputFileSync$1 (file, ...args) {
6553
6631
  fs$f.writeFileSync(file, ...args);
6554
6632
  }
6555
6633
 
6556
- var output = {
6634
+ var outputFile_1 = {
6557
6635
  outputFile: u$2(outputFile$1),
6558
6636
  outputFileSync: outputFileSync$1
6559
6637
  };
6560
6638
 
6561
6639
  const { stringify: stringify$6 } = utils$n;
6562
- const { outputFile } = output;
6640
+ const { outputFile } = outputFile_1;
6563
6641
 
6564
6642
  async function outputJson (file, data, options = {}) {
6565
6643
  const str = stringify$6(data, options);
@@ -6570,7 +6648,7 @@ async function outputJson (file, data, options = {}) {
6570
6648
  var outputJson_1 = outputJson;
6571
6649
 
6572
6650
  const { stringify: stringify$5 } = utils$n;
6573
- const { outputFileSync } = output;
6651
+ const { outputFileSync } = outputFile_1;
6574
6652
 
6575
6653
  function outputJsonSync (file, data, options) {
6576
6654
  const str = stringify$5(data, options);
@@ -6597,68 +6675,11 @@ var json = jsonFile;
6597
6675
 
6598
6676
  const fs$e = gracefulFs;
6599
6677
  const path$h = require$$0$8;
6600
- const copySync = copySync$1.copySync;
6601
- const removeSync = remove_1.removeSync;
6602
- const mkdirpSync = mkdirs$2.mkdirpSync;
6603
- const stat$2 = stat$5;
6604
-
6605
- function moveSync$1 (src, dest, opts) {
6606
- opts = opts || {};
6607
- const overwrite = opts.overwrite || opts.clobber || false;
6608
-
6609
- const { srcStat, isChangingCase = false } = stat$2.checkPathsSync(src, dest, 'move', opts);
6610
- stat$2.checkParentPathsSync(src, srcStat, dest, 'move');
6611
- if (!isParentRoot$1(dest)) mkdirpSync(path$h.dirname(dest));
6612
- return doRename$1(src, dest, overwrite, isChangingCase)
6613
- }
6614
-
6615
- function isParentRoot$1 (dest) {
6616
- const parent = path$h.dirname(dest);
6617
- const parsedPath = path$h.parse(parent);
6618
- return parsedPath.root === parent
6619
- }
6620
-
6621
- function doRename$1 (src, dest, overwrite, isChangingCase) {
6622
- if (isChangingCase) return rename$1(src, dest, overwrite)
6623
- if (overwrite) {
6624
- removeSync(dest);
6625
- return rename$1(src, dest, overwrite)
6626
- }
6627
- if (fs$e.existsSync(dest)) throw new Error('dest already exists.')
6628
- return rename$1(src, dest, overwrite)
6629
- }
6630
-
6631
- function rename$1 (src, dest, overwrite) {
6632
- try {
6633
- fs$e.renameSync(src, dest);
6634
- } catch (err) {
6635
- if (err.code !== 'EXDEV') throw err
6636
- return moveAcrossDevice$1(src, dest, overwrite)
6637
- }
6638
- }
6639
-
6640
- function moveAcrossDevice$1 (src, dest, overwrite) {
6641
- const opts = {
6642
- overwrite,
6643
- errorOnExist: true
6644
- };
6645
- copySync(src, dest, opts);
6646
- return removeSync(src)
6647
- }
6648
-
6649
- var moveSync_1 = moveSync$1;
6650
-
6651
- var moveSync = {
6652
- moveSync: moveSync_1
6653
- };
6654
-
6655
- const fs$d = gracefulFs;
6656
- const path$g = require$$0$8;
6657
6678
  const copy = copy$1.copy;
6658
6679
  const remove = remove_1.remove;
6659
6680
  const mkdirp = mkdirs$2.mkdirp;
6660
6681
  const pathExists$2 = pathExists_1.pathExists;
6661
- const stat$1 = stat$5;
6682
+ const stat$2 = stat$5;
6662
6683
 
6663
6684
  function move$1 (src, dest, opts, cb) {
6664
6685
  if (typeof opts === 'function') {
@@ -6666,52 +6687,54 @@ function move$1 (src, dest, opts, cb) {
6666
6687
  opts = {};
6667
6688
  }
6668
6689
 
6690
+ opts = opts || {};
6691
+
6669
6692
  const overwrite = opts.overwrite || opts.clobber || false;
6670
6693
 
6671
- stat$1.checkPaths(src, dest, 'move', opts, (err, stats) => {
6694
+ stat$2.checkPaths(src, dest, 'move', opts, (err, stats) => {
6672
6695
  if (err) return cb(err)
6673
6696
  const { srcStat, isChangingCase = false } = stats;
6674
- stat$1.checkParentPaths(src, srcStat, dest, 'move', err => {
6697
+ stat$2.checkParentPaths(src, srcStat, dest, 'move', err => {
6675
6698
  if (err) return cb(err)
6676
- if (isParentRoot(dest)) return doRename(src, dest, overwrite, isChangingCase, cb)
6677
- mkdirp(path$g.dirname(dest), err => {
6699
+ if (isParentRoot$1(dest)) return doRename$1(src, dest, overwrite, isChangingCase, cb)
6700
+ mkdirp(path$h.dirname(dest), err => {
6678
6701
  if (err) return cb(err)
6679
- return doRename(src, dest, overwrite, isChangingCase, cb)
6702
+ return doRename$1(src, dest, overwrite, isChangingCase, cb)
6680
6703
  });
6681
6704
  });
6682
6705
  });
6683
6706
  }
6684
6707
 
6685
- function isParentRoot (dest) {
6686
- const parent = path$g.dirname(dest);
6687
- const parsedPath = path$g.parse(parent);
6708
+ function isParentRoot$1 (dest) {
6709
+ const parent = path$h.dirname(dest);
6710
+ const parsedPath = path$h.parse(parent);
6688
6711
  return parsedPath.root === parent
6689
6712
  }
6690
6713
 
6691
- function doRename (src, dest, overwrite, isChangingCase, cb) {
6692
- if (isChangingCase) return rename(src, dest, overwrite, cb)
6714
+ function doRename$1 (src, dest, overwrite, isChangingCase, cb) {
6715
+ if (isChangingCase) return rename$1(src, dest, overwrite, cb)
6693
6716
  if (overwrite) {
6694
6717
  return remove(dest, err => {
6695
6718
  if (err) return cb(err)
6696
- return rename(src, dest, overwrite, cb)
6719
+ return rename$1(src, dest, overwrite, cb)
6697
6720
  })
6698
6721
  }
6699
6722
  pathExists$2(dest, (err, destExists) => {
6700
6723
  if (err) return cb(err)
6701
6724
  if (destExists) return cb(new Error('dest already exists.'))
6702
- return rename(src, dest, overwrite, cb)
6725
+ return rename$1(src, dest, overwrite, cb)
6703
6726
  });
6704
6727
  }
6705
6728
 
6706
- function rename (src, dest, overwrite, cb) {
6707
- fs$d.rename(src, dest, err => {
6729
+ function rename$1 (src, dest, overwrite, cb) {
6730
+ fs$e.rename(src, dest, err => {
6708
6731
  if (!err) return cb()
6709
6732
  if (err.code !== 'EXDEV') return cb(err)
6710
- return moveAcrossDevice(src, dest, overwrite, cb)
6733
+ return moveAcrossDevice$1(src, dest, overwrite, cb)
6711
6734
  });
6712
6735
  }
6713
6736
 
6714
- function moveAcrossDevice (src, dest, overwrite, cb) {
6737
+ function moveAcrossDevice$1 (src, dest, overwrite, cb) {
6715
6738
  const opts = {
6716
6739
  overwrite,
6717
6740
  errorOnExist: true
@@ -6724,24 +6747,76 @@ function moveAcrossDevice (src, dest, overwrite, cb) {
6724
6747
 
6725
6748
  var move_1 = move$1;
6726
6749
 
6750
+ const fs$d = gracefulFs;
6751
+ const path$g = require$$0$8;
6752
+ const copySync = copy$1.copySync;
6753
+ const removeSync = remove_1.removeSync;
6754
+ const mkdirpSync = mkdirs$2.mkdirpSync;
6755
+ const stat$1 = stat$5;
6756
+
6757
+ function moveSync (src, dest, opts) {
6758
+ opts = opts || {};
6759
+ const overwrite = opts.overwrite || opts.clobber || false;
6760
+
6761
+ const { srcStat, isChangingCase = false } = stat$1.checkPathsSync(src, dest, 'move', opts);
6762
+ stat$1.checkParentPathsSync(src, srcStat, dest, 'move');
6763
+ if (!isParentRoot(dest)) mkdirpSync(path$g.dirname(dest));
6764
+ return doRename(src, dest, overwrite, isChangingCase)
6765
+ }
6766
+
6767
+ function isParentRoot (dest) {
6768
+ const parent = path$g.dirname(dest);
6769
+ const parsedPath = path$g.parse(parent);
6770
+ return parsedPath.root === parent
6771
+ }
6772
+
6773
+ function doRename (src, dest, overwrite, isChangingCase) {
6774
+ if (isChangingCase) return rename(src, dest, overwrite)
6775
+ if (overwrite) {
6776
+ removeSync(dest);
6777
+ return rename(src, dest, overwrite)
6778
+ }
6779
+ if (fs$d.existsSync(dest)) throw new Error('dest already exists.')
6780
+ return rename(src, dest, overwrite)
6781
+ }
6782
+
6783
+ function rename (src, dest, overwrite) {
6784
+ try {
6785
+ fs$d.renameSync(src, dest);
6786
+ } catch (err) {
6787
+ if (err.code !== 'EXDEV') throw err
6788
+ return moveAcrossDevice(src, dest, overwrite)
6789
+ }
6790
+ }
6791
+
6792
+ function moveAcrossDevice (src, dest, overwrite) {
6793
+ const opts = {
6794
+ overwrite,
6795
+ errorOnExist: true
6796
+ };
6797
+ copySync(src, dest, opts);
6798
+ return removeSync(src)
6799
+ }
6800
+
6801
+ var moveSync_1 = moveSync;
6802
+
6727
6803
  const u = universalify$1.fromCallback;
6728
6804
  var move = {
6729
- move: u(move_1)
6805
+ move: u(move_1),
6806
+ moveSync: moveSync_1
6730
6807
  };
6731
6808
 
6732
6809
  var lib$2 = {
6733
6810
  // Export promiseified graceful-fs:
6734
6811
  ...fs$v,
6735
6812
  // Export extra methods:
6736
- ...copySync$1,
6737
6813
  ...copy$1,
6738
6814
  ...empty$2,
6739
6815
  ...ensure,
6740
6816
  ...json,
6741
6817
  ...mkdirs$2,
6742
- ...moveSync,
6743
6818
  ...move,
6744
- ...output,
6819
+ ...outputFile_1,
6745
6820
  ...pathExists_1,
6746
6821
  ...remove_1
6747
6822
  };
@@ -10698,10 +10773,10 @@ micromatch$1.not = (list, patterns, options = {}) => {
10698
10773
  items.push(state.output);
10699
10774
  };
10700
10775
 
10701
- let matches = micromatch$1(list, patterns, { ...options, onResult });
10776
+ let matches = new Set(micromatch$1(list, patterns, { ...options, onResult }));
10702
10777
 
10703
10778
  for (let item of items) {
10704
- if (!matches.includes(item)) {
10779
+ if (!matches.has(item)) {
10705
10780
  result.add(item);
10706
10781
  }
10707
10782
  }
@@ -10951,7 +11026,7 @@ micromatch$1.scan = (...args) => picomatch.scan(...args);
10951
11026
  *
10952
11027
  * ```js
10953
11028
  * const mm = require('micromatch');
10954
- * const state = mm(pattern[, options]);
11029
+ * const state = mm.parse(pattern[, options]);
10955
11030
  * ```
10956
11031
  * @param {String} `glob`
10957
11032
  * @param {Object} `options`
@@ -52044,16 +52119,16 @@ class Interface {
52044
52119
  message.forEach((msg) => {
52045
52120
  const [label, ...values] = msg;
52046
52121
  const spacer = [INDENT, INDENT].join("");
52047
- output$1.info(source$1.cyan([spacer, label, ...values].join(spacer)));
52122
+ output.info(source$1.cyan([spacer, label, ...values].join(spacer)));
52048
52123
  });
52049
52124
  return;
52050
52125
  }
52051
52126
  const styledText = options.error ? source$1.redBright`${message}` : message;
52052
52127
  const type = options.error ? `${source$1.black.bgRedBright` error `}${INDENT}` : "";
52053
52128
  const combinedMessage = [type, styledText].join("");
52054
- output$1.info(options.strong ? source$1.bold(combinedMessage) : combinedMessage);
52129
+ output.info(options.strong ? source$1.bold(combinedMessage) : combinedMessage);
52055
52130
  if (options.breakAfter) {
52056
- output$1.info("");
52131
+ output.info("");
52057
52132
  }
52058
52133
  }
52059
52134
  printFile({ path, overwritten, diff }) {
@@ -54142,7 +54217,7 @@ function _defu(baseObj, defaults, namespace = ".", merger) {
54142
54217
  continue;
54143
54218
  }
54144
54219
  if (Array.isArray(val) && Array.isArray(obj[key])) {
54145
- obj[key] = obj[key].concat(val);
54220
+ obj[key] = val.concat(obj[key]);
54146
54221
  } else if (isObject(val) && isObject(obj[key])) {
54147
54222
  obj[key] = _defu(val, obj[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
54148
54223
  } else {
@@ -54151,23 +54226,10 @@ function _defu(baseObj, defaults, namespace = ".", merger) {
54151
54226
  }
54152
54227
  return obj;
54153
54228
  }
54154
- function extend(merger) {
54229
+ function createDefu(merger) {
54155
54230
  return (...args) => args.reduce((p, c) => _defu(p, c, "", merger), {});
54156
54231
  }
54157
- const defu = extend();
54158
- defu.fn = extend((obj, key, currentValue, _namespace) => {
54159
- if (typeof obj[key] !== "undefined" && typeof currentValue === "function") {
54160
- obj[key] = currentValue(obj[key]);
54161
- return true;
54162
- }
54163
- });
54164
- defu.arrayFn = extend((obj, key, currentValue, _namespace) => {
54165
- if (Array.isArray(obj[key]) && typeof currentValue === "function") {
54166
- obj[key] = currentValue(obj[key]);
54167
- return true;
54168
- }
54169
- });
54170
- defu.extend = extend;
54232
+ const defu = createDefu();
54171
54233
 
54172
54234
  const defaultExtensions = ["mts", "cts", "ts", "mjs", "cjs", "js", "json", ""];
54173
54235
 
@@ -63395,4 +63457,4 @@ class Command extends Command$1 {
63395
63457
  }
63396
63458
 
63397
63459
  export { Command as C, HelpfulError as H, source$1 as a, commonjsGlobal as b, cliHydrogenPackageJson as c, commonjsRequire as d, semver as s };
63398
- //# sourceMappingURL=Command-720f737d.js.map
63460
+ //# sourceMappingURL=Command-a8d57e22.js.map