Reduce bundle size of parser-html.js (#12176)

This commit is contained in:
Sosuke Suzuki authored and GitHub committed 2022-01-28 10:07:37 +08:00
1 parent 2fd1406f5f
commit ff78a94424
13 files changed
+64 -46

No files matched your search

+1 -1
View File
@@ -28,7 +28,7 @@ const {
isVueSlotAttribute,
isVueSfcBindingsAttribute,
getTextValueParts,
} = require("./utils.js");
} = require("./utils/index.js");
const getNodeContent = require("./get-node-content.js");
function printEmbeddedAttributeValue(node, htmlTextToDoc, options) {
+3 -5
View File
@@ -9,11 +9,9 @@ const parseFrontMatter = require("../utils/front-matter/parse.js");
const getLast = require("../utils/get-last.js");
const createError = require("../common/parser-create-error.js");
const { inferParserByLanguage } = require("../common/util.js");
const {
HTML_ELEMENT_ATTRIBUTES,
HTML_TAGS,
isUnknownNamespace,
} = require("./utils.js");
const HTML_TAGS = require("./utils/html-tag-names.js");
const HTML_ELEMENT_ATTRIBUTES = require("./utils/html-elements-attributes.js");
const isUnknownNamespace = require("./utils/is-unknown-namespace.js");
const { hasPragma } = require("./pragma.js");
const { Node } = require("./ast.js");
const { parseIeConditionalComment } = require("./conditional-comment.js");
+1 -1
View File
@@ -14,7 +14,7 @@ const {
isLeadingSpaceSensitiveNode,
isTrailingSpaceSensitiveNode,
isWhitespaceSensitiveNode,
} = require("./utils.js");
} = require("./utils/index.js");
const PREPROCESS_PIPELINE = [
removeIgnorableFirstLf,
+1 -1
View File
@@ -11,7 +11,7 @@ const {
isTextLikeNode,
hasPrettierIgnore,
preferHardlineAsLeadingSpaces,
} = require("../utils.js");
} = require("../utils/index.js");
const {
printOpeningTagPrefix,
needsToBorrowNextOpeningTagStartMarker,
+1 -1
View File
@@ -20,7 +20,7 @@ const {
isVueCustomBlock,
countParents,
forceBreakContent,
} = require("../utils.js");
} = require("../utils/index.js");
const {
printOpeningTagPrefix,
printOpeningTag,
+1 -1
View File
@@ -17,7 +17,7 @@ const {
isPreLikeNode,
hasPrettierIgnore,
shouldPreserveContent,
} = require("../utils.js");
} = require("../utils/index.js");
function printClosingTag(node, options) {
return [
+1 -1
View File
@@ -13,7 +13,7 @@ const {
countChars,
unescapeQuoteEntities,
getTextValueParts,
} = require("./utils.js");
} = require("./utils/index.js");
const preprocess = require("./print-preprocess.js");
const { insertPragma } = require("./pragma.js");
const { locStart, locEnd } = require("./loc.js");
+11
View File
@@ -0,0 +1,11 @@
"use strict";
function arrayToMap(array) {
const map = Object.create(null);
for (const value of array) {
map[value] = true;
}
return map;
}
module.exports = arrayToMap;
@@ -0,0 +1,9 @@
"use strict";
const htmlElementAttributes = require("html-element-attributes");
const mapObject = require("./map-object.js");
const arrayToMap = require("./array-to-map.js");
const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap);
module.exports = HTML_ELEMENT_ATTRIBUTES;
@@ -0,0 +1,8 @@
"use strict";
const htmlTagNames = require("html-tag-names");
const arrayToMap = require("./array-to-map.js");
const HTML_TAGS = arrayToMap(htmlTagNames);
module.exports = HTML_TAGS;
@@ -1,28 +1,24 @@
"use strict";
/**
* @typedef {import("../common/ast-path")} AstPath
* @typedef {import("../../common/ast-path")} AstPath
*/
const htmlTagNames = require("html-tag-names");
const htmlElementAttributes = require("html-element-attributes");
const {
inferParserByLanguage,
isFrontMatterNode,
} = require("../common/util.js");
} = require("../../common/util.js");
const {
builders: { line, hardline, join },
utils: { getDocParts, replaceTextEndOfLine },
} = require("../document/index.js");
} = require("../../document/index.js");
const {
CSS_DISPLAY_TAGS,
CSS_DISPLAY_DEFAULT,
CSS_WHITE_SPACE_TAGS,
CSS_WHITE_SPACE_DEFAULT,
} = require("./constants.evaluate.js");
const HTML_TAGS = arrayToMap(htmlTagNames);
const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap);
} = require("../constants.evaluate.js");
const isUnknownNamespace = require("./is-unknown-namespace.js");
// https://infra.spec.whatwg.org/#ascii-whitespace
const HTML_WHITESPACE = new Set(["\t", "\n", "\f", "\r", " "]);
@@ -47,22 +43,6 @@ const getLeadingAndTrailingHtmlWhitespace = (string) => {
};
const hasHtmlWhitespace = (string) => /[\t\n\f\r ]/.test(string);
function arrayToMap(array) {
const map = Object.create(null);
for (const value of array) {
map[value] = true;
}
return map;
}
function mapObject(object, fn) {
const newObject = Object.create(null);
for (const [key, value] of Object.entries(object)) {
newObject[key] = fn(value, key);
}
return newObject;
}
function shouldPreserveContent(node, options) {
// unterminated node in ie conditional comment
// e.g. <!--[if lt IE 9]><html><![endif]-->
@@ -539,14 +519,6 @@ function getNodeCssStyleDisplay(node, options) {
}
}
function isUnknownNamespace(node) {
return (
node.type === "element" &&
!node.hasExplicitNamespace &&
!["html", "svg"].includes(node.namespace)
);
}
function getNodeCssStyleWhiteSpace(node) {
return (
(node.type === "element" &&
@@ -667,8 +639,6 @@ function getTextValueParts(node, value = node.value) {
}
module.exports = {
HTML_ELEMENT_ATTRIBUTES,
HTML_TAGS,
htmlTrim,
htmlTrimPreserveIndentation,
hasHtmlWhitespace,
@@ -0,0 +1,11 @@
"use strict";
function isUnknownNamespace(node) {
return (
node.type === "element" &&
!node.hasExplicitNamespace &&
!["html", "svg"].includes(node.namespace)
);
}
module.exports = isUnknownNamespace;
+11
View File
@@ -0,0 +1,11 @@
"use strict";
function mapObject(object, fn) {
const newObject = Object.create(null);
for (const [key, value] of Object.entries(object)) {
newObject[key] = fn(value, key);
}
return newObject;
}
module.exports = mapObject;