prettier-plugin-java 1.6.2 → 2.0.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.
Files changed (120) hide show
  1. package/dist/base-cst-printer.js +4 -3
  2. package/dist/cst-printer.js +1 -0
  3. package/dist/index.js +1 -0
  4. package/dist/options.js +2 -0
  5. package/dist/parser.js +1 -0
  6. package/dist/printer.js +1 -0
  7. package/dist/printers/arrays.js +4 -3
  8. package/dist/printers/blocks-and-statements.js +107 -102
  9. package/dist/printers/classes.js +152 -151
  10. package/dist/printers/comments/comments-utils.js +1 -0
  11. package/dist/printers/comments/format-comments.js +22 -13
  12. package/dist/printers/comments/handle-comments.js +2 -1
  13. package/dist/printers/expressions.js +128 -105
  14. package/dist/printers/interfaces.js +57 -56
  15. package/dist/printers/lexical-structure.js +5 -4
  16. package/dist/printers/names.js +9 -8
  17. package/dist/printers/packages-and-modules.js +73 -59
  18. package/dist/printers/prettier-builder.js +21 -12
  19. package/dist/printers/printer-utils.js +64 -56
  20. package/dist/printers/types-values-and-variables.js +44 -39
  21. package/dist/src/base-cst-printer.js +77 -0
  22. package/dist/src/cst-printer.js +37 -0
  23. package/dist/src/index.js +67 -0
  24. package/dist/src/options.js +256 -0
  25. package/dist/src/parser.js +7 -0
  26. package/dist/src/printer.js +28 -0
  27. package/dist/src/printers/arrays.js +49 -0
  28. package/dist/src/printers/blocks-and-statements.js +493 -0
  29. package/dist/src/printers/classes.js +724 -0
  30. package/dist/src/printers/comments/comments-utils.js +29 -0
  31. package/dist/src/printers/comments/format-comments.js +187 -0
  32. package/dist/src/printers/comments/handle-comments.js +38 -0
  33. package/dist/src/printers/expressions.js +549 -0
  34. package/dist/src/printers/interfaces.js +251 -0
  35. package/dist/src/printers/lexical-structure.js +43 -0
  36. package/dist/src/printers/names.js +53 -0
  37. package/dist/src/printers/packages-and-modules.js +185 -0
  38. package/dist/src/printers/prettier-builder.js +47 -0
  39. package/dist/src/printers/printer-utils.js +577 -0
  40. package/dist/src/printers/types-values-and-variables.js +183 -0
  41. package/dist/src/types/utils.js +29 -0
  42. package/dist/src/utils/expressions-utils.js +29 -0
  43. package/dist/src/utils/index.js +10 -0
  44. package/dist/src/utils/printArgumentListWithBraces.js +21 -0
  45. package/dist/src/utils/printSingleLambdaInvocation.js +20 -0
  46. package/dist/test/babel-register.js +3 -0
  47. package/dist/test/repository-test/core-test.js +12 -0
  48. package/dist/test/repository-test/jhipster-1-test.js +17 -0
  49. package/dist/test/repository-test/jhipster-2-test.js +16 -0
  50. package/dist/test/test-utils.js +215 -0
  51. package/dist/test/unit-test/annotation_type_declaration/annotation_type_declaration-spec.js +6 -0
  52. package/dist/test/unit-test/args/args-spec.js +6 -0
  53. package/dist/test/unit-test/assert/assert-spec.js +6 -0
  54. package/dist/test/unit-test/binary_expressions/binary_expressions-spec.js +6 -0
  55. package/dist/test/unit-test/blank_lines/blank_lines-spec.js +6 -0
  56. package/dist/test/unit-test/bug-fixes/bug-fixes-spec.js +6 -0
  57. package/dist/test/unit-test/cast/cast-spec.js +6 -0
  58. package/dist/test/unit-test/char_literal/char_literal-spec.js +6 -0
  59. package/dist/test/unit-test/classes/multiple_classes-spec.js +6 -0
  60. package/dist/test/unit-test/comments/comments-spec.js +14 -0
  61. package/dist/test/unit-test/complex_generic_class/complex_generic_class-spec.js +6 -0
  62. package/dist/test/unit-test/constructors/constructors-spec.js +6 -0
  63. package/dist/test/unit-test/empty_statement/empty_statement-spec.js +6 -0
  64. package/dist/test/unit-test/enum/enum-spec.js +6 -0
  65. package/dist/test/unit-test/expressions/expressions-spec.js +6 -0
  66. package/dist/test/unit-test/extends_abstract_class/extends_abstract_class-spec.js +6 -0
  67. package/dist/test/unit-test/extends_abstract_class_and_implements_interfaces/extends_abstract_class_and_implements_interfaces-spec.js +6 -0
  68. package/dist/test/unit-test/for/for-spec.js +6 -0
  69. package/dist/test/unit-test/generic_class/generic_class-spec.js +6 -0
  70. package/dist/test/unit-test/generic_questionmark/generic_questionmark-spec.js +6 -0
  71. package/dist/test/unit-test/hello-world/hello-word-spec.js +6 -0
  72. package/dist/test/unit-test/if/if-spec.js +6 -0
  73. package/dist/test/unit-test/indent/indent-spec.js +6 -0
  74. package/dist/test/unit-test/instantiation/instantiation-spec.js +6 -0
  75. package/dist/test/unit-test/interface/interface-spec.js +6 -0
  76. package/dist/test/unit-test/lambda/lambda-spec.js +6 -0
  77. package/dist/test/unit-test/marker_annotations/marker_annotations-spec.js +6 -0
  78. package/dist/test/unit-test/member_chain/member_chain-spec.js +6 -0
  79. package/dist/test/unit-test/method_reference/method_reference-spec.js +6 -0
  80. package/dist/test/unit-test/modifiers/modifiers-spec.js +6 -0
  81. package/dist/test/unit-test/modules/modules-spec.js +6 -0
  82. package/dist/test/unit-test/package_and_imports/package_and_imports-spec.js +34 -0
  83. package/dist/test/unit-test/pattern-matching/pattern-matching-spec.js +6 -0
  84. package/dist/test/unit-test/prettier-ignore/prettier-ignore-spec.js +28 -0
  85. package/dist/test/unit-test/records/records-spec.js +6 -0
  86. package/dist/test/unit-test/return/return-spec.js +6 -0
  87. package/dist/test/unit-test/sealed/sealed-spec.js +6 -0
  88. package/dist/test/unit-test/snippets/arrays/array-initializer.spec.js +94 -0
  89. package/dist/test/unit-test/snippets/arrays/variable-initializer-list.spec.js +19 -0
  90. package/dist/test/unit-test/snippets/blocks-and-statements/switch.spec.js +26 -0
  91. package/dist/test/unit-test/snippets/classes/class-body.spec.js +181 -0
  92. package/dist/test/unit-test/snippets/classes/enum-body.spec.js +87 -0
  93. package/dist/test/unit-test/snippets/classes/variableDeclarator/test.spec.js +186 -0
  94. package/dist/test/unit-test/snippets/interfaces/element-value-array-initializer.spec.js +85 -0
  95. package/dist/test/unit-test/snippets/names/ambiguousName/test.spec.js +19 -0
  96. package/dist/test/unit-test/snippets/names/expressionName/test.spec.js +19 -0
  97. package/dist/test/unit-test/snippets/names/methodName/test.spec.js +12 -0
  98. package/dist/test/unit-test/snippets/names/packageOrTypeName/test.spec.js +19 -0
  99. package/dist/test/unit-test/snippets/types-values-and-variables/floatingPointType/test.spec.js +19 -0
  100. package/dist/test/unit-test/snippets/types-values-and-variables/integralType/test.spec.js +40 -0
  101. package/dist/test/unit-test/snippets/types-values-and-variables/numericType/test.spec.js +88 -0
  102. package/dist/test/unit-test/snippets/types-values-and-variables/wildcard/test.spec.js +112 -0
  103. package/dist/test/unit-test/snippets/types-values-and-variables/wildcardBounds/test.spec.js +81 -0
  104. package/dist/test/unit-test/switch/switch-spec.js +6 -0
  105. package/dist/test/unit-test/synchronized/synchronized-spec.js +6 -0
  106. package/dist/test/unit-test/text-blocks/text-block-spec.js +6 -0
  107. package/dist/test/unit-test/throws/throws-spec.js +6 -0
  108. package/dist/test/unit-test/try_catch/try_catch-spec.js +6 -0
  109. package/dist/test/unit-test/types/types-spec.js +6 -0
  110. package/dist/test/unit-test/variables/variables-spec.js +6 -0
  111. package/dist/test/unit-test/while/while-spec.js +6 -0
  112. package/dist/test/unit-test/yield-statement/yield-statement-spec.js +6 -0
  113. package/dist/types/utils.js +1 -0
  114. package/dist/utils/expressions-utils.js +1 -0
  115. package/dist/utils/index.js +4 -1
  116. package/dist/utils/isEmptyDoc.js +7 -0
  117. package/dist/utils/printArgumentListWithBraces.js +3 -2
  118. package/dist/utils/printSingleLambdaInvocation.js +5 -4
  119. package/package.json +21 -21
  120. package/dist/utils/constants.js +0 -4
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ifBreak = exports.dedent = exports.indent = exports.fill = exports.group = exports.join = exports.concat = void 0;
2
4
  var prettier = require("prettier").doc.builders;
3
5
  var processComments = require("./comments/format-comments").processComments;
4
6
  /*
@@ -7,38 +9,45 @@ var processComments = require("./comments/format-comments").processComments;
7
9
  * ------------------------------------------------------------------
8
10
  */
9
11
  function concat(docs) {
10
- var concatenation = prettier.concat(processComments(docs));
11
- return concatenation.parts.length === 0 ? "" : concatenation;
12
+ var concatenation = processComments(docs);
13
+ if (!Array.isArray(docs)) {
14
+ return "";
15
+ }
16
+ return concatenation;
12
17
  }
18
+ exports.concat = concat;
13
19
  function join(sep, docs) {
14
20
  var concatenation = prettier.join(processComments(sep), processComments(docs));
15
- return concatenation.parts.length === 0 ? "" : concatenation;
21
+ return processEmptyDocs(concatenation);
16
22
  }
23
+ exports.join = join;
17
24
  function group(doc, opts) {
18
25
  var group = prettier.group(processComments(doc), opts);
19
26
  return group.contents === undefined ? "" : group;
20
27
  }
28
+ exports.group = group;
21
29
  function fill(docs) {
22
30
  var fill = prettier.fill(processComments(docs));
23
- return fill.parts.length === 0 ? "" : fill;
31
+ return processEmptyDocs(fill);
24
32
  }
33
+ exports.fill = fill;
25
34
  function indent(doc) {
26
35
  var indentedDoc = prettier.indent(processComments(doc));
27
36
  return indentedDoc.contents.length === 0 ? "" : indentedDoc;
28
37
  }
38
+ exports.indent = indent;
29
39
  function dedent(doc) {
30
40
  var indentedDoc = prettier.dedent(processComments(doc));
31
41
  return indentedDoc.contents.length === 0 ? "" : indentedDoc;
32
42
  }
43
+ exports.dedent = dedent;
33
44
  function ifBreak(breakContents, flatContents) {
34
45
  return prettier.ifBreak(processComments(breakContents), processComments(flatContents));
35
46
  }
36
- module.exports = {
37
- concat: concat,
38
- join: join,
39
- group: group,
40
- fill: fill,
41
- indent: indent,
42
- dedent: dedent,
43
- ifBreak: ifBreak
47
+ exports.ifBreak = ifBreak;
48
+ // TODO: remove this once prettier 3.0 is released
49
+ var processEmptyDocs = function (doc) {
50
+ var _a;
51
+ return ((_a = doc.parts) === null || _a === void 0 ? void 0 : _a.length) === 0 ? "" : doc;
44
52
  };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHRpZXItYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcmludGVycy9wcmV0dGllci1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBT2IsSUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFFMUMsSUFBQSxlQUFlLEdBQUssT0FBTyxDQUFDLDRCQUE0QixDQUFDLGdCQUExQyxDQUEyQztBQUVsRTs7OztHQUlHO0FBRUgsU0FBZ0IsTUFBTSxDQUFDLElBQXNCO0lBQzNDLElBQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU1QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQVJELHdCQVFDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLEdBQVEsRUFBRSxJQUFzQjtJQUNuRCxJQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUNqQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQ3BCLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FDdEIsQ0FBQztJQUVGLE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQVBELG9CQU9DO0FBRUQsU0FBZ0IsS0FBSyxDQUFDLEdBQWlCLEVBQUUsSUFBVTtJQUNqRCxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RCxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNuRCxDQUFDO0FBSEQsc0JBR0M7QUFFRCxTQUFnQixJQUFJLENBQUMsSUFBc0I7SUFDekMsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVsRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFKRCxvQkFJQztBQUVELFNBQWdCLE1BQU0sQ0FBQyxHQUFpQjtJQUN0QyxJQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUM5RCxDQUFDO0FBSEQsd0JBR0M7QUFFRCxTQUFnQixNQUFNLENBQUMsR0FBaUI7SUFDdEMsSUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDOUQsQ0FBQztBQUhELHdCQUdDO0FBRUQsU0FBZ0IsT0FBTyxDQUNyQixhQUEyQixFQUMzQixZQUEwQjtJQUUxQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQ3JCLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFDOUIsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUM5QixDQUFDO0FBQ0osQ0FBQztBQVJELDBCQVFDO0FBRUQsa0RBQWtEO0FBQ2xELElBQU0sZ0JBQWdCLEdBQUcsVUFBQyxHQUFrQjs7SUFDMUMsT0FBTyxDQUFBLE1BQUEsR0FBRyxDQUFDLEtBQUssMENBQUUsTUFBTSxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDNUMsQ0FBQyxDQUFDIn0=
@@ -10,28 +10,32 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
14
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
15
- to[j] = from[i];
16
- return to;
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
17
21
  };
18
22
  var __importDefault = (this && this.__importDefault) || function (mod) {
19
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
20
24
  };
21
25
  Object.defineProperty(exports, "__esModule", { value: true });
22
26
  exports.printArrayList = exports.isUniqueMethodInvocation = exports.sortImports = exports.isStatementEmptyStatement = exports.isShiftOperator = exports.separateTokensIntoGroups = exports.putIntoBraces = exports.getInterfaceBodyDeclarationsSeparator = exports.getClassBodyDeclarationsSeparator = exports.getBlankLinesSeparator = exports.isExplicitLambdaParameter = exports.displaySemicolon = exports.findDeepElementInPartsArray = exports.sortModifiers = exports.sortClassTypeChildren = exports.matchCategory = exports.sortNodes = exports.sortAnnotationIdentifier = exports.rejectAndConcat = exports.rejectAndJoin = exports.rejectSeparators = exports.reject = exports.rejectAndJoinSeps = exports.buildFqn = void 0;
27
+ var findIndex_1 = __importDefault(require("lodash/findIndex"));
28
+ var findLastIndex_1 = __importDefault(require("lodash/findLastIndex"));
23
29
  var forEach_1 = __importDefault(require("lodash/forEach"));
24
30
  var forEachRight_1 = __importDefault(require("lodash/forEachRight"));
25
- var findLastIndex_1 = __importDefault(require("lodash/findLastIndex"));
26
- var findIndex_1 = __importDefault(require("lodash/findIndex"));
27
31
  var includes_1 = __importDefault(require("lodash/includes"));
28
- var prettier_builder_1 = require("./prettier-builder");
29
- var format_comments_1 = require("./comments/format-comments");
30
- var comments_utils_1 = require("./comments/comments-utils");
31
32
  var doc_1 = require("prettier/doc");
32
33
  var utils_1 = require("../types/utils");
34
+ var utils_2 = require("../utils");
35
+ var comments_utils_1 = require("./comments/comments-utils");
36
+ var format_comments_1 = require("./comments/format-comments");
37
+ var prettier_builder_1 = require("./prettier-builder");
33
38
  var indent = doc_1.builders.indent, hardline = doc_1.builders.hardline, line = doc_1.builders.line;
34
- var isConcat = doc_1.utils.isConcat;
35
39
  var orderedModifiers = [
36
40
  "Public",
37
41
  "Protected",
@@ -65,7 +69,7 @@ function rejectAndJoinSeps(sepTokens, elems, sep) {
65
69
  }
66
70
  }
67
71
  res.push.apply(res, actualElements.slice(sepTokens.length));
68
- return prettier_builder_1.concat(res);
72
+ return (0, prettier_builder_1.concat)(res);
69
73
  }
70
74
  exports.rejectAndJoinSeps = rejectAndJoinSeps;
71
75
  function reject(elems) {
@@ -92,24 +96,24 @@ function rejectSeparators(separators, elems) {
92
96
  exports.rejectSeparators = rejectSeparators;
93
97
  function rejectAndJoin(sep, elems) {
94
98
  var actualElements = reject(elems);
95
- return prettier_builder_1.join(sep, actualElements);
99
+ return (0, prettier_builder_1.join)(sep, actualElements);
96
100
  }
97
101
  exports.rejectAndJoin = rejectAndJoin;
98
102
  function rejectAndConcat(elems) {
99
103
  var actualElements = reject(elems);
100
- return prettier_builder_1.concat(actualElements);
104
+ return (0, prettier_builder_1.concat)(actualElements);
101
105
  }
102
106
  exports.rejectAndConcat = rejectAndConcat;
103
107
  function sortAnnotationIdentifier(annotations, identifiers) {
104
- var tokens = __spreadArray([], identifiers);
108
+ var tokens = __spreadArray([], identifiers, true);
105
109
  if (annotations && annotations.length > 0) {
106
- tokens = __spreadArray(__spreadArray([], tokens), annotations);
110
+ tokens = __spreadArray(__spreadArray([], tokens, true), annotations, true);
107
111
  }
108
112
  return tokens.sort(function (a, b) {
109
- var startOffset1 = utils_1.isCstNode(a)
113
+ var startOffset1 = (0, utils_1.isCstNode)(a)
110
114
  ? a.children.At[0].startOffset
111
115
  : a.startOffset;
112
- var startOffset2 = utils_1.isCstNode(b)
116
+ var startOffset2 = (0, utils_1.isCstNode)(b)
113
117
  ? b.children.At[0].startOffset
114
118
  : b.startOffset;
115
119
  return startOffset1 - startOffset2;
@@ -118,7 +122,7 @@ function sortAnnotationIdentifier(annotations, identifiers) {
118
122
  exports.sortAnnotationIdentifier = sortAnnotationIdentifier;
119
123
  function sortTokens(values) {
120
124
  var tokens = [];
121
- forEach_1.default(values, function (argument) {
125
+ (0, forEach_1.default)(values, function (argument) {
122
126
  if (argument) {
123
127
  tokens = tokens.concat(argument);
124
128
  }
@@ -129,7 +133,7 @@ function sortTokens(values) {
129
133
  }
130
134
  function sortNodes(values) {
131
135
  var nodes = [];
132
- forEach_1.default(values, function (argument) {
136
+ (0, forEach_1.default)(values, function (argument) {
133
137
  if (argument) {
134
138
  nodes = nodes.concat(argument);
135
139
  }
@@ -149,23 +153,23 @@ function matchCategory(token, categoryName) {
149
153
  }
150
154
  exports.matchCategory = matchCategory;
151
155
  function sortClassTypeChildren(annotations, typeArguments, identifiers, dots) {
152
- var tokens = __spreadArray([], identifiers);
156
+ var tokens = __spreadArray([], identifiers, true);
153
157
  if (annotations && annotations.length > 0) {
154
- tokens = __spreadArray(__spreadArray([], tokens), annotations);
158
+ tokens = __spreadArray(__spreadArray([], tokens, true), annotations, true);
155
159
  }
156
160
  if (typeArguments && typeArguments.length > 0) {
157
- tokens = __spreadArray(__spreadArray([], tokens), typeArguments);
161
+ tokens = __spreadArray(__spreadArray([], tokens, true), typeArguments, true);
158
162
  }
159
163
  if (dots && dots.length > 0) {
160
- tokens = __spreadArray(__spreadArray([], tokens), dots);
164
+ tokens = __spreadArray(__spreadArray([], tokens, true), dots, true);
161
165
  }
162
166
  return tokens.sort(function (a, b) {
163
- var startOffsetA = utils_1.isCstNode(a)
167
+ var startOffsetA = (0, utils_1.isCstNode)(a)
164
168
  ? a.children.At
165
169
  ? a.children.At[0].startOffset
166
170
  : a.children.Less[0].startOffset
167
171
  : a.startOffset;
168
- var startOffsetB = utils_1.isCstNode(b)
172
+ var startOffsetB = (0, utils_1.isCstNode)(b)
169
173
  ? b.children.At
170
174
  ? b.children.At[0].startOffset
171
175
  : b.children.Less[0].startOffset
@@ -184,7 +188,7 @@ function sortModifiers(modifiers) {
184
188
  * method annotations which come after all other
185
189
  * modifiers
186
190
  */
187
- forEachRight_1.default(modifiers, function (modifier) {
191
+ (0, forEachRight_1.default)(modifiers, function (modifier) {
188
192
  var isAnnotation = modifier.children.annotation !== undefined;
189
193
  var isMethodAnnotation = isAnnotation &&
190
194
  (modifier.name === "methodModifier" ||
@@ -220,7 +224,7 @@ function sortModifiers(modifiers) {
220
224
  exports.sortModifiers = sortModifiers;
221
225
  function findDeepElementInPartsArray(item, elt) {
222
226
  if (Array.isArray(item)) {
223
- if (includes_1.default(item, elt)) {
227
+ if ((0, includes_1.default)(item, elt)) {
224
228
  return true;
225
229
  }
226
230
  for (var i = 0; i < item.length; i++) {
@@ -242,13 +246,13 @@ function findDeepElementInPartsArray(item, elt) {
242
246
  exports.findDeepElementInPartsArray = findDeepElementInPartsArray;
243
247
  function displaySemicolon(token, params) {
244
248
  if (params !== undefined && params.allowEmptyStatement) {
245
- return format_comments_1.printTokenWithComments(token);
249
+ return (0, format_comments_1.printTokenWithComments)(token);
246
250
  }
247
- if (!comments_utils_1.hasComments(token)) {
251
+ if (!(0, comments_utils_1.hasComments)(token)) {
248
252
  return "";
249
253
  }
250
254
  token.image = "";
251
- return format_comments_1.printTokenWithComments(token);
255
+ return (0, format_comments_1.printTokenWithComments)(token);
252
256
  }
253
257
  exports.displaySemicolon = displaySemicolon;
254
258
  function isExplicitLambdaParameter(ctx) {
@@ -262,20 +266,20 @@ exports.isExplicitLambdaParameter = isExplicitLambdaParameter;
262
266
  function getBlankLinesSeparator(ctx, separator) {
263
267
  if (separator === void 0) { separator = hardline; }
264
268
  if (ctx === undefined) {
265
- return undefined;
269
+ return [];
266
270
  }
267
271
  var separators = [];
268
272
  for (var i = 0; i < ctx.length - 1; i++) {
269
273
  var node = ctx[i];
270
- var previousRuleEndLineWithComment = comments_utils_1.hasTrailingComments(node)
274
+ var previousRuleEndLineWithComment = (0, comments_utils_1.hasTrailingComments)(node)
271
275
  ? node.trailingComments[node.trailingComments.length - 1].endLine
272
276
  : node.location.endLine;
273
277
  var nextNode = ctx[i + 1];
274
- var nextRuleStartLineWithComment = comments_utils_1.hasLeadingComments(nextNode)
278
+ var nextRuleStartLineWithComment = (0, comments_utils_1.hasLeadingComments)(nextNode)
275
279
  ? nextNode.leadingComments[0].startLine
276
280
  : nextNode.location.startLine;
277
281
  if (nextRuleStartLineWithComment - previousRuleEndLineWithComment > 1) {
278
- separators.push(prettier_builder_1.concat([hardline, hardline]));
282
+ separators.push([hardline, hardline]);
279
283
  }
280
284
  else {
281
285
  separators.push(separator);
@@ -284,6 +288,14 @@ function getBlankLinesSeparator(ctx, separator) {
284
288
  return separators;
285
289
  }
286
290
  exports.getBlankLinesSeparator = getBlankLinesSeparator;
291
+ var isTwoHardLine = function (userBlankLinesSeparator) {
292
+ if (!Array.isArray(userBlankLinesSeparator)) {
293
+ return false;
294
+ }
295
+ return (userBlankLinesSeparator.length === 2 &&
296
+ userBlankLinesSeparator[0] === hardline &&
297
+ userBlankLinesSeparator[1] === hardline);
298
+ };
287
299
  function getDeclarationsSeparator(declarations, needLineDeclaration, isSemicolon) {
288
300
  var declarationsWithoutEmptyStatements = declarations.filter(function (declaration) { return !isSemicolon(declaration); });
289
301
  var userBlankLinesSeparators = getBlankLinesSeparator(declarationsWithoutEmptyStatements);
@@ -294,22 +306,19 @@ function getDeclarationsSeparator(declarations, needLineDeclaration, isSemicolon
294
306
  // if the empty statement has comments
295
307
  // we want to print them on their own line
296
308
  if (isSemicolon(declarations[i])) {
297
- if (comments_utils_1.hasComments(declarations[i])) {
309
+ if ((0, comments_utils_1.hasComments)(declarations[i])) {
298
310
  separators.push(hardline);
299
311
  }
300
312
  }
301
313
  else if (indexNextNotEmptyDeclaration <
302
314
  declarationsWithoutEmptyStatements.length - 1) {
303
- var isTwoHardLines =
304
- // @ts-ignore
305
- userBlankLinesSeparators[indexNextNotEmptyDeclaration].parts[0].type ===
306
- "concat";
307
- var additionalSep = !isTwoHardLines &&
315
+ var isNextSeparatorTwoHardLine = isTwoHardLine(userBlankLinesSeparators[indexNextNotEmptyDeclaration]);
316
+ var additionalSep = !isNextSeparatorTwoHardLine &&
308
317
  (additionalBlankLines[indexNextNotEmptyDeclaration + 1] ||
309
318
  additionalBlankLines[indexNextNotEmptyDeclaration])
310
319
  ? hardline
311
320
  : "";
312
- separators.push(prettier_builder_1.concat([
321
+ separators.push((0, prettier_builder_1.concat)([
313
322
  userBlankLinesSeparators[indexNextNotEmptyDeclaration],
314
323
  additionalSep
315
324
  ]));
@@ -379,8 +388,8 @@ function hasAnnotation(modifiers) {
379
388
  * @returns {boolean}
380
389
  */
381
390
  function hasNonTrailingAnnotation(methodModifiers) {
382
- var firstAnnotationIndex = findIndex_1.default(methodModifiers, function (modifier) { return modifier.children.annotation !== undefined; });
383
- var lastNonAnnotationIndex = findLastIndex_1.default(methodModifiers, function (modifier) { return modifier.children.annotation === undefined; });
391
+ var firstAnnotationIndex = (0, findIndex_1.default)(methodModifiers, function (modifier) { return modifier.children.annotation !== undefined; });
392
+ var lastNonAnnotationIndex = (0, findLastIndex_1.default)(methodModifiers, function (modifier) { return modifier.children.annotation === undefined; });
384
393
  return (firstAnnotationIndex < lastNonAnnotationIndex ||
385
394
  lastNonAnnotationIndex === -1);
386
395
  }
@@ -393,7 +402,7 @@ function getInterfaceBodyDeclarationsSeparator(interfaceMemberDeclarationContext
393
402
  }
394
403
  exports.getInterfaceBodyDeclarationsSeparator = getInterfaceBodyDeclarationsSeparator;
395
404
  function putIntoBraces(argument, separator, LBrace, RBrace) {
396
- var rightBraceLeadingComments = format_comments_1.getTokenLeadingComments(RBrace);
405
+ var rightBraceLeadingComments = (0, format_comments_1.getTokenLeadingComments)(RBrace);
397
406
  var lastBreakLine =
398
407
  // check if last element of the array is a line
399
408
  rightBraceLeadingComments.length !== 0 &&
@@ -402,25 +411,25 @@ function putIntoBraces(argument, separator, LBrace, RBrace) {
402
411
  : separator;
403
412
  delete RBrace.leadingComments;
404
413
  var contentInsideBraces;
405
- if (argument === undefined || argument === "") {
414
+ if ((0, utils_2.isEmptyDoc)(argument)) {
406
415
  if (rightBraceLeadingComments.length === 0) {
407
- return prettier_builder_1.concat([LBrace, RBrace]);
416
+ return (0, prettier_builder_1.concat)([LBrace, RBrace]);
408
417
  }
409
- contentInsideBraces = __spreadArray([separator], rightBraceLeadingComments);
418
+ contentInsideBraces = __spreadArray([separator], rightBraceLeadingComments, true);
410
419
  }
411
420
  else if (rightBraceLeadingComments.length !== 0) {
412
421
  contentInsideBraces = __spreadArray([
413
422
  separator,
414
423
  argument,
415
424
  separator
416
- ], rightBraceLeadingComments);
425
+ ], rightBraceLeadingComments, true);
417
426
  }
418
427
  else {
419
428
  contentInsideBraces = [separator, argument];
420
429
  }
421
- return prettier_builder_1.group(rejectAndConcat([
430
+ return (0, prettier_builder_1.group)(rejectAndConcat([
422
431
  LBrace,
423
- indent(prettier_builder_1.concat(contentInsideBraces)),
432
+ indent((0, prettier_builder_1.concat)(contentInsideBraces)),
424
433
  lastBreakLine,
425
434
  RBrace
426
435
  ]));
@@ -444,7 +453,7 @@ function separateTokensIntoGroups(ctx) {
444
453
  var tmpGroup = [];
445
454
  tokens.forEach(function (token) {
446
455
  if (matchCategory(token, "'BinaryOperator'") &&
447
- includes_1.default(andOrBinaryOperators, token.image)) {
456
+ (0, includes_1.default)(andOrBinaryOperators, token.image)) {
448
457
  sortedBinaryOperators.push(token);
449
458
  groupsOfOperator.push(tmpGroup);
450
459
  tmpGroup = [];
@@ -483,9 +492,7 @@ function isShiftOperator(tokens, index) {
483
492
  }
484
493
  exports.isShiftOperator = isShiftOperator;
485
494
  function isStatementEmptyStatement(statement) {
486
- return (statement === ";" ||
487
- // @ts-ignore
488
- (isConcat(statement) && statement.parts[0] === ";"));
495
+ return (statement === ";" || (Array.isArray(statement) && statement[0] === ";"));
489
496
  }
490
497
  exports.isStatementEmptyStatement = isStatementEmptyStatement;
491
498
  function sortImports(imports) {
@@ -554,8 +561,8 @@ function printArrayList(_a) {
554
561
  var optionalComma;
555
562
  if (trailingComma !== "none" && list !== "") {
556
563
  optionalComma = extraComma
557
- ? prettier_builder_1.ifBreak(extraComma[0], __assign(__assign({}, extraComma[0]), { image: "" }))
558
- : prettier_builder_1.ifBreak(",", "");
564
+ ? (0, prettier_builder_1.ifBreak)(extraComma[0], __assign(__assign({}, extraComma[0]), { image: "" }))
565
+ : (0, prettier_builder_1.ifBreak)(",", "");
559
566
  }
560
567
  else {
561
568
  optionalComma = extraComma ? __assign(__assign({}, extraComma[0]), { image: "" }) : "";
@@ -563,3 +570,4 @@ function printArrayList(_a) {
563
570
  return putIntoBraces(rejectAndConcat([list, optionalComma]), line, LCurly, RCurly);
564
571
  }
565
572
  exports.printArrayList = printArrayList;
573
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRlci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcmludGVycy9wcmludGVyLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLCtEQUF5QztBQUN6Qyx1RUFBaUQ7QUFDakQsMkRBQXFDO0FBQ3JDLHFFQUErQztBQUMvQyw2REFBdUM7QUFFdkMsb0NBQXdDO0FBQ3hDLHdDQUEyQztBQUMzQyxrQ0FBc0M7QUFDdEMsNERBSW1DO0FBQ25DLDhEQUdvQztBQUVwQyx1REFBa0U7QUFFMUQsSUFBQSxNQUFNLEdBQXFCLGNBQVEsT0FBN0IsRUFBRSxRQUFRLEdBQVcsY0FBUSxTQUFuQixFQUFFLElBQUksR0FBSyxjQUFRLEtBQWIsQ0FBYztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLFFBQVE7SUFDUixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsUUFBUTtJQUNSLE9BQU87SUFDUCxXQUFXO0lBQ1gsVUFBVTtJQUNWLGNBQWM7SUFDZCxRQUFRO0lBQ1IsUUFBUTtJQUNSLFdBQVc7SUFDWCxVQUFVO0NBQ1gsQ0FBQztBQUVGLFNBQWdCLFFBQVEsQ0FBQyxNQUFnQixFQUFFLElBQTBCO0lBQ25FLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsU0FBdUMsRUFDdkMsS0FBbUMsRUFDbkMsR0FBWTtJQUVaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4QztJQUNELElBQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENB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