prettier 4.0.2 → 4.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -1
  3. data/README.md +12 -1
  4. data/node_modules/prettier/LICENSE +227 -408
  5. data/node_modules/prettier/README.md +3 -3
  6. data/node_modules/prettier/bin/prettier.cjs +3 -2
  7. data/node_modules/prettier/doc.d.ts +10 -7
  8. data/node_modules/prettier/doc.js +17 -29
  9. data/node_modules/prettier/doc.mjs +12 -24
  10. data/node_modules/prettier/index.cjs +22 -29
  11. data/node_modules/prettier/index.d.ts +76 -68
  12. data/node_modules/prettier/index.mjs +16274 -13541
  13. data/node_modules/prettier/internal/cli.mjs +388 -79
  14. data/node_modules/prettier/package.json +7 -3
  15. data/node_modules/prettier/plugins/acorn.js +12 -12
  16. data/node_modules/prettier/plugins/acorn.mjs +12 -12
  17. data/node_modules/prettier/plugins/angular.js +1 -2
  18. data/node_modules/prettier/plugins/angular.mjs +1 -2
  19. data/node_modules/prettier/plugins/babel.js +11 -11
  20. data/node_modules/prettier/plugins/babel.mjs +11 -11
  21. data/node_modules/prettier/plugins/estree.d.ts +1 -0
  22. data/node_modules/prettier/plugins/estree.js +26 -26
  23. data/node_modules/prettier/plugins/estree.mjs +26 -26
  24. data/node_modules/prettier/plugins/flow.js +17 -17
  25. data/node_modules/prettier/plugins/flow.mjs +17 -17
  26. data/node_modules/prettier/plugins/glimmer.js +22 -22
  27. data/node_modules/prettier/plugins/glimmer.mjs +22 -22
  28. data/node_modules/prettier/plugins/graphql.js +9 -9
  29. data/node_modules/prettier/plugins/graphql.mjs +9 -9
  30. data/node_modules/prettier/plugins/html.js +17 -17
  31. data/node_modules/prettier/plugins/html.mjs +17 -17
  32. data/node_modules/prettier/plugins/markdown.js +46 -46
  33. data/node_modules/prettier/plugins/markdown.mjs +46 -46
  34. data/node_modules/prettier/plugins/meriyah.js +5 -5
  35. data/node_modules/prettier/plugins/meriyah.mjs +5 -5
  36. data/node_modules/prettier/plugins/postcss.js +28 -28
  37. data/node_modules/prettier/plugins/postcss.mjs +28 -28
  38. data/node_modules/prettier/plugins/typescript.js +20 -22
  39. data/node_modules/prettier/plugins/typescript.mjs +20 -22
  40. data/node_modules/prettier/plugins/yaml.js +38 -38
  41. data/node_modules/prettier/plugins/yaml.mjs +39 -39
  42. data/node_modules/prettier/standalone.d.ts +2 -2
  43. data/node_modules/prettier/standalone.js +31 -31
  44. data/node_modules/prettier/standalone.mjs +31 -31
  45. data/package.json +4 -4
  46. data/src/plugin.js +13 -5
  47. data/src/server.rb +8 -3
  48. metadata +2 -3
  49. data/node_modules/prettier/internal/internal.mjs +0 -6531
@@ -1197,6 +1197,260 @@ var require_common_path_prefix = __commonJS({
1197
1197
  }
1198
1198
  });
1199
1199
 
1200
+ // node_modules/json-buffer/index.js
1201
+ var require_json_buffer = __commonJS({
1202
+ "node_modules/json-buffer/index.js"(exports) {
1203
+ exports.stringify = function stringify4(o) {
1204
+ if ("undefined" == typeof o)
1205
+ return o;
1206
+ if (o && Buffer.isBuffer(o))
1207
+ return JSON.stringify(":base64:" + o.toString("base64"));
1208
+ if (o && o.toJSON)
1209
+ o = o.toJSON();
1210
+ if (o && "object" === typeof o) {
1211
+ var s = "";
1212
+ var array2 = Array.isArray(o);
1213
+ s = array2 ? "[" : "{";
1214
+ var first = true;
1215
+ for (var k in o) {
1216
+ var ignore = "function" == typeof o[k] || !array2 && "undefined" === typeof o[k];
1217
+ if (Object.hasOwnProperty.call(o, k) && !ignore) {
1218
+ if (!first)
1219
+ s += ",";
1220
+ first = false;
1221
+ if (array2) {
1222
+ if (o[k] == void 0)
1223
+ s += "null";
1224
+ else
1225
+ s += stringify4(o[k]);
1226
+ } else if (o[k] !== void 0) {
1227
+ s += stringify4(k) + ":" + stringify4(o[k]);
1228
+ }
1229
+ }
1230
+ }
1231
+ s += array2 ? "]" : "}";
1232
+ return s;
1233
+ } else if ("string" === typeof o) {
1234
+ return JSON.stringify(/^:/.test(o) ? ":" + o : o);
1235
+ } else if ("undefined" === typeof o) {
1236
+ return "null";
1237
+ } else
1238
+ return JSON.stringify(o);
1239
+ };
1240
+ exports.parse = function(s) {
1241
+ return JSON.parse(s, function(key, value) {
1242
+ if ("string" === typeof value) {
1243
+ if (/^:base64:/.test(value))
1244
+ return Buffer.from(value.substring(8), "base64");
1245
+ else
1246
+ return /^:/.test(value) ? value.substring(1) : value;
1247
+ }
1248
+ return value;
1249
+ });
1250
+ };
1251
+ }
1252
+ });
1253
+
1254
+ // node_modules/keyv/src/index.js
1255
+ var require_src = __commonJS({
1256
+ "node_modules/keyv/src/index.js"(exports, module) {
1257
+ "use strict";
1258
+ var EventEmitter = __require("events");
1259
+ var JSONB = require_json_buffer();
1260
+ var loadStore = (options) => {
1261
+ const adapters = {
1262
+ redis: "@keyv/redis",
1263
+ rediss: "@keyv/redis",
1264
+ mongodb: "@keyv/mongo",
1265
+ mongo: "@keyv/mongo",
1266
+ sqlite: "@keyv/sqlite",
1267
+ postgresql: "@keyv/postgres",
1268
+ postgres: "@keyv/postgres",
1269
+ mysql: "@keyv/mysql",
1270
+ etcd: "@keyv/etcd",
1271
+ offline: "@keyv/offline",
1272
+ tiered: "@keyv/tiered"
1273
+ };
1274
+ if (options.adapter || options.uri) {
1275
+ const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
1276
+ return new (__require(adapters[adapter]))(options);
1277
+ }
1278
+ return /* @__PURE__ */ new Map();
1279
+ };
1280
+ var iterableAdapters = [
1281
+ "sqlite",
1282
+ "postgres",
1283
+ "mysql",
1284
+ "mongo",
1285
+ "redis",
1286
+ "tiered"
1287
+ ];
1288
+ var Keyv = class extends EventEmitter {
1289
+ constructor(uri, { emitErrors = true, ...options } = {}) {
1290
+ super();
1291
+ this.opts = {
1292
+ namespace: "keyv",
1293
+ serialize: JSONB.stringify,
1294
+ deserialize: JSONB.parse,
1295
+ ...typeof uri === "string" ? { uri } : uri,
1296
+ ...options
1297
+ };
1298
+ if (!this.opts.store) {
1299
+ const adapterOptions = { ...this.opts };
1300
+ this.opts.store = loadStore(adapterOptions);
1301
+ }
1302
+ if (this.opts.compression) {
1303
+ const compression = this.opts.compression;
1304
+ this.opts.serialize = compression.serialize.bind(compression);
1305
+ this.opts.deserialize = compression.deserialize.bind(compression);
1306
+ }
1307
+ if (typeof this.opts.store.on === "function" && emitErrors) {
1308
+ this.opts.store.on("error", (error) => this.emit("error", error));
1309
+ }
1310
+ this.opts.store.namespace = this.opts.namespace;
1311
+ const generateIterator = (iterator) => async function* () {
1312
+ for await (const [key, raw] of typeof iterator === "function" ? iterator(this.opts.store.namespace) : iterator) {
1313
+ const data = await this.opts.deserialize(raw);
1314
+ if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
1315
+ continue;
1316
+ }
1317
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
1318
+ this.delete(key);
1319
+ continue;
1320
+ }
1321
+ yield [this._getKeyUnprefix(key), data.value];
1322
+ }
1323
+ };
1324
+ if (typeof this.opts.store[Symbol.iterator] === "function" && this.opts.store instanceof Map) {
1325
+ this.iterator = generateIterator(this.opts.store);
1326
+ } else if (typeof this.opts.store.iterator === "function" && this.opts.store.opts && this._checkIterableAdaptar()) {
1327
+ this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
1328
+ }
1329
+ }
1330
+ _checkIterableAdaptar() {
1331
+ return iterableAdapters.includes(this.opts.store.opts.dialect) || iterableAdapters.findIndex((element) => this.opts.store.opts.url.includes(element)) >= 0;
1332
+ }
1333
+ _getKeyPrefix(key) {
1334
+ return `${this.opts.namespace}:${key}`;
1335
+ }
1336
+ _getKeyPrefixArray(keys) {
1337
+ return keys.map((key) => `${this.opts.namespace}:${key}`);
1338
+ }
1339
+ _getKeyUnprefix(key) {
1340
+ return key.split(":").splice(1).join(":");
1341
+ }
1342
+ get(key, options) {
1343
+ const { store } = this.opts;
1344
+ const isArray = Array.isArray(key);
1345
+ const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
1346
+ if (isArray && store.getMany === void 0) {
1347
+ const promises = [];
1348
+ for (const key2 of keyPrefixed) {
1349
+ promises.push(
1350
+ 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) => {
1351
+ if (data === void 0 || data === null) {
1352
+ return void 0;
1353
+ }
1354
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
1355
+ return this.delete(key2).then(() => void 0);
1356
+ }
1357
+ return options && options.raw ? data : data.value;
1358
+ })
1359
+ );
1360
+ }
1361
+ return Promise.allSettled(promises).then((values) => {
1362
+ const data = [];
1363
+ for (const value of values) {
1364
+ data.push(value.value);
1365
+ }
1366
+ return data;
1367
+ });
1368
+ }
1369
+ 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) => {
1370
+ if (data === void 0 || data === null) {
1371
+ return void 0;
1372
+ }
1373
+ if (isArray) {
1374
+ return data.map((row, index) => {
1375
+ if (typeof row === "string") {
1376
+ row = this.opts.deserialize(row);
1377
+ }
1378
+ if (row === void 0 || row === null) {
1379
+ return void 0;
1380
+ }
1381
+ if (typeof row.expires === "number" && Date.now() > row.expires) {
1382
+ this.delete(key[index]).then(() => void 0);
1383
+ return void 0;
1384
+ }
1385
+ return options && options.raw ? row : row.value;
1386
+ });
1387
+ }
1388
+ if (typeof data.expires === "number" && Date.now() > data.expires) {
1389
+ return this.delete(key).then(() => void 0);
1390
+ }
1391
+ return options && options.raw ? data : data.value;
1392
+ });
1393
+ }
1394
+ set(key, value, ttl) {
1395
+ const keyPrefixed = this._getKeyPrefix(key);
1396
+ if (typeof ttl === "undefined") {
1397
+ ttl = this.opts.ttl;
1398
+ }
1399
+ if (ttl === 0) {
1400
+ ttl = void 0;
1401
+ }
1402
+ const { store } = this.opts;
1403
+ return Promise.resolve().then(() => {
1404
+ const expires = typeof ttl === "number" ? Date.now() + ttl : null;
1405
+ if (typeof value === "symbol") {
1406
+ this.emit("error", "symbol cannot be serialized");
1407
+ }
1408
+ value = { value, expires };
1409
+ return this.opts.serialize(value);
1410
+ }).then((value2) => store.set(keyPrefixed, value2, ttl)).then(() => true);
1411
+ }
1412
+ delete(key) {
1413
+ const { store } = this.opts;
1414
+ if (Array.isArray(key)) {
1415
+ const keyPrefixed2 = this._getKeyPrefixArray(key);
1416
+ if (store.deleteMany === void 0) {
1417
+ const promises = [];
1418
+ for (const key2 of keyPrefixed2) {
1419
+ promises.push(store.delete(key2));
1420
+ }
1421
+ return Promise.allSettled(promises).then((values) => values.every((x) => x.value === true));
1422
+ }
1423
+ return Promise.resolve().then(() => store.deleteMany(keyPrefixed2));
1424
+ }
1425
+ const keyPrefixed = this._getKeyPrefix(key);
1426
+ return Promise.resolve().then(() => store.delete(keyPrefixed));
1427
+ }
1428
+ clear() {
1429
+ const { store } = this.opts;
1430
+ return Promise.resolve().then(() => store.clear());
1431
+ }
1432
+ has(key) {
1433
+ const keyPrefixed = this._getKeyPrefix(key);
1434
+ const { store } = this.opts;
1435
+ return Promise.resolve().then(async () => {
1436
+ if (typeof store.has === "function") {
1437
+ return store.has(keyPrefixed);
1438
+ }
1439
+ const value = await store.get(keyPrefixed);
1440
+ return value !== void 0;
1441
+ });
1442
+ }
1443
+ disconnect() {
1444
+ const { store } = this.opts;
1445
+ if (typeof store.disconnect === "function") {
1446
+ return store.disconnect();
1447
+ }
1448
+ }
1449
+ };
1450
+ module.exports = Keyv;
1451
+ }
1452
+ });
1453
+
1200
1454
  // node_modules/flatted/cjs/index.js
1201
1455
  var require_cjs = __commonJS({
1202
1456
  "node_modules/flatted/cjs/index.js"(exports) {
@@ -4008,6 +4262,7 @@ var require_cache = __commonJS({
4008
4262
  "node_modules/flat-cache/src/cache.js"(exports, module) {
4009
4263
  var path10 = __require("path");
4010
4264
  var fs6 = __require("fs");
4265
+ var Keyv = require_src();
4011
4266
  var utils = require_utils();
4012
4267
  var del = require_del();
4013
4268
  var writeJSON = utils.writeJSON;
@@ -4023,13 +4278,28 @@ var require_cache = __commonJS({
4023
4278
  */
4024
4279
  load: function(docId, cacheDir) {
4025
4280
  var me = this;
4026
- me._visited = {};
4027
- me._persisted = {};
4281
+ me.keyv = new Keyv();
4282
+ me.__visited = {};
4283
+ me.__persisted = {};
4028
4284
  me._pathToFile = cacheDir ? path10.resolve(cacheDir, docId) : path10.resolve(__dirname, "../.cache/", docId);
4029
4285
  if (fs6.existsSync(me._pathToFile)) {
4030
4286
  me._persisted = utils.tryParse(me._pathToFile, {});
4031
4287
  }
4032
4288
  },
4289
+ get _persisted() {
4290
+ return this.__persisted;
4291
+ },
4292
+ set _persisted(value) {
4293
+ this.__persisted = value;
4294
+ this.keyv.set("persisted", value);
4295
+ },
4296
+ get _visited() {
4297
+ return this.__visited;
4298
+ },
4299
+ set _visited(value) {
4300
+ this.__visited = value;
4301
+ this.keyv.set("visited", value);
4302
+ },
4033
4303
  /**
4034
4304
  * Load the cache from the provided file
4035
4305
  * @method loadFile
@@ -4777,7 +5047,7 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
4777
5047
  return 1;
4778
5048
  }
4779
5049
  if ("CI" in env) {
4780
- if ("GITHUB_ACTIONS" in env) {
5050
+ if ("GITHUB_ACTIONS" in env || "GITEA_ACTIONS" in env) {
4781
5051
  return 3;
4782
5052
  }
4783
5053
  if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
@@ -5006,7 +5276,7 @@ var chalk = createChalk();
5006
5276
  var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
5007
5277
  var source_default = chalk;
5008
5278
 
5009
- // node_modules/strip-ansi/node_modules/ansi-regex/index.js
5279
+ // node_modules/ansi-regex/index.js
5010
5280
  function ansiRegex({ onlyFirst = false } = {}) {
5011
5281
  const pattern = [
5012
5282
  "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
@@ -5134,7 +5404,8 @@ var {
5134
5404
  getSupportInfoWithoutPlugins,
5135
5405
  normalizeOptionSettings,
5136
5406
  vnopts,
5137
- fastGlob
5407
+ fastGlob,
5408
+ mockable
5138
5409
  } = sharedWithCli;
5139
5410
 
5140
5411
  // src/cli/cli-options.evaluate.js
@@ -5404,12 +5675,30 @@ var preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUp
5404
5675
  };
5405
5676
  var preserveConsecutiveUppercase = (input, toLowerCase) => {
5406
5677
  LEADING_CAPITAL.lastIndex = 0;
5407
- return input.replace(LEADING_CAPITAL, (m1) => toLowerCase(m1));
5678
+ return string_replace_all_default(
5679
+ /* isOptionalObject*/
5680
+ false,
5681
+ input,
5682
+ LEADING_CAPITAL,
5683
+ (match) => toLowerCase(match)
5684
+ );
5408
5685
  };
5409
5686
  var postProcess = (input, toUpperCase) => {
5410
5687
  SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
5411
5688
  NUMBERS_AND_IDENTIFIER.lastIndex = 0;
5412
- return input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier)).replace(NUMBERS_AND_IDENTIFIER, (m) => toUpperCase(m));
5689
+ return string_replace_all_default(
5690
+ /* isOptionalObject*/
5691
+ false,
5692
+ string_replace_all_default(
5693
+ /* isOptionalObject*/
5694
+ false,
5695
+ input,
5696
+ NUMBERS_AND_IDENTIFIER,
5697
+ (match, pattern, offset) => ["_", "-"].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match)
5698
+ ),
5699
+ SEPARATORS_AND_IDENTIFIER,
5700
+ (_, identifier) => toUpperCase(identifier)
5701
+ );
5413
5702
  };
5414
5703
  function camelCase(input, options) {
5415
5704
  if (!(typeof input === "string" || Array.isArray(input))) {
@@ -5905,25 +6194,33 @@ import fs5 from "fs/promises";
5905
6194
  import path8 from "path";
5906
6195
  var import_diff = __toESM(require_create(), 1);
5907
6196
  import * as prettier from "../index.mjs";
5908
- import mockable2 from "./internal.mjs";
5909
6197
 
5910
6198
  // src/cli/expand-patterns.js
5911
6199
  import path2 from "path";
5912
6200
  async function* expandPatterns(context) {
5913
6201
  const seen = /* @__PURE__ */ new Set();
5914
6202
  let noResults = true;
5915
- for await (const pathOrError of expandPatternsInternal(context)) {
6203
+ for await (const {
6204
+ filePath,
6205
+ ignoreUnknown,
6206
+ error
6207
+ } of expandPatternsInternal(context)) {
5916
6208
  noResults = false;
5917
- if (typeof pathOrError !== "string") {
5918
- yield pathOrError;
6209
+ if (error) {
6210
+ yield {
6211
+ error
6212
+ };
5919
6213
  continue;
5920
6214
  }
5921
- const fileName = path2.resolve(pathOrError);
5922
- if (seen.has(fileName)) {
6215
+ const filename = path2.resolve(filePath);
6216
+ if (seen.has(filename)) {
5923
6217
  continue;
5924
6218
  }
5925
- seen.add(fileName);
5926
- yield fileName;
6219
+ seen.add(filename);
6220
+ yield {
6221
+ filename,
6222
+ ignoreUnknown
6223
+ };
5927
6224
  }
5928
6225
  if (noResults && context.argv.errorOnUnmatchedPattern !== false) {
5929
6226
  yield {
@@ -5941,7 +6238,6 @@ async function* expandPatternsInternal(context) {
5941
6238
  ignore: silentlyIgnoredDirs.map((dir) => "**/" + dir),
5942
6239
  followSymbolicLinks: false
5943
6240
  };
5944
- let supportedFilesGlob;
5945
6241
  const cwd2 = process.cwd();
5946
6242
  const entries = [];
5947
6243
  for (const pattern of context.filePatterns) {
@@ -5952,9 +6248,13 @@ async function* expandPatternsInternal(context) {
5952
6248
  const stat = await lstatSafe(absolutePath);
5953
6249
  if (stat) {
5954
6250
  if (stat.isSymbolicLink()) {
5955
- yield {
5956
- error: `Explicitly specified pattern "${pattern}" is a symbolic link.`
5957
- };
6251
+ if (context.argv.errorOnUnmatchedPattern !== false) {
6252
+ yield {
6253
+ error: `Explicitly specified pattern "${pattern}" is a symbolic link.`
6254
+ };
6255
+ } else {
6256
+ context.logger.debug(`Skipping pattern "${pattern}", as it is a symbolic link.`);
6257
+ }
5958
6258
  } else if (stat.isFile()) {
5959
6259
  entries.push({
5960
6260
  type: "file",
@@ -5963,10 +6263,12 @@ async function* expandPatternsInternal(context) {
5963
6263
  });
5964
6264
  } else if (stat.isDirectory()) {
5965
6265
  const relativePath = path2.relative(cwd2, absolutePath) || ".";
6266
+ const prefix = escapePathForGlob(fixWindowsSlashes(relativePath));
5966
6267
  entries.push({
5967
6268
  type: "dir",
5968
- glob: escapePathForGlob(fixWindowsSlashes(relativePath)) + "/" + getSupportedFilesGlob(),
5969
- input: pattern
6269
+ glob: `${prefix}/**/*`,
6270
+ input: pattern,
6271
+ ignoreUnknown: true
5970
6272
  });
5971
6273
  }
5972
6274
  } else if (pattern[0] === "!") {
@@ -5982,7 +6284,8 @@ async function* expandPatternsInternal(context) {
5982
6284
  for (const {
5983
6285
  type,
5984
6286
  glob,
5985
- input
6287
+ input,
6288
+ ignoreUnknown
5986
6289
  } of entries) {
5987
6290
  let result;
5988
6291
  try {
@@ -6003,17 +6306,12 @@ ${message}`
6003
6306
  };
6004
6307
  }
6005
6308
  } else {
6006
- yield* sortPaths(result);
6309
+ yield* sortPaths(result).map((filePath) => ({
6310
+ filePath,
6311
+ ignoreUnknown
6312
+ }));
6007
6313
  }
6008
6314
  }
6009
- function getSupportedFilesGlob() {
6010
- if (!supportedFilesGlob) {
6011
- const extensions = context.languages.flatMap((lang) => lang.extensions || []);
6012
- const filenames = context.languages.flatMap((lang) => lang.filenames || []);
6013
- supportedFilesGlob = `**/{${[...extensions.map((ext) => "*" + (ext[0] === "." ? ext : "." + ext)), ...filenames]}}`;
6014
- }
6015
- return supportedFilesGlob;
6016
- }
6017
6315
  }
6018
6316
  var errorMessages = {
6019
6317
  globError: {
@@ -6120,7 +6418,7 @@ async function getOptionsOrDie(context, filePath) {
6120
6418
  return options;
6121
6419
  } catch (error) {
6122
6420
  context.logger.error(
6123
- `Invalid configuration for file "${filePath}":
6421
+ `Invalid configuration${filePath ? ` for file "${filePath}"` : ""}:
6124
6422
  ` + error.message
6125
6423
  );
6126
6424
  process.exit(2);
@@ -6167,7 +6465,6 @@ async function getOptionsForFile(context, filepath) {
6167
6465
  var get_options_for_file_default = getOptionsForFile;
6168
6466
 
6169
6467
  // src/cli/is-tty.js
6170
- import mockable from "./internal.mjs";
6171
6468
  function isTTY() {
6172
6469
  return process.stdout.isTTY && !mockable.isCI();
6173
6470
  }
@@ -6349,9 +6646,6 @@ function useDirectory(directory, options) {
6349
6646
  if (options.create) {
6350
6647
  fs3.mkdirSync(directory, { recursive: true });
6351
6648
  }
6352
- if (options.thunk) {
6353
- return (...arguments_) => path6.join(directory, ...arguments_);
6354
- }
6355
6649
  return directory;
6356
6650
  }
6357
6651
  function getNodeModuleDirectory(directory) {
@@ -6365,9 +6659,12 @@ function findCacheDirectory(options = {}) {
6365
6659
  if (env2.CACHE_DIR && !["true", "false", "1", "0"].includes(env2.CACHE_DIR)) {
6366
6660
  return useDirectory(path6.join(env2.CACHE_DIR, options.name), options);
6367
6661
  }
6368
- let { cwd: directory = cwd() } = options;
6369
- if (options.files) {
6370
- directory = (0, import_common_path_prefix.default)(options.files.map((file) => path6.resolve(directory, file)));
6662
+ let { cwd: directory = cwd(), files } = options;
6663
+ if (files) {
6664
+ if (!Array.isArray(files)) {
6665
+ throw new TypeError(`Expected \`files\` option to be an array, got \`${typeof files}\`.`);
6666
+ }
6667
+ directory = (0, import_common_path_prefix.default)(files.map((file) => path6.resolve(directory, file)));
6371
6668
  }
6372
6669
  directory = packageDirectorySync({ cwd: directory });
6373
6670
  if (!directory) {
@@ -6486,24 +6783,25 @@ _fileEntryCache = new WeakMap();
6486
6783
  var format_results_cache_default = FormatResultsCache;
6487
6784
 
6488
6785
  // src/cli/format.js
6489
- var { getStdin, writeFormattedFile } = mockable2;
6786
+ var { getStdin, writeFormattedFile } = mockable;
6490
6787
  function diff(a, b) {
6491
6788
  return (0, import_diff.createTwoFilesPatch)("", "", a, b, "", "", { context: 2 });
6492
6789
  }
6493
6790
  var DebugError = class extends Error {
6494
6791
  name = "DebugError";
6495
6792
  };
6496
- function handleError(context, filename, error, printedFilename) {
6793
+ function handleError(context, filename, error, printedFilename, ignoreUnknown) {
6794
+ ignoreUnknown || (ignoreUnknown = context.argv.ignoreUnknown);
6497
6795
  const errorIsUndefinedParseError = error instanceof errors.UndefinedParserError;
6498
6796
  if (printedFilename) {
6499
- if ((context.argv.write || context.argv.ignoreUnknown) && errorIsUndefinedParseError) {
6797
+ if ((context.argv.write || ignoreUnknown) && errorIsUndefinedParseError) {
6500
6798
  printedFilename.clear();
6501
6799
  } else {
6502
6800
  process.stdout.write("\n");
6503
6801
  }
6504
6802
  }
6505
6803
  if (errorIsUndefinedParseError) {
6506
- if (context.argv.ignoreUnknown) {
6804
+ if (ignoreUnknown) {
6507
6805
  return;
6508
6806
  }
6509
6807
  if (!context.argv.check && !context.argv.listDifferent) {
@@ -6646,7 +6944,11 @@ async function format2(context, input, opt) {
6646
6944
  ms: averageMs
6647
6945
  };
6648
6946
  context.logger.debug(
6649
- `'${performanceTestFlag.name}' measurements for formatWithCursor: ${JSON.stringify(results, null, 2)}`
6947
+ `'${performanceTestFlag.name}' measurements for formatWithCursor: ${JSON.stringify(
6948
+ results,
6949
+ null,
6950
+ 2
6951
+ )}`
6650
6952
  );
6651
6953
  }
6652
6954
  return prettier.formatWithCursor(input, opt);
@@ -6677,7 +6979,7 @@ async function formatStdin(context) {
6677
6979
  }
6678
6980
  const options = await get_options_for_file_default(
6679
6981
  context,
6680
- filepath ? path8.resolve(process.cwd(), filepath) : process.cwd()
6982
+ filepath ? path8.resolve(filepath) : void 0
6681
6983
  );
6682
6984
  if (await listDifferent(context, input, options, "(stdin)")) {
6683
6985
  return;
@@ -6710,27 +7012,20 @@ async function formatFiles(context) {
6710
7012
  cacheFilePath,
6711
7013
  context.argv.cacheStrategy || "content"
6712
7014
  );
6713
- } else {
6714
- if (context.argv.cacheStrategy) {
6715
- context.logger.error(
6716
- "`--cache-strategy` cannot be used without `--cache`."
6717
- );
6718
- process.exit(2);
6719
- }
6720
- if (!context.argv.cacheLocation) {
6721
- const stat = await statSafe(cacheFilePath);
6722
- if (stat) {
6723
- await fs5.unlink(cacheFilePath);
6724
- }
7015
+ } else if (!context.argv.cacheLocation) {
7016
+ const stat = await statSafe(cacheFilePath);
7017
+ if (stat) {
7018
+ await fs5.unlink(cacheFilePath);
6725
7019
  }
6726
7020
  }
6727
- for await (const pathOrError of expandPatterns(context)) {
6728
- if (typeof pathOrError === "object") {
6729
- context.logger.error(pathOrError.error);
7021
+ for await (const { error, filename, ignoreUnknown } of expandPatterns(
7022
+ context
7023
+ )) {
7024
+ if (error) {
7025
+ context.logger.error(error);
6730
7026
  process.exitCode = 2;
6731
7027
  continue;
6732
7028
  }
6733
- const filename = pathOrError;
6734
7029
  const isFileIgnored = isIgnored(filename);
6735
7030
  if (isFileIgnored && (context.argv.debugCheck || context.argv.write || context.argv.check || context.argv.listDifferent)) {
6736
7031
  continue;
@@ -6750,11 +7045,11 @@ async function formatFiles(context) {
6750
7045
  let input;
6751
7046
  try {
6752
7047
  input = await fs5.readFile(filename, "utf8");
6753
- } catch (error) {
7048
+ } catch (error2) {
6754
7049
  context.logger.log("");
6755
7050
  context.logger.error(
6756
7051
  `Unable to read file "${fileNameToDisplay}":
6757
- ${error.message}`
7052
+ ${error2.message}`
6758
7053
  );
6759
7054
  process.exitCode = 2;
6760
7055
  continue;
@@ -6778,8 +7073,14 @@ ${error.message}`
6778
7073
  result = await format2(context, input, options);
6779
7074
  }
6780
7075
  output = result.formatted;
6781
- } catch (error) {
6782
- handleError(context, fileNameToDisplay, error, printedFilename);
7076
+ } catch (error2) {
7077
+ handleError(
7078
+ context,
7079
+ fileNameToDisplay,
7080
+ error2,
7081
+ printedFilename,
7082
+ ignoreUnknown
7083
+ );
6783
7084
  continue;
6784
7085
  }
6785
7086
  const isDifferent = output !== input;
@@ -6799,15 +7100,15 @@ ${error.message}`
6799
7100
  try {
6800
7101
  await writeFormattedFile(filename, output);
6801
7102
  shouldSetCache = true;
6802
- } catch (error) {
7103
+ } catch (error2) {
6803
7104
  context.logger.error(
6804
7105
  `Unable to write file "${fileNameToDisplay}":
6805
- ${error.message}`
7106
+ ${error2.message}`
6806
7107
  );
6807
7108
  process.exitCode = 2;
6808
7109
  }
6809
7110
  } else if (!context.argv.check && !context.argv.listDifferent) {
6810
- const message = `${source_default.grey(fileNameToDisplay)} ${Date.now() - start}ms`;
7111
+ const message = `${source_default.grey(fileNameToDisplay)} ${Date.now() - start}ms (unchanged)`;
6811
7112
  if (isCacheExists) {
6812
7113
  context.logger.log(`${message} (cached)`);
6813
7114
  } else {
@@ -6905,7 +7206,7 @@ async function printSupportInfo() {
6905
7206
  var print_support_info_default = printSupportInfo;
6906
7207
 
6907
7208
  // src/cli/index.js
6908
- async function run(rawArguments) {
7209
+ async function run(rawArguments = process.argv.slice(2)) {
6909
7210
  let logger = logger_default();
6910
7211
  try {
6911
7212
  const { logLevel } = parseArgvWithoutPlugins(
@@ -6941,6 +7242,9 @@ async function main(context) {
6941
7242
  if (context.argv.fileInfo && context.filePatterns.length > 0) {
6942
7243
  throw new Error("Cannot use --file-info with multiple files");
6943
7244
  }
7245
+ if (!context.argv.cache && context.argv.cacheStrategy) {
7246
+ throw new Error("`--cache-strategy` cannot be used without `--cache`.");
7247
+ }
6944
7248
  if (context.argv.version) {
6945
7249
  printToScreen(prettier2.version);
6946
7250
  return;
@@ -6954,24 +7258,29 @@ async function main(context) {
6954
7258
  if (context.argv.supportInfo) {
6955
7259
  return print_support_info_default();
6956
7260
  }
6957
- const hasFilePatterns = context.filePatterns.length > 0;
6958
- const useStdin = !hasFilePatterns && (!process.stdin.isTTY || context.argv.filePath);
6959
7261
  if (context.argv.findConfigPath) {
6960
7262
  await find_config_path_default(context);
6961
- } else if (context.argv.fileInfo) {
7263
+ return;
7264
+ }
7265
+ if (context.argv.fileInfo) {
6962
7266
  await file_info_default(context);
6963
- } else if (useStdin) {
7267
+ return;
7268
+ }
7269
+ const hasFilePatterns = context.filePatterns.length > 0;
7270
+ const useStdin = !hasFilePatterns && (!process.stdin.isTTY || context.argv.filepath);
7271
+ if (useStdin) {
6964
7272
  if (context.argv.cache) {
6965
- context.logger.error("`--cache` cannot be used with stdin.");
6966
- process.exit(2);
7273
+ throw new Error("`--cache` cannot be used when formatting stdin.");
6967
7274
  }
6968
7275
  await formatStdin(context);
6969
- } else if (hasFilePatterns) {
7276
+ return;
7277
+ }
7278
+ if (hasFilePatterns) {
6970
7279
  await formatFiles(context);
6971
- } else {
6972
- process.exitCode = 1;
6973
- printToScreen(createUsage(context));
7280
+ return;
6974
7281
  }
7282
+ process.exitCode = 1;
7283
+ printToScreen(createUsage(context));
6975
7284
  }
6976
7285
  export {
6977
7286
  run