From 23b60dc1975db38c280d8a123aff97544d1673e0 Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期四, 09 六月 2022 15:34:21 +0800 Subject: [PATCH] TODO#139890 FAQ 常見問題 1-文案調整 --- PAMapp/node_modules/terser-webpack-plugin/node_modules/terser/lib/parse.js | 146 +++++++++++++++++++++++++++--------------------- 1 files changed, 82 insertions(+), 64 deletions(-) diff --git a/PAMapp/node_modules/terser-webpack-plugin/node_modules/terser/lib/parse.js b/PAMapp/node_modules/terser-webpack-plugin/node_modules/terser/lib/parse.js index 55333b5..c99016a 100644 --- a/PAMapp/node_modules/terser-webpack-plugin/node_modules/terser/lib/parse.js +++ b/PAMapp/node_modules/terser-webpack-plugin/node_modules/terser/lib/parse.js @@ -1222,7 +1222,7 @@ } if (S.token.value == "import" && !is_token(peek(), "punc", "(") && !is_token(peek(), "punc", ".")) { next(); - var node = import_(); + var node = import_statement(); semicolon(); return node; } @@ -1374,7 +1374,7 @@ case "export": if (!is_token(peek(), "punc", "(")) { next(); - var node = export_(); + var node = export_statement(); if (is("punc", ";")) semicolon(); return node; } @@ -1572,66 +1572,66 @@ }); }; - function track_used_binding_identifiers(is_parameter, strict) { - var parameters = new Set(); - var duplicate = false; - var default_assignment = false; - var spread = false; - var strict_mode = !!strict; - var tracker = { - add_parameter: function(token) { - if (parameters.has(token.value)) { - if (duplicate === false) { - duplicate = token; - } - tracker.check_strict(); - } else { - parameters.add(token.value); - if (is_parameter) { - switch (token.value) { - case "arguments": - case "eval": - case "yield": - if (strict_mode) { - token_error(token, "Unexpected " + token.value + " identifier as parameter inside strict mode"); - } - break; - default: - if (RESERVED_WORDS.has(token.value)) { - unexpected(); - } + class UsedParametersTracker { + constructor(is_parameter, strict, duplicates_ok = false) { + this.is_parameter = is_parameter; + this.duplicates_ok = duplicates_ok; + this.parameters = new Set(); + this.duplicate = null; + this.default_assignment = false; + this.spread = false; + this.strict_mode = !!strict; + } + add_parameter(token) { + if (this.parameters.has(token.value)) { + if (this.duplicate === null) { + this.duplicate = token; + } + this.check_strict(); + } else { + this.parameters.add(token.value); + if (this.is_parameter) { + switch (token.value) { + case "arguments": + case "eval": + case "yield": + if (this.strict_mode) { + token_error(token, "Unexpected " + token.value + " identifier as parameter inside strict mode"); + } + break; + default: + if (RESERVED_WORDS.has(token.value)) { + unexpected(); } } } - }, - mark_default_assignment: function(token) { - if (default_assignment === false) { - default_assignment = token; - } - }, - mark_spread: function(token) { - if (spread === false) { - spread = token; - } - }, - mark_strict_mode: function() { - strict_mode = true; - }, - is_strict: function() { - return default_assignment !== false || spread !== false || strict_mode; - }, - check_strict: function() { - if (tracker.is_strict() && duplicate !== false) { - token_error(duplicate, "Parameter " + duplicate.value + " was used already"); - } } - }; - - return tracker; + } + mark_default_assignment(token) { + if (this.default_assignment === false) { + this.default_assignment = token; + } + } + mark_spread(token) { + if (this.spread === false) { + this.spread = token; + } + } + mark_strict_mode() { + this.strict_mode = true; + } + is_strict() { + return this.default_assignment !== false || this.spread !== false || this.strict_mode; + } + check_strict() { + if (this.is_strict() && this.duplicate !== null && !this.duplicates_ok) { + token_error(this.duplicate, "Parameter " + this.duplicate.value + " was used already"); + } + } } function parameters(params) { - var used_parameters = track_used_binding_identifiers(true, S.input.has_directive("use strict")); + var used_parameters = new UsedParametersTracker(true, S.input.has_directive("use strict")); expect("("); @@ -1655,7 +1655,7 @@ var param; var expand = false; if (used_parameters === undefined) { - used_parameters = track_used_binding_identifiers(true, S.input.has_directive("use strict")); + used_parameters = new UsedParametersTracker(true, S.input.has_directive("use strict")); } if (is("expand", "...")) { expand = S.token; @@ -1698,7 +1698,9 @@ var expand_token; var first_token = S.token; if (used_parameters === undefined) { - used_parameters = track_used_binding_identifiers(false, S.input.has_directive("use strict")); + const strict = S.input.has_directive("use strict"); + const duplicates_ok = symbol_type === AST_SymbolVar; + used_parameters = new UsedParametersTracker(false, strict, duplicates_ok); } symbol_type = symbol_type === undefined ? AST_SymbolFunarg : symbol_type; if (is("punc", "[")) { @@ -2091,7 +2093,7 @@ if (is("punc", "{") || is("punc", "[")) { def = new AST_VarDef({ start: S.token, - name: binding_element(undefined ,sym_type), + name: binding_element(undefined, sym_type), value: is("operator", "=") ? (expect_token("operator", "="), expression(false, no_in)) : null, end: prev() }); @@ -2551,7 +2553,7 @@ }; const is_not_method_start = () => - !is("punc", "(") && !is("punc", ",") && !is("punc", "}") && !is("operator", "="); + !is("punc", "(") && !is("punc", ",") && !is("punc", "}") && !is("punc", ";") && !is("operator", "="); var is_async = false; var is_static = false; @@ -2666,7 +2668,15 @@ } } - function import_() { + function maybe_import_assertion() { + if (is("name", "assert") && !has_newline_before(S.token)) { + next(); + return object_or_destructuring_(); + } + return null; + } + + function import_statement() { var start = prev(); var imported_name; @@ -2689,16 +2699,20 @@ unexpected(); } next(); + + const assert_clause = maybe_import_assertion(); + return new AST_Import({ - start: start, - imported_name: imported_name, - imported_names: imported_names, + start, + imported_name, + imported_names, module_name: new AST_String({ start: mod_str, value: mod_str.value, quote: mod_str.quote, end: mod_str, }), + assert_clause, end: S.token, }); } @@ -2806,7 +2820,7 @@ return names; } - function export_() { + function export_statement() { var start = S.token; var is_default; var exported_names; @@ -2824,6 +2838,8 @@ } next(); + const assert_clause = maybe_import_assertion(); + return new AST_Export({ start: start, is_default: is_default, @@ -2835,6 +2851,7 @@ end: mod_str, }), end: prev(), + assert_clause }); } else { return new AST_Export({ @@ -2880,6 +2897,7 @@ exported_value: exported_value, exported_definition: exported_definition, end: prev(), + assert_clause: null }); } -- Gitblit v1.8.0