@putout/printer 2.79.0 → 2.81.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/ChangeLog CHANGED
@@ -1,3 +1,13 @@
1
+ 2023.07.21, v2.81.0
2
+
3
+ feature:
4
+ - dddf2b5 @putout/printer: TSExternalModuleReference
5
+
6
+ 2023.07.20, v2.80.0
7
+
8
+ feature:
9
+ - 25cdb60 @putout/printer: SwitchStatement: format
10
+
1
11
  2023.07.20, v2.79.0
2
12
 
3
13
  feature:
@@ -36,8 +36,9 @@ module.exports.parseLeadingComments = (path, {print, maybe, indent}, semantics)
36
36
  maybe.print.space(isProperty);
37
37
  print(`//${value}`);
38
38
 
39
- maybe.print.breakline(isProperty);
40
- maybe.print.newline(!isProperty);
39
+ const isParentSwitch = path.parentPath.isSwitchCase();
40
+ maybe.print.breakline(isProperty || isParentSwitch);
41
+ maybe.print.newline(!isProperty && !isParentSwitch);
41
42
  continue;
42
43
  }
43
44
 
@@ -8,6 +8,7 @@ const {
8
8
 
9
9
  const {hasPrevNewline} = require('../../mark');
10
10
  const {maybeSpaceAfterKeyword} = require('./maybe-space-after-keyword');
11
+
11
12
  const isBodyLength = ({parentPath}) => parentPath.node?.body?.length > 2;
12
13
 
13
14
  module.exports.ReturnStatement = {
@@ -24,7 +25,6 @@ module.exports.ReturnStatement = {
24
25
  print,
25
26
  });
26
27
  print('__argument');
27
-
28
28
  print(';');
29
29
  },
30
30
  afterIf: (path) => {
@@ -74,6 +74,6 @@ module.exports.SwitchStatement = {
74
74
  afterSatisfy: () => [isNext],
75
75
  after(path, {print}) {
76
76
  print.breakline();
77
- print.breakline();
77
+ print.newline();
78
78
  },
79
79
  };
@@ -17,6 +17,8 @@ const {parseLeadingComments} = require('../../comment/comment');
17
17
 
18
18
  const isParentBlock = (path) => /Program|BlockStatement|Export/.test(path.parentPath.type);
19
19
  const isInsideBlock = (path) => /^(Program|BlockStatement)$/.test(path.parentPath.type);
20
+ const isParentSwitchCase = (path) => path.parentPath.isSwitchCase();
21
+ const isFirstInSwitch = (path) => path.parentPath.get('consequent.0') === path;
20
22
 
21
23
  module.exports.VariableDeclaration = {
22
24
  beforeIf: shouldAddNewlineBefore,
@@ -72,10 +74,17 @@ module.exports.VariableDeclaration = {
72
74
  }
73
75
 
74
76
  maybe.indent.dec(n);
75
- maybe.write(isParentBlock(path), ';');
77
+ maybe.write(isParentBlock(path) || isParentSwitchCase(path), ';');
76
78
 
77
79
  let wasNewline = false;
78
80
 
81
+ if (isParentSwitchCase(path) && !isFirstInSwitch(path)) {
82
+ write.newline();
83
+ wasNewline = true;
84
+ } else if (isParentSwitchCase(path)) {
85
+ write.breakline();
86
+ }
87
+
79
88
  if (isParentBlock(path) && isNext(path) && (noTrailingComment(path) || isNewlineBetweenSiblings(path))) {
80
89
  write.newline();
81
90
  wasNewline = true;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const {exists} = require('../is');
3
+ const {exists, isNext} = require('../is');
4
4
  const {TSTypeLiteral} = require('./ts-type-literal');
5
5
  const {TSTypeAliasDeclaration} = require('./ts-type-alias-declaration');
6
6
  const {TSMappedType} = require('./ts-mapped-type');
@@ -243,7 +243,7 @@ module.exports = {
243
243
  },
244
244
  TSEnumDeclaration,
245
245
  TSEnumMember,
246
- TSImportEqualsDeclaration(path, {print}) {
246
+ TSImportEqualsDeclaration(path, {print, maybe}) {
247
247
  print('import ');
248
248
  print('__id');
249
249
  print.space();
@@ -251,6 +251,12 @@ module.exports = {
251
251
  print.space();
252
252
  print('__moduleReference');
253
253
  print(';');
254
- print.newline();
254
+ maybe.print.newline(isNext(path));
255
+ },
256
+ TSExternalModuleReference(path, {print}) {
257
+ print('require(');
258
+ print('__expression');
259
+ print(')');
255
260
  },
256
261
  };
262
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putout/printer",
3
- "version": "2.79.0",
3
+ "version": "2.81.0",
4
4
  "type": "commonjs",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "Simplest possible opinionated Babel AST printer for 🐊Putout",