@dropthis/cli 0.1.5

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.
Files changed (236) hide show
  1. package/README.md +171 -0
  2. package/dist/cli.cjs +1489 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/node_modules/@dropthis/node/README.md +90 -0
  5. package/node_modules/@dropthis/node/dist/index.cjs +1010 -0
  6. package/node_modules/@dropthis/node/dist/index.cjs.map +1 -0
  7. package/node_modules/@dropthis/node/dist/index.d.cts +408 -0
  8. package/node_modules/@dropthis/node/dist/index.d.ts +408 -0
  9. package/node_modules/@dropthis/node/dist/index.mjs +969 -0
  10. package/node_modules/@dropthis/node/dist/index.mjs.map +1 -0
  11. package/node_modules/@dropthis/node/package.json +55 -0
  12. package/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
  13. package/node_modules/@nodelib/fs.scandir/README.md +171 -0
  14. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
  15. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
  16. package/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
  17. package/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
  18. package/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
  19. package/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
  20. package/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
  21. package/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
  22. package/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
  23. package/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
  24. package/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
  25. package/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
  26. package/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
  27. package/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
  28. package/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
  29. package/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
  30. package/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
  31. package/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
  32. package/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
  33. package/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
  34. package/node_modules/@nodelib/fs.scandir/package.json +44 -0
  35. package/node_modules/@nodelib/fs.stat/LICENSE +21 -0
  36. package/node_modules/@nodelib/fs.stat/README.md +126 -0
  37. package/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
  38. package/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
  39. package/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
  40. package/node_modules/@nodelib/fs.stat/out/index.js +26 -0
  41. package/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
  42. package/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
  43. package/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
  44. package/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
  45. package/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
  46. package/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
  47. package/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
  48. package/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
  49. package/node_modules/@nodelib/fs.stat/package.json +37 -0
  50. package/node_modules/@nodelib/fs.walk/LICENSE +21 -0
  51. package/node_modules/@nodelib/fs.walk/README.md +215 -0
  52. package/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
  53. package/node_modules/@nodelib/fs.walk/out/index.js +34 -0
  54. package/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
  55. package/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
  56. package/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
  57. package/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
  58. package/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
  59. package/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
  60. package/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
  61. package/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
  62. package/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
  63. package/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
  64. package/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
  65. package/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
  66. package/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
  67. package/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
  68. package/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
  69. package/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
  70. package/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
  71. package/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
  72. package/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
  73. package/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
  74. package/node_modules/@nodelib/fs.walk/package.json +44 -0
  75. package/node_modules/braces/LICENSE +21 -0
  76. package/node_modules/braces/README.md +586 -0
  77. package/node_modules/braces/index.js +170 -0
  78. package/node_modules/braces/lib/compile.js +60 -0
  79. package/node_modules/braces/lib/constants.js +57 -0
  80. package/node_modules/braces/lib/expand.js +113 -0
  81. package/node_modules/braces/lib/parse.js +331 -0
  82. package/node_modules/braces/lib/stringify.js +32 -0
  83. package/node_modules/braces/lib/utils.js +122 -0
  84. package/node_modules/braces/package.json +77 -0
  85. package/node_modules/fast-glob/LICENSE +21 -0
  86. package/node_modules/fast-glob/README.md +830 -0
  87. package/node_modules/fast-glob/out/index.d.ts +40 -0
  88. package/node_modules/fast-glob/out/index.js +102 -0
  89. package/node_modules/fast-glob/out/managers/tasks.d.ts +22 -0
  90. package/node_modules/fast-glob/out/managers/tasks.js +110 -0
  91. package/node_modules/fast-glob/out/providers/async.d.ts +9 -0
  92. package/node_modules/fast-glob/out/providers/async.js +23 -0
  93. package/node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0
  94. package/node_modules/fast-glob/out/providers/filters/deep.js +62 -0
  95. package/node_modules/fast-glob/out/providers/filters/entry.d.ts +17 -0
  96. package/node_modules/fast-glob/out/providers/filters/entry.js +85 -0
  97. package/node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0
  98. package/node_modules/fast-glob/out/providers/filters/error.js +15 -0
  99. package/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0
  100. package/node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0
  101. package/node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0
  102. package/node_modules/fast-glob/out/providers/matchers/partial.js +38 -0
  103. package/node_modules/fast-glob/out/providers/provider.d.ts +19 -0
  104. package/node_modules/fast-glob/out/providers/provider.js +48 -0
  105. package/node_modules/fast-glob/out/providers/stream.d.ts +11 -0
  106. package/node_modules/fast-glob/out/providers/stream.js +31 -0
  107. package/node_modules/fast-glob/out/providers/sync.d.ts +9 -0
  108. package/node_modules/fast-glob/out/providers/sync.js +23 -0
  109. package/node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0
  110. package/node_modules/fast-glob/out/providers/transformers/entry.js +26 -0
  111. package/node_modules/fast-glob/out/readers/async.d.ts +10 -0
  112. package/node_modules/fast-glob/out/readers/async.js +35 -0
  113. package/node_modules/fast-glob/out/readers/reader.d.ts +15 -0
  114. package/node_modules/fast-glob/out/readers/reader.js +33 -0
  115. package/node_modules/fast-glob/out/readers/stream.d.ts +14 -0
  116. package/node_modules/fast-glob/out/readers/stream.js +55 -0
  117. package/node_modules/fast-glob/out/readers/sync.d.ts +12 -0
  118. package/node_modules/fast-glob/out/readers/sync.js +43 -0
  119. package/node_modules/fast-glob/out/settings.d.ts +164 -0
  120. package/node_modules/fast-glob/out/settings.js +59 -0
  121. package/node_modules/fast-glob/out/types/index.d.ts +31 -0
  122. package/node_modules/fast-glob/out/types/index.js +2 -0
  123. package/node_modules/fast-glob/out/utils/array.d.ts +2 -0
  124. package/node_modules/fast-glob/out/utils/array.js +22 -0
  125. package/node_modules/fast-glob/out/utils/errno.d.ts +2 -0
  126. package/node_modules/fast-glob/out/utils/errno.js +7 -0
  127. package/node_modules/fast-glob/out/utils/fs.d.ts +4 -0
  128. package/node_modules/fast-glob/out/utils/fs.js +19 -0
  129. package/node_modules/fast-glob/out/utils/index.d.ts +8 -0
  130. package/node_modules/fast-glob/out/utils/index.js +17 -0
  131. package/node_modules/fast-glob/out/utils/path.d.ts +13 -0
  132. package/node_modules/fast-glob/out/utils/path.js +68 -0
  133. package/node_modules/fast-glob/out/utils/pattern.d.ts +49 -0
  134. package/node_modules/fast-glob/out/utils/pattern.js +206 -0
  135. package/node_modules/fast-glob/out/utils/stream.d.ts +4 -0
  136. package/node_modules/fast-glob/out/utils/stream.js +17 -0
  137. package/node_modules/fast-glob/out/utils/string.d.ts +2 -0
  138. package/node_modules/fast-glob/out/utils/string.js +11 -0
  139. package/node_modules/fast-glob/package.json +81 -0
  140. package/node_modules/fastq/LICENSE +13 -0
  141. package/node_modules/fastq/README.md +310 -0
  142. package/node_modules/fastq/SECURITY.md +15 -0
  143. package/node_modules/fastq/bench.js +66 -0
  144. package/node_modules/fastq/eslint.config.js +11 -0
  145. package/node_modules/fastq/example.js +14 -0
  146. package/node_modules/fastq/example.mjs +9 -0
  147. package/node_modules/fastq/index.d.ts +59 -0
  148. package/node_modules/fastq/package.json +49 -0
  149. package/node_modules/fastq/queue.js +346 -0
  150. package/node_modules/fastq/test/example.ts +83 -0
  151. package/node_modules/fastq/test/promise.js +325 -0
  152. package/node_modules/fastq/test/test.js +733 -0
  153. package/node_modules/fastq/test/tsconfig.json +11 -0
  154. package/node_modules/fill-range/LICENSE +21 -0
  155. package/node_modules/fill-range/README.md +237 -0
  156. package/node_modules/fill-range/index.js +248 -0
  157. package/node_modules/fill-range/package.json +74 -0
  158. package/node_modules/glob-parent/LICENSE +15 -0
  159. package/node_modules/glob-parent/README.md +137 -0
  160. package/node_modules/glob-parent/index.js +42 -0
  161. package/node_modules/glob-parent/package.json +48 -0
  162. package/node_modules/ignore/LICENSE-MIT +21 -0
  163. package/node_modules/ignore/README.md +452 -0
  164. package/node_modules/ignore/index.d.ts +81 -0
  165. package/node_modules/ignore/index.js +784 -0
  166. package/node_modules/ignore/legacy.js +681 -0
  167. package/node_modules/ignore/package.json +87 -0
  168. package/node_modules/is-extglob/LICENSE +21 -0
  169. package/node_modules/is-extglob/README.md +107 -0
  170. package/node_modules/is-extglob/index.js +20 -0
  171. package/node_modules/is-extglob/package.json +69 -0
  172. package/node_modules/is-glob/LICENSE +21 -0
  173. package/node_modules/is-glob/README.md +206 -0
  174. package/node_modules/is-glob/index.js +150 -0
  175. package/node_modules/is-glob/package.json +81 -0
  176. package/node_modules/is-number/LICENSE +21 -0
  177. package/node_modules/is-number/README.md +187 -0
  178. package/node_modules/is-number/index.js +18 -0
  179. package/node_modules/is-number/package.json +82 -0
  180. package/node_modules/merge2/LICENSE +21 -0
  181. package/node_modules/merge2/README.md +144 -0
  182. package/node_modules/merge2/index.js +144 -0
  183. package/node_modules/merge2/package.json +43 -0
  184. package/node_modules/micromatch/LICENSE +21 -0
  185. package/node_modules/micromatch/README.md +1024 -0
  186. package/node_modules/micromatch/index.js +474 -0
  187. package/node_modules/micromatch/package.json +119 -0
  188. package/node_modules/mime-db/HISTORY.md +541 -0
  189. package/node_modules/mime-db/LICENSE +23 -0
  190. package/node_modules/mime-db/README.md +109 -0
  191. package/node_modules/mime-db/db.json +9342 -0
  192. package/node_modules/mime-db/index.js +12 -0
  193. package/node_modules/mime-db/package.json +56 -0
  194. package/node_modules/mime-types/HISTORY.md +421 -0
  195. package/node_modules/mime-types/LICENSE +23 -0
  196. package/node_modules/mime-types/README.md +126 -0
  197. package/node_modules/mime-types/index.js +211 -0
  198. package/node_modules/mime-types/mimeScore.js +52 -0
  199. package/node_modules/mime-types/package.json +45 -0
  200. package/node_modules/picomatch/LICENSE +21 -0
  201. package/node_modules/picomatch/README.md +716 -0
  202. package/node_modules/picomatch/index.js +3 -0
  203. package/node_modules/picomatch/lib/constants.js +184 -0
  204. package/node_modules/picomatch/lib/parse.js +1392 -0
  205. package/node_modules/picomatch/lib/picomatch.js +342 -0
  206. package/node_modules/picomatch/lib/scan.js +391 -0
  207. package/node_modules/picomatch/lib/utils.js +64 -0
  208. package/node_modules/picomatch/package.json +81 -0
  209. package/node_modules/queue-microtask/LICENSE +20 -0
  210. package/node_modules/queue-microtask/README.md +90 -0
  211. package/node_modules/queue-microtask/index.d.ts +2 -0
  212. package/node_modules/queue-microtask/index.js +9 -0
  213. package/node_modules/queue-microtask/package.json +55 -0
  214. package/node_modules/reusify/.github/dependabot.yml +7 -0
  215. package/node_modules/reusify/.github/workflows/ci.yml +96 -0
  216. package/node_modules/reusify/LICENSE +22 -0
  217. package/node_modules/reusify/README.md +139 -0
  218. package/node_modules/reusify/SECURITY.md +15 -0
  219. package/node_modules/reusify/benchmarks/createNoCodeFunction.js +30 -0
  220. package/node_modules/reusify/benchmarks/fib.js +13 -0
  221. package/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +38 -0
  222. package/node_modules/reusify/eslint.config.js +14 -0
  223. package/node_modules/reusify/package.json +50 -0
  224. package/node_modules/reusify/reusify.d.ts +14 -0
  225. package/node_modules/reusify/reusify.js +33 -0
  226. package/node_modules/reusify/test.js +66 -0
  227. package/node_modules/reusify/tsconfig.json +11 -0
  228. package/node_modules/run-parallel/LICENSE +20 -0
  229. package/node_modules/run-parallel/README.md +85 -0
  230. package/node_modules/run-parallel/index.js +51 -0
  231. package/node_modules/run-parallel/package.json +58 -0
  232. package/node_modules/to-regex-range/LICENSE +21 -0
  233. package/node_modules/to-regex-range/README.md +305 -0
  234. package/node_modules/to-regex-range/index.js +288 -0
  235. package/node_modules/to-regex-range/package.json +88 -0
  236. package/package.json +53 -0
@@ -0,0 +1,391 @@
1
+ 'use strict';
2
+
3
+ const utils = require('./utils');
4
+ const {
5
+ CHAR_ASTERISK, /* * */
6
+ CHAR_AT, /* @ */
7
+ CHAR_BACKWARD_SLASH, /* \ */
8
+ CHAR_COMMA, /* , */
9
+ CHAR_DOT, /* . */
10
+ CHAR_EXCLAMATION_MARK, /* ! */
11
+ CHAR_FORWARD_SLASH, /* / */
12
+ CHAR_LEFT_CURLY_BRACE, /* { */
13
+ CHAR_LEFT_PARENTHESES, /* ( */
14
+ CHAR_LEFT_SQUARE_BRACKET, /* [ */
15
+ CHAR_PLUS, /* + */
16
+ CHAR_QUESTION_MARK, /* ? */
17
+ CHAR_RIGHT_CURLY_BRACE, /* } */
18
+ CHAR_RIGHT_PARENTHESES, /* ) */
19
+ CHAR_RIGHT_SQUARE_BRACKET /* ] */
20
+ } = require('./constants');
21
+
22
+ const isPathSeparator = code => {
23
+ return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
24
+ };
25
+
26
+ const depth = token => {
27
+ if (token.isPrefix !== true) {
28
+ token.depth = token.isGlobstar ? Infinity : 1;
29
+ }
30
+ };
31
+
32
+ /**
33
+ * Quickly scans a glob pattern and returns an object with a handful of
34
+ * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),
35
+ * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not
36
+ * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).
37
+ *
38
+ * ```js
39
+ * const pm = require('picomatch');
40
+ * console.log(pm.scan('foo/bar/*.js'));
41
+ * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }
42
+ * ```
43
+ * @param {String} `str`
44
+ * @param {Object} `options`
45
+ * @return {Object} Returns an object with tokens and regex source string.
46
+ * @api public
47
+ */
48
+
49
+ const scan = (input, options) => {
50
+ const opts = options || {};
51
+
52
+ const length = input.length - 1;
53
+ const scanToEnd = opts.parts === true || opts.scanToEnd === true;
54
+ const slashes = [];
55
+ const tokens = [];
56
+ const parts = [];
57
+
58
+ let str = input;
59
+ let index = -1;
60
+ let start = 0;
61
+ let lastIndex = 0;
62
+ let isBrace = false;
63
+ let isBracket = false;
64
+ let isGlob = false;
65
+ let isExtglob = false;
66
+ let isGlobstar = false;
67
+ let braceEscaped = false;
68
+ let backslashes = false;
69
+ let negated = false;
70
+ let negatedExtglob = false;
71
+ let finished = false;
72
+ let braces = 0;
73
+ let prev;
74
+ let code;
75
+ let token = { value: '', depth: 0, isGlob: false };
76
+
77
+ const eos = () => index >= length;
78
+ const peek = () => str.charCodeAt(index + 1);
79
+ const advance = () => {
80
+ prev = code;
81
+ return str.charCodeAt(++index);
82
+ };
83
+
84
+ while (index < length) {
85
+ code = advance();
86
+ let next;
87
+
88
+ if (code === CHAR_BACKWARD_SLASH) {
89
+ backslashes = token.backslashes = true;
90
+ code = advance();
91
+
92
+ if (code === CHAR_LEFT_CURLY_BRACE) {
93
+ braceEscaped = true;
94
+ }
95
+ continue;
96
+ }
97
+
98
+ if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {
99
+ braces++;
100
+
101
+ while (eos() !== true && (code = advance())) {
102
+ if (code === CHAR_BACKWARD_SLASH) {
103
+ backslashes = token.backslashes = true;
104
+ advance();
105
+ continue;
106
+ }
107
+
108
+ if (code === CHAR_LEFT_CURLY_BRACE) {
109
+ braces++;
110
+ continue;
111
+ }
112
+
113
+ if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
114
+ isBrace = token.isBrace = true;
115
+ isGlob = token.isGlob = true;
116
+ finished = true;
117
+
118
+ if (scanToEnd === true) {
119
+ continue;
120
+ }
121
+
122
+ break;
123
+ }
124
+
125
+ if (braceEscaped !== true && code === CHAR_COMMA) {
126
+ isBrace = token.isBrace = true;
127
+ isGlob = token.isGlob = true;
128
+ finished = true;
129
+
130
+ if (scanToEnd === true) {
131
+ continue;
132
+ }
133
+
134
+ break;
135
+ }
136
+
137
+ if (code === CHAR_RIGHT_CURLY_BRACE) {
138
+ braces--;
139
+
140
+ if (braces === 0) {
141
+ braceEscaped = false;
142
+ isBrace = token.isBrace = true;
143
+ finished = true;
144
+ break;
145
+ }
146
+ }
147
+ }
148
+
149
+ if (scanToEnd === true) {
150
+ continue;
151
+ }
152
+
153
+ break;
154
+ }
155
+
156
+ if (code === CHAR_FORWARD_SLASH) {
157
+ slashes.push(index);
158
+ tokens.push(token);
159
+ token = { value: '', depth: 0, isGlob: false };
160
+
161
+ if (finished === true) continue;
162
+ if (prev === CHAR_DOT && index === (start + 1)) {
163
+ start += 2;
164
+ continue;
165
+ }
166
+
167
+ lastIndex = index + 1;
168
+ continue;
169
+ }
170
+
171
+ if (opts.noext !== true) {
172
+ const isExtglobChar = code === CHAR_PLUS
173
+ || code === CHAR_AT
174
+ || code === CHAR_ASTERISK
175
+ || code === CHAR_QUESTION_MARK
176
+ || code === CHAR_EXCLAMATION_MARK;
177
+
178
+ if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {
179
+ isGlob = token.isGlob = true;
180
+ isExtglob = token.isExtglob = true;
181
+ finished = true;
182
+ if (code === CHAR_EXCLAMATION_MARK && index === start) {
183
+ negatedExtglob = true;
184
+ }
185
+
186
+ if (scanToEnd === true) {
187
+ while (eos() !== true && (code = advance())) {
188
+ if (code === CHAR_BACKWARD_SLASH) {
189
+ backslashes = token.backslashes = true;
190
+ code = advance();
191
+ continue;
192
+ }
193
+
194
+ if (code === CHAR_RIGHT_PARENTHESES) {
195
+ isGlob = token.isGlob = true;
196
+ finished = true;
197
+ break;
198
+ }
199
+ }
200
+ continue;
201
+ }
202
+ break;
203
+ }
204
+ }
205
+
206
+ if (code === CHAR_ASTERISK) {
207
+ if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
208
+ isGlob = token.isGlob = true;
209
+ finished = true;
210
+
211
+ if (scanToEnd === true) {
212
+ continue;
213
+ }
214
+ break;
215
+ }
216
+
217
+ if (code === CHAR_QUESTION_MARK) {
218
+ isGlob = token.isGlob = true;
219
+ finished = true;
220
+
221
+ if (scanToEnd === true) {
222
+ continue;
223
+ }
224
+ break;
225
+ }
226
+
227
+ if (code === CHAR_LEFT_SQUARE_BRACKET) {
228
+ while (eos() !== true && (next = advance())) {
229
+ if (next === CHAR_BACKWARD_SLASH) {
230
+ backslashes = token.backslashes = true;
231
+ advance();
232
+ continue;
233
+ }
234
+
235
+ if (next === CHAR_RIGHT_SQUARE_BRACKET) {
236
+ isBracket = token.isBracket = true;
237
+ isGlob = token.isGlob = true;
238
+ finished = true;
239
+ break;
240
+ }
241
+ }
242
+
243
+ if (scanToEnd === true) {
244
+ continue;
245
+ }
246
+
247
+ break;
248
+ }
249
+
250
+ if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
251
+ negated = token.negated = true;
252
+ start++;
253
+ continue;
254
+ }
255
+
256
+ if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
257
+ isGlob = token.isGlob = true;
258
+
259
+ if (scanToEnd === true) {
260
+ while (eos() !== true && (code = advance())) {
261
+ if (code === CHAR_LEFT_PARENTHESES) {
262
+ backslashes = token.backslashes = true;
263
+ code = advance();
264
+ continue;
265
+ }
266
+
267
+ if (code === CHAR_RIGHT_PARENTHESES) {
268
+ finished = true;
269
+ break;
270
+ }
271
+ }
272
+ continue;
273
+ }
274
+ break;
275
+ }
276
+
277
+ if (isGlob === true) {
278
+ finished = true;
279
+
280
+ if (scanToEnd === true) {
281
+ continue;
282
+ }
283
+
284
+ break;
285
+ }
286
+ }
287
+
288
+ if (opts.noext === true) {
289
+ isExtglob = false;
290
+ isGlob = false;
291
+ }
292
+
293
+ let base = str;
294
+ let prefix = '';
295
+ let glob = '';
296
+
297
+ if (start > 0) {
298
+ prefix = str.slice(0, start);
299
+ str = str.slice(start);
300
+ lastIndex -= start;
301
+ }
302
+
303
+ if (base && isGlob === true && lastIndex > 0) {
304
+ base = str.slice(0, lastIndex);
305
+ glob = str.slice(lastIndex);
306
+ } else if (isGlob === true) {
307
+ base = '';
308
+ glob = str;
309
+ } else {
310
+ base = str;
311
+ }
312
+
313
+ if (base && base !== '' && base !== '/' && base !== str) {
314
+ if (isPathSeparator(base.charCodeAt(base.length - 1))) {
315
+ base = base.slice(0, -1);
316
+ }
317
+ }
318
+
319
+ if (opts.unescape === true) {
320
+ if (glob) glob = utils.removeBackslashes(glob);
321
+
322
+ if (base && backslashes === true) {
323
+ base = utils.removeBackslashes(base);
324
+ }
325
+ }
326
+
327
+ const state = {
328
+ prefix,
329
+ input,
330
+ start,
331
+ base,
332
+ glob,
333
+ isBrace,
334
+ isBracket,
335
+ isGlob,
336
+ isExtglob,
337
+ isGlobstar,
338
+ negated,
339
+ negatedExtglob
340
+ };
341
+
342
+ if (opts.tokens === true) {
343
+ state.maxDepth = 0;
344
+ if (!isPathSeparator(code)) {
345
+ tokens.push(token);
346
+ }
347
+ state.tokens = tokens;
348
+ }
349
+
350
+ if (opts.parts === true || opts.tokens === true) {
351
+ let prevIndex;
352
+
353
+ for (let idx = 0; idx < slashes.length; idx++) {
354
+ const n = prevIndex ? prevIndex + 1 : start;
355
+ const i = slashes[idx];
356
+ const value = input.slice(n, i);
357
+ if (opts.tokens) {
358
+ if (idx === 0 && start !== 0) {
359
+ tokens[idx].isPrefix = true;
360
+ tokens[idx].value = prefix;
361
+ } else {
362
+ tokens[idx].value = value;
363
+ }
364
+ depth(tokens[idx]);
365
+ state.maxDepth += tokens[idx].depth;
366
+ }
367
+ if (idx !== 0 || value !== '') {
368
+ parts.push(value);
369
+ }
370
+ prevIndex = i;
371
+ }
372
+
373
+ if (prevIndex && prevIndex + 1 < input.length) {
374
+ const value = input.slice(prevIndex + 1);
375
+ parts.push(value);
376
+
377
+ if (opts.tokens) {
378
+ tokens[tokens.length - 1].value = value;
379
+ depth(tokens[tokens.length - 1]);
380
+ state.maxDepth += tokens[tokens.length - 1].depth;
381
+ }
382
+ }
383
+
384
+ state.slashes = slashes;
385
+ state.parts = parts;
386
+ }
387
+
388
+ return state;
389
+ };
390
+
391
+ module.exports = scan;
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ const path = require('path');
4
+ const win32 = process.platform === 'win32';
5
+ const {
6
+ REGEX_BACKSLASH,
7
+ REGEX_REMOVE_BACKSLASH,
8
+ REGEX_SPECIAL_CHARS,
9
+ REGEX_SPECIAL_CHARS_GLOBAL
10
+ } = require('./constants');
11
+
12
+ exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
13
+ exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
14
+ exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
15
+ exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
16
+ exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
17
+
18
+ exports.removeBackslashes = str => {
19
+ return str.replace(REGEX_REMOVE_BACKSLASH, match => {
20
+ return match === '\\' ? '' : match;
21
+ });
22
+ };
23
+
24
+ exports.supportsLookbehinds = () => {
25
+ const segs = process.version.slice(1).split('.').map(Number);
26
+ if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
27
+ return true;
28
+ }
29
+ return false;
30
+ };
31
+
32
+ exports.isWindows = options => {
33
+ if (options && typeof options.windows === 'boolean') {
34
+ return options.windows;
35
+ }
36
+ return win32 === true || path.sep === '\\';
37
+ };
38
+
39
+ exports.escapeLast = (input, char, lastIdx) => {
40
+ const idx = input.lastIndexOf(char, lastIdx);
41
+ if (idx === -1) return input;
42
+ if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
43
+ return `${input.slice(0, idx)}\\${input.slice(idx)}`;
44
+ };
45
+
46
+ exports.removePrefix = (input, state = {}) => {
47
+ let output = input;
48
+ if (output.startsWith('./')) {
49
+ output = output.slice(2);
50
+ state.prefix = './';
51
+ }
52
+ return output;
53
+ };
54
+
55
+ exports.wrapOutput = (input, state = {}, options = {}) => {
56
+ const prepend = options.contains ? '' : '^';
57
+ const append = options.contains ? '' : '$';
58
+
59
+ let output = `${prepend}(?:${input})${append}`;
60
+ if (state.negated === true) {
61
+ output = `(?:^(?!${output}).*$)`;
62
+ }
63
+ return output;
64
+ };
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "picomatch",
3
+ "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.",
4
+ "version": "2.3.2",
5
+ "homepage": "https://github.com/micromatch/picomatch",
6
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
7
+ "funding": "https://github.com/sponsors/jonschlinkert",
8
+ "repository": "micromatch/picomatch",
9
+ "bugs": {
10
+ "url": "https://github.com/micromatch/picomatch/issues"
11
+ },
12
+ "license": "MIT",
13
+ "files": [
14
+ "index.js",
15
+ "lib"
16
+ ],
17
+ "main": "index.js",
18
+ "engines": {
19
+ "node": ">=8.6"
20
+ },
21
+ "scripts": {
22
+ "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .",
23
+ "mocha": "mocha --reporter dot",
24
+ "test": "npm run lint && npm run mocha",
25
+ "test:ci": "npm run test:cover",
26
+ "test:cover": "nyc npm run mocha"
27
+ },
28
+ "devDependencies": {
29
+ "eslint": "^6.8.0",
30
+ "fill-range": "^7.0.1",
31
+ "gulp-format-md": "^2.0.0",
32
+ "mocha": "^6.2.2",
33
+ "nyc": "^15.0.0",
34
+ "time-require": "github:jonschlinkert/time-require"
35
+ },
36
+ "keywords": [
37
+ "glob",
38
+ "match",
39
+ "picomatch"
40
+ ],
41
+ "nyc": {
42
+ "reporter": [
43
+ "html",
44
+ "lcov",
45
+ "text-summary"
46
+ ]
47
+ },
48
+ "verb": {
49
+ "toc": {
50
+ "render": true,
51
+ "method": "preWrite",
52
+ "maxdepth": 3
53
+ },
54
+ "layout": "empty",
55
+ "tasks": [
56
+ "readme"
57
+ ],
58
+ "plugins": [
59
+ "gulp-format-md"
60
+ ],
61
+ "lint": {
62
+ "reflinks": true
63
+ },
64
+ "related": {
65
+ "list": [
66
+ "braces",
67
+ "micromatch"
68
+ ]
69
+ },
70
+ "reflinks": [
71
+ "braces",
72
+ "expand-brackets",
73
+ "extglob",
74
+ "fill-range",
75
+ "micromatch",
76
+ "minimatch",
77
+ "nanomatch",
78
+ "picomatch"
79
+ ]
80
+ }
81
+ }
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) Feross Aboukhadijeh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,90 @@
1
+ # queue-microtask [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
2
+
3
+ [ci-image]: https://img.shields.io/github/workflow/status/feross/queue-microtask/ci/master
4
+ [ci-url]: https://github.com/feross/queue-microtask/actions
5
+ [npm-image]: https://img.shields.io/npm/v/queue-microtask.svg
6
+ [npm-url]: https://npmjs.org/package/queue-microtask
7
+ [downloads-image]: https://img.shields.io/npm/dm/queue-microtask.svg
8
+ [downloads-url]: https://npmjs.org/package/queue-microtask
9
+ [standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
10
+ [standard-url]: https://standardjs.com
11
+
12
+ ### fast, tiny [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) shim for modern engines
13
+
14
+ - Use [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask) in all modern JS engines.
15
+ - No dependencies. Less than 10 lines. No shims or complicated fallbacks.
16
+ - Optimal performance in all modern environments
17
+ - Uses `queueMicrotask` in modern environments
18
+ - Fallback to `Promise.resolve().then(fn)` in Node.js 10 and earlier, and old browsers (same performance as `queueMicrotask`)
19
+
20
+ ## install
21
+
22
+ ```
23
+ npm install queue-microtask
24
+ ```
25
+
26
+ ## usage
27
+
28
+ ```js
29
+ const queueMicrotask = require('queue-microtask')
30
+
31
+ queueMicrotask(() => { /* this will run soon */ })
32
+ ```
33
+
34
+ ## What is `queueMicrotask` and why would one use it?
35
+
36
+ The `queueMicrotask` function is a WHATWG standard. It queues a microtask to be executed prior to control returning to the event loop.
37
+
38
+ A microtask is a short function which will run after the current task has completed its work and when there is no other code waiting to be run before control of the execution context is returned to the event loop.
39
+
40
+ The code `queueMicrotask(fn)` is equivalent to the code `Promise.resolve().then(fn)`. It is also very similar to [`process.nextTick(fn)`](https://nodejs.org/api/process.html#process_process_nexttick_callback_args) in Node.
41
+
42
+ Using microtasks lets code run without interfering with any other, potentially higher priority, code that is pending, but before the JS engine regains control over the execution context.
43
+
44
+ See the [spec](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#microtask-queuing) or [Node documentation](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback) for more information.
45
+
46
+ ## Who is this package for?
47
+
48
+ This package allows you to use `queueMicrotask` safely in all modern JS engines. Use it if you prioritize small JS bundle size over support for old browsers.
49
+
50
+ If you just need to support Node 12 and later, use `queueMicrotask` directly. If you need to support all versions of Node, use this package.
51
+
52
+ ## Why not use `process.nextTick`?
53
+
54
+ In Node, `queueMicrotask` and `process.nextTick` are [essentially equivalent](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback), though there are [subtle differences](https://github.com/YuzuJS/setImmediate#macrotasks-and-microtasks) that don't matter in most situations.
55
+
56
+ You can think of `queueMicrotask` as a standardized version of `process.nextTick` that works in the browser. No need to rely on your browser bundler to shim `process` for the browser environment.
57
+
58
+ ## Why not use `setTimeout(fn, 0)`?
59
+
60
+ This approach is the most compatible, but it has problems. Modern browsers throttle timers severely, so `setTimeout(…, 0)` usually takes at least 4ms to run. Furthermore, the throttling gets even worse if the page is backgrounded. If you have many `setTimeout` calls, then this can severely limit the performance of your program.
61
+
62
+ ## Why not use a microtask library like [`immediate`](https://www.npmjs.com/package/immediate) or [`asap`](https://www.npmjs.com/package/asap)?
63
+
64
+ These packages are great! However, if you prioritize small JS bundle size over optimal performance in old browsers then you may want to consider this package.
65
+
66
+ This package (`queue-microtask`) is four times smaller than `immediate`, twice as small as `asap`, and twice as small as using `process.nextTick` and letting the browser bundler shim it automatically.
67
+
68
+ Note: This package throws an exception in JS environments which lack `Promise` support -- which are usually very old browsers and Node.js versions.
69
+
70
+ Since the `queueMicrotask` API is supported in Node.js, Chrome, Firefox, Safari, Opera, and Edge, **the vast majority of users will get optimal performance**. Any JS environment with `Promise`, which is almost all of them, also get optimal performance. If you need support for JS environments which lack `Promise` support, use one of the alternative packages.
71
+
72
+ ## What is a shim?
73
+
74
+ > In computer programming, a shim is a library that transparently intercepts API calls and changes the arguments passed, handles the operation itself or redirects the operation elsewhere. – [Wikipedia](https://en.wikipedia.org/wiki/Shim_(computing))
75
+
76
+ This package could also be described as a "ponyfill".
77
+
78
+ > A ponyfill is almost the same as a polyfill, but not quite. Instead of patching functionality for older browsers, a ponyfill provides that functionality as a standalone module you can use. – [PonyFoo](https://ponyfoo.com/articles/polyfills-or-ponyfills)
79
+
80
+ ## API
81
+
82
+ ### `queueMicrotask(fn)`
83
+
84
+ The `queueMicrotask()` method queues a microtask.
85
+
86
+ The `fn` argument is a function to be executed after all pending tasks have completed but before yielding control to the browser's event loop.
87
+
88
+ ## license
89
+
90
+ MIT. Copyright (c) [Feross Aboukhadijeh](https://feross.org).
@@ -0,0 +1,2 @@
1
+ declare const queueMicrotask: (cb: () => void) => void
2
+ export = queueMicrotask
@@ -0,0 +1,9 @@
1
+ /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
2
+ let promise
3
+
4
+ module.exports = typeof queueMicrotask === 'function'
5
+ ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)
6
+ // reuse resolved promise, and allocate it lazily
7
+ : cb => (promise || (promise = Promise.resolve()))
8
+ .then(cb)
9
+ .catch(err => setTimeout(() => { throw err }, 0))