@shopify/cli-hydrogen 1.1.0 → 2.0.1

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