entities 3.0.1 → 4.1.1
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/lib/decode.d.ts +6 -7
- package/lib/decode.d.ts.map +1 -1
- package/lib/decode.js +42 -41
- package/lib/decode.js.map +1 -0
- package/lib/decode_codepoint.d.ts +1 -0
- package/lib/decode_codepoint.d.ts.map +1 -1
- package/lib/decode_codepoint.js +9 -3
- package/lib/decode_codepoint.js.map +1 -0
- package/lib/encode-trie.d.ts +0 -5
- package/lib/encode-trie.d.ts.map +1 -1
- package/lib/encode-trie.js +22 -35
- package/lib/encode-trie.js.map +1 -0
- package/lib/encode.d.ts +15 -1
- package/lib/encode.d.ts.map +1 -1
- package/lib/encode.js +56 -57
- package/lib/encode.js.map +1 -0
- package/lib/esm/decode.d.ts +14 -0
- package/lib/esm/decode.d.ts.map +1 -0
- package/lib/esm/decode.js +135 -0
- package/lib/esm/decode.js.map +1 -0
- package/lib/esm/decode_codepoint.d.ts +3 -0
- package/lib/esm/decode_codepoint.d.ts.map +1 -0
- package/lib/esm/decode_codepoint.js +55 -0
- package/lib/esm/decode_codepoint.js.map +1 -0
- package/lib/esm/encode-trie.d.ts +3 -0
- package/lib/esm/encode-trie.d.ts.map +1 -0
- package/lib/esm/encode-trie.js +55 -0
- package/lib/esm/encode-trie.js.map +1 -0
- package/lib/esm/encode.d.ts +60 -0
- package/lib/esm/encode.d.ts.map +1 -0
- package/lib/esm/encode.js +119 -0
- package/lib/esm/encode.js.map +1 -0
- package/lib/esm/generated/decode-data-html.d.ts +3 -0
- package/lib/esm/generated/decode-data-html.d.ts.map +1 -0
- package/lib/esm/generated/decode-data-html.js +4 -0
- package/lib/esm/generated/decode-data-html.js.map +1 -0
- package/lib/esm/generated/decode-data-xml.d.ts +3 -0
- package/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
- package/lib/esm/generated/decode-data-xml.js +4 -0
- package/lib/esm/generated/decode-data-xml.js.map +1 -0
- package/lib/esm/generated/encode-html.d.ts +8 -0
- package/lib/esm/generated/encode-html.d.ts.map +1 -0
- package/lib/esm/generated/encode-html.js +4 -0
- package/lib/esm/generated/encode-html.js.map +1 -0
- package/lib/esm/index.d.ts +101 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +111 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/package.json +1 -0
- package/lib/generated/decode-data-html.d.ts.map +1 -1
- package/lib/generated/decode-data-html.js +2 -1
- package/lib/generated/decode-data-html.js.map +1 -0
- package/lib/generated/decode-data-xml.d.ts.map +1 -1
- package/lib/generated/decode-data-xml.js +2 -1
- package/lib/generated/decode-data-xml.js.map +1 -0
- package/lib/generated/encode-html.d.ts +8 -0
- package/lib/generated/encode-html.d.ts.map +1 -0
- package/lib/generated/encode-html.js +6 -0
- package/lib/generated/encode-html.js.map +1 -0
- package/lib/index.d.ts +18 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +47 -30
- package/lib/index.js.map +1 -0
- package/package.json +34 -14
- package/readme.md +61 -13
- package/lib/maps/entities.json +0 -1
- package/lib/maps/legacy.json +0 -1
- package/lib/maps/xml.json +0 -1
package/lib/decode.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import htmlDecodeTree from "./generated/decode-data-html";
|
|
2
|
-
import xmlDecodeTree from "./generated/decode-data-xml";
|
|
3
|
-
|
|
1
|
+
import htmlDecodeTree from "./generated/decode-data-html.js";
|
|
2
|
+
import xmlDecodeTree from "./generated/decode-data-xml.js";
|
|
3
|
+
import decodeCodePoint from "./decode_codepoint.js";
|
|
4
|
+
export { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };
|
|
4
5
|
export declare enum BinTrieFlags {
|
|
5
|
-
|
|
6
|
-
BRANCH_LENGTH =
|
|
7
|
-
MULTI_BYTE = 128,
|
|
6
|
+
VALUE_LENGTH = 49152,
|
|
7
|
+
BRANCH_LENGTH = 16256,
|
|
8
8
|
JUMP_TABLE = 127
|
|
9
9
|
}
|
|
10
|
-
export declare const JUMP_OFFSET_BASE: number;
|
|
11
10
|
export declare function determineBranch(decodeTree: Uint16Array, current: number, nodeIdx: number, char: number): number;
|
|
12
11
|
export declare function decodeHTML(str: string): string;
|
|
13
12
|
export declare function decodeHTMLStrict(str: string): string;
|
package/lib/decode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAc1D,oBAAY,YAAY;IACpB,YAAY,QAAwB;IACpC,aAAa,QAAwB;IACrC,UAAU,MAAwB;CACrC;AA8GD,wBAAgB,eAAe,CAC3B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACb,MAAM,CAsCR;AAKD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
package/lib/decode.js
CHANGED
|
@@ -3,20 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.
|
|
7
|
-
var
|
|
8
|
-
exports.htmlDecodeTree =
|
|
9
|
-
var
|
|
10
|
-
exports.xmlDecodeTree =
|
|
11
|
-
var
|
|
6
|
+
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.BinTrieFlags = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
|
|
7
|
+
var decode_data_html_js_1 = __importDefault(require("./generated/decode-data-html.js"));
|
|
8
|
+
exports.htmlDecodeTree = decode_data_html_js_1.default;
|
|
9
|
+
var decode_data_xml_js_1 = __importDefault(require("./generated/decode-data-xml.js"));
|
|
10
|
+
exports.xmlDecodeTree = decode_data_xml_js_1.default;
|
|
11
|
+
var decode_codepoint_js_1 = __importDefault(require("./decode_codepoint.js"));
|
|
12
|
+
exports.decodeCodePoint = decode_codepoint_js_1.default;
|
|
12
13
|
var BinTrieFlags;
|
|
13
14
|
(function (BinTrieFlags) {
|
|
14
|
-
BinTrieFlags[BinTrieFlags["
|
|
15
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] =
|
|
16
|
-
BinTrieFlags[BinTrieFlags["MULTI_BYTE"] = 128] = "MULTI_BYTE";
|
|
15
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
16
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
17
17
|
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
18
18
|
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
19
|
-
exports.JUMP_OFFSET_BASE = 48 /* ZERO */ - 1;
|
|
20
19
|
function getDecoder(decodeTree) {
|
|
21
20
|
return function decodeHTMLBinary(str, strict) {
|
|
22
21
|
var ret = "";
|
|
@@ -38,12 +37,12 @@ function getDecoder(decodeTree) {
|
|
|
38
37
|
strIdx += 1;
|
|
39
38
|
start += 1;
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
cp
|
|
40
|
+
do
|
|
41
|
+
cp = str.charCodeAt(++strIdx);
|
|
42
|
+
while ((cp >= 48 /* ZERO */ && cp <= 57 /* NINE */) ||
|
|
43
43
|
(base === 16 &&
|
|
44
44
|
(cp | 32 /* To_LOWER_BIT */) >= 97 /* LOWER_A */ &&
|
|
45
|
-
(cp | 32 /* To_LOWER_BIT */) <= 102 /* LOWER_F */))
|
|
46
|
-
;
|
|
45
|
+
(cp | 32 /* To_LOWER_BIT */) <= 102 /* LOWER_F */));
|
|
47
46
|
if (start !== strIdx) {
|
|
48
47
|
var entity = str.substring(start, strIdx);
|
|
49
48
|
var parsed = parseInt(entity, base);
|
|
@@ -53,12 +52,12 @@ function getDecoder(decodeTree) {
|
|
|
53
52
|
else if (strict) {
|
|
54
53
|
continue;
|
|
55
54
|
}
|
|
56
|
-
ret +=
|
|
55
|
+
ret += (0, decode_codepoint_js_1.default)(parsed);
|
|
57
56
|
lastIdx = strIdx;
|
|
58
57
|
}
|
|
59
58
|
continue;
|
|
60
59
|
}
|
|
61
|
-
var
|
|
60
|
+
var resultIdx = 0;
|
|
62
61
|
var excess = 1;
|
|
63
62
|
var treeIdx = 0;
|
|
64
63
|
var current = decodeTree[treeIdx];
|
|
@@ -67,25 +66,29 @@ function getDecoder(decodeTree) {
|
|
|
67
66
|
if (treeIdx < 0)
|
|
68
67
|
break;
|
|
69
68
|
current = decodeTree[treeIdx];
|
|
69
|
+
var masked = current & BinTrieFlags.VALUE_LENGTH;
|
|
70
70
|
// If the branch is a value, store it and continue
|
|
71
|
-
if (
|
|
71
|
+
if (masked) {
|
|
72
72
|
// If we have a legacy entity while parsing strictly, just skip the number of bytes
|
|
73
|
-
if (strict
|
|
74
|
-
|
|
75
|
-
treeIdx += 1;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// If this is a surrogate pair, combine the higher bits from the node with the next byte
|
|
79
|
-
result =
|
|
80
|
-
current & BinTrieFlags.MULTI_BYTE
|
|
81
|
-
? String.fromCharCode(decodeTree[++treeIdx], decodeTree[++treeIdx])
|
|
82
|
-
: String.fromCharCode(decodeTree[++treeIdx]);
|
|
73
|
+
if (!strict || str.charCodeAt(strIdx) === 59 /* SEMI */) {
|
|
74
|
+
resultIdx = treeIdx;
|
|
83
75
|
excess = 0;
|
|
84
76
|
}
|
|
77
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
78
|
+
var valueLength = (masked >> 14) - 1;
|
|
79
|
+
if (valueLength === 0)
|
|
80
|
+
break;
|
|
81
|
+
treeIdx += valueLength;
|
|
85
82
|
}
|
|
86
83
|
}
|
|
87
|
-
if (
|
|
88
|
-
|
|
84
|
+
if (resultIdx !== 0) {
|
|
85
|
+
var valueLength = (decodeTree[resultIdx] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
86
|
+
ret +=
|
|
87
|
+
valueLength === 1
|
|
88
|
+
? String.fromCharCode(decodeTree[resultIdx] & ~BinTrieFlags.VALUE_LENGTH)
|
|
89
|
+
: valueLength === 2
|
|
90
|
+
? String.fromCharCode(decodeTree[resultIdx + 1])
|
|
91
|
+
: String.fromCharCode(decodeTree[resultIdx + 1], decodeTree[resultIdx + 2]);
|
|
89
92
|
lastIdx = strIdx - excess + 1;
|
|
90
93
|
}
|
|
91
94
|
}
|
|
@@ -93,23 +96,20 @@ function getDecoder(decodeTree) {
|
|
|
93
96
|
};
|
|
94
97
|
}
|
|
95
98
|
function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 8;
|
|
99
|
+
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
100
|
+
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
101
|
+
// Case 1: Single branch encoded in jump offset
|
|
100
102
|
if (branchCount === 0) {
|
|
101
|
-
return -1;
|
|
103
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
102
104
|
}
|
|
103
|
-
|
|
104
|
-
return char === decodeTree[nodeIdx] ? nodeIdx + 1 : -1;
|
|
105
|
-
}
|
|
106
|
-
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
105
|
+
// Case 2: Multiple branches encoded in jump table
|
|
107
106
|
if (jumpOffset) {
|
|
108
|
-
var value = char -
|
|
107
|
+
var value = char - jumpOffset;
|
|
109
108
|
return value < 0 || value > branchCount
|
|
110
109
|
? -1
|
|
111
110
|
: decodeTree[nodeIdx + value] - 1;
|
|
112
111
|
}
|
|
112
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
113
113
|
// Binary search for the character.
|
|
114
114
|
var lo = nodeIdx;
|
|
115
115
|
var hi = lo + branchCount - 1;
|
|
@@ -129,8 +129,8 @@ function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
|
129
129
|
return -1;
|
|
130
130
|
}
|
|
131
131
|
exports.determineBranch = determineBranch;
|
|
132
|
-
var htmlDecoder = getDecoder(
|
|
133
|
-
var xmlDecoder = getDecoder(
|
|
132
|
+
var htmlDecoder = getDecoder(decode_data_html_js_1.default);
|
|
133
|
+
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
|
|
134
134
|
function decodeHTML(str) {
|
|
135
135
|
return htmlDecoder(str, false);
|
|
136
136
|
}
|
|
@@ -143,3 +143,4 @@ function decodeXML(str) {
|
|
|
143
143
|
return xmlDecoder(str, true);
|
|
144
144
|
}
|
|
145
145
|
exports.decodeXML = decodeXML;
|
|
146
|
+
//# sourceMappingURL=decode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"","sources":["../src/decode_codepoint.ts"],"names":[],"mappings":"AAmDA,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"","sources":["../src/decode_codepoint.ts"],"names":[],"mappings":"AAmDA,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAMjD;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
package/lib/decode_codepoint.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.replaceCodePoint = void 0;
|
|
4
5
|
var decodeMap = new Map([
|
|
5
6
|
[0, 65533],
|
|
6
7
|
[128, 8364],
|
|
@@ -44,11 +45,16 @@ String.fromCodePoint ||
|
|
|
44
45
|
output += String.fromCharCode(codePoint);
|
|
45
46
|
return output;
|
|
46
47
|
};
|
|
47
|
-
function
|
|
48
|
+
function replaceCodePoint(codePoint) {
|
|
48
49
|
var _a;
|
|
49
50
|
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
50
|
-
return
|
|
51
|
+
return 0xfffd;
|
|
51
52
|
}
|
|
52
|
-
return
|
|
53
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
54
|
+
}
|
|
55
|
+
exports.replaceCodePoint = replaceCodePoint;
|
|
56
|
+
function decodeCodePoint(codePoint) {
|
|
57
|
+
return fromCodePoint(replaceCodePoint(codePoint));
|
|
53
58
|
}
|
|
54
59
|
exports.default = decodeCodePoint;
|
|
60
|
+
//# sourceMappingURL=decode_codepoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode_codepoint.js","sourceRoot":"","sources":["../src/decode_codepoint.ts"],"names":[],"mappings":";AAAA,qHAAqH;;;AAErH,IAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACtB,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;CACb,CAAC,CAAC;AAEH,IAAM,aAAa;AACf,iHAAiH;AACjH,MAAM,CAAC,aAAa;IACpB,UAAU,SAAiB;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,SAAS,GAAG,MAAM,EAAE;YACpB,SAAS,IAAI,OAAO,CAAC;YACrB,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CACxC,CAAC;YACF,SAAS,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;SAC5C;QAED,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AAEN,SAAgB,gBAAgB,CAAC,SAAiB;;IAC9C,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE;QACtE,OAAO,MAAM,CAAC;KACjB;IAED,OAAO,MAAA,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjD,CAAC;AAND,4CAMC;AAED,SAAwB,eAAe,CAAC,SAAiB;IACrD,OAAO,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC;AAFD,kCAEC"}
|
package/lib/encode-trie.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
export declare const getCodePoint: (str: string, index: number) => number;
|
|
2
2
|
export declare function encodeHTMLTrieRe(regExp: RegExp, str: string): string;
|
|
3
|
-
export interface TrieNode {
|
|
4
|
-
value?: string;
|
|
5
|
-
next?: Map<number, TrieNode>;
|
|
6
|
-
}
|
|
7
|
-
export declare function getTrie(map: Record<string, string>): Map<number, TrieNode>;
|
|
8
3
|
//# sourceMappingURL=encode-trie.d.ts.map
|
package/lib/encode-trie.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-trie.d.ts","sourceRoot":"","sources":["../src/encode-trie.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,QAGT,MAAM,SAAS,MAAM,KAAG,MAQD,CAAC;
|
|
1
|
+
{"version":3,"file":"encode-trie.d.ts","sourceRoot":"","sources":["../src/encode-trie.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,QAGT,MAAM,SAAS,MAAM,KAAG,MAQD,CAAC;AAExC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6CpE"}
|
package/lib/encode-trie.js
CHANGED
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
6
|
+
exports.encodeHTMLTrieRe = exports.getCodePoint = void 0;
|
|
7
|
+
var encode_html_js_1 = __importDefault(require("./generated/encode-html.js"));
|
|
8
8
|
function isHighSurrugate(c) {
|
|
9
9
|
return (c & 64512 /* Mask */) === 55296 /* High */;
|
|
10
10
|
}
|
|
@@ -22,7 +22,6 @@ String.prototype.codePointAt != null
|
|
|
22
22
|
0x10000
|
|
23
23
|
: c.charCodeAt(index);
|
|
24
24
|
};
|
|
25
|
-
var htmlTrie = getTrie(entities_json_1.default);
|
|
26
25
|
function encodeHTMLTrieRe(regExp, str) {
|
|
27
26
|
var _a;
|
|
28
27
|
var ret = "";
|
|
@@ -31,22 +30,30 @@ function encodeHTMLTrieRe(regExp, str) {
|
|
|
31
30
|
while ((match = regExp.exec(str)) !== null) {
|
|
32
31
|
var i = match.index;
|
|
33
32
|
var char = str.charCodeAt(i);
|
|
34
|
-
var next =
|
|
35
|
-
if (next) {
|
|
36
|
-
if (next
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
var next = encode_html_js_1.default.get(char);
|
|
34
|
+
if (next != null) {
|
|
35
|
+
if (typeof next !== "string") {
|
|
36
|
+
// We are in a branch. Try to match the next char.
|
|
37
|
+
if (i + 1 < str.length) {
|
|
38
|
+
var value = typeof next.n === "number"
|
|
39
|
+
? next.n === str.charCodeAt(i + 1)
|
|
40
|
+
? next.o
|
|
41
|
+
: null
|
|
42
|
+
: next.n.get(str.charCodeAt(i + 1));
|
|
43
|
+
if (value) {
|
|
44
|
+
ret += str.substring(lastIdx, i) + value;
|
|
45
|
+
lastIdx = regExp.lastIndex += 1;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
43
48
|
}
|
|
49
|
+
// If we have a character without a value, use a numeric entitiy.
|
|
50
|
+
next = (_a = next.v) !== null && _a !== void 0 ? _a : "&#x".concat(char.toString(16), ";");
|
|
44
51
|
}
|
|
45
|
-
ret += str.substring(lastIdx, i) + next
|
|
52
|
+
ret += str.substring(lastIdx, i) + next;
|
|
46
53
|
lastIdx = i + 1;
|
|
47
54
|
}
|
|
48
55
|
else {
|
|
49
|
-
ret += str.substring(lastIdx, i)
|
|
56
|
+
ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";");
|
|
50
57
|
// Increase by 1 if we have a surrogate pair
|
|
51
58
|
lastIdx = regExp.lastIndex += Number(isHighSurrugate(char));
|
|
52
59
|
}
|
|
@@ -54,24 +61,4 @@ function encodeHTMLTrieRe(regExp, str) {
|
|
|
54
61
|
return ret + str.substr(lastIdx);
|
|
55
62
|
}
|
|
56
63
|
exports.encodeHTMLTrieRe = encodeHTMLTrieRe;
|
|
57
|
-
|
|
58
|
-
var _a, _b, _c, _d;
|
|
59
|
-
var trie = new Map();
|
|
60
|
-
for (var _i = 0, _e = Object.keys(map); _i < _e.length; _i++) {
|
|
61
|
-
var value = _e[_i];
|
|
62
|
-
var key = map[value];
|
|
63
|
-
// Resolve the key
|
|
64
|
-
var lastMap = trie;
|
|
65
|
-
for (var i = 0; i < key.length - 1; i++) {
|
|
66
|
-
var char = key.charCodeAt(i);
|
|
67
|
-
var next = (_a = lastMap.get(char)) !== null && _a !== void 0 ? _a : {};
|
|
68
|
-
lastMap.set(char, next);
|
|
69
|
-
lastMap = (_b = next.next) !== null && _b !== void 0 ? _b : (next.next = new Map());
|
|
70
|
-
}
|
|
71
|
-
var val = (_c = lastMap.get(key.charCodeAt(key.length - 1))) !== null && _c !== void 0 ? _c : {};
|
|
72
|
-
(_d = val.value) !== null && _d !== void 0 ? _d : (val.value = "&" + value + ";");
|
|
73
|
-
lastMap.set(key.charCodeAt(key.length - 1), val);
|
|
74
|
-
}
|
|
75
|
-
return trie;
|
|
76
|
-
}
|
|
77
|
-
exports.getTrie = getTrie;
|
|
64
|
+
//# sourceMappingURL=encode-trie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-trie.js","sourceRoot":"","sources":["../src/encode-trie.ts"],"names":[],"mappings":"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"}
|
package/lib/encode.d.ts
CHANGED
|
@@ -42,5 +42,19 @@ export declare const escape: typeof encodeXML;
|
|
|
42
42
|
*
|
|
43
43
|
* @param data String to escape.
|
|
44
44
|
*/
|
|
45
|
-
export declare
|
|
45
|
+
export declare const escapeUTF8: (data: string) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Encodes all characters that have to be escaped in HTML attributes,
|
|
48
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
49
|
+
*
|
|
50
|
+
* @param data String to escape.
|
|
51
|
+
*/
|
|
52
|
+
export declare const escapeAttribute: (data: string) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Encodes all characters that have to be escaped in HTML text,
|
|
55
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
56
|
+
*
|
|
57
|
+
* @param data String to escape.
|
|
58
|
+
*/
|
|
59
|
+
export declare const escapeText: (data: string) => string;
|
|
46
60
|
//# sourceMappingURL=encode.d.ts.map
|
package/lib/encode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0B7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,kBAAY,CAAC;AA2BhC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,SA7Bb,MAAM,KAAK,MA6BuC,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SArClB,MAAM,KAAK,MA4CpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SApDb,MAAM,KAAK,MA4DpB,CAAC"}
|
package/lib/encode.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"&
|
|
16
|
-
]
|
|
3
|
+
exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;
|
|
4
|
+
var encode_trie_js_1 = require("./encode-trie.js");
|
|
5
|
+
var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
|
|
6
|
+
var xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
|
|
7
|
+
var xmlCodeMap = new Map([
|
|
8
|
+
[34, """],
|
|
9
|
+
[38, "&"],
|
|
10
|
+
[39, "'"],
|
|
11
|
+
[60, "<"],
|
|
12
|
+
[62, ">"],
|
|
13
|
+
]);
|
|
17
14
|
/**
|
|
18
15
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
19
16
|
* documents using XML entities.
|
|
@@ -34,7 +31,7 @@ function encodeXML(str) {
|
|
|
34
31
|
lastIdx = i + 1;
|
|
35
32
|
}
|
|
36
33
|
else {
|
|
37
|
-
ret += str.substring(lastIdx, i)
|
|
34
|
+
ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, encode_trie_js_1.getCodePoint)(str, i).toString(16), ";");
|
|
38
35
|
// Increase by 1 if we have a surrogate pair
|
|
39
36
|
lastIdx = xmlReplacer.lastIndex += Number((char & 65408) === 0xd800);
|
|
40
37
|
}
|
|
@@ -53,7 +50,7 @@ exports.encodeXML = encodeXML;
|
|
|
53
50
|
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
54
51
|
*/
|
|
55
52
|
function encodeHTML(data) {
|
|
56
|
-
return
|
|
53
|
+
return (0, encode_trie_js_1.encodeHTMLTrieRe)(htmlReplacer, data);
|
|
57
54
|
}
|
|
58
55
|
exports.encodeHTML = encodeHTML;
|
|
59
56
|
/**
|
|
@@ -64,33 +61,9 @@ exports.encodeHTML = encodeHTML;
|
|
|
64
61
|
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
65
62
|
*/
|
|
66
63
|
function encodeNonAsciiHTML(data) {
|
|
67
|
-
return
|
|
64
|
+
return (0, encode_trie_js_1.encodeHTMLTrieRe)(xmlReplacer, data);
|
|
68
65
|
}
|
|
69
66
|
exports.encodeNonAsciiHTML = encodeNonAsciiHTML;
|
|
70
|
-
function getCharRegExp(map, nonAscii) {
|
|
71
|
-
// Collect the start characters of all entities
|
|
72
|
-
var chars = Object.keys(map)
|
|
73
|
-
.map(function (k) { return "\\" + map[k].charAt(0); })
|
|
74
|
-
.filter(function (v) { return !nonAscii || v.charCodeAt(1) < 128; })
|
|
75
|
-
.sort(function (a, b) { return a.charCodeAt(1) - b.charCodeAt(1); })
|
|
76
|
-
// Remove duplicates
|
|
77
|
-
.filter(function (v, i, a) { return v !== a[i + 1]; });
|
|
78
|
-
// Add ranges to single characters.
|
|
79
|
-
for (var start = 0; start < chars.length - 1; start++) {
|
|
80
|
-
// Find the end of a run of characters
|
|
81
|
-
var end = start;
|
|
82
|
-
while (end < chars.length - 1 &&
|
|
83
|
-
chars[end].charCodeAt(1) + 1 === chars[end + 1].charCodeAt(1)) {
|
|
84
|
-
end += 1;
|
|
85
|
-
}
|
|
86
|
-
var count = 1 + end - start;
|
|
87
|
-
// We want to replace at least three characters
|
|
88
|
-
if (count < 3)
|
|
89
|
-
continue;
|
|
90
|
-
chars.splice(start, count, chars[start] + "-" + chars[end]);
|
|
91
|
-
}
|
|
92
|
-
return new RegExp("[" + chars.join("") + (nonAscii ? "\\x80-\\uFFFF" : "") + "]", "g");
|
|
93
|
-
}
|
|
94
67
|
/**
|
|
95
68
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
96
69
|
* documents using numeric hexadecimal reference (eg. `ü`).
|
|
@@ -101,6 +74,23 @@ function getCharRegExp(map, nonAscii) {
|
|
|
101
74
|
* @param data String to escape.
|
|
102
75
|
*/
|
|
103
76
|
exports.escape = encodeXML;
|
|
77
|
+
function getEscaper(regex, map) {
|
|
78
|
+
return function escape(data) {
|
|
79
|
+
var match;
|
|
80
|
+
var lastIdx = 0;
|
|
81
|
+
var result = "";
|
|
82
|
+
while ((match = regex.exec(data))) {
|
|
83
|
+
if (lastIdx !== match.index) {
|
|
84
|
+
result += data.substring(lastIdx, match.index);
|
|
85
|
+
}
|
|
86
|
+
// We know that this chararcter will be in the map.
|
|
87
|
+
result += map.get(match[0].charCodeAt(0));
|
|
88
|
+
// Every match will be of length 1
|
|
89
|
+
lastIdx = match.index + 1;
|
|
90
|
+
}
|
|
91
|
+
return result + data.substring(lastIdx);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
104
94
|
/**
|
|
105
95
|
* Encodes all characters not valid in XML documents using XML entities.
|
|
106
96
|
*
|
|
@@ -108,19 +98,28 @@ exports.escape = encodeXML;
|
|
|
108
98
|
*
|
|
109
99
|
* @param data String to escape.
|
|
110
100
|
*/
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
101
|
+
exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
|
|
102
|
+
/**
|
|
103
|
+
* Encodes all characters that have to be escaped in HTML attributes,
|
|
104
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
105
|
+
*
|
|
106
|
+
* @param data String to escape.
|
|
107
|
+
*/
|
|
108
|
+
exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
|
|
109
|
+
[34, """],
|
|
110
|
+
[38, "&"],
|
|
111
|
+
[160, " "],
|
|
112
|
+
]));
|
|
113
|
+
/**
|
|
114
|
+
* Encodes all characters that have to be escaped in HTML text,
|
|
115
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
116
|
+
*
|
|
117
|
+
* @param data String to escape.
|
|
118
|
+
*/
|
|
119
|
+
exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
|
|
120
|
+
[38, "&"],
|
|
121
|
+
[60, "<"],
|
|
122
|
+
[62, ">"],
|
|
123
|
+
[160, " "],
|
|
124
|
+
]));
|
|
125
|
+
//# sourceMappingURL=encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import htmlDecodeTree from "./generated/decode-data-html.js";
|
|
2
|
+
import xmlDecodeTree from "./generated/decode-data-xml.js";
|
|
3
|
+
import decodeCodePoint from "./decode_codepoint.js";
|
|
4
|
+
export { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };
|
|
5
|
+
export declare enum BinTrieFlags {
|
|
6
|
+
VALUE_LENGTH = 49152,
|
|
7
|
+
BRANCH_LENGTH = 16256,
|
|
8
|
+
JUMP_TABLE = 127
|
|
9
|
+
}
|
|
10
|
+
export declare function determineBranch(decodeTree: Uint16Array, current: number, nodeIdx: number, char: number): number;
|
|
11
|
+
export declare function decodeHTML(str: string): string;
|
|
12
|
+
export declare function decodeHTMLStrict(str: string): string;
|
|
13
|
+
export declare function decodeXML(str: string): string;
|
|
14
|
+
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAc1D,oBAAY,YAAY;IACpB,YAAY,QAAwB;IACpC,aAAa,QAAwB;IACrC,UAAU,MAAwB;CACrC;AA8GD,wBAAgB,eAAe,CAC3B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACb,MAAM,CAsCR;AAKD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|