html-minifier 5.0.3 → 5.0.4
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/README.md +1 -1
- package/dist/types/htmlminifier.d.ts.map +1 -1
- package/dist/types/htmlparser.d.ts.map +1 -1
- package/dist/types/lib/attributes.d.ts +19 -1
- package/dist/types/lib/attributes.d.ts.map +1 -1
- package/dist/types/lib/constants.d.ts +2 -1
- package/dist/types/lib/constants.d.ts.map +1 -1
- package/dist/types/lib/elements.d.ts +3 -1
- package/dist/types/lib/elements.d.ts.map +1 -1
- package/dist/types/lib/fragments.d.ts.map +1 -1
- package/dist/types/lib/unused-css.d.ts.map +1 -1
- package/dist/types/lib/utils.d.ts +8 -1
- package/dist/types/lib/utils.d.ts.map +1 -1
- package/dist/types/lib/whitespace.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/htmlminifier.js +91 -41
- package/src/htmlparser.js +25 -30
- package/src/lib/attributes.js +33 -8
- package/src/lib/constants.js +7 -2
- package/src/lib/elements.js +8 -3
- package/src/lib/fragments.js +12 -3
- package/src/lib/unused-css.js +85 -68
- package/src/lib/utils.js +19 -0
- package/src/lib/whitespace.js +2 -4
package/README.md
CHANGED
|
@@ -409,7 +409,7 @@ const result = await minify(html, {
|
|
|
409
409
|
**Available engines:**
|
|
410
410
|
|
|
411
411
|
* `terser` (default): The standard JavaScript minifier with excellent compression
|
|
412
|
-
* [`swc`](https://swc.rs/): Rust-based minifier
|
|
412
|
+
* [`swc`](https://swc.rs/): Rust-based minifier around ten times faster than Terser, with output of about the same size (requires separate installation)
|
|
413
413
|
|
|
414
414
|
The engine also decides how work is scheduled: SWC minifies a document’s script bodies as one batch dispatched ahead of the parse, while Terser shares the thread the parse runs on.
|
|
415
415
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlminifier.d.ts","sourceRoot":"","sources":["../../src/htmlminifier.js"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"htmlminifier.d.ts","sourceRoot":"","sources":["../../src/htmlminifier.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlparser.d.ts","sourceRoot":"","sources":["../../src/htmlparser.js"],"names":[],"mappings":"AAmBG,YAgBG,iBAAiB,GAhBV;IACR,KAAK,CAAC,WAAW;IACjB,GAAG,CAAC,WAAW;IACf,KAAK,CAAC,WAAW;IACjB,OAAO,CAAC,WAAW;IACnB,qBAAqB,CAAC,WAAW;IACjC,OAAO,CAAC,WAAW;IACnB,QAAQ,CAAC,WAAW;IACpB,UAAU,CAAC,EAAE,WAAW,SAAS,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACxC,CAAmB;
|
|
1
|
+
{"version":3,"file":"htmlparser.d.ts","sourceRoot":"","sources":["../../src/htmlparser.js"],"names":[],"mappings":"AAmBG,YAgBG,iBAAiB,GAhBV;IACR,KAAK,CAAC,WAAW;IACjB,GAAG,CAAC,WAAW;IACf,KAAK,CAAC,WAAW;IACjB,OAAO,CAAC,WAAW;IACnB,qBAAqB,CAAC,WAAW;IACjC,OAAO,CAAC,WAAW;IACnB,QAAQ,CAAC,WAAW;IACpB,UAAU,CAAC,EAAE,WAAW,SAAS,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACxC,CAAmB;AA4SvB,qBAAa,UAAU;IAMd,IAAI;IACJ,OAAO;IANd;;;OAGG;IACH,YAAY,IAAI,EAHL,MAGK,EAAE,OAAO,EAFd,iBAEc,EAGxB;IAEK,KAAK,kBA2rCV;CACF"}
|
|
@@ -48,6 +48,24 @@ declare function isMetaWithoutEffect(attrs: HTMLAttribute[], markers: string[]):
|
|
|
48
48
|
* @param {string[]} markers - What custom fragment and `htmlmin:ignore` placeholders hold
|
|
49
49
|
*/
|
|
50
50
|
declare function replaceContentTypePragma(attrs: HTMLAttribute[], markers: string[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* The name to write and to hand to hooks: as in the source for HTML names under
|
|
53
|
+
* `caseSensitive`, as named otherwise (foreign names are named as written anyway)
|
|
54
|
+
* @param {HTMLAttribute} attr
|
|
55
|
+
* @param {string} attrName
|
|
56
|
+
* @param {ProcessedOptions} options
|
|
57
|
+
*/
|
|
58
|
+
declare function nameAttrOut(attr: HTMLAttribute, attrName: string, options: ProcessedOptions): string;
|
|
59
|
+
/**
|
|
60
|
+
* Whether `removeEmptyAttributes` removes the attribute
|
|
61
|
+
* @param {string} tag
|
|
62
|
+
* @param {string} attrName
|
|
63
|
+
* @param {string | undefined} attrValue
|
|
64
|
+
* @param {ProcessedOptions} options
|
|
65
|
+
* @param {string} [tagOut]
|
|
66
|
+
* @param {string} [attrNameOut]
|
|
67
|
+
*/
|
|
68
|
+
declare function removesEmptyAttribute(tag: string, attrName: string, attrValue: string | undefined, options: ProcessedOptions, tagOut?: string, attrNameOut?: string): any;
|
|
51
69
|
/**
|
|
52
70
|
* @param {string} name
|
|
53
71
|
* @param {HTMLAttribute[]} attrs
|
|
@@ -85,5 +103,5 @@ declare function buildAttr(normalized: {
|
|
|
85
103
|
value: string | undefined;
|
|
86
104
|
attr: HTMLAttribute;
|
|
87
105
|
}, tag: string, hasUnarySlash: string | boolean | undefined, options: ProcessedOptions, isLast: boolean, uidAttr: string | undefined, markers: string[]): string;
|
|
88
|
-
export { isIgnoredComment, isExecutableScript, isStyleElement, isMetaWithoutEffect, hasAttrName, normalizeAttr, buildAttr, deduplicateAttributes, replaceContentTypePragma };
|
|
106
|
+
export { isIgnoredComment, isExecutableScript, isStyleElement, isMetaWithoutEffect, hasAttrName, nameAttrOut, removesEmptyAttribute, normalizeAttr, buildAttr, deduplicateAttributes, replaceContentTypePragma };
|
|
89
107
|
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.js"],"names":[],"mappings":"AAAA;;GAEG;AAsCC,OAAQ,KAAA,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGjD,YAA0I,aAAa,GAA7I;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAE1I;AA8BD;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAHnB,MAGmB,EAAE,OAAO,EAF5B,gBAE4B,WAOtC;AAuCD;;;;;;;GAOG;AACH,iBAAS,qBAAqB,CAAC,KAAK,EAJzB,aAAa,EAIY,EAAE,aAAa,EAHxC,OAGwC,GAFtC,aAAa,EAAE,CAqB3B;AAoND;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,GAAG,EAHpB,MAGoB,EAAE,KAAK,EAF3B,aAAa,EAEc,WAUrC;AAOD;;;GAGG;AACH,iBAAS,cAAc,CAAC,GAAG,EAHhB,MAGgB,EAAE,KAAK,EAFvB,aAAa,EAEU,WAUjC;AAkLD;;;;;GAKG;AACH,iBAAS,mBAAmB,CAAC,KAAK,EAHvB,aAAa,EAGU,EAAE,OAAO,EAFhC,MAAM,EAE0B,WAkB1C;AA0BD;;;;;GAKG;AACH,iBAAS,wBAAwB,CAAC,KAAK,EAH5B,aAAa,EAGe,EAAE,OAAO,EAFrC,MAAM,EAE+B,QAe/C;AAmDD;;;GAGG;AACH,iBAAS,WAAW,CAAC,IAAI,EAHd,MAGc,EAAE,KAAK,EAFrB,aAAa,EAEQ,WAO/B;
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.js"],"names":[],"mappings":"AAAA;;GAEG;AAsCC,OAAQ,KAAA,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGjD,YAA0I,aAAa,GAA7I;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAE1I;AA8BD;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,IAAI,EAHnB,MAGmB,EAAE,OAAO,EAF5B,gBAE4B,WAOtC;AAuCD;;;;;;;GAOG;AACH,iBAAS,qBAAqB,CAAC,KAAK,EAJzB,aAAa,EAIY,EAAE,aAAa,EAHxC,OAGwC,GAFtC,aAAa,EAAE,CAqB3B;AAoND;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,GAAG,EAHpB,MAGoB,EAAE,KAAK,EAF3B,aAAa,EAEc,WAUrC;AAOD;;;GAGG;AACH,iBAAS,cAAc,CAAC,GAAG,EAHhB,MAGgB,EAAE,KAAK,EAFvB,aAAa,EAEU,WAUjC;AAkLD;;;;;GAKG;AACH,iBAAS,mBAAmB,CAAC,KAAK,EAHvB,aAAa,EAGU,EAAE,OAAO,EAFhC,MAAM,EAE0B,WAkB1C;AA0BD;;;;;GAKG;AACH,iBAAS,wBAAwB,CAAC,KAAK,EAH5B,aAAa,EAGe,EAAE,OAAO,EAFrC,MAAM,EAE+B,QAe/C;AAmDD;;;;;;GAMG;AACH,iBAAS,WAAW,CAAC,IAAI,EAJd,aAIc,EAAE,QAAQ,EAHxB,MAGwB,EAAE,OAAO,EAFjC,gBAEiC,UAE3C;AAED;;;;;;;;GAQG;AACH,iBAAS,qBAAqB,CAAC,GAAG,EAPvB,MAOuB,EAAE,QAAQ,EANjC,MAMiC,EAAE,SAAS,EAL5C,MAAM,GAAG,SAKmC,EAAE,OAAO,EAJrD,gBAIqD,EAAE,MAAM,AAHrE,CACA,EADQ,MAGmE,EAAE,WAAW,AAFxF,CAA6B,EAArB,MAE2F,OAIrG;AAED;;;GAGG;AACH,iBAAS,WAAW,CAAC,IAAI,EAHd,MAGc,EAAE,KAAK,EAFrB,aAAa,EAEQ,WAO/B;AA0UD;;;;;;;;GAQG;AACH,iBAAS,aAAa,CAAC,IAAI,EARhB,aAQgB,EAAE,KAAK,EAPvB,aAAa,EAOU,EAAE,GAAG,EAN5B,MAM4B,EAAE,MAAM,EALpC,MAKoC,EAAE,OAAO,EAJ7C,gBAI6C,EAAE,UAAU,UAAA,EAAE,OAAO,AAF1E,CACF,EADU,MAAM,EAE4D;;;;;;;;cAgB5E;AAqED;;;;;;;;GAQG;AACH,iBAAS,SAAS,CAAC,UAAU,EARlB;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAQ3C,EAAE,GAAG,EAPvB,MAOuB,EAAE,aAAa,EANtC,MAAM,GAAG,OAAO,GAAG,SAMmB,EAAE,OAAO,EAL/C,gBAK+C,EAAE,MAAM,EAJvD,OAIuD,EAAE,OAAO,EAHhE,MAAM,GAAG,SAGuD,EAAE,OAAO,EAFzE,MAAM,EAEmE,UA0HnF;AAED,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,qBAAqB,EAGrB,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,wBAAwB,EACzB,CAAC"}
|
|
@@ -392,6 +392,7 @@ declare const topLevelElements: Set<string>;
|
|
|
392
392
|
declare const compactElements: Set<string>;
|
|
393
393
|
declare const looseElements: Set<string>;
|
|
394
394
|
declare const trailingElements: Set<string>;
|
|
395
|
+
declare const specialOptionalEndTags: Set<string>;
|
|
395
396
|
declare const htmlElements: Set<string>;
|
|
396
397
|
declare const quirksPublicIds: Set<string>;
|
|
397
398
|
declare const quirksSystemIds: Set<string>;
|
|
@@ -421,5 +422,5 @@ declare const svgoPluginsInline: {
|
|
|
421
422
|
};
|
|
422
423
|
}[];
|
|
423
424
|
declare const namesForeignMixedCase: Map<string, string>;
|
|
424
|
-
export { RE_WS_START, RE_WS_END, RE_WS_ONLY, RE_WS_NBSP_END, RE_ALL_WS_NBSP, RE_NBSP_LEADING_GROUP, RE_NBSP_LEAD_GROUP, RE_NBSP_TRAILING_GROUP, RE_NBSP_TRAILING_STRIP, RE_EVENT_ATTR_DEFAULT, RE_CAN_REMOVE_ATTR_QUOTES, RE_TRAILING_SEMICOLON, RE_AMP_REFERENCE_ATTR, RE_CR, RE_LINE_BREAK_CR, RE_LEGACY_ENTITIES, RE_ESCAPE_LT, RE_ATTR_SELECTOR, RE_ENDS_COLLAPSIBLE, RE_BASE_ELEMENT, RE_ESCAPE_LT_RAW_TEXT, RE_XML_ESCAPE_TEXT, RE_XML_ESCAPE_ATTR, RE_HTML_ENCODING, RE_DOCTYPE, RE_DOCTYPE_SEGMENT, RE_ATTR_WS_CHECK, RE_ATTR_WS_COLLAPSE, RE_WS_CHAR, RE_STYLE_ELEMENT, RE_STYLE_TAG, RE_EMPTY_ATTRIBUTE, formattingElements, inlineElementsToKeepWhitespaceAround, inlineElementsToKeepWhitespaceWithin, inlineElementsToKeepWhitespaceBetween, inlineElementsToKeepWhitespaceBetweenEnd, inlineElementsTransparent, inlineElementsTransparentAfter, inlineElementsToKeepWhitespace, processingInstructionTag, formControlElementsEither, toEndTags, generalDefaults, tagDefaults, metaHttpEquivNoEffect, metaNamesNoEffect, targetSelfElements, integrationPointsForeign, tagDefaultsSVG, svgElementsInheritingByReference, namespaceHTML, namespaceSVG, namespaceMathML, namespaceXLink, executableScriptsMimetypes, keepScriptsMimetypes, jsonScriptTypes, isSimpleBoolean, isBooleanValue, collapsibleValues, srcsetElements, MISSING_DEPENDENCY, namesForeignMixedCase, svgoPluginsInline, optionalStartTags, optionalEndTags, headerElements, descriptionElements, pBlockElements, pClosingParents, rubyEndTagOmission, rubyRtcEndTagOmission, optionElements, tableContentElements, tableSectionElements, cellElements, topLevelElements, compactElements, looseElements, trailingElements, htmlElements, quirksPublicIds, quirksSystemIds, quirksPublicIdPrefixes, quirksPublicIdPrefixesNoSystemId, specialContentElements, genericRawTextElements, endlessRawTextElements, escapableRawTextElements, rawTextElements };
|
|
425
|
+
export { RE_WS_START, RE_WS_END, RE_WS_ONLY, RE_WS_NBSP_END, RE_ALL_WS_NBSP, RE_NBSP_LEADING_GROUP, RE_NBSP_LEAD_GROUP, RE_NBSP_TRAILING_GROUP, RE_NBSP_TRAILING_STRIP, RE_EVENT_ATTR_DEFAULT, RE_CAN_REMOVE_ATTR_QUOTES, RE_TRAILING_SEMICOLON, RE_AMP_REFERENCE_ATTR, RE_CR, RE_LINE_BREAK_CR, RE_LEGACY_ENTITIES, RE_ESCAPE_LT, RE_ATTR_SELECTOR, RE_ENDS_COLLAPSIBLE, RE_BASE_ELEMENT, RE_ESCAPE_LT_RAW_TEXT, RE_XML_ESCAPE_TEXT, RE_XML_ESCAPE_ATTR, RE_HTML_ENCODING, RE_DOCTYPE, RE_DOCTYPE_SEGMENT, RE_ATTR_WS_CHECK, RE_ATTR_WS_COLLAPSE, RE_WS_CHAR, RE_STYLE_ELEMENT, RE_STYLE_TAG, RE_EMPTY_ATTRIBUTE, formattingElements, inlineElementsToKeepWhitespaceAround, inlineElementsToKeepWhitespaceWithin, inlineElementsToKeepWhitespaceBetween, inlineElementsToKeepWhitespaceBetweenEnd, inlineElementsTransparent, inlineElementsTransparentAfter, inlineElementsToKeepWhitespace, processingInstructionTag, formControlElementsEither, toEndTags, generalDefaults, tagDefaults, metaHttpEquivNoEffect, metaNamesNoEffect, targetSelfElements, integrationPointsForeign, tagDefaultsSVG, svgElementsInheritingByReference, namespaceHTML, namespaceSVG, namespaceMathML, namespaceXLink, executableScriptsMimetypes, keepScriptsMimetypes, jsonScriptTypes, isSimpleBoolean, isBooleanValue, collapsibleValues, srcsetElements, MISSING_DEPENDENCY, namesForeignMixedCase, svgoPluginsInline, optionalStartTags, optionalEndTags, headerElements, descriptionElements, pBlockElements, pClosingParents, rubyEndTagOmission, rubyRtcEndTagOmission, optionElements, tableContentElements, tableSectionElements, cellElements, topLevelElements, compactElements, looseElements, trailingElements, specialOptionalEndTags, htmlElements, quirksPublicIds, quirksSystemIds, quirksPublicIdPrefixes, quirksPublicIdPrefixesNoSystemId, specialContentElements, genericRawTextElements, endlessRawTextElements, escapableRawTextElements, rawTextElements };
|
|
425
426
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH,QAAA,MAAM,WAAW,QAAkB,CAAC;AACpC,QAAA,MAAM,SAAS,QAAkB,CAAC;AAClC,QAAA,MAAM,UAAU,QAAmB,CAAC;AACpC,QAAA,MAAM,cAAc,QAAqB,CAAC;AAC1C,QAAA,MAAM,cAAc,QAAsB,CAAC;AAC3C,QAAA,MAAM,qBAAqB,QAAuB,CAAC;AACnD,QAAA,MAAM,kBAAkB,QAAqB,CAAC;AAC9C,QAAA,MAAM,sBAAsB,QAAqB,CAAC;AAClD,QAAA,MAAM,sBAAsB,QAAc,CAAC;AAC3C,QAAA,MAAM,qBAAqB,QAAkB,CAAC;AAC9C,QAAA,MAAM,yBAAyB,QAA0B,CAAC;AAC1D,QAAA,MAAM,qBAAqB,QAAO,CAAC;AAEnC,QAAA,MAAM,KAAK,QAAQ,CAAC;AACpB,QAAA,MAAM,gBAAgB,QAAW,CAAC;AAIlC,QAAA,MAAM,kBAAkB,QAAiG,CAAC;AAG1H,QAAA,MAAM,qBAAqB,QAA8G,CAAC;AAC1I,QAAA,MAAM,YAAY,QAAO,CAAC;AAG1B,QAAA,MAAM,eAAe,QAA4D,CAAC;AAGlF,QAAA,MAAM,kBAAkB,QAAgB,CAAC;AACzC,QAAA,MAAM,kBAAkB,QAAgB,CAAC;AAKzC,QAAA,MAAM,qBAAqB,EAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAG3D,CAAC;AAGJ,QAAA,MAAM,gBAAgB,QAA4C,CAAC;AAKnE,QAAA,MAAM,UAAU,QAA+K,CAAC;AAEhM,QAAA,MAAM,kBAAkB,QAA0C,CAAC;AACnE,QAAA,MAAM,gBAAgB,QAAgB,CAAC;AACvC,QAAA,MAAM,mBAAmB,QAAkB,CAAC;AAC5C,QAAA,MAAM,UAAU,QAAO,CAAC;AACxB,QAAA,MAAM,gBAAgB,QAAkB,CAAC;AACzC,QAAA,MAAM,YAAY,QAAgB,CAAC;AAEnC,QAAA,MAAM,mBAAmB,QAAuB,CAAC;AAEjD,QAAA,MAAM,gBAAgB,QAA8C,CAAC;AACrE,QAAA,MAAM,kBAAkB,QAE6B,CAAC;AAKtD,QAAA,MAAM,oCAAoC,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.js"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,10 @@ declare function canRemovePrecedingTag(optionalEndTag: string, tag: string): boo
|
|
|
23
23
|
/**
|
|
24
24
|
* @param {string} tag
|
|
25
25
|
* @param {HTMLAttribute[]} attrs
|
|
26
|
+
* @param {ProcessedOptions} options
|
|
27
|
+
* @param {string} [tagOut] - As hooks get it
|
|
26
28
|
*/
|
|
27
|
-
declare function canRemoveElement(tag: string, attrs: HTMLAttribute[]): boolean;
|
|
29
|
+
declare function canRemoveElement(tag: string, attrs: HTMLAttribute[], options: ProcessedOptions, tagOut?: string): boolean;
|
|
28
30
|
/**
|
|
29
31
|
* @param {string[]} input - Array of element specifications from `removeEmptyElementsExcept` option
|
|
30
32
|
* @param {ProcessedOptions} options - Options object for parsing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/lib/elements.js"],"names":[],"mappings":"AAAA;;GAEG;AAeC,OAAQ,KAAA,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAQ,KAAA,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AADpD,uDAAuD;AACvD,uDAAuD;AAEvD;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,gBAAgB,EAHjC,MAGiC,EAAE,GAAG,EAFtC,MAEsC,WAahD;AAED;;;GAGG;AACH,iBAAS,mBAAmB,CAAC,cAAc,EAHhC,MAGgC,EAAE,GAAG,EAFrC,MAEqC,WAQ/C;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,cAAc,EAHlC,MAGkC,EAAE,GAAG,EAFvC,MAEuC,WAmCjD;AAED
|
|
1
|
+
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/lib/elements.js"],"names":[],"mappings":"AAAA;;GAEG;AAeC,OAAQ,KAAA,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAQ,KAAA,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AADpD,uDAAuD;AACvD,uDAAuD;AAEvD;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,gBAAgB,EAHjC,MAGiC,EAAE,GAAG,EAFtC,MAEsC,WAahD;AAED;;;GAGG;AACH,iBAAS,mBAAmB,CAAC,cAAc,EAHhC,MAGgC,EAAE,GAAG,EAFrC,MAEqC,WAQ/C;AAED;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,cAAc,EAHlC,MAGkC,EAAE,GAAG,EAFvC,MAEuC,WAmCjD;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,CAAC,GAAG,EALlB,MAKkB,EAAE,KAAK,EAJzB,aAAa,EAIY,EAAE,OAAO,EAHlC,gBAGkC,EAAE,MAAM,AAFlD,CACF,EADU,MAEgD,WAiE1D;AAiDD;;;;GAIG;AACH,iBAAS,8BAA8B,CAAC,KAAK,EAJlC,MAAM,EAI4B,EAAE,OAAO,EAH3C,gBAG2C,GAFzC,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qCAAkC,IAAI,CAAA;CAAC,CAAC,CAc/E;AAED;;;;;GAKG;AACH,iBAAS,0BAA0B,CAAC,GAAG,EAL5B,MAK4B,EAAE,KAAK,EAJnC,aAAa,EAIsB,EAAE,YAAY,EAHjD,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qCAAkC,IAAI,CAAA;CAAC,CAGjB,GAF/C,OAAO,CA8BnB;AAED,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EAGrB,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../src/lib/fragments.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../src/lib/fragments.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4BA,YAA4F,iBAAiB,GAAnG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CAI1F;AAAA,YAAoE,eAAe,GAAzE;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CAGpE;AAmCD;;;;;GAKG;AACH,iBAAS,mBAAmB,CAAC,OAAO,EAJzB,MAIyB,GAHvB,iBAAiB,GAAG,IAAI,CAwBpC;AAkDD;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAHhB,MAGgB,GAFd,iBAAiB,GAAG,eAAe,CAgB/C;AAED;;;;;;;GAOG;AACH,iBAAS,sBAAsB,CAAC,KAAK,EAN1B,MAM0B,EAAE,SAAS,EALrC,CAAC,iBAAiB,GAAG,eAAe,CAAC,EAKA,EAAE,QAAQ,EAH/C,CAAC,KAAK,EAAE,MAAM,KAAK,MAG4B,GAF7C,MAAM,CA2KlB;AA2OD;;;;;;;;;;GAUG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EANvB,MAMuB,EAAE,MAAM,EAL/B,OAK+B,EAAE,WAAW,EAJ5C,MAI4C,EAAE,IAAI,AAH1D,CACA,EADQ,OAG0D,GAFxD,OAAO,CAenB;AAED,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unused-css.d.ts","sourceRoot":"","sources":["../../../src/lib/unused-css.js"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"unused-css.d.ts","sourceRoot":"","sources":["../../../src/lib/unused-css.js"],"names":[],"mappings":"AAAA;;GAEG;AA6MH;;;;;;;;;;;;;;GAcG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EANrB,MAMqB,EAAE,cAAc,EALrC,OAKqC,EAAE,MAAM,AAJrD,CACA,EADQ,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAIoB,EAAE,QAAQ,AAH/D,CACA,EADQ,GAAG,CAAC,MAAM,CAG6C,GAFrD,GAAG,CAAC,MAAM,CAAC,CAoFvB;AAED;;;;;;GAMG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EALnB,MAKmB,EAAE,IAAI,EAJzB,GAAG,CAAC,MAAM,CAIe,EAAE,QAAQ,EAHnC,KAAK,CAAC,MAAM,GAAG,MAAM,CAGc,GAFjC,MAAM,EAAE,CA4BpB;AA8CD;;;;;;GAMG;AACH,iBAAS,YAAY,CAAC,IAAI,EALf,MAKe,EAAE,cAAc,EAJ/B,OAI+B,EAAE,MAAM,AAH/C,CACA,EADQ,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAGc,GAFrC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAC,CAsB1F;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,oBAAoB,CAAC,aAAa,EALhC,MAAM,EAK0B,EAAE,YAAY,EAJ9C,GAAG,CAAC,MAAM,CAIoC,EAAE,QAAQ,EAHxD,KAAK,CAAC,MAAM,GAAG,MAAM,CAGmC,GAFtD,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,KAAK,EAAE,GAAG,SAAS,CA4B9E;AAID;;;;;;;;;;GAUG;AACH,iBAAS,yBAAyB,CAAC,MAAM,EAJ9B,OAAO,GAAG;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG,SAIrC,EAAE,IAAI,AAH5C,CACA,EADQ,CAAC,OAAO,EAAE,MAAM,KAAK,OAGe,GAFlC;IAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAAG,IAAI,CAyCvE;AAED,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EAC1B,CAAC"}
|
|
@@ -44,6 +44,11 @@ declare function uniqueId(value: string): string;
|
|
|
44
44
|
* @returns {string}
|
|
45
45
|
*/
|
|
46
46
|
declare function escapeXML(value: string, attribute?: boolean): string;
|
|
47
|
+
/**
|
|
48
|
+
* Script and style text as browsers read it, for code minifiers
|
|
49
|
+
* @param {string} text
|
|
50
|
+
*/
|
|
51
|
+
declare function replaceNUL(text: string): string;
|
|
47
52
|
/**
|
|
48
53
|
* Read text in foreign content as HTML does: CDATA sections hold text as written,
|
|
49
54
|
* while what surrounds them reads character references
|
|
@@ -106,6 +111,8 @@ export type Repeat = {
|
|
|
106
111
|
* to follow the pattern itself, or `null` where it is none
|
|
107
112
|
*/
|
|
108
113
|
declare function describeQuantifierRisk(pattern: RegExp | string): string | null;
|
|
114
|
+
/** @param {number} code */
|
|
115
|
+
declare function isWhitespaceCode(code: number): boolean;
|
|
109
116
|
/**
|
|
110
117
|
* Find the index of the `>` that closes an opening tag, correctly skipping
|
|
111
118
|
* over quoted attribute values (which may contain `>`).
|
|
@@ -128,5 +135,5 @@ declare function findTagEnd(html: string, pos: number, limit?: number): number;
|
|
|
128
135
|
declare function describeDependencyFailure(label: string, specifier: string, cause: unknown): string;
|
|
129
136
|
/** @param {string} doctype */
|
|
130
137
|
declare function isQuirksDoctype(doctype: string): boolean;
|
|
131
|
-
export { stableStringify, findTagEnd, LRU, MAX_CACHE_ENTRY_SIZE, hashContent, uniqueId, escapeXML, decodeForeignText, identity, isQuirksDoctype, isThenable, lowercase, paramCase, replaceAsync, parseRegExp, embedSource, lostFlag, describeQuantifierRisk, describeDependencyFailure };
|
|
138
|
+
export { stableStringify, findTagEnd, LRU, MAX_CACHE_ENTRY_SIZE, hashContent, uniqueId, escapeXML, replaceNUL, decodeForeignText, identity, isQuirksDoctype, isThenable, isWhitespaceCode, lowercase, paramCase, replaceAsync, parseRegExp, embedSource, lostFlag, describeQuantifierRisk, describeDependencyFailure };
|
|
132
139
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whitespace.d.ts","sourceRoot":"","sources":["../../../src/lib/whitespace.js"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"whitespace.d.ts","sourceRoot":"","sources":["../../../src/lib/whitespace.js"],"names":[],"mappings":"AAAA;;GAEG;AA6BH,0BAA0B;AAC1B,QAAA,MAAM,cAAc,QADR,MAAM,WAQjB,CAAC;AAcF,0BAA0B;AAC1B,iBAAS,eAAe,CAAC,GAAG,EADhB,MACgB,WAO3B;AAGD,0BAA0B;AAC1B,iBAAS,kBAAkB,CAAC,GAAG,EADnB,MACmB,WAE9B;AAUD,0BAA0B;AAC1B,iBAAS,qBAAqB,CAAC,GAAG,EADtB,MACsB,UAOjC;AAwCD;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,GAAG,EAHvB,MAGuB,EAAE,OAAO,EAFhC;IAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAE/C,UAW1C;AAID;;;;;;;GAOG;AACH,iBAAS,kBAAkB,CAAC,GAAG,EAPpB,MAOoB,EAAE,OAAO,EAN7B;IAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAMxD,EAAE,QAAQ,EALvC,OAKuC,EAAE,SAAS,EAJlD,OAIkD,EAAE,WAAW,AAHvE,CACA,EADQ,OAGuE,EAAE,aAAa,AAF9F,CACF,EADU,OAE8F,UAcxG;AAgHE,YAAkB,UAAU,GAC5B;;;;IAAoB,MAAM,EAAnB,GAAG,CAAC,MAAM,CAAC,CAClB;;;;IAAoB,SAAS,EAAtB,GAAG,CAAC,MAAM,CAAC,CAClB;;;;IAAoB,MAAM,EAAnB,GAAG,CAAC,MAAM,CAAC,CAClB;;;;IAAoB,SAAS,EAAtB,GAAG,CAAC,MAAM,CAAC,CAClB;;;;IAAoB,YAAY,EAAzB,GAAG,CAAC,MAAM,CAAC,CACpB;CAAA,CAAA;AAPD;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,iBAAS,eAAe,CAAC,MAAM,EAJpB,GAAG,CAAC,MAAM,CAIU,EAAE,MAAM,EAH5B,GAAG,CAAC,MAAM,CAGkB,GAF1B,UAAU,CAWtB;AAGD,QAAA,MAAM,iBAAiB,YAA8F,CAAC;AAkBtH;;;;;;;;;GASG;AACH,iBAAS,uBAAuB,CAAC,GAAG,EATzB,MASyB,EAAE,OAAO,EARlC,MAQkC,EAAE,OAAO,EAP3C,MAO2C,EAAE,SAAS,EANtD,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAMkB,EAAE,SAAS,EALjE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAK6B,EAAE,OAAO,EAJ1E;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAAC,2BAA2B,CAAC,EAAE,OAAO,CAAA;CAI1B,EAAE,UAAU,EAHtF,UAGsF,EAAE,cAAc,AAF9G,CACF,EADU,OAE6G,UAgEvH;AASD,0BAA0B;AAC1B,iBAAS,qBAAqB,CAAC,GAAG,EADtB,MACsB,WAEjC;AAED,0BAA0B;AAC1B,iBAAS,iBAAiB,CAAC,GAAG,EADlB,MACkB,WAE7B;AAED,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"globals": "^17.14.0",
|
|
22
22
|
"parse5": "^8.1.1",
|
|
23
23
|
"typescript": "^7.0.2",
|
|
24
|
-
"vite": "^8.3.
|
|
24
|
+
"vite": "^8.3.7"
|
|
25
25
|
},
|
|
26
26
|
"engines": {
|
|
27
27
|
"node": ">=22.13"
|
|
@@ -95,5 +95,5 @@
|
|
|
95
95
|
},
|
|
96
96
|
"type": "module",
|
|
97
97
|
"types": "dist/types/htmlminifier.d.ts",
|
|
98
|
-
"version": "5.0.
|
|
99
|
-
}
|
|
98
|
+
"version": "5.0.4"
|
|
99
|
+
}
|
package/src/htmlminifier.js
CHANGED
|
@@ -2,7 +2,7 @@ import { HTMLParser } from './htmlparser.js';
|
|
|
2
2
|
import TokenChain from './tokenchain.js';
|
|
3
3
|
import { presets, getPreset, getPresetNames } from './presets.js';
|
|
4
4
|
|
|
5
|
-
import { LRU, decodeForeignText, describeDependencyFailure, escapeXML, findTagEnd, identity, isThenable, lowercase, uniqueId } from './lib/utils.js';
|
|
5
|
+
import { LRU, decodeForeignText, describeDependencyFailure, escapeXML, findTagEnd, identity, isThenable, lowercase, replaceNUL, uniqueId } from './lib/utils.js';
|
|
6
6
|
import { collectUsage } from './lib/unused-css.js';
|
|
7
7
|
|
|
8
8
|
import {
|
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
compactElements,
|
|
35
35
|
looseElements,
|
|
36
36
|
trailingElements,
|
|
37
|
+
specialOptionalEndTags,
|
|
37
38
|
pClosingParents,
|
|
38
39
|
namesForeignMixedCase,
|
|
39
40
|
integrationPointsForeign,
|
|
@@ -668,6 +669,7 @@ const cacheStatsOrEmpty = (cache) => cache ? cache.stats() : { gets: 0, hits: 0,
|
|
|
668
669
|
const RE_SCRIPT_ATTRS = /([^\s=]+)(?:=(?:"([^"]*)"|'([^']*)'|([^\s>]+)))?/g;
|
|
669
670
|
const RE_SCRIPT_OPEN = /<script(?=[\s>])/gi; // Finds tag start; use `findTagEnd()` for the actual closing `>`
|
|
670
671
|
const RE_SCRIPT_CLOSE = /<\/script\s*>/gi;
|
|
672
|
+
const RE_SCRIPT_START_TEXT = /<script[\t\n\f\r />]/i; // As script text, after `<!--`
|
|
671
673
|
const RE_MATH_TAG = /<(\/?)math(?=[\s/>])/gi;
|
|
672
674
|
const SCRIPT_BOOL_ATTRS = new Set(['async', 'defer', 'nomodule']);
|
|
673
675
|
const DEFAULT_JS_TYPES = new Set(['', 'text/javascript', 'application/javascript']);
|
|
@@ -829,14 +831,20 @@ function mergeConsecutiveScripts(html, hasMathML = false) {
|
|
|
829
831
|
}
|
|
830
832
|
if (boolConflict || a1.nonce !== a2.nonce || (!mergedAny && insideMath(m1.index))) break;
|
|
831
833
|
|
|
832
|
-
// Join with a semicolon, after a newline where the first may end in a `//` comment
|
|
833
834
|
const content2 = html.slice(tagEnd2 + 1, close2.index);
|
|
835
|
+
// After `<!--`, `<script` opens a state `</script>` doesn’t end,
|
|
836
|
+
// which would swallow what follows the merged script
|
|
837
|
+
if (mergedContent.indexOf('<!--') !== -1 && RE_SCRIPT_START_TEXT.test(content2)) break;
|
|
838
|
+
|
|
839
|
+
// Join with a semicolon, after a newline where the first may end in a `//`, `<!--`,
|
|
840
|
+
// or `-->` comment, all of which browsers read as running to the end of the line,
|
|
841
|
+
// and before one where the second starts with `-->`, a comment only there
|
|
834
842
|
const c1 = mergedContent.trim();
|
|
835
843
|
const c2 = content2.trim();
|
|
836
844
|
if (c1 && c2) {
|
|
837
845
|
const lastLine = c1.slice(c1.lastIndexOf('\n') + 1);
|
|
838
|
-
const separator = lastLine
|
|
839
|
-
mergedContent = c1 + separator + c2;
|
|
846
|
+
const separator = /\/\/|<!--|-->/.test(lastLine) ? '\n;' : (c1.endsWith(';') ? '' : ';');
|
|
847
|
+
mergedContent = c1 + separator + (c2.startsWith('-->') ? '\n' : '') + c2;
|
|
840
848
|
} else {
|
|
841
849
|
mergedContent = c1 || c2;
|
|
842
850
|
}
|
|
@@ -956,6 +964,11 @@ async function createSortFns(value, options, uidIgnore, ignoredMarkupChunks) {
|
|
|
956
964
|
removeTagWhitespace: false,
|
|
957
965
|
decodeEntities: false,
|
|
958
966
|
processScripts: false,
|
|
967
|
+
minifyCSS: identity,
|
|
968
|
+
minifyJS: identity,
|
|
969
|
+
minifyJSON: false,
|
|
970
|
+
minifySVG: null,
|
|
971
|
+
minifyURLs: identity,
|
|
959
972
|
// `ignoreCustomFragments` stays, and template syntax may not parse cleanly
|
|
960
973
|
continueOnParseError: true,
|
|
961
974
|
log: identity
|
|
@@ -1115,8 +1128,13 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1115
1128
|
/** @type {HTMLAttribute[]} */
|
|
1116
1129
|
const emptyAttrs = [];
|
|
1117
1130
|
|
|
1131
|
+
// While parsing, entries already in it change through `bufferSet`, `bufferRemove`,
|
|
1132
|
+
// or `bufferTruncate`, so that `trimSettledIndex` stays true
|
|
1118
1133
|
/** @type {string[]} */
|
|
1119
1134
|
const buffer = [];
|
|
1135
|
+
// Where the last trim walk began that came to text it couldn’t trim, past end tags alone: A
|
|
1136
|
+
// later walk that gets there finds the same, until an entry up to there changes
|
|
1137
|
+
let trimSettledIndex = -1;
|
|
1120
1138
|
// Parallel to `buffer`: whether the entry is a tag—the only place lines may break
|
|
1121
1139
|
const bufferTags = options.maxLineLength ? /** @type {boolean[]} */ ([]) : null;
|
|
1122
1140
|
/** @type {string} */
|
|
@@ -1418,8 +1436,21 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1418
1436
|
if (entry) removed = false;
|
|
1419
1437
|
}
|
|
1420
1438
|
|
|
1439
|
+
function bufferSet(/** @type {number} */ index, /** @type {string} */ entry) {
|
|
1440
|
+
buffer[index] = entry;
|
|
1441
|
+
if (index <= trimSettledIndex) trimSettledIndex = -1;
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
// Entries after `index` move down by one, so a settled walk from there on is no longer one
|
|
1445
|
+
function bufferRemove(/** @type {number} */ index) {
|
|
1446
|
+
buffer.splice(index, 1);
|
|
1447
|
+
bufferTags?.splice(index, 1);
|
|
1448
|
+
if (index <= trimSettledIndex) trimSettledIndex = -1;
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1421
1451
|
function bufferTruncate(/** @type {number} */ length) {
|
|
1422
1452
|
buffer.length = Math.max(0, length);
|
|
1453
|
+
if (length <= trimSettledIndex) trimSettledIndex = -1;
|
|
1423
1454
|
if (bufferTags) bufferTags.length = buffer.length;
|
|
1424
1455
|
if (transparentGapIndex >= buffer.length) transparentGapIndex = -1;
|
|
1425
1456
|
if (noTrimEndIndex >= buffer.length) noTrimEndIndex = -1;
|
|
@@ -1464,15 +1495,15 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1464
1495
|
return;
|
|
1465
1496
|
}
|
|
1466
1497
|
for (let i = before + 1; i <= first; i++) {
|
|
1467
|
-
|
|
1498
|
+
bufferSet(i, '');
|
|
1468
1499
|
}
|
|
1469
1500
|
// The line break goes on the side of the text before the removal, so that the text after
|
|
1470
1501
|
// it keeps its own for a removal that may follow
|
|
1471
1502
|
if (before < 0) {
|
|
1472
|
-
|
|
1503
|
+
bufferSet(after, next.replace(RE_BLANKS_LINE_BREAK_START, ''));
|
|
1473
1504
|
} else {
|
|
1474
|
-
|
|
1475
|
-
|
|
1505
|
+
bufferSet(before, prev.replace(RE_LINE_BREAK_BLANKS_END, ''));
|
|
1506
|
+
bufferSet(after, next.replace(RE_BLANKS_START, ''));
|
|
1476
1507
|
}
|
|
1477
1508
|
}
|
|
1478
1509
|
|
|
@@ -1487,18 +1518,18 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1487
1518
|
if (!textVerbatim) {
|
|
1488
1519
|
let index = buffer.length - 1;
|
|
1489
1520
|
while (index >= 0 && (buffer[index] === '' || RE_WS_ONLY.test(buffer[index] ?? ''))) {
|
|
1490
|
-
|
|
1521
|
+
bufferSet(index--, '');
|
|
1491
1522
|
}
|
|
1492
1523
|
if (index >= 0) {
|
|
1493
|
-
|
|
1524
|
+
bufferSet(index, (buffer[index] ?? '').replace(RE_WS_END, ''));
|
|
1494
1525
|
}
|
|
1495
1526
|
}
|
|
1496
1527
|
let index = 0;
|
|
1497
1528
|
while (index < buffer.length && (buffer[index] === '' || RE_WS_ONLY.test(buffer[index] ?? ''))) {
|
|
1498
|
-
|
|
1529
|
+
bufferSet(index++, '');
|
|
1499
1530
|
}
|
|
1500
1531
|
if (index < buffer.length) {
|
|
1501
|
-
|
|
1532
|
+
bufferSet(index, (buffer[index] ?? '').replace(RE_WS_START, ''));
|
|
1502
1533
|
}
|
|
1503
1534
|
}
|
|
1504
1535
|
|
|
@@ -1537,7 +1568,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1537
1568
|
}
|
|
1538
1569
|
const tagOpen = tagText.slice(0, -1);
|
|
1539
1570
|
// A slash right after an unquoted value would belong to the value
|
|
1540
|
-
|
|
1571
|
+
bufferSet(last, tagOpen + (RE_UNQUOTED_VALUE_END.test(tagOpen) ? ' />' : '/>'));
|
|
1541
1572
|
return true;
|
|
1542
1573
|
}
|
|
1543
1574
|
|
|
@@ -1614,9 +1645,9 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1614
1645
|
// A line break the run already carries outranks the whitespace ahead of it; trimming
|
|
1615
1646
|
// the other side takes ASCII whitespace only, so a no-break space stays as is
|
|
1616
1647
|
if (options.preserveLineBreaks && /[\n\r]/.test((next.match(RE_WS_START) ?? [''])[0])) {
|
|
1617
|
-
|
|
1648
|
+
bufferSet(before, prev.replace(RE_WS_END, ''));
|
|
1618
1649
|
} else {
|
|
1619
|
-
|
|
1650
|
+
bufferSet(after, next.replace(RE_WS_START, ''));
|
|
1620
1651
|
}
|
|
1621
1652
|
}
|
|
1622
1653
|
|
|
@@ -1632,8 +1663,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1632
1663
|
// kept text too, no matter how whitespace is collapsed elsewhere.
|
|
1633
1664
|
const noTrim = insideNoTrim || stackNoTrimWhitespace.length > 0;
|
|
1634
1665
|
if (index < buffer.length - 1 && (keepsWhitespace() || noTrim) && RE_END_TAG.test(text)) {
|
|
1635
|
-
|
|
1636
|
-
bufferTags?.splice(index, 1);
|
|
1666
|
+
bufferRemove(index);
|
|
1637
1667
|
// Collapsed whitespace can merge, kept whitespace can leave a line of only whitespace
|
|
1638
1668
|
if (!noTrim) {
|
|
1639
1669
|
if (options.collapseWhitespace) {
|
|
@@ -1653,10 +1683,18 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1653
1683
|
// Nothing to the left of the text is in play here, so only its trailing run can
|
|
1654
1684
|
// change—unless preserved line breaks bring the leading run into play, too
|
|
1655
1685
|
const trailingOnly = !options.preserveLineBreaks;
|
|
1686
|
+
const indexStart = index;
|
|
1656
1687
|
let prevTag = '';
|
|
1657
1688
|
let prevTagLower = '';
|
|
1658
1689
|
for (; index > noTrimEndIndex && canTrimWhitespace(prevTagLower, prevTag, emptyAttrs); index--) {
|
|
1690
|
+
if (index === trimSettledIndex) {
|
|
1691
|
+
trimSettledIndex = indexStart;
|
|
1692
|
+
return;
|
|
1693
|
+
}
|
|
1659
1694
|
const str = buffer[index] ?? '';
|
|
1695
|
+
if (!str) {
|
|
1696
|
+
continue;
|
|
1697
|
+
}
|
|
1660
1698
|
const endTagName = matchPlainEndTag(str);
|
|
1661
1699
|
if (endTagName !== null) {
|
|
1662
1700
|
prevTag = endTagName;
|
|
@@ -1665,14 +1703,12 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1665
1703
|
}
|
|
1666
1704
|
// A tag ends the search, and so does text that survives collapsing. Text with no
|
|
1667
1705
|
// trailing run comes back from the call unchanged, so it can end the search on
|
|
1668
|
-
// the spot
|
|
1669
|
-
if (str.charCodeAt(str.length - 1) === 62 /* > */) {
|
|
1670
|
-
|
|
1671
|
-
}
|
|
1672
|
-
if (trailingOnly && str && !endsWithWhitespace(str)) {
|
|
1706
|
+
// the spot, and so can every later search that gets as far as this one began
|
|
1707
|
+
if (str.charCodeAt(str.length - 1) === 62 /* > */ || (trailingOnly && !endsWithWhitespace(str))) {
|
|
1708
|
+
trimSettledIndex = indexStart;
|
|
1673
1709
|
break;
|
|
1674
1710
|
}
|
|
1675
|
-
|
|
1711
|
+
bufferSet(index, collapseWhitespaceSmart(str, '', nextTag, emptyAttrs, emptyAttrs, options, inlineSets, !stackNoCollapseWhitespace.length && index > noCollapseEndIndex));
|
|
1676
1712
|
if (buffer[index]) {
|
|
1677
1713
|
break;
|
|
1678
1714
|
}
|
|
@@ -1728,7 +1764,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1728
1764
|
// Keep or trim the whitespace pending before or between elements that don’t render
|
|
1729
1765
|
function settleTransparentGap(/** @type {boolean} */ keep) {
|
|
1730
1766
|
if (!keep) {
|
|
1731
|
-
|
|
1767
|
+
bufferSet(transparentGapIndex, collapseWhitespace(buffer[transparentGapIndex] ?? '', options, false, true));
|
|
1732
1768
|
}
|
|
1733
1769
|
transparentGapIndex = -1;
|
|
1734
1770
|
}
|
|
@@ -1833,14 +1869,14 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1833
1869
|
}
|
|
1834
1870
|
if (buffer.length > 1 && (!prevComment || (!options.conservativeCollapse && / $/.test(currentChars)))) {
|
|
1835
1871
|
const charsIndex = buffer.length - 2;
|
|
1836
|
-
|
|
1872
|
+
bufferSet(charsIndex, (buffer[charsIndex] ?? '').replace(/\s+$/, function (trailingSpaces) {
|
|
1837
1873
|
text = trailingSpaces + text;
|
|
1838
1874
|
// It moved, and is judged again as part of this text
|
|
1839
1875
|
if (currentChars.endsWith(trailingSpaces)) {
|
|
1840
1876
|
currentChars = currentChars.slice(0, -trailingSpaces.length);
|
|
1841
1877
|
}
|
|
1842
1878
|
return '';
|
|
1843
|
-
});
|
|
1879
|
+
}));
|
|
1844
1880
|
}
|
|
1845
1881
|
} else if (uidIgnorePlaceholderPattern && textNextTag !== 'comment') {
|
|
1846
1882
|
// UID placeholder followed by a real element—derive the effective `prevTag` from the
|
|
@@ -1974,9 +2010,16 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
1974
2010
|
}
|
|
1975
2011
|
if (text && options.insideSVG && options.minifySVG) {
|
|
1976
2012
|
// SVGO reads XML, so text is escaped for it, while raw text, which XML cannot read as
|
|
1977
|
-
// HTML does (as in `foreignObject`), passes SVGO as a placeholder
|
|
2013
|
+
// HTML does (as in `foreignObject`), passes SVGO as a placeholder—as does HTML text
|
|
2014
|
+
// with whitespace at an end, which SVGO trims (`trim()`, so no-break spaces, too)
|
|
2015
|
+
// outside SVG text elements
|
|
1978
2016
|
if (!rawText) {
|
|
1979
2017
|
text = escapeXML(text);
|
|
2018
|
+
if (!options.insideForeignContent && /^\s|\s$/.test(text)) {
|
|
2019
|
+
uidSVGRawText ||= uniqueId(value);
|
|
2020
|
+
svgRawTexts.push(text);
|
|
2021
|
+
text = '/*!' + uidSVGRawText + (svgRawTexts.length - 1) + '*/';
|
|
2022
|
+
}
|
|
1980
2023
|
} else if (text.indexOf('&') !== -1 || text.indexOf('<') !== -1 || text.indexOf(']]>') !== -1) {
|
|
1981
2024
|
uidSVGRawText ||= uniqueId(value);
|
|
1982
2025
|
svgRawTexts.push(text);
|
|
@@ -2060,9 +2103,9 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2060
2103
|
const firstTag = match ? RE_FIRST_HTML_TAG.exec(ignoredMarkupChunks[+(match[1] ?? 0)] ?? '')?.[1] : undefined;
|
|
2061
2104
|
if (firstTag && inlineElementsTransparent.has(resolveName(firstTag)) && inlineElementsTransparentAfter.has(charsPrevTag)) {
|
|
2062
2105
|
// Emptied first, as `precedesTransparentRun` stops at text
|
|
2063
|
-
buffer
|
|
2106
|
+
bufferSet(buffer.length - 1, '');
|
|
2064
2107
|
if (transparentGapIndex === buffer.length - 1) transparentGapIndex = -1;
|
|
2065
|
-
buffer
|
|
2108
|
+
bufferSet(buffer.length - 1, options.conservativeCollapse || precedesTransparentRun(true) ? ' ' : '');
|
|
2066
2109
|
}
|
|
2067
2110
|
}
|
|
2068
2111
|
// What an `htmlmin:ignore` block holds is unknown, so whitespace pending before it stays
|
|
@@ -2133,7 +2176,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2133
2176
|
}
|
|
2134
2177
|
}
|
|
2135
2178
|
|
|
2136
|
-
buffer
|
|
2179
|
+
bufferSet(buffer.length - 1, collapsedText);
|
|
2137
2180
|
}
|
|
2138
2181
|
}
|
|
2139
2182
|
}
|
|
@@ -2161,7 +2204,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2161
2204
|
const trims = Boolean(options.collapseWhitespace) &&
|
|
2162
2205
|
!options.conservativeCollapse && !options.preserveLineBreaks;
|
|
2163
2206
|
for (const { code, isModule } of bodies) {
|
|
2164
|
-
const body = trims ? code.trim() : code;
|
|
2207
|
+
const body = replaceNUL(trims ? code.trim() : code);
|
|
2165
2208
|
const key = (isModule ? 'm|' : '|') + body;
|
|
2166
2209
|
if (jsPrewarmed.has(key)) {
|
|
2167
2210
|
continue;
|
|
@@ -2226,7 +2269,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2226
2269
|
const builtAttr = buildAttr(normalizedAttr, tag, hasUnarySlash, optionsTag, i === lastKeptIndex, uidAttr, markers);
|
|
2227
2270
|
// One entry with the tag name, so that no line break can come between them
|
|
2228
2271
|
if (i === 0 && fragmentJoinsTag) {
|
|
2229
|
-
buffer[buffer.length - 1]
|
|
2272
|
+
bufferSet(buffer.length - 1, (buffer[buffer.length - 1] ?? '') + builtAttr);
|
|
2230
2273
|
} else {
|
|
2231
2274
|
bufferPush(builtAttr, true);
|
|
2232
2275
|
}
|
|
@@ -2238,7 +2281,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2238
2281
|
optionalStartTag = tag;
|
|
2239
2282
|
}
|
|
2240
2283
|
|
|
2241
|
-
buffer[buffer.length - 1]
|
|
2284
|
+
bufferSet(buffer.length - 1, (buffer[buffer.length - 1] ?? '') + tagText + (hasUnarySlash ? '/' : '') + '>');
|
|
2242
2285
|
|
|
2243
2286
|
impliedStartTag = autoGenerated && !options.includeAutoGeneratedTags ? tag : '';
|
|
2244
2287
|
if (impliedStartTag) {
|
|
@@ -2618,13 +2661,14 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2618
2661
|
startTagRemoved = true;
|
|
2619
2662
|
}
|
|
2620
2663
|
optionalStartTag = '';
|
|
2621
|
-
// `</html>` or `</body>` may be omitted if not followed by comment
|
|
2622
|
-
// `</head>` may be omitted if not followed by space or comment
|
|
2623
|
-
// `</p>` may be omitted if no more content
|
|
2624
|
-
//
|
|
2625
|
-
//
|
|
2664
|
+
// `</html>` or `</body>` may be omitted if not followed by comment;
|
|
2665
|
+
// `</head>` may be omitted if not followed by space or comment;
|
|
2666
|
+
// `</p>`, `</li>`, `</dd>`, and `</dt>` may be omitted if no more content
|
|
2667
|
+
// in parent, as long as the parent’s end tag closes these special elements
|
|
2668
|
+
// in browsers (`pClosingParents`); except for `</dt>` or `</thead>`,
|
|
2669
|
+
// end tags may be omitted if no more content in parent
|
|
2626
2670
|
// https://html.spec.whatwg.org/multipage/syntax.html#optional-tags
|
|
2627
|
-
if (tag && optionalEndTag && optionalEndTagEmitted && !trailingElements.has(optionalEndTag) && (optionalEndTag
|
|
2671
|
+
if (tag && optionalEndTag && optionalEndTagEmitted && !trailingElements.has(optionalEndTag) && (!specialOptionalEndTags.has(optionalEndTag) || pClosingParents.has(tag))) {
|
|
2628
2672
|
removeEndTag(insideNoTrim);
|
|
2629
2673
|
}
|
|
2630
2674
|
optionalEndTag = optionalEndTags.has(tag) && !endsImpliedStart && !holdsTable ? tag : '';
|
|
@@ -2633,7 +2677,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2633
2677
|
|
|
2634
2678
|
let isElementRemoved = false;
|
|
2635
2679
|
// A formatting element closed by a block is reopened after it by browsers, so it has to stay
|
|
2636
|
-
if (options.removeEmptyElements && (isElementEmpty || isElementEmptied) && !options.insideForeignContent && canRemoveElement(tag, attrs) &&
|
|
2680
|
+
if (options.removeEmptyElements && (isElementEmpty || isElementEmptied) && !options.insideForeignContent && canRemoveElement(tag, attrs, options, tagOut) &&
|
|
2637
2681
|
!(autoGenerated && formattingElements.has(tag)) && !openElement?.impliedEnds?.some(implied => !implied.text)) {
|
|
2638
2682
|
let preserve = false;
|
|
2639
2683
|
if (removeEmptyElementsExcept.length) {
|
|
@@ -2775,6 +2819,9 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2775
2819
|
if (needsProcessScript) {
|
|
2776
2820
|
text = await processScript(text, options, currentTag, currentAttrs, minifyHTML);
|
|
2777
2821
|
}
|
|
2822
|
+
if (needsMinifyJS || needsMinifyCSS) {
|
|
2823
|
+
text = replaceNUL(text);
|
|
2824
|
+
}
|
|
2778
2825
|
if (needsMinifyJS) {
|
|
2779
2826
|
const prewarmed = jsPrewarmed?.get((isModuleScript ? 'm|' : '|') + text);
|
|
2780
2827
|
text = prewarmed ? await prewarmed : await options.minifyJS(text, false, isModuleScript);
|
|
@@ -2850,7 +2897,7 @@ async function minifyHTML(value, options, partialMarkup) {
|
|
|
2850
2897
|
for (let i = 0; i < buffer.length; i++) {
|
|
2851
2898
|
const segment = /** @type {string} */ (buffer[i]);
|
|
2852
2899
|
if (segment.indexOf(uidSVGRawText) !== -1) {
|
|
2853
|
-
|
|
2900
|
+
bufferSet(i, segment.replace(pattern, (/** @type {string} */ match, /** @type {string} */ index) => svgRawTexts[+index] ?? match));
|
|
2854
2901
|
}
|
|
2855
2902
|
}
|
|
2856
2903
|
}
|
|
@@ -3136,6 +3183,9 @@ export const minify = async function (value, options) {
|
|
|
3136
3183
|
let processedBase;
|
|
3137
3184
|
// `valueUnchanged` needs no budget of its own: Recursion is bounded by the
|
|
3138
3185
|
// stored snapshot, which is a finite tree of at most `SNAPSHOT_MAX_NODES`
|
|
3186
|
+
//
|
|
3187
|
+
// Note: The comparison takes about 8% of a call on tiny documents; only options
|
|
3188
|
+
// known never to change (e.g., deeply frozen ones) could skip it
|
|
3139
3189
|
if (cached && valueUnchanged(cached.snapshot, inputOptions)) {
|
|
3140
3190
|
processedBase = cached.processed;
|
|
3141
3191
|
} else {
|