js-beautify 1.8.4 → 1.8.8

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 (39) hide show
  1. package/CHANGELOG.md +33 -10
  2. package/README.md +18 -15
  3. package/js/lib/beautifier.js +108 -46
  4. package/js/lib/beautifier.min.js +1 -1
  5. package/js/lib/beautify-css.js +12 -7
  6. package/js/lib/beautify-html.js +62 -39
  7. package/js/lib/beautify.js +56 -15
  8. package/js/lib/cli.js +5 -3
  9. package/js/lib/unpackers/javascriptobfuscator_unpacker.js +2 -2
  10. package/js/lib/unpackers/myobfuscate_unpacker.js +2 -2
  11. package/js/lib/unpackers/p_a_c_k_e_r_unpacker.js +1 -1
  12. package/js/lib/unpackers/urlencode_unpacker.js +2 -2
  13. package/js/src/cli.js +5 -3
  14. package/js/src/core/directives.js +1 -1
  15. package/js/src/core/inputscanner.js +1 -1
  16. package/js/src/core/options.js +4 -5
  17. package/js/src/core/output.js +1 -1
  18. package/js/src/core/token.js +1 -1
  19. package/js/src/core/tokenizer.js +1 -1
  20. package/js/src/core/tokenstream.js +1 -1
  21. package/js/src/css/beautifier.js +2 -2
  22. package/js/src/css/index.js +1 -1
  23. package/js/src/css/options.js +1 -1
  24. package/js/src/css/tokenizer.js +1 -1
  25. package/js/src/html/beautifier.js +46 -33
  26. package/js/src/html/index.js +1 -1
  27. package/js/src/html/options.js +2 -2
  28. package/js/src/html/tokenizer.js +1 -1
  29. package/js/src/index.js +1 -1
  30. package/js/src/javascript/acorn.js +1 -1
  31. package/js/src/javascript/beautifier.js +23 -2
  32. package/js/src/javascript/index.js +1 -1
  33. package/js/src/javascript/options.js +3 -1
  34. package/js/src/javascript/tokenizer.js +15 -8
  35. package/js/src/unpackers/javascriptobfuscator_unpacker.js +2 -2
  36. package/js/src/unpackers/myobfuscate_unpacker.js +2 -2
  37. package/js/src/unpackers/p_a_c_k_e_r_unpacker.js +1 -1
  38. package/js/src/unpackers/urlencode_unpacker.js +2 -2
  39. package/package.json +5 -5
@@ -306,4 +306,4 @@ Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) {
306
306
  }
307
307
  };
308
308
 
309
- module.exports.Output = Output;
309
+ module.exports.Output = Output;
@@ -51,4 +51,4 @@ function Token(type, text, newlines, whitespace_before) {
51
51
  }
52
52
 
53
53
 
54
- module.exports.Token = Token;
54
+ module.exports.Token = Token;
@@ -149,4 +149,4 @@ Tokenizer.prototype._readWhitespace = function() {
149
149
 
150
150
 
151
151
  module.exports.Tokenizer = Tokenizer;
152
- module.exports.TOKEN = TOKEN;
152
+ module.exports.TOKEN = TOKEN;
@@ -75,4 +75,4 @@ TokenStream.prototype.add = function(token) {
75
75
  this.__tokens_length += 1;
76
76
  };
77
77
 
78
- module.exports.TokenStream = TokenStream;
78
+ module.exports.TokenStream = TokenStream;
@@ -373,7 +373,7 @@ Beautifier.prototype.beautify = function() {
373
373
  this.print_string(this._ch);
374
374
  this.eatWhitespace();
375
375
  this._ch = this._input.next();
376
- if (this._ch === ')' || this._ch === '"' || this._ch !== '\'') {
376
+ if (this._ch === ')' || this._ch === '"' || this._ch === '\'') {
377
377
  this._input.back();
378
378
  parenLevel++;
379
379
  } else if (this._ch) {
@@ -435,4 +435,4 @@ Beautifier.prototype.beautify = function() {
435
435
  return sweetCode;
436
436
  };
437
437
 
438
- module.exports.Beautifier = Beautifier;
438
+ module.exports.Beautifier = Beautifier;
@@ -35,4 +35,4 @@ function css_beautify(source_text, options) {
35
35
  return beautifier.beautify();
36
36
  }
37
37
 
38
- module.exports = css_beautify;
38
+ module.exports = css_beautify;
@@ -43,4 +43,4 @@ Options.prototype = new BaseOptions();
43
43
 
44
44
 
45
45
 
46
- module.exports.Options = Options;
46
+ module.exports.Options = Options;
@@ -26,4 +26,4 @@
26
26
  SOFTWARE.
27
27
  */
28
28
 
29
- 'use strict';
29
+ 'use strict';
@@ -60,23 +60,25 @@ Printer.prototype.add_raw_token = function(token) {
60
60
  this._output.add_raw_token(token);
61
61
  };
62
62
 
63
- Printer.prototype.traverse_whitespace = function(raw_token) {
64
- if (raw_token.whitespace_before || raw_token.newlines) {
65
- var newlines = 0;
63
+ Printer.prototype.print_preserved_newlines = function(raw_token) {
64
+ var newlines = 0;
65
+ if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) {
66
+ newlines = raw_token.newlines ? 1 : 0;
67
+ }
66
68
 
67
- if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) {
68
- newlines = raw_token.newlines ? 1 : 0;
69
- }
69
+ if (this.preserve_newlines) {
70
+ newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1;
71
+ }
72
+ for (var n = 0; n < newlines; n++) {
73
+ this.print_newline(n > 0);
74
+ }
70
75
 
71
- if (this.preserve_newlines) {
72
- newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1;
73
- }
76
+ return newlines !== 0;
77
+ };
74
78
 
75
- if (newlines) {
76
- for (var n = 0; n < newlines; n++) {
77
- this.print_newline(n > 0);
78
- }
79
- } else {
79
+ Printer.prototype.traverse_whitespace = function(raw_token) {
80
+ if (raw_token.whitespace_before || raw_token.newlines) {
81
+ if (!this.print_preserved_newlines(raw_token)) {
80
82
  this._output.space_before_token = true;
81
83
  this.print_space_or_wrap(raw_token.text);
82
84
  }
@@ -241,6 +243,8 @@ function Beautifier(source_text, options, js_beautify, css_beautify) {
241
243
  this._is_wrap_attributes_force_expand_multiline = (this._options.wrap_attributes === 'force-expand-multiline');
242
244
  this._is_wrap_attributes_force_aligned = (this._options.wrap_attributes === 'force-aligned');
243
245
  this._is_wrap_attributes_aligned_multiple = (this._options.wrap_attributes === 'aligned-multiple');
246
+ this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, 'preserve'.length) === 'preserve';
247
+ this._is_wrap_attributes_preserve_aligned = (this._options.wrap_attributes === 'preserve-aligned');
244
248
  }
245
249
 
246
250
  Beautifier.prototype.beautify = function() {
@@ -339,25 +343,37 @@ Beautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_
339
343
  printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '');
340
344
  if (last_tag_token.is_unformatted) {
341
345
  printer.add_raw_token(raw_token);
346
+ } else if (last_tag_token.tag_start_char === '{' && raw_token.type === TOKEN.TEXT) {
347
+ // For the insides of handlebars allow newlines or a single space between open and contents
348
+ if (printer.print_preserved_newlines(raw_token)) {
349
+ printer.print_raw_text(raw_token.whitespace_before + raw_token.text);
350
+ } else {
351
+ printer.print_token(raw_token.text);
352
+ }
342
353
  } else {
343
- if (last_tag_token.tag_start_char === '<') {
344
- if (raw_token.type === TOKEN.ATTRIBUTE) {
345
- printer.set_space_before_token(true);
346
- last_tag_token.attr_count += 1;
347
- } else if (raw_token.type === TOKEN.EQUALS) { //no space before =
348
- printer.set_space_before_token(false);
349
- } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value
350
- printer.set_space_before_token(false);
351
- }
354
+ if (raw_token.type === TOKEN.ATTRIBUTE) {
355
+ printer.set_space_before_token(true);
356
+ last_tag_token.attr_count += 1;
357
+ } else if (raw_token.type === TOKEN.EQUALS) { //no space before =
358
+ printer.set_space_before_token(false);
359
+ } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value
360
+ printer.set_space_before_token(false);
352
361
  }
353
362
 
354
363
  if (printer._output.space_before_token && last_tag_token.tag_start_char === '<') {
364
+ // Allow the current attribute to wrap
365
+ // Set wrapped to true if the line is wrapped
355
366
  var wrapped = printer.print_space_or_wrap(raw_token.text);
356
367
  if (raw_token.type === TOKEN.ATTRIBUTE) {
357
- var indentAttrs = wrapped && !this._is_wrap_attributes_force;
368
+ if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) {
369
+ printer.traverse_whitespace(raw_token);
370
+ wrapped = wrapped || raw_token.newlines !== 0;
371
+ }
372
+ // Save whether we have wrapped any attributes
373
+ last_tag_token.has_wrapped_attrs = last_tag_token.has_wrapped_attrs || wrapped;
358
374
 
359
375
  if (this._is_wrap_attributes_force) {
360
- var force_first_attr_wrap = false;
376
+ var force_attr_wrap = last_tag_token.attr_count > 1;
361
377
  if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.attr_count === 1) {
362
378
  var is_only_attribute = true;
363
379
  var peek_index = 0;
@@ -371,17 +387,14 @@ Beautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_
371
387
  peek_index += 1;
372
388
  } while (peek_index < 4 && peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE);
373
389
 
374
- force_first_attr_wrap = !is_only_attribute;
390
+ force_attr_wrap = !is_only_attribute;
375
391
  }
376
392
 
377
- if (last_tag_token.attr_count > 1 || force_first_attr_wrap) {
393
+ if (force_attr_wrap) {
378
394
  printer.print_newline(false);
379
- indentAttrs = true;
395
+ last_tag_token.has_wrapped_attrs = true;
380
396
  }
381
397
  }
382
- if (indentAttrs) {
383
- last_tag_token.has_wrapped_attrs = true;
384
- }
385
398
  }
386
399
  }
387
400
  printer.print_token(raw_token.text);
@@ -465,7 +478,7 @@ Beautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_to
465
478
  }
466
479
 
467
480
  //indent attributes an auto, forced, aligned or forced-align line-wrap
468
- if (this._is_wrap_attributes_force_aligned || this._is_wrap_attributes_aligned_multiple) {
481
+ if (this._is_wrap_attributes_force_aligned || this._is_wrap_attributes_aligned_multiple || this._is_wrap_attributes_preserve_aligned) {
469
482
  parser_token.alignment_size = raw_token.text.length + 1;
470
483
  }
471
484
 
@@ -733,4 +746,4 @@ Beautifier.prototype._do_optional_end_element = function(parser_token) {
733
746
 
734
747
  };
735
748
 
736
- module.exports.Beautifier = Beautifier;
749
+ module.exports.Beautifier = Beautifier;
@@ -35,4 +35,4 @@ function style_html(html_source, options, js_beautify, css_beautify) {
35
35
  return beautifier.beautify();
36
36
  }
37
37
 
38
- module.exports = style_html;
38
+ module.exports = style_html;
@@ -39,7 +39,7 @@ function Options(options) {
39
39
 
40
40
  this.indent_handlebars = this._get_boolean('indent_handlebars', true);
41
41
  this.wrap_attributes = this._get_selection('wrap_attributes',
42
- ['auto', 'force', 'force-aligned', 'force-expand-multiline', 'aligned-multiple']);
42
+ ['auto', 'force', 'force-aligned', 'force-expand-multiline', 'aligned-multiple', 'preserve', 'preserve-aligned']);
43
43
  this.wrap_attributes_indent_size = this._get_number('wrap_attributes_indent_size', this.indent_size);
44
44
  this.extra_liners = this._get_array('extra_liners', ['head', 'body', '/html']);
45
45
 
@@ -79,4 +79,4 @@ Options.prototype = new BaseOptions();
79
79
 
80
80
 
81
81
 
82
- module.exports.Options = Options;
82
+ module.exports.Options = Options;
@@ -285,4 +285,4 @@ Tokenizer.prototype._read_content_word = function() {
285
285
  };
286
286
 
287
287
  module.exports.Tokenizer = Tokenizer;
288
- module.exports.TOKEN = TOKEN;
288
+ module.exports.TOKEN = TOKEN;
package/js/src/index.js CHANGED
@@ -40,4 +40,4 @@ function style_html(html_source, options, js, css) {
40
40
 
41
41
  module.exports.js = js_beautify;
42
42
  module.exports.css = css_beautify;
43
- module.exports.html = style_html;
43
+ module.exports.html = style_html;
@@ -53,4 +53,4 @@ exports.newline = /[\n\r\u2028\u2029]/;
53
53
  // in javascript, these two differ
54
54
  // in python they are the same, different methods are called on them
55
55
  exports.lineBreak = new RegExp('\r\n|' + exports.newline.source);
56
- exports.allLineBreaks = new RegExp(exports.lineBreak.source, 'g');
56
+ exports.allLineBreaks = new RegExp(exports.lineBreak.source, 'g');
@@ -473,7 +473,7 @@ Beautifier.prototype.start_of_statement = function(current_token) {
473
473
  var start = false;
474
474
  start = start || reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD;
475
475
  start = start || reserved_word(this._flags.last_token, 'do');
476
- start = start || (reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines);
476
+ start = start || (!(this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement)) && reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines;
477
477
  start = start || reserved_word(this._flags.last_token, 'else') &&
478
478
  !(reserved_word(current_token, 'if') && !current_token.comments_before);
479
479
  start = start || (this._flags.last_token.type === TOKEN.END_EXPR && (this._previous_flags.mode === MODE.ForInitializer || this._previous_flags.mode === MODE.Conditional));
@@ -567,6 +567,19 @@ Beautifier.prototype.handle_start_expr = function(current_token) {
567
567
  }
568
568
  } else if (this._flags.last_token.type === TOKEN.WORD) {
569
569
  this._output.space_before_token = false;
570
+
571
+ // function name() vs function name ()
572
+ // function* name() vs function* name ()
573
+ // async name() vs async name ()
574
+ if (this._options.space_after_named_function) {
575
+ // peek starts at next character so -1 is current token
576
+ var peek_back_three = this._tokens.peek(-4);
577
+ var peek_back_two = this._tokens.peek(-3);
578
+ if (reserved_array(peek_back_two, ['async', 'function']) ||
579
+ (reserved_array(peek_back_three, ['async', 'function']) && peek_back_two.text === '*')) {
580
+ this._output.space_before_token = true;
581
+ }
582
+ }
570
583
  } else {
571
584
  // Support preserving wrapped arrow function expressions
572
585
  // a.b('c',
@@ -776,6 +789,8 @@ Beautifier.prototype.handle_word = function(current_token) {
776
789
  if (current_token.type === TOKEN.RESERVED) {
777
790
  if (in_array(current_token.text, ['set', 'get']) && this._flags.mode !== MODE.ObjectLiteral) {
778
791
  current_token.type = TOKEN.WORD;
792
+ } else if (current_token.text === 'import' && this._tokens.peek().text === '(') {
793
+ current_token.type = TOKEN.WORD;
779
794
  } else if (in_array(current_token.text, ['as', 'from']) && !this._flags.import_block) {
780
795
  current_token.type = TOKEN.WORD;
781
796
  } else if (this._flags.mode === MODE.ObjectLiteral) {
@@ -866,6 +881,9 @@ Beautifier.prototype.handle_word = function(current_token) {
866
881
  this._output.space_before_token = true;
867
882
  } else if (reserved_word(this._flags.last_token, 'default') && this._last_last_text === 'export') {
868
883
  this._output.space_before_token = true;
884
+ } else if (this._flags.last_token.text === 'declare') {
885
+ // accomodates Typescript declare function formatting
886
+ this._output.space_before_token = true;
869
887
  } else {
870
888
  this.print_newline();
871
889
  }
@@ -954,6 +972,9 @@ Beautifier.prototype.handle_word = function(current_token) {
954
972
  if (reserved_array(this._flags.last_token, special_words)) {
955
973
  // no newline between 'return nnn'
956
974
  this._output.space_before_token = true;
975
+ } else if (this._flags.last_token.text === 'declare' && reserved_array(current_token, ['var', 'let', 'const'])) {
976
+ // accomodates Typescript declare formatting
977
+ this._output.space_before_token = true;
957
978
  } else if (this._flags.last_token.type !== TOKEN.END_EXPR) {
958
979
  if ((this._flags.last_token.type !== TOKEN.START_EXPR || !reserved_array(current_token, ['var', 'let', 'const'])) && this._flags.last_token.text !== ':') {
959
980
  // no need to force newline on 'var': for (var x = 0...)
@@ -1386,4 +1407,4 @@ Beautifier.prototype.handle_eof = function(current_token) {
1386
1407
  this.handle_whitespace_and_comments(current_token);
1387
1408
  };
1388
1409
 
1389
- module.exports.Beautifier = Beautifier;
1410
+ module.exports.Beautifier = Beautifier;
@@ -35,4 +35,4 @@ function js_beautify(js_source_text, options) {
35
35
  return beautifier.beautify();
36
36
  }
37
37
 
38
- module.exports = js_beautify;
38
+ module.exports = js_beautify;
@@ -69,6 +69,7 @@ function Options(options) {
69
69
  this.space_in_empty_paren = this._get_boolean('space_in_empty_paren');
70
70
  this.jslint_happy = this._get_boolean('jslint_happy');
71
71
  this.space_after_anon_function = this._get_boolean('space_after_anon_function');
72
+ this.space_after_named_function = this._get_boolean('space_after_named_function');
72
73
  this.keep_array_indentation = this._get_boolean('keep_array_indentation');
73
74
  this.space_before_conditional = this._get_boolean('space_before_conditional', true);
74
75
  this.unescape_strings = this._get_boolean('unescape_strings');
@@ -83,9 +84,10 @@ function Options(options) {
83
84
  if (this.jslint_happy) {
84
85
  this.space_after_anon_function = true;
85
86
  }
87
+
86
88
  }
87
89
  Options.prototype = new BaseOptions();
88
90
 
89
91
 
90
92
 
91
- module.exports.Options = Options;
93
+ module.exports.Options = Options;
@@ -87,6 +87,8 @@ punct = punct.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&");
87
87
  punct = punct.replace(/ /g, '|');
88
88
 
89
89
  var punct_pattern = new RegExp(punct, 'g');
90
+ var shebang_pattern = /#![^\n\r\u2028\u2029]*(?:\r\n|[\n\r\u2028\u2029])?/g;
91
+ var include_pattern = /#include[^\n\r\u2028\u2029]*(?:\r\n|[\n\r\u2028\u2029])?/g;
90
92
 
91
93
  // words which should always start on new line.
92
94
  var line_starters = 'continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export'.split(',');
@@ -213,18 +215,23 @@ Tokenizer.prototype._read_non_javascript = function(c) {
213
215
  var resulting_string = '';
214
216
 
215
217
  if (c === '#') {
216
- c = this._input.next();
218
+ if (this._is_first_token()) {
219
+ resulting_string = this._input.read(shebang_pattern);
217
220
 
218
- if (this._is_first_token() && this._input.peek() === '!') {
219
- // shebang
220
- resulting_string = c;
221
- while (this._input.hasNext() && c !== '\n') {
222
- c = this._input.next();
223
- resulting_string += c;
221
+ if (resulting_string) {
222
+ return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\n');
224
223
  }
224
+ }
225
+
226
+ // handles extendscript #includes
227
+ resulting_string = this._input.read(include_pattern);
228
+
229
+ if (resulting_string) {
225
230
  return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\n');
226
231
  }
227
232
 
233
+ c = this._input.next();
234
+
228
235
  // Spidermonkey-specific sharp variables for circular references. Considered obsolete.
229
236
  var sharp = '#';
230
237
  if (this._input.hasNext() && this._input.testChar(digit)) {
@@ -531,4 +538,4 @@ Tokenizer.prototype._read_string_recursive = function(delimiter, allow_unescaped
531
538
  module.exports.Tokenizer = Tokenizer;
532
539
  module.exports.TOKEN = TOKEN;
533
540
  module.exports.positionable_operators = positionable_operators.slice();
534
- module.exports.line_starters = line_starters.slice();
541
+ module.exports.line_starters = line_starters.slice();
@@ -27,7 +27,7 @@
27
27
 
28
28
  //
29
29
  // simple unpacker/deobfuscator for scripts messed up with javascriptobfuscator.com
30
- // written by Einar Lielmanis <einar@jsbeautifier.org>
30
+ // written by Einar Lielmanis <einar@beautifier.io>
31
31
  //
32
32
  // usage:
33
33
  //
@@ -129,4 +129,4 @@ var JavascriptObfuscator = {
129
129
  }
130
130
 
131
131
 
132
- };
132
+ };
@@ -43,7 +43,7 @@
43
43
 
44
44
  */
45
45
  //
46
- // written by Einar Lielmanis <einar@jsbeautifier.org>
46
+ // written by Einar Lielmanis <einar@beautifier.io>
47
47
  //
48
48
  // usage:
49
49
  //
@@ -116,4 +116,4 @@ var MyObfuscate = {
116
116
  }
117
117
 
118
118
 
119
- };
119
+ };
@@ -108,4 +108,4 @@ var P_A_C_K_E_R = {
108
108
  }
109
109
 
110
110
 
111
- };
111
+ };
@@ -30,7 +30,7 @@
30
30
 
31
31
  //
32
32
  // trivial bookmarklet/escaped script detector for the javascript beautifier
33
- // written by Einar Lielmanis <einar@jsbeautifier.org>
33
+ // written by Einar Lielmanis <einar@beautifier.io>
34
34
  //
35
35
  // usage:
36
36
  //
@@ -101,4 +101,4 @@ var Urlencoded = {
101
101
 
102
102
  if (isNode) {
103
103
  module.exports = Urlencoded;
104
- }
104
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "js-beautify",
3
- "version": "1.8.4",
4
- "description": "jsbeautifier.org for node",
3
+ "version": "1.8.8",
4
+ "description": "beautifier.io for node",
5
5
  "main": "js/index.js",
6
6
  "bin": {
7
7
  "css-beautify": "./js/bin/css-beautify.js",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "scripts": {},
23
23
  "bugs": "https://github.com/beautify-web/js-beautify/issues",
24
- "homepage": "http://jsbeautifier.org/",
24
+ "homepage": "https://beautifier.io/",
25
25
  "repository": {
26
26
  "type": "git",
27
27
  "url": "git://github.com/beautify-web/js-beautify.git"
@@ -31,7 +31,7 @@
31
31
  "beautifier",
32
32
  "code-quality"
33
33
  ],
34
- "author": "Einar Lielmanis <einar@jsbeautifier.org>",
34
+ "author": "Einar Lielmanis <einar@beautifier.io>",
35
35
  "contributors": [
36
36
  "Vital Batmanov <vital76@gmail.com>",
37
37
  "Chris J. Shull <chrisjshull@gmail.com>",
@@ -41,7 +41,7 @@
41
41
  "Daniel Stockman <daniel.stockman@gmail.com>",
42
42
  "Harutyun Amirjanyan <amirjanyan@gmail.com>",
43
43
  "Nochum Sossonko <nsossonko@hotmail.com>",
44
- "Liam Newman <bitwiseman@gmail.com>"
44
+ "Liam Newman <bitwiseman@beautifier.io>"
45
45
  ],
46
46
  "license": "MIT",
47
47
  "dependencies": {