@fairfox/polly 0.91.0 → 0.92.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/dist/cli/polly.js +3 -3
- package/dist/cli/polly.js.map +3 -3
- package/dist/gallery/gallery.css +2 -2
- package/dist/gallery/gallery.js +248 -241
- package/dist/src/background/index.js +27 -11
- package/dist/src/background/index.js.map +2 -2
- package/dist/src/background/message-router.js +27 -11
- package/dist/src/background/message-router.js.map +2 -2
- package/dist/src/client/index.js +56 -56
- package/dist/src/client/index.js.map +4 -4
- package/dist/src/elysia/index.js +16 -7
- package/dist/src/elysia/index.js.map +4 -4
- package/dist/src/elysia/plugin.d.ts +4 -4
- package/dist/src/index.js +27 -11
- package/dist/src/index.js.map +2 -2
- package/dist/src/mesh.js +2 -2
- package/dist/src/mesh.js.map +3 -3
- package/dist/src/peer.js +6 -6
- package/dist/src/peer.js.map +3 -3
- package/dist/src/polly-ui/index.css +2 -2
- package/dist/src/polly-ui/markdown.js +1844 -1010
- package/dist/src/polly-ui/markdown.js.map +5 -5
- package/dist/src/polly-ui/styles.css +2 -2
- package/dist/src/shared/adapters/index.js +27 -11
- package/dist/src/shared/adapters/index.js.map +2 -2
- package/dist/src/shared/lib/context-helpers.js +27 -11
- package/dist/src/shared/lib/context-helpers.js.map +2 -2
- package/dist/src/shared/lib/message-bus.js +27 -11
- package/dist/src/shared/lib/message-bus.js.map +2 -2
- package/dist/src/shared/lib/resource.js +17 -1
- package/dist/src/shared/lib/resource.js.map +2 -2
- package/dist/src/shared/lib/state.js +17 -1
- package/dist/src/shared/lib/state.js.map +2 -2
- package/dist/src/shared/state/app-state.js +17 -1
- package/dist/src/shared/state/app-state.js.map +2 -2
- package/dist/tools/bdd/src/cli.js +20 -2
- package/dist/tools/bdd/src/cli.js.map +4 -4
- package/dist/tools/bdd/src/index.js +20 -2
- package/dist/tools/bdd/src/index.js.map +3 -3
- package/dist/tools/init/templates/pwa/package.json.template +2 -3
- package/dist/tools/mutate/src/args.d.ts +25 -3
- package/dist/tools/mutate/src/cli.js +3238 -312
- package/dist/tools/mutate/src/cli.js.map +32 -12
- package/dist/tools/mutate/src/config.d.ts +13 -2
- package/dist/tools/mutate/src/define.d.ts +76 -0
- package/dist/tools/mutate/src/engine/ast.d.ts +13 -0
- package/dist/tools/mutate/src/engine/baseline.d.ts +20 -0
- package/dist/tools/mutate/src/engine/cache.d.ts +32 -0
- package/dist/tools/mutate/src/engine/coverage.d.ts +60 -0
- package/dist/tools/mutate/src/engine/generate.d.ts +23 -0
- package/dist/tools/mutate/src/engine/graph.d.ts +11 -0
- package/dist/tools/mutate/src/engine/index.d.ts +16 -0
- package/dist/tools/mutate/src/engine/junit.d.ts +38 -0
- package/dist/tools/mutate/src/engine/operators.d.ts +14 -0
- package/dist/tools/mutate/src/engine/preload.d.ts +10 -0
- package/dist/tools/mutate/src/engine/preload.js +180 -0
- package/dist/tools/mutate/src/engine/preload.js.map +10 -0
- package/dist/tools/mutate/src/engine/probes.d.ts +12 -0
- package/dist/tools/mutate/src/engine/report-writer.d.ts +44 -0
- package/dist/tools/mutate/src/engine/runner.d.ts +31 -0
- package/dist/tools/mutate/src/engine/stray-writes.d.ts +25 -0
- package/dist/tools/mutate/src/engine/typecheck.d.ts +37 -0
- package/dist/tools/mutate/src/engine/types.d.ts +191 -0
- package/dist/tools/mutate/src/engine/verify-callsites.d.ts +9 -0
- package/dist/tools/mutate/src/engine/workdir.d.ts +16 -0
- package/dist/tools/mutate/src/engine-config.d.ts +7 -0
- package/dist/tools/mutate/src/index.d.ts +7 -3
- package/dist/tools/mutate/src/index.js +2821 -193
- package/dist/tools/mutate/src/index.js.map +26 -7
- package/dist/tools/mutate/src/ingest.d.ts +30 -1
- package/dist/tools/mutate/src/init.d.ts +2 -1
- package/dist/tools/mutate/src/migrate.d.ts +32 -0
- package/dist/tools/mutate/src/report.d.ts +3 -0
- package/dist/tools/mutate/src/run.d.ts +17 -8
- package/dist/tools/mutate/src/verify-matrix.d.ts +12 -15
- package/dist/tools/quality/src/cli.js +9 -9
- package/dist/tools/quality/src/cli.js.map +4 -4
- package/dist/tools/quality/src/index.js +9 -9
- package/dist/tools/quality/src/index.js.map +4 -4
- package/dist/tools/quality/src/no-tautology-ensures.d.ts +2 -2
- package/dist/tools/quality/src/plugins/import-checks.d.ts +1 -1
- package/dist/tools/test/src/adapters/index.js +3 -2
- package/dist/tools/test/src/adapters/index.js.map +3 -3
- package/dist/tools/test/src/coverage-policy/cli.d.ts +2 -2
- package/dist/tools/test/src/coverage-policy/cli.js +217 -17
- package/dist/tools/test/src/coverage-policy/cli.js.map +7 -5
- package/dist/tools/test/src/coverage-policy/index.d.ts +1 -1
- package/dist/tools/test/src/coverage-policy/index.js +213 -12
- package/dist/tools/test/src/coverage-policy/index.js.map +7 -5
- package/dist/tools/test/src/coverage-policy/mutate-targets.d.ts +29 -12
- package/dist/tools/test/src/e2e-mesh/index.js +6 -6
- package/dist/tools/test/src/e2e-mesh/index.js.map +4 -4
- package/dist/tools/test/src/e2e-relay/index.js +230 -226
- package/dist/tools/test/src/e2e-relay/index.js.map +7 -7
- package/dist/tools/test/src/index.js +3 -2
- package/dist/tools/test/src/index.js.map +3 -3
- package/dist/tools/test/src/visual/index.js +684 -511
- package/dist/tools/test/src/visual/index.js.map +11 -11
- package/dist/tools/verify/src/cli.js +17 -2
- package/dist/tools/verify/src/cli.js.map +4 -4
- package/dist/tools/verify/src/config.d.ts +1 -1
- package/dist/tools/verify/src/config.js +68 -3
- package/dist/tools/verify/src/config.js.map +4 -4
- package/dist/tools/verify/src/primitives/index.d.ts +34 -0
- package/dist/tools/visualize/src/cli.js +16 -1
- package/dist/tools/visualize/src/cli.js.map +3 -3
- package/package.json +29 -39
- package/dist/tools/verify/src/stryker/index.d.ts +0 -32
- package/dist/tools/verify/src/stryker/index.js +0 -86
- package/dist/tools/verify/src/stryker/index.js.map +0 -10
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
// ../../node_modules/.bun/dompurify@3.4.
|
|
2
|
-
/*! @license DOMPurify 3.4.
|
|
1
|
+
// ../../node_modules/.bun/dompurify@3.4.17/node_modules/dompurify/dist/purify.es.mjs
|
|
2
|
+
/*! @license DOMPurify 3.4.17 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.17/LICENSE */
|
|
3
|
+
function _OverloadYield(e, d) {
|
|
4
|
+
this.v = e, this.k = d;
|
|
5
|
+
}
|
|
3
6
|
function _arrayLikeToArray(r, a) {
|
|
4
7
|
(a == null || a > r.length) && (a = r.length);
|
|
5
8
|
for (var e = 0, n = Array(a);e < a; e++)
|
|
@@ -15,9 +18,11 @@ function _iterableToArrayLimit(r, l) {
|
|
|
15
18
|
if (t != null) {
|
|
16
19
|
var e, n, i, u, a = [], f = true, o = false;
|
|
17
20
|
try {
|
|
18
|
-
if (i = (t = t.call(r)).next, l === 0)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
if (i = (t = t.call(r)).next, l === 0) {
|
|
22
|
+
if (Object(t) !== t)
|
|
23
|
+
return;
|
|
24
|
+
f = false;
|
|
25
|
+
} else
|
|
21
26
|
for (;!(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true)
|
|
22
27
|
;
|
|
23
28
|
} catch (r) {
|
|
@@ -38,6 +43,7 @@ function _nonIterableRest() {
|
|
|
38
43
|
throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
39
44
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
|
|
40
45
|
}
|
|
46
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
41
47
|
function _slicedToArray(r, e) {
|
|
42
48
|
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
43
49
|
}
|
|
@@ -49,6 +55,54 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
49
55
|
return t === "Object" && r.constructor && (t = r.constructor.name), t === "Map" || t === "Set" ? Array.from(r) : t === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : undefined;
|
|
50
56
|
}
|
|
51
57
|
}
|
|
58
|
+
function AsyncGenerator(e) {
|
|
59
|
+
var t, n;
|
|
60
|
+
function resume(t, n) {
|
|
61
|
+
try {
|
|
62
|
+
var r = e[t](n), o = r.value, u = o instanceof _OverloadYield;
|
|
63
|
+
Promise.resolve(u ? o.v : o).then(function(n) {
|
|
64
|
+
if (u) {
|
|
65
|
+
var i = t === "return" && o.k ? t : "next";
|
|
66
|
+
if (!o.k || n.done)
|
|
67
|
+
return resume(i, n);
|
|
68
|
+
n = e[i](n).value;
|
|
69
|
+
}
|
|
70
|
+
settle(!!r.done, n);
|
|
71
|
+
}, function(e) {
|
|
72
|
+
resume("throw", e);
|
|
73
|
+
});
|
|
74
|
+
} catch (e) {
|
|
75
|
+
settle(2, e);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function settle(e, r) {
|
|
79
|
+
e === 2 ? t.reject(r) : t.resolve({
|
|
80
|
+
value: r,
|
|
81
|
+
done: e
|
|
82
|
+
}), (t = t.next) ? resume(t.key, t.arg) : n = null;
|
|
83
|
+
}
|
|
84
|
+
this._invoke = function(e, r) {
|
|
85
|
+
return new Promise(function(o, u) {
|
|
86
|
+
var i = {
|
|
87
|
+
key: e,
|
|
88
|
+
arg: r,
|
|
89
|
+
resolve: o,
|
|
90
|
+
reject: u,
|
|
91
|
+
next: null
|
|
92
|
+
};
|
|
93
|
+
n ? n = n.next = i : (t = n = i, resume(e, r));
|
|
94
|
+
});
|
|
95
|
+
}, typeof e.return != "function" && (this.return = undefined);
|
|
96
|
+
}
|
|
97
|
+
AsyncGenerator.prototype[typeof Symbol == "function" && Symbol.asyncIterator || "@@asyncIterator"] = function() {
|
|
98
|
+
return this;
|
|
99
|
+
}, AsyncGenerator.prototype.next = function(e) {
|
|
100
|
+
return this._invoke("next", e);
|
|
101
|
+
}, AsyncGenerator.prototype.throw = function(e) {
|
|
102
|
+
return this._invoke("throw", e);
|
|
103
|
+
}, AsyncGenerator.prototype.return = function(e) {
|
|
104
|
+
return this._invoke("return", e);
|
|
105
|
+
};
|
|
52
106
|
var entries = Object.entries;
|
|
53
107
|
var setPrototypeOf = Object.setPrototypeOf;
|
|
54
108
|
var isFrozen = Object.isFrozen;
|
|
@@ -60,38 +114,37 @@ var create = Object.create;
|
|
|
60
114
|
var _ref = typeof Reflect !== "undefined" && Reflect;
|
|
61
115
|
var apply = _ref.apply;
|
|
62
116
|
var construct = _ref.construct;
|
|
63
|
-
if (!freeze)
|
|
117
|
+
if (!freeze)
|
|
64
118
|
freeze = function freeze(x) {
|
|
65
119
|
return x;
|
|
66
120
|
};
|
|
67
|
-
|
|
68
|
-
if (!seal) {
|
|
121
|
+
if (!seal)
|
|
69
122
|
seal = function seal(x) {
|
|
70
123
|
return x;
|
|
71
124
|
};
|
|
72
|
-
|
|
73
|
-
if (!apply) {
|
|
125
|
+
if (!apply)
|
|
74
126
|
apply = function apply(func, thisArg) {
|
|
75
|
-
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2;_key < _len; _key++)
|
|
127
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2;_key < _len; _key++)
|
|
76
128
|
args[_key - 2] = arguments[_key];
|
|
77
|
-
}
|
|
78
129
|
return func.apply(thisArg, args);
|
|
79
130
|
};
|
|
80
|
-
|
|
81
|
-
if (!construct) {
|
|
131
|
+
if (!construct)
|
|
82
132
|
construct = function construct(Func) {
|
|
83
|
-
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1;_key2 < _len2; _key2++)
|
|
133
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1;_key2 < _len2; _key2++)
|
|
84
134
|
args[_key2 - 1] = arguments[_key2];
|
|
85
|
-
}
|
|
86
135
|
return new Func(...args);
|
|
87
136
|
};
|
|
88
|
-
}
|
|
89
137
|
var arrayForEach = unapply(Array.prototype.forEach);
|
|
138
|
+
Array.prototype.indexOf;
|
|
90
139
|
var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
|
|
91
140
|
var arrayPop = unapply(Array.prototype.pop);
|
|
92
141
|
var arrayPush = unapply(Array.prototype.push);
|
|
142
|
+
var arraySlice = unapply(Array.prototype.slice);
|
|
93
143
|
var arraySplice = unapply(Array.prototype.splice);
|
|
94
144
|
var arrayIsArray = Array.isArray;
|
|
145
|
+
var setCreate = unconstruct(Set);
|
|
146
|
+
var setAdd = unapply(Set.prototype.add);
|
|
147
|
+
var setHas = unapply(Set.prototype.has);
|
|
95
148
|
var stringToLowerCase = unapply(String.prototype.toLowerCase);
|
|
96
149
|
var stringToString = unapply(String.prototype.toString);
|
|
97
150
|
var stringMatch = unapply(String.prototype.match);
|
|
@@ -108,40 +161,34 @@ var regExpTest = unapply(RegExp.prototype.test);
|
|
|
108
161
|
var typeErrorCreate = unconstruct(TypeError);
|
|
109
162
|
function unapply(func) {
|
|
110
163
|
return function(thisArg) {
|
|
111
|
-
if (thisArg instanceof RegExp)
|
|
164
|
+
if (thisArg instanceof RegExp)
|
|
112
165
|
thisArg.lastIndex = 0;
|
|
113
|
-
|
|
114
|
-
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1;_key3 < _len3; _key3++) {
|
|
166
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1;_key3 < _len3; _key3++)
|
|
115
167
|
args[_key3 - 1] = arguments[_key3];
|
|
116
|
-
}
|
|
117
168
|
return apply(func, thisArg, args);
|
|
118
169
|
};
|
|
119
170
|
}
|
|
120
171
|
function unconstruct(Func) {
|
|
121
172
|
return function() {
|
|
122
|
-
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;_key4 < _len4; _key4++)
|
|
173
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;_key4 < _len4; _key4++)
|
|
123
174
|
args[_key4] = arguments[_key4];
|
|
124
|
-
}
|
|
125
175
|
return construct(Func, args);
|
|
126
176
|
};
|
|
127
177
|
}
|
|
128
178
|
function addToSet(set, array) {
|
|
129
179
|
let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
|
|
130
|
-
if (setPrototypeOf)
|
|
180
|
+
if (setPrototypeOf)
|
|
131
181
|
setPrototypeOf(set, null);
|
|
132
|
-
|
|
133
|
-
if (!arrayIsArray(array)) {
|
|
182
|
+
if (!arrayIsArray(array))
|
|
134
183
|
return set;
|
|
135
|
-
}
|
|
136
184
|
let l = array.length;
|
|
137
185
|
while (l--) {
|
|
138
186
|
let element = array[l];
|
|
139
187
|
if (typeof element === "string") {
|
|
140
188
|
const lcElement = transformCaseFunc(element);
|
|
141
189
|
if (lcElement !== element) {
|
|
142
|
-
if (!isFrozen(array))
|
|
190
|
+
if (!isFrozen(array))
|
|
143
191
|
array[l] = lcElement;
|
|
144
|
-
}
|
|
145
192
|
element = lcElement;
|
|
146
193
|
}
|
|
147
194
|
}
|
|
@@ -150,12 +197,9 @@ function addToSet(set, array) {
|
|
|
150
197
|
return set;
|
|
151
198
|
}
|
|
152
199
|
function cleanArray(array) {
|
|
153
|
-
for (let index = 0;index < array.length; index++)
|
|
154
|
-
|
|
155
|
-
if (!isPropertyExist) {
|
|
200
|
+
for (let index = 0;index < array.length; index++)
|
|
201
|
+
if (!objectHasOwnProperty(array, index))
|
|
156
202
|
array[index] = null;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
203
|
return array;
|
|
160
204
|
}
|
|
161
205
|
function clone(object) {
|
|
@@ -164,44 +208,35 @@ function clone(object) {
|
|
|
164
208
|
var _ref3 = _slicedToArray(_ref2, 2);
|
|
165
209
|
const property = _ref3[0];
|
|
166
210
|
const value = _ref3[1];
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (arrayIsArray(value)) {
|
|
211
|
+
if (objectHasOwnProperty(object, property)) {
|
|
212
|
+
if (arrayIsArray(value))
|
|
170
213
|
newObject[property] = cleanArray(value);
|
|
171
|
-
|
|
214
|
+
else if (value && typeof value === "object" && value.constructor === Object)
|
|
172
215
|
newObject[property] = clone(value);
|
|
173
|
-
|
|
216
|
+
else
|
|
174
217
|
newObject[property] = value;
|
|
175
|
-
}
|
|
176
218
|
}
|
|
177
219
|
}
|
|
178
220
|
return newObject;
|
|
179
221
|
}
|
|
180
222
|
function stringifyValue(value) {
|
|
181
223
|
switch (typeof value) {
|
|
182
|
-
case "string":
|
|
224
|
+
case "string":
|
|
183
225
|
return value;
|
|
184
|
-
|
|
185
|
-
case "number": {
|
|
226
|
+
case "number":
|
|
186
227
|
return numberToString(value);
|
|
187
|
-
|
|
188
|
-
case "boolean": {
|
|
228
|
+
case "boolean":
|
|
189
229
|
return booleanToString(value);
|
|
190
|
-
|
|
191
|
-
case "bigint": {
|
|
230
|
+
case "bigint":
|
|
192
231
|
return bigintToString ? bigintToString(value) : "0";
|
|
193
|
-
|
|
194
|
-
case "symbol": {
|
|
232
|
+
case "symbol":
|
|
195
233
|
return symbolToString ? symbolToString(value) : "Symbol()";
|
|
196
|
-
|
|
197
|
-
case "undefined": {
|
|
234
|
+
case "undefined":
|
|
198
235
|
return objectToString(value);
|
|
199
|
-
}
|
|
200
236
|
case "function":
|
|
201
237
|
case "object": {
|
|
202
|
-
if (value === null)
|
|
238
|
+
if (value === null)
|
|
203
239
|
return objectToString(value);
|
|
204
|
-
}
|
|
205
240
|
const valueAsRecord = value;
|
|
206
241
|
const valueToString = lookupGetter(valueAsRecord, "toString");
|
|
207
242
|
if (typeof valueToString === "function") {
|
|
@@ -210,21 +245,18 @@ function stringifyValue(value) {
|
|
|
210
245
|
}
|
|
211
246
|
return objectToString(value);
|
|
212
247
|
}
|
|
213
|
-
default:
|
|
248
|
+
default:
|
|
214
249
|
return objectToString(value);
|
|
215
|
-
}
|
|
216
250
|
}
|
|
217
251
|
}
|
|
218
252
|
function lookupGetter(object, prop) {
|
|
219
253
|
while (object !== null) {
|
|
220
254
|
const desc = getOwnPropertyDescriptor(object, prop);
|
|
221
255
|
if (desc) {
|
|
222
|
-
if (desc.get)
|
|
256
|
+
if (desc.get)
|
|
223
257
|
return unapply(desc.get);
|
|
224
|
-
|
|
225
|
-
if (typeof desc.value === "function") {
|
|
258
|
+
if (typeof desc.value === "function")
|
|
226
259
|
return unapply(desc.value);
|
|
227
|
-
}
|
|
228
260
|
}
|
|
229
261
|
object = getPrototypeOf(object);
|
|
230
262
|
}
|
|
@@ -233,6 +265,15 @@ function lookupGetter(object, prop) {
|
|
|
233
265
|
}
|
|
234
266
|
return fallbackValue;
|
|
235
267
|
}
|
|
268
|
+
function lookupAccessor(object, prop) {
|
|
269
|
+
while (object !== null) {
|
|
270
|
+
const desc = getOwnPropertyDescriptor(object, prop);
|
|
271
|
+
if (desc)
|
|
272
|
+
return desc.get ? unapply(desc.get) : null;
|
|
273
|
+
object = getPrototypeOf(object);
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
236
277
|
function isRegex(value) {
|
|
237
278
|
try {
|
|
238
279
|
regExpTest(value, "");
|
|
@@ -241,17 +282,654 @@ function isRegex(value) {
|
|
|
241
282
|
return false;
|
|
242
283
|
}
|
|
243
284
|
}
|
|
244
|
-
var html$1 = freeze([
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
285
|
+
var html$1 = freeze([
|
|
286
|
+
"a",
|
|
287
|
+
"abbr",
|
|
288
|
+
"acronym",
|
|
289
|
+
"address",
|
|
290
|
+
"area",
|
|
291
|
+
"article",
|
|
292
|
+
"aside",
|
|
293
|
+
"audio",
|
|
294
|
+
"b",
|
|
295
|
+
"bdi",
|
|
296
|
+
"bdo",
|
|
297
|
+
"big",
|
|
298
|
+
"blink",
|
|
299
|
+
"blockquote",
|
|
300
|
+
"body",
|
|
301
|
+
"br",
|
|
302
|
+
"button",
|
|
303
|
+
"canvas",
|
|
304
|
+
"caption",
|
|
305
|
+
"center",
|
|
306
|
+
"cite",
|
|
307
|
+
"code",
|
|
308
|
+
"col",
|
|
309
|
+
"colgroup",
|
|
310
|
+
"content",
|
|
311
|
+
"data",
|
|
312
|
+
"datalist",
|
|
313
|
+
"dd",
|
|
314
|
+
"decorator",
|
|
315
|
+
"del",
|
|
316
|
+
"details",
|
|
317
|
+
"dfn",
|
|
318
|
+
"dialog",
|
|
319
|
+
"dir",
|
|
320
|
+
"div",
|
|
321
|
+
"dl",
|
|
322
|
+
"dt",
|
|
323
|
+
"element",
|
|
324
|
+
"em",
|
|
325
|
+
"fieldset",
|
|
326
|
+
"figcaption",
|
|
327
|
+
"figure",
|
|
328
|
+
"font",
|
|
329
|
+
"footer",
|
|
330
|
+
"form",
|
|
331
|
+
"h1",
|
|
332
|
+
"h2",
|
|
333
|
+
"h3",
|
|
334
|
+
"h4",
|
|
335
|
+
"h5",
|
|
336
|
+
"h6",
|
|
337
|
+
"head",
|
|
338
|
+
"header",
|
|
339
|
+
"hgroup",
|
|
340
|
+
"hr",
|
|
341
|
+
"html",
|
|
342
|
+
"i",
|
|
343
|
+
"img",
|
|
344
|
+
"input",
|
|
345
|
+
"ins",
|
|
346
|
+
"kbd",
|
|
347
|
+
"label",
|
|
348
|
+
"legend",
|
|
349
|
+
"li",
|
|
350
|
+
"main",
|
|
351
|
+
"map",
|
|
352
|
+
"mark",
|
|
353
|
+
"marquee",
|
|
354
|
+
"menu",
|
|
355
|
+
"menuitem",
|
|
356
|
+
"meter",
|
|
357
|
+
"nav",
|
|
358
|
+
"nobr",
|
|
359
|
+
"ol",
|
|
360
|
+
"optgroup",
|
|
361
|
+
"option",
|
|
362
|
+
"output",
|
|
363
|
+
"p",
|
|
364
|
+
"picture",
|
|
365
|
+
"pre",
|
|
366
|
+
"progress",
|
|
367
|
+
"q",
|
|
368
|
+
"rp",
|
|
369
|
+
"rt",
|
|
370
|
+
"ruby",
|
|
371
|
+
"s",
|
|
372
|
+
"samp",
|
|
373
|
+
"search",
|
|
374
|
+
"section",
|
|
375
|
+
"select",
|
|
376
|
+
"shadow",
|
|
377
|
+
"slot",
|
|
378
|
+
"small",
|
|
379
|
+
"source",
|
|
380
|
+
"spacer",
|
|
381
|
+
"span",
|
|
382
|
+
"strike",
|
|
383
|
+
"strong",
|
|
384
|
+
"style",
|
|
385
|
+
"sub",
|
|
386
|
+
"summary",
|
|
387
|
+
"sup",
|
|
388
|
+
"table",
|
|
389
|
+
"tbody",
|
|
390
|
+
"td",
|
|
391
|
+
"template",
|
|
392
|
+
"textarea",
|
|
393
|
+
"tfoot",
|
|
394
|
+
"th",
|
|
395
|
+
"thead",
|
|
396
|
+
"time",
|
|
397
|
+
"tr",
|
|
398
|
+
"track",
|
|
399
|
+
"tt",
|
|
400
|
+
"u",
|
|
401
|
+
"ul",
|
|
402
|
+
"var",
|
|
403
|
+
"video",
|
|
404
|
+
"wbr"
|
|
405
|
+
]);
|
|
406
|
+
var svg$1 = freeze([
|
|
407
|
+
"svg",
|
|
408
|
+
"a",
|
|
409
|
+
"altglyph",
|
|
410
|
+
"altglyphdef",
|
|
411
|
+
"altglyphitem",
|
|
412
|
+
"animatecolor",
|
|
413
|
+
"animatemotion",
|
|
414
|
+
"animatetransform",
|
|
415
|
+
"circle",
|
|
416
|
+
"clippath",
|
|
417
|
+
"defs",
|
|
418
|
+
"desc",
|
|
419
|
+
"ellipse",
|
|
420
|
+
"enterkeyhint",
|
|
421
|
+
"exportparts",
|
|
422
|
+
"filter",
|
|
423
|
+
"font",
|
|
424
|
+
"g",
|
|
425
|
+
"glyph",
|
|
426
|
+
"glyphref",
|
|
427
|
+
"hkern",
|
|
428
|
+
"image",
|
|
429
|
+
"inputmode",
|
|
430
|
+
"line",
|
|
431
|
+
"lineargradient",
|
|
432
|
+
"marker",
|
|
433
|
+
"mask",
|
|
434
|
+
"metadata",
|
|
435
|
+
"mpath",
|
|
436
|
+
"part",
|
|
437
|
+
"path",
|
|
438
|
+
"pattern",
|
|
439
|
+
"polygon",
|
|
440
|
+
"polyline",
|
|
441
|
+
"radialgradient",
|
|
442
|
+
"rect",
|
|
443
|
+
"stop",
|
|
444
|
+
"style",
|
|
445
|
+
"switch",
|
|
446
|
+
"symbol",
|
|
447
|
+
"text",
|
|
448
|
+
"textpath",
|
|
449
|
+
"title",
|
|
450
|
+
"tref",
|
|
451
|
+
"tspan",
|
|
452
|
+
"view",
|
|
453
|
+
"vkern"
|
|
454
|
+
]);
|
|
455
|
+
var svgFilters = freeze([
|
|
456
|
+
"feBlend",
|
|
457
|
+
"feColorMatrix",
|
|
458
|
+
"feComponentTransfer",
|
|
459
|
+
"feComposite",
|
|
460
|
+
"feConvolveMatrix",
|
|
461
|
+
"feDiffuseLighting",
|
|
462
|
+
"feDisplacementMap",
|
|
463
|
+
"feDistantLight",
|
|
464
|
+
"feDropShadow",
|
|
465
|
+
"feFlood",
|
|
466
|
+
"feFuncA",
|
|
467
|
+
"feFuncB",
|
|
468
|
+
"feFuncG",
|
|
469
|
+
"feFuncR",
|
|
470
|
+
"feGaussianBlur",
|
|
471
|
+
"feImage",
|
|
472
|
+
"feMerge",
|
|
473
|
+
"feMergeNode",
|
|
474
|
+
"feMorphology",
|
|
475
|
+
"feOffset",
|
|
476
|
+
"fePointLight",
|
|
477
|
+
"feSpecularLighting",
|
|
478
|
+
"feSpotLight",
|
|
479
|
+
"feTile",
|
|
480
|
+
"feTurbulence"
|
|
481
|
+
]);
|
|
482
|
+
var svgDisallowed = freeze([
|
|
483
|
+
"animate",
|
|
484
|
+
"color-profile",
|
|
485
|
+
"cursor",
|
|
486
|
+
"discard",
|
|
487
|
+
"font-face",
|
|
488
|
+
"font-face-format",
|
|
489
|
+
"font-face-name",
|
|
490
|
+
"font-face-src",
|
|
491
|
+
"font-face-uri",
|
|
492
|
+
"foreignobject",
|
|
493
|
+
"hatch",
|
|
494
|
+
"hatchpath",
|
|
495
|
+
"mesh",
|
|
496
|
+
"meshgradient",
|
|
497
|
+
"meshpatch",
|
|
498
|
+
"meshrow",
|
|
499
|
+
"missing-glyph",
|
|
500
|
+
"script",
|
|
501
|
+
"set",
|
|
502
|
+
"solidcolor",
|
|
503
|
+
"unknown",
|
|
504
|
+
"use"
|
|
505
|
+
]);
|
|
506
|
+
var mathMl$1 = freeze([
|
|
507
|
+
"math",
|
|
508
|
+
"menclose",
|
|
509
|
+
"merror",
|
|
510
|
+
"mfenced",
|
|
511
|
+
"mfrac",
|
|
512
|
+
"mglyph",
|
|
513
|
+
"mi",
|
|
514
|
+
"mlabeledtr",
|
|
515
|
+
"mmultiscripts",
|
|
516
|
+
"mn",
|
|
517
|
+
"mo",
|
|
518
|
+
"mover",
|
|
519
|
+
"mpadded",
|
|
520
|
+
"mphantom",
|
|
521
|
+
"mroot",
|
|
522
|
+
"mrow",
|
|
523
|
+
"ms",
|
|
524
|
+
"mspace",
|
|
525
|
+
"msqrt",
|
|
526
|
+
"mstyle",
|
|
527
|
+
"msub",
|
|
528
|
+
"msup",
|
|
529
|
+
"msubsup",
|
|
530
|
+
"mtable",
|
|
531
|
+
"mtd",
|
|
532
|
+
"mtext",
|
|
533
|
+
"mtr",
|
|
534
|
+
"munder",
|
|
535
|
+
"munderover",
|
|
536
|
+
"mprescripts"
|
|
537
|
+
]);
|
|
538
|
+
var mathMlDisallowed = freeze([
|
|
539
|
+
"maction",
|
|
540
|
+
"maligngroup",
|
|
541
|
+
"malignmark",
|
|
542
|
+
"mlongdiv",
|
|
543
|
+
"mscarries",
|
|
544
|
+
"mscarry",
|
|
545
|
+
"msgroup",
|
|
546
|
+
"mstack",
|
|
547
|
+
"msline",
|
|
548
|
+
"msrow",
|
|
549
|
+
"semantics",
|
|
550
|
+
"annotation",
|
|
551
|
+
"annotation-xml",
|
|
552
|
+
"mprescripts",
|
|
553
|
+
"none"
|
|
554
|
+
]);
|
|
250
555
|
var text = freeze(["#text"]);
|
|
251
|
-
var html = freeze([
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
556
|
+
var html = freeze([
|
|
557
|
+
"accept",
|
|
558
|
+
"action",
|
|
559
|
+
"align",
|
|
560
|
+
"alt",
|
|
561
|
+
"autocapitalize",
|
|
562
|
+
"autocomplete",
|
|
563
|
+
"autopictureinpicture",
|
|
564
|
+
"autoplay",
|
|
565
|
+
"background",
|
|
566
|
+
"bgcolor",
|
|
567
|
+
"border",
|
|
568
|
+
"capture",
|
|
569
|
+
"cellpadding",
|
|
570
|
+
"cellspacing",
|
|
571
|
+
"checked",
|
|
572
|
+
"cite",
|
|
573
|
+
"class",
|
|
574
|
+
"clear",
|
|
575
|
+
"color",
|
|
576
|
+
"cols",
|
|
577
|
+
"colspan",
|
|
578
|
+
"command",
|
|
579
|
+
"commandfor",
|
|
580
|
+
"controls",
|
|
581
|
+
"controlslist",
|
|
582
|
+
"coords",
|
|
583
|
+
"crossorigin",
|
|
584
|
+
"datetime",
|
|
585
|
+
"decoding",
|
|
586
|
+
"default",
|
|
587
|
+
"dir",
|
|
588
|
+
"disabled",
|
|
589
|
+
"disablepictureinpicture",
|
|
590
|
+
"disableremoteplayback",
|
|
591
|
+
"download",
|
|
592
|
+
"draggable",
|
|
593
|
+
"enctype",
|
|
594
|
+
"enterkeyhint",
|
|
595
|
+
"exportparts",
|
|
596
|
+
"face",
|
|
597
|
+
"for",
|
|
598
|
+
"headers",
|
|
599
|
+
"height",
|
|
600
|
+
"hidden",
|
|
601
|
+
"high",
|
|
602
|
+
"href",
|
|
603
|
+
"hreflang",
|
|
604
|
+
"id",
|
|
605
|
+
"inert",
|
|
606
|
+
"inputmode",
|
|
607
|
+
"integrity",
|
|
608
|
+
"ismap",
|
|
609
|
+
"kind",
|
|
610
|
+
"label",
|
|
611
|
+
"lang",
|
|
612
|
+
"list",
|
|
613
|
+
"loading",
|
|
614
|
+
"loop",
|
|
615
|
+
"low",
|
|
616
|
+
"max",
|
|
617
|
+
"maxlength",
|
|
618
|
+
"media",
|
|
619
|
+
"method",
|
|
620
|
+
"min",
|
|
621
|
+
"minlength",
|
|
622
|
+
"multiple",
|
|
623
|
+
"muted",
|
|
624
|
+
"name",
|
|
625
|
+
"nonce",
|
|
626
|
+
"noshade",
|
|
627
|
+
"novalidate",
|
|
628
|
+
"nowrap",
|
|
629
|
+
"open",
|
|
630
|
+
"optimum",
|
|
631
|
+
"part",
|
|
632
|
+
"pattern",
|
|
633
|
+
"placeholder",
|
|
634
|
+
"playsinline",
|
|
635
|
+
"popover",
|
|
636
|
+
"popovertarget",
|
|
637
|
+
"popovertargetaction",
|
|
638
|
+
"poster",
|
|
639
|
+
"preload",
|
|
640
|
+
"pubdate",
|
|
641
|
+
"radiogroup",
|
|
642
|
+
"readonly",
|
|
643
|
+
"rel",
|
|
644
|
+
"required",
|
|
645
|
+
"rev",
|
|
646
|
+
"reversed",
|
|
647
|
+
"role",
|
|
648
|
+
"rows",
|
|
649
|
+
"rowspan",
|
|
650
|
+
"spellcheck",
|
|
651
|
+
"scope",
|
|
652
|
+
"selected",
|
|
653
|
+
"shape",
|
|
654
|
+
"size",
|
|
655
|
+
"sizes",
|
|
656
|
+
"slot",
|
|
657
|
+
"span",
|
|
658
|
+
"srclang",
|
|
659
|
+
"start",
|
|
660
|
+
"src",
|
|
661
|
+
"srcset",
|
|
662
|
+
"step",
|
|
663
|
+
"style",
|
|
664
|
+
"summary",
|
|
665
|
+
"tabindex",
|
|
666
|
+
"title",
|
|
667
|
+
"translate",
|
|
668
|
+
"type",
|
|
669
|
+
"usemap",
|
|
670
|
+
"valign",
|
|
671
|
+
"value",
|
|
672
|
+
"width",
|
|
673
|
+
"wrap",
|
|
674
|
+
"xmlns"
|
|
675
|
+
]);
|
|
676
|
+
var svg = freeze([
|
|
677
|
+
"accent-height",
|
|
678
|
+
"accumulate",
|
|
679
|
+
"additive",
|
|
680
|
+
"alignment-baseline",
|
|
681
|
+
"amplitude",
|
|
682
|
+
"ascent",
|
|
683
|
+
"attributename",
|
|
684
|
+
"attributetype",
|
|
685
|
+
"azimuth",
|
|
686
|
+
"basefrequency",
|
|
687
|
+
"baseline-shift",
|
|
688
|
+
"begin",
|
|
689
|
+
"bias",
|
|
690
|
+
"by",
|
|
691
|
+
"class",
|
|
692
|
+
"clip",
|
|
693
|
+
"clippathunits",
|
|
694
|
+
"clip-path",
|
|
695
|
+
"clip-rule",
|
|
696
|
+
"color",
|
|
697
|
+
"color-interpolation",
|
|
698
|
+
"color-interpolation-filters",
|
|
699
|
+
"color-profile",
|
|
700
|
+
"color-rendering",
|
|
701
|
+
"cx",
|
|
702
|
+
"cy",
|
|
703
|
+
"d",
|
|
704
|
+
"dx",
|
|
705
|
+
"dy",
|
|
706
|
+
"diffuseconstant",
|
|
707
|
+
"direction",
|
|
708
|
+
"display",
|
|
709
|
+
"divisor",
|
|
710
|
+
"dominant-baseline",
|
|
711
|
+
"dur",
|
|
712
|
+
"edgemode",
|
|
713
|
+
"elevation",
|
|
714
|
+
"end",
|
|
715
|
+
"exponent",
|
|
716
|
+
"fill",
|
|
717
|
+
"fill-opacity",
|
|
718
|
+
"fill-rule",
|
|
719
|
+
"filter",
|
|
720
|
+
"filterunits",
|
|
721
|
+
"flood-color",
|
|
722
|
+
"flood-opacity",
|
|
723
|
+
"font-family",
|
|
724
|
+
"font-size",
|
|
725
|
+
"font-size-adjust",
|
|
726
|
+
"font-stretch",
|
|
727
|
+
"font-style",
|
|
728
|
+
"font-variant",
|
|
729
|
+
"font-weight",
|
|
730
|
+
"fx",
|
|
731
|
+
"fy",
|
|
732
|
+
"g1",
|
|
733
|
+
"g2",
|
|
734
|
+
"glyph-name",
|
|
735
|
+
"glyphref",
|
|
736
|
+
"gradientunits",
|
|
737
|
+
"gradienttransform",
|
|
738
|
+
"height",
|
|
739
|
+
"href",
|
|
740
|
+
"id",
|
|
741
|
+
"image-rendering",
|
|
742
|
+
"in",
|
|
743
|
+
"in2",
|
|
744
|
+
"intercept",
|
|
745
|
+
"k",
|
|
746
|
+
"k1",
|
|
747
|
+
"k2",
|
|
748
|
+
"k3",
|
|
749
|
+
"k4",
|
|
750
|
+
"kerning",
|
|
751
|
+
"keypoints",
|
|
752
|
+
"keysplines",
|
|
753
|
+
"keytimes",
|
|
754
|
+
"lang",
|
|
755
|
+
"lengthadjust",
|
|
756
|
+
"letter-spacing",
|
|
757
|
+
"kernelmatrix",
|
|
758
|
+
"kernelunitlength",
|
|
759
|
+
"lighting-color",
|
|
760
|
+
"local",
|
|
761
|
+
"marker-end",
|
|
762
|
+
"marker-mid",
|
|
763
|
+
"marker-start",
|
|
764
|
+
"markerheight",
|
|
765
|
+
"markerunits",
|
|
766
|
+
"markerwidth",
|
|
767
|
+
"maskcontentunits",
|
|
768
|
+
"maskunits",
|
|
769
|
+
"max",
|
|
770
|
+
"mask",
|
|
771
|
+
"mask-type",
|
|
772
|
+
"media",
|
|
773
|
+
"method",
|
|
774
|
+
"mode",
|
|
775
|
+
"min",
|
|
776
|
+
"name",
|
|
777
|
+
"numoctaves",
|
|
778
|
+
"offset",
|
|
779
|
+
"operator",
|
|
780
|
+
"opacity",
|
|
781
|
+
"order",
|
|
782
|
+
"orient",
|
|
783
|
+
"orientation",
|
|
784
|
+
"origin",
|
|
785
|
+
"overflow",
|
|
786
|
+
"paint-order",
|
|
787
|
+
"path",
|
|
788
|
+
"pathlength",
|
|
789
|
+
"patterncontentunits",
|
|
790
|
+
"patterntransform",
|
|
791
|
+
"patternunits",
|
|
792
|
+
"pointer-events",
|
|
793
|
+
"points",
|
|
794
|
+
"preservealpha",
|
|
795
|
+
"preserveaspectratio",
|
|
796
|
+
"primitiveunits",
|
|
797
|
+
"r",
|
|
798
|
+
"rx",
|
|
799
|
+
"ry",
|
|
800
|
+
"radius",
|
|
801
|
+
"refx",
|
|
802
|
+
"refy",
|
|
803
|
+
"repeatcount",
|
|
804
|
+
"repeatdur",
|
|
805
|
+
"restart",
|
|
806
|
+
"result",
|
|
807
|
+
"rotate",
|
|
808
|
+
"scale",
|
|
809
|
+
"seed",
|
|
810
|
+
"shape-rendering",
|
|
811
|
+
"slope",
|
|
812
|
+
"specularconstant",
|
|
813
|
+
"specularexponent",
|
|
814
|
+
"spreadmethod",
|
|
815
|
+
"startoffset",
|
|
816
|
+
"stddeviation",
|
|
817
|
+
"stitchtiles",
|
|
818
|
+
"stop-color",
|
|
819
|
+
"stop-opacity",
|
|
820
|
+
"stroke-dasharray",
|
|
821
|
+
"stroke-dashoffset",
|
|
822
|
+
"stroke-linecap",
|
|
823
|
+
"stroke-linejoin",
|
|
824
|
+
"stroke-miterlimit",
|
|
825
|
+
"stroke-opacity",
|
|
826
|
+
"stroke",
|
|
827
|
+
"stroke-width",
|
|
828
|
+
"style",
|
|
829
|
+
"surfacescale",
|
|
830
|
+
"systemlanguage",
|
|
831
|
+
"tabindex",
|
|
832
|
+
"tablevalues",
|
|
833
|
+
"targetx",
|
|
834
|
+
"targety",
|
|
835
|
+
"transform",
|
|
836
|
+
"transform-origin",
|
|
837
|
+
"text-anchor",
|
|
838
|
+
"text-decoration",
|
|
839
|
+
"text-orientation",
|
|
840
|
+
"text-rendering",
|
|
841
|
+
"textlength",
|
|
842
|
+
"type",
|
|
843
|
+
"u1",
|
|
844
|
+
"u2",
|
|
845
|
+
"unicode",
|
|
846
|
+
"values",
|
|
847
|
+
"vector-effect",
|
|
848
|
+
"viewbox",
|
|
849
|
+
"visibility",
|
|
850
|
+
"version",
|
|
851
|
+
"vert-adv-y",
|
|
852
|
+
"vert-origin-x",
|
|
853
|
+
"vert-origin-y",
|
|
854
|
+
"width",
|
|
855
|
+
"word-spacing",
|
|
856
|
+
"wrap",
|
|
857
|
+
"writing-mode",
|
|
858
|
+
"xchannelselector",
|
|
859
|
+
"ychannelselector",
|
|
860
|
+
"x",
|
|
861
|
+
"x1",
|
|
862
|
+
"x2",
|
|
863
|
+
"xmlns",
|
|
864
|
+
"y",
|
|
865
|
+
"y1",
|
|
866
|
+
"y2",
|
|
867
|
+
"z",
|
|
868
|
+
"zoomandpan"
|
|
869
|
+
]);
|
|
870
|
+
var mathMl = freeze([
|
|
871
|
+
"accent",
|
|
872
|
+
"accentunder",
|
|
873
|
+
"align",
|
|
874
|
+
"bevelled",
|
|
875
|
+
"close",
|
|
876
|
+
"columnalign",
|
|
877
|
+
"columnlines",
|
|
878
|
+
"columnspacing",
|
|
879
|
+
"columnspan",
|
|
880
|
+
"denomalign",
|
|
881
|
+
"depth",
|
|
882
|
+
"dir",
|
|
883
|
+
"display",
|
|
884
|
+
"displaystyle",
|
|
885
|
+
"encoding",
|
|
886
|
+
"fence",
|
|
887
|
+
"frame",
|
|
888
|
+
"height",
|
|
889
|
+
"href",
|
|
890
|
+
"id",
|
|
891
|
+
"largeop",
|
|
892
|
+
"length",
|
|
893
|
+
"linethickness",
|
|
894
|
+
"lquote",
|
|
895
|
+
"lspace",
|
|
896
|
+
"mathbackground",
|
|
897
|
+
"mathcolor",
|
|
898
|
+
"mathsize",
|
|
899
|
+
"mathvariant",
|
|
900
|
+
"maxsize",
|
|
901
|
+
"minsize",
|
|
902
|
+
"movablelimits",
|
|
903
|
+
"notation",
|
|
904
|
+
"numalign",
|
|
905
|
+
"open",
|
|
906
|
+
"rowalign",
|
|
907
|
+
"rowlines",
|
|
908
|
+
"rowspacing",
|
|
909
|
+
"rowspan",
|
|
910
|
+
"rspace",
|
|
911
|
+
"rquote",
|
|
912
|
+
"scriptlevel",
|
|
913
|
+
"scriptminsize",
|
|
914
|
+
"scriptsizemultiplier",
|
|
915
|
+
"selection",
|
|
916
|
+
"separator",
|
|
917
|
+
"separators",
|
|
918
|
+
"stretchy",
|
|
919
|
+
"subscriptshift",
|
|
920
|
+
"supscriptshift",
|
|
921
|
+
"symmetric",
|
|
922
|
+
"voffset",
|
|
923
|
+
"width",
|
|
924
|
+
"xmlns"
|
|
925
|
+
]);
|
|
926
|
+
var xml = freeze([
|
|
927
|
+
"xlink:href",
|
|
928
|
+
"xml:id",
|
|
929
|
+
"xlink:title",
|
|
930
|
+
"xml:space",
|
|
931
|
+
"xmlns:xlink"
|
|
932
|
+
]);
|
|
255
933
|
var MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
|
|
256
934
|
var ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
|
|
257
935
|
var TMPLIT_EXPR = seal(/\${[\w\W]*/g);
|
|
@@ -280,27 +958,26 @@ var NODE_TYPE = {
|
|
|
280
958
|
documentFragment: 11,
|
|
281
959
|
notation: 12
|
|
282
960
|
};
|
|
283
|
-
var
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
961
|
+
var LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, [
|
|
962
|
+
"style",
|
|
963
|
+
"script",
|
|
964
|
+
"xmp",
|
|
965
|
+
"iframe",
|
|
966
|
+
"noembed",
|
|
967
|
+
"noframes",
|
|
968
|
+
"plaintext",
|
|
969
|
+
"noscript"
|
|
970
|
+
]));
|
|
292
971
|
var getGlobal = function getGlobal() {
|
|
293
972
|
return typeof window === "undefined" ? null : window;
|
|
294
973
|
};
|
|
295
974
|
var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
|
|
296
|
-
if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function")
|
|
975
|
+
if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function")
|
|
297
976
|
return null;
|
|
298
|
-
}
|
|
299
977
|
let suffix = null;
|
|
300
978
|
const ATTR_NAME = "data-tt-policy-suffix";
|
|
301
|
-
if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME))
|
|
979
|
+
if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME))
|
|
302
980
|
suffix = purifyHostElement.getAttribute(ATTR_NAME);
|
|
303
|
-
}
|
|
304
981
|
const policyName = "dompurify" + (suffix ? "#" + suffix : "");
|
|
305
982
|
try {
|
|
306
983
|
return trustedTypes.createPolicy(policyName, {
|
|
@@ -339,7 +1016,7 @@ var _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback)
|
|
|
339
1016
|
function createDOMPurify() {
|
|
340
1017
|
let window2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
|
|
341
1018
|
const DOMPurify = (root) => createDOMPurify(root);
|
|
342
|
-
DOMPurify.version = "3.4.
|
|
1019
|
+
DOMPurify.version = "3.4.17";
|
|
343
1020
|
DOMPurify.removed = [];
|
|
344
1021
|
if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
|
|
345
1022
|
DOMPurify.isSupported = false;
|
|
@@ -349,13 +1026,14 @@ function createDOMPurify() {
|
|
|
349
1026
|
const originalDocument = document;
|
|
350
1027
|
const currentScript = originalDocument.currentScript;
|
|
351
1028
|
window2.DocumentFragment;
|
|
352
|
-
const { HTMLTemplateElement, Node, Element, NodeFilter
|
|
353
|
-
|
|
1029
|
+
const { HTMLTemplateElement, Node, Element, NodeFilter } = window2;
|
|
1030
|
+
window2.NamedNodeMap === undefined && (window2.NamedNodeMap || window2.MozNamedAttrMap);
|
|
354
1031
|
window2.HTMLFormElement;
|
|
355
1032
|
const { DOMParser, trustedTypes } = window2;
|
|
356
1033
|
const ElementPrototype = Element.prototype;
|
|
357
1034
|
const cloneNode = lookupGetter(ElementPrototype, "cloneNode");
|
|
358
1035
|
const remove = lookupGetter(ElementPrototype, "remove");
|
|
1036
|
+
const removeAttributeNode = lookupGetter(ElementPrototype, "removeAttributeNode");
|
|
359
1037
|
const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
|
|
360
1038
|
const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
|
|
361
1039
|
const getParentNode = lookupGetter(ElementPrototype, "parentNode");
|
|
@@ -370,11 +1048,14 @@ function createDOMPurify() {
|
|
|
370
1048
|
const _readNodeName = function _readNodeName(node) {
|
|
371
1049
|
return getNodeName ? getNodeName(node) : node.nodeName;
|
|
372
1050
|
};
|
|
1051
|
+
const getNamespaceURI = lookupAccessor(ElementPrototype, "namespaceURI");
|
|
1052
|
+
const _readNamespaceURI = function _readNamespaceURI(element) {
|
|
1053
|
+
return getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;
|
|
1054
|
+
};
|
|
373
1055
|
if (typeof HTMLTemplateElement === "function") {
|
|
374
1056
|
const template = document.createElement("template");
|
|
375
|
-
if (template.content && template.content.ownerDocument)
|
|
1057
|
+
if (template.content && template.content.ownerDocument)
|
|
376
1058
|
document = template.content.ownerDocument;
|
|
377
|
-
}
|
|
378
1059
|
}
|
|
379
1060
|
let trustedTypesPolicy;
|
|
380
1061
|
let emptyHTML = "";
|
|
@@ -382,9 +1063,8 @@ function createDOMPurify() {
|
|
|
382
1063
|
let defaultTrustedTypesPolicyResolved = false;
|
|
383
1064
|
let IN_TRUSTED_TYPES_POLICY = 0;
|
|
384
1065
|
const _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {
|
|
385
|
-
if (IN_TRUSTED_TYPES_POLICY > 0)
|
|
386
|
-
throw typeErrorCreate(
|
|
387
|
-
}
|
|
1066
|
+
if (IN_TRUSTED_TYPES_POLICY > 0)
|
|
1067
|
+
throw typeErrorCreate('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.');
|
|
388
1068
|
};
|
|
389
1069
|
const _createTrustedHTML = function _createTrustedHTML(html) {
|
|
390
1070
|
_assertNotInTrustedTypesPolicy();
|
|
@@ -418,9 +1098,20 @@ function createDOMPurify() {
|
|
|
418
1098
|
const MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
|
|
419
1099
|
let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
|
|
420
1100
|
let ALLOWED_TAGS = null;
|
|
421
|
-
const DEFAULT_ALLOWED_TAGS = addToSet({}, [
|
|
1101
|
+
const DEFAULT_ALLOWED_TAGS = addToSet({}, [
|
|
1102
|
+
...html$1,
|
|
1103
|
+
...svg$1,
|
|
1104
|
+
...svgFilters,
|
|
1105
|
+
...mathMl$1,
|
|
1106
|
+
...text
|
|
1107
|
+
]);
|
|
422
1108
|
let ALLOWED_ATTR = null;
|
|
423
|
-
const DEFAULT_ALLOWED_ATTR = addToSet({}, [
|
|
1109
|
+
const DEFAULT_ALLOWED_ATTR = addToSet({}, [
|
|
1110
|
+
...html,
|
|
1111
|
+
...svg,
|
|
1112
|
+
...mathMl,
|
|
1113
|
+
...xml
|
|
1114
|
+
]);
|
|
424
1115
|
let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
|
|
425
1116
|
tagNameCheck: {
|
|
426
1117
|
writable: true,
|
|
@@ -476,6 +1167,7 @@ function createDOMPurify() {
|
|
|
476
1167
|
const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
|
|
477
1168
|
let KEEP_CONTENT = true;
|
|
478
1169
|
let IN_PLACE = false;
|
|
1170
|
+
let IN_PLACE_VISITED = null;
|
|
479
1171
|
let USE_PROFILES = {};
|
|
480
1172
|
let FORBID_CONTENTS = null;
|
|
481
1173
|
const DEFAULT_FORBID_CONTENTS = addToSet({}, [
|
|
@@ -507,21 +1199,59 @@ function createDOMPurify() {
|
|
|
507
1199
|
"xmp"
|
|
508
1200
|
]);
|
|
509
1201
|
let DATA_URI_TAGS = null;
|
|
510
|
-
const DEFAULT_DATA_URI_TAGS = addToSet({}, [
|
|
1202
|
+
const DEFAULT_DATA_URI_TAGS = addToSet({}, [
|
|
1203
|
+
"audio",
|
|
1204
|
+
"video",
|
|
1205
|
+
"img",
|
|
1206
|
+
"source",
|
|
1207
|
+
"image",
|
|
1208
|
+
"track"
|
|
1209
|
+
]);
|
|
511
1210
|
let URI_SAFE_ATTRIBUTES = null;
|
|
512
|
-
const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
|
|
1211
|
+
const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
|
|
1212
|
+
"alt",
|
|
1213
|
+
"class",
|
|
1214
|
+
"for",
|
|
1215
|
+
"id",
|
|
1216
|
+
"label",
|
|
1217
|
+
"name",
|
|
1218
|
+
"pattern",
|
|
1219
|
+
"placeholder",
|
|
1220
|
+
"role",
|
|
1221
|
+
"summary",
|
|
1222
|
+
"title",
|
|
1223
|
+
"value",
|
|
1224
|
+
"style",
|
|
1225
|
+
"xmlns"
|
|
1226
|
+
]);
|
|
513
1227
|
const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
|
|
514
1228
|
const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
|
|
515
1229
|
const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
|
|
516
1230
|
let NAMESPACE = HTML_NAMESPACE;
|
|
517
1231
|
let IS_EMPTY_INPUT = false;
|
|
518
1232
|
let ALLOWED_NAMESPACES = null;
|
|
519
|
-
const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [
|
|
520
|
-
|
|
1233
|
+
const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [
|
|
1234
|
+
MATHML_NAMESPACE,
|
|
1235
|
+
SVG_NAMESPACE,
|
|
1236
|
+
HTML_NAMESPACE
|
|
1237
|
+
], stringToString);
|
|
1238
|
+
const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([
|
|
1239
|
+
"mi",
|
|
1240
|
+
"mo",
|
|
1241
|
+
"mn",
|
|
1242
|
+
"ms",
|
|
1243
|
+
"mtext"
|
|
1244
|
+
]);
|
|
521
1245
|
let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);
|
|
522
1246
|
const DEFAULT_HTML_INTEGRATION_POINTS = freeze(["annotation-xml"]);
|
|
523
1247
|
let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);
|
|
524
|
-
const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
|
|
1248
|
+
const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
|
|
1249
|
+
"title",
|
|
1250
|
+
"style",
|
|
1251
|
+
"font",
|
|
1252
|
+
"a",
|
|
1253
|
+
"script"
|
|
1254
|
+
]);
|
|
525
1255
|
let PARSER_MEDIA_TYPE = null;
|
|
526
1256
|
const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
|
|
527
1257
|
const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
|
|
@@ -533,24 +1263,16 @@ function createDOMPurify() {
|
|
|
533
1263
|
};
|
|
534
1264
|
const _parseConfig = function _parseConfig() {
|
|
535
1265
|
let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
536
|
-
if (CONFIG && CONFIG === cfg)
|
|
1266
|
+
if (CONFIG && CONFIG === cfg)
|
|
537
1267
|
return;
|
|
538
|
-
|
|
539
|
-
if (!cfg || typeof cfg !== "object") {
|
|
1268
|
+
if (!cfg || typeof cfg !== "object")
|
|
540
1269
|
cfg = {};
|
|
541
|
-
}
|
|
542
1270
|
cfg = clone(cfg);
|
|
543
1271
|
PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
|
|
544
1272
|
transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
|
|
545
|
-
ALLOWED_TAGS = _resolveSetOption(cfg, "ALLOWED_TAGS", DEFAULT_ALLOWED_TAGS, {
|
|
546
|
-
|
|
547
|
-
});
|
|
548
|
-
ALLOWED_ATTR = _resolveSetOption(cfg, "ALLOWED_ATTR", DEFAULT_ALLOWED_ATTR, {
|
|
549
|
-
transform: transformCaseFunc
|
|
550
|
-
});
|
|
551
|
-
ALLOWED_NAMESPACES = _resolveSetOption(cfg, "ALLOWED_NAMESPACES", DEFAULT_ALLOWED_NAMESPACES, {
|
|
552
|
-
transform: stringToString
|
|
553
|
-
});
|
|
1273
|
+
ALLOWED_TAGS = _resolveSetOption(cfg, "ALLOWED_TAGS", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });
|
|
1274
|
+
ALLOWED_ATTR = _resolveSetOption(cfg, "ALLOWED_ATTR", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });
|
|
1275
|
+
ALLOWED_NAMESPACES = _resolveSetOption(cfg, "ALLOWED_NAMESPACES", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });
|
|
554
1276
|
URI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, "ADD_URI_SAFE_ATTR", DEFAULT_URI_SAFE_ATTRIBUTES, {
|
|
555
1277
|
transform: transformCaseFunc,
|
|
556
1278
|
base: DEFAULT_URI_SAFE_ATTRIBUTES
|
|
@@ -559,15 +1281,9 @@ function createDOMPurify() {
|
|
|
559
1281
|
transform: transformCaseFunc,
|
|
560
1282
|
base: DEFAULT_DATA_URI_TAGS
|
|
561
1283
|
});
|
|
562
|
-
FORBID_CONTENTS = _resolveSetOption(cfg, "FORBID_CONTENTS", DEFAULT_FORBID_CONTENTS, {
|
|
563
|
-
|
|
564
|
-
});
|
|
565
|
-
FORBID_TAGS = _resolveSetOption(cfg, "FORBID_TAGS", clone({}), {
|
|
566
|
-
transform: transformCaseFunc
|
|
567
|
-
});
|
|
568
|
-
FORBID_ATTR = _resolveSetOption(cfg, "FORBID_ATTR", clone({}), {
|
|
569
|
-
transform: transformCaseFunc
|
|
570
|
-
});
|
|
1284
|
+
FORBID_CONTENTS = _resolveSetOption(cfg, "FORBID_CONTENTS", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });
|
|
1285
|
+
FORBID_TAGS = _resolveSetOption(cfg, "FORBID_TAGS", clone({}), { transform: transformCaseFunc });
|
|
1286
|
+
FORBID_ATTR = _resolveSetOption(cfg, "FORBID_ATTR", clone({}), { transform: transformCaseFunc });
|
|
571
1287
|
USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === "object" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;
|
|
572
1288
|
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
|
|
573
1289
|
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
|
|
@@ -590,22 +1306,17 @@ function createDOMPurify() {
|
|
|
590
1306
|
HTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, "HTML_INTEGRATION_POINTS", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));
|
|
591
1307
|
const customElementHandling = _resolveObjectOption(cfg, "CUSTOM_ELEMENT_HANDLING", () => create(null));
|
|
592
1308
|
CUSTOM_ELEMENT_HANDLING = create(null);
|
|
593
|
-
if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck))
|
|
1309
|
+
if (objectHasOwnProperty(customElementHandling, "tagNameCheck") && isRegexOrFunction(customElementHandling.tagNameCheck))
|
|
594
1310
|
CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;
|
|
595
|
-
|
|
596
|
-
if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck)) {
|
|
1311
|
+
if (objectHasOwnProperty(customElementHandling, "attributeNameCheck") && isRegexOrFunction(customElementHandling.attributeNameCheck))
|
|
597
1312
|
CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;
|
|
598
|
-
|
|
599
|
-
if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean") {
|
|
1313
|
+
if (objectHasOwnProperty(customElementHandling, "allowCustomizedBuiltInElements") && typeof customElementHandling.allowCustomizedBuiltInElements === "boolean")
|
|
600
1314
|
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;
|
|
601
|
-
}
|
|
602
1315
|
seal(CUSTOM_ELEMENT_HANDLING);
|
|
603
|
-
if (SAFE_FOR_TEMPLATES)
|
|
1316
|
+
if (SAFE_FOR_TEMPLATES)
|
|
604
1317
|
ALLOW_DATA_ATTR = false;
|
|
605
|
-
|
|
606
|
-
if (RETURN_DOM_FRAGMENT) {
|
|
1318
|
+
if (RETURN_DOM_FRAGMENT)
|
|
607
1319
|
RETURN_DOM = true;
|
|
608
|
-
}
|
|
609
1320
|
if (USE_PROFILES) {
|
|
610
1321
|
ALLOWED_TAGS = addToSet({}, text);
|
|
611
1322
|
ALLOWED_ATTR = create(null);
|
|
@@ -632,48 +1343,45 @@ function createDOMPurify() {
|
|
|
632
1343
|
EXTRA_ELEMENT_HANDLING.tagCheck = null;
|
|
633
1344
|
EXTRA_ELEMENT_HANDLING.attributeCheck = null;
|
|
634
1345
|
if (objectHasOwnProperty(cfg, "ADD_TAGS")) {
|
|
635
|
-
if (typeof cfg.ADD_TAGS === "function")
|
|
1346
|
+
if (typeof cfg.ADD_TAGS === "function")
|
|
636
1347
|
EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
|
|
637
|
-
|
|
638
|
-
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS)
|
|
1348
|
+
else if (arrayIsArray(cfg.ADD_TAGS)) {
|
|
1349
|
+
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS)
|
|
639
1350
|
ALLOWED_TAGS = clone(ALLOWED_TAGS);
|
|
640
|
-
}
|
|
641
1351
|
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
|
|
642
1352
|
}
|
|
643
1353
|
}
|
|
644
1354
|
if (objectHasOwnProperty(cfg, "ADD_ATTR")) {
|
|
645
|
-
if (typeof cfg.ADD_ATTR === "function")
|
|
1355
|
+
if (typeof cfg.ADD_ATTR === "function")
|
|
646
1356
|
EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
|
|
647
|
-
|
|
648
|
-
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR)
|
|
1357
|
+
else if (arrayIsArray(cfg.ADD_ATTR)) {
|
|
1358
|
+
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR)
|
|
649
1359
|
ALLOWED_ATTR = clone(ALLOWED_ATTR);
|
|
650
|
-
}
|
|
651
1360
|
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
|
|
652
1361
|
}
|
|
653
1362
|
}
|
|
654
1363
|
if (objectHasOwnProperty(cfg, "ADD_FORBID_CONTENTS") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {
|
|
655
|
-
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS)
|
|
1364
|
+
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS)
|
|
656
1365
|
FORBID_CONTENTS = clone(FORBID_CONTENTS);
|
|
657
|
-
}
|
|
658
1366
|
addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
|
|
659
1367
|
}
|
|
660
|
-
if (KEEP_CONTENT)
|
|
1368
|
+
if (KEEP_CONTENT)
|
|
661
1369
|
ALLOWED_TAGS["#text"] = true;
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
1370
|
+
if (WHOLE_DOCUMENT)
|
|
1371
|
+
addToSet(ALLOWED_TAGS, [
|
|
1372
|
+
"html",
|
|
1373
|
+
"head",
|
|
1374
|
+
"body"
|
|
1375
|
+
]);
|
|
666
1376
|
if (ALLOWED_TAGS.table) {
|
|
667
1377
|
addToSet(ALLOWED_TAGS, ["tbody"]);
|
|
668
1378
|
delete FORBID_TAGS.tbody;
|
|
669
1379
|
}
|
|
670
1380
|
if (cfg.TRUSTED_TYPES_POLICY) {
|
|
671
|
-
if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function")
|
|
1381
|
+
if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function")
|
|
672
1382
|
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
|
|
673
|
-
|
|
674
|
-
if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") {
|
|
1383
|
+
if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function")
|
|
675
1384
|
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
|
|
676
|
-
}
|
|
677
1385
|
const previousTrustedTypesPolicy = trustedTypesPolicy;
|
|
678
1386
|
trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
|
|
679
1387
|
try {
|
|
@@ -686,90 +1394,80 @@ function createDOMPurify() {
|
|
|
686
1394
|
trustedTypesPolicy = undefined;
|
|
687
1395
|
emptyHTML = "";
|
|
688
1396
|
} else {
|
|
689
|
-
if (trustedTypesPolicy === undefined)
|
|
1397
|
+
if (trustedTypesPolicy === undefined)
|
|
690
1398
|
trustedTypesPolicy = _getDefaultTrustedTypesPolicy();
|
|
691
|
-
|
|
692
|
-
if (trustedTypesPolicy && typeof emptyHTML === "string") {
|
|
1399
|
+
if (trustedTypesPolicy && typeof emptyHTML === "string")
|
|
693
1400
|
emptyHTML = _createTrustedHTML("");
|
|
694
|
-
}
|
|
695
1401
|
}
|
|
696
|
-
if (freeze)
|
|
1402
|
+
if (freeze)
|
|
697
1403
|
freeze(cfg);
|
|
698
|
-
}
|
|
699
1404
|
CONFIG = cfg;
|
|
700
1405
|
};
|
|
701
|
-
const ALL_SVG_TAGS = addToSet({}, [
|
|
1406
|
+
const ALL_SVG_TAGS = addToSet({}, [
|
|
1407
|
+
...svg$1,
|
|
1408
|
+
...svgFilters,
|
|
1409
|
+
...svgDisallowed
|
|
1410
|
+
]);
|
|
702
1411
|
const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
|
|
703
1412
|
const _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {
|
|
704
|
-
if (parent.namespaceURI === HTML_NAMESPACE)
|
|
1413
|
+
if (parent.namespaceURI === HTML_NAMESPACE)
|
|
705
1414
|
return tagName === "svg";
|
|
706
|
-
|
|
707
|
-
if (parent.namespaceURI === MATHML_NAMESPACE) {
|
|
1415
|
+
if (parent.namespaceURI === MATHML_NAMESPACE)
|
|
708
1416
|
return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
|
|
709
|
-
}
|
|
710
1417
|
return Boolean(ALL_SVG_TAGS[tagName]);
|
|
711
1418
|
};
|
|
712
1419
|
const _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {
|
|
713
|
-
if (parent.namespaceURI === HTML_NAMESPACE)
|
|
1420
|
+
if (parent.namespaceURI === HTML_NAMESPACE)
|
|
714
1421
|
return tagName === "math";
|
|
715
|
-
|
|
716
|
-
if (parent.namespaceURI === SVG_NAMESPACE) {
|
|
1422
|
+
if (parent.namespaceURI === SVG_NAMESPACE)
|
|
717
1423
|
return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
|
|
718
|
-
}
|
|
719
1424
|
return Boolean(ALL_MATHML_TAGS[tagName]);
|
|
720
1425
|
};
|
|
721
1426
|
const _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {
|
|
722
|
-
if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName])
|
|
1427
|
+
if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName])
|
|
723
1428
|
return false;
|
|
724
|
-
|
|
725
|
-
if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
|
|
1429
|
+
if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName])
|
|
726
1430
|
return false;
|
|
727
|
-
}
|
|
728
1431
|
return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
|
|
729
1432
|
};
|
|
730
1433
|
const _checkValidNamespace = function _checkValidNamespace(element) {
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
1434
|
+
const elementNamespace = _readNamespaceURI(element);
|
|
1435
|
+
const tagName = stringToLowerCase(_readNodeName(element));
|
|
1436
|
+
const parentNode = getParentNode(element);
|
|
1437
|
+
let parent;
|
|
1438
|
+
let parentTagName;
|
|
1439
|
+
if (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {
|
|
1440
|
+
parent = { namespaceURI: _readNamespaceURI(parentNode) };
|
|
1441
|
+
parentTagName = stringToLowerCase(_readNodeName(parentNode));
|
|
1442
|
+
} else {
|
|
1443
|
+
parent = { namespaceURI: NAMESPACE };
|
|
1444
|
+
parentTagName = "template";
|
|
737
1445
|
}
|
|
738
|
-
|
|
739
|
-
const parentTagName = stringToLowerCase(parent.tagName);
|
|
740
|
-
if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
1446
|
+
if (!ALLOWED_NAMESPACES[elementNamespace])
|
|
741
1447
|
return false;
|
|
742
|
-
|
|
743
|
-
if (element.namespaceURI === SVG_NAMESPACE) {
|
|
1448
|
+
if (elementNamespace === SVG_NAMESPACE)
|
|
744
1449
|
return _checkSvgNamespace(tagName, parent, parentTagName);
|
|
745
|
-
|
|
746
|
-
if (element.namespaceURI === MATHML_NAMESPACE) {
|
|
1450
|
+
if (elementNamespace === MATHML_NAMESPACE)
|
|
747
1451
|
return _checkMathMlNamespace(tagName, parent, parentTagName);
|
|
748
|
-
|
|
749
|
-
if (element.namespaceURI === HTML_NAMESPACE) {
|
|
1452
|
+
if (elementNamespace === HTML_NAMESPACE)
|
|
750
1453
|
return _checkHtmlNamespace(tagName, parent, parentTagName);
|
|
751
|
-
|
|
752
|
-
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
1454
|
+
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[elementNamespace])
|
|
753
1455
|
return true;
|
|
754
|
-
}
|
|
755
1456
|
return false;
|
|
756
1457
|
};
|
|
757
1458
|
const _forceRemove = function _forceRemove(node) {
|
|
758
|
-
arrayPush(DOMPurify.removed, {
|
|
759
|
-
element: node
|
|
760
|
-
});
|
|
1459
|
+
arrayPush(DOMPurify.removed, { element: node });
|
|
761
1460
|
try {
|
|
762
1461
|
getParentNode(node).removeChild(node);
|
|
763
1462
|
} catch (_) {
|
|
764
1463
|
remove(node);
|
|
765
|
-
if (!getParentNode(node))
|
|
766
|
-
throw typeErrorCreate("a node selected for removal could not be detached from its tree
|
|
767
|
-
}
|
|
1464
|
+
if (!getParentNode(node))
|
|
1465
|
+
throw typeErrorCreate("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place");
|
|
768
1466
|
}
|
|
769
1467
|
};
|
|
770
1468
|
const _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {
|
|
771
1469
|
try {
|
|
772
|
-
|
|
1470
|
+
removeAttributeNode(element, attribute);
|
|
773
1471
|
} catch (_) {
|
|
774
1472
|
try {
|
|
775
1473
|
element.removeAttribute(name);
|
|
@@ -779,154 +1477,215 @@ function createDOMPurify() {
|
|
|
779
1477
|
const _neutralizeRoot = function _neutralizeRoot(root) {
|
|
780
1478
|
_neutralizeSubtree(root);
|
|
781
1479
|
const childNodes = getChildNodes(root);
|
|
782
|
-
if (childNodes)
|
|
783
|
-
|
|
784
|
-
arrayForEach(childNodes, (child) => {
|
|
785
|
-
arrayPush(snapshot, child);
|
|
786
|
-
});
|
|
787
|
-
arrayForEach(snapshot, (child) => {
|
|
1480
|
+
if (childNodes)
|
|
1481
|
+
arrayForEach(arraySlice(childNodes), (child) => {
|
|
788
1482
|
try {
|
|
789
1483
|
remove(child);
|
|
790
1484
|
} catch (_) {}
|
|
791
1485
|
});
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
if (attributes) {
|
|
1486
|
+
const attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;
|
|
1487
|
+
if (attributes)
|
|
795
1488
|
for (let i = attributes.length - 1;i >= 0; --i) {
|
|
796
1489
|
const attribute = attributes[i];
|
|
797
1490
|
const name = attribute && attribute.name;
|
|
798
|
-
if (typeof name === "string")
|
|
1491
|
+
if (typeof name === "string")
|
|
799
1492
|
_stripAttributeNode(root, attribute, name);
|
|
800
|
-
}
|
|
801
1493
|
}
|
|
802
|
-
}
|
|
803
1494
|
};
|
|
804
1495
|
const _removeAttribute = function _removeAttribute(name, element, attr) {
|
|
805
|
-
if (!attr)
|
|
1496
|
+
if (!attr)
|
|
806
1497
|
try {
|
|
807
1498
|
attr = element.getAttributeNode(name);
|
|
808
1499
|
} catch (_) {
|
|
809
1500
|
attr = null;
|
|
810
1501
|
}
|
|
811
|
-
}
|
|
812
1502
|
arrayPush(DOMPurify.removed, {
|
|
813
1503
|
attribute: attr || null,
|
|
814
1504
|
from: element
|
|
815
1505
|
});
|
|
816
1506
|
try {
|
|
817
|
-
if (attr)
|
|
818
|
-
|
|
819
|
-
|
|
1507
|
+
if (attr)
|
|
1508
|
+
removeAttributeNode(element, attr);
|
|
1509
|
+
else
|
|
820
1510
|
element.removeAttribute(name);
|
|
821
|
-
}
|
|
822
1511
|
} catch (_) {
|
|
823
1512
|
try {
|
|
824
1513
|
element.removeAttribute(name);
|
|
825
1514
|
} catch (_) {}
|
|
826
1515
|
}
|
|
827
1516
|
if (name === "is") {
|
|
828
|
-
if (RETURN_DOM || RETURN_DOM_FRAGMENT)
|
|
1517
|
+
if (RETURN_DOM || RETURN_DOM_FRAGMENT)
|
|
829
1518
|
try {
|
|
830
1519
|
_forceRemove(element);
|
|
831
1520
|
} catch (_) {}
|
|
832
|
-
|
|
1521
|
+
else
|
|
833
1522
|
try {
|
|
834
1523
|
element.setAttribute(name, "");
|
|
835
1524
|
} catch (_) {}
|
|
836
|
-
}
|
|
837
1525
|
}
|
|
838
1526
|
};
|
|
839
1527
|
const _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {
|
|
840
1528
|
const attributes = getAttributes(element);
|
|
841
|
-
if (!attributes)
|
|
1529
|
+
if (!attributes)
|
|
842
1530
|
return;
|
|
843
|
-
}
|
|
844
1531
|
for (let i = attributes.length - 1;i >= 0; --i) {
|
|
845
1532
|
const attribute = attributes[i];
|
|
846
1533
|
const name = attribute && attribute.name;
|
|
847
|
-
if (typeof name !== "string" || ALLOWED_ATTR[transformCaseFunc(name)])
|
|
1534
|
+
if (typeof name !== "string" || ALLOWED_ATTR[transformCaseFunc(name)])
|
|
848
1535
|
continue;
|
|
849
|
-
}
|
|
850
1536
|
_stripAttributeNode(element, attribute, name);
|
|
851
1537
|
}
|
|
852
1538
|
};
|
|
853
|
-
const
|
|
1539
|
+
const _walkTree = function _walkTree(root, visit) {
|
|
1540
|
+
let intoShadow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
854
1541
|
const stack = [root];
|
|
855
1542
|
while (stack.length > 0) {
|
|
856
1543
|
const node = stack.pop();
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
1544
|
+
if (visit(node) === false)
|
|
1545
|
+
continue;
|
|
1546
|
+
if (intoShadow && _readNodeType(node) === NODE_TYPE.element) {
|
|
1547
|
+
const shadowRoot = getShadowRoot(node);
|
|
1548
|
+
if (_isDocumentFragment(shadowRoot))
|
|
1549
|
+
stack.push(shadowRoot);
|
|
860
1550
|
}
|
|
861
1551
|
const childNodes = getChildNodes(node);
|
|
862
|
-
if (childNodes)
|
|
863
|
-
for (let i = childNodes.length - 1;i >= 0; --i)
|
|
1552
|
+
if (childNodes)
|
|
1553
|
+
for (let i = childNodes.length - 1;i >= 0; --i)
|
|
864
1554
|
stack.push(childNodes[i]);
|
|
865
|
-
|
|
1555
|
+
}
|
|
1556
|
+
};
|
|
1557
|
+
const _neutralizeSubtree = function _neutralizeSubtree(root) {
|
|
1558
|
+
_walkTree(root, (node) => {
|
|
1559
|
+
if (_readNodeType(node) === NODE_TYPE.element)
|
|
1560
|
+
_stripDisallowedAttributes(node);
|
|
1561
|
+
});
|
|
1562
|
+
};
|
|
1563
|
+
const _collectLiveNodes = function _collectLiveNodes(root) {
|
|
1564
|
+
const nodes = [];
|
|
1565
|
+
_walkTree(root, (node) => {
|
|
1566
|
+
nodes.push(node);
|
|
1567
|
+
}, true);
|
|
1568
|
+
return nodes;
|
|
1569
|
+
};
|
|
1570
|
+
const _neutralizeEscapedElements = function _neutralizeEscapedElements(root, before) {
|
|
1571
|
+
const reachable = setCreate();
|
|
1572
|
+
arrayForEach(_collectLiveNodes(root), (node) => {
|
|
1573
|
+
if (_readNodeType(node) === NODE_TYPE.element)
|
|
1574
|
+
setAdd(reachable, node);
|
|
1575
|
+
});
|
|
1576
|
+
arrayForEach(before, (node) => {
|
|
1577
|
+
if (_readNodeType(node) === NODE_TYPE.element && !setHas(reachable, node))
|
|
1578
|
+
_stripDisallowedAttributes(node);
|
|
1579
|
+
});
|
|
1580
|
+
};
|
|
1581
|
+
const _neutralizeDiscarded = function _neutralizeDiscarded(root, before) {
|
|
1582
|
+
let rootRemoved = false;
|
|
1583
|
+
arrayForEach(DOMPurify.removed, (entry) => {
|
|
1584
|
+
if (entry.element) {
|
|
1585
|
+
rootRemoved = rootRemoved || entry.element === root;
|
|
1586
|
+
_neutralizeSubtree(entry.element);
|
|
1587
|
+
}
|
|
1588
|
+
});
|
|
1589
|
+
_neutralizeEscapedElements(root, before);
|
|
1590
|
+
return rootRemoved;
|
|
1591
|
+
};
|
|
1592
|
+
const MAX_UNVISITED_ROUNDS = 8;
|
|
1593
|
+
const _sanitizeUnvisitedNodes = function _sanitizeUnvisitedNodes(root, before) {
|
|
1594
|
+
const visited = IN_PLACE_VISITED;
|
|
1595
|
+
let original = null;
|
|
1596
|
+
const getOriginal = () => {
|
|
1597
|
+
if (!original) {
|
|
1598
|
+
original = setCreate();
|
|
1599
|
+
arrayForEach(before, (beforeNode) => {
|
|
1600
|
+
setAdd(original, beforeNode);
|
|
1601
|
+
});
|
|
866
1602
|
}
|
|
1603
|
+
return original;
|
|
1604
|
+
};
|
|
1605
|
+
for (let round = 0;; round++) {
|
|
1606
|
+
const live = _collectLiveNodes(root);
|
|
1607
|
+
const containers = [root];
|
|
1608
|
+
let pending = false;
|
|
1609
|
+
arrayForEach(live, (node) => {
|
|
1610
|
+
if (_readNodeType(node) === NODE_TYPE.documentFragment)
|
|
1611
|
+
arrayPush(containers, node);
|
|
1612
|
+
else if (!pending && !setHas(visited, node))
|
|
1613
|
+
pending = setHas(getOriginal(), node);
|
|
1614
|
+
});
|
|
1615
|
+
if (!pending)
|
|
1616
|
+
return;
|
|
1617
|
+
if (round >= MAX_UNVISITED_ROUNDS)
|
|
1618
|
+
throw typeErrorCreate("the tree kept changing during in-place sanitization; refusing to return it");
|
|
1619
|
+
arrayForEach(containers, (container, index) => {
|
|
1620
|
+
_sanitizeUnvisitedIn(container, index > 0, root, getOriginal());
|
|
1621
|
+
});
|
|
1622
|
+
}
|
|
1623
|
+
};
|
|
1624
|
+
const _sanitizeUnvisitedIn = function _sanitizeUnvisitedIn(container, inShadow, root, original) {
|
|
1625
|
+
const iterator = _createNodeIterator(container);
|
|
1626
|
+
let node;
|
|
1627
|
+
while (node = iterator.nextNode()) {
|
|
1628
|
+
if (!setHas(original, node) || setHas(IN_PLACE_VISITED, node))
|
|
1629
|
+
continue;
|
|
1630
|
+
if (inShadow)
|
|
1631
|
+
_executeHooks(hooks.uponSanitizeShadowNode, node, null);
|
|
1632
|
+
_sanitizeElements(node, root);
|
|
1633
|
+
_sanitizeAttributes(node, root);
|
|
1634
|
+
if (_isDocumentFragment(node.content))
|
|
1635
|
+
_sanitizeShadowDOM2(node.content);
|
|
867
1636
|
}
|
|
868
1637
|
};
|
|
1638
|
+
const _markVisited = function _markVisited(node) {
|
|
1639
|
+
if (IN_PLACE_VISITED)
|
|
1640
|
+
setAdd(IN_PLACE_VISITED, node);
|
|
1641
|
+
};
|
|
869
1642
|
const _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {
|
|
870
|
-
if (!SAFE_FOR_XML)
|
|
1643
|
+
if (!SAFE_FOR_XML)
|
|
871
1644
|
return false;
|
|
872
|
-
|
|
873
|
-
if (lcName === "patchsrc") {
|
|
1645
|
+
if (lcName === "patchsrc")
|
|
874
1646
|
return true;
|
|
875
|
-
}
|
|
876
1647
|
return lcName === "for" && lcTag !== "label" && lcTag !== "output";
|
|
877
1648
|
};
|
|
878
1649
|
const _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {
|
|
879
|
-
if (!SAFE_FOR_XML)
|
|
1650
|
+
if (!SAFE_FOR_XML)
|
|
880
1651
|
return;
|
|
881
|
-
|
|
882
|
-
const stack = [root];
|
|
883
|
-
while (stack.length > 0) {
|
|
884
|
-
const node = stack.pop();
|
|
1652
|
+
_walkTree(root, (node) => {
|
|
885
1653
|
const nodeType = _readNodeType(node);
|
|
886
1654
|
if (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {
|
|
887
1655
|
try {
|
|
888
1656
|
remove(node);
|
|
889
1657
|
} catch (_) {}
|
|
890
|
-
|
|
1658
|
+
return false;
|
|
891
1659
|
}
|
|
892
1660
|
if (nodeType === NODE_TYPE.element) {
|
|
893
1661
|
const element = node;
|
|
894
1662
|
const lcTag = transformCaseFunc(_readNodeName(node));
|
|
895
1663
|
try {
|
|
896
|
-
if (element.hasAttribute && element.hasAttribute("patchsrc"))
|
|
1664
|
+
if (element.hasAttribute && element.hasAttribute("patchsrc"))
|
|
897
1665
|
element.removeAttribute("patchsrc");
|
|
898
|
-
|
|
899
|
-
if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag)) {
|
|
1666
|
+
if (element.hasAttribute && element.hasAttribute("for") && _isPatchLinkageAttribute("for", lcTag))
|
|
900
1667
|
element.removeAttribute("for");
|
|
901
|
-
}
|
|
902
1668
|
} catch (_) {}
|
|
903
1669
|
}
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
for (let i = childNodes.length - 1;i >= 0; --i) {
|
|
907
|
-
stack.push(childNodes[i]);
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
}
|
|
1670
|
+
return true;
|
|
1671
|
+
});
|
|
911
1672
|
};
|
|
912
1673
|
const _initDocument = function _initDocument(dirty) {
|
|
913
1674
|
let doc = null;
|
|
914
1675
|
let leadingWhitespace = null;
|
|
915
|
-
if (FORCE_BODY)
|
|
1676
|
+
if (FORCE_BODY)
|
|
916
1677
|
dirty = "<remove></remove>" + dirty;
|
|
917
|
-
|
|
1678
|
+
else {
|
|
918
1679
|
const matches = stringMatch(dirty, /^[\r\n\t ]+/);
|
|
919
1680
|
leadingWhitespace = matches && matches[0];
|
|
920
1681
|
}
|
|
921
|
-
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE)
|
|
1682
|
+
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE)
|
|
922
1683
|
dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
|
|
923
|
-
}
|
|
924
1684
|
const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;
|
|
925
|
-
if (NAMESPACE === HTML_NAMESPACE)
|
|
1685
|
+
if (NAMESPACE === HTML_NAMESPACE)
|
|
926
1686
|
try {
|
|
927
1687
|
doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
|
|
928
1688
|
} catch (_) {}
|
|
929
|
-
}
|
|
930
1689
|
if (!doc || !doc.documentElement) {
|
|
931
1690
|
doc = implementation.createDocument(NAMESPACE, "template", null);
|
|
932
1691
|
try {
|
|
@@ -934,12 +1693,10 @@ function createDOMPurify() {
|
|
|
934
1693
|
} catch (_) {}
|
|
935
1694
|
}
|
|
936
1695
|
const body = doc.body || doc.documentElement;
|
|
937
|
-
if (dirty && leadingWhitespace)
|
|
1696
|
+
if (dirty && leadingWhitespace)
|
|
938
1697
|
body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
|
|
939
|
-
|
|
940
|
-
if (NAMESPACE === HTML_NAMESPACE) {
|
|
1698
|
+
if (NAMESPACE === HTML_NAMESPACE)
|
|
941
1699
|
return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
|
|
942
|
-
}
|
|
943
1700
|
return WHOLE_DOCUMENT ? doc.documentElement : body;
|
|
944
1701
|
};
|
|
945
1702
|
const _createNodeIterator = function _createNodeIterator(root) {
|
|
@@ -954,6 +1711,15 @@ function createDOMPurify() {
|
|
|
954
1711
|
};
|
|
955
1712
|
const _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {
|
|
956
1713
|
var _node$querySelectorAl;
|
|
1714
|
+
_scrubOwnCharacterData(node);
|
|
1715
|
+
const templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === undefined ? undefined : _node$querySelectorAl.call(node, "template");
|
|
1716
|
+
if (templates)
|
|
1717
|
+
arrayForEach(templates, (tmpl) => {
|
|
1718
|
+
if (_isDocumentFragment(tmpl.content))
|
|
1719
|
+
_scrubTemplateExpressions2(tmpl.content);
|
|
1720
|
+
});
|
|
1721
|
+
};
|
|
1722
|
+
const _scrubOwnCharacterData = function _scrubOwnCharacterData(node) {
|
|
957
1723
|
node.normalize();
|
|
958
1724
|
const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;
|
|
959
1725
|
const walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
|
|
@@ -962,29 +1728,18 @@ function createDOMPurify() {
|
|
|
962
1728
|
currentNode.data = _stripTemplateExpressions(currentNode.data);
|
|
963
1729
|
currentNode = walker.nextNode();
|
|
964
1730
|
}
|
|
965
|
-
const templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === undefined ? undefined : _node$querySelectorAl.call(node, "template");
|
|
966
|
-
if (templates) {
|
|
967
|
-
arrayForEach(templates, (tmpl) => {
|
|
968
|
-
if (_isDocumentFragment(tmpl.content)) {
|
|
969
|
-
_scrubTemplateExpressions2(tmpl.content);
|
|
970
|
-
}
|
|
971
|
-
});
|
|
972
|
-
}
|
|
973
1731
|
};
|
|
974
1732
|
const _isClobbered = function _isClobbered(element) {
|
|
975
1733
|
const realTagName = getNodeName ? getNodeName(element) : null;
|
|
976
|
-
if (typeof realTagName !== "string")
|
|
1734
|
+
if (typeof realTagName !== "string")
|
|
977
1735
|
return false;
|
|
978
|
-
|
|
979
|
-
if (transformCaseFunc(realTagName) !== "form") {
|
|
1736
|
+
if (transformCaseFunc(realTagName) !== "form")
|
|
980
1737
|
return false;
|
|
981
|
-
|
|
982
|
-
return typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);
|
|
1738
|
+
return typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== "function" || typeof element.removeAttributeNode !== "function" || typeof element.getAttributeNode !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);
|
|
983
1739
|
};
|
|
984
1740
|
const _isDocumentFragment = function _isDocumentFragment(value) {
|
|
985
|
-
if (!getNodeType || typeof value !== "object" || value === null)
|
|
1741
|
+
if (!getNodeType || typeof value !== "object" || value === null)
|
|
986
1742
|
return false;
|
|
987
|
-
}
|
|
988
1743
|
try {
|
|
989
1744
|
return getNodeType(value) === NODE_TYPE.documentFragment;
|
|
990
1745
|
} catch (_) {
|
|
@@ -992,9 +1747,8 @@ function createDOMPurify() {
|
|
|
992
1747
|
}
|
|
993
1748
|
};
|
|
994
1749
|
const _isNode = function _isNode(value) {
|
|
995
|
-
if (!getNodeType || typeof value !== "object" || value === null)
|
|
1750
|
+
if (!getNodeType || typeof value !== "object" || value === null)
|
|
996
1751
|
return false;
|
|
997
|
-
}
|
|
998
1752
|
try {
|
|
999
1753
|
return typeof getNodeType(value) === "number";
|
|
1000
1754
|
} catch (_) {
|
|
@@ -1002,45 +1756,37 @@ function createDOMPurify() {
|
|
|
1002
1756
|
}
|
|
1003
1757
|
};
|
|
1004
1758
|
function _executeHooks(hooks, currentNode, data) {
|
|
1005
|
-
if (hooks.length === 0)
|
|
1759
|
+
if (hooks.length === 0)
|
|
1006
1760
|
return;
|
|
1007
|
-
}
|
|
1008
1761
|
arrayForEach(hooks, (hook) => {
|
|
1009
1762
|
hook.call(DOMPurify, currentNode, data, CONFIG);
|
|
1010
1763
|
});
|
|
1011
1764
|
}
|
|
1012
1765
|
const _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {
|
|
1013
|
-
if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML))
|
|
1766
|
+
if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML))
|
|
1014
1767
|
return true;
|
|
1015
|
-
|
|
1016
|
-
if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === "string" && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) {
|
|
1768
|
+
if (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === "string" && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent)))
|
|
1017
1769
|
return true;
|
|
1018
|
-
|
|
1019
|
-
if (currentNode.nodeType === NODE_TYPE.processingInstruction) {
|
|
1770
|
+
if (currentNode.nodeType === NODE_TYPE.processingInstruction)
|
|
1020
1771
|
return true;
|
|
1021
|
-
|
|
1022
|
-
if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) {
|
|
1772
|
+
if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data))
|
|
1023
1773
|
return true;
|
|
1024
|
-
}
|
|
1025
1774
|
return false;
|
|
1026
1775
|
};
|
|
1027
1776
|
const _matchesNameCheck = function _matchesNameCheck(check, name) {
|
|
1028
|
-
if (check instanceof RegExp)
|
|
1777
|
+
if (check instanceof RegExp)
|
|
1029
1778
|
return regExpTest(check, name);
|
|
1030
|
-
}
|
|
1031
1779
|
if (check instanceof Function) {
|
|
1032
|
-
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2;_key < _len; _key++)
|
|
1780
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2;_key < _len; _key++)
|
|
1033
1781
|
args[_key - 2] = arguments[_key];
|
|
1034
|
-
}
|
|
1035
1782
|
return Boolean(check(name, ...args));
|
|
1036
1783
|
}
|
|
1037
1784
|
return false;
|
|
1038
1785
|
};
|
|
1039
1786
|
const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {
|
|
1040
|
-
if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))
|
|
1787
|
+
if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName))
|
|
1041
1788
|
return false;
|
|
1042
|
-
|
|
1043
|
-
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
|
|
1789
|
+
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {
|
|
1044
1790
|
const parentNode = getParentNode(currentNode);
|
|
1045
1791
|
const childNodes = getChildNodes(currentNode);
|
|
1046
1792
|
if (childNodes && parentNode) {
|
|
@@ -1055,25 +1801,22 @@ function createDOMPurify() {
|
|
|
1055
1801
|
return true;
|
|
1056
1802
|
};
|
|
1057
1803
|
const _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {
|
|
1058
|
-
if (hookList.length === 0)
|
|
1804
|
+
if (hookList.length === 0)
|
|
1059
1805
|
return set;
|
|
1060
|
-
}
|
|
1061
1806
|
return set === defaultSet || set === setConfigSet ? clone(set) : set;
|
|
1062
1807
|
};
|
|
1063
1808
|
const _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {
|
|
1064
|
-
if (currentNode === root || getParentNode(currentNode) !== null)
|
|
1809
|
+
if (currentNode === root || getParentNode(currentNode) !== null)
|
|
1065
1810
|
return false;
|
|
1066
|
-
|
|
1067
|
-
if (IN_PLACE) {
|
|
1811
|
+
if (IN_PLACE)
|
|
1068
1812
|
_neutralizeSubtree(currentNode);
|
|
1069
|
-
}
|
|
1070
1813
|
return true;
|
|
1071
1814
|
};
|
|
1072
1815
|
const _sanitizeElements = function _sanitizeElements(currentNode, root) {
|
|
1816
|
+
_markVisited(currentNode);
|
|
1073
1817
|
_executeHooks(hooks.beforeSanitizeElements, currentNode, null);
|
|
1074
|
-
if (_handleHookDetachedNode(currentNode, root))
|
|
1818
|
+
if (_handleHookDetachedNode(currentNode, root))
|
|
1075
1819
|
return true;
|
|
1076
|
-
}
|
|
1077
1820
|
if (_isClobbered(currentNode)) {
|
|
1078
1821
|
_forceRemove(currentNode);
|
|
1079
1822
|
return true;
|
|
@@ -1084,9 +1827,8 @@ function createDOMPurify() {
|
|
|
1084
1827
|
tagName,
|
|
1085
1828
|
allowedTags: ALLOWED_TAGS
|
|
1086
1829
|
});
|
|
1087
|
-
if (_handleHookDetachedNode(currentNode, root))
|
|
1830
|
+
if (_handleHookDetachedNode(currentNode, root))
|
|
1088
1831
|
return true;
|
|
1089
|
-
}
|
|
1090
1832
|
if (_isUnsafeNode(currentNode, tagName)) {
|
|
1091
1833
|
_forceRemove(currentNode);
|
|
1092
1834
|
return true;
|
|
@@ -1095,11 +1837,12 @@ function createDOMPurify() {
|
|
|
1095
1837
|
const removed = _sanitizeDisallowedNode(currentNode, tagName, root);
|
|
1096
1838
|
if (removed === false) {
|
|
1097
1839
|
_executeHooks(hooks.afterSanitizeElements, currentNode, null);
|
|
1840
|
+
if (_handleHookDetachedNode(currentNode, root))
|
|
1841
|
+
return true;
|
|
1098
1842
|
}
|
|
1099
1843
|
return removed;
|
|
1100
1844
|
}
|
|
1101
|
-
|
|
1102
|
-
if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {
|
|
1845
|
+
if (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {
|
|
1103
1846
|
_forceRemove(currentNode);
|
|
1104
1847
|
return true;
|
|
1105
1848
|
}
|
|
@@ -1110,88 +1853,88 @@ function createDOMPurify() {
|
|
|
1110
1853
|
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
|
|
1111
1854
|
const content = _stripTemplateExpressions(currentNode.textContent);
|
|
1112
1855
|
if (currentNode.textContent !== content) {
|
|
1113
|
-
arrayPush(DOMPurify.removed, {
|
|
1114
|
-
element: currentNode.cloneNode()
|
|
1115
|
-
});
|
|
1856
|
+
arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });
|
|
1116
1857
|
currentNode.textContent = content;
|
|
1117
1858
|
}
|
|
1118
1859
|
}
|
|
1119
1860
|
_executeHooks(hooks.afterSanitizeElements, currentNode, null);
|
|
1120
|
-
return
|
|
1861
|
+
return _handleHookDetachedNode(currentNode, root);
|
|
1121
1862
|
};
|
|
1122
1863
|
const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
|
|
1123
|
-
if (FORBID_ATTR[lcName])
|
|
1864
|
+
if (FORBID_ATTR[lcName])
|
|
1124
1865
|
return false;
|
|
1125
|
-
|
|
1126
|
-
if (_isPatchLinkageAttribute(lcName, lcTag)) {
|
|
1866
|
+
if (_isPatchLinkageAttribute(lcName, lcTag))
|
|
1127
1867
|
return false;
|
|
1128
|
-
|
|
1129
|
-
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && ((value in document) || (value in formElement))) {
|
|
1868
|
+
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && ((value in document) || (value in formElement)))
|
|
1130
1869
|
return false;
|
|
1131
|
-
}
|
|
1132
1870
|
const nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);
|
|
1133
|
-
if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName))
|
|
1871
|
+
if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName))
|
|
1134
1872
|
return true;
|
|
1135
|
-
|
|
1136
|
-
if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) {
|
|
1873
|
+
if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName))
|
|
1137
1874
|
return true;
|
|
1138
|
-
|
|
1139
|
-
if (!nameIsPermitted) {
|
|
1875
|
+
if (!nameIsPermitted)
|
|
1140
1876
|
return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);
|
|
1141
|
-
|
|
1142
|
-
if (URI_SAFE_ATTRIBUTES[lcName]) {
|
|
1877
|
+
if (URI_SAFE_ATTRIBUTES[lcName])
|
|
1143
1878
|
return true;
|
|
1144
|
-
|
|
1145
|
-
if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) {
|
|
1879
|
+
if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, "")))
|
|
1146
1880
|
return true;
|
|
1147
|
-
|
|
1148
|
-
if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) {
|
|
1881
|
+
if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag])
|
|
1149
1882
|
return true;
|
|
1150
|
-
|
|
1151
|
-
if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) {
|
|
1883
|
+
if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, "")))
|
|
1152
1884
|
return true;
|
|
1153
|
-
}
|
|
1154
1885
|
return !value;
|
|
1155
1886
|
};
|
|
1156
|
-
const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [
|
|
1887
|
+
const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [
|
|
1888
|
+
"annotation-xml",
|
|
1889
|
+
"color-profile",
|
|
1890
|
+
"font-face",
|
|
1891
|
+
"font-face-format",
|
|
1892
|
+
"font-face-name",
|
|
1893
|
+
"font-face-src",
|
|
1894
|
+
"font-face-uri",
|
|
1895
|
+
"missing-glyph"
|
|
1896
|
+
]);
|
|
1157
1897
|
const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
|
|
1158
1898
|
return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
|
|
1159
1899
|
};
|
|
1160
1900
|
const _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {
|
|
1161
|
-
if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function" && !namespaceURI)
|
|
1901
|
+
if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function" && !namespaceURI)
|
|
1162
1902
|
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
|
|
1163
|
-
case "TrustedHTML":
|
|
1903
|
+
case "TrustedHTML":
|
|
1164
1904
|
return _createTrustedHTML(value);
|
|
1165
|
-
|
|
1166
|
-
case "TrustedScriptURL": {
|
|
1905
|
+
case "TrustedScriptURL":
|
|
1167
1906
|
return _createTrustedScriptURL(value);
|
|
1168
|
-
}
|
|
1169
1907
|
}
|
|
1170
|
-
}
|
|
1171
1908
|
return value;
|
|
1172
1909
|
};
|
|
1173
1910
|
const _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {
|
|
1174
1911
|
try {
|
|
1175
|
-
if (namespaceURI)
|
|
1912
|
+
if (namespaceURI)
|
|
1176
1913
|
currentNode.setAttributeNS(namespaceURI, name, value);
|
|
1177
|
-
|
|
1914
|
+
else
|
|
1178
1915
|
currentNode.setAttribute(name, value);
|
|
1179
|
-
}
|
|
1180
1916
|
if (_isClobbered(currentNode)) {
|
|
1181
1917
|
_forceRemove(currentNode);
|
|
1182
|
-
|
|
1183
|
-
arrayPop(DOMPurify.removed);
|
|
1918
|
+
return false;
|
|
1184
1919
|
}
|
|
1920
|
+
return true;
|
|
1185
1921
|
} catch (_) {
|
|
1186
1922
|
_removeAttribute(name, currentNode);
|
|
1923
|
+
return false;
|
|
1187
1924
|
}
|
|
1188
1925
|
};
|
|
1189
|
-
const
|
|
1926
|
+
const _isUnsafeAttributeValue = function _isUnsafeAttributeValue(name, value) {
|
|
1927
|
+
if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value))
|
|
1928
|
+
return true;
|
|
1929
|
+
return stringToLowerCase(name) === "attributename" && stringMatch(value, "href") !== null;
|
|
1930
|
+
};
|
|
1931
|
+
const _sanitizeAttributes = function _sanitizeAttributes(currentNode, root) {
|
|
1190
1932
|
_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
|
|
1933
|
+
if (_handleHookDetachedNode(currentNode, root))
|
|
1934
|
+
return;
|
|
1191
1935
|
const attributes = currentNode.attributes;
|
|
1192
|
-
if (!attributes || _isClobbered(currentNode))
|
|
1936
|
+
if (!attributes || _isClobbered(currentNode))
|
|
1193
1937
|
return;
|
|
1194
|
-
}
|
|
1195
1938
|
ALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);
|
|
1196
1939
|
const hookEvent = {
|
|
1197
1940
|
attrName: "",
|
|
@@ -1208,6 +1951,7 @@ function createDOMPurify() {
|
|
|
1208
1951
|
const lcName = transformCaseFunc(name);
|
|
1209
1952
|
const initValue = attrValue;
|
|
1210
1953
|
let value = name === "value" ? initValue : stringTrim(initValue);
|
|
1954
|
+
let recreatedNamedProp = false;
|
|
1211
1955
|
hookEvent.attrName = lcName;
|
|
1212
1956
|
hookEvent.attrValue = value;
|
|
1213
1957
|
hookEvent.keepAttr = true;
|
|
@@ -1217,18 +1961,14 @@ function createDOMPurify() {
|
|
|
1217
1961
|
if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {
|
|
1218
1962
|
_removeAttribute(name, currentNode, attr);
|
|
1219
1963
|
value = SANITIZE_NAMED_PROPS_PREFIX + value;
|
|
1964
|
+
recreatedNamedProp = true;
|
|
1220
1965
|
}
|
|
1221
|
-
if (
|
|
1222
|
-
_removeAttribute(name, currentNode, attr);
|
|
1223
|
-
continue;
|
|
1224
|
-
}
|
|
1225
|
-
if (lcName === "attributename" && stringMatch(value, "href")) {
|
|
1966
|
+
if (_isUnsafeAttributeValue(name, value)) {
|
|
1226
1967
|
_removeAttribute(name, currentNode, attr);
|
|
1227
1968
|
continue;
|
|
1228
1969
|
}
|
|
1229
|
-
if (hookEvent.forceKeepAttr)
|
|
1970
|
+
if (hookEvent.forceKeepAttr)
|
|
1230
1971
|
continue;
|
|
1231
|
-
}
|
|
1232
1972
|
if (!hookEvent.keepAttr) {
|
|
1233
1973
|
_removeAttribute(name, currentNode, attr);
|
|
1234
1974
|
continue;
|
|
@@ -1237,19 +1977,20 @@ function createDOMPurify() {
|
|
|
1237
1977
|
_removeAttribute(name, currentNode, attr);
|
|
1238
1978
|
continue;
|
|
1239
1979
|
}
|
|
1240
|
-
if (SAFE_FOR_TEMPLATES)
|
|
1980
|
+
if (SAFE_FOR_TEMPLATES)
|
|
1241
1981
|
value = _stripTemplateExpressions(value);
|
|
1242
|
-
}
|
|
1243
1982
|
if (!_isValidAttribute(lcTag, lcName, value)) {
|
|
1244
1983
|
_removeAttribute(name, currentNode, attr);
|
|
1245
1984
|
continue;
|
|
1246
1985
|
}
|
|
1247
1986
|
value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);
|
|
1248
1987
|
if (value !== initValue) {
|
|
1249
|
-
_setAttributeValue(currentNode, name, namespaceURI, value)
|
|
1988
|
+
if (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp)
|
|
1989
|
+
arrayPop(DOMPurify.removed);
|
|
1250
1990
|
}
|
|
1251
1991
|
}
|
|
1252
1992
|
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
|
1993
|
+
_handleHookDetachedNode(currentNode, root);
|
|
1253
1994
|
};
|
|
1254
1995
|
const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {
|
|
1255
1996
|
let shadowNode = null;
|
|
@@ -1258,10 +1999,9 @@ function createDOMPurify() {
|
|
|
1258
1999
|
while (shadowNode = shadowIterator.nextNode()) {
|
|
1259
2000
|
_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
|
|
1260
2001
|
_sanitizeElements(shadowNode, fragment);
|
|
1261
|
-
_sanitizeAttributes(shadowNode);
|
|
1262
|
-
if (_isDocumentFragment(shadowNode.content))
|
|
2002
|
+
_sanitizeAttributes(shadowNode, fragment);
|
|
2003
|
+
if (_isDocumentFragment(shadowNode.content))
|
|
1263
2004
|
_sanitizeShadowDOM2(shadowNode.content);
|
|
1264
|
-
}
|
|
1265
2005
|
if (_readNodeType(shadowNode) === NODE_TYPE.element) {
|
|
1266
2006
|
const innerSr = getShadowRoot(shadowNode);
|
|
1267
2007
|
if (_isDocumentFragment(innerSr)) {
|
|
@@ -1270,6 +2010,8 @@ function createDOMPurify() {
|
|
|
1270
2010
|
}
|
|
1271
2011
|
}
|
|
1272
2012
|
}
|
|
2013
|
+
if (SAFE_FOR_TEMPLATES)
|
|
2014
|
+
_scrubOwnCharacterData(fragment);
|
|
1273
2015
|
_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
|
|
1274
2016
|
};
|
|
1275
2017
|
const _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {
|
|
@@ -1284,32 +2026,28 @@ function createDOMPurify() {
|
|
|
1284
2026
|
continue;
|
|
1285
2027
|
}
|
|
1286
2028
|
const node = item.node;
|
|
1287
|
-
const
|
|
1288
|
-
const isElement = nodeType === NODE_TYPE.element;
|
|
2029
|
+
const isElement = _readNodeType(node) === NODE_TYPE.element;
|
|
1289
2030
|
const childNodes = getChildNodes(node);
|
|
1290
|
-
if (childNodes)
|
|
1291
|
-
for (let i = childNodes.length - 1;i >= 0; --i)
|
|
2031
|
+
if (childNodes)
|
|
2032
|
+
for (let i = childNodes.length - 1;i >= 0; --i)
|
|
1292
2033
|
stack.push({
|
|
1293
2034
|
node: childNodes[i],
|
|
1294
2035
|
shadow: null
|
|
1295
2036
|
});
|
|
1296
|
-
}
|
|
1297
|
-
}
|
|
1298
2037
|
if (isElement) {
|
|
1299
2038
|
const rootName = getNodeName ? getNodeName(node) : null;
|
|
1300
2039
|
if (typeof rootName === "string" && transformCaseFunc(rootName) === "template") {
|
|
1301
2040
|
const content = node.content;
|
|
1302
|
-
if (_isDocumentFragment(content))
|
|
2041
|
+
if (_isDocumentFragment(content))
|
|
1303
2042
|
stack.push({
|
|
1304
2043
|
node: content,
|
|
1305
2044
|
shadow: null
|
|
1306
2045
|
});
|
|
1307
|
-
}
|
|
1308
2046
|
}
|
|
1309
2047
|
}
|
|
1310
2048
|
if (isElement) {
|
|
1311
2049
|
const sr = getShadowRoot(node);
|
|
1312
|
-
if (_isDocumentFragment(sr))
|
|
2050
|
+
if (_isDocumentFragment(sr))
|
|
1313
2051
|
stack.push({
|
|
1314
2052
|
node: null,
|
|
1315
2053
|
shadow: sr
|
|
@@ -1317,7 +2055,6 @@ function createDOMPurify() {
|
|
|
1317
2055
|
node: sr,
|
|
1318
2056
|
shadow: null
|
|
1319
2057
|
});
|
|
1320
|
-
}
|
|
1321
2058
|
}
|
|
1322
2059
|
}
|
|
1323
2060
|
};
|
|
@@ -1328,32 +2065,28 @@ function createDOMPurify() {
|
|
|
1328
2065
|
let currentNode = null;
|
|
1329
2066
|
let returnNode = null;
|
|
1330
2067
|
IS_EMPTY_INPUT = !dirty;
|
|
1331
|
-
if (IS_EMPTY_INPUT)
|
|
2068
|
+
if (IS_EMPTY_INPUT)
|
|
1332
2069
|
dirty = "<!-->";
|
|
1333
|
-
}
|
|
1334
2070
|
if (typeof dirty !== "string" && !_isNode(dirty)) {
|
|
1335
2071
|
dirty = stringifyValue(dirty);
|
|
1336
|
-
if (typeof dirty !== "string")
|
|
2072
|
+
if (typeof dirty !== "string")
|
|
1337
2073
|
throw typeErrorCreate("dirty is not a string, aborting");
|
|
1338
|
-
}
|
|
1339
2074
|
}
|
|
1340
|
-
if (!DOMPurify.isSupported)
|
|
2075
|
+
if (!DOMPurify.isSupported)
|
|
1341
2076
|
return dirty;
|
|
1342
|
-
}
|
|
1343
2077
|
if (SET_CONFIG) {
|
|
1344
2078
|
ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;
|
|
1345
2079
|
ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;
|
|
1346
|
-
} else
|
|
2080
|
+
} else
|
|
1347
2081
|
_parseConfig(cfg);
|
|
1348
|
-
|
|
1349
|
-
if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) {
|
|
2082
|
+
if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0)
|
|
1350
2083
|
ALLOWED_TAGS = clone(ALLOWED_TAGS);
|
|
1351
|
-
|
|
1352
|
-
if (hooks.uponSanitizeAttribute.length > 0) {
|
|
2084
|
+
if (hooks.uponSanitizeAttribute.length > 0)
|
|
1353
2085
|
ALLOWED_ATTR = clone(ALLOWED_ATTR);
|
|
1354
|
-
}
|
|
1355
2086
|
DOMPurify.removed = [];
|
|
1356
2087
|
const inPlace = IN_PLACE && typeof dirty !== "string" && _isNode(dirty);
|
|
2088
|
+
let inPlaceNodes = [];
|
|
2089
|
+
const outerVisited = IN_PLACE_VISITED;
|
|
1357
2090
|
if (inPlace) {
|
|
1358
2091
|
_neutralizePatchLinkage(dirty);
|
|
1359
2092
|
const nn = _readNodeName(dirty);
|
|
@@ -1368,92 +2101,75 @@ function createDOMPurify() {
|
|
|
1368
2101
|
_neutralizeRoot(dirty);
|
|
1369
2102
|
throw typeErrorCreate("root node is clobbered and cannot be sanitized in-place");
|
|
1370
2103
|
}
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
} catch (error) {
|
|
1374
|
-
_neutralizeRoot(dirty);
|
|
1375
|
-
throw error;
|
|
1376
|
-
}
|
|
2104
|
+
inPlaceNodes = _collectLiveNodes(dirty);
|
|
2105
|
+
IN_PLACE_VISITED = setCreate();
|
|
1377
2106
|
} else if (_isNode(dirty)) {
|
|
1378
2107
|
body = _initDocument("<!---->");
|
|
1379
2108
|
importedNode = body.ownerDocument.importNode(dirty, true);
|
|
1380
|
-
if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY")
|
|
2109
|
+
if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY")
|
|
1381
2110
|
body = importedNode;
|
|
1382
|
-
|
|
2111
|
+
else if (importedNode.nodeName === "HTML")
|
|
1383
2112
|
body = importedNode;
|
|
1384
|
-
|
|
2113
|
+
else
|
|
1385
2114
|
body.appendChild(importedNode);
|
|
1386
|
-
|
|
1387
|
-
_sanitizeAttachedShadowRoots(importedNode);
|
|
2115
|
+
_sanitizeAttachedShadowRoots(body);
|
|
1388
2116
|
} else {
|
|
1389
|
-
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1)
|
|
2117
|
+
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1)
|
|
1390
2118
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;
|
|
1391
|
-
}
|
|
1392
2119
|
body = _initDocument(dirty);
|
|
1393
|
-
if (!body)
|
|
2120
|
+
if (!body)
|
|
1394
2121
|
return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
|
|
1395
|
-
}
|
|
1396
2122
|
}
|
|
1397
|
-
if (body && FORCE_BODY)
|
|
2123
|
+
if (body && FORCE_BODY)
|
|
1398
2124
|
_forceRemove(body.firstChild);
|
|
1399
|
-
}
|
|
1400
2125
|
const walkRoot = inPlace ? dirty : body;
|
|
1401
2126
|
try {
|
|
2127
|
+
if (inPlace)
|
|
2128
|
+
_sanitizeAttachedShadowRoots(dirty);
|
|
1402
2129
|
const nodeIterator = _createNodeIterator(walkRoot);
|
|
1403
2130
|
while (currentNode = nodeIterator.nextNode()) {
|
|
1404
2131
|
_sanitizeElements(currentNode, walkRoot);
|
|
1405
|
-
_sanitizeAttributes(currentNode);
|
|
1406
|
-
if (_isDocumentFragment(currentNode.content))
|
|
2132
|
+
_sanitizeAttributes(currentNode, walkRoot);
|
|
2133
|
+
if (_isDocumentFragment(currentNode.content))
|
|
1407
2134
|
_sanitizeShadowDOM2(currentNode.content);
|
|
1408
|
-
}
|
|
1409
2135
|
}
|
|
2136
|
+
if (inPlace)
|
|
2137
|
+
_sanitizeUnvisitedNodes(dirty, inPlaceNodes);
|
|
1410
2138
|
} catch (error) {
|
|
1411
2139
|
if (inPlace) {
|
|
1412
2140
|
_neutralizeRoot(dirty);
|
|
1413
|
-
|
|
1414
|
-
if (entry.element) {
|
|
1415
|
-
_neutralizeSubtree(entry.element);
|
|
1416
|
-
}
|
|
1417
|
-
});
|
|
2141
|
+
_neutralizeDiscarded(dirty, inPlaceNodes);
|
|
1418
2142
|
}
|
|
1419
2143
|
throw error;
|
|
2144
|
+
} finally {
|
|
2145
|
+
IN_PLACE_VISITED = outerVisited;
|
|
1420
2146
|
}
|
|
1421
2147
|
if (inPlace) {
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
}
|
|
1426
|
-
});
|
|
1427
|
-
if (SAFE_FOR_TEMPLATES) {
|
|
2148
|
+
if (_neutralizeDiscarded(dirty, inPlaceNodes))
|
|
2149
|
+
throw typeErrorCreate("a node selected for removal could not be safely returned; refusing to sanitize in place");
|
|
2150
|
+
if (SAFE_FOR_TEMPLATES)
|
|
1428
2151
|
_scrubTemplateExpressions2(dirty);
|
|
1429
|
-
}
|
|
1430
2152
|
return dirty;
|
|
1431
2153
|
}
|
|
1432
2154
|
if (RETURN_DOM) {
|
|
1433
|
-
if (SAFE_FOR_TEMPLATES)
|
|
2155
|
+
if (SAFE_FOR_TEMPLATES)
|
|
1434
2156
|
_scrubTemplateExpressions2(body);
|
|
1435
|
-
}
|
|
1436
2157
|
if (RETURN_DOM_FRAGMENT) {
|
|
1437
2158
|
returnNode = createDocumentFragment.call(body.ownerDocument);
|
|
1438
|
-
while (body.firstChild)
|
|
2159
|
+
while (body.firstChild)
|
|
1439
2160
|
returnNode.appendChild(body.firstChild);
|
|
1440
|
-
|
|
1441
|
-
} else {
|
|
2161
|
+
} else
|
|
1442
2162
|
returnNode = body;
|
|
1443
|
-
|
|
1444
|
-
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
|
|
2163
|
+
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode)
|
|
1445
2164
|
returnNode = importNode.call(originalDocument, returnNode, true);
|
|
1446
|
-
}
|
|
1447
2165
|
return returnNode;
|
|
1448
2166
|
}
|
|
1449
2167
|
let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
|
|
1450
|
-
if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name))
|
|
2168
|
+
if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name))
|
|
1451
2169
|
serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + `>
|
|
1452
2170
|
` + serializedHTML;
|
|
1453
|
-
|
|
1454
|
-
if (SAFE_FOR_TEMPLATES) {
|
|
2171
|
+
if (SAFE_FOR_TEMPLATES)
|
|
1455
2172
|
serializedHTML = _stripTemplateExpressions(serializedHTML);
|
|
1456
|
-
}
|
|
1457
2173
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;
|
|
1458
2174
|
};
|
|
1459
2175
|
DOMPurify.setConfig = function() {
|
|
@@ -1472,26 +2188,24 @@ function createDOMPurify() {
|
|
|
1472
2188
|
emptyHTML = "";
|
|
1473
2189
|
};
|
|
1474
2190
|
DOMPurify.isValidAttribute = function(tag, attr, value) {
|
|
1475
|
-
if (!CONFIG)
|
|
2191
|
+
if (!CONFIG)
|
|
1476
2192
|
_parseConfig({});
|
|
1477
|
-
}
|
|
1478
2193
|
const lcTag = transformCaseFunc(tag);
|
|
1479
2194
|
const lcName = transformCaseFunc(attr);
|
|
2195
|
+
if (typeof value === "string" && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)))
|
|
2196
|
+
return false;
|
|
1480
2197
|
return _isValidAttribute(lcTag, lcName, value);
|
|
1481
2198
|
};
|
|
1482
2199
|
DOMPurify.addHook = function(entryPoint, hookFunction) {
|
|
1483
|
-
if (typeof hookFunction !== "function")
|
|
2200
|
+
if (typeof hookFunction !== "function")
|
|
1484
2201
|
return;
|
|
1485
|
-
|
|
1486
|
-
if (!objectHasOwnProperty(hooks, entryPoint)) {
|
|
2202
|
+
if (!objectHasOwnProperty(hooks, entryPoint))
|
|
1487
2203
|
return;
|
|
1488
|
-
}
|
|
1489
2204
|
arrayPush(hooks[entryPoint], hookFunction);
|
|
1490
2205
|
};
|
|
1491
2206
|
DOMPurify.removeHook = function(entryPoint, hookFunction) {
|
|
1492
|
-
if (!objectHasOwnProperty(hooks, entryPoint))
|
|
2207
|
+
if (!objectHasOwnProperty(hooks, entryPoint))
|
|
1493
2208
|
return;
|
|
1494
|
-
}
|
|
1495
2209
|
if (hookFunction !== undefined) {
|
|
1496
2210
|
const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
|
|
1497
2211
|
return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];
|
|
@@ -1499,9 +2213,8 @@ function createDOMPurify() {
|
|
|
1499
2213
|
return arrayPop(hooks[entryPoint]);
|
|
1500
2214
|
};
|
|
1501
2215
|
DOMPurify.removeHooks = function(entryPoint) {
|
|
1502
|
-
if (!objectHasOwnProperty(hooks, entryPoint))
|
|
2216
|
+
if (!objectHasOwnProperty(hooks, entryPoint))
|
|
1503
2217
|
return;
|
|
1504
|
-
}
|
|
1505
2218
|
hooks[entryPoint] = [];
|
|
1506
2219
|
};
|
|
1507
2220
|
DOMPurify.removeAllHooks = function() {
|
|
@@ -1509,203 +2222,269 @@ function createDOMPurify() {
|
|
|
1509
2222
|
};
|
|
1510
2223
|
return DOMPurify;
|
|
1511
2224
|
}
|
|
1512
|
-
var
|
|
2225
|
+
var purify_default = createDOMPurify();
|
|
1513
2226
|
|
|
1514
|
-
// ../../node_modules/.bun/marked@18.
|
|
1515
|
-
function
|
|
2227
|
+
// ../../node_modules/.bun/marked@18.1.1/node_modules/marked/lib/marked.esm.js
|
|
2228
|
+
function B() {
|
|
1516
2229
|
return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
|
|
1517
2230
|
}
|
|
1518
|
-
var
|
|
1519
|
-
function
|
|
1520
|
-
|
|
2231
|
+
var y = B();
|
|
2232
|
+
function V(a) {
|
|
2233
|
+
y = a;
|
|
2234
|
+
}
|
|
2235
|
+
var M = { exec: () => null };
|
|
2236
|
+
function D(a) {
|
|
2237
|
+
let e = [];
|
|
2238
|
+
return (t) => {
|
|
2239
|
+
let n = Math.max(0, Math.min(3, t - 1)), i = e[n];
|
|
2240
|
+
return i || (i = a(n), e[n] = i), i;
|
|
2241
|
+
};
|
|
1521
2242
|
}
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
return i = i.replace(m.caret, "$1"), t = t.replace(s, i), n;
|
|
2243
|
+
function h(a, e = "") {
|
|
2244
|
+
let t = typeof a == "string" ? a : a.source, n = { replace: (i, r) => {
|
|
2245
|
+
let o = typeof r == "string" ? r : r.source;
|
|
2246
|
+
return o = o.replace(x.caret, "$1"), t = t.replace(i, o), n;
|
|
1527
2247
|
}, getRegex: () => new RegExp(t, e) };
|
|
1528
2248
|
return n;
|
|
1529
2249
|
}
|
|
1530
|
-
var
|
|
2250
|
+
var ze = ((a = "") => {
|
|
1531
2251
|
try {
|
|
1532
|
-
return !!new RegExp("(?<=1)(?<!1)" +
|
|
2252
|
+
return !!new RegExp("(?<=1)(?<!1)" + a);
|
|
1533
2253
|
} catch {
|
|
1534
2254
|
return false;
|
|
1535
2255
|
}
|
|
1536
2256
|
})();
|
|
1537
|
-
var
|
|
1538
|
-
var
|
|
1539
|
-
var
|
|
1540
|
-
var
|
|
1541
|
-
var
|
|
1542
|
-
var
|
|
1543
|
-
var
|
|
1544
|
-
var
|
|
1545
|
-
var
|
|
1546
|
-
var
|
|
1547
|
-
var
|
|
1548
|
-
var
|
|
1549
|
-
var
|
|
1550
|
-
var
|
|
1551
|
-
var
|
|
1552
|
-
var
|
|
1553
|
-
var
|
|
1554
|
-
var
|
|
1555
|
-
var
|
|
1556
|
-
var
|
|
1557
|
-
var
|
|
1558
|
-
var
|
|
1559
|
-
var
|
|
1560
|
-
var
|
|
1561
|
-
|
|
1562
|
-
var
|
|
1563
|
-
|
|
1564
|
-
var
|
|
1565
|
-
var
|
|
1566
|
-
var
|
|
1567
|
-
var
|
|
1568
|
-
var
|
|
1569
|
-
var
|
|
1570
|
-
var
|
|
1571
|
-
var
|
|
1572
|
-
var
|
|
1573
|
-
var
|
|
1574
|
-
var
|
|
1575
|
-
var
|
|
1576
|
-
var
|
|
1577
|
-
var
|
|
1578
|
-
var
|
|
1579
|
-
var
|
|
1580
|
-
var
|
|
1581
|
-
var
|
|
1582
|
-
var
|
|
1583
|
-
var
|
|
1584
|
-
var
|
|
1585
|
-
var
|
|
1586
|
-
var
|
|
1587
|
-
var
|
|
1588
|
-
var
|
|
1589
|
-
var
|
|
1590
|
-
var
|
|
1591
|
-
var
|
|
1592
|
-
var
|
|
1593
|
-
var
|
|
1594
|
-
var
|
|
1595
|
-
var
|
|
1596
|
-
var
|
|
1597
|
-
var
|
|
1598
|
-
var
|
|
1599
|
-
var
|
|
1600
|
-
var
|
|
1601
|
-
var
|
|
1602
|
-
|
|
2257
|
+
var x = { codeRemoveIndent: /^(?: {0,3}\t| {1,4})/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, endingSpaceTabChar: /[ \t]$/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, leadingSpaceTab: /^[ \t]+/, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, numericCharacterReference: /&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/, numericCharacterReferenceOrAmpersand: /&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: (a) => new RegExp(`^( {0,3}${a})((?:[ ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: D((a) => new RegExp(`^ {0,${a}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)), hrRegex: D((a) => new RegExp(`^ {0,${a}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)), fencesBeginRegex: D((a) => new RegExp(`^ {0,${a}}(?:\`\`\`|~~~)`)), headingBeginRegex: D((a) => new RegExp(`^ {0,${a}}#`)), htmlBeginRegex: D((a) => new RegExp(`^ {0,${a}}(?:</?(?:${Q})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`, "i")), blockquoteBeginRegex: D((a) => new RegExp(`^ {0,${a}}>`)) };
|
|
2258
|
+
var Ee = /^(?:[ \t]*(?:\n|$))+/;
|
|
2259
|
+
var Me = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/;
|
|
2260
|
+
var Ce = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
|
|
2261
|
+
var N = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
|
|
2262
|
+
var Ie = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
|
|
2263
|
+
var Y = / {0,3}(?:[*+-]|\d{1,9}[.)])/;
|
|
2264
|
+
var fe = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
|
|
2265
|
+
var me = h(fe).replace(/bull/g, Y).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/hr/g, / {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
|
|
2266
|
+
var Be = h(fe).replace(/bull/g, Y).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/hr/g, / {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
|
|
2267
|
+
var ee = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/;
|
|
2268
|
+
var De = /^[^\n]+/;
|
|
2269
|
+
var te = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
|
|
2270
|
+
var qe = h(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", te).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
|
|
2271
|
+
var Ze = h(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g, Y).getRegex();
|
|
2272
|
+
var Q = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
|
|
2273
|
+
var ne = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
|
|
2274
|
+
var ve = h("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))", "i").replace("comment", ne).replace("tag", Q).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
|
|
2275
|
+
var xe = (a) => h(ee).replace("hr", N).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", a).replace("html", " {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag", Q).getRegex();
|
|
2276
|
+
var He = xe(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
|
|
2277
|
+
var Ge = xe(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/);
|
|
2278
|
+
var Ne = h(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Ge).getRegex();
|
|
2279
|
+
var re = { blockquote: Ne, code: Me, def: qe, fences: Ce, heading: Ie, hr: N, html: ve, lheading: me, list: Ze, newline: Ee, paragraph: He, table: M, text: De };
|
|
2280
|
+
var de = h("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", N).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3}\t)[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", " {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag", Q).getRegex();
|
|
2281
|
+
var Qe = { ...re, lheading: Be, table: de, paragraph: h(ee).replace("hr", N).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", de).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", " {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag", Q).getRegex() };
|
|
2282
|
+
var je = { ...re, html: h(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", ne).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: M, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: h(ee).replace("hr", N).replace("heading", ` *#{1,6} *[^
|
|
2283
|
+
]`).replace("lheading", me).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
|
|
2284
|
+
var Fe = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
|
|
2285
|
+
var Ue = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
|
|
2286
|
+
var be = /^( {2,}|\\)\n(?!\s*$)[ \t]*/;
|
|
2287
|
+
var Ke = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
|
|
2288
|
+
var S = /[\p{P}\p{S}]/u;
|
|
2289
|
+
var q = /[\s\p{P}\p{S}]/u;
|
|
2290
|
+
var j = /[^\s\p{P}\p{S}]/u;
|
|
2291
|
+
var Xe = h(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, q).getRegex();
|
|
2292
|
+
var We = /[\p{Pi}\p{Ps}"']/u;
|
|
2293
|
+
var Re = /(?!~)[\p{P}\p{S}]/u;
|
|
2294
|
+
var Ve = /(?!~)[\s\p{P}\p{S}]/u;
|
|
2295
|
+
var Je = /(?:[^\s\p{P}\p{S}]|~)/u;
|
|
2296
|
+
var Ye = h(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", ze ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex();
|
|
2297
|
+
var Te = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/;
|
|
2298
|
+
var et = h(Te, "u").replace(/punct/g, S).getRegex();
|
|
2299
|
+
var tt = h(Te, "u").replace(/punct/g, Re).getRegex();
|
|
2300
|
+
var nt = /^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/;
|
|
2301
|
+
var rt = h(nt, "u").replace(/openQuote/g, We).replace(/punct/g, S).getRegex();
|
|
2302
|
+
var Oe = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
|
|
2303
|
+
var st = h(Oe, "gu").replace(/notPunctSpace/g, j).replace(/punctSpace/g, q).replace(/punct/g, S).getRegex();
|
|
2304
|
+
var it = h(Oe, "gu").replace(/notPunctSpace/g, Je).replace(/punctSpace/g, Ve).replace(/punct/g, Re).getRegex();
|
|
2305
|
+
var ot = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)";
|
|
2306
|
+
var at = h(ot, "gu").replace(/notPunctSpace/g, j).replace(/punctSpace/g, q).replace(/punct/g, S).getRegex();
|
|
2307
|
+
var lt = h("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, j).replace(/punctSpace/g, q).replace(/punct/g, S).getRegex();
|
|
2308
|
+
var ut = "^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)";
|
|
2309
|
+
var pt = h(ut, "gu").replace(/notPunctSpace/g, j).replace(/punctSpace/g, q).replace(/punct/g, S).getRegex();
|
|
2310
|
+
var ct = h(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, S).getRegex();
|
|
2311
|
+
var ht = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)";
|
|
2312
|
+
var dt = h(ht, "gu").replace(/notPunctSpace/g, j).replace(/punctSpace/g, q).replace(/punct/g, S).getRegex();
|
|
2313
|
+
var kt = h(/\\(punct)/, "gu").replace(/punct/g, S).getRegex();
|
|
2314
|
+
var gt = h(/(`+)(?:[^`]|[^`][\s\S]*?[^`])\1(?!`)|`+|\\(punct)/, "gu").replace(/punct/g, S).getRegex();
|
|
2315
|
+
var ft = h(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
|
|
2316
|
+
var mt = h(ne).replace("(?:-->|$)", "-->").getRegex();
|
|
2317
|
+
var xt = h("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", mt).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
|
|
2318
|
+
var we = /\[(?:\\[\s\S]|[^\[\]\\])*\]/;
|
|
2319
|
+
var K = h(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets", we).getRegex();
|
|
2320
|
+
var bt = h(/^!?\[(label)\]\([ \t\n]*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?[ \t\n]*\)/).replace("label", K).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
|
|
2321
|
+
var Rt = h(/^!?\[(label)\]\[(ref)\]/).replace("label", K).replace("ref", te).getRegex();
|
|
2322
|
+
var Tt = h(/^!?\[(ref)\](?:\[\])?/).replace("ref", te).getRegex();
|
|
2323
|
+
var ke = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/;
|
|
2324
|
+
var Ot = h(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets", we).getRegex();
|
|
2325
|
+
var wt = h("reflink|nolink(?!\\()", "g").replace("reflink", h(/^!?\[(label)\]\[(ref)\]/).replace("label", Ot).replace("ref", ke).getRegex()).replace("nolink", h(/^!?\[(ref)\](?:\[\])?/).replace("ref", ke).getRegex()).getRegex();
|
|
2326
|
+
var ge = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
|
|
2327
|
+
var Pt = /[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/;
|
|
2328
|
+
var yt = h(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g, Pt).getRegex();
|
|
2329
|
+
var se = { _backpedal: M, anyPunctuation: kt, anyPunctuationOutsideCode: gt, autolink: ft, blockSkip: Ye, br: be, code: Ue, del: M, delLDelim: M, delRDelim: M, emStrongLDelim: et, emStrongRDelimAst: st, emStrongRDelimUnd: lt, escape: Fe, link: bt, nolink: Tt, punctuation: Xe, reflink: Rt, reflinkSearch: wt, tag: xt, text: Ke, url: M };
|
|
2330
|
+
var St = { ...se, emStrongLDelim: rt, emStrongRDelimAst: at, emStrongRDelimUnd: pt, link: h(/^!?\[(label)\]\((.*?)\)/).replace("label", K).getRegex(), reflink: h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", K).getRegex() };
|
|
2331
|
+
var J = { ...se, emStrongRDelimAst: it, emStrongLDelim: tt, delLDelim: ct, delRDelim: dt, url: h(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol", yt).replace("protocol", ge).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: h(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol", ge).replace(/emailProtocol/g, /(?:mailto|xmpp):/).getRegex() };
|
|
2332
|
+
var _t = { ...J, br: h(be).replace("{2,}", "*").getRegex(), text: h(J.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
|
|
2333
|
+
var F = { normal: re, gfm: Qe, pedantic: je };
|
|
2334
|
+
var Z = { normal: se, gfm: J, breaks: _t, pedantic: St };
|
|
2335
|
+
var $t = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" };
|
|
2336
|
+
var Pe = (a) => $t[a];
|
|
2337
|
+
function w(a, e) {
|
|
1603
2338
|
if (e) {
|
|
1604
|
-
if (
|
|
1605
|
-
return
|
|
1606
|
-
} else if (
|
|
1607
|
-
return
|
|
1608
|
-
return
|
|
2339
|
+
if (x.escapeTest.test(a))
|
|
2340
|
+
return a.replace(x.escapeReplace, Pe);
|
|
2341
|
+
} else if (x.escapeTestNoEncode.test(a))
|
|
2342
|
+
return a.replace(x.escapeReplaceNoEncode, Pe);
|
|
2343
|
+
return a;
|
|
2344
|
+
}
|
|
2345
|
+
function ye(a) {
|
|
2346
|
+
return x.numericCharacterReference.test(a) ? a.replace(x.numericCharacterReferenceOrAmpersand, (e, t, n) => {
|
|
2347
|
+
if (t === undefined && n === undefined)
|
|
2348
|
+
return "&";
|
|
2349
|
+
let i = t === undefined ? Number.parseInt(n, 16) : Number.parseInt(t, 10);
|
|
2350
|
+
return i === 0 || i > 1114111 || i >= 55296 && i <= 57343 ? "�" : i === 38 ? "&" : String.fromCodePoint(i);
|
|
2351
|
+
}) : a;
|
|
1609
2352
|
}
|
|
1610
|
-
function
|
|
2353
|
+
function ie(a) {
|
|
1611
2354
|
try {
|
|
1612
|
-
|
|
2355
|
+
a = encodeURI(a).replace(x.percentDecode, "%");
|
|
1613
2356
|
} catch {
|
|
1614
2357
|
return null;
|
|
1615
2358
|
}
|
|
1616
|
-
return
|
|
2359
|
+
return a;
|
|
1617
2360
|
}
|
|
1618
|
-
function
|
|
1619
|
-
let t =
|
|
1620
|
-
let
|
|
1621
|
-
for (;--
|
|
1622
|
-
|
|
1623
|
-
return
|
|
1624
|
-
}), n = t.split(
|
|
2361
|
+
function oe(a, e) {
|
|
2362
|
+
let t = a.replace(x.findPipe, (r, o, s) => {
|
|
2363
|
+
let l = false, u = o;
|
|
2364
|
+
for (;--u >= 0 && s[u] === "\\"; )
|
|
2365
|
+
l = !l;
|
|
2366
|
+
return l ? "|" : " |";
|
|
2367
|
+
}), n = t.split(x.splitPipe), i = 0;
|
|
1625
2368
|
if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e)
|
|
1626
2369
|
if (n.length > e)
|
|
1627
2370
|
n.splice(e);
|
|
1628
2371
|
else
|
|
1629
2372
|
for (;n.length < e; )
|
|
1630
2373
|
n.push("");
|
|
1631
|
-
for (;
|
|
1632
|
-
n[
|
|
2374
|
+
for (;i < n.length; i++)
|
|
2375
|
+
n[i] = n[i].trim().replace(x.slashPipe, "|");
|
|
1633
2376
|
return n;
|
|
1634
2377
|
}
|
|
1635
|
-
function
|
|
1636
|
-
let n =
|
|
2378
|
+
function A(a, e, t) {
|
|
2379
|
+
let n = a.length;
|
|
1637
2380
|
if (n === 0)
|
|
1638
2381
|
return "";
|
|
1639
|
-
let
|
|
1640
|
-
for (;
|
|
1641
|
-
let r =
|
|
2382
|
+
let i = 0;
|
|
2383
|
+
for (;i < n; ) {
|
|
2384
|
+
let r = a.charAt(n - i - 1);
|
|
1642
2385
|
if (r === e && !t)
|
|
1643
|
-
|
|
2386
|
+
i++;
|
|
1644
2387
|
else if (r !== e && t)
|
|
1645
|
-
|
|
2388
|
+
i++;
|
|
1646
2389
|
else
|
|
1647
2390
|
break;
|
|
1648
2391
|
}
|
|
1649
|
-
return
|
|
2392
|
+
return a.slice(0, n - i);
|
|
1650
2393
|
}
|
|
1651
|
-
function
|
|
1652
|
-
let e =
|
|
2394
|
+
function ae(a) {
|
|
2395
|
+
let e = a.split(`
|
|
1653
2396
|
`), t = e.length - 1;
|
|
1654
|
-
for (;t >= 0 &&
|
|
2397
|
+
for (;t >= 0 && x.blankLine.test(e[t]); )
|
|
1655
2398
|
t--;
|
|
1656
|
-
return e.length - t <= 2 ?
|
|
2399
|
+
return e.length - t <= 2 ? a : e.slice(0, t + 1).join(`
|
|
1657
2400
|
`);
|
|
1658
2401
|
}
|
|
1659
|
-
function
|
|
1660
|
-
|
|
2402
|
+
function v(a) {
|
|
2403
|
+
return a.trim().toLowerCase().toUpperCase().toLowerCase();
|
|
2404
|
+
}
|
|
2405
|
+
function le(a, e) {
|
|
2406
|
+
if (a.indexOf(e[0]) === -1 && a.indexOf(e[1]) === -1)
|
|
1661
2407
|
return -1;
|
|
1662
2408
|
let t = 0;
|
|
1663
|
-
for (let n = 0;n <
|
|
1664
|
-
if (
|
|
2409
|
+
for (let n = 0;n < a.length; n++)
|
|
2410
|
+
if (a[n] === "\\")
|
|
1665
2411
|
n++;
|
|
1666
|
-
else if (
|
|
2412
|
+
else if (a[n] === e[0])
|
|
1667
2413
|
t++;
|
|
1668
|
-
else if (
|
|
2414
|
+
else if (a[n] === e[1] && (t--, t < 0))
|
|
1669
2415
|
return n;
|
|
1670
2416
|
return t > 0 ? -2 : -1;
|
|
1671
2417
|
}
|
|
1672
|
-
function
|
|
2418
|
+
function X(a, e = 0) {
|
|
1673
2419
|
let t = e, n = "";
|
|
1674
|
-
for (let
|
|
1675
|
-
if (
|
|
2420
|
+
for (let i of a)
|
|
2421
|
+
if (i === "\t") {
|
|
1676
2422
|
let r = 4 - t % 4;
|
|
1677
2423
|
n += " ".repeat(r), t += r;
|
|
1678
2424
|
} else
|
|
1679
|
-
n +=
|
|
2425
|
+
n += i, t++;
|
|
1680
2426
|
return n;
|
|
1681
2427
|
}
|
|
1682
|
-
function
|
|
1683
|
-
let r = e.href,
|
|
1684
|
-
n.state.inLink = true;
|
|
1685
|
-
let
|
|
1686
|
-
|
|
2428
|
+
function Se(a, e, t, n, i) {
|
|
2429
|
+
let r = e.href, o = e.title || null, s = a[1].replace(i.other.outputLinkReplace, "$1"), l = a[0].charAt(0) === "!", u = n.state.inLink, c = n.state.linkEmitted, p = n.state.inRawBlock;
|
|
2430
|
+
n.state.inLink = true, n.state.linkEmitted = false;
|
|
2431
|
+
let d = n.inlineTokens(s), g = n.state.linkEmitted;
|
|
2432
|
+
if (n.state.linkEmitted = c, n.state.inLink = u, !l) {
|
|
2433
|
+
if (g) {
|
|
2434
|
+
n.state.inRawBlock = p;
|
|
2435
|
+
return;
|
|
2436
|
+
}
|
|
2437
|
+
n.state.linkEmitted = true;
|
|
2438
|
+
}
|
|
2439
|
+
return { type: l ? "image" : "link", raw: t, href: r, title: o, text: s, tokens: d };
|
|
1687
2440
|
}
|
|
1688
|
-
function
|
|
1689
|
-
let n =
|
|
2441
|
+
function Lt(a, e, t) {
|
|
2442
|
+
let n = a.match(t.other.indentCodeCompensation);
|
|
1690
2443
|
if (n === null)
|
|
1691
2444
|
return e;
|
|
1692
|
-
let
|
|
2445
|
+
let i = n[1];
|
|
1693
2446
|
return e.split(`
|
|
1694
2447
|
`).map((r) => {
|
|
1695
|
-
let
|
|
1696
|
-
if (
|
|
2448
|
+
let o = r.match(t.other.beginningSpace);
|
|
2449
|
+
if (o === null)
|
|
1697
2450
|
return r;
|
|
1698
|
-
let [
|
|
1699
|
-
return
|
|
2451
|
+
let [s] = o;
|
|
2452
|
+
return r.slice(Math.min(s.length, i.length));
|
|
1700
2453
|
}).join(`
|
|
1701
2454
|
`);
|
|
1702
2455
|
}
|
|
1703
|
-
|
|
2456
|
+
function _e(a, e, t, n) {
|
|
2457
|
+
if (!e.includes("<"))
|
|
2458
|
+
return false;
|
|
2459
|
+
for (let i = 0;i < e.length; i++) {
|
|
2460
|
+
if (e[i] === "\\") {
|
|
2461
|
+
i++;
|
|
2462
|
+
continue;
|
|
2463
|
+
}
|
|
2464
|
+
if (e[i] === "`") {
|
|
2465
|
+
let s = n.inline.code.exec(e.slice(i));
|
|
2466
|
+
if (s) {
|
|
2467
|
+
i += s[0].length - 1;
|
|
2468
|
+
continue;
|
|
2469
|
+
}
|
|
2470
|
+
}
|
|
2471
|
+
if (e[i] !== "<")
|
|
2472
|
+
continue;
|
|
2473
|
+
let r = a.slice(t + i), o = n.inline.tag.exec(r) || n.inline.autolink.exec(r);
|
|
2474
|
+
if (o) {
|
|
2475
|
+
if (o[0].length > e.length - i)
|
|
2476
|
+
return true;
|
|
2477
|
+
i += o[0].length - 1;
|
|
2478
|
+
}
|
|
2479
|
+
}
|
|
2480
|
+
return false;
|
|
2481
|
+
}
|
|
2482
|
+
var _ = class {
|
|
1704
2483
|
options;
|
|
1705
2484
|
rules;
|
|
1706
2485
|
lexer;
|
|
1707
2486
|
constructor(e) {
|
|
1708
|
-
this.options = e ||
|
|
2487
|
+
this.options = e || y;
|
|
1709
2488
|
}
|
|
1710
2489
|
space(e) {
|
|
1711
2490
|
let t = this.rules.block.newline.exec(e);
|
|
@@ -1715,15 +2494,15 @@ var w = class {
|
|
|
1715
2494
|
code(e) {
|
|
1716
2495
|
let t = this.rules.block.code.exec(e);
|
|
1717
2496
|
if (t) {
|
|
1718
|
-
let n = this.options.pedantic ? t[0] :
|
|
1719
|
-
return { type: "code", raw: n, codeBlockStyle: "indented", text:
|
|
2497
|
+
let n = this.options.pedantic ? t[0] : ae(t[0]), i = n.replace(this.rules.other.codeRemoveIndent, "");
|
|
2498
|
+
return { type: "code", raw: n, codeBlockStyle: "indented", text: i };
|
|
1720
2499
|
}
|
|
1721
2500
|
}
|
|
1722
2501
|
fences(e) {
|
|
1723
2502
|
let t = this.rules.block.fences.exec(e);
|
|
1724
2503
|
if (t) {
|
|
1725
|
-
let n = t[0],
|
|
1726
|
-
return { type: "code", raw: n, lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2], text:
|
|
2504
|
+
let n = t[0], i = Lt(n, t[3] || "", this.rules);
|
|
2505
|
+
return { type: "code", raw: n, lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2], text: i };
|
|
1727
2506
|
}
|
|
1728
2507
|
}
|
|
1729
2508
|
heading(e) {
|
|
@@ -1731,176 +2510,183 @@ var w = class {
|
|
|
1731
2510
|
if (t) {
|
|
1732
2511
|
let n = t[2].trim();
|
|
1733
2512
|
if (this.rules.other.endingHash.test(n)) {
|
|
1734
|
-
let
|
|
1735
|
-
(this.options.pedantic || !
|
|
2513
|
+
let i = A(n, "#");
|
|
2514
|
+
(this.options.pedantic || !i || this.rules.other.endingSpaceTabChar.test(i)) && (n = i.trim());
|
|
1736
2515
|
}
|
|
1737
|
-
return { type: "heading", raw:
|
|
2516
|
+
return { type: "heading", raw: A(t[0], `
|
|
1738
2517
|
`), depth: t[1].length, text: n, tokens: this.lexer.inline(n) };
|
|
1739
2518
|
}
|
|
1740
2519
|
}
|
|
1741
2520
|
hr(e) {
|
|
1742
2521
|
let t = this.rules.block.hr.exec(e);
|
|
1743
2522
|
if (t)
|
|
1744
|
-
return { type: "hr", raw:
|
|
2523
|
+
return { type: "hr", raw: A(t[0], `
|
|
1745
2524
|
`) };
|
|
1746
2525
|
}
|
|
1747
2526
|
blockquote(e) {
|
|
1748
2527
|
let t = this.rules.block.blockquote.exec(e);
|
|
1749
2528
|
if (t) {
|
|
1750
|
-
let n =
|
|
2529
|
+
let n = A(t[0], `
|
|
1751
2530
|
`).split(`
|
|
1752
|
-
`),
|
|
2531
|
+
`), i = "", r = "", o = [];
|
|
1753
2532
|
for (;n.length > 0; ) {
|
|
1754
|
-
let
|
|
1755
|
-
for (
|
|
1756
|
-
if (this.rules.other.blockquoteStart.test(n[
|
|
1757
|
-
|
|
1758
|
-
else if (!
|
|
1759
|
-
|
|
2533
|
+
let s = false, l = [], u;
|
|
2534
|
+
for (u = 0;u < n.length; u++)
|
|
2535
|
+
if (this.rules.other.blockquoteStart.test(n[u]))
|
|
2536
|
+
l.push(n[u]), s = true;
|
|
2537
|
+
else if (!s)
|
|
2538
|
+
l.push(n[u]);
|
|
1760
2539
|
else
|
|
1761
2540
|
break;
|
|
1762
|
-
n = n.slice(
|
|
1763
|
-
let c =
|
|
2541
|
+
n = n.slice(u);
|
|
2542
|
+
let c = l.join(`
|
|
1764
2543
|
`), p = c.replace(this.rules.other.blockquoteSetextReplace, `
|
|
1765
2544
|
$1`).replace(this.rules.other.blockquoteSetextReplace2, "");
|
|
1766
|
-
|
|
2545
|
+
i = i ? `${i}
|
|
1767
2546
|
${c}` : c, r = r ? `${r}
|
|
1768
2547
|
${p}` : p;
|
|
1769
|
-
let
|
|
1770
|
-
if (this.lexer.state.top = true, this.lexer.blockTokens(p,
|
|
2548
|
+
let d = this.lexer.state.top;
|
|
2549
|
+
if (this.lexer.state.top = true, this.lexer.blockTokens(p, o, true), this.lexer.state.top = d, n.length === 0)
|
|
1771
2550
|
break;
|
|
1772
|
-
let
|
|
1773
|
-
if (
|
|
2551
|
+
let g = o.at(-1);
|
|
2552
|
+
if (g?.type === "code" || g?.type === "heading" || g?.type === "hr" || g?.type === "html")
|
|
1774
2553
|
break;
|
|
1775
|
-
if (
|
|
1776
|
-
let
|
|
1777
|
-
` +
|
|
1778
|
-
`),
|
|
1779
|
-
|
|
2554
|
+
if (g?.type === "blockquote") {
|
|
2555
|
+
let k = g, P = n.join(`
|
|
2556
|
+
`), R = k.raw + `
|
|
2557
|
+
` + P.replace(this.rules.other.blockquoteSetextReplace2, ""), m = this.blockquote(R);
|
|
2558
|
+
o[o.length - 1] = m;
|
|
2559
|
+
let E = R.substring(m.raw.length).replace(/^\n/, ""), b = E ? E.split(`
|
|
2560
|
+
`).length : 0, H = b ? n.slice(0, -b) : n;
|
|
2561
|
+
H.length > 0 && (i = `${i}
|
|
2562
|
+
${H.join(`
|
|
2563
|
+
`)}`), r = r.substring(0, r.length - k.text.length) + m.text;
|
|
1780
2564
|
break;
|
|
1781
|
-
} else if (
|
|
1782
|
-
let
|
|
2565
|
+
} else if (g?.type === "list") {
|
|
2566
|
+
let k = g, P = k.raw + `
|
|
1783
2567
|
` + n.join(`
|
|
1784
|
-
`),
|
|
1785
|
-
|
|
2568
|
+
`), R = this.list(P);
|
|
2569
|
+
o[o.length - 1] = R, i = i.substring(0, i.length - g.raw.length) + R.raw, r = r.substring(0, r.length - k.raw.length) + R.raw, n = P.substring(o.at(-1).raw.length).split(`
|
|
1786
2570
|
`);
|
|
1787
2571
|
continue;
|
|
1788
2572
|
}
|
|
1789
2573
|
}
|
|
1790
|
-
return { type: "blockquote", raw:
|
|
2574
|
+
return { type: "blockquote", raw: i, tokens: o, text: r };
|
|
1791
2575
|
}
|
|
1792
2576
|
}
|
|
1793
2577
|
list(e) {
|
|
1794
2578
|
let t = this.rules.block.list.exec(e);
|
|
1795
2579
|
if (t) {
|
|
1796
|
-
let n = t[1].trim(),
|
|
1797
|
-
|
|
1798
|
-
let
|
|
2580
|
+
let n = e, i = () => n.length - e.length, r = t[1].trim(), o = r.length > 1, s = { type: "list", raw: "", ordered: o, start: o ? +r.slice(0, -1) : "", loose: false, items: [] };
|
|
2581
|
+
r = o ? `\\d{1,9}\\${r.slice(-1)}` : `\\${r}`, this.options.pedantic && (r = o ? r : "[*+-]");
|
|
2582
|
+
let l = this.rules.other.listItemRegex(r), u = false;
|
|
1799
2583
|
for (;e; ) {
|
|
1800
|
-
let
|
|
1801
|
-
if (!(t =
|
|
2584
|
+
let p = false, d = "";
|
|
2585
|
+
if (!(t = l.exec(e)) || this.rules.block.hr.test(e))
|
|
1802
2586
|
break;
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
`, 1)[0], R =
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
let
|
|
2587
|
+
let g = i();
|
|
2588
|
+
e = e.substring(t[0].length);
|
|
2589
|
+
let k = t[2].split(`
|
|
2590
|
+
`, 1)[0], P = t[1].length, R = this.options.pedantic ? X(k, P) : k.replace(this.rules.other.leadingSpaceTab, (W) => X(W, P)), m = e.split(`
|
|
2591
|
+
`, 1)[0], E = !R.trim(), b = 0;
|
|
2592
|
+
if (this.options.pedantic ? (b = 2, d = R.trimStart()) : E ? b = P + 1 : (b = R.search(this.rules.other.nonSpaceChar), b = b > 4 ? 1 : b, d = R.slice(b), b += P), E && this.rules.other.blankLine.test(m) && (e = e.substring(m.length + 1), p = true), !p) {
|
|
2593
|
+
let W = this.rules.other.nextBulletRegex(b), ue = this.rules.other.hrRegex(b), pe = this.rules.other.fencesBeginRegex(b), ce = this.rules.other.headingBeginRegex(b), $e = this.rules.other.htmlBeginRegex(b), Le = this.rules.other.blockquoteBeginRegex(b);
|
|
1810
2594
|
for (;e; ) {
|
|
1811
|
-
let
|
|
1812
|
-
`, 1)[0],
|
|
1813
|
-
if (
|
|
2595
|
+
let he = e.split(`
|
|
2596
|
+
`, 1)[0], G;
|
|
2597
|
+
if (m = he, this.options.pedantic ? (m = m.replace(this.rules.other.listReplaceNesting, " "), G = m) : G = m.replace(this.rules.other.leadingSpaceTab, (Ae) => X(Ae)), pe.test(m) || ce.test(m) || $e.test(m) || Le.test(m) || W.test(m) || ue.test(m))
|
|
1814
2598
|
break;
|
|
1815
|
-
if (
|
|
1816
|
-
|
|
1817
|
-
` +
|
|
2599
|
+
if (G.search(this.rules.other.nonSpaceChar) >= b || !m.trim())
|
|
2600
|
+
d += `
|
|
2601
|
+
` + G.slice(b);
|
|
1818
2602
|
else {
|
|
1819
|
-
if (
|
|
2603
|
+
if (E || R.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || pe.test(R) || ce.test(R) || ue.test(R))
|
|
1820
2604
|
break;
|
|
1821
|
-
|
|
1822
|
-
` +
|
|
2605
|
+
d += `
|
|
2606
|
+
` + m;
|
|
1823
2607
|
}
|
|
1824
|
-
|
|
1825
|
-
`, e = e.substring(Z.length + 1), k = C.slice(f);
|
|
2608
|
+
E = !m.trim(), e = e.substring(he.length + 1), R = G.slice(b);
|
|
1826
2609
|
}
|
|
1827
2610
|
}
|
|
1828
|
-
|
|
2611
|
+
let H = n.slice(g, i());
|
|
2612
|
+
s.loose || (u ? s.loose = true : this.rules.other.doubleBlankLine.test(H) && (u = true)), s.items.push({ type: "list_item", raw: H, task: !!this.options.gfm && this.rules.other.listIsTask.test(d), loose: false, text: d, tokens: [] });
|
|
1829
2613
|
}
|
|
1830
|
-
let
|
|
1831
|
-
if (
|
|
1832
|
-
|
|
2614
|
+
let c = s.items.at(-1);
|
|
2615
|
+
if (c)
|
|
2616
|
+
c.raw = c.raw.trimEnd(), c.text = c.text.trimEnd();
|
|
1833
2617
|
else
|
|
1834
2618
|
return;
|
|
1835
|
-
|
|
1836
|
-
for (let
|
|
1837
|
-
this.lexer.state.top = false,
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
2619
|
+
s.raw = n.slice(0, i()).trimEnd();
|
|
2620
|
+
for (let p of s.items)
|
|
2621
|
+
if (this.lexer.state.top = false, p.tokens = this.lexer.blockTokens(p.text, []), !s.loose) {
|
|
2622
|
+
let d = p.tokens.filter((k) => k.type === "space"), g = d.length > 0 && d.some((k) => this.rules.other.anyLine.test(k.raw));
|
|
2623
|
+
s.loose = g;
|
|
2624
|
+
}
|
|
2625
|
+
for (let p of s.items) {
|
|
2626
|
+
let d = p.tokens[0];
|
|
2627
|
+
if (p.task && (d?.type === "text" || d?.type === "paragraph")) {
|
|
2628
|
+
p.text = p.text.replace(this.rules.other.listReplaceTask, ""), d.raw = d.raw.replace(this.rules.other.listReplaceTask, ""), d.text = d.text.replace(this.rules.other.listReplaceTask, "");
|
|
1841
2629
|
for (let k = this.lexer.inlineQueue.length - 1;k >= 0; k--)
|
|
1842
2630
|
if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)) {
|
|
1843
2631
|
this.lexer.inlineQueue[k].src = this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask, "");
|
|
1844
2632
|
break;
|
|
1845
2633
|
}
|
|
1846
|
-
let
|
|
1847
|
-
if (
|
|
1848
|
-
let k = { type: "checkbox", raw:
|
|
1849
|
-
|
|
2634
|
+
let g = this.rules.other.listTaskCheckbox.exec(p.raw);
|
|
2635
|
+
if (g) {
|
|
2636
|
+
let k = { type: "checkbox", raw: g[0] + " ", checked: g[0] !== "[ ]" };
|
|
2637
|
+
p.checked = k.checked, s.loose ? p.tokens[0] && ["paragraph", "text"].includes(p.tokens[0].type) && "tokens" in p.tokens[0] && p.tokens[0].tokens ? (p.tokens[0].raw = k.raw + p.tokens[0].raw, p.tokens[0].text = k.raw + p.tokens[0].text, p.tokens[0].tokens.unshift(k)) : p.tokens.unshift({ type: "paragraph", raw: k.raw, text: k.raw, tokens: [k] }) : p.tokens.unshift(k);
|
|
1850
2638
|
}
|
|
1851
2639
|
} else
|
|
1852
|
-
|
|
1853
|
-
if (!r.loose) {
|
|
1854
|
-
let p = a.tokens.filter((h) => h.type === "space"), k = p.length > 0 && p.some((h) => this.rules.other.anyLine.test(h.raw));
|
|
1855
|
-
r.loose = k;
|
|
1856
|
-
}
|
|
2640
|
+
p.task && (p.task = false);
|
|
1857
2641
|
}
|
|
1858
|
-
if (
|
|
1859
|
-
for (let
|
|
1860
|
-
|
|
1861
|
-
for (let
|
|
1862
|
-
|
|
2642
|
+
if (s.loose)
|
|
2643
|
+
for (let p of s.items) {
|
|
2644
|
+
p.loose = true;
|
|
2645
|
+
for (let d of p.tokens)
|
|
2646
|
+
d.type === "text" && (d.type = "paragraph");
|
|
1863
2647
|
}
|
|
1864
|
-
return
|
|
2648
|
+
return s;
|
|
1865
2649
|
}
|
|
1866
2650
|
}
|
|
1867
2651
|
html(e) {
|
|
1868
2652
|
let t = this.rules.block.html.exec(e);
|
|
1869
2653
|
if (t) {
|
|
1870
|
-
let n =
|
|
2654
|
+
let n = ae(t[0]);
|
|
1871
2655
|
return { type: "html", block: true, raw: n, pre: t[1] === "pre" || t[1] === "script" || t[1] === "style", text: n };
|
|
1872
2656
|
}
|
|
1873
2657
|
}
|
|
1874
2658
|
def(e) {
|
|
1875
2659
|
let t = this.rules.block.def.exec(e);
|
|
1876
2660
|
if (t) {
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
2661
|
+
if (!this.rules.other.startAngleBracket.test(t[2]) && le(t[2], "()") !== -1)
|
|
2662
|
+
return;
|
|
2663
|
+
let n = v(t[1]).replace(this.rules.other.multipleSpaceGlobal, " "), i = t[2] ? t[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3];
|
|
2664
|
+
return { type: "def", tag: n, raw: A(t[0], `
|
|
2665
|
+
`), href: i, title: r };
|
|
1880
2666
|
}
|
|
1881
2667
|
}
|
|
1882
2668
|
table(e) {
|
|
1883
2669
|
let t = this.rules.block.table.exec(e);
|
|
1884
2670
|
if (!t || !this.rules.other.tableDelimiter.test(t[2]))
|
|
1885
2671
|
return;
|
|
1886
|
-
let n =
|
|
1887
|
-
`) : [],
|
|
2672
|
+
let n = oe(t[1]), i = t[2].replace(this.rules.other.tableAlignChars, "").split("|"), r = t[3]?.trim() ? t[3].replace(this.rules.other.tableRowBlankLine, "").split(`
|
|
2673
|
+
`) : [], o = { type: "table", raw: A(t[0], `
|
|
1888
2674
|
`), header: [], align: [], rows: [] };
|
|
1889
|
-
if (n.length ===
|
|
1890
|
-
for (let
|
|
1891
|
-
this.rules.other.tableAlignRight.test(
|
|
1892
|
-
for (let
|
|
1893
|
-
|
|
1894
|
-
for (let
|
|
1895
|
-
|
|
1896
|
-
return
|
|
2675
|
+
if (n.length === i.length) {
|
|
2676
|
+
for (let s of i)
|
|
2677
|
+
this.rules.other.tableAlignRight.test(s) ? o.align.push("right") : this.rules.other.tableAlignCenter.test(s) ? o.align.push("center") : this.rules.other.tableAlignLeft.test(s) ? o.align.push("left") : o.align.push(null);
|
|
2678
|
+
for (let s = 0;s < n.length; s++)
|
|
2679
|
+
o.header.push({ text: n[s], tokens: this.lexer.inline(n[s]), header: true, align: o.align[s] });
|
|
2680
|
+
for (let s of r)
|
|
2681
|
+
o.rows.push(oe(s, o.header.length).map((l, u) => ({ text: l, tokens: this.lexer.inline(l), header: false, align: o.align[u] })));
|
|
2682
|
+
return o;
|
|
1897
2683
|
}
|
|
1898
2684
|
}
|
|
1899
2685
|
lheading(e) {
|
|
1900
2686
|
let t = this.rules.block.lheading.exec(e);
|
|
1901
2687
|
if (t) {
|
|
1902
2688
|
let n = t[1].trim();
|
|
1903
|
-
return { type: "heading", raw:
|
|
2689
|
+
return { type: "heading", raw: A(t[0], `
|
|
1904
2690
|
`), depth: t[2].charAt(0) === "=" ? 1 : 2, text: n, tokens: this.lexer.inline(n) };
|
|
1905
2691
|
}
|
|
1906
2692
|
}
|
|
@@ -1928,78 +2714,90 @@ ${p}` : p;
|
|
|
1928
2714
|
return !this.lexer.state.inLink && this.rules.other.startATag.test(t[0]) ? this.lexer.state.inLink = true : this.lexer.state.inLink && this.rules.other.endATag.test(t[0]) && (this.lexer.state.inLink = false), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t[0]) ? this.lexer.state.inRawBlock = true : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t[0]) && (this.lexer.state.inRawBlock = false), { type: "html", raw: t[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: false, text: t[0] };
|
|
1929
2715
|
}
|
|
1930
2716
|
link(e) {
|
|
2717
|
+
if (this.lexer.state.linkParenPossible === false)
|
|
2718
|
+
return;
|
|
1931
2719
|
let t = this.rules.inline.link.exec(e);
|
|
1932
2720
|
if (t) {
|
|
1933
|
-
let n = t[
|
|
1934
|
-
if (!this.options.pedantic && this.rules
|
|
1935
|
-
|
|
2721
|
+
let n = t[0].charAt(0) === "!" ? 2 : 1;
|
|
2722
|
+
if (!this.options.pedantic && _e(e, t[1], n, this.rules))
|
|
2723
|
+
return;
|
|
2724
|
+
let i = t[2].trim();
|
|
2725
|
+
if (!this.options.pedantic && this.rules.other.startAngleBracket.test(i)) {
|
|
2726
|
+
if (!this.rules.other.endAngleBracket.test(i))
|
|
1936
2727
|
return;
|
|
1937
|
-
let
|
|
1938
|
-
if ((
|
|
2728
|
+
let s = A(i.slice(0, -1), "\\");
|
|
2729
|
+
if ((i.length - s.length) % 2 === 0)
|
|
1939
2730
|
return;
|
|
1940
2731
|
} else {
|
|
1941
|
-
let
|
|
1942
|
-
if (
|
|
2732
|
+
let s = le(t[2], "()");
|
|
2733
|
+
if (s === -2)
|
|
1943
2734
|
return;
|
|
1944
|
-
if (
|
|
1945
|
-
let u = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length +
|
|
1946
|
-
t[2] = t[2].substring(0,
|
|
2735
|
+
if (s > -1) {
|
|
2736
|
+
let u = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + s;
|
|
2737
|
+
t[2] = t[2].substring(0, s), t[0] = t[0].substring(0, u).trim(), t[3] = "";
|
|
1947
2738
|
}
|
|
1948
2739
|
}
|
|
1949
|
-
let
|
|
2740
|
+
let r = t[2], o = "";
|
|
1950
2741
|
if (this.options.pedantic) {
|
|
1951
|
-
let
|
|
1952
|
-
|
|
2742
|
+
let s = this.rules.other.pedanticHrefTitle.exec(r);
|
|
2743
|
+
s && (r = s[1], o = s[3]);
|
|
1953
2744
|
} else
|
|
1954
|
-
|
|
1955
|
-
return
|
|
2745
|
+
o = t[3] ? t[3].slice(1, -1) : "";
|
|
2746
|
+
return r = r.trim(), this.rules.other.startAngleBracket.test(r) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(i) ? r = r.slice(1) : r = r.slice(1, -1)), Se(t, { href: r && r.replace(this.rules.inline.anyPunctuation, "$1"), title: o && o.replace(this.rules.inline.anyPunctuation, "$1") }, t[0], this.lexer, this.rules);
|
|
1956
2747
|
}
|
|
1957
2748
|
}
|
|
1958
2749
|
reflink(e, t) {
|
|
1959
2750
|
let n;
|
|
1960
2751
|
if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) {
|
|
1961
|
-
let
|
|
1962
|
-
if (!
|
|
1963
|
-
|
|
1964
|
-
|
|
2752
|
+
let i = n[0].charAt(0) === "!" ? 2 : 1;
|
|
2753
|
+
if (!this.options.pedantic && _e(e, n[1], i, this.rules))
|
|
2754
|
+
return;
|
|
2755
|
+
let r = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), o = t[v(r)];
|
|
2756
|
+
if (!o) {
|
|
2757
|
+
let s = n[0].charAt(0);
|
|
2758
|
+
return { type: "text", raw: s, text: s };
|
|
1965
2759
|
}
|
|
1966
|
-
return
|
|
2760
|
+
return Se(n, o, n[0], this.lexer, this.rules);
|
|
1967
2761
|
}
|
|
1968
2762
|
}
|
|
1969
2763
|
emStrong(e, t, n = "") {
|
|
1970
|
-
let
|
|
1971
|
-
if (!
|
|
2764
|
+
let i = this.rules.inline.emStrongLDelim.exec(e);
|
|
2765
|
+
if (!i || !i[1] && !i[2] && !i[3] && !i[4] || i[4] && n.match(this.rules.other.unicodeAlphaNumeric))
|
|
1972
2766
|
return;
|
|
1973
|
-
if (!(
|
|
1974
|
-
let
|
|
1975
|
-
for (
|
|
1976
|
-
if (
|
|
2767
|
+
if (!(i[1] || i[3] || "") || !n || this.rules.inline.punctuation.exec(n)) {
|
|
2768
|
+
let o = [...i[0]].length - 1, s, l, u = o, c = 0, p = i[0][0], d = n === p, g = p === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
|
|
2769
|
+
for (g.lastIndex = 0, t = t.slice(-1 * e.length + o);(i = g.exec(t)) !== null; ) {
|
|
2770
|
+
if (s = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !s)
|
|
1977
2771
|
continue;
|
|
1978
|
-
if (
|
|
1979
|
-
|
|
1980
|
-
continue;
|
|
1981
|
-
} else if ((s[5] || s[6]) && i % 3 && !((i + u) % 3)) {
|
|
1982
|
-
c += u;
|
|
2772
|
+
if (l = [...s].length, i[3] || i[4]) {
|
|
2773
|
+
u += l;
|
|
1983
2774
|
continue;
|
|
2775
|
+
} else if (i[5] || i[6]) {
|
|
2776
|
+
if (o % 3 && !((o + l) % 3)) {
|
|
2777
|
+
c += l;
|
|
2778
|
+
continue;
|
|
2779
|
+
}
|
|
2780
|
+
if (d)
|
|
2781
|
+
break;
|
|
1984
2782
|
}
|
|
1985
|
-
if (
|
|
2783
|
+
if (u -= l, u > 0)
|
|
1986
2784
|
continue;
|
|
1987
|
-
|
|
1988
|
-
let k = [...
|
|
1989
|
-
if (Math.min(
|
|
1990
|
-
let
|
|
1991
|
-
return { type: "em", raw:
|
|
2785
|
+
l = Math.min(l, l + u + c);
|
|
2786
|
+
let k = [...i[0]][0].length, P = e.slice(0, o + i.index + k + l);
|
|
2787
|
+
if (Math.min(o, l) % 2) {
|
|
2788
|
+
let m = P.slice(1, -1);
|
|
2789
|
+
return { type: "em", raw: P, text: m, tokens: this.lexer.inlineTokens(m) };
|
|
1992
2790
|
}
|
|
1993
|
-
let R =
|
|
1994
|
-
return { type: "strong", raw:
|
|
2791
|
+
let R = P.slice(2, -2);
|
|
2792
|
+
return { type: "strong", raw: P, text: R, tokens: this.lexer.inlineTokens(R) };
|
|
1995
2793
|
}
|
|
1996
2794
|
}
|
|
1997
2795
|
}
|
|
1998
2796
|
codespan(e) {
|
|
1999
2797
|
let t = this.rules.inline.code.exec(e);
|
|
2000
2798
|
if (t) {
|
|
2001
|
-
let n = t[2].replace(this.rules.other.newLineCharGlobal, " "),
|
|
2002
|
-
return
|
|
2799
|
+
let n = t[2].replace(this.rules.other.newLineCharGlobal, " "), i = this.rules.other.nonSpaceChar.test(n), r = this.rules.other.startingSpaceChar.test(n) && this.rules.other.endingSpaceChar.test(n);
|
|
2800
|
+
return i && r && (n = n.substring(1, n.length - 1)), { type: "codespan", raw: t[0], text: n };
|
|
2003
2801
|
}
|
|
2004
2802
|
}
|
|
2005
2803
|
br(e) {
|
|
@@ -2008,79 +2806,79 @@ ${p}` : p;
|
|
|
2008
2806
|
return { type: "br", raw: t[0] };
|
|
2009
2807
|
}
|
|
2010
2808
|
del(e, t, n = "") {
|
|
2011
|
-
let
|
|
2012
|
-
if (!
|
|
2809
|
+
let i = this.rules.inline.delLDelim.exec(e);
|
|
2810
|
+
if (!i)
|
|
2013
2811
|
return;
|
|
2014
|
-
if (!(
|
|
2015
|
-
let
|
|
2016
|
-
for (c.lastIndex = 0, t = t.slice(-1 * e.length +
|
|
2017
|
-
if (
|
|
2812
|
+
if (!(i[1] || "") || !n || this.rules.inline.punctuation.exec(n)) {
|
|
2813
|
+
let o = [...i[0]].length - 1, s, l, u = o, c = this.rules.inline.delRDelim;
|
|
2814
|
+
for (c.lastIndex = 0, t = t.slice(-1 * e.length + o);(i = c.exec(t)) !== null; ) {
|
|
2815
|
+
if (s = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !s || (l = [...s].length, l !== o))
|
|
2018
2816
|
continue;
|
|
2019
|
-
if (
|
|
2020
|
-
|
|
2817
|
+
if (i[3] || i[4]) {
|
|
2818
|
+
u += l;
|
|
2021
2819
|
continue;
|
|
2022
2820
|
}
|
|
2023
|
-
if (
|
|
2821
|
+
if (u -= l, u > 0)
|
|
2024
2822
|
continue;
|
|
2025
|
-
|
|
2026
|
-
let p = [...
|
|
2027
|
-
return { type: "del", raw:
|
|
2823
|
+
l = Math.min(l, l + u);
|
|
2824
|
+
let p = [...i[0]][0].length, d = e.slice(0, o + i.index + p + l), g = d.slice(o, -o);
|
|
2825
|
+
return { type: "del", raw: d, text: g, tokens: this.lexer.inlineTokens(g) };
|
|
2028
2826
|
}
|
|
2029
2827
|
}
|
|
2030
2828
|
}
|
|
2031
2829
|
autolink(e) {
|
|
2032
2830
|
let t = this.rules.inline.autolink.exec(e);
|
|
2033
2831
|
if (t) {
|
|
2034
|
-
let n,
|
|
2035
|
-
return t[2] === "@" ? (n = t[1],
|
|
2832
|
+
let n, i;
|
|
2833
|
+
return t[2] === "@" ? (n = t[1], i = "mailto:" + n) : (n = t[1], i = n), { type: "link", raw: t[0], text: n, href: i, autolink: true, tokens: [{ type: "text", raw: n, text: n }] };
|
|
2036
2834
|
}
|
|
2037
2835
|
}
|
|
2038
2836
|
url(e) {
|
|
2039
2837
|
let t;
|
|
2040
2838
|
if (t = this.rules.inline.url.exec(e)) {
|
|
2041
|
-
let n,
|
|
2839
|
+
let n, i;
|
|
2042
2840
|
if (t[2] === "@")
|
|
2043
|
-
n = t[0],
|
|
2841
|
+
n = t[0], i = "mailto:" + n;
|
|
2044
2842
|
else {
|
|
2045
2843
|
let r;
|
|
2046
2844
|
do
|
|
2047
2845
|
r = t[0], t[0] = this.rules.inline._backpedal.exec(t[0])?.[0] ?? "";
|
|
2048
2846
|
while (r !== t[0]);
|
|
2049
|
-
n = t[0], t[1] === "www." ?
|
|
2847
|
+
n = t[0], t[1] === "www." ? i = "http://" + t[0] : i = t[0];
|
|
2050
2848
|
}
|
|
2051
|
-
return { type: "link", raw: t[0], text: n, href:
|
|
2849
|
+
return { type: "link", raw: t[0], text: n, href: i, autolink: true, tokens: [{ type: "text", raw: n, text: n }] };
|
|
2052
2850
|
}
|
|
2053
2851
|
}
|
|
2054
2852
|
inlineText(e) {
|
|
2055
2853
|
let t = this.rules.inline.text.exec(e);
|
|
2056
2854
|
if (t) {
|
|
2057
2855
|
let n = this.lexer.state.inRawBlock;
|
|
2058
|
-
return { type: "text", raw: t[0], text: t[0], escaped: n };
|
|
2856
|
+
return { type: "text", raw: t[0], text: n ? t[0] : ye(t[0]), escaped: n };
|
|
2059
2857
|
}
|
|
2060
2858
|
}
|
|
2061
2859
|
};
|
|
2062
|
-
var
|
|
2860
|
+
var T = class a {
|
|
2063
2861
|
tokens;
|
|
2064
2862
|
options;
|
|
2065
2863
|
state;
|
|
2066
2864
|
inlineQueue;
|
|
2067
2865
|
tokenizer;
|
|
2068
2866
|
constructor(e) {
|
|
2069
|
-
this.tokens = [], this.tokens.links = Object.create(null), this.options = e ||
|
|
2070
|
-
let t = { other:
|
|
2071
|
-
this.options.pedantic ? (t.block =
|
|
2867
|
+
this.tokens = [], this.tokens.links = Object.create(null), this.options = e || y, this.options.tokenizer = this.options.tokenizer || new _, this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, linkEmitted: false, linkParenPossible: true, top: true };
|
|
2868
|
+
let t = { other: x, block: F.normal, inline: Z.normal };
|
|
2869
|
+
this.options.pedantic ? (t.block = F.pedantic, t.inline = Z.pedantic) : this.options.gfm && (t.block = F.gfm, this.options.breaks ? t.inline = Z.breaks : t.inline = Z.gfm), this.tokenizer.rules = t;
|
|
2072
2870
|
}
|
|
2073
2871
|
static get rules() {
|
|
2074
|
-
return { block:
|
|
2872
|
+
return { block: F, inline: Z };
|
|
2075
2873
|
}
|
|
2076
2874
|
static lex(e, t) {
|
|
2077
|
-
return new
|
|
2875
|
+
return new a(t).lex(e);
|
|
2078
2876
|
}
|
|
2079
2877
|
static lexInline(e, t) {
|
|
2080
|
-
return new
|
|
2878
|
+
return new a(t).inlineTokens(e);
|
|
2081
2879
|
}
|
|
2082
2880
|
lex(e) {
|
|
2083
|
-
e = e.replace(
|
|
2881
|
+
e = e.replace(x.carriageReturn, `
|
|
2084
2882
|
`), this.blockTokens(e, this.tokens);
|
|
2085
2883
|
for (let t = 0;t < this.inlineQueue.length; t++) {
|
|
2086
2884
|
let n = this.inlineQueue[t];
|
|
@@ -2089,32 +2887,32 @@ var x = class l {
|
|
|
2089
2887
|
return this.inlineQueue = [], this.tokens;
|
|
2090
2888
|
}
|
|
2091
2889
|
blockTokens(e, t = [], n = false) {
|
|
2092
|
-
this.tokenizer.lexer = this, this.options.pedantic && (e = e.replace(
|
|
2093
|
-
let
|
|
2890
|
+
this.tokenizer.lexer = this, this.options.pedantic && (e = e.replace(x.tabCharGlobal, " ").replace(x.spaceLine, ""));
|
|
2891
|
+
let i = 1 / 0;
|
|
2094
2892
|
for (;e; ) {
|
|
2095
|
-
if (e.length <
|
|
2096
|
-
|
|
2893
|
+
if (e.length < i)
|
|
2894
|
+
i = e.length;
|
|
2097
2895
|
else {
|
|
2098
2896
|
this.infiniteLoopError(e.charCodeAt(0));
|
|
2099
2897
|
break;
|
|
2100
2898
|
}
|
|
2101
2899
|
let r;
|
|
2102
|
-
if (this.options.extensions?.block?.some((
|
|
2900
|
+
if (this.options.extensions?.block?.some((s) => (r = s.call({ lexer: this }, e, t)) ? (e = e.substring(r.raw.length), t.push(r), true) : false))
|
|
2103
2901
|
continue;
|
|
2104
2902
|
if (r = this.tokenizer.space(e)) {
|
|
2105
2903
|
e = e.substring(r.raw.length);
|
|
2106
|
-
let
|
|
2107
|
-
r.raw.length === 1 &&
|
|
2904
|
+
let s = t.at(-1);
|
|
2905
|
+
r.raw.length === 1 && s !== undefined ? s.raw += `
|
|
2108
2906
|
` : t.push(r);
|
|
2109
2907
|
continue;
|
|
2110
2908
|
}
|
|
2111
2909
|
if (r = this.tokenizer.code(e)) {
|
|
2112
2910
|
e = e.substring(r.raw.length);
|
|
2113
|
-
let
|
|
2114
|
-
|
|
2911
|
+
let s = t.at(-1);
|
|
2912
|
+
s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(`
|
|
2115
2913
|
`) ? "" : `
|
|
2116
|
-
`) + r.raw,
|
|
2117
|
-
` + r.text, this.inlineQueue.at(-1).src =
|
|
2914
|
+
`) + r.raw, s.text += `
|
|
2915
|
+
` + r.text, this.inlineQueue.at(-1).src = s.text) : t.push(r);
|
|
2118
2916
|
continue;
|
|
2119
2917
|
}
|
|
2120
2918
|
if (r = this.tokenizer.fences(e)) {
|
|
@@ -2143,11 +2941,11 @@ var x = class l {
|
|
|
2143
2941
|
}
|
|
2144
2942
|
if (r = this.tokenizer.def(e)) {
|
|
2145
2943
|
e = e.substring(r.raw.length);
|
|
2146
|
-
let
|
|
2147
|
-
|
|
2944
|
+
let s = t.at(-1);
|
|
2945
|
+
s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(`
|
|
2148
2946
|
`) ? "" : `
|
|
2149
|
-
`) + r.raw,
|
|
2150
|
-
` + r.raw, this.inlineQueue.at(-1).src =
|
|
2947
|
+
`) + r.raw, s.text += `
|
|
2948
|
+
` + r.raw, this.inlineQueue.at(-1).src = s.text) : this.tokens.links[r.tag] || (this.tokens.links[r.tag] = { href: r.href, title: r.title }, t.push(r));
|
|
2151
2949
|
continue;
|
|
2152
2950
|
}
|
|
2153
2951
|
if (r = this.tokenizer.table(e)) {
|
|
@@ -2158,28 +2956,28 @@ var x = class l {
|
|
|
2158
2956
|
e = e.substring(r.raw.length), t.push(r);
|
|
2159
2957
|
continue;
|
|
2160
2958
|
}
|
|
2161
|
-
let
|
|
2959
|
+
let o = e;
|
|
2162
2960
|
if (this.options.extensions?.startBlock) {
|
|
2163
|
-
let
|
|
2961
|
+
let s = 1 / 0, l = e.slice(1), u;
|
|
2164
2962
|
this.options.extensions.startBlock.forEach((c) => {
|
|
2165
|
-
|
|
2166
|
-
}),
|
|
2963
|
+
u = c.call({ lexer: this }, l), typeof u == "number" && u >= 0 && (s = Math.min(s, u));
|
|
2964
|
+
}), s < 1 / 0 && s >= 0 && (o = e.substring(0, s + 1));
|
|
2167
2965
|
}
|
|
2168
|
-
if (this.state.top && (r = this.tokenizer.paragraph(
|
|
2169
|
-
let
|
|
2170
|
-
n &&
|
|
2966
|
+
if (this.state.top && (r = this.tokenizer.paragraph(o))) {
|
|
2967
|
+
let s = t.at(-1);
|
|
2968
|
+
n && s?.type === "paragraph" ? (s.raw += (s.raw.endsWith(`
|
|
2171
2969
|
`) ? "" : `
|
|
2172
|
-
`) + r.raw,
|
|
2173
|
-
` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src =
|
|
2970
|
+
`) + r.raw, s.text += `
|
|
2971
|
+
` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t.push(r), n = o.length !== e.length, e = e.substring(r.raw.length);
|
|
2174
2972
|
continue;
|
|
2175
2973
|
}
|
|
2176
2974
|
if (r = this.tokenizer.text(e)) {
|
|
2177
2975
|
e = e.substring(r.raw.length);
|
|
2178
|
-
let
|
|
2179
|
-
|
|
2976
|
+
let s = t.at(-1);
|
|
2977
|
+
s?.type === "text" ? (s.raw += (s.raw.endsWith(`
|
|
2180
2978
|
`) ? "" : `
|
|
2181
|
-
`) + r.raw,
|
|
2182
|
-
` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src =
|
|
2979
|
+
`) + r.raw, s.text += `
|
|
2980
|
+
` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t.push(r);
|
|
2183
2981
|
continue;
|
|
2184
2982
|
}
|
|
2185
2983
|
if (e) {
|
|
@@ -2192,86 +2990,115 @@ var x = class l {
|
|
|
2192
2990
|
inline(e, t = []) {
|
|
2193
2991
|
return this.inlineQueue.push({ src: e, tokens: t }), t;
|
|
2194
2992
|
}
|
|
2993
|
+
linkInText(e) {
|
|
2994
|
+
if (!e.includes("["))
|
|
2995
|
+
return false;
|
|
2996
|
+
let t = this.tokenizer.rules.inline.link;
|
|
2997
|
+
for (let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))
|
|
2998
|
+
if (t.test(n[0]) && e.charAt(n.index - 1) !== "!")
|
|
2999
|
+
return true;
|
|
3000
|
+
for (let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)) {
|
|
3001
|
+
let i = n[0], r = i.lastIndexOf("[");
|
|
3002
|
+
if (!(i.charAt(0) === "!" || !Object.hasOwn(this.tokens.links, v(i.slice(r + 1, -1)))) && !(r > 1 && this.linkInText(i.slice(1, r - 1))))
|
|
3003
|
+
return true;
|
|
3004
|
+
}
|
|
3005
|
+
return false;
|
|
3006
|
+
}
|
|
2195
3007
|
inlineTokens(e, t = []) {
|
|
2196
3008
|
this.tokenizer.lexer = this;
|
|
2197
|
-
let n =
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
}
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
let
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
3009
|
+
let n = this.state.linkParenPossible;
|
|
3010
|
+
this.state.linkParenPossible = n && e.includes(")");
|
|
3011
|
+
try {
|
|
3012
|
+
return this.#e(e, t);
|
|
3013
|
+
} finally {
|
|
3014
|
+
this.state.linkParenPossible = n;
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
#e(e, t) {
|
|
3018
|
+
let n = e;
|
|
3019
|
+
if (this.tokens.links && e.includes("[")) {
|
|
3020
|
+
let s = this.tokenizer.rules.inline.reflinkSearch, l = (u) => {
|
|
3021
|
+
let c = u.lastIndexOf("[");
|
|
3022
|
+
if (!Object.hasOwn(this.tokens.links, v(u.slice(c + 1, -1))))
|
|
3023
|
+
return u;
|
|
3024
|
+
if (c > 1 && u.charAt(0) !== "!") {
|
|
3025
|
+
let p = u.slice(1, c - 1);
|
|
3026
|
+
if (this.linkInText(p))
|
|
3027
|
+
return "[" + p.replace(s, l) + "][" + "a".repeat(u.length - c - 2) + "]";
|
|
3028
|
+
}
|
|
3029
|
+
return "[" + "a".repeat(u.length - 2) + "]";
|
|
3030
|
+
};
|
|
3031
|
+
n = n.replace(s, l);
|
|
3032
|
+
}
|
|
3033
|
+
n = n.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode, (s, l, u) => u ? "+".repeat(s.length) : l ? l + s.slice(l.length, -l.length).replace(/`/g, "+") + l : s), n = n.replace(this.tokenizer.rules.inline.blockSkip, (s, l, u) => {
|
|
3034
|
+
let c = u ? u.length : 0;
|
|
3035
|
+
return s.slice(0, c) + "[" + "a".repeat(s.length - c - 2) + "]";
|
|
3036
|
+
}), n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
|
|
3037
|
+
let i = false, r = "", o = 1 / 0;
|
|
2211
3038
|
for (;e; ) {
|
|
2212
|
-
if (e.length <
|
|
2213
|
-
|
|
3039
|
+
if (e.length < o)
|
|
3040
|
+
o = e.length;
|
|
2214
3041
|
else {
|
|
2215
3042
|
this.infiniteLoopError(e.charCodeAt(0));
|
|
2216
3043
|
break;
|
|
2217
3044
|
}
|
|
2218
|
-
i || (
|
|
2219
|
-
let
|
|
2220
|
-
if (this.options.extensions?.inline?.some((
|
|
3045
|
+
i || (r = ""), i = false;
|
|
3046
|
+
let s;
|
|
3047
|
+
if (this.options.extensions?.inline?.some((u) => (s = u.call({ lexer: this }, e, t)) ? (e = e.substring(s.raw.length), t.push(s), true) : false))
|
|
2221
3048
|
continue;
|
|
2222
|
-
if (
|
|
2223
|
-
e = e.substring(
|
|
3049
|
+
if (s = this.tokenizer.escape(e)) {
|
|
3050
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2224
3051
|
continue;
|
|
2225
3052
|
}
|
|
2226
|
-
if (
|
|
2227
|
-
e = e.substring(
|
|
3053
|
+
if (s = this.tokenizer.tag(e)) {
|
|
3054
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2228
3055
|
continue;
|
|
2229
3056
|
}
|
|
2230
|
-
if (
|
|
2231
|
-
e = e.substring(
|
|
3057
|
+
if (s = this.tokenizer.link(e)) {
|
|
3058
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2232
3059
|
continue;
|
|
2233
3060
|
}
|
|
2234
|
-
if (
|
|
2235
|
-
e = e.substring(
|
|
2236
|
-
let
|
|
2237
|
-
|
|
3061
|
+
if (s = this.tokenizer.reflink(e, this.tokens.links)) {
|
|
3062
|
+
e = e.substring(s.raw.length);
|
|
3063
|
+
let u = t.at(-1);
|
|
3064
|
+
s.type === "text" && u?.type === "text" ? (u.raw += s.raw, u.text += s.text) : t.push(s);
|
|
2238
3065
|
continue;
|
|
2239
3066
|
}
|
|
2240
|
-
if (
|
|
2241
|
-
e = e.substring(
|
|
3067
|
+
if (s = this.tokenizer.emStrong(e, n, r)) {
|
|
3068
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2242
3069
|
continue;
|
|
2243
3070
|
}
|
|
2244
|
-
if (
|
|
2245
|
-
e = e.substring(
|
|
3071
|
+
if (s = this.tokenizer.codespan(e)) {
|
|
3072
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2246
3073
|
continue;
|
|
2247
3074
|
}
|
|
2248
|
-
if (
|
|
2249
|
-
e = e.substring(
|
|
3075
|
+
if (s = this.tokenizer.br(e)) {
|
|
3076
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2250
3077
|
continue;
|
|
2251
3078
|
}
|
|
2252
|
-
if (
|
|
2253
|
-
e = e.substring(
|
|
3079
|
+
if (s = this.tokenizer.del(e, n, r)) {
|
|
3080
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2254
3081
|
continue;
|
|
2255
3082
|
}
|
|
2256
|
-
if (
|
|
2257
|
-
e = e.substring(
|
|
3083
|
+
if (s = this.tokenizer.autolink(e)) {
|
|
3084
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2258
3085
|
continue;
|
|
2259
3086
|
}
|
|
2260
|
-
if (!this.state.inLink && (
|
|
2261
|
-
e = e.substring(
|
|
3087
|
+
if (!this.state.inLink && (s = this.tokenizer.url(e))) {
|
|
3088
|
+
e = e.substring(s.raw.length), t.push(s);
|
|
2262
3089
|
continue;
|
|
2263
3090
|
}
|
|
2264
|
-
let
|
|
3091
|
+
let l = e;
|
|
2265
3092
|
if (this.options.extensions?.startInline) {
|
|
2266
|
-
let
|
|
2267
|
-
this.options.extensions.startInline.forEach((
|
|
2268
|
-
|
|
2269
|
-
}),
|
|
2270
|
-
}
|
|
2271
|
-
if (
|
|
2272
|
-
e = e.substring(
|
|
2273
|
-
let
|
|
2274
|
-
|
|
3093
|
+
let u = 1 / 0, c = e.slice(1), p;
|
|
3094
|
+
this.options.extensions.startInline.forEach((d) => {
|
|
3095
|
+
p = d.call({ lexer: this }, c), typeof p == "number" && p >= 0 && (u = Math.min(u, p));
|
|
3096
|
+
}), u < 1 / 0 && u >= 0 && (l = e.substring(0, u + 1));
|
|
3097
|
+
}
|
|
3098
|
+
if (s = this.tokenizer.inlineText(l)) {
|
|
3099
|
+
e = e.substring(s.raw.length), s.raw.slice(-1) !== "_" && (r = s.raw.slice(-1)), i = true;
|
|
3100
|
+
let u = t.at(-1);
|
|
3101
|
+
u?.type === "text" ? (u.raw += s.raw, u.text += s.text) : t.push(s);
|
|
2275
3102
|
continue;
|
|
2276
3103
|
}
|
|
2277
3104
|
if (e) {
|
|
@@ -2289,20 +3116,20 @@ var x = class l {
|
|
|
2289
3116
|
throw new Error(t);
|
|
2290
3117
|
}
|
|
2291
3118
|
};
|
|
2292
|
-
var
|
|
3119
|
+
var $ = class {
|
|
2293
3120
|
options;
|
|
2294
3121
|
parser;
|
|
2295
3122
|
constructor(e) {
|
|
2296
|
-
this.options = e ||
|
|
3123
|
+
this.options = e || y;
|
|
2297
3124
|
}
|
|
2298
3125
|
space(e) {
|
|
2299
3126
|
return "";
|
|
2300
3127
|
}
|
|
2301
3128
|
code({ text: e, lang: t, escaped: n }) {
|
|
2302
|
-
let
|
|
2303
|
-
|
|
2304
|
-
return
|
|
2305
|
-
` : "<pre><code>" + (n ? r :
|
|
3129
|
+
let i = (t || "").match(x.notSpaceStart)?.[0], r = e ? e.replace(x.endingNewline, "") + `
|
|
3130
|
+
` : "";
|
|
3131
|
+
return i ? '<pre><code class="language-' + w(i) + '">' + (n ? r : w(r, true)) + `</code></pre>
|
|
3132
|
+
` : "<pre><code>" + (n ? r : w(r, true)) + `</code></pre>
|
|
2306
3133
|
`;
|
|
2307
3134
|
}
|
|
2308
3135
|
blockquote({ tokens: e }) {
|
|
@@ -2325,14 +3152,14 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
2325
3152
|
`;
|
|
2326
3153
|
}
|
|
2327
3154
|
list(e) {
|
|
2328
|
-
let { ordered: t, start: n } = e,
|
|
2329
|
-
for (let
|
|
2330
|
-
let
|
|
2331
|
-
|
|
2332
|
-
}
|
|
2333
|
-
let r = t ? "ol" : "ul",
|
|
2334
|
-
return "<" + r +
|
|
2335
|
-
` +
|
|
3155
|
+
let { ordered: t, start: n } = e, i = "";
|
|
3156
|
+
for (let s = 0;s < e.items.length; s++) {
|
|
3157
|
+
let l = e.items[s];
|
|
3158
|
+
i += this.listitem(l);
|
|
3159
|
+
}
|
|
3160
|
+
let r = t ? "ol" : "ul", o = t && n !== 1 ? ' start="' + n + '"' : "";
|
|
3161
|
+
return "<" + r + o + `>
|
|
3162
|
+
` + i + "</" + r + `>
|
|
2336
3163
|
`;
|
|
2337
3164
|
}
|
|
2338
3165
|
listitem(e) {
|
|
@@ -2351,18 +3178,18 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
2351
3178
|
for (let r = 0;r < e.header.length; r++)
|
|
2352
3179
|
n += this.tablecell(e.header[r]);
|
|
2353
3180
|
t += this.tablerow({ text: n });
|
|
2354
|
-
let
|
|
3181
|
+
let i = "";
|
|
2355
3182
|
for (let r = 0;r < e.rows.length; r++) {
|
|
2356
|
-
let
|
|
3183
|
+
let o = e.rows[r];
|
|
2357
3184
|
n = "";
|
|
2358
|
-
for (let
|
|
2359
|
-
n += this.tablecell(
|
|
2360
|
-
|
|
3185
|
+
for (let s = 0;s < o.length; s++)
|
|
3186
|
+
n += this.tablecell(o[s]);
|
|
3187
|
+
i += this.tablerow({ text: n });
|
|
2361
3188
|
}
|
|
2362
|
-
return
|
|
3189
|
+
return i && (i = `<tbody>${i}</tbody>`), `<table>
|
|
2363
3190
|
<thead>
|
|
2364
3191
|
` + t + `</thead>
|
|
2365
|
-
` +
|
|
3192
|
+
` + i + `</table>
|
|
2366
3193
|
`;
|
|
2367
3194
|
}
|
|
2368
3195
|
tablerow({ text: e }) {
|
|
@@ -2382,7 +3209,7 @@ ${e}</tr>
|
|
|
2382
3209
|
return `<em>${this.parser.parseInline(e)}</em>`;
|
|
2383
3210
|
}
|
|
2384
3211
|
codespan({ text: e }) {
|
|
2385
|
-
return `<code>${
|
|
3212
|
+
return `<code>${w(e, true)}</code>`;
|
|
2386
3213
|
}
|
|
2387
3214
|
br(e) {
|
|
2388
3215
|
return "<br>";
|
|
@@ -2390,28 +3217,28 @@ ${e}</tr>
|
|
|
2390
3217
|
del({ tokens: e }) {
|
|
2391
3218
|
return `<del>${this.parser.parseInline(e)}</del>`;
|
|
2392
3219
|
}
|
|
2393
|
-
link({ href: e, title: t,
|
|
2394
|
-
let
|
|
2395
|
-
if (
|
|
2396
|
-
return
|
|
2397
|
-
e = r;
|
|
2398
|
-
let
|
|
2399
|
-
return t && (
|
|
2400
|
-
}
|
|
2401
|
-
image({ href: e, title: t, text: n, tokens:
|
|
2402
|
-
|
|
2403
|
-
let r =
|
|
3220
|
+
link({ href: e, title: t, text: n, tokens: i, autolink: r }) {
|
|
3221
|
+
let o = r ? w(n, true) : this.parser.parseInline(i), s = ie(e);
|
|
3222
|
+
if (s === null)
|
|
3223
|
+
return o;
|
|
3224
|
+
e = w(s, r);
|
|
3225
|
+
let l = '<a href="' + e + '"';
|
|
3226
|
+
return t && (l += ' title="' + w(t) + '"'), l += ">" + o + "</a>", l;
|
|
3227
|
+
}
|
|
3228
|
+
image({ href: e, title: t, text: n, tokens: i }) {
|
|
3229
|
+
i && (n = this.parser.parseInline(i, this.parser.textRenderer));
|
|
3230
|
+
let r = ie(e);
|
|
2404
3231
|
if (r === null)
|
|
2405
|
-
return
|
|
3232
|
+
return w(n);
|
|
2406
3233
|
e = r;
|
|
2407
|
-
let
|
|
2408
|
-
return t && (
|
|
3234
|
+
let o = `<img src="${w(e)}" alt="${w(n)}"`;
|
|
3235
|
+
return t && (o += ` title="${w(t)}"`), o += ">", o;
|
|
2409
3236
|
}
|
|
2410
3237
|
text(e) {
|
|
2411
|
-
return "tokens" in e && e.tokens ? this.parser.parseInline(e.tokens) : ("escaped" in e) && e.escaped ? e.text :
|
|
3238
|
+
return "tokens" in e && e.tokens ? this.parser.parseInline(e.tokens) : ("escaped" in e) && e.escaped ? e.text : w(e.text);
|
|
2412
3239
|
}
|
|
2413
3240
|
};
|
|
2414
|
-
var
|
|
3241
|
+
var z = class {
|
|
2415
3242
|
strong({ text: e }) {
|
|
2416
3243
|
return e;
|
|
2417
3244
|
}
|
|
@@ -2443,32 +3270,32 @@ var L = class {
|
|
|
2443
3270
|
return e;
|
|
2444
3271
|
}
|
|
2445
3272
|
};
|
|
2446
|
-
var
|
|
3273
|
+
var O = class a {
|
|
2447
3274
|
options;
|
|
2448
3275
|
renderer;
|
|
2449
3276
|
textRenderer;
|
|
2450
3277
|
constructor(e) {
|
|
2451
|
-
this.options = e ||
|
|
3278
|
+
this.options = e || y, this.options.renderer = this.options.renderer || new $, this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new z;
|
|
2452
3279
|
}
|
|
2453
3280
|
static parse(e, t) {
|
|
2454
|
-
return new
|
|
3281
|
+
return new a(t).parse(e);
|
|
2455
3282
|
}
|
|
2456
3283
|
static parseInline(e, t) {
|
|
2457
|
-
return new
|
|
3284
|
+
return new a(t).parseInline(e);
|
|
2458
3285
|
}
|
|
2459
3286
|
parse(e) {
|
|
2460
3287
|
this.renderer.parser = this;
|
|
2461
3288
|
let t = "";
|
|
2462
3289
|
for (let n = 0;n < e.length; n++) {
|
|
2463
|
-
let
|
|
2464
|
-
if (this.options.extensions?.renderers?.[
|
|
2465
|
-
let
|
|
2466
|
-
if (
|
|
2467
|
-
t +=
|
|
3290
|
+
let i = e[n];
|
|
3291
|
+
if (this.options.extensions?.renderers?.[i.type]) {
|
|
3292
|
+
let o = i, s = this.options.extensions.renderers[o.type].call({ parser: this }, o);
|
|
3293
|
+
if (s !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "checkbox", "html", "def", "paragraph", "text"].includes(o.type)) {
|
|
3294
|
+
t += s || "";
|
|
2468
3295
|
continue;
|
|
2469
3296
|
}
|
|
2470
3297
|
}
|
|
2471
|
-
let r =
|
|
3298
|
+
let r = i;
|
|
2472
3299
|
switch (r.type) {
|
|
2473
3300
|
case "space": {
|
|
2474
3301
|
t += this.renderer.space(r);
|
|
@@ -2519,10 +3346,10 @@ var b = class l {
|
|
|
2519
3346
|
break;
|
|
2520
3347
|
}
|
|
2521
3348
|
default: {
|
|
2522
|
-
let
|
|
3349
|
+
let o = 'Token with "' + r.type + '" type was not found.';
|
|
2523
3350
|
if (this.options.silent)
|
|
2524
|
-
return console.error(
|
|
2525
|
-
throw new Error(
|
|
3351
|
+
return console.error(o), "";
|
|
3352
|
+
throw new Error(o);
|
|
2526
3353
|
}
|
|
2527
3354
|
}
|
|
2528
3355
|
}
|
|
@@ -2531,77 +3358,77 @@ var b = class l {
|
|
|
2531
3358
|
parseInline(e, t = this.renderer) {
|
|
2532
3359
|
this.renderer.parser = this;
|
|
2533
3360
|
let n = "";
|
|
2534
|
-
for (let
|
|
2535
|
-
let r = e[
|
|
3361
|
+
for (let i = 0;i < e.length; i++) {
|
|
3362
|
+
let r = e[i];
|
|
2536
3363
|
if (this.options.extensions?.renderers?.[r.type]) {
|
|
2537
|
-
let
|
|
2538
|
-
if (
|
|
2539
|
-
n +=
|
|
3364
|
+
let s = this.options.extensions.renderers[r.type].call({ parser: this }, r);
|
|
3365
|
+
if (s !== false || !["escape", "html", "link", "image", "checkbox", "strong", "em", "codespan", "br", "del", "text"].includes(r.type)) {
|
|
3366
|
+
n += s || "";
|
|
2540
3367
|
continue;
|
|
2541
3368
|
}
|
|
2542
3369
|
}
|
|
2543
|
-
let
|
|
2544
|
-
switch (
|
|
3370
|
+
let o = r;
|
|
3371
|
+
switch (o.type) {
|
|
2545
3372
|
case "escape": {
|
|
2546
|
-
n += t.text(
|
|
3373
|
+
n += t.text(o);
|
|
2547
3374
|
break;
|
|
2548
3375
|
}
|
|
2549
3376
|
case "html": {
|
|
2550
|
-
n += t.html(
|
|
3377
|
+
n += t.html(o);
|
|
2551
3378
|
break;
|
|
2552
3379
|
}
|
|
2553
3380
|
case "link": {
|
|
2554
|
-
n += t.link(
|
|
3381
|
+
n += t.link(o);
|
|
2555
3382
|
break;
|
|
2556
3383
|
}
|
|
2557
3384
|
case "image": {
|
|
2558
|
-
n += t.image(
|
|
3385
|
+
n += t.image(o);
|
|
2559
3386
|
break;
|
|
2560
3387
|
}
|
|
2561
3388
|
case "checkbox": {
|
|
2562
|
-
n += t.checkbox(
|
|
3389
|
+
n += t.checkbox(o);
|
|
2563
3390
|
break;
|
|
2564
3391
|
}
|
|
2565
3392
|
case "strong": {
|
|
2566
|
-
n += t.strong(
|
|
3393
|
+
n += t.strong(o);
|
|
2567
3394
|
break;
|
|
2568
3395
|
}
|
|
2569
3396
|
case "em": {
|
|
2570
|
-
n += t.em(
|
|
3397
|
+
n += t.em(o);
|
|
2571
3398
|
break;
|
|
2572
3399
|
}
|
|
2573
3400
|
case "codespan": {
|
|
2574
|
-
n += t.codespan(
|
|
3401
|
+
n += t.codespan(o);
|
|
2575
3402
|
break;
|
|
2576
3403
|
}
|
|
2577
3404
|
case "br": {
|
|
2578
|
-
n += t.br(
|
|
3405
|
+
n += t.br(o);
|
|
2579
3406
|
break;
|
|
2580
3407
|
}
|
|
2581
3408
|
case "del": {
|
|
2582
|
-
n += t.del(
|
|
3409
|
+
n += t.del(o);
|
|
2583
3410
|
break;
|
|
2584
3411
|
}
|
|
2585
3412
|
case "text": {
|
|
2586
|
-
n += t.text(
|
|
3413
|
+
n += t.text(o);
|
|
2587
3414
|
break;
|
|
2588
3415
|
}
|
|
2589
3416
|
default: {
|
|
2590
|
-
let
|
|
3417
|
+
let s = 'Token with "' + o.type + '" type was not found.';
|
|
2591
3418
|
if (this.options.silent)
|
|
2592
|
-
return console.error(
|
|
2593
|
-
throw new Error(
|
|
3419
|
+
return console.error(s), "";
|
|
3420
|
+
throw new Error(s);
|
|
2594
3421
|
}
|
|
2595
3422
|
}
|
|
2596
3423
|
}
|
|
2597
3424
|
return n;
|
|
2598
3425
|
}
|
|
2599
3426
|
};
|
|
2600
|
-
var
|
|
3427
|
+
var L = class {
|
|
2601
3428
|
options;
|
|
2602
3429
|
block;
|
|
2603
3430
|
constructor(e) {
|
|
2604
|
-
this.options = e ||
|
|
3431
|
+
this.options = e || y;
|
|
2605
3432
|
}
|
|
2606
3433
|
static passThroughHooks = new Set(["preprocess", "postprocess", "processAllTokens", "emStrongMask"]);
|
|
2607
3434
|
static passThroughHooksRespectAsync = new Set(["preprocess", "postprocess", "processAllTokens"]);
|
|
@@ -2618,50 +3445,57 @@ var P = class {
|
|
|
2618
3445
|
return e;
|
|
2619
3446
|
}
|
|
2620
3447
|
provideLexer(e = this.block) {
|
|
2621
|
-
return e ?
|
|
3448
|
+
return e ? T.lex : T.lexInline;
|
|
2622
3449
|
}
|
|
2623
3450
|
provideParser(e = this.block) {
|
|
2624
|
-
return e ?
|
|
3451
|
+
return e ? O.parse : O.parseInline;
|
|
2625
3452
|
}
|
|
2626
3453
|
};
|
|
2627
|
-
|
|
2628
|
-
|
|
3454
|
+
function C(a, e) {
|
|
3455
|
+
if (Array.isArray(e))
|
|
3456
|
+
for (let t = 0;t < e.length; t++)
|
|
3457
|
+
a.push(e[t]);
|
|
3458
|
+
else
|
|
3459
|
+
a.push(e);
|
|
3460
|
+
}
|
|
3461
|
+
var U = class {
|
|
3462
|
+
defaults = B();
|
|
2629
3463
|
options = this.setOptions;
|
|
2630
3464
|
parse = this.parseMarkdown(true);
|
|
2631
3465
|
parseInline = this.parseMarkdown(false);
|
|
2632
|
-
Parser =
|
|
2633
|
-
Renderer =
|
|
2634
|
-
TextRenderer =
|
|
2635
|
-
Lexer =
|
|
2636
|
-
Tokenizer =
|
|
2637
|
-
Hooks =
|
|
3466
|
+
Parser = O;
|
|
3467
|
+
Renderer = $;
|
|
3468
|
+
TextRenderer = z;
|
|
3469
|
+
Lexer = T;
|
|
3470
|
+
Tokenizer = _;
|
|
3471
|
+
Hooks = L;
|
|
2638
3472
|
constructor(...e) {
|
|
2639
3473
|
this.use(...e);
|
|
2640
3474
|
}
|
|
2641
3475
|
walkTokens(e, t) {
|
|
2642
3476
|
let n = [];
|
|
2643
|
-
for (let
|
|
2644
|
-
switch (n
|
|
3477
|
+
for (let i of e)
|
|
3478
|
+
switch (C(n, t.call(this, i)), i.type) {
|
|
2645
3479
|
case "table": {
|
|
2646
|
-
let r =
|
|
2647
|
-
for (let
|
|
2648
|
-
n
|
|
2649
|
-
for (let
|
|
2650
|
-
for (let
|
|
2651
|
-
n
|
|
3480
|
+
let r = i;
|
|
3481
|
+
for (let o of r.header)
|
|
3482
|
+
C(n, this.walkTokens(o.tokens, t));
|
|
3483
|
+
for (let o of r.rows)
|
|
3484
|
+
for (let s of o)
|
|
3485
|
+
C(n, this.walkTokens(s.tokens, t));
|
|
2652
3486
|
break;
|
|
2653
3487
|
}
|
|
2654
3488
|
case "list": {
|
|
2655
|
-
let r =
|
|
2656
|
-
n
|
|
3489
|
+
let r = i;
|
|
3490
|
+
C(n, this.walkTokens(r.items, t));
|
|
2657
3491
|
break;
|
|
2658
3492
|
}
|
|
2659
3493
|
default: {
|
|
2660
|
-
let r =
|
|
2661
|
-
this.defaults.extensions?.childTokens?.[r.type] ? this.defaults.extensions.childTokens[r.type].forEach((
|
|
2662
|
-
let
|
|
2663
|
-
n
|
|
2664
|
-
}) : r.tokens && (n
|
|
3494
|
+
let r = i;
|
|
3495
|
+
this.defaults.extensions?.childTokens?.[r.type] ? this.defaults.extensions.childTokens[r.type].forEach((o) => {
|
|
3496
|
+
let s = r[o].flat(1 / 0);
|
|
3497
|
+
C(n, this.walkTokens(s, t));
|
|
3498
|
+
}) : r.tokens && C(n, this.walkTokens(r.tokens, t));
|
|
2665
3499
|
}
|
|
2666
3500
|
}
|
|
2667
3501
|
return n;
|
|
@@ -2669,125 +3503,125 @@ var D = class {
|
|
|
2669
3503
|
use(...e) {
|
|
2670
3504
|
let t = this.defaults.extensions || { renderers: {}, childTokens: {} };
|
|
2671
3505
|
return e.forEach((n) => {
|
|
2672
|
-
let
|
|
2673
|
-
if (
|
|
3506
|
+
let i = { ...n };
|
|
3507
|
+
if (i.async = this.defaults.async || i.async || false, n.extensions && (n.extensions.forEach((r) => {
|
|
2674
3508
|
if (!r.name)
|
|
2675
3509
|
throw new Error("extension name required");
|
|
2676
3510
|
if ("renderer" in r) {
|
|
2677
|
-
let
|
|
2678
|
-
|
|
2679
|
-
let
|
|
2680
|
-
return
|
|
3511
|
+
let o = t.renderers[r.name];
|
|
3512
|
+
o ? t.renderers[r.name] = function(...s) {
|
|
3513
|
+
let l = r.renderer.apply(this, s);
|
|
3514
|
+
return l === false && (l = o.apply(this, s)), l;
|
|
2681
3515
|
} : t.renderers[r.name] = r.renderer;
|
|
2682
3516
|
}
|
|
2683
3517
|
if ("tokenizer" in r) {
|
|
2684
3518
|
if (!r.level || r.level !== "block" && r.level !== "inline")
|
|
2685
3519
|
throw new Error("extension level must be 'block' or 'inline'");
|
|
2686
|
-
let
|
|
2687
|
-
|
|
3520
|
+
let o = t[r.level];
|
|
3521
|
+
o ? o.unshift(r.tokenizer) : t[r.level] = [r.tokenizer], r.start && (r.level === "block" ? t.startBlock ? t.startBlock.push(r.start) : t.startBlock = [r.start] : r.level === "inline" && (t.startInline ? t.startInline.push(r.start) : t.startInline = [r.start]));
|
|
2688
3522
|
}
|
|
2689
3523
|
"childTokens" in r && r.childTokens && (t.childTokens[r.name] = r.childTokens);
|
|
2690
|
-
}),
|
|
2691
|
-
let r = this.defaults.renderer || new
|
|
2692
|
-
for (let
|
|
2693
|
-
if (!(
|
|
2694
|
-
throw new Error(`renderer '${
|
|
2695
|
-
if (["options", "parser"].includes(
|
|
3524
|
+
}), i.extensions = t), n.renderer) {
|
|
3525
|
+
let r = this.defaults.renderer || new $(this.defaults);
|
|
3526
|
+
for (let o in n.renderer) {
|
|
3527
|
+
if (!(o in r))
|
|
3528
|
+
throw new Error(`renderer '${o}' does not exist`);
|
|
3529
|
+
if (["options", "parser"].includes(o))
|
|
2696
3530
|
continue;
|
|
2697
|
-
let
|
|
2698
|
-
r[
|
|
2699
|
-
let p =
|
|
2700
|
-
return p === false && (p =
|
|
3531
|
+
let s = o, l = n.renderer[s], u = r[s];
|
|
3532
|
+
r[s] = (...c) => {
|
|
3533
|
+
let p = l.apply(r, c);
|
|
3534
|
+
return p === false && (p = u.apply(r, c)), p || "";
|
|
2701
3535
|
};
|
|
2702
3536
|
}
|
|
2703
|
-
|
|
3537
|
+
i.renderer = r;
|
|
2704
3538
|
}
|
|
2705
3539
|
if (n.tokenizer) {
|
|
2706
|
-
let r = this.defaults.tokenizer || new
|
|
2707
|
-
for (let
|
|
2708
|
-
if (!(
|
|
2709
|
-
throw new Error(`tokenizer '${
|
|
2710
|
-
if (["options", "rules", "lexer"].includes(
|
|
3540
|
+
let r = this.defaults.tokenizer || new _(this.defaults);
|
|
3541
|
+
for (let o in n.tokenizer) {
|
|
3542
|
+
if (!(o in r))
|
|
3543
|
+
throw new Error(`tokenizer '${o}' does not exist`);
|
|
3544
|
+
if (["options", "rules", "lexer"].includes(o))
|
|
2711
3545
|
continue;
|
|
2712
|
-
let
|
|
2713
|
-
r[
|
|
2714
|
-
let p =
|
|
2715
|
-
return p === false && (p =
|
|
3546
|
+
let s = o, l = n.tokenizer[s], u = r[s];
|
|
3547
|
+
r[s] = (...c) => {
|
|
3548
|
+
let p = l.apply(r, c);
|
|
3549
|
+
return p === false && (p = u.apply(r, c)), p;
|
|
2716
3550
|
};
|
|
2717
3551
|
}
|
|
2718
|
-
|
|
3552
|
+
i.tokenizer = r;
|
|
2719
3553
|
}
|
|
2720
3554
|
if (n.hooks) {
|
|
2721
|
-
let r = this.defaults.hooks || new
|
|
2722
|
-
for (let
|
|
2723
|
-
if (!(
|
|
2724
|
-
throw new Error(`hook '${
|
|
2725
|
-
if (["options", "block"].includes(
|
|
3555
|
+
let r = this.defaults.hooks || new L;
|
|
3556
|
+
for (let o in n.hooks) {
|
|
3557
|
+
if (!(o in r))
|
|
3558
|
+
throw new Error(`hook '${o}' does not exist`);
|
|
3559
|
+
if (["options", "block"].includes(o))
|
|
2726
3560
|
continue;
|
|
2727
|
-
let
|
|
2728
|
-
|
|
2729
|
-
if (this.defaults.async &&
|
|
3561
|
+
let s = o, l = n.hooks[s], u = r[s];
|
|
3562
|
+
L.passThroughHooks.has(o) ? r[s] = (c) => {
|
|
3563
|
+
if (this.defaults.async && L.passThroughHooksRespectAsync.has(o))
|
|
2730
3564
|
return (async () => {
|
|
2731
|
-
let
|
|
2732
|
-
return
|
|
3565
|
+
let d = await l.call(r, c);
|
|
3566
|
+
return u.call(r, d);
|
|
2733
3567
|
})();
|
|
2734
|
-
let p =
|
|
2735
|
-
return
|
|
2736
|
-
} : r[
|
|
3568
|
+
let p = l.call(r, c);
|
|
3569
|
+
return u.call(r, p);
|
|
3570
|
+
} : r[s] = (...c) => {
|
|
2737
3571
|
if (this.defaults.async)
|
|
2738
3572
|
return (async () => {
|
|
2739
|
-
let
|
|
2740
|
-
return
|
|
3573
|
+
let d = await l.apply(r, c);
|
|
3574
|
+
return d === false && (d = await u.apply(r, c)), d;
|
|
2741
3575
|
})();
|
|
2742
|
-
let p =
|
|
2743
|
-
return p === false && (p =
|
|
3576
|
+
let p = l.apply(r, c);
|
|
3577
|
+
return p === false && (p = u.apply(r, c)), p;
|
|
2744
3578
|
};
|
|
2745
3579
|
}
|
|
2746
|
-
|
|
3580
|
+
i.hooks = r;
|
|
2747
3581
|
}
|
|
2748
3582
|
if (n.walkTokens) {
|
|
2749
|
-
let r = this.defaults.walkTokens,
|
|
2750
|
-
|
|
2751
|
-
let
|
|
2752
|
-
return
|
|
3583
|
+
let r = this.defaults.walkTokens, o = n.walkTokens;
|
|
3584
|
+
i.walkTokens = function(s) {
|
|
3585
|
+
let l = [];
|
|
3586
|
+
return l.push(o.call(this, s)), r && C(l, r.call(this, s)), l;
|
|
2753
3587
|
};
|
|
2754
3588
|
}
|
|
2755
|
-
this.defaults = { ...this.defaults, ...
|
|
3589
|
+
this.defaults = { ...this.defaults, ...i };
|
|
2756
3590
|
}), this;
|
|
2757
3591
|
}
|
|
2758
3592
|
setOptions(e) {
|
|
2759
3593
|
return this.defaults = { ...this.defaults, ...e }, this;
|
|
2760
3594
|
}
|
|
2761
3595
|
lexer(e, t) {
|
|
2762
|
-
return
|
|
3596
|
+
return T.lex(e, t ?? this.defaults);
|
|
2763
3597
|
}
|
|
2764
3598
|
parser(e, t) {
|
|
2765
|
-
return
|
|
3599
|
+
return O.parse(e, t ?? this.defaults);
|
|
2766
3600
|
}
|
|
2767
3601
|
parseMarkdown(e) {
|
|
2768
|
-
return (n,
|
|
2769
|
-
let r = { ...
|
|
3602
|
+
return (n, i) => {
|
|
3603
|
+
let r = { ...i }, o = { ...this.defaults, ...r }, s = this.onError(!!o.silent, !!o.async);
|
|
2770
3604
|
if (this.defaults.async === true && r.async === false)
|
|
2771
|
-
return
|
|
3605
|
+
return s(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));
|
|
2772
3606
|
if (typeof n > "u" || n === null)
|
|
2773
|
-
return
|
|
3607
|
+
return s(new Error("marked(): input parameter is undefined or null"));
|
|
2774
3608
|
if (typeof n != "string")
|
|
2775
|
-
return
|
|
2776
|
-
if (
|
|
3609
|
+
return s(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n) + ", string expected"));
|
|
3610
|
+
if (o.hooks && (o.hooks.options = o, o.hooks.block = e), o.async)
|
|
2777
3611
|
return (async () => {
|
|
2778
|
-
let
|
|
2779
|
-
|
|
2780
|
-
let
|
|
2781
|
-
return
|
|
2782
|
-
})().catch(
|
|
3612
|
+
let l = o.hooks ? await o.hooks.preprocess(n) : n, c = await (o.hooks ? await o.hooks.provideLexer(e) : e ? T.lex : T.lexInline)(l, o), p = o.hooks ? await o.hooks.processAllTokens(c) : c;
|
|
3613
|
+
o.walkTokens && await Promise.all(this.walkTokens(p, o.walkTokens));
|
|
3614
|
+
let g = await (o.hooks ? await o.hooks.provideParser(e) : e ? O.parse : O.parseInline)(p, o);
|
|
3615
|
+
return o.hooks ? await o.hooks.postprocess(g) : g;
|
|
3616
|
+
})().catch(s);
|
|
2783
3617
|
try {
|
|
2784
|
-
|
|
2785
|
-
let
|
|
2786
|
-
|
|
2787
|
-
let p = (
|
|
2788
|
-
return
|
|
2789
|
-
} catch (
|
|
2790
|
-
return
|
|
3618
|
+
o.hooks && (n = o.hooks.preprocess(n));
|
|
3619
|
+
let u = (o.hooks ? o.hooks.provideLexer(e) : e ? T.lex : T.lexInline)(n, o);
|
|
3620
|
+
o.hooks && (u = o.hooks.processAllTokens(u)), o.walkTokens && this.walkTokens(u, o.walkTokens);
|
|
3621
|
+
let p = (o.hooks ? o.hooks.provideParser(e) : e ? O.parse : O.parseInline)(u, o);
|
|
3622
|
+
return o.hooks && (p = o.hooks.postprocess(p)), p;
|
|
3623
|
+
} catch (l) {
|
|
3624
|
+
return s(l);
|
|
2791
3625
|
}
|
|
2792
3626
|
};
|
|
2793
3627
|
}
|
|
@@ -2795,8 +3629,8 @@ var D = class {
|
|
|
2795
3629
|
return (n) => {
|
|
2796
3630
|
if (n.message += `
|
|
2797
3631
|
Please report this to https://github.com/markedjs/marked.`, e) {
|
|
2798
|
-
let
|
|
2799
|
-
return t ? Promise.resolve(
|
|
3632
|
+
let i = "<p>An error occurred:</p><pre>" + w(n.message + "", true) + "</pre>";
|
|
3633
|
+
return t ? Promise.resolve(i) : i;
|
|
2800
3634
|
}
|
|
2801
3635
|
if (t)
|
|
2802
3636
|
return Promise.reject(n);
|
|
@@ -2804,44 +3638,44 @@ Please report this to https://github.com/markedjs/marked.`, e) {
|
|
|
2804
3638
|
};
|
|
2805
3639
|
}
|
|
2806
3640
|
};
|
|
2807
|
-
var
|
|
2808
|
-
function
|
|
2809
|
-
return
|
|
3641
|
+
var I = new U;
|
|
3642
|
+
function f(a, e) {
|
|
3643
|
+
return I.parse(a, e);
|
|
2810
3644
|
}
|
|
2811
|
-
|
|
2812
|
-
return
|
|
3645
|
+
f.options = f.setOptions = function(a) {
|
|
3646
|
+
return I.setOptions(a), f.defaults = I.defaults, V(f.defaults), f;
|
|
2813
3647
|
};
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
return
|
|
2818
|
-
}
|
|
2819
|
-
|
|
2820
|
-
|
|
3648
|
+
f.getDefaults = B;
|
|
3649
|
+
f.defaults = y;
|
|
3650
|
+
function At(...a) {
|
|
3651
|
+
return I.use(...a), f.defaults = I.defaults, V(f.defaults), f;
|
|
3652
|
+
}
|
|
3653
|
+
f.use = At;
|
|
3654
|
+
f.walkTokens = function(a, e) {
|
|
3655
|
+
return I.walkTokens(a, e);
|
|
2821
3656
|
};
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
var
|
|
2833
|
-
var
|
|
2834
|
-
var
|
|
2835
|
-
var
|
|
2836
|
-
var
|
|
2837
|
-
var
|
|
2838
|
-
var Vt = x.lex;
|
|
3657
|
+
f.parseInline = I.parseInline;
|
|
3658
|
+
f.Parser = O;
|
|
3659
|
+
f.parser = O.parse;
|
|
3660
|
+
f.Renderer = $;
|
|
3661
|
+
f.TextRenderer = z;
|
|
3662
|
+
f.Lexer = T;
|
|
3663
|
+
f.lexer = T.lex;
|
|
3664
|
+
f.Tokenizer = _;
|
|
3665
|
+
f.Hooks = L;
|
|
3666
|
+
f.parse = f;
|
|
3667
|
+
var Rn = f.options;
|
|
3668
|
+
var Tn = f.setOptions;
|
|
3669
|
+
var On = f.walkTokens;
|
|
3670
|
+
var wn = f.parseInline;
|
|
3671
|
+
var yn = O.parse;
|
|
3672
|
+
var Sn = T.lex;
|
|
2839
3673
|
|
|
2840
3674
|
// src/polly-ui/markdown.tsx
|
|
2841
3675
|
import { jsxDEV } from "preact/jsx-dev-runtime";
|
|
2842
3676
|
function renderMarkdown(value) {
|
|
2843
|
-
const html =
|
|
2844
|
-
const clean =
|
|
3677
|
+
const html = f.parse(value, { async: false });
|
|
3678
|
+
const clean = purify_default.sanitize(html);
|
|
2845
3679
|
return /* @__PURE__ */ jsxDEV("div", {
|
|
2846
3680
|
"data-polly-ui": true,
|
|
2847
3681
|
"data-polly-markdown": true,
|
|
@@ -2852,4 +3686,4 @@ export {
|
|
|
2852
3686
|
renderMarkdown
|
|
2853
3687
|
};
|
|
2854
3688
|
|
|
2855
|
-
//# debugId=
|
|
3689
|
+
//# debugId=8045B131AC5E319A64756E2164756E21
|