html-minifier-next 7.0.0 → 7.1.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.js"],"names":[],"mappings":";;;4BA0Ba;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;AAiB3I;;;GAGG;AACH,uCAHW,MAAM,WACN,gBAAgB,WAS1B;AAED;;;GAGG;AACH,2CAHW,MAAM,WACN;IAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,WAa5C;AAED,4BAA4B;AAC5B,gDADY,MAAM,WAIjB;AAED;;;GAGG;AACH,8CAHW,aAAa,EAAE,aACf,MAAM,WAShB;AA+BD;;;;;GAKG;AACH,0CALW,MAAM,YACN,MAAM,aACN,MAAM,SACN,aAAa,EAAE,WAyCzB;AAED,mEAGC;AAED,qEAGC;AAED;;;GAGG;AACH,wCAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED,sEAGC;AAED;;;GAGG;AACH,oCAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED;;;GAGG;AACH,6CAHW,MAAM,aACN,MAAM,uBAMhB;AAmBD;;;GAGG;AACH,6CAHW,MAAM,OACN,MAAM,WAKhB;AAgBD;;;GAGG;AACH,gDAHW,MAAM,OACN,MAAM,WAKhB;AAED;;;;GAIG;AACH,gCAJW,MAAM,SACN,aAAa,EAAE,SACf,MAAM,WAYhB;AAED;;;;GAIG;AACH,kCAJW,MAAM,SACN,aAAa,EAAE,YACf,MAAM,WAIhB;AAED;;;GAGG;AACH,mCAHW,MAAM,OACN,MAAM,
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.js"],"names":[],"mappings":";;;4BA0Ba;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;AAiB3I;;;GAGG;AACH,uCAHW,MAAM,WACN,gBAAgB,WAS1B;AAED;;;GAGG;AACH,2CAHW,MAAM,WACN;IAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,WAa5C;AAED,4BAA4B;AAC5B,gDADY,MAAM,WAIjB;AAED;;;GAGG;AACH,8CAHW,aAAa,EAAE,aACf,MAAM,WAShB;AA+BD;;;;;GAKG;AACH,0CALW,MAAM,YACN,MAAM,aACN,MAAM,SACN,aAAa,EAAE,WAyCzB;AAED,mEAGC;AAED,qEAGC;AAED;;;GAGG;AACH,wCAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED,sEAGC;AAED;;;GAGG;AACH,oCAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED;;;GAGG;AACH,6CAHW,MAAM,aACN,MAAM,uBAMhB;AAmBD;;;GAGG;AACH,6CAHW,MAAM,OACN,MAAM,WAKhB;AAgBD;;;GAGG;AACH,gDAHW,MAAM,OACN,MAAM,WAKhB;AAED;;;;GAIG;AACH,gCAJW,MAAM,SACN,aAAa,EAAE,SACf,MAAM,WAYhB;AAED;;;;GAIG;AACH,kCAJW,MAAM,SACN,aAAa,EAAE,YACf,MAAM,WAIhB;AAED;;;GAGG;AACH,mCAHW,MAAM,OACN,MAAM,WAKhB;AAED;;;GAGG;AACH,oCAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED;;;GAGG;AACH,6CAHW,MAAM,SACN,aAAa,EAAE,WAYzB;AAED;;;;;GAKG;AACH,6CALW,MAAM,YACN,MAAM,aACN,MAAM,GAAG,SAAS,WAClB;IAAC,qBAAqB,CAAC,EAAE,OAAO,WAAW,CAAA;CAAC,OAWtD;AAED;;;GAGG;AACH,kCAHW,MAAM,SACN,aAAa,EAAE,WASzB;AAUD;;;;;;;GAOG;AACH,yCAPW,MAAM,YACN,MAAM,aACN,MAAM,WACN,gBAAgB,SAChB,aAAa,EAAE,iCA4NzB;AAwBD;;;;;;GAMG;AACH,oCANW,aAAa,SACb,aAAa,EAAE,OACf,MAAM,WACN,gBAAgB;;;;;;;;2BAe1B;AA0DD;;;;;;GAMG;AACH,sCANW;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAC,iBAC9D,MAAM,GAAG,OAAO,GAAG,SAAS,WAC5B,gBAAgB,UAChB,OAAO,WACP,MAAM,GAAG,SAAS,UA0H5B;AApuBD;;;;;;;GAOG;AACH,6CAJW,aAAa,EAAE,iBACf,OAAO,GACL,aAAa,EAAE,CAqB3B;sCAlGqC,cAAc"}
|
package/package.json
CHANGED
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
},
|
|
15
15
|
"description": "Super-configurable and well-tested web page minifier (enhanced successor to HTML Minifier)",
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@commitlint/cli": "^21.0
|
|
17
|
+
"@commitlint/cli": "^21.2.0",
|
|
18
18
|
"@eslint/js": "^10.0.1",
|
|
19
|
-
"@swc/core": "^1.15.
|
|
20
|
-
"@types/node": "^
|
|
21
|
-
"eslint": "^10.
|
|
19
|
+
"@swc/core": "^1.15.41",
|
|
20
|
+
"@types/node": "^26.1.0",
|
|
21
|
+
"eslint": "^10.6.0",
|
|
22
22
|
"typescript": "^6.0.3",
|
|
23
|
-
"vite": "^8.0.
|
|
23
|
+
"vite": "^8.0.16"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
26
|
"node": ">=22"
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"test:watch": "node --test --watch tests/*.spec.js"
|
|
92
92
|
},
|
|
93
93
|
"type": "module",
|
|
94
|
-
"version": "7.
|
|
94
|
+
"version": "7.1.0"
|
|
95
95
|
}
|
package/src/lib/attributes.js
CHANGED
|
@@ -303,7 +303,8 @@ function isMediaQuery(tag, attrs, attrName) {
|
|
|
303
303
|
* @param {string} tag
|
|
304
304
|
*/
|
|
305
305
|
function isSrcset(attrName, tag) {
|
|
306
|
-
return attrName === 'srcset' && srcsetElements.has(tag)
|
|
306
|
+
return (attrName === 'srcset' && srcsetElements.has(tag)) ||
|
|
307
|
+
(attrName === 'imagesrcset' && tag === 'link');
|
|
307
308
|
}
|
|
308
309
|
|
|
309
310
|
/**
|
|
@@ -492,8 +493,34 @@ function cleanAttributeValue(tag, attrName, attrValue, options, attrs, minifyHTM
|
|
|
492
493
|
}
|
|
493
494
|
|
|
494
495
|
if (isSrcset(attrName, tag)) {
|
|
495
|
-
//
|
|
496
|
-
|
|
496
|
+
// Split into image candidate strings following the spec parsing algorithm
|
|
497
|
+
// (https://html.spec.whatwg.org/multipage/images.html#parsing-a-srcset-attribute);
|
|
498
|
+
// a naive split on commas would corrupt URLs that contain commas
|
|
499
|
+
const value = trimWhitespace(attrValue);
|
|
500
|
+
/** @type {string[]} */
|
|
501
|
+
const candidates = [];
|
|
502
|
+
let pos = 0;
|
|
503
|
+
while (pos < value.length) {
|
|
504
|
+
// Skip whitespace and separator commas
|
|
505
|
+
while (pos < value.length && /[\s,]/.test(value.charAt(pos))) pos++;
|
|
506
|
+
if (pos >= value.length) break;
|
|
507
|
+
const start = pos;
|
|
508
|
+
// URL: a run of non-whitespace characters (which may contain commas)
|
|
509
|
+
while (pos < value.length && !/\s/.test(value.charAt(pos))) pos++;
|
|
510
|
+
if (value.charAt(pos - 1) === ',') {
|
|
511
|
+
// Trailing comma(s) end the candidate—a URL without descriptor
|
|
512
|
+
candidates.push(value.slice(start, pos).replace(/,+$/, ''));
|
|
513
|
+
continue;
|
|
514
|
+
}
|
|
515
|
+
// Descriptor: everything up to the next comma outside parentheses
|
|
516
|
+
let inParens = false;
|
|
517
|
+
while (pos < value.length && (inParens || value.charAt(pos) !== ',')) {
|
|
518
|
+
if (value.charAt(pos) === '(') inParens = true;
|
|
519
|
+
else if (value.charAt(pos) === ')') inParens = false;
|
|
520
|
+
pos++;
|
|
521
|
+
}
|
|
522
|
+
candidates.push(trimWhitespace(value.slice(start, pos)));
|
|
523
|
+
}
|
|
497
524
|
const processed = candidates.map(candidate => {
|
|
498
525
|
let url = candidate;
|
|
499
526
|
let descriptor = '';
|