1
0
mirror of https://github.com/S2-/minifyfromhtml.git synced 2025-08-02 20:00:05 +02:00

update modules

This commit is contained in:
s2
2020-07-20 16:16:07 +02:00
parent 783511ce12
commit 2b23424b86
785 changed files with 91905 additions and 56057 deletions

View File

@@ -1,4 +1,4 @@
Copyright © 2016 Domenic Denicola <d@domenic.me>
Copyright © 20162020 Domenic Denicola <d@domenic.me>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@@ -2,27 +2,19 @@
const whatwgEncoding = require("whatwg-encoding");
// https://html.spec.whatwg.org/#encoding-sniffing-algorithm
module.exports = function sniffHTMLEncoding(buffer, options) {
module.exports = (buffer, { transportLayerEncodingLabel, defaultEncoding = "windows-1252" } = {}) => {
let encoding = whatwgEncoding.getBOMEncoding(buffer); // see https://github.com/whatwg/html/issues/1910
if (options === undefined) {
options = {};
}
if (encoding === null && options.transportLayerEncodingLabel !== undefined) {
encoding = whatwgEncoding.labelToName(options.transportLayerEncodingLabel);
if (encoding === null && transportLayerEncodingLabel !== undefined) {
encoding = whatwgEncoding.labelToName(transportLayerEncodingLabel);
}
if (encoding === null) {
encoding = prescanMetaCharset(buffer);
}
if (encoding === null && options.defaultEncoding !== undefined) {
encoding = options.defaultEncoding;
}
if (encoding === null) {
encoding = "windows-1252";
encoding = defaultEncoding;
}
return encoding;
@@ -35,8 +27,8 @@ function prescanMetaCharset(buffer) {
let c = buffer[i];
if (c === 0x3C) {
// "<"
let c1 = buffer[i + 1];
let c2 = buffer[i + 2];
const c1 = buffer[i + 1];
const c2 = buffer[i + 2];
const c3 = buffer[i + 3];
const c4 = buffer[i + 4];
const c5 = buffer[i + 5];
@@ -45,11 +37,10 @@ function prescanMetaCharset(buffer) {
i += 4;
for (; i < l; i++) {
c = buffer[i];
c1 = buffer[i + 1];
c2 = buffer[i + 2];
const cMinus1 = buffer[i - 1];
const cMinus2 = buffer[i - 2];
// --> (comment end)
if (c === 0x2D && c1 === 0x2D && c2 === 0x3E) {
i += 2;
if (c === 0x3E && cMinus1 === 0x2D && cMinus2 === 0x2D) {
break;
}
}
@@ -60,6 +51,7 @@ function prescanMetaCharset(buffer) {
(isSpaceCharacter(c5) || c5 === 0x2F)) {
// "meta" + space or /
i += 6;
const attributeList = new Set();
let gotPragma = false;
let needPragma = null;
let charset = null;
@@ -67,7 +59,8 @@ function prescanMetaCharset(buffer) {
let attrRes;
do {
attrRes = getAttribute(buffer, i, l);
if (attrRes.attr) {
if (attrRes.attr && !attributeList.has(attrRes.attr.name)) {
attributeList.add(attrRes.attr.name);
if (attrRes.attr.name === "http-equiv") {
gotPragma = attrRes.attr.value === "content-type";
} else if (attrRes.attr.name === "content" && !charset) {
@@ -140,7 +133,6 @@ function getAttribute(buffer, i, l) {
}
// ">"
if (c === 0x3E) {
i++;
break;
}
let name = "";
@@ -249,12 +241,12 @@ function extractCharacterEncodingFromMeta(string) {
let position = 0;
while (true) {
let subPosition = string.substring(position).search(/charset/i);
const indexOfCharset = string.substring(position).search(/charset/i);
if (subPosition === -1) {
if (indexOfCharset === -1) {
return null;
}
subPosition += "charset".length;
let subPosition = position + indexOfCharset + "charset".length;
while (isSpaceCharacter(string[subPosition].charCodeAt(0))) {
++subPosition;
@@ -290,10 +282,11 @@ function extractCharacterEncodingFromMeta(string) {
return null;
}
let end = string.substring(position + 1).search(/\x09|\x0A|\x0C|\x0D|\x20|;/);
if (end === -1) {
end = string.length;
}
const indexOfASCIIWhitespaceOrSemicolon = string.substring(position + 1).search(/\x09|\x0A|\x0C|\x0D|\x20|;/);
const end = indexOfASCIIWhitespaceOrSemicolon === -1 ?
string.length :
position + indexOfASCIIWhitespaceOrSemicolon + 1;
return whatwgEncoding.labelToName(string.substring(position, end));
}

View File

@@ -1,27 +1,27 @@
{
"_from": "html-encoding-sniffer@^1.0.2",
"_id": "html-encoding-sniffer@1.0.2",
"_from": "html-encoding-sniffer@^2.0.1",
"_id": "html-encoding-sniffer@2.0.1",
"_inBundle": false,
"_integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
"_integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
"_location": "/html-encoding-sniffer",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "html-encoding-sniffer@^1.0.2",
"raw": "html-encoding-sniffer@^2.0.1",
"name": "html-encoding-sniffer",
"escapedName": "html-encoding-sniffer",
"rawSpec": "^1.0.2",
"rawSpec": "^2.0.1",
"saveSpec": null,
"fetchSpec": "^1.0.2"
"fetchSpec": "^2.0.1"
},
"_requiredBy": [
"/jsdom"
],
"_resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
"_shasum": "e70d84b94da53aa375e11fe3a351be6642ca46f8",
"_spec": "html-encoding-sniffer@^1.0.2",
"_where": "F:\\projects\\p\\minifyfromhtml\\node_modules\\jsdom",
"_resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
"_shasum": "42a6dc4fd33f00281176e8b23759ca4e4fa185f3",
"_spec": "html-encoding-sniffer@^2.0.1",
"_where": "D:\\Projects\\minifyfromhtml\\node_modules\\jsdom",
"author": {
"name": "Domenic Denicola",
"email": "d@domenic.me",
@@ -32,13 +32,16 @@
},
"bundleDependencies": false,
"dependencies": {
"whatwg-encoding": "^1.0.1"
"whatwg-encoding": "^1.0.5"
},
"deprecated": false,
"description": "Sniff the encoding from a HTML byte stream",
"devDependencies": {
"eslint": "^3.8.0",
"mocha": "^3.1.2"
"eslint": "^6.8.0",
"mocha": "^7.0.0"
},
"engines": {
"node": ">=10"
},
"files": [
"lib/"
@@ -56,8 +59,8 @@
"url": "git+https://github.com/jsdom/html-encoding-sniffer.git"
},
"scripts": {
"lint": "eslint lib test",
"lint": "eslint .",
"test": "mocha"
},
"version": "1.0.2"
"version": "2.0.1"
}