terser 5.14.0 → 5.14.1
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.md +4 -0
- package/dist/bundle.min.js +18 -8
- package/lib/ast.js +9 -0
- package/lib/parse.js +9 -8
- package/package.json +1 -1
- package/tools/terser.d.ts +1 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v5.14.1
|
4
|
+
- keep_numbers option added to TypeScript defs (#1208)
|
5
|
+
- Fixed parsing of nested template strings (#1204)
|
6
|
+
|
3
7
|
## v5.14.0
|
4
8
|
- Switched to @jridgewell/source-map for sourcemap generation (#1190, #1181)
|
5
9
|
- Fixed source maps with non-terminated segments (#1106)
|
package/dist/bundle.min.js
CHANGED
@@ -323,7 +323,7 @@ function set_annotation(node, annotation) {
|
|
323
323
|
***********************************************************************/
|
324
324
|
|
325
325
|
var LATEST_RAW = ""; // Only used for numbers and template strings
|
326
|
-
var
|
326
|
+
var TEMPLATE_RAWS = new Map(); // Raw template strings
|
327
327
|
|
328
328
|
var KEYWORDS = "break case catch class const continue debugger default delete do else export extends finally for function if in instanceof let new return switch throw try typeof var void while with";
|
329
329
|
var KEYWORDS_ATOM = "false null true";
|
@@ -854,8 +854,8 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
|
|
854
854
|
next(true, true);
|
855
855
|
S.brace_counter++;
|
856
856
|
tok = token(begin ? "template_head" : "template_substitution", content);
|
857
|
-
|
858
|
-
|
857
|
+
TEMPLATE_RAWS.set(tok, raw);
|
858
|
+
tok.template_end = false;
|
859
859
|
return tok;
|
860
860
|
}
|
861
861
|
|
@@ -871,8 +871,8 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
|
|
871
871
|
}
|
872
872
|
S.template_braces.pop();
|
873
873
|
tok = token(begin ? "template_head" : "template_substitution", content);
|
874
|
-
|
875
|
-
|
874
|
+
TEMPLATE_RAWS.set(tok, raw);
|
875
|
+
tok.template_end = true;
|
876
876
|
return tok;
|
877
877
|
});
|
878
878
|
|
@@ -2528,19 +2528,19 @@ function parse($TEXT, options) {
|
|
2528
2528
|
|
2529
2529
|
segments.push(new AST_TemplateSegment({
|
2530
2530
|
start: S.token,
|
2531
|
-
raw:
|
2531
|
+
raw: TEMPLATE_RAWS.get(S.token),
|
2532
2532
|
value: S.token.value,
|
2533
2533
|
end: S.token
|
2534
2534
|
}));
|
2535
2535
|
|
2536
|
-
while (!
|
2536
|
+
while (!S.token.template_end) {
|
2537
2537
|
next();
|
2538
2538
|
handle_regexp();
|
2539
2539
|
segments.push(expression(true));
|
2540
2540
|
|
2541
2541
|
segments.push(new AST_TemplateSegment({
|
2542
2542
|
start: S.token,
|
2543
|
-
raw:
|
2543
|
+
raw: TEMPLATE_RAWS.get(S.token),
|
2544
2544
|
value: S.token.value,
|
2545
2545
|
end: S.token
|
2546
2546
|
}));
|
@@ -3503,6 +3503,7 @@ function parse($TEXT, options) {
|
|
3503
3503
|
} else {
|
3504
3504
|
toplevel = new AST_Toplevel({ start: start, body: body, end: end });
|
3505
3505
|
}
|
3506
|
+
TEMPLATE_RAWS = new Map();
|
3506
3507
|
return toplevel;
|
3507
3508
|
})();
|
3508
3509
|
|
@@ -3596,6 +3597,7 @@ const set_tok_flag = (tok, flag, truth) => {
|
|
3596
3597
|
const TOK_FLAG_NLB = 0b0001;
|
3597
3598
|
const TOK_FLAG_QUOTE_SINGLE = 0b0010;
|
3598
3599
|
const TOK_FLAG_QUOTE_EXISTS = 0b0100;
|
3600
|
+
const TOK_FLAG_TEMPLATE_END = 0b1000;
|
3599
3601
|
|
3600
3602
|
class AST_Token {
|
3601
3603
|
constructor(type, value, line, col, pos, nlb, comments_before, comments_after, file) {
|
@@ -3631,6 +3633,14 @@ class AST_Token {
|
|
3631
3633
|
set_tok_flag(this, TOK_FLAG_QUOTE_SINGLE, quote_type === "'");
|
3632
3634
|
set_tok_flag(this, TOK_FLAG_QUOTE_EXISTS, !!quote_type);
|
3633
3635
|
}
|
3636
|
+
|
3637
|
+
get template_end() {
|
3638
|
+
return has_tok_flag(this, TOK_FLAG_TEMPLATE_END);
|
3639
|
+
}
|
3640
|
+
|
3641
|
+
set template_end(new_template_end) {
|
3642
|
+
set_tok_flag(this, TOK_FLAG_TEMPLATE_END, new_template_end);
|
3643
|
+
}
|
3634
3644
|
}
|
3635
3645
|
|
3636
3646
|
var AST_Node = DEFNODE("Node", "start end", function AST_Node(props) {
|
package/lib/ast.js
CHANGED
@@ -93,6 +93,7 @@ const set_tok_flag = (tok, flag, truth) => {
|
|
93
93
|
const TOK_FLAG_NLB = 0b0001;
|
94
94
|
const TOK_FLAG_QUOTE_SINGLE = 0b0010;
|
95
95
|
const TOK_FLAG_QUOTE_EXISTS = 0b0100;
|
96
|
+
const TOK_FLAG_TEMPLATE_END = 0b1000;
|
96
97
|
|
97
98
|
class AST_Token {
|
98
99
|
constructor(type, value, line, col, pos, nlb, comments_before, comments_after, file) {
|
@@ -128,6 +129,14 @@ class AST_Token {
|
|
128
129
|
set_tok_flag(this, TOK_FLAG_QUOTE_SINGLE, quote_type === "'");
|
129
130
|
set_tok_flag(this, TOK_FLAG_QUOTE_EXISTS, !!quote_type);
|
130
131
|
}
|
132
|
+
|
133
|
+
get template_end() {
|
134
|
+
return has_tok_flag(this, TOK_FLAG_TEMPLATE_END);
|
135
|
+
}
|
136
|
+
|
137
|
+
set template_end(new_template_end) {
|
138
|
+
set_tok_flag(this, TOK_FLAG_TEMPLATE_END, new_template_end);
|
139
|
+
}
|
131
140
|
}
|
132
141
|
|
133
142
|
var AST_Node = DEFNODE("Node", "start end", function AST_Node(props) {
|
package/lib/parse.js
CHANGED
@@ -162,7 +162,7 @@ import {
|
|
162
162
|
} from "./ast.js";
|
163
163
|
|
164
164
|
var LATEST_RAW = ""; // Only used for numbers and template strings
|
165
|
-
var
|
165
|
+
var TEMPLATE_RAWS = new Map(); // Raw template strings
|
166
166
|
|
167
167
|
var KEYWORDS = "break case catch class const continue debugger default delete do else export extends finally for function if in instanceof let new return switch throw try typeof var void while with";
|
168
168
|
var KEYWORDS_ATOM = "false null true";
|
@@ -693,8 +693,8 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
|
|
693
693
|
next(true, true);
|
694
694
|
S.brace_counter++;
|
695
695
|
tok = token(begin ? "template_head" : "template_substitution", content);
|
696
|
-
|
697
|
-
|
696
|
+
TEMPLATE_RAWS.set(tok, raw);
|
697
|
+
tok.template_end = false;
|
698
698
|
return tok;
|
699
699
|
}
|
700
700
|
|
@@ -710,8 +710,8 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
|
|
710
710
|
}
|
711
711
|
S.template_braces.pop();
|
712
712
|
tok = token(begin ? "template_head" : "template_substitution", content);
|
713
|
-
|
714
|
-
|
713
|
+
TEMPLATE_RAWS.set(tok, raw);
|
714
|
+
tok.template_end = true;
|
715
715
|
return tok;
|
716
716
|
});
|
717
717
|
|
@@ -2367,19 +2367,19 @@ function parse($TEXT, options) {
|
|
2367
2367
|
|
2368
2368
|
segments.push(new AST_TemplateSegment({
|
2369
2369
|
start: S.token,
|
2370
|
-
raw:
|
2370
|
+
raw: TEMPLATE_RAWS.get(S.token),
|
2371
2371
|
value: S.token.value,
|
2372
2372
|
end: S.token
|
2373
2373
|
}));
|
2374
2374
|
|
2375
|
-
while (!
|
2375
|
+
while (!S.token.template_end) {
|
2376
2376
|
next();
|
2377
2377
|
handle_regexp();
|
2378
2378
|
segments.push(expression(true));
|
2379
2379
|
|
2380
2380
|
segments.push(new AST_TemplateSegment({
|
2381
2381
|
start: S.token,
|
2382
|
-
raw:
|
2382
|
+
raw: TEMPLATE_RAWS.get(S.token),
|
2383
2383
|
value: S.token.value,
|
2384
2384
|
end: S.token
|
2385
2385
|
}));
|
@@ -3342,6 +3342,7 @@ function parse($TEXT, options) {
|
|
3342
3342
|
} else {
|
3343
3343
|
toplevel = new AST_Toplevel({ start: start, body: body, end: end });
|
3344
3344
|
}
|
3345
|
+
TEMPLATE_RAWS = new Map();
|
3345
3346
|
return toplevel;
|
3346
3347
|
})();
|
3347
3348
|
|
package/package.json
CHANGED