pretierr 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. package/LICENSE +4379 -0
  2. package/README.md +109 -0
  3. package/bin/prettier.cjs +64 -0
  4. package/doc.d.ts +243 -0
  5. package/doc.js +1319 -0
  6. package/doc.mjs +1291 -0
  7. package/index.cjs +648 -0
  8. package/index.d.ts +941 -0
  9. package/index.mjs +22795 -0
  10. package/internal/cli.mjs +3884 -0
  11. package/package.json +206 -0
  12. package/plugins/acorn.d.ts +6 -0
  13. package/plugins/acorn.js +15 -0
  14. package/plugins/acorn.mjs +15 -0
  15. package/plugins/angular.d.ts +8 -0
  16. package/plugins/angular.js +1 -0
  17. package/plugins/angular.mjs +1 -0
  18. package/plugins/babel.d.ts +18 -0
  19. package/plugins/babel.js +15 -0
  20. package/plugins/babel.mjs +15 -0
  21. package/plugins/estree.d.ts +1 -0
  22. package/plugins/estree.js +36 -0
  23. package/plugins/estree.mjs +36 -0
  24. package/plugins/flow.d.ts +5 -0
  25. package/plugins/flow.js +19 -0
  26. package/plugins/flow.mjs +19 -0
  27. package/plugins/glimmer.d.ts +5 -0
  28. package/plugins/glimmer.js +30 -0
  29. package/plugins/glimmer.mjs +30 -0
  30. package/plugins/graphql.d.ts +5 -0
  31. package/plugins/graphql.js +29 -0
  32. package/plugins/graphql.mjs +29 -0
  33. package/plugins/html.d.ts +8 -0
  34. package/plugins/html.js +22 -0
  35. package/plugins/html.mjs +22 -0
  36. package/plugins/markdown.d.ts +7 -0
  37. package/plugins/markdown.js +62 -0
  38. package/plugins/markdown.mjs +62 -0
  39. package/plugins/meriyah.d.ts +5 -0
  40. package/plugins/meriyah.js +4 -0
  41. package/plugins/meriyah.mjs +4 -0
  42. package/plugins/postcss.d.ts +7 -0
  43. package/plugins/postcss.js +52 -0
  44. package/plugins/postcss.mjs +52 -0
  45. package/plugins/typescript.d.ts +5 -0
  46. package/plugins/typescript.js +20 -0
  47. package/plugins/typescript.mjs +20 -0
  48. package/plugins/yaml.d.ts +5 -0
  49. package/plugins/yaml.js +161 -0
  50. package/plugins/yaml.mjs +161 -0
  51. package/standalone.d.ts +33 -0
  52. package/standalone.js +35 -0
  53. package/standalone.mjs +35 -0
  54. package/te24xjoq.cjs +1 -0
@@ -0,0 +1,3884 @@
1
+ import { createRequire as __prettierCreateRequire } from "module";
2
+ import { fileURLToPath as __prettierFileUrlToPath } from "url";
3
+ import { dirname as __prettierDirname } from "path";
4
+ const require = __prettierCreateRequire(import.meta.url);
5
+ const __filename = __prettierFileUrlToPath(import.meta.url);
6
+ const __dirname = __prettierDirname(__filename);
7
+
8
+ var __create = Object.create;
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __typeError = (msg) => {
15
+ throw TypeError(msg);
16
+ };
17
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
18
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
19
+ }) : x)(function(x) {
20
+ if (typeof require !== "undefined") return require.apply(this, arguments);
21
+ throw Error('Dynamic require of "' + x + '" is not supported');
22
+ });
23
+ var __commonJS = (cb, mod) => function __require2() {
24
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
43
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
44
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
45
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
46
+
47
+ // node_modules/dashify/index.js
48
+ var require_dashify = __commonJS({
49
+ "node_modules/dashify/index.js"(exports, module) {
50
+ "use strict";
51
+ module.exports = (str, options) => {
52
+ if (typeof str !== "string") throw new TypeError("expected a string");
53
+ return str.trim().replace(/([a-z])([A-Z])/g, "$1-$2").replace(/\W/g, (m) => /[À-ž]/.test(m) ? m : "-").replace(/^-+|-+$/g, "").replace(/-{2,}/g, (m) => options && options.condense ? "-" : m).toLowerCase();
54
+ };
55
+ }
56
+ });
57
+
58
+ // node_modules/minimist/index.js
59
+ var require_minimist = __commonJS({
60
+ "node_modules/minimist/index.js"(exports, module) {
61
+ "use strict";
62
+ function hasKey(obj, keys) {
63
+ var o = obj;
64
+ keys.slice(0, -1).forEach(function(key2) {
65
+ o = o[key2] || {};
66
+ });
67
+ var key = keys[keys.length - 1];
68
+ return key in o;
69
+ }
70
+ function isNumber(x) {
71
+ if (typeof x === "number") {
72
+ return true;
73
+ }
74
+ if (/^0x[0-9a-f]+$/i.test(x)) {
75
+ return true;
76
+ }
77
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
78
+ }
79
+ function isConstructorOrProto(obj, key) {
80
+ return key === "constructor" && typeof obj[key] === "function" || key === "__proto__";
81
+ }
82
+ module.exports = function(args, opts) {
83
+ if (!opts) {
84
+ opts = {};
85
+ }
86
+ var flags = {
87
+ bools: {},
88
+ strings: {},
89
+ unknownFn: null
90
+ };
91
+ if (typeof opts.unknown === "function") {
92
+ flags.unknownFn = opts.unknown;
93
+ }
94
+ if (typeof opts.boolean === "boolean" && opts.boolean) {
95
+ flags.allBools = true;
96
+ } else {
97
+ [].concat(opts.boolean).filter(Boolean).forEach(function(key2) {
98
+ flags.bools[key2] = true;
99
+ });
100
+ }
101
+ var aliases = {};
102
+ function aliasIsBoolean(key2) {
103
+ return aliases[key2].some(function(x) {
104
+ return flags.bools[x];
105
+ });
106
+ }
107
+ Object.keys(opts.alias || {}).forEach(function(key2) {
108
+ aliases[key2] = [].concat(opts.alias[key2]);
109
+ aliases[key2].forEach(function(x) {
110
+ aliases[x] = [key2].concat(aliases[key2].filter(function(y) {
111
+ return x !== y;
112
+ }));
113
+ });
114
+ });
115
+ [].concat(opts.string).filter(Boolean).forEach(function(key2) {
116
+ flags.strings[key2] = true;
117
+ if (aliases[key2]) {
118
+ [].concat(aliases[key2]).forEach(function(k) {
119
+ flags.strings[k] = true;
120
+ });
121
+ }
122
+ });
123
+ var defaults = opts.default || {};
124
+ var argv = { _: [] };
125
+ function argDefined(key2, arg2) {
126
+ return flags.allBools && /^--[^=]+$/.test(arg2) || flags.strings[key2] || flags.bools[key2] || aliases[key2];
127
+ }
128
+ function setKey(obj, keys, value2) {
129
+ var o = obj;
130
+ for (var i2 = 0; i2 < keys.length - 1; i2++) {
131
+ var key2 = keys[i2];
132
+ if (isConstructorOrProto(o, key2)) {
133
+ return;
134
+ }
135
+ if (o[key2] === void 0) {
136
+ o[key2] = {};
137
+ }
138
+ if (o[key2] === Object.prototype || o[key2] === Number.prototype || o[key2] === String.prototype) {
139
+ o[key2] = {};
140
+ }
141
+ if (o[key2] === Array.prototype) {
142
+ o[key2] = [];
143
+ }
144
+ o = o[key2];
145
+ }
146
+ var lastKey = keys[keys.length - 1];
147
+ if (isConstructorOrProto(o, lastKey)) {
148
+ return;
149
+ }
150
+ if (o === Object.prototype || o === Number.prototype || o === String.prototype) {
151
+ o = {};
152
+ }
153
+ if (o === Array.prototype) {
154
+ o = [];
155
+ }
156
+ if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") {
157
+ o[lastKey] = value2;
158
+ } else if (Array.isArray(o[lastKey])) {
159
+ o[lastKey].push(value2);
160
+ } else {
161
+ o[lastKey] = [o[lastKey], value2];
162
+ }
163
+ }
164
+ function setArg(key2, val, arg2) {
165
+ if (arg2 && flags.unknownFn && !argDefined(key2, arg2)) {
166
+ if (flags.unknownFn(arg2) === false) {
167
+ return;
168
+ }
169
+ }
170
+ var value2 = !flags.strings[key2] && isNumber(val) ? Number(val) : val;
171
+ setKey(argv, key2.split("."), value2);
172
+ (aliases[key2] || []).forEach(function(x) {
173
+ setKey(argv, x.split("."), value2);
174
+ });
175
+ }
176
+ Object.keys(flags.bools).forEach(function(key2) {
177
+ setArg(key2, defaults[key2] === void 0 ? false : defaults[key2]);
178
+ });
179
+ var notFlags = [];
180
+ if (args.indexOf("--") !== -1) {
181
+ notFlags = args.slice(args.indexOf("--") + 1);
182
+ args = args.slice(0, args.indexOf("--"));
183
+ }
184
+ for (var i = 0; i < args.length; i++) {
185
+ var arg = args[i];
186
+ var key;
187
+ var next;
188
+ if (/^--.+=/.test(arg)) {
189
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
190
+ key = m[1];
191
+ var value = m[2];
192
+ if (flags.bools[key]) {
193
+ value = value !== "false";
194
+ }
195
+ setArg(key, value, arg);
196
+ } else if (/^--no-.+/.test(arg)) {
197
+ key = arg.match(/^--no-(.+)/)[1];
198
+ setArg(key, false, arg);
199
+ } else if (/^--.+/.test(arg)) {
200
+ key = arg.match(/^--(.+)/)[1];
201
+ next = args[i + 1];
202
+ if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
203
+ setArg(key, next, arg);
204
+ i += 1;
205
+ } else if (/^(true|false)$/.test(next)) {
206
+ setArg(key, next === "true", arg);
207
+ i += 1;
208
+ } else {
209
+ setArg(key, flags.strings[key] ? "" : true, arg);
210
+ }
211
+ } else if (/^-[^-]+/.test(arg)) {
212
+ var letters = arg.slice(1, -1).split("");
213
+ var broken = false;
214
+ for (var j = 0; j < letters.length; j++) {
215
+ next = arg.slice(j + 2);
216
+ if (next === "-") {
217
+ setArg(letters[j], next, arg);
218
+ continue;
219
+ }
220
+ if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") {
221
+ setArg(letters[j], next.slice(1), arg);
222
+ broken = true;
223
+ break;
224
+ }
225
+ if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
226
+ setArg(letters[j], next, arg);
227
+ broken = true;
228
+ break;
229
+ }
230
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
231
+ setArg(letters[j], arg.slice(j + 2), arg);
232
+ broken = true;
233
+ break;
234
+ } else {
235
+ setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg);
236
+ }
237
+ }
238
+ key = arg.slice(-1)[0];
239
+ if (!broken && key !== "-") {
240
+ if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
241
+ setArg(key, args[i + 1], arg);
242
+ i += 1;
243
+ } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
244
+ setArg(key, args[i + 1] === "true", arg);
245
+ i += 1;
246
+ } else {
247
+ setArg(key, flags.strings[key] ? "" : true, arg);
248
+ }
249
+ }
250
+ } else {
251
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
252
+ argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
253
+ }
254
+ if (opts.stopEarly) {
255
+ argv._.push.apply(argv._, args.slice(i + 1));
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ Object.keys(defaults).forEach(function(k) {
261
+ if (!hasKey(argv, k.split("."))) {
262
+ setKey(argv, k.split("."), defaults[k]);
263
+ (aliases[k] || []).forEach(function(x) {
264
+ setKey(argv, x.split("."), defaults[k]);
265
+ });
266
+ }
267
+ });
268
+ if (opts["--"]) {
269
+ argv["--"] = notFlags.slice();
270
+ } else {
271
+ notFlags.forEach(function(k) {
272
+ argv._.push(k);
273
+ });
274
+ }
275
+ return argv;
276
+ };
277
+ }
278
+ });
279
+
280
+ // node_modules/fast-json-stable-stringify/index.js
281
+ var require_fast_json_stable_stringify = __commonJS({
282
+ "node_modules/fast-json-stable-stringify/index.js"(exports, module) {
283
+ "use strict";
284
+ module.exports = function(data, opts) {
285
+ if (!opts) opts = {};
286
+ if (typeof opts === "function") opts = { cmp: opts };
287
+ var cycles = typeof opts.cycles === "boolean" ? opts.cycles : false;
288
+ var cmp = opts.cmp && /* @__PURE__ */ function(f) {
289
+ return function(node) {
290
+ return function(a, b) {
291
+ var aobj = { key: a, value: node[a] };
292
+ var bobj = { key: b, value: node[b] };
293
+ return f(aobj, bobj);
294
+ };
295
+ };
296
+ }(opts.cmp);
297
+ var seen = [];
298
+ return function stringify4(node) {
299
+ if (node && node.toJSON && typeof node.toJSON === "function") {
300
+ node = node.toJSON();
301
+ }
302
+ if (node === void 0) return;
303
+ if (typeof node == "number") return isFinite(node) ? "" + node : "null";
304
+ if (typeof node !== "object") return JSON.stringify(node);
305
+ var i, out;
306
+ if (Array.isArray(node)) {
307
+ out = "[";
308
+ for (i = 0; i < node.length; i++) {
309
+ if (i) out += ",";
310
+ out += stringify4(node[i]) || "null";
311
+ }
312
+ return out + "]";
313
+ }
314
+ if (node === null) return "null";
315
+ if (seen.indexOf(node) !== -1) {
316
+ if (cycles) return JSON.stringify("__cycle__");
317
+ throw new TypeError("Converting circular structure to JSON");
318
+ }
319
+ var seenIndex = seen.push(node) - 1;
320
+ var keys = Object.keys(node).sort(cmp && cmp(node));
321
+ out = "";
322
+ for (i = 0; i < keys.length; i++) {
323
+ var key = keys[i];
324
+ var value = stringify4(node[key]);
325
+ if (!value) continue;
326
+ if (out) out += ",";
327
+ out += JSON.stringify(key) + ":" + value;
328
+ }
329
+ seen.splice(seenIndex, 1);
330
+ return "{" + out + "}";
331
+ }(data);
332
+ };
333
+ }
334
+ });
335
+
336
+ // node_modules/common-path-prefix/index.js
337
+ var require_common_path_prefix = __commonJS({
338
+ "node_modules/common-path-prefix/index.js"(exports, module) {
339
+ "use strict";
340
+ var { sep: DEFAULT_SEPARATOR } = __require("path");
341
+ var determineSeparator = (paths) => {
342
+ for (const path10 of paths) {
343
+ const match = /(\/|\\)/.exec(path10);
344
+ if (match !== null) return match[0];
345
+ }
346
+ return DEFAULT_SEPARATOR;
347
+ };
348
+ module.exports = function commonPathPrefix2(paths, sep = determineSeparator(paths)) {
349
+ const [first = "", ...remaining] = paths;
350
+ if (first === "" || remaining.length === 0) return "";
351
+ const parts = first.split(sep);
352
+ let endOfPrefix = parts.length;
353
+ for (const path10 of remaining) {
354
+ const compare = path10.split(sep);
355
+ for (let i = 0; i < endOfPrefix; i++) {
356
+ if (compare[i] !== parts[i]) {
357
+ endOfPrefix = i;
358
+ }
359
+ }
360
+ if (endOfPrefix === 0) return "";
361
+ }
362
+ const prefix = parts.slice(0, endOfPrefix).join(sep);
363
+ return prefix.endsWith(sep) ? prefix : prefix + sep;
364
+ };
365
+ }
366
+ });
367
+
368
+ // node_modules/json-buffer/index.js
369
+ var require_json_buffer = __commonJS({
370
+ "node_modules/json-buffer/index.js"(exports) {
371
+ exports.stringify = function stringify4(o) {
372
+ if ("undefined" == typeof o) return o;
373
+ if (o && Buffer.isBuffer(o))
374
+ return JSON.stringify(":base64:" + o.toString("base64"));
375
+ if (o && o.toJSON)
376
+ o = o.toJSON();
377
+ if (o && "object" === typeof o) {
378
+ var s = "";
379
+ var array2 = Array.isArray(o);
380
+ s = array2 ? "[" : "{";
381
+ var first = true;
382
+ for (var k in o) {
383
+ var ignore = "function" == typeof o[k] || !array2 && "undefined" === typeof o[k];
384
+ if (Object.hasOwnProperty.call(o, k) && !ignore) {
385
+ if (!first)
386
+ s += ",";
387
+ first = false;
388
+ if (array2) {
389
+ if (o[k] == void 0)
390
+ s += "null";
391
+ else
392
+ s += stringify4(o[k]);
393
+ } else if (o[k] !== void 0) {
394
+ s += stringify4(k) + ":" + stringify4(o[k]);
395
+ }
396
+ }
397
+ }
398
+ s += array2 ? "]" : "}";
399
+ return s;
400
+ } else if ("string" === typeof o) {
401
+ return JSON.stringify(/^:/.test(o) ? ":" + o : o);
402
+ } else if ("undefined" === typeof o) {
403
+ return "null";
404
+ } else
405
+ return JSON.stringify(o);
406
+ };
407
+ exports.parse = function(s) {
408
+ return JSON.parse(s, function(key, value) {
409
+ if ("string" === typeof value) {
410
+ if (/^:base64:/.test(value))
411
+ return Buffer.from(value.substring(8), "base64");
412
+ else
413
+ return /^:/.test(value) ? value.substring(1) : value;
414
+ }
415
+ return value;
416
+ });
417
+ };
418
+ }
419
+ });
420
+
421
+ // node_modules/keyv/src/index.js
422
+ var require_src = __commonJS({
423
+ "node_modules/keyv/src/index.js"(exports, module) {
424
+ "use strict";
425
+ var EventEmitter = __require("events");
426
+ var JSONB = require_json_buffer();
427
+ var loadStore = (options) => {
428
+ const adapters = {
429
+ redis: "@keyv/redis",
430
+ rediss: "@keyv/redis",
431
+ mongodb: "@keyv/mongo",
432
+ mongo: "@keyv/mongo",
433
+ sqlite: "@keyv/sqlite",
434
+ postgresql: "@keyv/postgres",
435
+ postgres: "@keyv/postgres",
436
+ mysql: "@keyv/mysql",
437
+ etcd: "@keyv/etcd",
438
+ offline: "@keyv/offline",
439
+ tiered: "@keyv/tiered"
440
+ };
441
+ if (options.adapter || options.uri) {
442
+ const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
443
+ return new (__require(adapters[adapter]))(options);
444
+ }
445
+ return /* @__PURE__ */ new Map();
446
+ };
447
+ var iterableAdapters = [
448
+ "sqlite",
449
+ "postgres",
450
+ "mysql",
451
+ "mongo",
452
+ "redis",
453
+ "tiered"
454
+ ];
455
+ var Keyv = class extends EventEmitter {
456
+ constructor(uri, { emitErrors = true, ...options } = {}) {
457
+ super();
458
+ this.opts = {
459
+ namespace: "keyv",
460
+ serialize: JSONB.stringify,
461
+ deserialize: JSONB.parse,
462
+ ...typeof uri === "string" ? { uri } : uri,
463
+ ...options
464
+ };
465
+ if (!this.opts.store) {
466
+ const adapterOptions = { ...this.opts };
467
+ this.opts.store = loadStore(adapterOptions);
468
+ }
469
+ if (this.opts.compression) {
470
+ const compression = this.opts.compression;
471
+ this.opts.serialize = compression.serialize.bind(compression);
472
+ this.opts.deserialize = compression.deserialize.bind(compression);
473
+ }
474
+ if (typeof this.opts.store.on === "function" && emitErrors) {
475
+ this.opts.store.on("error", (error) => this.emit("error", error));
476
+ }
477
+ this.opts.store.namespace = this.opts.namespace;
478
+ const generateIterator = (iterator) => async function* () {
479
+ for await (const [key, raw] of typeof iterator === "function" ? iterator(this.opts.store.namespace) : iterator) {
480
+ const data = await this.opts.deserialize(raw);
481
+ if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
482
+ continue;
483
+ }
484
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
485
+ this.delete(key);
486
+ continue;
487
+ }
488
+ yield [this._getKeyUnprefix(key), data.value];
489
+ }
490
+ };
491
+ if (typeof this.opts.store[Symbol.iterator] === "function" && this.opts.store instanceof Map) {
492
+ this.iterator = generateIterator(this.opts.store);
493
+ } else if (typeof this.opts.store.iterator === "function" && this.opts.store.opts && this._checkIterableAdaptar()) {
494
+ this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
495
+ }
496
+ }
497
+ _checkIterableAdaptar() {
498
+ return iterableAdapters.includes(this.opts.store.opts.dialect) || iterableAdapters.findIndex((element) => this.opts.store.opts.url.includes(element)) >= 0;
499
+ }
500
+ _getKeyPrefix(key) {
501
+ return `${this.opts.namespace}:${key}`;
502
+ }
503
+ _getKeyPrefixArray(keys) {
504
+ return keys.map((key) => `${this.opts.namespace}:${key}`);
505
+ }
506
+ _getKeyUnprefix(key) {
507
+ return key.split(":").splice(1).join(":");
508
+ }
509
+ get(key, options) {
510
+ const { store } = this.opts;
511
+ const isArray = Array.isArray(key);
512
+ const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
513
+ if (isArray && store.getMany === void 0) {
514
+ const promises = [];
515
+ for (const key2 of keyPrefixed) {
516
+ promises.push(
517
+ Promise.resolve().then(() => store.get(key2)).then((data) => typeof data === "string" ? this.opts.deserialize(data) : this.opts.compression ? this.opts.deserialize(data) : data).then((data) => {
518
+ if (data === void 0 || data === null) {
519
+ return void 0;
520
+ }
521
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
522
+ return this.delete(key2).then(() => void 0);
523
+ }
524
+ return options && options.raw ? data : data.value;
525
+ })
526
+ );
527
+ }
528
+ return Promise.allSettled(promises).then((values) => {
529
+ const data = [];
530
+ for (const value of values) {
531
+ data.push(value.value);
532
+ }
533
+ return data;
534
+ });
535
+ }
536
+ return Promise.resolve().then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed)).then((data) => typeof data === "string" ? this.opts.deserialize(data) : this.opts.compression ? this.opts.deserialize(data) : data).then((data) => {
537
+ if (data === void 0 || data === null) {
538
+ return void 0;
539
+ }
540
+ if (isArray) {
541
+ return data.map((row, index) => {
542
+ if (typeof row === "string") {
543
+ row = this.opts.deserialize(row);
544
+ }
545
+ if (row === void 0 || row === null) {
546
+ return void 0;
547
+ }
548
+ if (typeof row.expires === "number" && Date.now() > row.expires) {
549
+ this.delete(key[index]).then(() => void 0);
550
+ return void 0;
551
+ }
552
+ return options && options.raw ? row : row.value;
553
+ });
554
+ }
555
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
556
+ return this.delete(key).then(() => void 0);
557
+ }
558
+ return options && options.raw ? data : data.value;
559
+ });
560
+ }
561
+ set(key, value, ttl) {
562
+ const keyPrefixed = this._getKeyPrefix(key);
563
+ if (typeof ttl === "undefined") {
564
+ ttl = this.opts.ttl;
565
+ }
566
+ if (ttl === 0) {
567
+ ttl = void 0;
568
+ }
569
+ const { store } = this.opts;
570
+ return Promise.resolve().then(() => {
571
+ const expires = typeof ttl === "number" ? Date.now() + ttl : null;
572
+ if (typeof value === "symbol") {
573
+ this.emit("error", "symbol cannot be serialized");
574
+ }
575
+ value = { value, expires };
576
+ return this.opts.serialize(value);
577
+ }).then((value2) => store.set(keyPrefixed, value2, ttl)).then(() => true);
578
+ }
579
+ delete(key) {
580
+ const { store } = this.opts;
581
+ if (Array.isArray(key)) {
582
+ const keyPrefixed2 = this._getKeyPrefixArray(key);
583
+ if (store.deleteMany === void 0) {
584
+ const promises = [];
585
+ for (const key2 of keyPrefixed2) {
586
+ promises.push(store.delete(key2));
587
+ }
588
+ return Promise.allSettled(promises).then((values) => values.every((x) => x.value === true));
589
+ }
590
+ return Promise.resolve().then(() => store.deleteMany(keyPrefixed2));
591
+ }
592
+ const keyPrefixed = this._getKeyPrefix(key);
593
+ return Promise.resolve().then(() => store.delete(keyPrefixed));
594
+ }
595
+ clear() {
596
+ const { store } = this.opts;
597
+ return Promise.resolve().then(() => store.clear());
598
+ }
599
+ has(key) {
600
+ const keyPrefixed = this._getKeyPrefix(key);
601
+ const { store } = this.opts;
602
+ return Promise.resolve().then(async () => {
603
+ if (typeof store.has === "function") {
604
+ return store.has(keyPrefixed);
605
+ }
606
+ const value = await store.get(keyPrefixed);
607
+ return value !== void 0;
608
+ });
609
+ }
610
+ disconnect() {
611
+ const { store } = this.opts;
612
+ if (typeof store.disconnect === "function") {
613
+ return store.disconnect();
614
+ }
615
+ }
616
+ };
617
+ module.exports = Keyv;
618
+ }
619
+ });
620
+
621
+ // node_modules/flatted/cjs/index.js
622
+ var require_cjs = __commonJS({
623
+ "node_modules/flatted/cjs/index.js"(exports) {
624
+ "use strict";
625
+ var { parse: $parse, stringify: $stringify } = JSON;
626
+ var { keys } = Object;
627
+ var Primitive = String;
628
+ var primitive = "string";
629
+ var ignore = {};
630
+ var object = "object";
631
+ var noop = (_, value) => value;
632
+ var primitives = (value) => value instanceof Primitive ? Primitive(value) : value;
633
+ var Primitives = (_, value) => typeof value === primitive ? new Primitive(value) : value;
634
+ var revive = (input, parsed, output, $) => {
635
+ const lazy = [];
636
+ for (let ke = keys(output), { length } = ke, y = 0; y < length; y++) {
637
+ const k = ke[y];
638
+ const value = output[k];
639
+ if (value instanceof Primitive) {
640
+ const tmp = input[value];
641
+ if (typeof tmp === object && !parsed.has(tmp)) {
642
+ parsed.add(tmp);
643
+ output[k] = ignore;
644
+ lazy.push({ k, a: [input, parsed, tmp, $] });
645
+ } else
646
+ output[k] = $.call(output, k, tmp);
647
+ } else if (output[k] !== ignore)
648
+ output[k] = $.call(output, k, value);
649
+ }
650
+ for (let { length } = lazy, i = 0; i < length; i++) {
651
+ const { k, a } = lazy[i];
652
+ output[k] = $.call(output, k, revive.apply(null, a));
653
+ }
654
+ return output;
655
+ };
656
+ var set = (known, input, value) => {
657
+ const index = Primitive(input.push(value) - 1);
658
+ known.set(value, index);
659
+ return index;
660
+ };
661
+ var parse = (text, reviver) => {
662
+ const input = $parse(text, Primitives).map(primitives);
663
+ const value = input[0];
664
+ const $ = reviver || noop;
665
+ const tmp = typeof value === object && value ? revive(input, /* @__PURE__ */ new Set(), value, $) : value;
666
+ return $.call({ "": tmp }, "", tmp);
667
+ };
668
+ exports.parse = parse;
669
+ var stringify4 = (value, replacer, space) => {
670
+ const $ = replacer && typeof replacer === object ? (k, v) => k === "" || -1 < replacer.indexOf(k) ? v : void 0 : replacer || noop;
671
+ const known = /* @__PURE__ */ new Map();
672
+ const input = [];
673
+ const output = [];
674
+ let i = +set(known, input, $.call({ "": value }, "", value));
675
+ let firstRun = !i;
676
+ while (i < input.length) {
677
+ firstRun = true;
678
+ output[i] = $stringify(input[i++], replace, space);
679
+ }
680
+ return "[" + output.join(",") + "]";
681
+ function replace(key, value2) {
682
+ if (firstRun) {
683
+ firstRun = !firstRun;
684
+ return value2;
685
+ }
686
+ const after = $.call(this, key, value2);
687
+ switch (typeof after) {
688
+ case object:
689
+ if (after === null) return after;
690
+ case primitive:
691
+ return known.get(after) || set(known, input, after);
692
+ }
693
+ return after;
694
+ }
695
+ };
696
+ exports.stringify = stringify4;
697
+ var toJSON = (value) => $parse(stringify4(value));
698
+ exports.toJSON = toJSON;
699
+ var fromJSON = (value) => parse($stringify(value));
700
+ exports.fromJSON = fromJSON;
701
+ }
702
+ });
703
+
704
+ // node_modules/file-entry-cache/node_modules/flat-cache/src/utils.js
705
+ var require_utils = __commonJS({
706
+ "node_modules/file-entry-cache/node_modules/flat-cache/src/utils.js"(exports, module) {
707
+ var fs6 = __require("fs");
708
+ var path10 = __require("path");
709
+ var flatted = require_cjs();
710
+ function tryParse(filePath, defaultValue) {
711
+ let result;
712
+ try {
713
+ result = readJSON(filePath);
714
+ } catch {
715
+ result = defaultValue;
716
+ }
717
+ return result;
718
+ }
719
+ function readJSON(filePath) {
720
+ return flatted.parse(
721
+ fs6.readFileSync(filePath, {
722
+ encoding: "utf8"
723
+ })
724
+ );
725
+ }
726
+ function writeJSON(filePath, data) {
727
+ fs6.mkdirSync(path10.dirname(filePath), {
728
+ recursive: true
729
+ });
730
+ fs6.writeFileSync(filePath, flatted.stringify(data));
731
+ }
732
+ module.exports = { tryParse, readJSON, writeJSON };
733
+ }
734
+ });
735
+
736
+ // node_modules/file-entry-cache/node_modules/flat-cache/src/del.js
737
+ var require_del = __commonJS({
738
+ "node_modules/file-entry-cache/node_modules/flat-cache/src/del.js"(exports, module) {
739
+ var fs6 = __require("fs");
740
+ var path10 = __require("path");
741
+ function del(targetPath) {
742
+ if (!fs6.existsSync(targetPath)) {
743
+ return false;
744
+ }
745
+ try {
746
+ if (fs6.statSync(targetPath).isDirectory()) {
747
+ for (const file of fs6.readdirSync(targetPath)) {
748
+ const currentPath = path10.join(targetPath, file);
749
+ if (fs6.statSync(currentPath).isFile()) {
750
+ fs6.unlinkSync(currentPath);
751
+ }
752
+ }
753
+ fs6.rmdirSync(targetPath);
754
+ } else {
755
+ fs6.unlinkSync(targetPath);
756
+ }
757
+ return true;
758
+ } catch (error) {
759
+ console.error(`Error while deleting ${targetPath}: ${error.message}`);
760
+ }
761
+ }
762
+ module.exports = { del };
763
+ }
764
+ });
765
+
766
+ // node_modules/file-entry-cache/node_modules/flat-cache/src/cache.js
767
+ var require_cache = __commonJS({
768
+ "node_modules/file-entry-cache/node_modules/flat-cache/src/cache.js"(exports, module) {
769
+ var path10 = __require("path");
770
+ var fs6 = __require("fs");
771
+ var Keyv = require_src();
772
+ var { writeJSON, tryParse } = require_utils();
773
+ var { del } = require_del();
774
+ var cache = {
775
+ /**
776
+ * Load a cache identified by the given Id. If the element does not exists, then initialize an empty
777
+ * cache storage. If specified `cacheDir` will be used as the directory to persist the data to. If omitted
778
+ * then the cache module directory `./cache` will be used instead
779
+ *
780
+ * @method load
781
+ * @param docId {String} the id of the cache, would also be used as the name of the file cache
782
+ * @param [cacheDir] {String} directory for the cache entry
783
+ */
784
+ load(documentId, cacheDir) {
785
+ const me = this;
786
+ me.keyv = new Keyv();
787
+ me.__visited = {};
788
+ me.__persisted = {};
789
+ me._pathToFile = cacheDir ? path10.resolve(cacheDir, documentId) : path10.resolve(__dirname, "../.cache/", documentId);
790
+ if (fs6.existsSync(me._pathToFile)) {
791
+ me._persisted = tryParse(me._pathToFile, {});
792
+ }
793
+ },
794
+ get _persisted() {
795
+ return this.__persisted;
796
+ },
797
+ set _persisted(value) {
798
+ this.__persisted = value;
799
+ },
800
+ get _visited() {
801
+ return this.__visited;
802
+ },
803
+ set _visited(value) {
804
+ this.__visited = value;
805
+ },
806
+ /**
807
+ * Load the cache from the provided file
808
+ * @method loadFile
809
+ * @param {String} pathToFile the path to the file containing the info for the cache
810
+ */
811
+ loadFile(pathToFile) {
812
+ const me = this;
813
+ const dir = path10.dirname(pathToFile);
814
+ const fName = path10.basename(pathToFile);
815
+ me.load(fName, dir);
816
+ },
817
+ /**
818
+ * Returns the entire persisted object
819
+ * @method all
820
+ * @returns {*}
821
+ */
822
+ all() {
823
+ return this._persisted;
824
+ },
825
+ keys() {
826
+ return Object.keys(this._persisted);
827
+ },
828
+ /**
829
+ * Sets a key to a given value
830
+ * @method setKey
831
+ * @param key {string} the key to set
832
+ * @param value {object} the value of the key. Could be any object that can be serialized with JSON.stringify
833
+ */
834
+ setKey(key, value) {
835
+ this._visited[key] = true;
836
+ this._persisted[key] = value;
837
+ },
838
+ /**
839
+ * Remove a given key from the cache
840
+ * @method removeKey
841
+ * @param key {String} the key to remove from the object
842
+ */
843
+ removeKey(key) {
844
+ delete this._visited[key];
845
+ delete this._persisted[key];
846
+ },
847
+ /**
848
+ * Return the value of the provided key
849
+ * @method getKey
850
+ * @param key {String} the name of the key to retrieve
851
+ * @returns {*} the value from the key
852
+ */
853
+ getKey(key) {
854
+ this._visited[key] = true;
855
+ return this._persisted[key];
856
+ },
857
+ /**
858
+ * Remove keys that were not accessed/set since the
859
+ * last time the `prune` method was called.
860
+ * @method _prune
861
+ * @private
862
+ */
863
+ _prune() {
864
+ const me = this;
865
+ const object = {};
866
+ const keys = Object.keys(me._visited);
867
+ if (keys.length === 0) {
868
+ return;
869
+ }
870
+ for (const key of keys) {
871
+ object[key] = me._persisted[key];
872
+ }
873
+ me._visited = {};
874
+ me._persisted = object;
875
+ },
876
+ /**
877
+ * Save the state of the cache identified by the docId to disk
878
+ * as a JSON structure
879
+ * @param [noPrune=false] {Boolean} whether to remove from cache the non visited files
880
+ * @method save
881
+ */
882
+ save(noPrune) {
883
+ const me = this;
884
+ !noPrune && me._prune();
885
+ writeJSON(me._pathToFile, me._persisted);
886
+ },
887
+ /**
888
+ * Remove the file where the cache is persisted
889
+ * @method removeCacheFile
890
+ * @return {Boolean} true or false if the file was successfully deleted
891
+ */
892
+ removeCacheFile() {
893
+ return del(this._pathToFile);
894
+ },
895
+ /**
896
+ * Destroy the file cache and cache content.
897
+ * @method destroy
898
+ */
899
+ destroy() {
900
+ const me = this;
901
+ me._visited = {};
902
+ me._persisted = {};
903
+ me.removeCacheFile();
904
+ }
905
+ };
906
+ module.exports = {
907
+ /**
908
+ * Alias for create. Should be considered depreacted. Will be removed in next releases
909
+ *
910
+ * @method load
911
+ * @param docId {String} the id of the cache, would also be used as the name of the file cache
912
+ * @param [cacheDir] {String} directory for the cache entry
913
+ * @returns {cache} cache instance
914
+ */
915
+ load(documentId, cacheDir) {
916
+ return this.create(documentId, cacheDir);
917
+ },
918
+ /**
919
+ * Load a cache identified by the given Id. If the element does not exists, then initialize an empty
920
+ * cache storage.
921
+ *
922
+ * @method create
923
+ * @param docId {String} the id of the cache, would also be used as the name of the file cache
924
+ * @param [cacheDir] {String} directory for the cache entry
925
+ * @returns {cache} cache instance
926
+ */
927
+ create(documentId, cacheDir) {
928
+ const object = Object.create(cache);
929
+ object.load(documentId, cacheDir);
930
+ return object;
931
+ },
932
+ createFromFile(filePath) {
933
+ const object = Object.create(cache);
934
+ object.loadFile(filePath);
935
+ return object;
936
+ },
937
+ /**
938
+ * Clear the cache identified by the given id. Caches stored in a different cache directory can be deleted directly
939
+ *
940
+ * @method clearCache
941
+ * @param docId {String} the id of the cache, would also be used as the name of the file cache
942
+ * @param cacheDir {String} the directory where the cache file was written
943
+ * @returns {Boolean} true if the cache folder was deleted. False otherwise
944
+ */
945
+ clearCacheById(documentId, cacheDir) {
946
+ const filePath = cacheDir ? path10.resolve(cacheDir, documentId) : path10.resolve(__dirname, "../.cache/", documentId);
947
+ return del(filePath);
948
+ },
949
+ /**
950
+ * Remove all cache stored in the cache directory
951
+ * @method clearAll
952
+ * @returns {Boolean} true if the cache folder was deleted. False otherwise
953
+ */
954
+ clearAll(cacheDir) {
955
+ const filePath = cacheDir ? path10.resolve(cacheDir) : path10.resolve(__dirname, "../.cache/");
956
+ return del(filePath);
957
+ }
958
+ };
959
+ }
960
+ });
961
+
962
+ // node_modules/file-entry-cache/cache.js
963
+ var require_cache2 = __commonJS({
964
+ "node_modules/file-entry-cache/cache.js"(exports, module) {
965
+ var path10 = __require("path");
966
+ var process5 = __require("process");
967
+ var crypto = __require("crypto");
968
+ module.exports = {
969
+ createFromFile(filePath, useChecksum) {
970
+ const fname = path10.basename(filePath);
971
+ const dir = path10.dirname(filePath);
972
+ return this.create(fname, dir, useChecksum);
973
+ },
974
+ create(cacheId, _path, useChecksum) {
975
+ const fs6 = __require("fs");
976
+ const flatCache = require_cache();
977
+ const cache = flatCache.load(cacheId, _path);
978
+ let normalizedEntries = {};
979
+ const removeNotFoundFiles = function removeNotFoundFiles2() {
980
+ const cachedEntries = cache.keys();
981
+ for (const fPath of cachedEntries) {
982
+ try {
983
+ fs6.statSync(fPath);
984
+ } catch (error) {
985
+ if (error.code === "ENOENT") {
986
+ cache.removeKey(fPath);
987
+ }
988
+ }
989
+ }
990
+ };
991
+ removeNotFoundFiles();
992
+ return {
993
+ /**
994
+ * The flat cache storage used to persist the metadata of the `files
995
+ * @type {Object}
996
+ */
997
+ cache,
998
+ /**
999
+ * Given a buffer, calculate md5 hash of its content.
1000
+ * @method getHash
1001
+ * @param {Buffer} buffer buffer to calculate hash on
1002
+ * @return {String} content hash digest
1003
+ */
1004
+ getHash(buffer) {
1005
+ return crypto.createHash("md5").update(buffer).digest("hex");
1006
+ },
1007
+ /**
1008
+ * Return whether or not a file has changed since last time reconcile was called.
1009
+ * @method hasFileChanged
1010
+ * @param {String} file the filepath to check
1011
+ * @return {Boolean} wheter or not the file has changed
1012
+ */
1013
+ hasFileChanged(file) {
1014
+ return this.getFileDescriptor(file).changed;
1015
+ },
1016
+ /**
1017
+ * Given an array of file paths it return and object with three arrays:
1018
+ * - changedFiles: Files that changed since previous run
1019
+ * - notChangedFiles: Files that haven't change
1020
+ * - notFoundFiles: Files that were not found, probably deleted
1021
+ *
1022
+ * @param {Array} files the files to analyze and compare to the previous seen files
1023
+ * @return {[type]} [description]
1024
+ */
1025
+ analyzeFiles(files) {
1026
+ const me = this;
1027
+ files || (files = []);
1028
+ const res = {
1029
+ changedFiles: [],
1030
+ notFoundFiles: [],
1031
+ notChangedFiles: []
1032
+ };
1033
+ for (const entry of me.normalizeEntries(files)) {
1034
+ if (entry.changed) {
1035
+ res.changedFiles.push(entry.key);
1036
+ continue;
1037
+ }
1038
+ if (entry.notFound) {
1039
+ res.notFoundFiles.push(entry.key);
1040
+ continue;
1041
+ }
1042
+ res.notChangedFiles.push(entry.key);
1043
+ }
1044
+ return res;
1045
+ },
1046
+ getFileDescriptor(file) {
1047
+ let fstat;
1048
+ try {
1049
+ if (!path10.isAbsolute(file)) {
1050
+ file = path10.resolve(process5.cwd(), file);
1051
+ }
1052
+ fstat = fs6.statSync(file);
1053
+ } catch (error) {
1054
+ this.removeEntry(file);
1055
+ return { key: file, notFound: true, err: error };
1056
+ }
1057
+ if (useChecksum) {
1058
+ return this._getFileDescriptorUsingChecksum(file);
1059
+ }
1060
+ return this._getFileDescriptorUsingMtimeAndSize(file, fstat);
1061
+ },
1062
+ _getFileDescriptorUsingMtimeAndSize(file, fstat) {
1063
+ let meta = cache.getKey(file);
1064
+ const cacheExists = Boolean(meta);
1065
+ const cSize = fstat.size;
1066
+ const cTime = fstat.mtime.getTime();
1067
+ let isDifferentDate;
1068
+ let isDifferentSize;
1069
+ if (meta) {
1070
+ isDifferentDate = cTime !== meta.mtime;
1071
+ isDifferentSize = cSize !== meta.size;
1072
+ } else {
1073
+ meta = { size: cSize, mtime: cTime };
1074
+ }
1075
+ const nEntry = normalizedEntries[file] = {
1076
+ key: file,
1077
+ changed: !cacheExists || isDifferentDate || isDifferentSize,
1078
+ meta
1079
+ };
1080
+ return nEntry;
1081
+ },
1082
+ _getFileDescriptorUsingChecksum(file) {
1083
+ let meta = cache.getKey(file);
1084
+ const cacheExists = Boolean(meta);
1085
+ let contentBuffer;
1086
+ try {
1087
+ contentBuffer = fs6.readFileSync(file);
1088
+ } catch {
1089
+ contentBuffer = "";
1090
+ }
1091
+ let isDifferent = true;
1092
+ const hash = this.getHash(contentBuffer);
1093
+ if (meta) {
1094
+ isDifferent = hash !== meta.hash;
1095
+ } else {
1096
+ meta = { hash };
1097
+ }
1098
+ const nEntry = normalizedEntries[file] = {
1099
+ key: file,
1100
+ changed: !cacheExists || isDifferent,
1101
+ meta
1102
+ };
1103
+ return nEntry;
1104
+ },
1105
+ /**
1106
+ * Return the list o the files that changed compared
1107
+ * against the ones stored in the cache
1108
+ *
1109
+ * @method getUpdated
1110
+ * @param files {Array} the array of files to compare against the ones in the cache
1111
+ * @returns {Array}
1112
+ */
1113
+ getUpdatedFiles(files) {
1114
+ const me = this;
1115
+ files || (files = []);
1116
+ return me.normalizeEntries(files).filter((entry) => entry.changed).map((entry) => entry.key);
1117
+ },
1118
+ /**
1119
+ * Return the list of files
1120
+ * @method normalizeEntries
1121
+ * @param files
1122
+ * @returns {*}
1123
+ */
1124
+ normalizeEntries(files) {
1125
+ files || (files = []);
1126
+ const me = this;
1127
+ const nEntries = files.map((file) => me.getFileDescriptor(file));
1128
+ return nEntries;
1129
+ },
1130
+ /**
1131
+ * Remove an entry from the file-entry-cache. Useful to force the file to still be considered
1132
+ * modified the next time the process is run
1133
+ *
1134
+ * @method removeEntry
1135
+ * @param entryName
1136
+ */
1137
+ removeEntry(entryName) {
1138
+ if (!path10.isAbsolute(entryName)) {
1139
+ entryName = path10.resolve(process5.cwd(), entryName);
1140
+ }
1141
+ delete normalizedEntries[entryName];
1142
+ cache.removeKey(entryName);
1143
+ },
1144
+ /**
1145
+ * Delete the cache file from the disk
1146
+ * @method deleteCacheFile
1147
+ */
1148
+ deleteCacheFile() {
1149
+ cache.removeCacheFile();
1150
+ },
1151
+ /**
1152
+ * Remove the cache from the file and clear the memory cache
1153
+ */
1154
+ destroy() {
1155
+ normalizedEntries = {};
1156
+ cache.destroy();
1157
+ },
1158
+ _getMetaForFileUsingCheckSum(cacheEntry) {
1159
+ const contentBuffer = fs6.readFileSync(cacheEntry.key);
1160
+ const hash = this.getHash(contentBuffer);
1161
+ const meta = Object.assign(cacheEntry.meta, { hash });
1162
+ delete meta.size;
1163
+ delete meta.mtime;
1164
+ return meta;
1165
+ },
1166
+ _getMetaForFileUsingMtimeAndSize(cacheEntry) {
1167
+ const stat = fs6.statSync(cacheEntry.key);
1168
+ const meta = Object.assign(cacheEntry.meta, {
1169
+ size: stat.size,
1170
+ mtime: stat.mtime.getTime()
1171
+ });
1172
+ delete meta.hash;
1173
+ return meta;
1174
+ },
1175
+ /**
1176
+ * Sync the files and persist them to the cache
1177
+ * @method reconcile
1178
+ */
1179
+ reconcile(noPrune) {
1180
+ removeNotFoundFiles();
1181
+ noPrune = noPrune === void 0 ? true : noPrune;
1182
+ const entries = normalizedEntries;
1183
+ const keys = Object.keys(entries);
1184
+ if (keys.length === 0) {
1185
+ return;
1186
+ }
1187
+ const me = this;
1188
+ for (const entryName of keys) {
1189
+ const cacheEntry = entries[entryName];
1190
+ try {
1191
+ const meta = useChecksum ? me._getMetaForFileUsingCheckSum(cacheEntry) : me._getMetaForFileUsingMtimeAndSize(cacheEntry);
1192
+ cache.setKey(entryName, meta);
1193
+ } catch (error) {
1194
+ if (error.code !== "ENOENT") {
1195
+ throw error;
1196
+ }
1197
+ }
1198
+ }
1199
+ cache.save(noPrune);
1200
+ }
1201
+ };
1202
+ }
1203
+ };
1204
+ }
1205
+ });
1206
+
1207
+ // node_modules/wcwidth.js/combining.js
1208
+ var require_combining = __commonJS({
1209
+ "node_modules/wcwidth.js/combining.js"(exports, module) {
1210
+ module.exports = [
1211
+ [768, 879],
1212
+ [1155, 1158],
1213
+ [1160, 1161],
1214
+ [1425, 1469],
1215
+ [1471, 1471],
1216
+ [1473, 1474],
1217
+ [1476, 1477],
1218
+ [1479, 1479],
1219
+ [1536, 1539],
1220
+ [1552, 1557],
1221
+ [1611, 1630],
1222
+ [1648, 1648],
1223
+ [1750, 1764],
1224
+ [1767, 1768],
1225
+ [1770, 1773],
1226
+ [1807, 1807],
1227
+ [1809, 1809],
1228
+ [1840, 1866],
1229
+ [1958, 1968],
1230
+ [2027, 2035],
1231
+ [2305, 2306],
1232
+ [2364, 2364],
1233
+ [2369, 2376],
1234
+ [2381, 2381],
1235
+ [2385, 2388],
1236
+ [2402, 2403],
1237
+ [2433, 2433],
1238
+ [2492, 2492],
1239
+ [2497, 2500],
1240
+ [2509, 2509],
1241
+ [2530, 2531],
1242
+ [2561, 2562],
1243
+ [2620, 2620],
1244
+ [2625, 2626],
1245
+ [2631, 2632],
1246
+ [2635, 2637],
1247
+ [2672, 2673],
1248
+ [2689, 2690],
1249
+ [2748, 2748],
1250
+ [2753, 2757],
1251
+ [2759, 2760],
1252
+ [2765, 2765],
1253
+ [2786, 2787],
1254
+ [2817, 2817],
1255
+ [2876, 2876],
1256
+ [2879, 2879],
1257
+ [2881, 2883],
1258
+ [2893, 2893],
1259
+ [2902, 2902],
1260
+ [2946, 2946],
1261
+ [3008, 3008],
1262
+ [3021, 3021],
1263
+ [3134, 3136],
1264
+ [3142, 3144],
1265
+ [3146, 3149],
1266
+ [3157, 3158],
1267
+ [3260, 3260],
1268
+ [3263, 3263],
1269
+ [3270, 3270],
1270
+ [3276, 3277],
1271
+ [3298, 3299],
1272
+ [3393, 3395],
1273
+ [3405, 3405],
1274
+ [3530, 3530],
1275
+ [3538, 3540],
1276
+ [3542, 3542],
1277
+ [3633, 3633],
1278
+ [3636, 3642],
1279
+ [3655, 3662],
1280
+ [3761, 3761],
1281
+ [3764, 3769],
1282
+ [3771, 3772],
1283
+ [3784, 3789],
1284
+ [3864, 3865],
1285
+ [3893, 3893],
1286
+ [3895, 3895],
1287
+ [3897, 3897],
1288
+ [3953, 3966],
1289
+ [3968, 3972],
1290
+ [3974, 3975],
1291
+ [3984, 3991],
1292
+ [3993, 4028],
1293
+ [4038, 4038],
1294
+ [4141, 4144],
1295
+ [4146, 4146],
1296
+ [4150, 4151],
1297
+ [4153, 4153],
1298
+ [4184, 4185],
1299
+ [4448, 4607],
1300
+ [4959, 4959],
1301
+ [5906, 5908],
1302
+ [5938, 5940],
1303
+ [5970, 5971],
1304
+ [6002, 6003],
1305
+ [6068, 6069],
1306
+ [6071, 6077],
1307
+ [6086, 6086],
1308
+ [6089, 6099],
1309
+ [6109, 6109],
1310
+ [6155, 6157],
1311
+ [6313, 6313],
1312
+ [6432, 6434],
1313
+ [6439, 6440],
1314
+ [6450, 6450],
1315
+ [6457, 6459],
1316
+ [6679, 6680],
1317
+ [6912, 6915],
1318
+ [6964, 6964],
1319
+ [6966, 6970],
1320
+ [6972, 6972],
1321
+ [6978, 6978],
1322
+ [7019, 7027],
1323
+ [7616, 7626],
1324
+ [7678, 7679],
1325
+ [8203, 8207],
1326
+ [8234, 8238],
1327
+ [8288, 8291],
1328
+ [8298, 8303],
1329
+ [8400, 8431],
1330
+ [12330, 12335],
1331
+ [12441, 12442],
1332
+ [43014, 43014],
1333
+ [43019, 43019],
1334
+ [43045, 43046],
1335
+ [64286, 64286],
1336
+ [65024, 65039],
1337
+ [65056, 65059],
1338
+ [65279, 65279],
1339
+ [65529, 65531],
1340
+ [68097, 68099],
1341
+ [68101, 68102],
1342
+ [68108, 68111],
1343
+ [68152, 68154],
1344
+ [68159, 68159],
1345
+ [119143, 119145],
1346
+ [119155, 119170],
1347
+ [119173, 119179],
1348
+ [119210, 119213],
1349
+ [119362, 119364],
1350
+ [917505, 917505],
1351
+ [917536, 917631],
1352
+ [917760, 917999]
1353
+ ];
1354
+ }
1355
+ });
1356
+
1357
+ // node_modules/wcwidth.js/index.js
1358
+ var require_wcwidth = __commonJS({
1359
+ "node_modules/wcwidth.js/index.js"(exports, module) {
1360
+ var combining = require_combining();
1361
+ var DEFAULTS = {
1362
+ nul: 0,
1363
+ control: 0
1364
+ };
1365
+ function bisearch(ucs) {
1366
+ let min = 0;
1367
+ let max = combining.length - 1;
1368
+ let mid;
1369
+ if (ucs < combining[0][0] || ucs > combining[max][1]) return false;
1370
+ while (max >= min) {
1371
+ mid = Math.floor((min + max) / 2);
1372
+ if (ucs > combining[mid][1]) min = mid + 1;
1373
+ else if (ucs < combining[mid][0]) max = mid - 1;
1374
+ else return true;
1375
+ }
1376
+ return false;
1377
+ }
1378
+ function wcwidth2(ucs, opts) {
1379
+ if (ucs === 0) return opts.nul;
1380
+ if (ucs < 32 || ucs >= 127 && ucs < 160) return opts.control;
1381
+ if (bisearch(ucs)) return 0;
1382
+ return 1 + (ucs >= 4352 && (ucs <= 4447 || // Hangul Jamo init. consonants
1383
+ ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || // CJK ... Yi
1384
+ ucs >= 44032 && ucs <= 55203 || // Hangul Syllables
1385
+ ucs >= 63744 && ucs <= 64255 || // CJK Compatibility Ideographs
1386
+ ucs >= 65040 && ucs <= 65049 || // Vertical forms
1387
+ ucs >= 65072 && ucs <= 65135 || // CJK Compatibility Forms
1388
+ ucs >= 65280 && ucs <= 65376 || // Fullwidth Forms
1389
+ ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141));
1390
+ }
1391
+ function wcswidth(str, opts) {
1392
+ let h;
1393
+ let l;
1394
+ let s = 0;
1395
+ let n;
1396
+ if (typeof str !== "string") return wcwidth2(str, opts);
1397
+ for (let i = 0; i < str.length; i++) {
1398
+ h = str.charCodeAt(i);
1399
+ if (h >= 55296 && h <= 56319) {
1400
+ l = str.charCodeAt(++i);
1401
+ if (l >= 56320 && l <= 57343) {
1402
+ h = (h - 55296) * 1024 + (l - 56320) + 65536;
1403
+ } else {
1404
+ i--;
1405
+ }
1406
+ }
1407
+ n = wcwidth2(h, opts);
1408
+ if (n < 0) return -1;
1409
+ s += n;
1410
+ }
1411
+ return s;
1412
+ }
1413
+ module.exports = (str) => wcswidth(str, DEFAULTS);
1414
+ module.exports.config = (opts = {}) => {
1415
+ opts = {
1416
+ ...DEFAULTS,
1417
+ ...opts
1418
+ };
1419
+ return (str) => wcswidth(str, opts);
1420
+ };
1421
+ }
1422
+ });
1423
+
1424
+ // src/cli/index.js
1425
+ import * as prettier2 from "../index.mjs";
1426
+
1427
+ // scripts/build/shims/at.js
1428
+ var at = (isOptionalObject, object, index) => {
1429
+ if (isOptionalObject && (object === void 0 || object === null)) {
1430
+ return;
1431
+ }
1432
+ if (Array.isArray(object) || typeof object === "string") {
1433
+ return object[index < 0 ? object.length + index : index];
1434
+ }
1435
+ return object.at(index);
1436
+ };
1437
+ var at_default = at;
1438
+
1439
+ // src/cli/options/get-context-options.js
1440
+ var import_dashify = __toESM(require_dashify(), 1);
1441
+ import { getSupportInfo } from "../index.mjs";
1442
+
1443
+ // src/cli/cli-options.evaluate.js
1444
+ var cli_options_evaluate_default = {
1445
+ "cache": {
1446
+ "default": false,
1447
+ "description": "Only format changed files. Cannot use with --stdin-filepath.",
1448
+ "type": "boolean"
1449
+ },
1450
+ "cacheLocation": {
1451
+ "description": "Path to the cache file.",
1452
+ "type": "path"
1453
+ },
1454
+ "cacheStrategy": {
1455
+ "choices": [
1456
+ {
1457
+ "description": "Use the file metadata such as timestamps as cache keys",
1458
+ "value": "metadata"
1459
+ },
1460
+ {
1461
+ "description": "Use the file content as cache keys",
1462
+ "value": "content"
1463
+ }
1464
+ ],
1465
+ "description": "Strategy for the cache to use for detecting changed files.",
1466
+ "type": "choice"
1467
+ },
1468
+ "check": {
1469
+ "alias": "c",
1470
+ "category": "Output",
1471
+ "description": "Check if the given files are formatted, print a human-friendly summary\nmessage and paths to unformatted files (see also --list-different).",
1472
+ "type": "boolean"
1473
+ },
1474
+ "color": {
1475
+ "default": true,
1476
+ "description": "Colorize error messages.",
1477
+ "oppositeDescription": "Do not colorize error messages.",
1478
+ "type": "boolean"
1479
+ },
1480
+ "config": {
1481
+ "category": "Config",
1482
+ "description": "Path to a Prettier configuration file (.prettierrc, package.json, prettier.config.js).",
1483
+ "exception": (value) => value === false,
1484
+ "oppositeDescription": "Do not look for a configuration file.",
1485
+ "type": "path"
1486
+ },
1487
+ "configPrecedence": {
1488
+ "category": "Config",
1489
+ "choices": [
1490
+ {
1491
+ "description": "CLI options take precedence over config file",
1492
+ "value": "cli-override"
1493
+ },
1494
+ {
1495
+ "description": "Config file take precedence over CLI options",
1496
+ "value": "file-override"
1497
+ },
1498
+ {
1499
+ "description": "If a config file is found will evaluate it and ignore other CLI options.\nIf no config file is found CLI options will evaluate as normal.",
1500
+ "value": "prefer-file"
1501
+ }
1502
+ ],
1503
+ "default": "cli-override",
1504
+ "description": "Define in which order config files and CLI options should be evaluated.",
1505
+ "type": "choice"
1506
+ },
1507
+ "debugBenchmark": {
1508
+ "type": "boolean"
1509
+ },
1510
+ "debugCheck": {
1511
+ "type": "boolean"
1512
+ },
1513
+ "debugPrintAst": {
1514
+ "type": "boolean"
1515
+ },
1516
+ "debugPrintComments": {
1517
+ "type": "boolean"
1518
+ },
1519
+ "debugPrintDoc": {
1520
+ "type": "boolean"
1521
+ },
1522
+ "debugRepeat": {
1523
+ "default": 0,
1524
+ "type": "int"
1525
+ },
1526
+ "editorconfig": {
1527
+ "category": "Config",
1528
+ "default": true,
1529
+ "description": "Take .editorconfig into account when parsing configuration.",
1530
+ "oppositeDescription": "Don't take .editorconfig into account when parsing configuration.",
1531
+ "type": "boolean"
1532
+ },
1533
+ "errorOnUnmatchedPattern": {
1534
+ "oppositeDescription": "Prevent errors when pattern is unmatched.",
1535
+ "type": "boolean"
1536
+ },
1537
+ "fileInfo": {
1538
+ "description": "Extract the following info (as JSON) for a given file path. Reported fields:\n* ignored (boolean) - true if file path is filtered by --ignore-path\n* inferredParser (string | null) - name of parser inferred from file path",
1539
+ "type": "path"
1540
+ },
1541
+ "findConfigPath": {
1542
+ "category": "Config",
1543
+ "description": "Find and print the path to a configuration file for the given input file.",
1544
+ "type": "path"
1545
+ },
1546
+ "help": {
1547
+ "alias": "h",
1548
+ "description": "Show CLI usage, or details about the given flag.\nExample: --help write",
1549
+ "exception": (value) => value === "",
1550
+ "type": "flag"
1551
+ },
1552
+ "ignorePath": {
1553
+ "array": true,
1554
+ "category": "Config",
1555
+ "default": [
1556
+ {
1557
+ "value": [
1558
+ ".gitignore",
1559
+ ".prettierignore"
1560
+ ]
1561
+ }
1562
+ ],
1563
+ "description": "Path to a file with patterns describing files to ignore.\nMultiple values are accepted.",
1564
+ "type": "path"
1565
+ },
1566
+ "ignoreUnknown": {
1567
+ "alias": "u",
1568
+ "description": "Ignore unknown files.",
1569
+ "type": "boolean"
1570
+ },
1571
+ "listDifferent": {
1572
+ "alias": "l",
1573
+ "category": "Output",
1574
+ "description": "Print the names of files that are different from Prettier's formatting (see also --check).",
1575
+ "type": "boolean"
1576
+ },
1577
+ "logLevel": {
1578
+ "choices": [
1579
+ "silent",
1580
+ "error",
1581
+ "warn",
1582
+ "log",
1583
+ "debug"
1584
+ ],
1585
+ "default": "log",
1586
+ "description": "What level of logs to report.",
1587
+ "type": "choice"
1588
+ },
1589
+ "supportInfo": {
1590
+ "description": "Print support information as JSON.",
1591
+ "type": "boolean"
1592
+ },
1593
+ "version": {
1594
+ "alias": "v",
1595
+ "description": "Print Prettier version.",
1596
+ "type": "boolean"
1597
+ },
1598
+ "withNodeModules": {
1599
+ "category": "Config",
1600
+ "description": "Process files inside 'node_modules' directory.",
1601
+ "type": "boolean"
1602
+ },
1603
+ "write": {
1604
+ "alias": "w",
1605
+ "category": "Output",
1606
+ "description": "Edit files in-place. (Beware!)",
1607
+ "type": "boolean"
1608
+ }
1609
+ };
1610
+
1611
+ // src/cli/prettier-internal.js
1612
+ import { __internal as sharedWithCli } from "../index.mjs";
1613
+ var {
1614
+ errors,
1615
+ optionCategories,
1616
+ createIsIgnoredFunction,
1617
+ formatOptionsHiddenDefaults,
1618
+ normalizeOptions,
1619
+ getSupportInfoWithoutPlugins,
1620
+ normalizeOptionSettings,
1621
+ vnopts,
1622
+ fastGlob,
1623
+ createTwoFilesPatch,
1624
+ mockable
1625
+ } = sharedWithCli;
1626
+
1627
+ // src/cli/options/get-context-options.js
1628
+ var detailedCliOptions = normalizeOptionSettings(cli_options_evaluate_default).map(
1629
+ (option) => normalizeDetailedOption(option)
1630
+ );
1631
+ function apiOptionToCliOption(apiOption) {
1632
+ const cliOption = {
1633
+ ...apiOption,
1634
+ description: apiOption.cliDescription ?? apiOption.description,
1635
+ category: apiOption.cliCategory ?? optionCategories.CATEGORY_FORMAT,
1636
+ forwardToApi: apiOption.name
1637
+ };
1638
+ if (apiOption.deprecated) {
1639
+ delete cliOption.forwardToApi;
1640
+ delete cliOption.description;
1641
+ delete cliOption.oppositeDescription;
1642
+ cliOption.deprecated = true;
1643
+ }
1644
+ return normalizeDetailedOption(cliOption);
1645
+ }
1646
+ function normalizeDetailedOption(option) {
1647
+ var _a;
1648
+ return {
1649
+ category: optionCategories.CATEGORY_OTHER,
1650
+ ...option,
1651
+ name: option.cliName ?? (0, import_dashify.default)(option.name),
1652
+ choices: (_a = option.choices) == null ? void 0 : _a.map((choice) => {
1653
+ const newChoice = {
1654
+ description: "",
1655
+ deprecated: false,
1656
+ ...typeof choice === "object" ? choice : { value: choice }
1657
+ };
1658
+ if (newChoice.value === true) {
1659
+ newChoice.value = "";
1660
+ }
1661
+ return newChoice;
1662
+ })
1663
+ };
1664
+ }
1665
+ function supportInfoToContextOptions({ options: supportOptions, languages }) {
1666
+ const detailedOptions = [
1667
+ ...detailedCliOptions,
1668
+ ...supportOptions.map((apiOption) => apiOptionToCliOption(apiOption))
1669
+ ];
1670
+ return {
1671
+ supportOptions,
1672
+ languages,
1673
+ detailedOptions
1674
+ };
1675
+ }
1676
+ async function getContextOptions(plugins) {
1677
+ const supportInfo = await getSupportInfo({
1678
+ showDeprecated: true,
1679
+ plugins
1680
+ });
1681
+ return supportInfoToContextOptions(supportInfo);
1682
+ }
1683
+ function getContextOptionsWithoutPlugins() {
1684
+ const supportInfo = getSupportInfoWithoutPlugins();
1685
+ return supportInfoToContextOptions(supportInfo);
1686
+ }
1687
+
1688
+ // scripts/build/shims/string-replace-all.js
1689
+ var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
1690
+ if (isOptionalObject && (original === void 0 || original === null)) {
1691
+ return;
1692
+ }
1693
+ if (original.replaceAll) {
1694
+ return original.replaceAll(pattern, replacement);
1695
+ }
1696
+ if (pattern.global) {
1697
+ return original.replace(pattern, replacement);
1698
+ }
1699
+ return original.split(pattern).join(replacement);
1700
+ };
1701
+ var string_replace_all_default = stringReplaceAll;
1702
+
1703
+ // node_modules/camelcase/index.js
1704
+ var UPPERCASE = /[\p{Lu}]/u;
1705
+ var LOWERCASE = /[\p{Ll}]/u;
1706
+ var LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu;
1707
+ var IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u;
1708
+ var SEPARATORS = /[_.\- ]+/;
1709
+ var LEADING_SEPARATORS = new RegExp("^" + SEPARATORS.source);
1710
+ var SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, "gu");
1711
+ var NUMBERS_AND_IDENTIFIER = new RegExp("\\d+" + IDENTIFIER.source, "gu");
1712
+ var preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase2) => {
1713
+ let isLastCharLower = false;
1714
+ let isLastCharUpper = false;
1715
+ let isLastLastCharUpper = false;
1716
+ let isLastLastCharPreserved = false;
1717
+ for (let index = 0; index < string.length; index++) {
1718
+ const character = string[index];
1719
+ isLastLastCharPreserved = index > 2 ? string[index - 3] === "-" : true;
1720
+ if (isLastCharLower && UPPERCASE.test(character)) {
1721
+ string = string.slice(0, index) + "-" + string.slice(index);
1722
+ isLastCharLower = false;
1723
+ isLastLastCharUpper = isLastCharUpper;
1724
+ isLastCharUpper = true;
1725
+ index++;
1726
+ } else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase2)) {
1727
+ string = string.slice(0, index - 1) + "-" + string.slice(index - 1);
1728
+ isLastLastCharUpper = isLastCharUpper;
1729
+ isLastCharUpper = false;
1730
+ isLastCharLower = true;
1731
+ } else {
1732
+ isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;
1733
+ isLastLastCharUpper = isLastCharUpper;
1734
+ isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;
1735
+ }
1736
+ }
1737
+ return string;
1738
+ };
1739
+ var preserveConsecutiveUppercase = (input, toLowerCase) => {
1740
+ LEADING_CAPITAL.lastIndex = 0;
1741
+ return string_replace_all_default(
1742
+ /* isOptionalObject */
1743
+ false,
1744
+ input,
1745
+ LEADING_CAPITAL,
1746
+ (match) => toLowerCase(match)
1747
+ );
1748
+ };
1749
+ var postProcess = (input, toUpperCase) => {
1750
+ SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
1751
+ NUMBERS_AND_IDENTIFIER.lastIndex = 0;
1752
+ return string_replace_all_default(
1753
+ /* isOptionalObject */
1754
+ false,
1755
+ string_replace_all_default(
1756
+ /* isOptionalObject */
1757
+ false,
1758
+ input,
1759
+ NUMBERS_AND_IDENTIFIER,
1760
+ (match, pattern, offset) => ["_", "-"].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match)
1761
+ ),
1762
+ SEPARATORS_AND_IDENTIFIER,
1763
+ (_, identifier) => toUpperCase(identifier)
1764
+ );
1765
+ };
1766
+ function camelCase(input, options) {
1767
+ if (!(typeof input === "string" || Array.isArray(input))) {
1768
+ throw new TypeError("Expected the input to be `string | string[]`");
1769
+ }
1770
+ options = {
1771
+ pascalCase: false,
1772
+ preserveConsecutiveUppercase: false,
1773
+ ...options
1774
+ };
1775
+ if (Array.isArray(input)) {
1776
+ input = input.map((x) => x.trim()).filter((x) => x.length).join("-");
1777
+ } else {
1778
+ input = input.trim();
1779
+ }
1780
+ if (input.length === 0) {
1781
+ return "";
1782
+ }
1783
+ const toLowerCase = options.locale === false ? (string) => string.toLowerCase() : (string) => string.toLocaleLowerCase(options.locale);
1784
+ const toUpperCase = options.locale === false ? (string) => string.toUpperCase() : (string) => string.toLocaleUpperCase(options.locale);
1785
+ if (input.length === 1) {
1786
+ if (SEPARATORS.test(input)) {
1787
+ return "";
1788
+ }
1789
+ return options.pascalCase ? toUpperCase(input) : toLowerCase(input);
1790
+ }
1791
+ const hasUpperCase = input !== toLowerCase(input);
1792
+ if (hasUpperCase) {
1793
+ input = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);
1794
+ }
1795
+ input = input.replace(LEADING_SEPARATORS, "");
1796
+ input = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);
1797
+ if (options.pascalCase) {
1798
+ input = toUpperCase(input.charAt(0)) + input.slice(1);
1799
+ }
1800
+ return postProcess(input, toUpperCase);
1801
+ }
1802
+
1803
+ // src/cli/utils.js
1804
+ import fs from "fs/promises";
1805
+ import path from "path";
1806
+
1807
+ // node_modules/sdbm/index.js
1808
+ function sdbm(string) {
1809
+ let hash = 0;
1810
+ for (let i = 0; i < string.length; i++) {
1811
+ hash = string.charCodeAt(i) + (hash << 6) + (hash << 16) - hash;
1812
+ }
1813
+ return hash >>> 0;
1814
+ }
1815
+
1816
+ // src/cli/utils.js
1817
+ import { __internal as sharedWithCli2 } from "../index.mjs";
1818
+ var printToScreen = console.log.bind(console);
1819
+ function groupBy(array2, iteratee) {
1820
+ const result = /* @__PURE__ */ Object.create(null);
1821
+ for (const value of array2) {
1822
+ const key = iteratee(value);
1823
+ if (Array.isArray(result[key])) {
1824
+ result[key].push(value);
1825
+ } else {
1826
+ result[key] = [value];
1827
+ }
1828
+ }
1829
+ return result;
1830
+ }
1831
+ function pick(object, keys) {
1832
+ const entries = keys.map((key) => [key, object[key]]);
1833
+ return Object.fromEntries(entries);
1834
+ }
1835
+ function createHash(source) {
1836
+ return String(sdbm(source));
1837
+ }
1838
+ async function statSafe(filePath) {
1839
+ try {
1840
+ return await fs.stat(filePath);
1841
+ } catch (error) {
1842
+ if (error.code !== "ENOENT") {
1843
+ throw error;
1844
+ }
1845
+ }
1846
+ }
1847
+ async function lstatSafe(filePath) {
1848
+ try {
1849
+ return await fs.lstat(filePath);
1850
+ } catch (error) {
1851
+ if (error.code !== "ENOENT") {
1852
+ throw error;
1853
+ }
1854
+ }
1855
+ }
1856
+ function isJson(value) {
1857
+ try {
1858
+ JSON.parse(value);
1859
+ return true;
1860
+ } catch {
1861
+ return false;
1862
+ }
1863
+ }
1864
+ var normalizeToPosix = path.sep === "\\" ? (filepath) => string_replace_all_default(
1865
+ /* isOptionalObject */
1866
+ false,
1867
+ filepath,
1868
+ "\\",
1869
+ "/"
1870
+ ) : (filepath) => filepath;
1871
+ var {
1872
+ isNonEmptyArray,
1873
+ partition,
1874
+ omit
1875
+ } = sharedWithCli2.utils;
1876
+
1877
+ // src/cli/options/create-minimist-options.js
1878
+ function createMinimistOptions(detailedOptions) {
1879
+ const booleanNames = [];
1880
+ const stringNames = [];
1881
+ const defaultValues = {};
1882
+ for (const option of detailedOptions) {
1883
+ const { name, alias, type } = option;
1884
+ const names = type === "boolean" ? booleanNames : stringNames;
1885
+ names.push(name);
1886
+ if (alias) {
1887
+ names.push(alias);
1888
+ }
1889
+ if (!option.deprecated && (!option.forwardToApi || name === "plugin") && option.default !== void 0) {
1890
+ defaultValues[option.name] = option.default;
1891
+ }
1892
+ }
1893
+ return {
1894
+ // we use vnopts' AliasSchema to handle aliases for better error messages
1895
+ alias: {},
1896
+ boolean: booleanNames,
1897
+ string: stringNames,
1898
+ default: defaultValues
1899
+ };
1900
+ }
1901
+
1902
+ // src/cli/options/minimist.js
1903
+ var import_minimist = __toESM(require_minimist(), 1);
1904
+ var PLACEHOLDER = null;
1905
+ function minimistParse(args, options) {
1906
+ const boolean = options.boolean ?? [];
1907
+ const defaults = options.default ?? {};
1908
+ const booleanWithoutDefault = boolean.filter((key) => !(key in defaults));
1909
+ const newDefaults = {
1910
+ ...defaults,
1911
+ ...Object.fromEntries(
1912
+ booleanWithoutDefault.map((key) => [key, PLACEHOLDER])
1913
+ )
1914
+ };
1915
+ const parsed = (0, import_minimist.default)(args, { ...options, default: newDefaults });
1916
+ return Object.fromEntries(
1917
+ Object.entries(parsed).filter(([, value]) => value !== PLACEHOLDER)
1918
+ );
1919
+ }
1920
+
1921
+ // node_modules/chalk/source/vendor/ansi-styles/index.js
1922
+ var ANSI_BACKGROUND_OFFSET = 10;
1923
+ var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
1924
+ var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
1925
+ var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
1926
+ var styles = {
1927
+ modifier: {
1928
+ reset: [0, 0],
1929
+ // 21 isn't widely supported and 22 does the same thing
1930
+ bold: [1, 22],
1931
+ dim: [2, 22],
1932
+ italic: [3, 23],
1933
+ underline: [4, 24],
1934
+ overline: [53, 55],
1935
+ inverse: [7, 27],
1936
+ hidden: [8, 28],
1937
+ strikethrough: [9, 29]
1938
+ },
1939
+ color: {
1940
+ black: [30, 39],
1941
+ red: [31, 39],
1942
+ green: [32, 39],
1943
+ yellow: [33, 39],
1944
+ blue: [34, 39],
1945
+ magenta: [35, 39],
1946
+ cyan: [36, 39],
1947
+ white: [37, 39],
1948
+ // Bright color
1949
+ blackBright: [90, 39],
1950
+ gray: [90, 39],
1951
+ // Alias of `blackBright`
1952
+ grey: [90, 39],
1953
+ // Alias of `blackBright`
1954
+ redBright: [91, 39],
1955
+ greenBright: [92, 39],
1956
+ yellowBright: [93, 39],
1957
+ blueBright: [94, 39],
1958
+ magentaBright: [95, 39],
1959
+ cyanBright: [96, 39],
1960
+ whiteBright: [97, 39]
1961
+ },
1962
+ bgColor: {
1963
+ bgBlack: [40, 49],
1964
+ bgRed: [41, 49],
1965
+ bgGreen: [42, 49],
1966
+ bgYellow: [43, 49],
1967
+ bgBlue: [44, 49],
1968
+ bgMagenta: [45, 49],
1969
+ bgCyan: [46, 49],
1970
+ bgWhite: [47, 49],
1971
+ // Bright color
1972
+ bgBlackBright: [100, 49],
1973
+ bgGray: [100, 49],
1974
+ // Alias of `bgBlackBright`
1975
+ bgGrey: [100, 49],
1976
+ // Alias of `bgBlackBright`
1977
+ bgRedBright: [101, 49],
1978
+ bgGreenBright: [102, 49],
1979
+ bgYellowBright: [103, 49],
1980
+ bgBlueBright: [104, 49],
1981
+ bgMagentaBright: [105, 49],
1982
+ bgCyanBright: [106, 49],
1983
+ bgWhiteBright: [107, 49]
1984
+ }
1985
+ };
1986
+ var modifierNames = Object.keys(styles.modifier);
1987
+ var foregroundColorNames = Object.keys(styles.color);
1988
+ var backgroundColorNames = Object.keys(styles.bgColor);
1989
+ var colorNames = [...foregroundColorNames, ...backgroundColorNames];
1990
+ function assembleStyles() {
1991
+ const codes = /* @__PURE__ */ new Map();
1992
+ for (const [groupName, group] of Object.entries(styles)) {
1993
+ for (const [styleName, style] of Object.entries(group)) {
1994
+ styles[styleName] = {
1995
+ open: `\x1B[${style[0]}m`,
1996
+ close: `\x1B[${style[1]}m`
1997
+ };
1998
+ group[styleName] = styles[styleName];
1999
+ codes.set(style[0], style[1]);
2000
+ }
2001
+ Object.defineProperty(styles, groupName, {
2002
+ value: group,
2003
+ enumerable: false
2004
+ });
2005
+ }
2006
+ Object.defineProperty(styles, "codes", {
2007
+ value: codes,
2008
+ enumerable: false
2009
+ });
2010
+ styles.color.close = "\x1B[39m";
2011
+ styles.bgColor.close = "\x1B[49m";
2012
+ styles.color.ansi = wrapAnsi16();
2013
+ styles.color.ansi256 = wrapAnsi256();
2014
+ styles.color.ansi16m = wrapAnsi16m();
2015
+ styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
2016
+ styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
2017
+ styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
2018
+ Object.defineProperties(styles, {
2019
+ rgbToAnsi256: {
2020
+ value(red, green, blue) {
2021
+ if (red === green && green === blue) {
2022
+ if (red < 8) {
2023
+ return 16;
2024
+ }
2025
+ if (red > 248) {
2026
+ return 231;
2027
+ }
2028
+ return Math.round((red - 8) / 247 * 24) + 232;
2029
+ }
2030
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
2031
+ },
2032
+ enumerable: false
2033
+ },
2034
+ hexToRgb: {
2035
+ value(hex) {
2036
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
2037
+ if (!matches) {
2038
+ return [0, 0, 0];
2039
+ }
2040
+ let [colorString] = matches;
2041
+ if (colorString.length === 3) {
2042
+ colorString = [...colorString].map((character) => character + character).join("");
2043
+ }
2044
+ const integer = Number.parseInt(colorString, 16);
2045
+ return [
2046
+ /* eslint-disable no-bitwise */
2047
+ integer >> 16 & 255,
2048
+ integer >> 8 & 255,
2049
+ integer & 255
2050
+ /* eslint-enable no-bitwise */
2051
+ ];
2052
+ },
2053
+ enumerable: false
2054
+ },
2055
+ hexToAnsi256: {
2056
+ value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
2057
+ enumerable: false
2058
+ },
2059
+ ansi256ToAnsi: {
2060
+ value(code) {
2061
+ if (code < 8) {
2062
+ return 30 + code;
2063
+ }
2064
+ if (code < 16) {
2065
+ return 90 + (code - 8);
2066
+ }
2067
+ let red;
2068
+ let green;
2069
+ let blue;
2070
+ if (code >= 232) {
2071
+ red = ((code - 232) * 10 + 8) / 255;
2072
+ green = red;
2073
+ blue = red;
2074
+ } else {
2075
+ code -= 16;
2076
+ const remainder = code % 36;
2077
+ red = Math.floor(code / 36) / 5;
2078
+ green = Math.floor(remainder / 6) / 5;
2079
+ blue = remainder % 6 / 5;
2080
+ }
2081
+ const value = Math.max(red, green, blue) * 2;
2082
+ if (value === 0) {
2083
+ return 30;
2084
+ }
2085
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
2086
+ if (value === 2) {
2087
+ result += 60;
2088
+ }
2089
+ return result;
2090
+ },
2091
+ enumerable: false
2092
+ },
2093
+ rgbToAnsi: {
2094
+ value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
2095
+ enumerable: false
2096
+ },
2097
+ hexToAnsi: {
2098
+ value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
2099
+ enumerable: false
2100
+ }
2101
+ });
2102
+ return styles;
2103
+ }
2104
+ var ansiStyles = assembleStyles();
2105
+ var ansi_styles_default = ansiStyles;
2106
+
2107
+ // node_modules/chalk/source/vendor/supports-color/index.js
2108
+ import process2 from "process";
2109
+ import os from "os";
2110
+ import tty from "tty";
2111
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
2112
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
2113
+ const position = argv.indexOf(prefix + flag);
2114
+ const terminatorPosition = argv.indexOf("--");
2115
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
2116
+ }
2117
+ var { env } = process2;
2118
+ var flagForceColor;
2119
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
2120
+ flagForceColor = 0;
2121
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
2122
+ flagForceColor = 1;
2123
+ }
2124
+ function envForceColor() {
2125
+ if ("FORCE_COLOR" in env) {
2126
+ if (env.FORCE_COLOR === "true") {
2127
+ return 1;
2128
+ }
2129
+ if (env.FORCE_COLOR === "false") {
2130
+ return 0;
2131
+ }
2132
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
2133
+ }
2134
+ }
2135
+ function translateLevel(level) {
2136
+ if (level === 0) {
2137
+ return false;
2138
+ }
2139
+ return {
2140
+ level,
2141
+ hasBasic: true,
2142
+ has256: level >= 2,
2143
+ has16m: level >= 3
2144
+ };
2145
+ }
2146
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
2147
+ const noFlagForceColor = envForceColor();
2148
+ if (noFlagForceColor !== void 0) {
2149
+ flagForceColor = noFlagForceColor;
2150
+ }
2151
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
2152
+ if (forceColor === 0) {
2153
+ return 0;
2154
+ }
2155
+ if (sniffFlags) {
2156
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
2157
+ return 3;
2158
+ }
2159
+ if (hasFlag("color=256")) {
2160
+ return 2;
2161
+ }
2162
+ }
2163
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
2164
+ return 1;
2165
+ }
2166
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
2167
+ return 0;
2168
+ }
2169
+ const min = forceColor || 0;
2170
+ if (env.TERM === "dumb") {
2171
+ return min;
2172
+ }
2173
+ if (process2.platform === "win32") {
2174
+ const osRelease = os.release().split(".");
2175
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
2176
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
2177
+ }
2178
+ return 1;
2179
+ }
2180
+ if ("CI" in env) {
2181
+ if ("GITHUB_ACTIONS" in env || "GITEA_ACTIONS" in env) {
2182
+ return 3;
2183
+ }
2184
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
2185
+ return 1;
2186
+ }
2187
+ return min;
2188
+ }
2189
+ if ("TEAMCITY_VERSION" in env) {
2190
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
2191
+ }
2192
+ if (env.COLORTERM === "truecolor") {
2193
+ return 3;
2194
+ }
2195
+ if (env.TERM === "xterm-kitty") {
2196
+ return 3;
2197
+ }
2198
+ if ("TERM_PROGRAM" in env) {
2199
+ const version2 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
2200
+ switch (env.TERM_PROGRAM) {
2201
+ case "iTerm.app": {
2202
+ return version2 >= 3 ? 3 : 2;
2203
+ }
2204
+ case "Apple_Terminal": {
2205
+ return 2;
2206
+ }
2207
+ }
2208
+ }
2209
+ if (/-256(color)?$/i.test(env.TERM)) {
2210
+ return 2;
2211
+ }
2212
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
2213
+ return 1;
2214
+ }
2215
+ if ("COLORTERM" in env) {
2216
+ return 1;
2217
+ }
2218
+ return min;
2219
+ }
2220
+ function createSupportsColor(stream, options = {}) {
2221
+ const level = _supportsColor(stream, {
2222
+ streamIsTTY: stream && stream.isTTY,
2223
+ ...options
2224
+ });
2225
+ return translateLevel(level);
2226
+ }
2227
+ var supportsColor = {
2228
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
2229
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) })
2230
+ };
2231
+ var supports_color_default = supportsColor;
2232
+
2233
+ // node_modules/chalk/source/utilities.js
2234
+ function stringReplaceAll2(string, substring, replacer) {
2235
+ let index = string.indexOf(substring);
2236
+ if (index === -1) {
2237
+ return string;
2238
+ }
2239
+ const substringLength = substring.length;
2240
+ let endIndex = 0;
2241
+ let returnValue = "";
2242
+ do {
2243
+ returnValue += string.slice(endIndex, index) + substring + replacer;
2244
+ endIndex = index + substringLength;
2245
+ index = string.indexOf(substring, endIndex);
2246
+ } while (index !== -1);
2247
+ returnValue += string.slice(endIndex);
2248
+ return returnValue;
2249
+ }
2250
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
2251
+ let endIndex = 0;
2252
+ let returnValue = "";
2253
+ do {
2254
+ const gotCR = string[index - 1] === "\r";
2255
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
2256
+ endIndex = index + 1;
2257
+ index = string.indexOf("\n", endIndex);
2258
+ } while (index !== -1);
2259
+ returnValue += string.slice(endIndex);
2260
+ return returnValue;
2261
+ }
2262
+
2263
+ // node_modules/chalk/source/index.js
2264
+ var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
2265
+ var GENERATOR = Symbol("GENERATOR");
2266
+ var STYLER = Symbol("STYLER");
2267
+ var IS_EMPTY = Symbol("IS_EMPTY");
2268
+ var levelMapping = [
2269
+ "ansi",
2270
+ "ansi",
2271
+ "ansi256",
2272
+ "ansi16m"
2273
+ ];
2274
+ var styles2 = /* @__PURE__ */ Object.create(null);
2275
+ var applyOptions = (object, options = {}) => {
2276
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
2277
+ throw new Error("The `level` option should be an integer from 0 to 3");
2278
+ }
2279
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
2280
+ object.level = options.level === void 0 ? colorLevel : options.level;
2281
+ };
2282
+ var chalkFactory = (options) => {
2283
+ const chalk2 = (...strings) => strings.join(" ");
2284
+ applyOptions(chalk2, options);
2285
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
2286
+ return chalk2;
2287
+ };
2288
+ function createChalk(options) {
2289
+ return chalkFactory(options);
2290
+ }
2291
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
2292
+ for (const [styleName, style] of Object.entries(ansi_styles_default)) {
2293
+ styles2[styleName] = {
2294
+ get() {
2295
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
2296
+ Object.defineProperty(this, styleName, { value: builder });
2297
+ return builder;
2298
+ }
2299
+ };
2300
+ }
2301
+ styles2.visible = {
2302
+ get() {
2303
+ const builder = createBuilder(this, this[STYLER], true);
2304
+ Object.defineProperty(this, "visible", { value: builder });
2305
+ return builder;
2306
+ }
2307
+ };
2308
+ var getModelAnsi = (model, level, type, ...arguments_) => {
2309
+ if (model === "rgb") {
2310
+ if (level === "ansi16m") {
2311
+ return ansi_styles_default[type].ansi16m(...arguments_);
2312
+ }
2313
+ if (level === "ansi256") {
2314
+ return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
2315
+ }
2316
+ return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
2317
+ }
2318
+ if (model === "hex") {
2319
+ return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
2320
+ }
2321
+ return ansi_styles_default[type][model](...arguments_);
2322
+ };
2323
+ var usedModels = ["rgb", "hex", "ansi256"];
2324
+ for (const model of usedModels) {
2325
+ styles2[model] = {
2326
+ get() {
2327
+ const { level } = this;
2328
+ return function(...arguments_) {
2329
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
2330
+ return createBuilder(this, styler, this[IS_EMPTY]);
2331
+ };
2332
+ }
2333
+ };
2334
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
2335
+ styles2[bgModel] = {
2336
+ get() {
2337
+ const { level } = this;
2338
+ return function(...arguments_) {
2339
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
2340
+ return createBuilder(this, styler, this[IS_EMPTY]);
2341
+ };
2342
+ }
2343
+ };
2344
+ }
2345
+ var proto = Object.defineProperties(() => {
2346
+ }, {
2347
+ ...styles2,
2348
+ level: {
2349
+ enumerable: true,
2350
+ get() {
2351
+ return this[GENERATOR].level;
2352
+ },
2353
+ set(level) {
2354
+ this[GENERATOR].level = level;
2355
+ }
2356
+ }
2357
+ });
2358
+ var createStyler = (open, close, parent) => {
2359
+ let openAll;
2360
+ let closeAll;
2361
+ if (parent === void 0) {
2362
+ openAll = open;
2363
+ closeAll = close;
2364
+ } else {
2365
+ openAll = parent.openAll + open;
2366
+ closeAll = close + parent.closeAll;
2367
+ }
2368
+ return {
2369
+ open,
2370
+ close,
2371
+ openAll,
2372
+ closeAll,
2373
+ parent
2374
+ };
2375
+ };
2376
+ var createBuilder = (self, _styler, _isEmpty) => {
2377
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
2378
+ Object.setPrototypeOf(builder, proto);
2379
+ builder[GENERATOR] = self;
2380
+ builder[STYLER] = _styler;
2381
+ builder[IS_EMPTY] = _isEmpty;
2382
+ return builder;
2383
+ };
2384
+ var applyStyle = (self, string) => {
2385
+ if (self.level <= 0 || !string) {
2386
+ return self[IS_EMPTY] ? "" : string;
2387
+ }
2388
+ let styler = self[STYLER];
2389
+ if (styler === void 0) {
2390
+ return string;
2391
+ }
2392
+ const { openAll, closeAll } = styler;
2393
+ if (string.includes("\x1B")) {
2394
+ while (styler !== void 0) {
2395
+ string = stringReplaceAll2(string, styler.close, styler.open);
2396
+ styler = styler.parent;
2397
+ }
2398
+ }
2399
+ const lfIndex = string.indexOf("\n");
2400
+ if (lfIndex !== -1) {
2401
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
2402
+ }
2403
+ return openAll + string + closeAll;
2404
+ };
2405
+ Object.defineProperties(createChalk.prototype, styles2);
2406
+ var chalk = createChalk();
2407
+ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
2408
+ var source_default = chalk;
2409
+
2410
+ // node_modules/leven/index.js
2411
+ var array = [];
2412
+ var characterCodeCache = [];
2413
+ function leven(first, second) {
2414
+ if (first === second) {
2415
+ return 0;
2416
+ }
2417
+ const swap = first;
2418
+ if (first.length > second.length) {
2419
+ first = second;
2420
+ second = swap;
2421
+ }
2422
+ let firstLength = first.length;
2423
+ let secondLength = second.length;
2424
+ while (firstLength > 0 && first.charCodeAt(~-firstLength) === second.charCodeAt(~-secondLength)) {
2425
+ firstLength--;
2426
+ secondLength--;
2427
+ }
2428
+ let start = 0;
2429
+ while (start < firstLength && first.charCodeAt(start) === second.charCodeAt(start)) {
2430
+ start++;
2431
+ }
2432
+ firstLength -= start;
2433
+ secondLength -= start;
2434
+ if (firstLength === 0) {
2435
+ return secondLength;
2436
+ }
2437
+ let bCharacterCode;
2438
+ let result;
2439
+ let temporary;
2440
+ let temporary2;
2441
+ let index = 0;
2442
+ let index2 = 0;
2443
+ while (index < firstLength) {
2444
+ characterCodeCache[index] = first.charCodeAt(start + index);
2445
+ array[index] = ++index;
2446
+ }
2447
+ while (index2 < secondLength) {
2448
+ bCharacterCode = second.charCodeAt(start + index2);
2449
+ temporary = index2++;
2450
+ result = index2;
2451
+ for (index = 0; index < firstLength; index++) {
2452
+ temporary2 = bCharacterCode === characterCodeCache[index] ? temporary : temporary + 1;
2453
+ temporary = array[index];
2454
+ result = array[index] = temporary > result ? temporary2 > result ? result + 1 : temporary2 : temporary2 > temporary ? temporary + 1 : temporary2;
2455
+ }
2456
+ }
2457
+ return result;
2458
+ }
2459
+
2460
+ // src/cli/options/normalize-cli-options.js
2461
+ var descriptor = {
2462
+ key: (key) => key.length === 1 ? `-${key}` : `--${key}`,
2463
+ value: (value) => vnopts.apiDescriptor.value(value),
2464
+ pair: ({ key, value }) => value === false ? `--no-${key}` : value === true ? descriptor.key(key) : value === "" ? `${descriptor.key(key)} without an argument` : `${descriptor.key(key)}=${value}`
2465
+ };
2466
+ var _flags;
2467
+ var FlagSchema = class extends vnopts.ChoiceSchema {
2468
+ constructor({ name, flags }) {
2469
+ super({ name, choices: flags });
2470
+ __privateAdd(this, _flags, []);
2471
+ __privateSet(this, _flags, [...flags].sort());
2472
+ }
2473
+ preprocess(value, utils) {
2474
+ if (typeof value === "string" && value.length > 0 && !__privateGet(this, _flags).includes(value)) {
2475
+ const suggestion = __privateGet(this, _flags).find((flag) => leven(flag, value) < 3);
2476
+ if (suggestion) {
2477
+ utils.logger.warn(
2478
+ [
2479
+ `Unknown flag ${source_default.yellow(utils.descriptor.value(value))},`,
2480
+ `did you mean ${source_default.blue(utils.descriptor.value(suggestion))}?`
2481
+ ].join(" ")
2482
+ );
2483
+ return suggestion;
2484
+ }
2485
+ }
2486
+ return value;
2487
+ }
2488
+ expected() {
2489
+ return "a flag";
2490
+ }
2491
+ };
2492
+ _flags = new WeakMap();
2493
+ function normalizeCliOptions(options, optionInfos, opts) {
2494
+ return normalizeOptions(options, optionInfos, {
2495
+ ...opts,
2496
+ isCLI: true,
2497
+ FlagSchema,
2498
+ descriptor
2499
+ });
2500
+ }
2501
+ var normalize_cli_options_default = normalizeCliOptions;
2502
+
2503
+ // src/cli/options/parse-cli-arguments.js
2504
+ function parseArgv(rawArguments, detailedOptions, logger, keys) {
2505
+ var _a;
2506
+ const minimistOptions = createMinimistOptions(detailedOptions);
2507
+ let argv = minimistParse(rawArguments, minimistOptions);
2508
+ if (keys) {
2509
+ detailedOptions = detailedOptions.filter(
2510
+ (option) => keys.includes(option.name)
2511
+ );
2512
+ argv = pick(argv, keys);
2513
+ }
2514
+ const normalized = normalize_cli_options_default(argv, detailedOptions, { logger });
2515
+ return {
2516
+ ...Object.fromEntries(
2517
+ Object.entries(normalized).map(([key, value]) => {
2518
+ const option = detailedOptions.find(({ name }) => name === key) || {};
2519
+ return [option.forwardToApi || camelCase(key), value];
2520
+ })
2521
+ ),
2522
+ _: (_a = normalized._) == null ? void 0 : _a.map(String),
2523
+ get __raw() {
2524
+ return argv;
2525
+ }
2526
+ };
2527
+ }
2528
+ var { detailedOptions: detailedOptionsWithoutPlugins } = getContextOptionsWithoutPlugins();
2529
+ function parseArgvWithoutPlugins(rawArguments, logger, keys) {
2530
+ return parseArgv(
2531
+ rawArguments,
2532
+ detailedOptionsWithoutPlugins,
2533
+ logger,
2534
+ typeof keys === "string" ? [keys] : keys
2535
+ );
2536
+ }
2537
+
2538
+ // src/cli/context.js
2539
+ var _stack;
2540
+ var Context = class {
2541
+ constructor({
2542
+ rawArguments,
2543
+ logger
2544
+ }) {
2545
+ __privateAdd(this, _stack, []);
2546
+ this.rawArguments = rawArguments;
2547
+ this.logger = logger;
2548
+ }
2549
+ async init() {
2550
+ const {
2551
+ rawArguments,
2552
+ logger
2553
+ } = this;
2554
+ const {
2555
+ plugins
2556
+ } = parseArgvWithoutPlugins(rawArguments, logger, ["plugin"]);
2557
+ await this.pushContextPlugins(plugins);
2558
+ const argv = parseArgv(rawArguments, this.detailedOptions, logger);
2559
+ this.argv = argv;
2560
+ this.filePatterns = argv._;
2561
+ }
2562
+ /**
2563
+ * @param {string[]} plugins
2564
+ */
2565
+ async pushContextPlugins(plugins) {
2566
+ const options = await getContextOptions(plugins);
2567
+ __privateGet(this, _stack).push(options);
2568
+ Object.assign(this, options);
2569
+ }
2570
+ popContextPlugins() {
2571
+ __privateGet(this, _stack).pop();
2572
+ Object.assign(this, at_default(
2573
+ /* isOptionalObject */
2574
+ false,
2575
+ __privateGet(this, _stack),
2576
+ -1
2577
+ ));
2578
+ }
2579
+ // eslint-disable-next-line getter-return
2580
+ get performanceTestFlag() {
2581
+ const {
2582
+ debugBenchmark,
2583
+ debugRepeat
2584
+ } = this.argv;
2585
+ if (debugBenchmark) {
2586
+ return {
2587
+ name: "--debug-benchmark",
2588
+ debugBenchmark: true
2589
+ };
2590
+ }
2591
+ if (debugRepeat > 0) {
2592
+ return {
2593
+ name: "--debug-repeat",
2594
+ debugRepeat
2595
+ };
2596
+ }
2597
+ const {
2598
+ PRETTIER_PERF_REPEAT
2599
+ } = process.env;
2600
+ if (PRETTIER_PERF_REPEAT && /^\d+$/u.test(PRETTIER_PERF_REPEAT)) {
2601
+ return {
2602
+ name: "PRETTIER_PERF_REPEAT (environment variable)",
2603
+ debugRepeat: Number(PRETTIER_PERF_REPEAT)
2604
+ };
2605
+ }
2606
+ }
2607
+ };
2608
+ _stack = new WeakMap();
2609
+ var context_default = Context;
2610
+
2611
+ // src/cli/file-info.js
2612
+ var import_fast_json_stable_stringify = __toESM(require_fast_json_stable_stringify(), 1);
2613
+ import { format, getFileInfo } from "../index.mjs";
2614
+ async function logFileInfoOrDie(context) {
2615
+ const {
2616
+ fileInfo: file,
2617
+ ignorePath,
2618
+ withNodeModules,
2619
+ plugins,
2620
+ config
2621
+ } = context.argv;
2622
+ const fileInfo = await getFileInfo(file, {
2623
+ ignorePath,
2624
+ withNodeModules,
2625
+ plugins,
2626
+ resolveConfig: config !== false
2627
+ });
2628
+ printToScreen(await format((0, import_fast_json_stable_stringify.default)(fileInfo), { parser: "json" }));
2629
+ }
2630
+ var file_info_default = logFileInfoOrDie;
2631
+
2632
+ // src/cli/find-config-path.js
2633
+ import path2 from "path";
2634
+ import { resolveConfigFile } from "../index.mjs";
2635
+ async function logResolvedConfigPathOrDie(context) {
2636
+ const file = context.argv.findConfigPath;
2637
+ const configFile = await resolveConfigFile(file);
2638
+ if (configFile) {
2639
+ printToScreen(normalizeToPosix(path2.relative(process.cwd(), configFile)));
2640
+ } else {
2641
+ throw new Error(`Can not find configure file for "${file}".`);
2642
+ }
2643
+ }
2644
+ var find_config_path_default = logResolvedConfigPathOrDie;
2645
+
2646
+ // src/cli/format.js
2647
+ import fs5 from "fs/promises";
2648
+ import path9 from "path";
2649
+ import * as prettier from "../index.mjs";
2650
+
2651
+ // src/cli/expand-patterns.js
2652
+ import path3 from "path";
2653
+ async function* expandPatterns(context) {
2654
+ const seen = /* @__PURE__ */ new Set();
2655
+ let noResults = true;
2656
+ for await (const {
2657
+ filePath,
2658
+ ignoreUnknown,
2659
+ error
2660
+ } of expandPatternsInternal(context)) {
2661
+ noResults = false;
2662
+ if (error) {
2663
+ yield {
2664
+ error
2665
+ };
2666
+ continue;
2667
+ }
2668
+ const filename = path3.resolve(filePath);
2669
+ if (seen.has(filename)) {
2670
+ continue;
2671
+ }
2672
+ seen.add(filename);
2673
+ yield {
2674
+ filename,
2675
+ ignoreUnknown
2676
+ };
2677
+ }
2678
+ if (noResults && context.argv.errorOnUnmatchedPattern !== false) {
2679
+ yield {
2680
+ error: `No matching files. Patterns: ${context.filePatterns.join(" ")}`
2681
+ };
2682
+ }
2683
+ }
2684
+ async function* expandPatternsInternal(context) {
2685
+ const silentlyIgnoredDirs = [".git", ".sl", ".svn", ".hg"];
2686
+ if (context.argv.withNodeModules !== true) {
2687
+ silentlyIgnoredDirs.push("node_modules");
2688
+ }
2689
+ const globOptions = {
2690
+ dot: true,
2691
+ ignore: silentlyIgnoredDirs.map((dir) => "**/" + dir),
2692
+ followSymbolicLinks: false
2693
+ };
2694
+ const cwd2 = process.cwd();
2695
+ const entries = [];
2696
+ for (const pattern of context.filePatterns) {
2697
+ const absolutePath = path3.resolve(cwd2, pattern);
2698
+ if (containsIgnoredPathSegment(absolutePath, cwd2, silentlyIgnoredDirs)) {
2699
+ continue;
2700
+ }
2701
+ const stat = await lstatSafe(absolutePath);
2702
+ if (stat) {
2703
+ if (stat.isSymbolicLink()) {
2704
+ if (context.argv.errorOnUnmatchedPattern !== false) {
2705
+ yield {
2706
+ error: `Explicitly specified pattern "${pattern}" is a symbolic link.`
2707
+ };
2708
+ } else {
2709
+ context.logger.debug(`Skipping pattern "${pattern}", as it is a symbolic link.`);
2710
+ }
2711
+ } else if (stat.isFile()) {
2712
+ entries.push({
2713
+ type: "file",
2714
+ glob: escapePathForGlob(fixWindowsSlashes(pattern)),
2715
+ input: pattern
2716
+ });
2717
+ } else if (stat.isDirectory()) {
2718
+ const relativePath = path3.relative(cwd2, absolutePath) || ".";
2719
+ const prefix = escapePathForGlob(fixWindowsSlashes(relativePath));
2720
+ entries.push({
2721
+ type: "dir",
2722
+ glob: `${prefix}/**/*`,
2723
+ input: pattern,
2724
+ ignoreUnknown: true
2725
+ });
2726
+ }
2727
+ } else if (pattern[0] === "!") {
2728
+ globOptions.ignore.push(fixWindowsSlashes(pattern.slice(1)));
2729
+ } else {
2730
+ entries.push({
2731
+ type: "glob",
2732
+ glob: fixWindowsSlashes(pattern),
2733
+ input: pattern
2734
+ });
2735
+ }
2736
+ }
2737
+ for (const {
2738
+ type,
2739
+ glob,
2740
+ input,
2741
+ ignoreUnknown
2742
+ } of entries) {
2743
+ let result;
2744
+ try {
2745
+ result = await fastGlob(glob, globOptions);
2746
+ } catch ({
2747
+ message
2748
+ }) {
2749
+ yield {
2750
+ error: `${errorMessages.globError[type]}: "${input}".
2751
+ ${message}`
2752
+ };
2753
+ continue;
2754
+ }
2755
+ if (result.length === 0) {
2756
+ if (context.argv.errorOnUnmatchedPattern !== false) {
2757
+ yield {
2758
+ error: `${errorMessages.emptyResults[type]}: "${input}".`
2759
+ };
2760
+ }
2761
+ } else {
2762
+ yield* sortPaths(result).map((filePath) => ({
2763
+ filePath,
2764
+ ignoreUnknown
2765
+ }));
2766
+ }
2767
+ }
2768
+ }
2769
+ var errorMessages = {
2770
+ globError: {
2771
+ file: "Unable to resolve file",
2772
+ dir: "Unable to expand directory",
2773
+ glob: "Unable to expand glob pattern"
2774
+ },
2775
+ emptyResults: {
2776
+ file: "Explicitly specified file was ignored due to negative glob patterns",
2777
+ dir: "No supported files were found in the directory",
2778
+ glob: "No files matching the pattern were found"
2779
+ }
2780
+ };
2781
+ function containsIgnoredPathSegment(absolutePath, cwd2, ignoredDirectories) {
2782
+ return path3.relative(cwd2, absolutePath).split(path3.sep).some((dir) => ignoredDirectories.includes(dir));
2783
+ }
2784
+ function sortPaths(paths) {
2785
+ return paths.sort((a, b) => a.localeCompare(b));
2786
+ }
2787
+ function escapePathForGlob(path10) {
2788
+ return string_replace_all_default(
2789
+ /* isOptionalObject */
2790
+ false,
2791
+ string_replace_all_default(
2792
+ /* isOptionalObject */
2793
+ false,
2794
+ fastGlob.escapePath(
2795
+ string_replace_all_default(
2796
+ /* isOptionalObject */
2797
+ false,
2798
+ path10,
2799
+ "\\",
2800
+ "\0"
2801
+ )
2802
+ // Workaround for fast-glob#262 (part 1)
2803
+ ),
2804
+ String.raw`\!`,
2805
+ "@(!)"
2806
+ ),
2807
+ "\0",
2808
+ String.raw`@(\\)`
2809
+ );
2810
+ }
2811
+ var fixWindowsSlashes = normalizeToPosix;
2812
+
2813
+ // src/cli/find-cache-file.js
2814
+ import fs4 from "fs/promises";
2815
+ import os2 from "os";
2816
+ import path8 from "path";
2817
+
2818
+ // node_modules/find-cache-dir/index.js
2819
+ var import_common_path_prefix = __toESM(require_common_path_prefix(), 1);
2820
+ import process4 from "process";
2821
+ import path7 from "path";
2822
+ import fs3 from "fs";
2823
+
2824
+ // node_modules/pkg-dir/index.js
2825
+ import path6 from "path";
2826
+
2827
+ // node_modules/pkg-dir/node_modules/find-up/index.js
2828
+ import path5 from "path";
2829
+ import { fileURLToPath as fileURLToPath2 } from "url";
2830
+
2831
+ // node_modules/pkg-dir/node_modules/locate-path/index.js
2832
+ import process3 from "process";
2833
+ import path4 from "path";
2834
+ import fs2, { promises as fsPromises } from "fs";
2835
+ import { fileURLToPath } from "url";
2836
+ var typeMappings = {
2837
+ directory: "isDirectory",
2838
+ file: "isFile"
2839
+ };
2840
+ function checkType(type) {
2841
+ if (Object.hasOwnProperty.call(typeMappings, type)) {
2842
+ return;
2843
+ }
2844
+ throw new Error(`Invalid type specified: ${type}`);
2845
+ }
2846
+ var matchType = (type, stat) => stat[typeMappings[type]]();
2847
+ var toPath = (urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
2848
+ function locatePathSync(paths, {
2849
+ cwd: cwd2 = process3.cwd(),
2850
+ type = "file",
2851
+ allowSymlinks = true
2852
+ } = {}) {
2853
+ checkType(type);
2854
+ cwd2 = toPath(cwd2);
2855
+ const statFunction = allowSymlinks ? fs2.statSync : fs2.lstatSync;
2856
+ for (const path_ of paths) {
2857
+ try {
2858
+ const stat = statFunction(path4.resolve(cwd2, path_), {
2859
+ throwIfNoEntry: false
2860
+ });
2861
+ if (!stat) {
2862
+ continue;
2863
+ }
2864
+ if (matchType(type, stat)) {
2865
+ return path_;
2866
+ }
2867
+ } catch {
2868
+ }
2869
+ }
2870
+ }
2871
+
2872
+ // node_modules/pkg-dir/node_modules/find-up/index.js
2873
+ var toPath2 = (urlOrPath) => urlOrPath instanceof URL ? fileURLToPath2(urlOrPath) : urlOrPath;
2874
+ var findUpStop = Symbol("findUpStop");
2875
+ function findUpMultipleSync(name, options = {}) {
2876
+ let directory = path5.resolve(toPath2(options.cwd) || "");
2877
+ const { root } = path5.parse(directory);
2878
+ const stopAt = options.stopAt || root;
2879
+ const limit = options.limit || Number.POSITIVE_INFINITY;
2880
+ const paths = [name].flat();
2881
+ const runMatcher = (locateOptions) => {
2882
+ if (typeof name !== "function") {
2883
+ return locatePathSync(paths, locateOptions);
2884
+ }
2885
+ const foundPath = name(locateOptions.cwd);
2886
+ if (typeof foundPath === "string") {
2887
+ return locatePathSync([foundPath], locateOptions);
2888
+ }
2889
+ return foundPath;
2890
+ };
2891
+ const matches = [];
2892
+ while (true) {
2893
+ const foundPath = runMatcher({ ...options, cwd: directory });
2894
+ if (foundPath === findUpStop) {
2895
+ break;
2896
+ }
2897
+ if (foundPath) {
2898
+ matches.push(path5.resolve(directory, foundPath));
2899
+ }
2900
+ if (directory === stopAt || matches.length >= limit) {
2901
+ break;
2902
+ }
2903
+ directory = path5.dirname(directory);
2904
+ }
2905
+ return matches;
2906
+ }
2907
+ function findUpSync(name, options = {}) {
2908
+ const matches = findUpMultipleSync(name, { ...options, limit: 1 });
2909
+ return matches[0];
2910
+ }
2911
+
2912
+ // node_modules/pkg-dir/index.js
2913
+ function packageDirectorySync({ cwd: cwd2 } = {}) {
2914
+ const filePath = findUpSync("package.json", { cwd: cwd2 });
2915
+ return filePath && path6.dirname(filePath);
2916
+ }
2917
+
2918
+ // node_modules/find-cache-dir/index.js
2919
+ var { env: env2, cwd } = process4;
2920
+ var isWritable = (path10) => {
2921
+ try {
2922
+ fs3.accessSync(path10, fs3.constants.W_OK);
2923
+ return true;
2924
+ } catch {
2925
+ return false;
2926
+ }
2927
+ };
2928
+ function useDirectory(directory, options) {
2929
+ if (options.create) {
2930
+ fs3.mkdirSync(directory, { recursive: true });
2931
+ }
2932
+ return directory;
2933
+ }
2934
+ function getNodeModuleDirectory(directory) {
2935
+ const nodeModules = path7.join(directory, "node_modules");
2936
+ if (!isWritable(nodeModules) && (fs3.existsSync(nodeModules) || !isWritable(path7.join(directory)))) {
2937
+ return;
2938
+ }
2939
+ return nodeModules;
2940
+ }
2941
+ function findCacheDirectory(options = {}) {
2942
+ if (env2.CACHE_DIR && !["true", "false", "1", "0"].includes(env2.CACHE_DIR)) {
2943
+ return useDirectory(path7.join(env2.CACHE_DIR, options.name), options);
2944
+ }
2945
+ let { cwd: directory = cwd(), files } = options;
2946
+ if (files) {
2947
+ if (!Array.isArray(files)) {
2948
+ throw new TypeError(`Expected \`files\` option to be an array, got \`${typeof files}\`.`);
2949
+ }
2950
+ directory = (0, import_common_path_prefix.default)(files.map((file) => path7.resolve(directory, file)));
2951
+ }
2952
+ directory = packageDirectorySync({ cwd: directory });
2953
+ if (!directory) {
2954
+ return;
2955
+ }
2956
+ const nodeModules = getNodeModuleDirectory(directory);
2957
+ if (!nodeModules) {
2958
+ return;
2959
+ }
2960
+ return useDirectory(path7.join(directory, "node_modules", ".cache", options.name), options);
2961
+ }
2962
+
2963
+ // src/cli/find-cache-file.js
2964
+ function findDefaultCacheFile() {
2965
+ const cacheDir = findCacheDirectory({ name: "prettier", create: true }) || os2.tmpdir();
2966
+ const cacheFilePath = path8.join(cacheDir, ".prettier-cache");
2967
+ return cacheFilePath;
2968
+ }
2969
+ async function findCacheFileFromOption(cacheLocation) {
2970
+ const cacheFile = path8.resolve(cacheLocation);
2971
+ const stat = await statSafe(cacheFile);
2972
+ if (stat) {
2973
+ if (stat.isDirectory()) {
2974
+ throw new Error(
2975
+ `Resolved --cache-location '${cacheFile}' is a directory`
2976
+ );
2977
+ }
2978
+ const data = await fs4.readFile(cacheFile, "utf8");
2979
+ if (!isJson(data)) {
2980
+ throw new Error(`'${cacheFile}' isn't a valid JSON file`);
2981
+ }
2982
+ }
2983
+ return cacheFile;
2984
+ }
2985
+ async function findCacheFile(cacheLocation) {
2986
+ if (!cacheLocation) {
2987
+ return findDefaultCacheFile();
2988
+ }
2989
+ const cacheFile = await findCacheFileFromOption(cacheLocation);
2990
+ return cacheFile;
2991
+ }
2992
+ var find_cache_file_default = findCacheFile;
2993
+
2994
+ // src/cli/format-results-cache.js
2995
+ var import_fast_json_stable_stringify2 = __toESM(require_fast_json_stable_stringify(), 1);
2996
+ var import_file_entry_cache = __toESM(require_cache2(), 1);
2997
+ import { version as prettierVersion } from "../index.mjs";
2998
+ var optionsHashCache = /* @__PURE__ */ new WeakMap();
2999
+ var nodeVersion = process.version;
3000
+ function getHashOfOptions(options) {
3001
+ if (optionsHashCache.has(options)) {
3002
+ return optionsHashCache.get(options);
3003
+ }
3004
+ const hash = createHash(
3005
+ `${prettierVersion}_${nodeVersion}_${(0, import_fast_json_stable_stringify2.default)(options)}`
3006
+ );
3007
+ optionsHashCache.set(options, hash);
3008
+ return hash;
3009
+ }
3010
+ function getMetadataFromFileDescriptor(fileDescriptor) {
3011
+ return fileDescriptor.meta;
3012
+ }
3013
+ var _fileEntryCache;
3014
+ var FormatResultsCache = class {
3015
+ /**
3016
+ * @param {string} cacheFileLocation The path of cache file location. (default: `node_modules/.cache/prettier/.prettier-cache`)
3017
+ * @param {string} cacheStrategy
3018
+ */
3019
+ constructor(cacheFileLocation, cacheStrategy) {
3020
+ __privateAdd(this, _fileEntryCache);
3021
+ const useChecksum = cacheStrategy === "content";
3022
+ __privateSet(this, _fileEntryCache, import_file_entry_cache.default.create(
3023
+ /* cacheId */
3024
+ cacheFileLocation,
3025
+ /* directory */
3026
+ void 0,
3027
+ useChecksum
3028
+ ));
3029
+ }
3030
+ /**
3031
+ * @param {string} filePath
3032
+ * @param {any} options
3033
+ */
3034
+ existsAvailableFormatResultsCache(filePath, options) {
3035
+ const fileDescriptor = __privateGet(this, _fileEntryCache).getFileDescriptor(filePath);
3036
+ if (fileDescriptor.notFound) {
3037
+ return false;
3038
+ }
3039
+ const hashOfOptions = getHashOfOptions(options);
3040
+ const meta = getMetadataFromFileDescriptor(fileDescriptor);
3041
+ const changed = fileDescriptor.changed || meta.hashOfOptions !== hashOfOptions;
3042
+ return !changed;
3043
+ }
3044
+ /**
3045
+ * @param {string} filePath
3046
+ * @param {any} options
3047
+ */
3048
+ setFormatResultsCache(filePath, options) {
3049
+ const fileDescriptor = __privateGet(this, _fileEntryCache).getFileDescriptor(filePath);
3050
+ const meta = getMetadataFromFileDescriptor(fileDescriptor);
3051
+ if (fileDescriptor && !fileDescriptor.notFound) {
3052
+ meta.hashOfOptions = getHashOfOptions(options);
3053
+ }
3054
+ }
3055
+ /**
3056
+ * @param {string} filePath
3057
+ */
3058
+ removeFormatResultsCache(filePath) {
3059
+ __privateGet(this, _fileEntryCache).removeEntry(filePath);
3060
+ }
3061
+ reconcile() {
3062
+ __privateGet(this, _fileEntryCache).reconcile();
3063
+ }
3064
+ };
3065
+ _fileEntryCache = new WeakMap();
3066
+ var format_results_cache_default = FormatResultsCache;
3067
+
3068
+ // src/cli/is-tty.js
3069
+ function isTTY() {
3070
+ return process.stdout.isTTY && !mockable.isCI();
3071
+ }
3072
+
3073
+ // src/cli/options/get-options-for-file.js
3074
+ var import_dashify2 = __toESM(require_dashify(), 1);
3075
+ import { resolveConfig } from "../index.mjs";
3076
+ function getOptions(argv, detailedOptions) {
3077
+ return Object.fromEntries(
3078
+ detailedOptions.filter(({ forwardToApi }) => forwardToApi).map(({ forwardToApi, name }) => [forwardToApi, argv[name]])
3079
+ );
3080
+ }
3081
+ function cliifyOptions(object, apiDetailedOptionMap) {
3082
+ return Object.fromEntries(
3083
+ Object.entries(object || {}).map(([key, value]) => {
3084
+ const apiOption = apiDetailedOptionMap[key];
3085
+ const cliKey = apiOption ? apiOption.name : key;
3086
+ return [(0, import_dashify2.default)(cliKey), value];
3087
+ })
3088
+ );
3089
+ }
3090
+ function createApiDetailedOptionMap(detailedOptions) {
3091
+ return Object.fromEntries(
3092
+ detailedOptions.filter(
3093
+ (option) => option.forwardToApi && option.forwardToApi !== option.name
3094
+ ).map((option) => [option.forwardToApi, option])
3095
+ );
3096
+ }
3097
+ function parseArgsToOptions(context, overrideDefaults) {
3098
+ const minimistOptions = createMinimistOptions(context.detailedOptions);
3099
+ const apiDetailedOptionMap = createApiDetailedOptionMap(
3100
+ context.detailedOptions
3101
+ );
3102
+ return getOptions(
3103
+ normalize_cli_options_default(
3104
+ minimistParse(context.rawArguments, {
3105
+ string: minimistOptions.string,
3106
+ boolean: minimistOptions.boolean,
3107
+ default: cliifyOptions(overrideDefaults, apiDetailedOptionMap)
3108
+ }),
3109
+ context.detailedOptions,
3110
+ { logger: false }
3111
+ ),
3112
+ context.detailedOptions
3113
+ );
3114
+ }
3115
+ async function getOptionsOrDie(context, filePath) {
3116
+ try {
3117
+ if (context.argv.config === false) {
3118
+ context.logger.debug(
3119
+ "'--no-config' option found, skip loading config file."
3120
+ );
3121
+ return null;
3122
+ }
3123
+ context.logger.debug(
3124
+ context.argv.config ? `load config file from '${context.argv.config}'` : `resolve config from '${filePath}'`
3125
+ );
3126
+ const options = await resolveConfig(filePath, {
3127
+ editorconfig: context.argv.editorconfig,
3128
+ config: context.argv.config
3129
+ });
3130
+ context.logger.debug("loaded options `" + JSON.stringify(options) + "`");
3131
+ return options;
3132
+ } catch (error) {
3133
+ context.logger.error(
3134
+ `Invalid configuration${filePath ? ` for file "${filePath}"` : ""}:
3135
+ ` + error.message
3136
+ );
3137
+ process.exit(2);
3138
+ }
3139
+ }
3140
+ function applyConfigPrecedence(context, options) {
3141
+ try {
3142
+ switch (context.argv.configPrecedence) {
3143
+ case "cli-override":
3144
+ return parseArgsToOptions(context, options);
3145
+ case "file-override":
3146
+ return { ...parseArgsToOptions(context), ...options };
3147
+ case "prefer-file":
3148
+ return options || parseArgsToOptions(context);
3149
+ }
3150
+ } catch (error) {
3151
+ context.logger.error(error.toString());
3152
+ process.exit(2);
3153
+ }
3154
+ }
3155
+ async function getOptionsForFile(context, filepath) {
3156
+ const options = await getOptionsOrDie(context, filepath);
3157
+ const hasPlugins = options == null ? void 0 : options.plugins;
3158
+ if (hasPlugins) {
3159
+ await context.pushContextPlugins(options.plugins);
3160
+ }
3161
+ const appliedOptions = {
3162
+ filepath,
3163
+ ...applyConfigPrecedence(
3164
+ context,
3165
+ options && normalizeOptions(options, context.supportOptions, {
3166
+ logger: context.logger
3167
+ })
3168
+ )
3169
+ };
3170
+ context.logger.debug(
3171
+ `applied config-precedence (${context.argv.configPrecedence}): ${JSON.stringify(appliedOptions)}`
3172
+ );
3173
+ if (hasPlugins) {
3174
+ context.popContextPlugins();
3175
+ }
3176
+ return appliedOptions;
3177
+ }
3178
+ var get_options_for_file_default = getOptionsForFile;
3179
+
3180
+ // src/cli/format.js
3181
+ var { getStdin, writeFormattedFile } = mockable;
3182
+ function diff(a, b) {
3183
+ return createTwoFilesPatch("", "", a, b, "", "", { context: 2 });
3184
+ }
3185
+ var DebugError = class extends Error {
3186
+ name = "DebugError";
3187
+ };
3188
+ function handleError(context, filename, error, printedFilename, ignoreUnknown) {
3189
+ ignoreUnknown || (ignoreUnknown = context.argv.ignoreUnknown);
3190
+ const errorIsUndefinedParseError = error instanceof errors.UndefinedParserError;
3191
+ if (printedFilename) {
3192
+ if ((context.argv.write || ignoreUnknown) && errorIsUndefinedParseError) {
3193
+ printedFilename.clear();
3194
+ } else {
3195
+ process.stdout.write("\n");
3196
+ }
3197
+ }
3198
+ if (errorIsUndefinedParseError) {
3199
+ if (ignoreUnknown) {
3200
+ return;
3201
+ }
3202
+ if (!context.argv.check && !context.argv.listDifferent) {
3203
+ process.exitCode = 2;
3204
+ }
3205
+ context.logger.error(error.message);
3206
+ return;
3207
+ }
3208
+ const isParseError = Boolean(error == null ? void 0 : error.loc);
3209
+ const isValidationError = /^Invalid \S+ value\./u.test(error == null ? void 0 : error.message);
3210
+ if (isParseError) {
3211
+ context.logger.error(`${filename}: ${String(error)}`);
3212
+ } else if (isValidationError || error instanceof errors.ConfigError) {
3213
+ context.logger.error(error.message);
3214
+ process.exit(1);
3215
+ } else if (error instanceof DebugError) {
3216
+ context.logger.error(`${filename}: ${error.message}`);
3217
+ } else {
3218
+ context.logger.error(filename + ": " + (error.stack || error));
3219
+ }
3220
+ process.exitCode = 2;
3221
+ }
3222
+ function writeOutput(context, result, options) {
3223
+ process.stdout.write(
3224
+ context.argv.debugCheck ? result.filepath : result.formatted
3225
+ );
3226
+ if (options && options.cursorOffset >= 0) {
3227
+ process.stderr.write(result.cursorOffset + "\n");
3228
+ }
3229
+ }
3230
+ async function listDifferent(context, input, options, filename) {
3231
+ if (!context.argv.check && !context.argv.listDifferent) {
3232
+ return;
3233
+ }
3234
+ try {
3235
+ if (!await prettier.check(input, options) && !context.argv.write) {
3236
+ context.logger.log(filename);
3237
+ process.exitCode = 1;
3238
+ }
3239
+ } catch (error) {
3240
+ context.logger.error(error.message);
3241
+ }
3242
+ return true;
3243
+ }
3244
+ async function format3(context, input, opt) {
3245
+ if (context.argv.debugPrintDoc) {
3246
+ const doc = await prettier.__debug.printToDoc(input, opt);
3247
+ return { formatted: await prettier.__debug.formatDoc(doc) + "\n" };
3248
+ }
3249
+ if (context.argv.debugPrintComments) {
3250
+ return {
3251
+ formatted: await prettier.format(
3252
+ JSON.stringify(
3253
+ (await prettier.formatWithCursor(input, opt)).comments || []
3254
+ ),
3255
+ { parser: "json" }
3256
+ )
3257
+ };
3258
+ }
3259
+ if (context.argv.debugPrintAst) {
3260
+ const { ast } = await prettier.__debug.parse(input, opt);
3261
+ return {
3262
+ formatted: JSON.stringify(ast)
3263
+ };
3264
+ }
3265
+ if (context.argv.debugCheck) {
3266
+ const pp = await prettier.format(input, opt);
3267
+ const pppp = await prettier.format(pp, opt);
3268
+ if (pp !== pppp) {
3269
+ throw new DebugError(
3270
+ "prettier(input) !== prettier(prettier(input))\n" + diff(pp, pppp)
3271
+ );
3272
+ } else {
3273
+ const stringify4 = (obj) => JSON.stringify(obj, null, 2);
3274
+ const ast = stringify4(
3275
+ (await prettier.__debug.parse(input, opt, { massage: true })).ast
3276
+ );
3277
+ const past = stringify4(
3278
+ (await prettier.__debug.parse(pp, opt, { massage: true })).ast
3279
+ );
3280
+ if (ast !== past) {
3281
+ const MAX_AST_SIZE = 2097152;
3282
+ const astDiff = ast.length > MAX_AST_SIZE || past.length > MAX_AST_SIZE ? "AST diff too large to render" : diff(ast, past);
3283
+ throw new DebugError(
3284
+ "ast(input) !== ast(prettier(input))\n" + astDiff + "\n" + diff(input, pp)
3285
+ );
3286
+ }
3287
+ }
3288
+ return { formatted: pp, filepath: opt.filepath || "(stdin)\n" };
3289
+ }
3290
+ const { performanceTestFlag } = context;
3291
+ if (performanceTestFlag == null ? void 0 : performanceTestFlag.debugBenchmark) {
3292
+ let benchmark;
3293
+ try {
3294
+ ({ default: benchmark } = await import("benchmark"));
3295
+ } catch {
3296
+ context.logger.debug(
3297
+ "'--debug-benchmark' requires the 'benchmark' package to be installed."
3298
+ );
3299
+ process.exit(2);
3300
+ }
3301
+ context.logger.debug(
3302
+ "'--debug-benchmark' option found, measuring formatWithCursor with 'benchmark' module."
3303
+ );
3304
+ const suite = new benchmark.Suite();
3305
+ suite.add("format", {
3306
+ defer: true,
3307
+ async fn(deferred) {
3308
+ await prettier.formatWithCursor(input, opt);
3309
+ deferred.resolve();
3310
+ }
3311
+ });
3312
+ const result = await new Promise((resolve) => {
3313
+ suite.on("complete", (event) => {
3314
+ resolve({
3315
+ benchmark: String(event.target),
3316
+ hz: event.target.hz,
3317
+ ms: event.target.times.cycle * 1e3
3318
+ });
3319
+ }).run({ async: false });
3320
+ });
3321
+ context.logger.debug(
3322
+ "'--debug-benchmark' measurements for formatWithCursor: " + JSON.stringify(result, null, 2)
3323
+ );
3324
+ } else if (performanceTestFlag == null ? void 0 : performanceTestFlag.debugRepeat) {
3325
+ const repeat = performanceTestFlag.debugRepeat;
3326
+ context.logger.debug(
3327
+ `'${performanceTestFlag.name}' found, running formatWithCursor ${repeat} times.`
3328
+ );
3329
+ let totalMs = 0;
3330
+ for (let i = 0; i < repeat; ++i) {
3331
+ const startMs = Date.now();
3332
+ await prettier.formatWithCursor(input, opt);
3333
+ totalMs += Date.now() - startMs;
3334
+ }
3335
+ const averageMs = totalMs / repeat;
3336
+ const results = {
3337
+ repeat,
3338
+ hz: 1e3 / averageMs,
3339
+ ms: averageMs
3340
+ };
3341
+ context.logger.debug(
3342
+ `'${performanceTestFlag.name}' measurements for formatWithCursor: ${JSON.stringify(
3343
+ results,
3344
+ null,
3345
+ 2
3346
+ )}`
3347
+ );
3348
+ }
3349
+ return prettier.formatWithCursor(input, opt);
3350
+ }
3351
+ async function createIsIgnoredFromContextOrDie(context) {
3352
+ try {
3353
+ return await createIsIgnoredFunction(
3354
+ context.argv.ignorePath,
3355
+ context.argv.withNodeModules
3356
+ );
3357
+ } catch (e) {
3358
+ context.logger.error(e.message);
3359
+ process.exit(2);
3360
+ }
3361
+ }
3362
+ async function formatStdin(context) {
3363
+ const { filepath } = context.argv;
3364
+ try {
3365
+ const input = await getStdin();
3366
+ let isFileIgnored = false;
3367
+ if (filepath) {
3368
+ const isIgnored = await createIsIgnoredFromContextOrDie(context);
3369
+ isFileIgnored = isIgnored(filepath);
3370
+ }
3371
+ if (isFileIgnored) {
3372
+ writeOutput(context, { formatted: input });
3373
+ return;
3374
+ }
3375
+ const options = await get_options_for_file_default(
3376
+ context,
3377
+ filepath ? path9.resolve(filepath) : void 0
3378
+ );
3379
+ if (await listDifferent(context, input, options, "(stdin)")) {
3380
+ return;
3381
+ }
3382
+ const formatted = await format3(context, input, options);
3383
+ const { performanceTestFlag } = context;
3384
+ if (performanceTestFlag) {
3385
+ context.logger.log(
3386
+ `'${performanceTestFlag.name}' option found, skipped print code to screen.`
3387
+ );
3388
+ return;
3389
+ }
3390
+ writeOutput(context, formatted, options);
3391
+ } catch (error) {
3392
+ handleError(context, filepath || "stdin", error);
3393
+ }
3394
+ }
3395
+ async function formatFiles(context) {
3396
+ const isIgnored = await createIsIgnoredFromContextOrDie(context);
3397
+ const cwd2 = process.cwd();
3398
+ let numberOfUnformattedFilesFound = 0;
3399
+ const { performanceTestFlag } = context;
3400
+ if (context.argv.check && !performanceTestFlag) {
3401
+ context.logger.log("Checking formatting...");
3402
+ }
3403
+ let formatResultsCache;
3404
+ const cacheFilePath = await find_cache_file_default(context.argv.cacheLocation);
3405
+ if (context.argv.cache) {
3406
+ formatResultsCache = new format_results_cache_default(
3407
+ cacheFilePath,
3408
+ context.argv.cacheStrategy || "content"
3409
+ );
3410
+ } else if (!context.argv.cacheLocation) {
3411
+ const stat = await statSafe(cacheFilePath);
3412
+ if (stat) {
3413
+ await fs5.unlink(cacheFilePath);
3414
+ }
3415
+ }
3416
+ for await (const { error, filename, ignoreUnknown } of expandPatterns(
3417
+ context
3418
+ )) {
3419
+ if (error) {
3420
+ context.logger.error(error);
3421
+ process.exitCode = 2;
3422
+ continue;
3423
+ }
3424
+ const isFileIgnored = isIgnored(filename);
3425
+ if (isFileIgnored && (context.argv.debugCheck || context.argv.write || context.argv.check || context.argv.listDifferent)) {
3426
+ continue;
3427
+ }
3428
+ const options = {
3429
+ ...await get_options_for_file_default(context, filename),
3430
+ filepath: filename
3431
+ };
3432
+ const fileNameToDisplay = normalizeToPosix(path9.relative(cwd2, filename));
3433
+ let printedFilename;
3434
+ if (isTTY()) {
3435
+ printedFilename = context.logger.log(fileNameToDisplay, {
3436
+ newline: false,
3437
+ clearable: true
3438
+ });
3439
+ }
3440
+ let input;
3441
+ try {
3442
+ input = await fs5.readFile(filename, "utf8");
3443
+ } catch (error2) {
3444
+ context.logger.log("");
3445
+ context.logger.error(
3446
+ `Unable to read file "${fileNameToDisplay}":
3447
+ ${error2.message}`
3448
+ );
3449
+ process.exitCode = 2;
3450
+ continue;
3451
+ }
3452
+ if (isFileIgnored) {
3453
+ printedFilename == null ? void 0 : printedFilename.clear();
3454
+ writeOutput(context, { formatted: input }, options);
3455
+ continue;
3456
+ }
3457
+ const start = Date.now();
3458
+ const isCacheExists = formatResultsCache == null ? void 0 : formatResultsCache.existsAvailableFormatResultsCache(
3459
+ filename,
3460
+ options
3461
+ );
3462
+ let result;
3463
+ let output;
3464
+ try {
3465
+ if (isCacheExists) {
3466
+ result = { formatted: input };
3467
+ } else {
3468
+ result = await format3(context, input, options);
3469
+ }
3470
+ output = result.formatted;
3471
+ } catch (error2) {
3472
+ handleError(
3473
+ context,
3474
+ fileNameToDisplay,
3475
+ error2,
3476
+ printedFilename,
3477
+ ignoreUnknown
3478
+ );
3479
+ continue;
3480
+ }
3481
+ const isDifferent = output !== input;
3482
+ let shouldSetCache = !isDifferent;
3483
+ printedFilename == null ? void 0 : printedFilename.clear();
3484
+ if (performanceTestFlag) {
3485
+ context.logger.log(
3486
+ `'${performanceTestFlag.name}' option found, skipped print code or write files.`
3487
+ );
3488
+ return;
3489
+ }
3490
+ if (context.argv.write) {
3491
+ if (isDifferent) {
3492
+ if (!context.argv.check && !context.argv.listDifferent) {
3493
+ context.logger.log(`${fileNameToDisplay} ${Date.now() - start}ms`);
3494
+ }
3495
+ try {
3496
+ await writeFormattedFile(filename, output);
3497
+ shouldSetCache = true;
3498
+ } catch (error2) {
3499
+ context.logger.error(
3500
+ `Unable to write file "${fileNameToDisplay}":
3501
+ ${error2.message}`
3502
+ );
3503
+ process.exitCode = 2;
3504
+ }
3505
+ } else if (!context.argv.check && !context.argv.listDifferent) {
3506
+ const message = `${source_default.grey(fileNameToDisplay)} ${Date.now() - start}ms (unchanged)`;
3507
+ if (isCacheExists) {
3508
+ context.logger.log(`${message} (cached)`);
3509
+ } else {
3510
+ context.logger.log(message);
3511
+ }
3512
+ }
3513
+ } else if (context.argv.debugCheck) {
3514
+ if (result.filepath) {
3515
+ context.logger.log(fileNameToDisplay);
3516
+ } else {
3517
+ process.exitCode = 2;
3518
+ }
3519
+ } else if (!context.argv.check && !context.argv.listDifferent) {
3520
+ writeOutput(context, result, options);
3521
+ }
3522
+ if (shouldSetCache) {
3523
+ formatResultsCache == null ? void 0 : formatResultsCache.setFormatResultsCache(filename, options);
3524
+ } else {
3525
+ formatResultsCache == null ? void 0 : formatResultsCache.removeFormatResultsCache(filename);
3526
+ }
3527
+ if (isDifferent) {
3528
+ if (context.argv.check) {
3529
+ context.logger.warn(fileNameToDisplay);
3530
+ } else if (context.argv.listDifferent) {
3531
+ context.logger.log(fileNameToDisplay);
3532
+ }
3533
+ numberOfUnformattedFilesFound += 1;
3534
+ }
3535
+ }
3536
+ formatResultsCache == null ? void 0 : formatResultsCache.reconcile();
3537
+ if (context.argv.check) {
3538
+ if (numberOfUnformattedFilesFound === 0) {
3539
+ context.logger.log("All matched files use Prettier code style!");
3540
+ } else {
3541
+ const files = numberOfUnformattedFilesFound === 1 ? "the above file" : `${numberOfUnformattedFilesFound} files`;
3542
+ context.logger.warn(
3543
+ context.argv.write ? `Code style issues fixed in ${files}.` : `Code style issues found in ${files}. Run Prettier with --write to fix.`
3544
+ );
3545
+ }
3546
+ }
3547
+ if ((context.argv.check || context.argv.listDifferent) && numberOfUnformattedFilesFound > 0 && !process.exitCode && !context.argv.write) {
3548
+ process.exitCode = 1;
3549
+ }
3550
+ }
3551
+
3552
+ // src/cli/logger.js
3553
+ import readline from "readline";
3554
+
3555
+ // node_modules/ansi-regex/index.js
3556
+ function ansiRegex({ onlyFirst = false } = {}) {
3557
+ const pattern = [
3558
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
3559
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
3560
+ ].join("|");
3561
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
3562
+ }
3563
+
3564
+ // node_modules/strip-ansi/index.js
3565
+ var regex = ansiRegex();
3566
+ function stripAnsi(string) {
3567
+ if (typeof string !== "string") {
3568
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
3569
+ }
3570
+ return string.replace(regex, "");
3571
+ }
3572
+
3573
+ // src/cli/logger.js
3574
+ var import_wcwidth = __toESM(require_wcwidth(), 1);
3575
+ var countLines = (stream, text) => {
3576
+ const columns = stream.columns || 80;
3577
+ let lineCount = 0;
3578
+ for (const line of stripAnsi(text).split("\n")) {
3579
+ lineCount += Math.max(1, Math.ceil((0, import_wcwidth.default)(line) / columns));
3580
+ }
3581
+ return lineCount;
3582
+ };
3583
+ var clear = (stream, text) => () => {
3584
+ const lineCount = countLines(stream, text);
3585
+ for (let line = 0; line < lineCount; line++) {
3586
+ if (line > 0) {
3587
+ readline.moveCursor(stream, 0, -1);
3588
+ }
3589
+ readline.clearLine(stream, 0);
3590
+ readline.cursorTo(stream, 0);
3591
+ }
3592
+ };
3593
+ var emptyLogResult = {
3594
+ clear() {
3595
+ }
3596
+ };
3597
+ function createLogger(logLevel = "log") {
3598
+ return {
3599
+ logLevel,
3600
+ warn: createLogFunc("warn", "yellow"),
3601
+ error: createLogFunc("error", "red"),
3602
+ debug: createLogFunc("debug", "blue"),
3603
+ log: createLogFunc("log")
3604
+ };
3605
+ function createLogFunc(loggerName, color) {
3606
+ if (!shouldLog(loggerName)) {
3607
+ return () => emptyLogResult;
3608
+ }
3609
+ const stream = process[loggerName === "log" ? "stdout" : "stderr"];
3610
+ const chalkInstance = loggerName === "log" ? source_default : chalkStderr;
3611
+ const prefix = color ? `[${chalkInstance[color](loggerName)}] ` : "";
3612
+ return (message, options) => {
3613
+ options = {
3614
+ newline: true,
3615
+ clearable: false,
3616
+ ...options
3617
+ };
3618
+ message = string_replace_all_default(
3619
+ /* isOptionalObject */
3620
+ false,
3621
+ message,
3622
+ /^/gmu,
3623
+ prefix
3624
+ ) + (options.newline ? "\n" : "");
3625
+ stream.write(message);
3626
+ if (options.clearable) {
3627
+ return {
3628
+ clear: clear(stream, message)
3629
+ };
3630
+ }
3631
+ };
3632
+ }
3633
+ function shouldLog(loggerName) {
3634
+ switch (logLevel) {
3635
+ case "silent":
3636
+ return false;
3637
+ case "debug":
3638
+ if (loggerName === "debug") {
3639
+ return true;
3640
+ }
3641
+ case "log":
3642
+ if (loggerName === "log") {
3643
+ return true;
3644
+ }
3645
+ case "warn":
3646
+ if (loggerName === "warn") {
3647
+ return true;
3648
+ }
3649
+ case "error":
3650
+ return loggerName === "error";
3651
+ }
3652
+ }
3653
+ }
3654
+ var logger_default = createLogger;
3655
+
3656
+ // src/cli/print-support-info.js
3657
+ var import_fast_json_stable_stringify3 = __toESM(require_fast_json_stable_stringify(), 1);
3658
+ import { format as format4, getSupportInfo as getSupportInfo2 } from "../index.mjs";
3659
+ var sortByName = (array2) => array2.sort((a, b) => a.name.localeCompare(b.name));
3660
+ async function printSupportInfo() {
3661
+ const { languages, options } = await getSupportInfo2();
3662
+ const supportInfo = {
3663
+ languages: sortByName(languages),
3664
+ options: sortByName(options).map(
3665
+ (option) => omit(option, ["cliName", "cliCategory", "cliDescription"])
3666
+ )
3667
+ };
3668
+ printToScreen(await format4((0, import_fast_json_stable_stringify3.default)(supportInfo), { parser: "json" }));
3669
+ }
3670
+ var print_support_info_default = printSupportInfo;
3671
+
3672
+ // src/cli/constants.evaluate.js
3673
+ var categoryOrder = [
3674
+ "Output",
3675
+ "Format",
3676
+ "Config",
3677
+ "Editor",
3678
+ "Other"
3679
+ ];
3680
+ var usageSummary = "Usage: prettier [options] [file/dir/glob ...]\n\nBy default, output is written to stdout.\nStdin is read if it is piped to Prettier and no files are given.";
3681
+
3682
+ // src/cli/usage.js
3683
+ var OPTION_USAGE_THRESHOLD = 25;
3684
+ var CHOICE_USAGE_MARGIN = 3;
3685
+ var CHOICE_USAGE_INDENTATION = 2;
3686
+ function indent(str, spaces) {
3687
+ return string_replace_all_default(
3688
+ /* isOptionalObject */
3689
+ false,
3690
+ str,
3691
+ /^/gmu,
3692
+ " ".repeat(spaces)
3693
+ );
3694
+ }
3695
+ function createDefaultValueDisplay(value) {
3696
+ return Array.isArray(value) ? `[${value.map(createDefaultValueDisplay).join(", ")}]` : value;
3697
+ }
3698
+ function getOptionDefaultValue(context, optionName) {
3699
+ var _a;
3700
+ const option = context.detailedOptions.find(({
3701
+ name
3702
+ }) => name === optionName);
3703
+ if ((option == null ? void 0 : option.default) !== void 0) {
3704
+ return option.default;
3705
+ }
3706
+ const optionCamelName = camelCase(optionName);
3707
+ return formatOptionsHiddenDefaults[optionCamelName] ?? ((_a = context.supportOptions.find((option2) => !option2.deprecated && option2.name === optionCamelName)) == null ? void 0 : _a.default);
3708
+ }
3709
+ function createOptionUsageHeader(option) {
3710
+ const name = `--${option.name}`;
3711
+ const alias = option.alias ? `-${option.alias},` : null;
3712
+ const type = createOptionUsageType(option);
3713
+ return [alias, name, type].filter(Boolean).join(" ");
3714
+ }
3715
+ function createOptionUsageRow(header, content, threshold) {
3716
+ const separator = header.length >= threshold ? `
3717
+ ${" ".repeat(threshold)}` : " ".repeat(threshold - header.length);
3718
+ const description = string_replace_all_default(
3719
+ /* isOptionalObject */
3720
+ false,
3721
+ content,
3722
+ "\n",
3723
+ `
3724
+ ${" ".repeat(threshold)}`
3725
+ );
3726
+ return `${header}${separator}${description}`;
3727
+ }
3728
+ function createOptionUsageType(option) {
3729
+ switch (option.type) {
3730
+ case "boolean":
3731
+ return null;
3732
+ case "choice":
3733
+ return `<${option.choices.filter((choice) => !choice.deprecated).map((choice) => choice.value).join("|")}>`;
3734
+ default:
3735
+ return `<${option.type}>`;
3736
+ }
3737
+ }
3738
+ function createChoiceUsages(choices, margin, indentation) {
3739
+ const activeChoices = choices.filter((choice) => !choice.deprecated);
3740
+ const threshold = Math.max(0, ...activeChoices.map((choice) => choice.value.length)) + margin;
3741
+ return activeChoices.map((choice) => indent(createOptionUsageRow(choice.value, choice.description, threshold), indentation));
3742
+ }
3743
+ function createOptionUsage(context, option, threshold) {
3744
+ const header = createOptionUsageHeader(option);
3745
+ const optionDefaultValue = getOptionDefaultValue(context, option.name);
3746
+ return createOptionUsageRow(header, `${option.description}${optionDefaultValue === void 0 ? "" : `
3747
+ Defaults to ${createDefaultValueDisplay(optionDefaultValue)}.`}`, threshold);
3748
+ }
3749
+ function getOptionsWithOpposites(options) {
3750
+ const optionsWithOpposites = options.map((option) => [option.description ? option : null, option.oppositeDescription ? {
3751
+ ...option,
3752
+ name: `no-${option.name}`,
3753
+ type: "boolean",
3754
+ description: option.oppositeDescription
3755
+ } : null]);
3756
+ return optionsWithOpposites.flat().filter(Boolean);
3757
+ }
3758
+ function createUsage(context) {
3759
+ const sortedOptions = context.detailedOptions.sort((optionA, optionB) => optionA.name.localeCompare(optionB.name));
3760
+ const options = getOptionsWithOpposites(sortedOptions).filter(
3761
+ // remove unnecessary option (e.g. `semi`, `color`, etc.), which is only used for --help <flag>
3762
+ (option) => !(option.type === "boolean" && option.oppositeDescription && !option.name.startsWith("no-"))
3763
+ );
3764
+ const groupedOptions = groupBy(options, (option) => option.category);
3765
+ const firstCategories = categoryOrder.slice(0, -1);
3766
+ const lastCategories = categoryOrder.slice(-1);
3767
+ const restCategories = Object.keys(groupedOptions).filter((category) => !categoryOrder.includes(category));
3768
+ const allCategories = [...firstCategories, ...restCategories, ...lastCategories];
3769
+ const optionsUsage = allCategories.map((category) => {
3770
+ const categoryOptions = groupedOptions[category].map((option) => createOptionUsage(context, option, OPTION_USAGE_THRESHOLD)).join("\n");
3771
+ return `${category} options:
3772
+
3773
+ ${indent(categoryOptions, 2)}`;
3774
+ });
3775
+ return [usageSummary, ...optionsUsage, ""].join("\n\n");
3776
+ }
3777
+ function createPluginDefaults(pluginDefaults) {
3778
+ if (!pluginDefaults || Object.keys(pluginDefaults).length === 0) {
3779
+ return "";
3780
+ }
3781
+ const defaults = Object.entries(pluginDefaults).sort(([pluginNameA], [pluginNameB]) => pluginNameA.localeCompare(pluginNameB)).map(([plugin, value]) => `* ${plugin}: ${createDefaultValueDisplay(value)}`).join("\n");
3782
+ return `
3783
+ Plugin defaults:
3784
+ ${defaults}`;
3785
+ }
3786
+ function createDetailedUsage(context, flag) {
3787
+ const option = getOptionsWithOpposites(context.detailedOptions).find((option2) => option2.name === flag || option2.alias === flag);
3788
+ const header = createOptionUsageHeader(option);
3789
+ const description = `
3790
+
3791
+ ${indent(option.description, 2)}`;
3792
+ const choices = option.type !== "choice" ? "" : `
3793
+
3794
+ Valid options:
3795
+
3796
+ ${createChoiceUsages(option.choices, CHOICE_USAGE_MARGIN, CHOICE_USAGE_INDENTATION).join("\n")}`;
3797
+ const optionDefaultValue = getOptionDefaultValue(context, option.name);
3798
+ const defaults = optionDefaultValue !== void 0 ? `
3799
+
3800
+ Default: ${createDefaultValueDisplay(optionDefaultValue)}` : "";
3801
+ const pluginDefaults = createPluginDefaults(option.pluginDefaults);
3802
+ return `${header}${description}${choices}${defaults}${pluginDefaults}`;
3803
+ }
3804
+
3805
+ // src/cli/index.js
3806
+ async function run(rawArguments = process.argv.slice(2)) {
3807
+ let logger = logger_default();
3808
+ try {
3809
+ const { logLevel } = parseArgvWithoutPlugins(
3810
+ rawArguments,
3811
+ logger,
3812
+ "log-level"
3813
+ );
3814
+ if (logLevel !== logger.logLevel) {
3815
+ logger = logger_default(logLevel);
3816
+ }
3817
+ const context = new context_default({ rawArguments, logger });
3818
+ await context.init();
3819
+ if (logger.logLevel !== "debug" && context.performanceTestFlag) {
3820
+ context.logger = logger_default("debug");
3821
+ }
3822
+ await main(context);
3823
+ } catch (error) {
3824
+ logger.error(error.message);
3825
+ process.exitCode = 1;
3826
+ }
3827
+ }
3828
+ async function main(context) {
3829
+ context.logger.debug(`normalized argv: ${JSON.stringify(context.argv)}`);
3830
+ if (context.argv.check && context.argv.listDifferent) {
3831
+ throw new Error("Cannot use --check and --list-different together.");
3832
+ }
3833
+ if (context.argv.write && context.argv.debugCheck) {
3834
+ throw new Error("Cannot use --write and --debug-check together.");
3835
+ }
3836
+ if (context.argv.findConfigPath && context.filePatterns.length > 0) {
3837
+ throw new Error("Cannot use --find-config-path with multiple files");
3838
+ }
3839
+ if (context.argv.fileInfo && context.filePatterns.length > 0) {
3840
+ throw new Error("Cannot use --file-info with multiple files");
3841
+ }
3842
+ if (!context.argv.cache && context.argv.cacheStrategy) {
3843
+ throw new Error("`--cache-strategy` cannot be used without `--cache`.");
3844
+ }
3845
+ if (context.argv.version) {
3846
+ printToScreen(prettier2.version);
3847
+ return;
3848
+ }
3849
+ if (context.argv.help !== void 0) {
3850
+ printToScreen(
3851
+ typeof context.argv.help === "string" && context.argv.help !== "" ? createDetailedUsage(context, context.argv.help) : createUsage(context)
3852
+ );
3853
+ return;
3854
+ }
3855
+ if (context.argv.supportInfo) {
3856
+ return print_support_info_default();
3857
+ }
3858
+ if (context.argv.findConfigPath) {
3859
+ await find_config_path_default(context);
3860
+ return;
3861
+ }
3862
+ if (context.argv.fileInfo) {
3863
+ await file_info_default(context);
3864
+ return;
3865
+ }
3866
+ const hasFilePatterns = context.filePatterns.length > 0;
3867
+ const useStdin = !hasFilePatterns && (!process.stdin.isTTY || context.argv.filepath);
3868
+ if (useStdin) {
3869
+ if (context.argv.cache) {
3870
+ throw new Error("`--cache` cannot be used when formatting stdin.");
3871
+ }
3872
+ await formatStdin(context);
3873
+ return;
3874
+ }
3875
+ if (hasFilePatterns) {
3876
+ await formatFiles(context);
3877
+ return;
3878
+ }
3879
+ process.exitCode = 1;
3880
+ printToScreen(createUsage(context));
3881
+ }
3882
+ export {
3883
+ run
3884
+ };