prettier 3.4.2 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.mjs CHANGED
@@ -1428,9 +1428,9 @@ var require_braces = __commonJS({
1428
1428
  }
1429
1429
  });
1430
1430
 
1431
- // node_modules/picomatch/lib/constants.js
1431
+ // node_modules/micromatch/node_modules/picomatch/lib/constants.js
1432
1432
  var require_constants2 = __commonJS({
1433
- "node_modules/picomatch/lib/constants.js"(exports, module) {
1433
+ "node_modules/micromatch/node_modules/picomatch/lib/constants.js"(exports, module) {
1434
1434
  "use strict";
1435
1435
  var path13 = __require("path");
1436
1436
  var WIN_SLASH = "\\\\/";
@@ -1625,9 +1625,9 @@ var require_constants2 = __commonJS({
1625
1625
  }
1626
1626
  });
1627
1627
 
1628
- // node_modules/picomatch/lib/utils.js
1628
+ // node_modules/micromatch/node_modules/picomatch/lib/utils.js
1629
1629
  var require_utils2 = __commonJS({
1630
- "node_modules/picomatch/lib/utils.js"(exports) {
1630
+ "node_modules/micromatch/node_modules/picomatch/lib/utils.js"(exports) {
1631
1631
  "use strict";
1632
1632
  var path13 = __require("path");
1633
1633
  var win32 = process.platform === "win32";
@@ -1686,9 +1686,9 @@ var require_utils2 = __commonJS({
1686
1686
  }
1687
1687
  });
1688
1688
 
1689
- // node_modules/picomatch/lib/scan.js
1689
+ // node_modules/micromatch/node_modules/picomatch/lib/scan.js
1690
1690
  var require_scan = __commonJS({
1691
- "node_modules/picomatch/lib/scan.js"(exports, module) {
1691
+ "node_modules/micromatch/node_modules/picomatch/lib/scan.js"(exports, module) {
1692
1692
  "use strict";
1693
1693
  var utils = require_utils2();
1694
1694
  var {
@@ -2016,9 +2016,9 @@ var require_scan = __commonJS({
2016
2016
  }
2017
2017
  });
2018
2018
 
2019
- // node_modules/picomatch/lib/parse.js
2019
+ // node_modules/micromatch/node_modules/picomatch/lib/parse.js
2020
2020
  var require_parse2 = __commonJS({
2021
- "node_modules/picomatch/lib/parse.js"(exports, module) {
2021
+ "node_modules/micromatch/node_modules/picomatch/lib/parse.js"(exports, module) {
2022
2022
  "use strict";
2023
2023
  var constants = require_constants2();
2024
2024
  var utils = require_utils2();
@@ -2789,9 +2789,9 @@ var require_parse2 = __commonJS({
2789
2789
  }
2790
2790
  });
2791
2791
 
2792
- // node_modules/picomatch/lib/picomatch.js
2792
+ // node_modules/micromatch/node_modules/picomatch/lib/picomatch.js
2793
2793
  var require_picomatch = __commonJS({
2794
- "node_modules/picomatch/lib/picomatch.js"(exports, module) {
2794
+ "node_modules/micromatch/node_modules/picomatch/lib/picomatch.js"(exports, module) {
2795
2795
  "use strict";
2796
2796
  var path13 = __require("path");
2797
2797
  var scan = require_scan();
@@ -2930,9 +2930,9 @@ var require_picomatch = __commonJS({
2930
2930
  }
2931
2931
  });
2932
2932
 
2933
- // node_modules/picomatch/index.js
2933
+ // node_modules/micromatch/node_modules/picomatch/index.js
2934
2934
  var require_picomatch2 = __commonJS({
2935
- "node_modules/picomatch/index.js"(exports, module) {
2935
+ "node_modules/micromatch/node_modules/picomatch/index.js"(exports, module) {
2936
2936
  "use strict";
2937
2937
  module.exports = require_picomatch();
2938
2938
  }
@@ -3104,7 +3104,7 @@ var require_pattern = __commonJS({
3104
3104
  "node_modules/fast-glob/out/utils/pattern.js"(exports) {
3105
3105
  "use strict";
3106
3106
  Object.defineProperty(exports, "__esModule", { value: true });
3107
- exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;
3107
+ exports.isAbsolute = exports.partitionAbsoluteAndRelative = exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;
3108
3108
  var path13 = __require("path");
3109
3109
  var globParent = require_glob_parent();
3110
3110
  var micromatch2 = require_micromatch();
@@ -3244,6 +3244,23 @@ var require_pattern = __commonJS({
3244
3244
  return pattern.replace(DOUBLE_SLASH_RE, "/");
3245
3245
  }
3246
3246
  exports.removeDuplicateSlashes = removeDuplicateSlashes;
3247
+ function partitionAbsoluteAndRelative(patterns) {
3248
+ const absolute = [];
3249
+ const relative = [];
3250
+ for (const pattern of patterns) {
3251
+ if (isAbsolute(pattern)) {
3252
+ absolute.push(pattern);
3253
+ } else {
3254
+ relative.push(pattern);
3255
+ }
3256
+ }
3257
+ return [absolute, relative];
3258
+ }
3259
+ exports.partitionAbsoluteAndRelative = partitionAbsoluteAndRelative;
3260
+ function isAbsolute(pattern) {
3261
+ return path13.isAbsolute(pattern);
3262
+ }
3263
+ exports.isAbsolute = isAbsolute;
3247
3264
  }
3248
3265
  });
3249
3266
 
@@ -4330,17 +4347,19 @@ var require_queue = __commonJS({
4330
4347
  return p;
4331
4348
  }
4332
4349
  function drained() {
4333
- if (queue.idle()) {
4334
- return new Promise(function(resolve3) {
4335
- resolve3();
4336
- });
4337
- }
4338
- var previousDrain = queue.drain;
4339
4350
  var p = new Promise(function(resolve3) {
4340
- queue.drain = function() {
4341
- previousDrain();
4342
- resolve3();
4343
- };
4351
+ process.nextTick(function() {
4352
+ if (queue.idle()) {
4353
+ resolve3();
4354
+ } else {
4355
+ var previousDrain = queue.drain;
4356
+ queue.drain = function() {
4357
+ if (typeof previousDrain === "function") previousDrain();
4358
+ resolve3();
4359
+ queue.drain = previousDrain;
4360
+ };
4361
+ }
4362
+ });
4344
4363
  });
4345
4364
  return p;
4346
4365
  }
@@ -5038,11 +5057,19 @@ var require_entry = __commonJS({
5038
5057
  this.index = /* @__PURE__ */ new Map();
5039
5058
  }
5040
5059
  getFilter(positive, negative) {
5041
- const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);
5042
- const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }));
5043
- return (entry) => this._filter(entry, positiveRe, negativeRe);
5060
+ const [absoluteNegative, relativeNegative] = utils.pattern.partitionAbsoluteAndRelative(negative);
5061
+ const patterns = {
5062
+ positive: {
5063
+ all: utils.pattern.convertPatternsToRe(positive, this._micromatchOptions)
5064
+ },
5065
+ negative: {
5066
+ absolute: utils.pattern.convertPatternsToRe(absoluteNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })),
5067
+ relative: utils.pattern.convertPatternsToRe(relativeNegative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true }))
5068
+ }
5069
+ };
5070
+ return (entry) => this._filter(entry, patterns);
5044
5071
  }
5045
- _filter(entry, positiveRe, negativeRe) {
5072
+ _filter(entry, patterns) {
5046
5073
  const filepath = utils.path.removeLeadingDotSegment(entry.path);
5047
5074
  if (this._settings.unique && this._isDuplicateEntry(filepath)) {
5048
5075
  return false;
@@ -5050,11 +5077,7 @@ var require_entry = __commonJS({
5050
5077
  if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {
5051
5078
  return false;
5052
5079
  }
5053
- if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) {
5054
- return false;
5055
- }
5056
- const isDirectory2 = entry.dirent.isDirectory();
5057
- const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory2) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory2);
5080
+ const isMatched = this._isMatchToPatternsSet(filepath, patterns, entry.dirent.isDirectory());
5058
5081
  if (this._settings.unique && isMatched) {
5059
5082
  this._createIndexRecord(filepath);
5060
5083
  }
@@ -5072,14 +5095,32 @@ var require_entry = __commonJS({
5072
5095
  _onlyDirectoryFilter(entry) {
5073
5096
  return this._settings.onlyDirectories && !entry.dirent.isDirectory();
5074
5097
  }
5075
- _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {
5076
- if (!this._settings.absolute) {
5098
+ _isMatchToPatternsSet(filepath, patterns, isDirectory2) {
5099
+ const isMatched = this._isMatchToPatterns(filepath, patterns.positive.all, isDirectory2);
5100
+ if (!isMatched) {
5101
+ return false;
5102
+ }
5103
+ const isMatchedByRelativeNegative = this._isMatchToPatterns(filepath, patterns.negative.relative, isDirectory2);
5104
+ if (isMatchedByRelativeNegative) {
5105
+ return false;
5106
+ }
5107
+ const isMatchedByAbsoluteNegative = this._isMatchToAbsoluteNegative(filepath, patterns.negative.absolute, isDirectory2);
5108
+ if (isMatchedByAbsoluteNegative) {
5109
+ return false;
5110
+ }
5111
+ return true;
5112
+ }
5113
+ _isMatchToAbsoluteNegative(filepath, patternsRe, isDirectory2) {
5114
+ if (patternsRe.length === 0) {
5077
5115
  return false;
5078
5116
  }
5079
- const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);
5080
- return utils.pattern.matchAny(fullpath, patternsRe);
5117
+ const fullpath = utils.path.makeAbsolute(this._settings.cwd, filepath);
5118
+ return this._isMatchToPatterns(fullpath, patternsRe, isDirectory2);
5081
5119
  }
5082
5120
  _isMatchToPatterns(filepath, patternsRe, isDirectory2) {
5121
+ if (patternsRe.length === 0) {
5122
+ return false;
5123
+ }
5083
5124
  const isMatched = utils.pattern.matchAny(filepath, patternsRe);
5084
5125
  if (!isMatched && isDirectory2) {
5085
5126
  return utils.pattern.matchAny(filepath + "/", patternsRe);
@@ -5552,6 +5593,7 @@ var require_re = __commonJS({
5552
5593
  var re = exports.re = [];
5553
5594
  var safeRe = exports.safeRe = [];
5554
5595
  var src = exports.src = [];
5596
+ var safeSrc = exports.safeSrc = [];
5555
5597
  var t = exports.t = {};
5556
5598
  var R = 0;
5557
5599
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
@@ -5572,6 +5614,7 @@ var require_re = __commonJS({
5572
5614
  debug(name, index, value);
5573
5615
  t[name] = index;
5574
5616
  src[index] = value;
5617
+ safeSrc[index] = safe;
5575
5618
  re[index] = new RegExp(value, isGlobal ? "g" : void 0);
5576
5619
  safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
5577
5620
  };
@@ -5668,7 +5711,7 @@ var require_semver = __commonJS({
5668
5711
  "node_modules/semver/classes/semver.js"(exports, module) {
5669
5712
  var debug = require_debug();
5670
5713
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants4();
5671
- var { safeRe: re, t } = require_re();
5714
+ var { safeRe: re, safeSrc: src, t } = require_re();
5672
5715
  var parseOptions = require_parse_options();
5673
5716
  var { compareIdentifiers } = require_identifiers();
5674
5717
  var SemVer = class _SemVer {
@@ -5808,6 +5851,18 @@ var require_semver = __commonJS({
5808
5851
  // preminor will bump the version up to the next minor release, and immediately
5809
5852
  // down to pre-release. premajor and prepatch work the same way.
5810
5853
  inc(release, identifier, identifierBase) {
5854
+ if (release.startsWith("pre")) {
5855
+ if (!identifier && identifierBase === false) {
5856
+ throw new Error("invalid increment argument: identifier is empty");
5857
+ }
5858
+ if (identifier) {
5859
+ const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`);
5860
+ const match = `-${identifier}`.match(r);
5861
+ if (!match || match[1] !== identifier) {
5862
+ throw new Error(`invalid identifier: ${identifier}`);
5863
+ }
5864
+ }
5865
+ }
5811
5866
  switch (release) {
5812
5867
  case "premajor":
5813
5868
  this.prerelease.length = 0;
@@ -5835,6 +5890,12 @@ var require_semver = __commonJS({
5835
5890
  }
5836
5891
  this.inc("pre", identifier, identifierBase);
5837
5892
  break;
5893
+ case "release":
5894
+ if (this.prerelease.length === 0) {
5895
+ throw new Error(`version ${this.raw} is not a prerelease`);
5896
+ }
5897
+ this.prerelease.length = 0;
5898
+ break;
5838
5899
  case "major":
5839
5900
  if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
5840
5901
  this.major++;
@@ -5860,9 +5921,6 @@ var require_semver = __commonJS({
5860
5921
  // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
5861
5922
  case "pre": {
5862
5923
  const base = Number(identifierBase) ? 1 : 0;
5863
- if (!identifier && identifierBase === false) {
5864
- throw new Error("invalid increment argument: identifier is empty");
5865
- }
5866
5924
  if (this.prerelease.length === 0) {
5867
5925
  this.prerelease = [base];
5868
5926
  } else {
@@ -8861,6 +8919,7 @@ var require_ignore = __commonJS({
8861
8919
  function makeArray(subject) {
8862
8920
  return Array.isArray(subject) ? subject : [subject];
8863
8921
  }
8922
+ var UNDEFINED = void 0;
8864
8923
  var EMPTY = "";
8865
8924
  var SPACE = " ";
8866
8925
  var ESCAPE = "\\";
@@ -8870,13 +8929,17 @@ var require_ignore = __commonJS({
8870
8929
  var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
8871
8930
  var REGEX_SPLITALL_CRLF = /\r?\n/g;
8872
8931
  var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
8932
+ var REGEX_TEST_TRAILING_SLASH = /\/$/;
8873
8933
  var SLASH = "/";
8874
8934
  var TMP_KEY_IGNORE = "node-ignore";
8875
8935
  if (typeof Symbol !== "undefined") {
8876
8936
  TMP_KEY_IGNORE = Symbol.for("node-ignore");
8877
8937
  }
8878
8938
  var KEY_IGNORE = TMP_KEY_IGNORE;
8879
- var define = (object, key2, value) => Object.defineProperty(object, key2, { value });
8939
+ var define = (object, key2, value) => {
8940
+ Object.defineProperty(object, key2, { value });
8941
+ return value;
8942
+ };
8880
8943
  var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
8881
8944
  var RETURN_FALSE = () => false;
8882
8945
  var sanitizeRange = (range) => range.replace(
@@ -8889,7 +8952,7 @@ var require_ignore = __commonJS({
8889
8952
  };
8890
8953
  var REPLACERS = [
8891
8954
  [
8892
- // remove BOM
8955
+ // Remove BOM
8893
8956
  // TODO:
8894
8957
  // Other similar zero-width characters?
8895
8958
  /^\uFEFF/,
@@ -8904,7 +8967,7 @@ var require_ignore = __commonJS({
8904
8967
  /((?:\\\\)*?)(\\?\s+)$/,
8905
8968
  (_, m1, m2) => m1 + (m2.indexOf("\\") === 0 ? SPACE : EMPTY)
8906
8969
  ],
8907
- // replace (\ ) with ' '
8970
+ // Replace (\ ) with ' '
8908
8971
  // (\ ) -> ' '
8909
8972
  // (\\ ) -> '\\ '
8910
8973
  // (\\\ ) -> '\\ '
@@ -9033,55 +9096,147 @@ var require_ignore = __commonJS({
9033
9096
  // 'js/' will not match 'a.js'
9034
9097
  // 'js' will match 'a.js' and 'a.js/'
9035
9098
  (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)`
9036
- ],
9037
- // trailing wildcard
9038
- [
9039
- /(\^|\\\/)?\\\*$/,
9040
- (_, p1) => {
9041
- const prefix = p1 ? `${p1}[^/]+` : "[^/]*";
9042
- return `${prefix}(?=$|\\/$)`;
9043
- }
9044
9099
  ]
9045
9100
  ];
9046
- var regexCache = /* @__PURE__ */ Object.create(null);
9047
- var makeRegex = (pattern, ignoreCase) => {
9048
- let source2 = regexCache[pattern];
9049
- if (!source2) {
9050
- source2 = REPLACERS.reduce(
9051
- (prev, [matcher, replacer]) => prev.replace(matcher, replacer.bind(pattern)),
9052
- pattern
9053
- );
9054
- regexCache[pattern] = source2;
9101
+ var REGEX_REPLACE_TRAILING_WILDCARD = /(^|\\\/)?\\\*$/;
9102
+ var MODE_IGNORE = "regex";
9103
+ var MODE_CHECK_IGNORE = "checkRegex";
9104
+ var UNDERSCORE = "_";
9105
+ var TRAILING_WILD_CARD_REPLACERS = {
9106
+ [MODE_IGNORE](_, p1) {
9107
+ const prefix = p1 ? `${p1}[^/]+` : "[^/]*";
9108
+ return `${prefix}(?=$|\\/$)`;
9109
+ },
9110
+ [MODE_CHECK_IGNORE](_, p1) {
9111
+ const prefix = p1 ? `${p1}[^/]*` : "[^/]*";
9112
+ return `${prefix}(?=$|\\/$)`;
9055
9113
  }
9056
- return ignoreCase ? new RegExp(source2, "i") : new RegExp(source2);
9057
9114
  };
9115
+ var makeRegexPrefix = (pattern) => REPLACERS.reduce(
9116
+ (prev, [matcher, replacer]) => prev.replace(matcher, replacer.bind(pattern)),
9117
+ pattern
9118
+ );
9058
9119
  var isString = (subject) => typeof subject === "string";
9059
9120
  var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern) && pattern.indexOf("#") !== 0;
9060
- var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF);
9121
+ var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF).filter(Boolean);
9061
9122
  var IgnoreRule = class {
9062
- constructor(origin, pattern, negative, regex) {
9063
- this.origin = origin;
9123
+ constructor(pattern, mark, body, ignoreCase, negative, prefix) {
9064
9124
  this.pattern = pattern;
9125
+ this.mark = mark;
9065
9126
  this.negative = negative;
9066
- this.regex = regex;
9127
+ define(this, "body", body);
9128
+ define(this, "ignoreCase", ignoreCase);
9129
+ define(this, "regexPrefix", prefix);
9130
+ }
9131
+ get regex() {
9132
+ const key2 = UNDERSCORE + MODE_IGNORE;
9133
+ if (this[key2]) {
9134
+ return this[key2];
9135
+ }
9136
+ return this._make(MODE_IGNORE, key2);
9137
+ }
9138
+ get checkRegex() {
9139
+ const key2 = UNDERSCORE + MODE_CHECK_IGNORE;
9140
+ if (this[key2]) {
9141
+ return this[key2];
9142
+ }
9143
+ return this._make(MODE_CHECK_IGNORE, key2);
9144
+ }
9145
+ _make(mode, key2) {
9146
+ const str2 = this.regexPrefix.replace(
9147
+ REGEX_REPLACE_TRAILING_WILDCARD,
9148
+ // It does not need to bind pattern
9149
+ TRAILING_WILD_CARD_REPLACERS[mode]
9150
+ );
9151
+ const regex = this.ignoreCase ? new RegExp(str2, "i") : new RegExp(str2);
9152
+ return define(this, key2, regex);
9067
9153
  }
9068
9154
  };
9069
- var createRule = (pattern, ignoreCase) => {
9070
- const origin = pattern;
9155
+ var createRule = ({
9156
+ pattern,
9157
+ mark
9158
+ }, ignoreCase) => {
9071
9159
  let negative = false;
9072
- if (pattern.indexOf("!") === 0) {
9160
+ let body = pattern;
9161
+ if (body.indexOf("!") === 0) {
9073
9162
  negative = true;
9074
- pattern = pattern.substr(1);
9163
+ body = body.substr(1);
9075
9164
  }
9076
- pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#");
9077
- const regex = makeRegex(pattern, ignoreCase);
9165
+ body = body.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#");
9166
+ const regexPrefix = makeRegexPrefix(body);
9078
9167
  return new IgnoreRule(
9079
- origin,
9080
9168
  pattern,
9169
+ mark,
9170
+ body,
9171
+ ignoreCase,
9081
9172
  negative,
9082
- regex
9173
+ regexPrefix
9083
9174
  );
9084
9175
  };
9176
+ var RuleManager = class {
9177
+ constructor(ignoreCase) {
9178
+ this._ignoreCase = ignoreCase;
9179
+ this._rules = [];
9180
+ }
9181
+ _add(pattern) {
9182
+ if (pattern && pattern[KEY_IGNORE]) {
9183
+ this._rules = this._rules.concat(pattern._rules._rules);
9184
+ this._added = true;
9185
+ return;
9186
+ }
9187
+ if (isString(pattern)) {
9188
+ pattern = {
9189
+ pattern
9190
+ };
9191
+ }
9192
+ if (checkPattern(pattern.pattern)) {
9193
+ const rule = createRule(pattern, this._ignoreCase);
9194
+ this._added = true;
9195
+ this._rules.push(rule);
9196
+ }
9197
+ }
9198
+ // @param {Array<string> | string | Ignore} pattern
9199
+ add(pattern) {
9200
+ this._added = false;
9201
+ makeArray(
9202
+ isString(pattern) ? splitPattern(pattern) : pattern
9203
+ ).forEach(this._add, this);
9204
+ return this._added;
9205
+ }
9206
+ // Test one single path without recursively checking parent directories
9207
+ //
9208
+ // - checkUnignored `boolean` whether should check if the path is unignored,
9209
+ // setting `checkUnignored` to `false` could reduce additional
9210
+ // path matching.
9211
+ // - check `string` either `MODE_IGNORE` or `MODE_CHECK_IGNORE`
9212
+ // @returns {TestResult} true if a file is ignored
9213
+ test(path13, checkUnignored, mode) {
9214
+ let ignored = false;
9215
+ let unignored = false;
9216
+ let matchedRule;
9217
+ this._rules.forEach((rule) => {
9218
+ const { negative } = rule;
9219
+ if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
9220
+ return;
9221
+ }
9222
+ const matched = rule[mode].test(path13);
9223
+ if (!matched) {
9224
+ return;
9225
+ }
9226
+ ignored = !negative;
9227
+ unignored = negative;
9228
+ matchedRule = negative ? UNDEFINED : rule;
9229
+ });
9230
+ const ret = {
9231
+ ignored,
9232
+ unignored
9233
+ };
9234
+ if (matchedRule) {
9235
+ ret.rule = matchedRule;
9236
+ }
9237
+ return ret;
9238
+ }
9239
+ };
9085
9240
  var throwError2 = (message, Ctor) => {
9086
9241
  throw new Ctor(message);
9087
9242
  };
@@ -9114,34 +9269,16 @@ var require_ignore = __commonJS({
9114
9269
  allowRelativePaths = false
9115
9270
  } = {}) {
9116
9271
  define(this, KEY_IGNORE, true);
9117
- this._rules = [];
9118
- this._ignoreCase = ignoreCase;
9119
- this._allowRelativePaths = allowRelativePaths;
9272
+ this._rules = new RuleManager(ignoreCase);
9273
+ this._strictPathCheck = !allowRelativePaths;
9120
9274
  this._initCache();
9121
9275
  }
9122
9276
  _initCache() {
9123
9277
  this._ignoreCache = /* @__PURE__ */ Object.create(null);
9124
9278
  this._testCache = /* @__PURE__ */ Object.create(null);
9125
9279
  }
9126
- _addPattern(pattern) {
9127
- if (pattern && pattern[KEY_IGNORE]) {
9128
- this._rules = this._rules.concat(pattern._rules);
9129
- this._added = true;
9130
- return;
9131
- }
9132
- if (checkPattern(pattern)) {
9133
- const rule = createRule(pattern, this._ignoreCase);
9134
- this._added = true;
9135
- this._rules.push(rule);
9136
- }
9137
- }
9138
- // @param {Array<string> | string | Ignore} pattern
9139
9280
  add(pattern) {
9140
- this._added = false;
9141
- makeArray(
9142
- isString(pattern) ? splitPattern(pattern) : pattern
9143
- ).forEach(this._addPattern, this);
9144
- if (this._added) {
9281
+ if (this._rules.add(pattern)) {
9145
9282
  this._initCache();
9146
9283
  }
9147
9284
  return this;
@@ -9150,58 +9287,45 @@ var require_ignore = __commonJS({
9150
9287
  addPattern(pattern) {
9151
9288
  return this.add(pattern);
9152
9289
  }
9153
- // | ignored : unignored
9154
- // negative | 0:0 | 0:1 | 1:0 | 1:1
9155
- // -------- | ------- | ------- | ------- | --------
9156
- // 0 | TEST | TEST | SKIP | X
9157
- // 1 | TESTIF | SKIP | TEST | X
9158
- // - SKIP: always skip
9159
- // - TEST: always test
9160
- // - TESTIF: only test if checkUnignored
9161
- // - X: that never happen
9162
- // @param {boolean} whether should check if the path is unignored,
9163
- // setting `checkUnignored` to `false` could reduce additional
9164
- // path matching.
9165
- // @returns {TestResult} true if a file is ignored
9166
- _testOne(path13, checkUnignored) {
9167
- let ignored = false;
9168
- let unignored = false;
9169
- this._rules.forEach((rule) => {
9170
- const { negative } = rule;
9171
- if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
9172
- return;
9173
- }
9174
- const matched = rule.regex.test(path13);
9175
- if (matched) {
9176
- ignored = !negative;
9177
- unignored = negative;
9178
- }
9179
- });
9180
- return {
9181
- ignored,
9182
- unignored
9183
- };
9184
- }
9185
9290
  // @returns {TestResult}
9186
9291
  _test(originalPath, cache3, checkUnignored, slices) {
9187
9292
  const path13 = originalPath && checkPath.convert(originalPath);
9188
9293
  checkPath(
9189
9294
  path13,
9190
9295
  originalPath,
9191
- this._allowRelativePaths ? RETURN_FALSE : throwError2
9296
+ this._strictPathCheck ? throwError2 : RETURN_FALSE
9192
9297
  );
9193
9298
  return this._t(path13, cache3, checkUnignored, slices);
9194
9299
  }
9300
+ checkIgnore(path13) {
9301
+ if (!REGEX_TEST_TRAILING_SLASH.test(path13)) {
9302
+ return this.test(path13);
9303
+ }
9304
+ const slices = path13.split(SLASH).filter(Boolean);
9305
+ slices.pop();
9306
+ if (slices.length) {
9307
+ const parent = this._t(
9308
+ slices.join(SLASH) + SLASH,
9309
+ this._testCache,
9310
+ true,
9311
+ slices
9312
+ );
9313
+ if (parent.ignored) {
9314
+ return parent;
9315
+ }
9316
+ }
9317
+ return this._rules.test(path13, false, MODE_CHECK_IGNORE);
9318
+ }
9195
9319
  _t(path13, cache3, checkUnignored, slices) {
9196
9320
  if (path13 in cache3) {
9197
9321
  return cache3[path13];
9198
9322
  }
9199
9323
  if (!slices) {
9200
- slices = path13.split(SLASH);
9324
+ slices = path13.split(SLASH).filter(Boolean);
9201
9325
  }
9202
9326
  slices.pop();
9203
9327
  if (!slices.length) {
9204
- return cache3[path13] = this._testOne(path13, checkUnignored);
9328
+ return cache3[path13] = this._rules.test(path13, checkUnignored, MODE_IGNORE);
9205
9329
  }
9206
9330
  const parent = this._t(
9207
9331
  slices.join(SLASH) + SLASH,
@@ -9209,7 +9333,7 @@ var require_ignore = __commonJS({
9209
9333
  checkUnignored,
9210
9334
  slices
9211
9335
  );
9212
- return cache3[path13] = parent.ignored ? parent : this._testOne(path13, checkUnignored);
9336
+ return cache3[path13] = parent.ignored ? parent : this._rules.test(path13, checkUnignored, MODE_IGNORE);
9213
9337
  }
9214
9338
  ignores(path13) {
9215
9339
  return this._test(path13, this._ignoreCache, false).ignored;
@@ -9227,18 +9351,18 @@ var require_ignore = __commonJS({
9227
9351
  };
9228
9352
  var factory = (options8) => new Ignore(options8);
9229
9353
  var isPathValid = (path13) => checkPath(path13 && checkPath.convert(path13), path13, RETURN_FALSE);
9230
- factory.isPathValid = isPathValid;
9231
- factory.default = factory;
9232
- module.exports = factory;
9233
9354
  if (
9234
9355
  // Detect `process` so that it can run in browsers.
9235
9356
  typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32")
9236
9357
  ) {
9237
9358
  const makePosix = (str2) => /^\\\\\?\\/.test(str2) || /["<>|\u0000-\u001F]+/u.test(str2) ? str2 : str2.replace(/\\/g, "/");
9238
9359
  checkPath.convert = makePosix;
9239
- const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
9240
- checkPath.isNotRelative = (path13) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path13) || isNotRelative(path13);
9360
+ const REGEX_TEST_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
9361
+ checkPath.isNotRelative = (path13) => REGEX_TEST_WINDOWS_PATH_ABSOLUTE.test(path13) || isNotRelative(path13);
9241
9362
  }
9363
+ module.exports = factory;
9364
+ factory.default = factory;
9365
+ module.exports.isPathValid = isPathValid;
9242
9366
  }
9243
9367
  });
9244
9368
 
@@ -9364,8 +9488,8 @@ var require_readlines = __commonJS({
9364
9488
  });
9365
9489
 
9366
9490
  // src/index.js
9367
- var src_exports = {};
9368
- __export(src_exports, {
9491
+ var index_exports = {};
9492
+ __export(index_exports, {
9369
9493
  __debug: () => debugApis,
9370
9494
  __internal: () => sharedWithCli,
9371
9495
  check: () => check,
@@ -10465,10 +10589,10 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
10465
10589
  return 1;
10466
10590
  }
10467
10591
  if ("CI" in env) {
10468
- if ("GITHUB_ACTIONS" in env || "GITEA_ACTIONS" in env) {
10592
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key2) => key2 in env)) {
10469
10593
  return 3;
10470
10594
  }
10471
- if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign2) => sign2 in env) || env.CI_NAME === "codeship") {
10595
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign2) => sign2 in env) || env.CI_NAME === "codeship") {
10472
10596
  return 1;
10473
10597
  }
10474
10598
  return min;
@@ -15347,12 +15471,25 @@ ${error.message}`;
15347
15471
  throw error;
15348
15472
  }
15349
15473
  }
15350
- async function loadJs(file) {
15474
+ async function importModuleDefault(file) {
15351
15475
  const module = await import(pathToFileURL2(file).href);
15352
15476
  return module.default;
15353
15477
  }
15478
+ async function readPackageJson(file) {
15479
+ try {
15480
+ return await readJson(file);
15481
+ } catch (error) {
15482
+ if (process.versions.bun) {
15483
+ try {
15484
+ return await importModuleDefault(file);
15485
+ } catch {
15486
+ }
15487
+ }
15488
+ throw error;
15489
+ }
15490
+ }
15354
15491
  async function loadConfigFromPackageJson(file) {
15355
- const { prettier } = await readJson(file);
15492
+ const { prettier } = await readPackageJson(file);
15356
15493
  return prettier;
15357
15494
  }
15358
15495
  async function loadConfigFromPackageYaml(file) {
@@ -15391,9 +15528,12 @@ ${error.message}`;
15391
15528
  }
15392
15529
  },
15393
15530
  ".json": readJson,
15394
- ".js": loadJs,
15395
- ".mjs": loadJs,
15396
- ".cjs": loadJs,
15531
+ ".js": importModuleDefault,
15532
+ ".mjs": importModuleDefault,
15533
+ ".cjs": importModuleDefault,
15534
+ ".ts": importModuleDefault,
15535
+ ".mts": importModuleDefault,
15536
+ ".cts": importModuleDefault,
15397
15537
  ".yaml": loadYaml,
15398
15538
  ".yml": loadYaml,
15399
15539
  // No extension
@@ -15411,11 +15551,17 @@ var CONFIG_FILE_NAMES = [
15411
15551
  ".prettierrc.yml",
15412
15552
  ".prettierrc.json5",
15413
15553
  ".prettierrc.js",
15554
+ ".prettierrc.ts",
15414
15555
  ".prettierrc.mjs",
15556
+ ".prettierrc.mts",
15415
15557
  ".prettierrc.cjs",
15558
+ ".prettierrc.cts",
15416
15559
  "prettier.config.js",
15560
+ "prettier.config.ts",
15417
15561
  "prettier.config.mjs",
15562
+ "prettier.config.mts",
15418
15563
  "prettier.config.cjs",
15564
+ "prettier.config.cts",
15419
15565
  ".prettierrc.toml"
15420
15566
  ];
15421
15567
  async function filter({ name, path: file }) {
@@ -17021,7 +17167,6 @@ var string_replace_all_default = stringReplaceAll2;
17021
17167
  var import_ignore = __toESM(require_ignore(), 1);
17022
17168
  import path10 from "path";
17023
17169
  import url from "url";
17024
- var createIgnore = import_ignore.default.default;
17025
17170
  var slash = path10.sep === "\\" ? (filePath) => string_replace_all_default(
17026
17171
  /* isOptionalObject */
17027
17172
  false,
@@ -17050,8 +17195,8 @@ async function createSingleIsIgnoredFunction(ignoreFile, withNodeModules) {
17050
17195
  if (!content) {
17051
17196
  return;
17052
17197
  }
17053
- const ignore = createIgnore({ allowRelativePaths: true }).add(content);
17054
- return (file) => ignore.ignores(slash(getRelativePath(file, ignoreFile)));
17198
+ const ignore = (0, import_ignore.default)({ allowRelativePaths: true }).add(content);
17199
+ return (file) => ignore.checkIgnore(slash(getRelativePath(file, ignoreFile))).ignored;
17055
17200
  }
17056
17201
  async function createIsIgnoredFunction(ignoreFiles, withNodeModules) {
17057
17202
  if (ignoreFiles.length === 0 && !withNodeModules) {
@@ -17251,6 +17396,18 @@ var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
17251
17396
  DOC_TYPE_BREAK_PARENT
17252
17397
  ]);
17253
17398
 
17399
+ // scripts/build/shims/at.js
17400
+ var at = (isOptionalObject, object, index) => {
17401
+ if (isOptionalObject && (object === void 0 || object === null)) {
17402
+ return;
17403
+ }
17404
+ if (Array.isArray(object) || typeof object === "string") {
17405
+ return object[index < 0 ? object.length + index : index];
17406
+ }
17407
+ return object.at(index);
17408
+ };
17409
+ var at_default = at;
17410
+
17254
17411
  // src/document/utils/get-doc-type.js
17255
17412
  function getDocType(doc2) {
17256
17413
  if (typeof doc2 === "string") {
@@ -17361,47 +17518,285 @@ function traverseDoc(doc2, onEnter, onExit, shouldTraverseConditionalGroups) {
17361
17518
  }
17362
17519
  var traverse_doc_default = traverseDoc;
17363
17520
 
17364
- // src/document/utils/assert-doc.js
17365
- var noop = () => {
17366
- };
17367
- var assertDoc = true ? noop : function(doc2) {
17368
- traverse_doc_default(doc2, (doc3) => {
17369
- if (checked.has(doc3)) {
17370
- return false;
17521
+ // src/document/utils.js
17522
+ function mapDoc(doc2, cb) {
17523
+ if (typeof doc2 === "string") {
17524
+ return cb(doc2);
17525
+ }
17526
+ const mapped = /* @__PURE__ */ new Map();
17527
+ return rec(doc2);
17528
+ function rec(doc3) {
17529
+ if (mapped.has(doc3)) {
17530
+ return mapped.get(doc3);
17371
17531
  }
17372
- if (typeof doc3 !== "string") {
17373
- checked.add(doc3);
17532
+ const result = process4(doc3);
17533
+ mapped.set(doc3, result);
17534
+ return result;
17535
+ }
17536
+ function process4(doc3) {
17537
+ switch (get_doc_type_default(doc3)) {
17538
+ case DOC_TYPE_ARRAY:
17539
+ return cb(doc3.map(rec));
17540
+ case DOC_TYPE_FILL:
17541
+ return cb({ ...doc3, parts: doc3.parts.map(rec) });
17542
+ case DOC_TYPE_IF_BREAK:
17543
+ return cb({
17544
+ ...doc3,
17545
+ breakContents: rec(doc3.breakContents),
17546
+ flatContents: rec(doc3.flatContents)
17547
+ });
17548
+ case DOC_TYPE_GROUP: {
17549
+ let { expandedStates, contents } = doc3;
17550
+ if (expandedStates) {
17551
+ expandedStates = expandedStates.map(rec);
17552
+ contents = expandedStates[0];
17553
+ } else {
17554
+ contents = rec(contents);
17555
+ }
17556
+ return cb({ ...doc3, contents, expandedStates });
17557
+ }
17558
+ case DOC_TYPE_ALIGN:
17559
+ case DOC_TYPE_INDENT:
17560
+ case DOC_TYPE_INDENT_IF_BREAK:
17561
+ case DOC_TYPE_LABEL:
17562
+ case DOC_TYPE_LINE_SUFFIX:
17563
+ return cb({ ...doc3, contents: rec(doc3.contents) });
17564
+ case DOC_TYPE_STRING:
17565
+ case DOC_TYPE_CURSOR:
17566
+ case DOC_TYPE_TRIM:
17567
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17568
+ case DOC_TYPE_LINE:
17569
+ case DOC_TYPE_BREAK_PARENT:
17570
+ return cb(doc3);
17571
+ default:
17572
+ throw new invalid_doc_error_default(doc3);
17374
17573
  }
17375
- });
17376
- };
17377
-
17378
- // src/document/builders.js
17379
- function indent(contents) {
17380
- assertDoc(contents);
17381
- return { type: DOC_TYPE_INDENT, contents };
17382
- }
17383
- function align(widthOrString, contents) {
17384
- assertDoc(contents);
17385
- return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
17386
- }
17387
- function lineSuffix(contents) {
17388
- assertDoc(contents);
17389
- return { type: DOC_TYPE_LINE_SUFFIX, contents };
17574
+ }
17390
17575
  }
17391
- var breakParent = { type: DOC_TYPE_BREAK_PARENT };
17392
- var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
17393
- var line2 = { type: DOC_TYPE_LINE };
17394
- var hardline = [hardlineWithoutBreakParent, breakParent];
17395
- var cursor = { type: DOC_TYPE_CURSOR };
17396
- function addAlignmentToDoc(doc2, size, tabWidth) {
17397
- assertDoc(doc2);
17398
- let aligned = doc2;
17399
- if (size > 0) {
17400
- for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
17401
- aligned = indent(aligned);
17576
+ function breakParentGroup(groupStack) {
17577
+ if (groupStack.length > 0) {
17578
+ const parentGroup = at_default(
17579
+ /* isOptionalObject */
17580
+ false,
17581
+ groupStack,
17582
+ -1
17583
+ );
17584
+ if (!parentGroup.expandedStates && !parentGroup.break) {
17585
+ parentGroup.break = "propagated";
17402
17586
  }
17403
- aligned = align(size % tabWidth, aligned);
17404
- aligned = align(Number.NEGATIVE_INFINITY, aligned);
17587
+ }
17588
+ return null;
17589
+ }
17590
+ function propagateBreaks(doc2) {
17591
+ const alreadyVisitedSet = /* @__PURE__ */ new Set();
17592
+ const groupStack = [];
17593
+ function propagateBreaksOnEnterFn(doc3) {
17594
+ if (doc3.type === DOC_TYPE_BREAK_PARENT) {
17595
+ breakParentGroup(groupStack);
17596
+ }
17597
+ if (doc3.type === DOC_TYPE_GROUP) {
17598
+ groupStack.push(doc3);
17599
+ if (alreadyVisitedSet.has(doc3)) {
17600
+ return false;
17601
+ }
17602
+ alreadyVisitedSet.add(doc3);
17603
+ }
17604
+ }
17605
+ function propagateBreaksOnExitFn(doc3) {
17606
+ if (doc3.type === DOC_TYPE_GROUP) {
17607
+ const group = groupStack.pop();
17608
+ if (group.break) {
17609
+ breakParentGroup(groupStack);
17610
+ }
17611
+ }
17612
+ }
17613
+ traverse_doc_default(
17614
+ doc2,
17615
+ propagateBreaksOnEnterFn,
17616
+ propagateBreaksOnExitFn,
17617
+ /* shouldTraverseConditionalGroups */
17618
+ true
17619
+ );
17620
+ }
17621
+ function stripTrailingHardlineFromParts(parts) {
17622
+ parts = [...parts];
17623
+ while (parts.length >= 2 && at_default(
17624
+ /* isOptionalObject */
17625
+ false,
17626
+ parts,
17627
+ -2
17628
+ ).type === DOC_TYPE_LINE && at_default(
17629
+ /* isOptionalObject */
17630
+ false,
17631
+ parts,
17632
+ -1
17633
+ ).type === DOC_TYPE_BREAK_PARENT) {
17634
+ parts.length -= 2;
17635
+ }
17636
+ if (parts.length > 0) {
17637
+ const lastPart = stripTrailingHardlineFromDoc(at_default(
17638
+ /* isOptionalObject */
17639
+ false,
17640
+ parts,
17641
+ -1
17642
+ ));
17643
+ parts[parts.length - 1] = lastPart;
17644
+ }
17645
+ return parts;
17646
+ }
17647
+ function stripTrailingHardlineFromDoc(doc2) {
17648
+ switch (get_doc_type_default(doc2)) {
17649
+ case DOC_TYPE_INDENT:
17650
+ case DOC_TYPE_INDENT_IF_BREAK:
17651
+ case DOC_TYPE_GROUP:
17652
+ case DOC_TYPE_LINE_SUFFIX:
17653
+ case DOC_TYPE_LABEL: {
17654
+ const contents = stripTrailingHardlineFromDoc(doc2.contents);
17655
+ return { ...doc2, contents };
17656
+ }
17657
+ case DOC_TYPE_IF_BREAK:
17658
+ return {
17659
+ ...doc2,
17660
+ breakContents: stripTrailingHardlineFromDoc(doc2.breakContents),
17661
+ flatContents: stripTrailingHardlineFromDoc(doc2.flatContents)
17662
+ };
17663
+ case DOC_TYPE_FILL:
17664
+ return { ...doc2, parts: stripTrailingHardlineFromParts(doc2.parts) };
17665
+ case DOC_TYPE_ARRAY:
17666
+ return stripTrailingHardlineFromParts(doc2);
17667
+ case DOC_TYPE_STRING:
17668
+ return doc2.replace(/[\n\r]*$/u, "");
17669
+ case DOC_TYPE_ALIGN:
17670
+ case DOC_TYPE_CURSOR:
17671
+ case DOC_TYPE_TRIM:
17672
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17673
+ case DOC_TYPE_LINE:
17674
+ case DOC_TYPE_BREAK_PARENT:
17675
+ break;
17676
+ default:
17677
+ throw new invalid_doc_error_default(doc2);
17678
+ }
17679
+ return doc2;
17680
+ }
17681
+ function stripTrailingHardline(doc2) {
17682
+ return stripTrailingHardlineFromDoc(cleanDoc(doc2));
17683
+ }
17684
+ function cleanDocFn(doc2) {
17685
+ switch (get_doc_type_default(doc2)) {
17686
+ case DOC_TYPE_FILL:
17687
+ if (doc2.parts.every((part) => part === "")) {
17688
+ return "";
17689
+ }
17690
+ break;
17691
+ case DOC_TYPE_GROUP:
17692
+ if (!doc2.contents && !doc2.id && !doc2.break && !doc2.expandedStates) {
17693
+ return "";
17694
+ }
17695
+ if (doc2.contents.type === DOC_TYPE_GROUP && doc2.contents.id === doc2.id && doc2.contents.break === doc2.break && doc2.contents.expandedStates === doc2.expandedStates) {
17696
+ return doc2.contents;
17697
+ }
17698
+ break;
17699
+ case DOC_TYPE_ALIGN:
17700
+ case DOC_TYPE_INDENT:
17701
+ case DOC_TYPE_INDENT_IF_BREAK:
17702
+ case DOC_TYPE_LINE_SUFFIX:
17703
+ if (!doc2.contents) {
17704
+ return "";
17705
+ }
17706
+ break;
17707
+ case DOC_TYPE_IF_BREAK:
17708
+ if (!doc2.flatContents && !doc2.breakContents) {
17709
+ return "";
17710
+ }
17711
+ break;
17712
+ case DOC_TYPE_ARRAY: {
17713
+ const parts = [];
17714
+ for (const part of doc2) {
17715
+ if (!part) {
17716
+ continue;
17717
+ }
17718
+ const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
17719
+ if (typeof currentPart === "string" && typeof at_default(
17720
+ /* isOptionalObject */
17721
+ false,
17722
+ parts,
17723
+ -1
17724
+ ) === "string") {
17725
+ parts[parts.length - 1] += currentPart;
17726
+ } else {
17727
+ parts.push(currentPart);
17728
+ }
17729
+ parts.push(...restParts);
17730
+ }
17731
+ if (parts.length === 0) {
17732
+ return "";
17733
+ }
17734
+ if (parts.length === 1) {
17735
+ return parts[0];
17736
+ }
17737
+ return parts;
17738
+ }
17739
+ case DOC_TYPE_STRING:
17740
+ case DOC_TYPE_CURSOR:
17741
+ case DOC_TYPE_TRIM:
17742
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17743
+ case DOC_TYPE_LINE:
17744
+ case DOC_TYPE_LABEL:
17745
+ case DOC_TYPE_BREAK_PARENT:
17746
+ break;
17747
+ default:
17748
+ throw new invalid_doc_error_default(doc2);
17749
+ }
17750
+ return doc2;
17751
+ }
17752
+ function cleanDoc(doc2) {
17753
+ return mapDoc(doc2, (currentDoc) => cleanDocFn(currentDoc));
17754
+ }
17755
+ function inheritLabel(doc2, fn) {
17756
+ return doc2.type === DOC_TYPE_LABEL ? { ...doc2, contents: fn(doc2.contents) } : fn(doc2);
17757
+ }
17758
+
17759
+ // src/document/utils/assert-doc.js
17760
+ var noop = () => {
17761
+ };
17762
+ var assertDoc = true ? noop : function(doc2) {
17763
+ traverse_doc_default(doc2, (doc3) => {
17764
+ if (checked.has(doc3)) {
17765
+ return false;
17766
+ }
17767
+ if (typeof doc3 !== "string") {
17768
+ checked.add(doc3);
17769
+ }
17770
+ });
17771
+ };
17772
+
17773
+ // src/document/builders.js
17774
+ function indent(contents) {
17775
+ assertDoc(contents);
17776
+ return { type: DOC_TYPE_INDENT, contents };
17777
+ }
17778
+ function align(widthOrString, contents) {
17779
+ assertDoc(contents);
17780
+ return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
17781
+ }
17782
+ function lineSuffix(contents) {
17783
+ assertDoc(contents);
17784
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
17785
+ }
17786
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
17787
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
17788
+ var line2 = { type: DOC_TYPE_LINE };
17789
+ var hardline = [hardlineWithoutBreakParent, breakParent];
17790
+ var cursor = { type: DOC_TYPE_CURSOR };
17791
+ function addAlignmentToDoc(doc2, size, tabWidth) {
17792
+ assertDoc(doc2);
17793
+ let aligned = doc2;
17794
+ if (size > 0) {
17795
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
17796
+ aligned = indent(aligned);
17797
+ }
17798
+ aligned = align(size % tabWidth, aligned);
17799
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
17405
17800
  }
17406
17801
  return aligned;
17407
17802
  }
@@ -17547,18 +17942,6 @@ function printDocToDebug(doc2) {
17547
17942
  }
17548
17943
  }
17549
17944
 
17550
- // scripts/build/shims/at.js
17551
- var at = (isOptionalObject, object, index) => {
17552
- if (isOptionalObject && (object === void 0 || object === null)) {
17553
- return;
17554
- }
17555
- if (Array.isArray(object) || typeof object === "string") {
17556
- return object[index < 0 ? object.length + index : index];
17557
- }
17558
- return object.at(index);
17559
- };
17560
- var at_default = at;
17561
-
17562
17945
  // node_modules/emoji-regex/index.mjs
17563
17946
  var emoji_regex_default = () => {
17564
17947
  return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
@@ -17600,244 +17983,6 @@ function getStringWidth(text) {
17600
17983
  }
17601
17984
  var get_string_width_default = getStringWidth;
17602
17985
 
17603
- // src/document/utils.js
17604
- function mapDoc(doc2, cb) {
17605
- if (typeof doc2 === "string") {
17606
- return cb(doc2);
17607
- }
17608
- const mapped = /* @__PURE__ */ new Map();
17609
- return rec(doc2);
17610
- function rec(doc3) {
17611
- if (mapped.has(doc3)) {
17612
- return mapped.get(doc3);
17613
- }
17614
- const result = process4(doc3);
17615
- mapped.set(doc3, result);
17616
- return result;
17617
- }
17618
- function process4(doc3) {
17619
- switch (get_doc_type_default(doc3)) {
17620
- case DOC_TYPE_ARRAY:
17621
- return cb(doc3.map(rec));
17622
- case DOC_TYPE_FILL:
17623
- return cb({ ...doc3, parts: doc3.parts.map(rec) });
17624
- case DOC_TYPE_IF_BREAK:
17625
- return cb({
17626
- ...doc3,
17627
- breakContents: rec(doc3.breakContents),
17628
- flatContents: rec(doc3.flatContents)
17629
- });
17630
- case DOC_TYPE_GROUP: {
17631
- let { expandedStates, contents } = doc3;
17632
- if (expandedStates) {
17633
- expandedStates = expandedStates.map(rec);
17634
- contents = expandedStates[0];
17635
- } else {
17636
- contents = rec(contents);
17637
- }
17638
- return cb({ ...doc3, contents, expandedStates });
17639
- }
17640
- case DOC_TYPE_ALIGN:
17641
- case DOC_TYPE_INDENT:
17642
- case DOC_TYPE_INDENT_IF_BREAK:
17643
- case DOC_TYPE_LABEL:
17644
- case DOC_TYPE_LINE_SUFFIX:
17645
- return cb({ ...doc3, contents: rec(doc3.contents) });
17646
- case DOC_TYPE_STRING:
17647
- case DOC_TYPE_CURSOR:
17648
- case DOC_TYPE_TRIM:
17649
- case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17650
- case DOC_TYPE_LINE:
17651
- case DOC_TYPE_BREAK_PARENT:
17652
- return cb(doc3);
17653
- default:
17654
- throw new invalid_doc_error_default(doc3);
17655
- }
17656
- }
17657
- }
17658
- function breakParentGroup(groupStack) {
17659
- if (groupStack.length > 0) {
17660
- const parentGroup = at_default(
17661
- /* isOptionalObject */
17662
- false,
17663
- groupStack,
17664
- -1
17665
- );
17666
- if (!parentGroup.expandedStates && !parentGroup.break) {
17667
- parentGroup.break = "propagated";
17668
- }
17669
- }
17670
- return null;
17671
- }
17672
- function propagateBreaks(doc2) {
17673
- const alreadyVisitedSet = /* @__PURE__ */ new Set();
17674
- const groupStack = [];
17675
- function propagateBreaksOnEnterFn(doc3) {
17676
- if (doc3.type === DOC_TYPE_BREAK_PARENT) {
17677
- breakParentGroup(groupStack);
17678
- }
17679
- if (doc3.type === DOC_TYPE_GROUP) {
17680
- groupStack.push(doc3);
17681
- if (alreadyVisitedSet.has(doc3)) {
17682
- return false;
17683
- }
17684
- alreadyVisitedSet.add(doc3);
17685
- }
17686
- }
17687
- function propagateBreaksOnExitFn(doc3) {
17688
- if (doc3.type === DOC_TYPE_GROUP) {
17689
- const group = groupStack.pop();
17690
- if (group.break) {
17691
- breakParentGroup(groupStack);
17692
- }
17693
- }
17694
- }
17695
- traverse_doc_default(
17696
- doc2,
17697
- propagateBreaksOnEnterFn,
17698
- propagateBreaksOnExitFn,
17699
- /* shouldTraverseConditionalGroups */
17700
- true
17701
- );
17702
- }
17703
- function stripTrailingHardlineFromParts(parts) {
17704
- parts = [...parts];
17705
- while (parts.length >= 2 && at_default(
17706
- /* isOptionalObject */
17707
- false,
17708
- parts,
17709
- -2
17710
- ).type === DOC_TYPE_LINE && at_default(
17711
- /* isOptionalObject */
17712
- false,
17713
- parts,
17714
- -1
17715
- ).type === DOC_TYPE_BREAK_PARENT) {
17716
- parts.length -= 2;
17717
- }
17718
- if (parts.length > 0) {
17719
- const lastPart = stripTrailingHardlineFromDoc(at_default(
17720
- /* isOptionalObject */
17721
- false,
17722
- parts,
17723
- -1
17724
- ));
17725
- parts[parts.length - 1] = lastPart;
17726
- }
17727
- return parts;
17728
- }
17729
- function stripTrailingHardlineFromDoc(doc2) {
17730
- switch (get_doc_type_default(doc2)) {
17731
- case DOC_TYPE_INDENT:
17732
- case DOC_TYPE_INDENT_IF_BREAK:
17733
- case DOC_TYPE_GROUP:
17734
- case DOC_TYPE_LINE_SUFFIX:
17735
- case DOC_TYPE_LABEL: {
17736
- const contents = stripTrailingHardlineFromDoc(doc2.contents);
17737
- return { ...doc2, contents };
17738
- }
17739
- case DOC_TYPE_IF_BREAK:
17740
- return {
17741
- ...doc2,
17742
- breakContents: stripTrailingHardlineFromDoc(doc2.breakContents),
17743
- flatContents: stripTrailingHardlineFromDoc(doc2.flatContents)
17744
- };
17745
- case DOC_TYPE_FILL:
17746
- return { ...doc2, parts: stripTrailingHardlineFromParts(doc2.parts) };
17747
- case DOC_TYPE_ARRAY:
17748
- return stripTrailingHardlineFromParts(doc2);
17749
- case DOC_TYPE_STRING:
17750
- return doc2.replace(/[\n\r]*$/u, "");
17751
- case DOC_TYPE_ALIGN:
17752
- case DOC_TYPE_CURSOR:
17753
- case DOC_TYPE_TRIM:
17754
- case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17755
- case DOC_TYPE_LINE:
17756
- case DOC_TYPE_BREAK_PARENT:
17757
- break;
17758
- default:
17759
- throw new invalid_doc_error_default(doc2);
17760
- }
17761
- return doc2;
17762
- }
17763
- function stripTrailingHardline(doc2) {
17764
- return stripTrailingHardlineFromDoc(cleanDoc(doc2));
17765
- }
17766
- function cleanDocFn(doc2) {
17767
- switch (get_doc_type_default(doc2)) {
17768
- case DOC_TYPE_FILL:
17769
- if (doc2.parts.every((part) => part === "")) {
17770
- return "";
17771
- }
17772
- break;
17773
- case DOC_TYPE_GROUP:
17774
- if (!doc2.contents && !doc2.id && !doc2.break && !doc2.expandedStates) {
17775
- return "";
17776
- }
17777
- if (doc2.contents.type === DOC_TYPE_GROUP && doc2.contents.id === doc2.id && doc2.contents.break === doc2.break && doc2.contents.expandedStates === doc2.expandedStates) {
17778
- return doc2.contents;
17779
- }
17780
- break;
17781
- case DOC_TYPE_ALIGN:
17782
- case DOC_TYPE_INDENT:
17783
- case DOC_TYPE_INDENT_IF_BREAK:
17784
- case DOC_TYPE_LINE_SUFFIX:
17785
- if (!doc2.contents) {
17786
- return "";
17787
- }
17788
- break;
17789
- case DOC_TYPE_IF_BREAK:
17790
- if (!doc2.flatContents && !doc2.breakContents) {
17791
- return "";
17792
- }
17793
- break;
17794
- case DOC_TYPE_ARRAY: {
17795
- const parts = [];
17796
- for (const part of doc2) {
17797
- if (!part) {
17798
- continue;
17799
- }
17800
- const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
17801
- if (typeof currentPart === "string" && typeof at_default(
17802
- /* isOptionalObject */
17803
- false,
17804
- parts,
17805
- -1
17806
- ) === "string") {
17807
- parts[parts.length - 1] += currentPart;
17808
- } else {
17809
- parts.push(currentPart);
17810
- }
17811
- parts.push(...restParts);
17812
- }
17813
- if (parts.length === 0) {
17814
- return "";
17815
- }
17816
- if (parts.length === 1) {
17817
- return parts[0];
17818
- }
17819
- return parts;
17820
- }
17821
- case DOC_TYPE_STRING:
17822
- case DOC_TYPE_CURSOR:
17823
- case DOC_TYPE_TRIM:
17824
- case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
17825
- case DOC_TYPE_LINE:
17826
- case DOC_TYPE_LABEL:
17827
- case DOC_TYPE_BREAK_PARENT:
17828
- break;
17829
- default:
17830
- throw new invalid_doc_error_default(doc2);
17831
- }
17832
- return doc2;
17833
- }
17834
- function cleanDoc(doc2) {
17835
- return mapDoc(doc2, (currentDoc) => cleanDocFn(currentDoc));
17836
- }
17837
- function inheritLabel(doc2, fn) {
17838
- return doc2.type === DOC_TYPE_LABEL ? { ...doc2, contents: fn(doc2.contents) } : fn(doc2);
17839
- }
17840
-
17841
17986
  // src/document/printer.js
17842
17987
  var MODE_BREAK = Symbol("MODE_BREAK");
17843
17988
  var MODE_FLAT = Symbol("MODE_FLAT");
@@ -20767,6 +20912,22 @@ var common_options_evaluate_default = {
20767
20912
  "description": "Print spaces between brackets.",
20768
20913
  "oppositeDescription": "Do not print spaces between brackets."
20769
20914
  },
20915
+ "objectWrap": {
20916
+ "category": "Common",
20917
+ "type": "choice",
20918
+ "default": "preserve",
20919
+ "description": "How to wrap object literals.",
20920
+ "choices": [
20921
+ {
20922
+ "value": "preserve",
20923
+ "description": "Keep as multi-line, if there is a newline between the opening brace and first property."
20924
+ },
20925
+ {
20926
+ "value": "collapse",
20927
+ "description": "Fit to a single line when possible."
20928
+ }
20929
+ ]
20930
+ },
20770
20931
  "singleQuote": {
20771
20932
  "category": "Common",
20772
20933
  "type": "boolean",
@@ -21204,6 +21365,7 @@ var options4 = {
21204
21365
  ]
21205
21366
  },
21206
21367
  bracketSameLine: common_options_evaluate_default.bracketSameLine,
21368
+ objectWrap: common_options_evaluate_default.objectWrap,
21207
21369
  bracketSpacing: common_options_evaluate_default.bracketSpacing,
21208
21370
  jsxBracketSameLine: {
21209
21371
  category: CATEGORY_JAVASCRIPT,
@@ -21218,6 +21380,22 @@ var options4 = {
21218
21380
  description: "Print semicolons.",
21219
21381
  oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them."
21220
21382
  },
21383
+ experimentalOperatorPosition: {
21384
+ category: CATEGORY_JAVASCRIPT,
21385
+ type: "choice",
21386
+ default: "end",
21387
+ description: "Where to print operators when binary expressions wrap lines.",
21388
+ choices: [
21389
+ {
21390
+ value: "start",
21391
+ description: "Print operators at the start of new lines."
21392
+ },
21393
+ {
21394
+ value: "end",
21395
+ description: "Print operators at the end of previous lines."
21396
+ }
21397
+ ]
21398
+ },
21221
21399
  experimentalTernaries: {
21222
21400
  category: CATEGORY_JAVASCRIPT,
21223
21401
  type: "boolean",
@@ -21744,7 +21922,7 @@ var object_omit_default = omit;
21744
21922
  import * as doc from "./doc.mjs";
21745
21923
 
21746
21924
  // src/main/version.evaluate.cjs
21747
- var version_evaluate_default = "3.4.2";
21925
+ var version_evaluate_default = "3.5.0";
21748
21926
 
21749
21927
  // src/utils/public.js
21750
21928
  var public_exports = {};
@@ -22043,7 +22221,7 @@ var debugApis = {
22043
22221
  };
22044
22222
 
22045
22223
  // with-default-export:src/index.js
22046
- var src_default = src_exports;
22224
+ var src_default = index_exports;
22047
22225
  export {
22048
22226
  debugApis as __debug,
22049
22227
  sharedWithCli as __internal,