xml-model 2.0.0-beta.1 → 2.0.0-beta.2

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.
@@ -0,0 +1,1249 @@
1
+ import { __commonJSMin, __require } from "../../../_virtual/_rolldown/runtime.js";
2
+ //#region node_modules/sax/lib/sax.js
3
+ var require_sax = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ (function(sax) {
5
+ sax.parser = function(strict, opt) {
6
+ return new SAXParser(strict, opt);
7
+ };
8
+ sax.SAXParser = SAXParser;
9
+ sax.SAXStream = SAXStream;
10
+ sax.createStream = createStream;
11
+ sax.MAX_BUFFER_LENGTH = 64 * 1024;
12
+ var buffers = [
13
+ "comment",
14
+ "sgmlDecl",
15
+ "textNode",
16
+ "tagName",
17
+ "doctype",
18
+ "procInstName",
19
+ "procInstBody",
20
+ "entity",
21
+ "attribName",
22
+ "attribValue",
23
+ "cdata",
24
+ "script"
25
+ ];
26
+ sax.EVENTS = [
27
+ "text",
28
+ "processinginstruction",
29
+ "sgmldeclaration",
30
+ "doctype",
31
+ "comment",
32
+ "opentagstart",
33
+ "attribute",
34
+ "opentag",
35
+ "closetag",
36
+ "opencdata",
37
+ "cdata",
38
+ "closecdata",
39
+ "error",
40
+ "end",
41
+ "ready",
42
+ "script",
43
+ "opennamespace",
44
+ "closenamespace"
45
+ ];
46
+ function SAXParser(strict, opt) {
47
+ if (!(this instanceof SAXParser)) return new SAXParser(strict, opt);
48
+ var parser = this;
49
+ clearBuffers(parser);
50
+ parser.q = parser.c = "";
51
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH;
52
+ parser.opt = opt || {};
53
+ parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;
54
+ parser.looseCase = parser.opt.lowercase ? "toLowerCase" : "toUpperCase";
55
+ parser.opt.maxEntityCount = parser.opt.maxEntityCount || 512;
56
+ parser.opt.maxEntityDepth = parser.opt.maxEntityDepth || 4;
57
+ parser.entityCount = parser.entityDepth = 0;
58
+ parser.tags = [];
59
+ parser.closed = parser.closedRoot = parser.sawRoot = false;
60
+ parser.tag = parser.error = null;
61
+ parser.strict = !!strict;
62
+ parser.noscript = !!(strict || parser.opt.noscript);
63
+ parser.state = S.BEGIN;
64
+ parser.strictEntities = parser.opt.strictEntities;
65
+ parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES);
66
+ parser.attribList = [];
67
+ if (parser.opt.xmlns) parser.ns = Object.create(rootNS);
68
+ if (parser.opt.unquotedAttributeValues === void 0) parser.opt.unquotedAttributeValues = !strict;
69
+ parser.trackPosition = parser.opt.position !== false;
70
+ if (parser.trackPosition) parser.position = parser.line = parser.column = 0;
71
+ emit(parser, "onready");
72
+ }
73
+ if (!Object.create) Object.create = function(o) {
74
+ function F() {}
75
+ F.prototype = o;
76
+ return new F();
77
+ };
78
+ if (!Object.keys) Object.keys = function(o) {
79
+ var a = [];
80
+ for (var i in o) if (o.hasOwnProperty(i)) a.push(i);
81
+ return a;
82
+ };
83
+ function checkBufferLength(parser) {
84
+ var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10);
85
+ var maxActual = 0;
86
+ for (var i = 0, l = buffers.length; i < l; i++) {
87
+ var len = parser[buffers[i]].length;
88
+ if (len > maxAllowed) switch (buffers[i]) {
89
+ case "textNode":
90
+ closeText(parser);
91
+ break;
92
+ case "cdata":
93
+ emitNode(parser, "oncdata", parser.cdata);
94
+ parser.cdata = "";
95
+ break;
96
+ case "script":
97
+ emitNode(parser, "onscript", parser.script);
98
+ parser.script = "";
99
+ break;
100
+ default: error(parser, "Max buffer length exceeded: " + buffers[i]);
101
+ }
102
+ maxActual = Math.max(maxActual, len);
103
+ }
104
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH - maxActual + parser.position;
105
+ }
106
+ function clearBuffers(parser) {
107
+ for (var i = 0, l = buffers.length; i < l; i++) parser[buffers[i]] = "";
108
+ }
109
+ function flushBuffers(parser) {
110
+ closeText(parser);
111
+ if (parser.cdata !== "") {
112
+ emitNode(parser, "oncdata", parser.cdata);
113
+ parser.cdata = "";
114
+ }
115
+ if (parser.script !== "") {
116
+ emitNode(parser, "onscript", parser.script);
117
+ parser.script = "";
118
+ }
119
+ }
120
+ SAXParser.prototype = {
121
+ end: function() {
122
+ end(this);
123
+ },
124
+ write,
125
+ resume: function() {
126
+ this.error = null;
127
+ return this;
128
+ },
129
+ close: function() {
130
+ return this.write(null);
131
+ },
132
+ flush: function() {
133
+ flushBuffers(this);
134
+ }
135
+ };
136
+ var Stream;
137
+ try {
138
+ Stream = __require("node:stream").Stream;
139
+ } catch (ex) {
140
+ Stream = function() {};
141
+ }
142
+ if (!Stream) Stream = function() {};
143
+ var streamWraps = sax.EVENTS.filter(function(ev) {
144
+ return ev !== "error" && ev !== "end";
145
+ });
146
+ function createStream(strict, opt) {
147
+ return new SAXStream(strict, opt);
148
+ }
149
+ function SAXStream(strict, opt) {
150
+ if (!(this instanceof SAXStream)) return new SAXStream(strict, opt);
151
+ Stream.apply(this);
152
+ this._parser = new SAXParser(strict, opt);
153
+ this.writable = true;
154
+ this.readable = true;
155
+ var me = this;
156
+ this._parser.onend = function() {
157
+ me.emit("end");
158
+ };
159
+ this._parser.onerror = function(er) {
160
+ me.emit("error", er);
161
+ me._parser.error = null;
162
+ };
163
+ this._decoder = null;
164
+ streamWraps.forEach(function(ev) {
165
+ Object.defineProperty(me, "on" + ev, {
166
+ get: function() {
167
+ return me._parser["on" + ev];
168
+ },
169
+ set: function(h) {
170
+ if (!h) {
171
+ me.removeAllListeners(ev);
172
+ me._parser["on" + ev] = h;
173
+ return h;
174
+ }
175
+ me.on(ev, h);
176
+ },
177
+ enumerable: true,
178
+ configurable: false
179
+ });
180
+ });
181
+ }
182
+ SAXStream.prototype = Object.create(Stream.prototype, { constructor: { value: SAXStream } });
183
+ SAXStream.prototype.write = function(data) {
184
+ if (typeof Buffer === "function" && typeof Buffer.isBuffer === "function" && Buffer.isBuffer(data)) {
185
+ if (!this._decoder) this._decoder = new TextDecoder("utf8");
186
+ data = this._decoder.decode(data, { stream: true });
187
+ }
188
+ this._parser.write(data.toString());
189
+ this.emit("data", data);
190
+ return true;
191
+ };
192
+ SAXStream.prototype.end = function(chunk) {
193
+ if (chunk && chunk.length) this.write(chunk);
194
+ if (this._decoder) {
195
+ var remaining = this._decoder.decode();
196
+ if (remaining) {
197
+ this._parser.write(remaining);
198
+ this.emit("data", remaining);
199
+ }
200
+ }
201
+ this._parser.end();
202
+ return true;
203
+ };
204
+ SAXStream.prototype.on = function(ev, handler) {
205
+ var me = this;
206
+ if (!me._parser["on" + ev] && streamWraps.indexOf(ev) !== -1) me._parser["on" + ev] = function() {
207
+ var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);
208
+ args.splice(0, 0, ev);
209
+ me.emit.apply(me, args);
210
+ };
211
+ return Stream.prototype.on.call(me, ev, handler);
212
+ };
213
+ var CDATA = "[CDATA[";
214
+ var DOCTYPE = "DOCTYPE";
215
+ var XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace";
216
+ var XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/";
217
+ var rootNS = {
218
+ xml: XML_NAMESPACE,
219
+ xmlns: XMLNS_NAMESPACE
220
+ };
221
+ var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;
222
+ var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;
223
+ var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;
224
+ var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;
225
+ function isWhitespace(c) {
226
+ return c === " " || c === "\n" || c === "\r" || c === " ";
227
+ }
228
+ function isQuote(c) {
229
+ return c === "\"" || c === "'";
230
+ }
231
+ function isAttribEnd(c) {
232
+ return c === ">" || isWhitespace(c);
233
+ }
234
+ function isMatch(regex, c) {
235
+ return regex.test(c);
236
+ }
237
+ function notMatch(regex, c) {
238
+ return !isMatch(regex, c);
239
+ }
240
+ var S = 0;
241
+ sax.STATE = {
242
+ BEGIN: S++,
243
+ BEGIN_WHITESPACE: S++,
244
+ TEXT: S++,
245
+ TEXT_ENTITY: S++,
246
+ OPEN_WAKA: S++,
247
+ SGML_DECL: S++,
248
+ SGML_DECL_QUOTED: S++,
249
+ DOCTYPE: S++,
250
+ DOCTYPE_QUOTED: S++,
251
+ DOCTYPE_DTD: S++,
252
+ DOCTYPE_DTD_QUOTED: S++,
253
+ COMMENT_STARTING: S++,
254
+ COMMENT: S++,
255
+ COMMENT_ENDING: S++,
256
+ COMMENT_ENDED: S++,
257
+ CDATA: S++,
258
+ CDATA_ENDING: S++,
259
+ CDATA_ENDING_2: S++,
260
+ PROC_INST: S++,
261
+ PROC_INST_BODY: S++,
262
+ PROC_INST_ENDING: S++,
263
+ OPEN_TAG: S++,
264
+ OPEN_TAG_SLASH: S++,
265
+ ATTRIB: S++,
266
+ ATTRIB_NAME: S++,
267
+ ATTRIB_NAME_SAW_WHITE: S++,
268
+ ATTRIB_VALUE: S++,
269
+ ATTRIB_VALUE_QUOTED: S++,
270
+ ATTRIB_VALUE_CLOSED: S++,
271
+ ATTRIB_VALUE_UNQUOTED: S++,
272
+ ATTRIB_VALUE_ENTITY_Q: S++,
273
+ ATTRIB_VALUE_ENTITY_U: S++,
274
+ CLOSE_TAG: S++,
275
+ CLOSE_TAG_SAW_WHITE: S++,
276
+ SCRIPT: S++,
277
+ SCRIPT_ENDING: S++
278
+ };
279
+ sax.XML_ENTITIES = {
280
+ amp: "&",
281
+ gt: ">",
282
+ lt: "<",
283
+ quot: "\"",
284
+ apos: "'"
285
+ };
286
+ sax.ENTITIES = {
287
+ amp: "&",
288
+ gt: ">",
289
+ lt: "<",
290
+ quot: "\"",
291
+ apos: "'",
292
+ AElig: 198,
293
+ Aacute: 193,
294
+ Acirc: 194,
295
+ Agrave: 192,
296
+ Aring: 197,
297
+ Atilde: 195,
298
+ Auml: 196,
299
+ Ccedil: 199,
300
+ ETH: 208,
301
+ Eacute: 201,
302
+ Ecirc: 202,
303
+ Egrave: 200,
304
+ Euml: 203,
305
+ Iacute: 205,
306
+ Icirc: 206,
307
+ Igrave: 204,
308
+ Iuml: 207,
309
+ Ntilde: 209,
310
+ Oacute: 211,
311
+ Ocirc: 212,
312
+ Ograve: 210,
313
+ Oslash: 216,
314
+ Otilde: 213,
315
+ Ouml: 214,
316
+ THORN: 222,
317
+ Uacute: 218,
318
+ Ucirc: 219,
319
+ Ugrave: 217,
320
+ Uuml: 220,
321
+ Yacute: 221,
322
+ aacute: 225,
323
+ acirc: 226,
324
+ aelig: 230,
325
+ agrave: 224,
326
+ aring: 229,
327
+ atilde: 227,
328
+ auml: 228,
329
+ ccedil: 231,
330
+ eacute: 233,
331
+ ecirc: 234,
332
+ egrave: 232,
333
+ eth: 240,
334
+ euml: 235,
335
+ iacute: 237,
336
+ icirc: 238,
337
+ igrave: 236,
338
+ iuml: 239,
339
+ ntilde: 241,
340
+ oacute: 243,
341
+ ocirc: 244,
342
+ ograve: 242,
343
+ oslash: 248,
344
+ otilde: 245,
345
+ ouml: 246,
346
+ szlig: 223,
347
+ thorn: 254,
348
+ uacute: 250,
349
+ ucirc: 251,
350
+ ugrave: 249,
351
+ uuml: 252,
352
+ yacute: 253,
353
+ yuml: 255,
354
+ copy: 169,
355
+ reg: 174,
356
+ nbsp: 160,
357
+ iexcl: 161,
358
+ cent: 162,
359
+ pound: 163,
360
+ curren: 164,
361
+ yen: 165,
362
+ brvbar: 166,
363
+ sect: 167,
364
+ uml: 168,
365
+ ordf: 170,
366
+ laquo: 171,
367
+ not: 172,
368
+ shy: 173,
369
+ macr: 175,
370
+ deg: 176,
371
+ plusmn: 177,
372
+ sup1: 185,
373
+ sup2: 178,
374
+ sup3: 179,
375
+ acute: 180,
376
+ micro: 181,
377
+ para: 182,
378
+ middot: 183,
379
+ cedil: 184,
380
+ ordm: 186,
381
+ raquo: 187,
382
+ frac14: 188,
383
+ frac12: 189,
384
+ frac34: 190,
385
+ iquest: 191,
386
+ times: 215,
387
+ divide: 247,
388
+ OElig: 338,
389
+ oelig: 339,
390
+ Scaron: 352,
391
+ scaron: 353,
392
+ Yuml: 376,
393
+ fnof: 402,
394
+ circ: 710,
395
+ tilde: 732,
396
+ Alpha: 913,
397
+ Beta: 914,
398
+ Gamma: 915,
399
+ Delta: 916,
400
+ Epsilon: 917,
401
+ Zeta: 918,
402
+ Eta: 919,
403
+ Theta: 920,
404
+ Iota: 921,
405
+ Kappa: 922,
406
+ Lambda: 923,
407
+ Mu: 924,
408
+ Nu: 925,
409
+ Xi: 926,
410
+ Omicron: 927,
411
+ Pi: 928,
412
+ Rho: 929,
413
+ Sigma: 931,
414
+ Tau: 932,
415
+ Upsilon: 933,
416
+ Phi: 934,
417
+ Chi: 935,
418
+ Psi: 936,
419
+ Omega: 937,
420
+ alpha: 945,
421
+ beta: 946,
422
+ gamma: 947,
423
+ delta: 948,
424
+ epsilon: 949,
425
+ zeta: 950,
426
+ eta: 951,
427
+ theta: 952,
428
+ iota: 953,
429
+ kappa: 954,
430
+ lambda: 955,
431
+ mu: 956,
432
+ nu: 957,
433
+ xi: 958,
434
+ omicron: 959,
435
+ pi: 960,
436
+ rho: 961,
437
+ sigmaf: 962,
438
+ sigma: 963,
439
+ tau: 964,
440
+ upsilon: 965,
441
+ phi: 966,
442
+ chi: 967,
443
+ psi: 968,
444
+ omega: 969,
445
+ thetasym: 977,
446
+ upsih: 978,
447
+ piv: 982,
448
+ ensp: 8194,
449
+ emsp: 8195,
450
+ thinsp: 8201,
451
+ zwnj: 8204,
452
+ zwj: 8205,
453
+ lrm: 8206,
454
+ rlm: 8207,
455
+ ndash: 8211,
456
+ mdash: 8212,
457
+ lsquo: 8216,
458
+ rsquo: 8217,
459
+ sbquo: 8218,
460
+ ldquo: 8220,
461
+ rdquo: 8221,
462
+ bdquo: 8222,
463
+ dagger: 8224,
464
+ Dagger: 8225,
465
+ bull: 8226,
466
+ hellip: 8230,
467
+ permil: 8240,
468
+ prime: 8242,
469
+ Prime: 8243,
470
+ lsaquo: 8249,
471
+ rsaquo: 8250,
472
+ oline: 8254,
473
+ frasl: 8260,
474
+ euro: 8364,
475
+ image: 8465,
476
+ weierp: 8472,
477
+ real: 8476,
478
+ trade: 8482,
479
+ alefsym: 8501,
480
+ larr: 8592,
481
+ uarr: 8593,
482
+ rarr: 8594,
483
+ darr: 8595,
484
+ harr: 8596,
485
+ crarr: 8629,
486
+ lArr: 8656,
487
+ uArr: 8657,
488
+ rArr: 8658,
489
+ dArr: 8659,
490
+ hArr: 8660,
491
+ forall: 8704,
492
+ part: 8706,
493
+ exist: 8707,
494
+ empty: 8709,
495
+ nabla: 8711,
496
+ isin: 8712,
497
+ notin: 8713,
498
+ ni: 8715,
499
+ prod: 8719,
500
+ sum: 8721,
501
+ minus: 8722,
502
+ lowast: 8727,
503
+ radic: 8730,
504
+ prop: 8733,
505
+ infin: 8734,
506
+ ang: 8736,
507
+ and: 8743,
508
+ or: 8744,
509
+ cap: 8745,
510
+ cup: 8746,
511
+ int: 8747,
512
+ there4: 8756,
513
+ sim: 8764,
514
+ cong: 8773,
515
+ asymp: 8776,
516
+ ne: 8800,
517
+ equiv: 8801,
518
+ le: 8804,
519
+ ge: 8805,
520
+ sub: 8834,
521
+ sup: 8835,
522
+ nsub: 8836,
523
+ sube: 8838,
524
+ supe: 8839,
525
+ oplus: 8853,
526
+ otimes: 8855,
527
+ perp: 8869,
528
+ sdot: 8901,
529
+ lceil: 8968,
530
+ rceil: 8969,
531
+ lfloor: 8970,
532
+ rfloor: 8971,
533
+ lang: 9001,
534
+ rang: 9002,
535
+ loz: 9674,
536
+ spades: 9824,
537
+ clubs: 9827,
538
+ hearts: 9829,
539
+ diams: 9830
540
+ };
541
+ Object.keys(sax.ENTITIES).forEach(function(key) {
542
+ var e = sax.ENTITIES[key];
543
+ var s = typeof e === "number" ? String.fromCharCode(e) : e;
544
+ sax.ENTITIES[key] = s;
545
+ });
546
+ for (var s in sax.STATE) sax.STATE[sax.STATE[s]] = s;
547
+ S = sax.STATE;
548
+ function emit(parser, event, data) {
549
+ parser[event] && parser[event](data);
550
+ }
551
+ function emitNode(parser, nodeType, data) {
552
+ if (parser.textNode) closeText(parser);
553
+ emit(parser, nodeType, data);
554
+ }
555
+ function closeText(parser) {
556
+ parser.textNode = textopts(parser.opt, parser.textNode);
557
+ if (parser.textNode) emit(parser, "ontext", parser.textNode);
558
+ parser.textNode = "";
559
+ }
560
+ function textopts(opt, text) {
561
+ if (opt.trim) text = text.trim();
562
+ if (opt.normalize) text = text.replace(/\s+/g, " ");
563
+ return text;
564
+ }
565
+ function error(parser, er) {
566
+ closeText(parser);
567
+ if (parser.trackPosition) er += "\nLine: " + parser.line + "\nColumn: " + parser.column + "\nChar: " + parser.c;
568
+ er = new Error(er);
569
+ parser.error = er;
570
+ emit(parser, "onerror", er);
571
+ return parser;
572
+ }
573
+ function end(parser) {
574
+ if (parser.sawRoot && !parser.closedRoot) strictFail(parser, "Unclosed root tag");
575
+ if (parser.state !== S.BEGIN && parser.state !== S.BEGIN_WHITESPACE && parser.state !== S.TEXT) error(parser, "Unexpected end");
576
+ closeText(parser);
577
+ parser.c = "";
578
+ parser.closed = true;
579
+ emit(parser, "onend");
580
+ SAXParser.call(parser, parser.strict, parser.opt);
581
+ return parser;
582
+ }
583
+ function strictFail(parser, message) {
584
+ if (typeof parser !== "object" || !(parser instanceof SAXParser)) throw new Error("bad call to strictFail");
585
+ if (parser.strict) error(parser, message);
586
+ }
587
+ function newTag(parser) {
588
+ if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();
589
+ var parent = parser.tags[parser.tags.length - 1] || parser;
590
+ var tag = parser.tag = {
591
+ name: parser.tagName,
592
+ attributes: {}
593
+ };
594
+ if (parser.opt.xmlns) tag.ns = parent.ns;
595
+ parser.attribList.length = 0;
596
+ emitNode(parser, "onopentagstart", tag);
597
+ }
598
+ function qname(name, attribute) {
599
+ var qualName = name.indexOf(":") < 0 ? ["", name] : name.split(":");
600
+ var prefix = qualName[0];
601
+ var local = qualName[1];
602
+ if (attribute && name === "xmlns") {
603
+ prefix = "xmlns";
604
+ local = "";
605
+ }
606
+ return {
607
+ prefix,
608
+ local
609
+ };
610
+ }
611
+ function attrib(parser) {
612
+ if (!parser.strict) parser.attribName = parser.attribName[parser.looseCase]();
613
+ if (parser.attribList.indexOf(parser.attribName) !== -1 || parser.tag.attributes.hasOwnProperty(parser.attribName)) {
614
+ parser.attribName = parser.attribValue = "";
615
+ return;
616
+ }
617
+ if (parser.opt.xmlns) {
618
+ var qn = qname(parser.attribName, true);
619
+ var prefix = qn.prefix;
620
+ var local = qn.local;
621
+ if (prefix === "xmlns") if (local === "xml" && parser.attribValue !== XML_NAMESPACE) strictFail(parser, "xml: prefix must be bound to " + XML_NAMESPACE + "\nActual: " + parser.attribValue);
622
+ else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) strictFail(parser, "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\nActual: " + parser.attribValue);
623
+ else {
624
+ var tag = parser.tag;
625
+ var parent = parser.tags[parser.tags.length - 1] || parser;
626
+ if (tag.ns === parent.ns) tag.ns = Object.create(parent.ns);
627
+ tag.ns[local] = parser.attribValue;
628
+ }
629
+ parser.attribList.push([parser.attribName, parser.attribValue]);
630
+ } else {
631
+ parser.tag.attributes[parser.attribName] = parser.attribValue;
632
+ emitNode(parser, "onattribute", {
633
+ name: parser.attribName,
634
+ value: parser.attribValue
635
+ });
636
+ }
637
+ parser.attribName = parser.attribValue = "";
638
+ }
639
+ function openTag(parser, selfClosing) {
640
+ if (parser.opt.xmlns) {
641
+ var tag = parser.tag;
642
+ var qn = qname(parser.tagName);
643
+ tag.prefix = qn.prefix;
644
+ tag.local = qn.local;
645
+ tag.uri = tag.ns[qn.prefix] || "";
646
+ if (tag.prefix && !tag.uri) {
647
+ strictFail(parser, "Unbound namespace prefix: " + JSON.stringify(parser.tagName));
648
+ tag.uri = qn.prefix;
649
+ }
650
+ var parent = parser.tags[parser.tags.length - 1] || parser;
651
+ if (tag.ns && parent.ns !== tag.ns) Object.keys(tag.ns).forEach(function(p) {
652
+ emitNode(parser, "onopennamespace", {
653
+ prefix: p,
654
+ uri: tag.ns[p]
655
+ });
656
+ });
657
+ for (var i = 0, l = parser.attribList.length; i < l; i++) {
658
+ var nv = parser.attribList[i];
659
+ var name = nv[0];
660
+ var value = nv[1];
661
+ var qualName = qname(name, true);
662
+ var prefix = qualName.prefix;
663
+ var local = qualName.local;
664
+ var uri = prefix === "" ? "" : tag.ns[prefix] || "";
665
+ var a = {
666
+ name,
667
+ value,
668
+ prefix,
669
+ local,
670
+ uri
671
+ };
672
+ if (prefix && prefix !== "xmlns" && !uri) {
673
+ strictFail(parser, "Unbound namespace prefix: " + JSON.stringify(prefix));
674
+ a.uri = prefix;
675
+ }
676
+ parser.tag.attributes[name] = a;
677
+ emitNode(parser, "onattribute", a);
678
+ }
679
+ parser.attribList.length = 0;
680
+ }
681
+ parser.tag.isSelfClosing = !!selfClosing;
682
+ parser.sawRoot = true;
683
+ parser.tags.push(parser.tag);
684
+ emitNode(parser, "onopentag", parser.tag);
685
+ if (!selfClosing) {
686
+ if (!parser.noscript && parser.tagName.toLowerCase() === "script") parser.state = S.SCRIPT;
687
+ else parser.state = S.TEXT;
688
+ parser.tag = null;
689
+ parser.tagName = "";
690
+ }
691
+ parser.attribName = parser.attribValue = "";
692
+ parser.attribList.length = 0;
693
+ }
694
+ function closeTag(parser) {
695
+ if (!parser.tagName) {
696
+ strictFail(parser, "Weird empty close tag.");
697
+ parser.textNode += "</>";
698
+ parser.state = S.TEXT;
699
+ return;
700
+ }
701
+ if (parser.script) {
702
+ if (parser.tagName !== "script") {
703
+ parser.script += "</" + parser.tagName + ">";
704
+ parser.tagName = "";
705
+ parser.state = S.SCRIPT;
706
+ return;
707
+ }
708
+ emitNode(parser, "onscript", parser.script);
709
+ parser.script = "";
710
+ }
711
+ var t = parser.tags.length;
712
+ var tagName = parser.tagName;
713
+ if (!parser.strict) tagName = tagName[parser.looseCase]();
714
+ var closeTo = tagName;
715
+ while (t--) if (parser.tags[t].name !== closeTo) strictFail(parser, "Unexpected close tag");
716
+ else break;
717
+ if (t < 0) {
718
+ strictFail(parser, "Unmatched closing tag: " + parser.tagName);
719
+ parser.textNode += "</" + parser.tagName + ">";
720
+ parser.state = S.TEXT;
721
+ return;
722
+ }
723
+ parser.tagName = tagName;
724
+ var s = parser.tags.length;
725
+ while (s-- > t) {
726
+ var tag = parser.tag = parser.tags.pop();
727
+ parser.tagName = parser.tag.name;
728
+ emitNode(parser, "onclosetag", parser.tagName);
729
+ var x = {};
730
+ for (var i in tag.ns) x[i] = tag.ns[i];
731
+ var parent = parser.tags[parser.tags.length - 1] || parser;
732
+ if (parser.opt.xmlns && tag.ns !== parent.ns) Object.keys(tag.ns).forEach(function(p) {
733
+ var n = tag.ns[p];
734
+ emitNode(parser, "onclosenamespace", {
735
+ prefix: p,
736
+ uri: n
737
+ });
738
+ });
739
+ }
740
+ if (t === 0) parser.closedRoot = true;
741
+ parser.tagName = parser.attribValue = parser.attribName = "";
742
+ parser.attribList.length = 0;
743
+ parser.state = S.TEXT;
744
+ }
745
+ function parseEntity(parser) {
746
+ var entity = parser.entity;
747
+ var entityLC = entity.toLowerCase();
748
+ var num;
749
+ var numStr = "";
750
+ if (parser.ENTITIES[entity]) return parser.ENTITIES[entity];
751
+ if (parser.ENTITIES[entityLC]) return parser.ENTITIES[entityLC];
752
+ entity = entityLC;
753
+ if (entity.charAt(0) === "#") if (entity.charAt(1) === "x") {
754
+ entity = entity.slice(2);
755
+ num = parseInt(entity, 16);
756
+ numStr = num.toString(16);
757
+ } else {
758
+ entity = entity.slice(1);
759
+ num = parseInt(entity, 10);
760
+ numStr = num.toString(10);
761
+ }
762
+ entity = entity.replace(/^0+/, "");
763
+ if (isNaN(num) || numStr.toLowerCase() !== entity || num < 0 || num > 1114111) {
764
+ strictFail(parser, "Invalid character entity");
765
+ return "&" + parser.entity + ";";
766
+ }
767
+ return String.fromCodePoint(num);
768
+ }
769
+ function beginWhiteSpace(parser, c) {
770
+ if (c === "<") {
771
+ parser.state = S.OPEN_WAKA;
772
+ parser.startTagPosition = parser.position;
773
+ } else if (!isWhitespace(c)) {
774
+ strictFail(parser, "Non-whitespace before first tag.");
775
+ parser.textNode = c;
776
+ parser.state = S.TEXT;
777
+ }
778
+ }
779
+ function charAt(chunk, i) {
780
+ var result = "";
781
+ if (i < chunk.length) result = chunk.charAt(i);
782
+ return result;
783
+ }
784
+ function write(chunk) {
785
+ var parser = this;
786
+ if (this.error) throw this.error;
787
+ if (parser.closed) return error(parser, "Cannot write after close. Assign an onready handler.");
788
+ if (chunk === null) return end(parser);
789
+ if (typeof chunk === "object") chunk = chunk.toString();
790
+ var i = 0;
791
+ var c = "";
792
+ while (true) {
793
+ c = charAt(chunk, i++);
794
+ parser.c = c;
795
+ if (!c) break;
796
+ if (parser.trackPosition) {
797
+ parser.position++;
798
+ if (c === "\n") {
799
+ parser.line++;
800
+ parser.column = 0;
801
+ } else parser.column++;
802
+ }
803
+ switch (parser.state) {
804
+ case S.BEGIN:
805
+ parser.state = S.BEGIN_WHITESPACE;
806
+ if (c === "") continue;
807
+ beginWhiteSpace(parser, c);
808
+ continue;
809
+ case S.BEGIN_WHITESPACE:
810
+ beginWhiteSpace(parser, c);
811
+ continue;
812
+ case S.TEXT:
813
+ if (parser.sawRoot && !parser.closedRoot) {
814
+ var starti = i - 1;
815
+ while (c && c !== "<" && c !== "&") {
816
+ c = charAt(chunk, i++);
817
+ if (c && parser.trackPosition) {
818
+ parser.position++;
819
+ if (c === "\n") {
820
+ parser.line++;
821
+ parser.column = 0;
822
+ } else parser.column++;
823
+ }
824
+ }
825
+ parser.textNode += chunk.substring(starti, i - 1);
826
+ }
827
+ if (c === "<" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
828
+ parser.state = S.OPEN_WAKA;
829
+ parser.startTagPosition = parser.position;
830
+ } else {
831
+ if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) strictFail(parser, "Text data outside of root node.");
832
+ if (c === "&") parser.state = S.TEXT_ENTITY;
833
+ else parser.textNode += c;
834
+ }
835
+ continue;
836
+ case S.SCRIPT:
837
+ if (c === "<") parser.state = S.SCRIPT_ENDING;
838
+ else parser.script += c;
839
+ continue;
840
+ case S.SCRIPT_ENDING:
841
+ if (c === "/") parser.state = S.CLOSE_TAG;
842
+ else {
843
+ parser.script += "<" + c;
844
+ parser.state = S.SCRIPT;
845
+ }
846
+ continue;
847
+ case S.OPEN_WAKA:
848
+ if (c === "!") {
849
+ parser.state = S.SGML_DECL;
850
+ parser.sgmlDecl = "";
851
+ } else if (isWhitespace(c)) {} else if (isMatch(nameStart, c)) {
852
+ parser.state = S.OPEN_TAG;
853
+ parser.tagName = c;
854
+ } else if (c === "/") {
855
+ parser.state = S.CLOSE_TAG;
856
+ parser.tagName = "";
857
+ } else if (c === "?") {
858
+ parser.state = S.PROC_INST;
859
+ parser.procInstName = parser.procInstBody = "";
860
+ } else {
861
+ strictFail(parser, "Unencoded <");
862
+ if (parser.startTagPosition + 1 < parser.position) {
863
+ var pad = parser.position - parser.startTagPosition;
864
+ c = new Array(pad).join(" ") + c;
865
+ }
866
+ parser.textNode += "<" + c;
867
+ parser.state = S.TEXT;
868
+ }
869
+ continue;
870
+ case S.SGML_DECL:
871
+ if (parser.sgmlDecl + c === "--") {
872
+ parser.state = S.COMMENT;
873
+ parser.comment = "";
874
+ parser.sgmlDecl = "";
875
+ continue;
876
+ }
877
+ if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {
878
+ parser.state = S.DOCTYPE_DTD;
879
+ parser.doctype += "<!" + parser.sgmlDecl + c;
880
+ parser.sgmlDecl = "";
881
+ } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
882
+ emitNode(parser, "onopencdata");
883
+ parser.state = S.CDATA;
884
+ parser.sgmlDecl = "";
885
+ parser.cdata = "";
886
+ } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
887
+ parser.state = S.DOCTYPE;
888
+ if (parser.doctype || parser.sawRoot) strictFail(parser, "Inappropriately located doctype declaration");
889
+ parser.doctype = "";
890
+ parser.sgmlDecl = "";
891
+ } else if (c === ">") {
892
+ emitNode(parser, "onsgmldeclaration", parser.sgmlDecl);
893
+ parser.sgmlDecl = "";
894
+ parser.state = S.TEXT;
895
+ } else if (isQuote(c)) {
896
+ parser.state = S.SGML_DECL_QUOTED;
897
+ parser.sgmlDecl += c;
898
+ } else parser.sgmlDecl += c;
899
+ continue;
900
+ case S.SGML_DECL_QUOTED:
901
+ if (c === parser.q) {
902
+ parser.state = S.SGML_DECL;
903
+ parser.q = "";
904
+ }
905
+ parser.sgmlDecl += c;
906
+ continue;
907
+ case S.DOCTYPE:
908
+ if (c === ">") {
909
+ parser.state = S.TEXT;
910
+ emitNode(parser, "ondoctype", parser.doctype);
911
+ parser.doctype = true;
912
+ } else {
913
+ parser.doctype += c;
914
+ if (c === "[") parser.state = S.DOCTYPE_DTD;
915
+ else if (isQuote(c)) {
916
+ parser.state = S.DOCTYPE_QUOTED;
917
+ parser.q = c;
918
+ }
919
+ }
920
+ continue;
921
+ case S.DOCTYPE_QUOTED:
922
+ parser.doctype += c;
923
+ if (c === parser.q) {
924
+ parser.q = "";
925
+ parser.state = S.DOCTYPE;
926
+ }
927
+ continue;
928
+ case S.DOCTYPE_DTD:
929
+ if (c === "]") {
930
+ parser.doctype += c;
931
+ parser.state = S.DOCTYPE;
932
+ } else if (c === "<") {
933
+ parser.state = S.OPEN_WAKA;
934
+ parser.startTagPosition = parser.position;
935
+ } else if (isQuote(c)) {
936
+ parser.doctype += c;
937
+ parser.state = S.DOCTYPE_DTD_QUOTED;
938
+ parser.q = c;
939
+ } else parser.doctype += c;
940
+ continue;
941
+ case S.DOCTYPE_DTD_QUOTED:
942
+ parser.doctype += c;
943
+ if (c === parser.q) {
944
+ parser.state = S.DOCTYPE_DTD;
945
+ parser.q = "";
946
+ }
947
+ continue;
948
+ case S.COMMENT:
949
+ if (c === "-") parser.state = S.COMMENT_ENDING;
950
+ else parser.comment += c;
951
+ continue;
952
+ case S.COMMENT_ENDING:
953
+ if (c === "-") {
954
+ parser.state = S.COMMENT_ENDED;
955
+ parser.comment = textopts(parser.opt, parser.comment);
956
+ if (parser.comment) emitNode(parser, "oncomment", parser.comment);
957
+ parser.comment = "";
958
+ } else {
959
+ parser.comment += "-" + c;
960
+ parser.state = S.COMMENT;
961
+ }
962
+ continue;
963
+ case S.COMMENT_ENDED:
964
+ if (c !== ">") {
965
+ strictFail(parser, "Malformed comment");
966
+ parser.comment += "--" + c;
967
+ parser.state = S.COMMENT;
968
+ } else if (parser.doctype && parser.doctype !== true) parser.state = S.DOCTYPE_DTD;
969
+ else parser.state = S.TEXT;
970
+ continue;
971
+ case S.CDATA:
972
+ var starti = i - 1;
973
+ while (c && c !== "]") {
974
+ c = charAt(chunk, i++);
975
+ if (c && parser.trackPosition) {
976
+ parser.position++;
977
+ if (c === "\n") {
978
+ parser.line++;
979
+ parser.column = 0;
980
+ } else parser.column++;
981
+ }
982
+ }
983
+ parser.cdata += chunk.substring(starti, i - 1);
984
+ if (c === "]") parser.state = S.CDATA_ENDING;
985
+ continue;
986
+ case S.CDATA_ENDING:
987
+ if (c === "]") parser.state = S.CDATA_ENDING_2;
988
+ else {
989
+ parser.cdata += "]" + c;
990
+ parser.state = S.CDATA;
991
+ }
992
+ continue;
993
+ case S.CDATA_ENDING_2:
994
+ if (c === ">") {
995
+ if (parser.cdata) emitNode(parser, "oncdata", parser.cdata);
996
+ emitNode(parser, "onclosecdata");
997
+ parser.cdata = "";
998
+ parser.state = S.TEXT;
999
+ } else if (c === "]") parser.cdata += "]";
1000
+ else {
1001
+ parser.cdata += "]]" + c;
1002
+ parser.state = S.CDATA;
1003
+ }
1004
+ continue;
1005
+ case S.PROC_INST:
1006
+ if (c === "?") parser.state = S.PROC_INST_ENDING;
1007
+ else if (isWhitespace(c)) parser.state = S.PROC_INST_BODY;
1008
+ else parser.procInstName += c;
1009
+ continue;
1010
+ case S.PROC_INST_BODY:
1011
+ if (!parser.procInstBody && isWhitespace(c)) continue;
1012
+ else if (c === "?") parser.state = S.PROC_INST_ENDING;
1013
+ else parser.procInstBody += c;
1014
+ continue;
1015
+ case S.PROC_INST_ENDING:
1016
+ if (c === ">") {
1017
+ emitNode(parser, "onprocessinginstruction", {
1018
+ name: parser.procInstName,
1019
+ body: parser.procInstBody
1020
+ });
1021
+ parser.procInstName = parser.procInstBody = "";
1022
+ parser.state = S.TEXT;
1023
+ } else {
1024
+ parser.procInstBody += "?" + c;
1025
+ parser.state = S.PROC_INST_BODY;
1026
+ }
1027
+ continue;
1028
+ case S.OPEN_TAG:
1029
+ if (isMatch(nameBody, c)) parser.tagName += c;
1030
+ else {
1031
+ newTag(parser);
1032
+ if (c === ">") openTag(parser);
1033
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH;
1034
+ else {
1035
+ if (!isWhitespace(c)) strictFail(parser, "Invalid character in tag name");
1036
+ parser.state = S.ATTRIB;
1037
+ }
1038
+ }
1039
+ continue;
1040
+ case S.OPEN_TAG_SLASH:
1041
+ if (c === ">") {
1042
+ openTag(parser, true);
1043
+ closeTag(parser);
1044
+ } else {
1045
+ strictFail(parser, "Forward-slash in opening tag not followed by >");
1046
+ parser.state = S.ATTRIB;
1047
+ }
1048
+ continue;
1049
+ case S.ATTRIB:
1050
+ if (isWhitespace(c)) continue;
1051
+ else if (c === ">") openTag(parser);
1052
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH;
1053
+ else if (isMatch(nameStart, c)) {
1054
+ parser.attribName = c;
1055
+ parser.attribValue = "";
1056
+ parser.state = S.ATTRIB_NAME;
1057
+ } else strictFail(parser, "Invalid attribute name");
1058
+ continue;
1059
+ case S.ATTRIB_NAME:
1060
+ if (c === "=") parser.state = S.ATTRIB_VALUE;
1061
+ else if (c === ">") {
1062
+ strictFail(parser, "Attribute without value");
1063
+ parser.attribValue = parser.attribName;
1064
+ attrib(parser);
1065
+ openTag(parser);
1066
+ } else if (isWhitespace(c)) parser.state = S.ATTRIB_NAME_SAW_WHITE;
1067
+ else if (isMatch(nameBody, c)) parser.attribName += c;
1068
+ else strictFail(parser, "Invalid attribute name");
1069
+ continue;
1070
+ case S.ATTRIB_NAME_SAW_WHITE:
1071
+ if (c === "=") parser.state = S.ATTRIB_VALUE;
1072
+ else if (isWhitespace(c)) continue;
1073
+ else {
1074
+ strictFail(parser, "Attribute without value");
1075
+ parser.tag.attributes[parser.attribName] = "";
1076
+ parser.attribValue = "";
1077
+ emitNode(parser, "onattribute", {
1078
+ name: parser.attribName,
1079
+ value: ""
1080
+ });
1081
+ parser.attribName = "";
1082
+ if (c === ">") openTag(parser);
1083
+ else if (isMatch(nameStart, c)) {
1084
+ parser.attribName = c;
1085
+ parser.state = S.ATTRIB_NAME;
1086
+ } else {
1087
+ strictFail(parser, "Invalid attribute name");
1088
+ parser.state = S.ATTRIB;
1089
+ }
1090
+ }
1091
+ continue;
1092
+ case S.ATTRIB_VALUE:
1093
+ if (isWhitespace(c)) continue;
1094
+ else if (isQuote(c)) {
1095
+ parser.q = c;
1096
+ parser.state = S.ATTRIB_VALUE_QUOTED;
1097
+ } else {
1098
+ if (!parser.opt.unquotedAttributeValues) error(parser, "Unquoted attribute value");
1099
+ parser.state = S.ATTRIB_VALUE_UNQUOTED;
1100
+ parser.attribValue = c;
1101
+ }
1102
+ continue;
1103
+ case S.ATTRIB_VALUE_QUOTED:
1104
+ if (c !== parser.q) {
1105
+ if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_Q;
1106
+ else parser.attribValue += c;
1107
+ continue;
1108
+ }
1109
+ attrib(parser);
1110
+ parser.q = "";
1111
+ parser.state = S.ATTRIB_VALUE_CLOSED;
1112
+ continue;
1113
+ case S.ATTRIB_VALUE_CLOSED:
1114
+ if (isWhitespace(c)) parser.state = S.ATTRIB;
1115
+ else if (c === ">") openTag(parser);
1116
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH;
1117
+ else if (isMatch(nameStart, c)) {
1118
+ strictFail(parser, "No whitespace between attributes");
1119
+ parser.attribName = c;
1120
+ parser.attribValue = "";
1121
+ parser.state = S.ATTRIB_NAME;
1122
+ } else strictFail(parser, "Invalid attribute name");
1123
+ continue;
1124
+ case S.ATTRIB_VALUE_UNQUOTED:
1125
+ if (!isAttribEnd(c)) {
1126
+ if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U;
1127
+ else parser.attribValue += c;
1128
+ continue;
1129
+ }
1130
+ attrib(parser);
1131
+ if (c === ">") openTag(parser);
1132
+ else parser.state = S.ATTRIB;
1133
+ continue;
1134
+ case S.CLOSE_TAG:
1135
+ if (!parser.tagName) if (isWhitespace(c)) continue;
1136
+ else if (notMatch(nameStart, c)) if (parser.script) {
1137
+ parser.script += "</" + c;
1138
+ parser.state = S.SCRIPT;
1139
+ } else strictFail(parser, "Invalid tagname in closing tag.");
1140
+ else parser.tagName = c;
1141
+ else if (c === ">") closeTag(parser);
1142
+ else if (isMatch(nameBody, c)) parser.tagName += c;
1143
+ else if (parser.script) {
1144
+ parser.script += "</" + parser.tagName + c;
1145
+ parser.tagName = "";
1146
+ parser.state = S.SCRIPT;
1147
+ } else {
1148
+ if (!isWhitespace(c)) strictFail(parser, "Invalid tagname in closing tag");
1149
+ parser.state = S.CLOSE_TAG_SAW_WHITE;
1150
+ }
1151
+ continue;
1152
+ case S.CLOSE_TAG_SAW_WHITE:
1153
+ if (isWhitespace(c)) continue;
1154
+ if (c === ">") closeTag(parser);
1155
+ else strictFail(parser, "Invalid characters in closing tag");
1156
+ continue;
1157
+ case S.TEXT_ENTITY:
1158
+ case S.ATTRIB_VALUE_ENTITY_Q:
1159
+ case S.ATTRIB_VALUE_ENTITY_U:
1160
+ var returnState;
1161
+ var buffer;
1162
+ switch (parser.state) {
1163
+ case S.TEXT_ENTITY:
1164
+ returnState = S.TEXT;
1165
+ buffer = "textNode";
1166
+ break;
1167
+ case S.ATTRIB_VALUE_ENTITY_Q:
1168
+ returnState = S.ATTRIB_VALUE_QUOTED;
1169
+ buffer = "attribValue";
1170
+ break;
1171
+ case S.ATTRIB_VALUE_ENTITY_U:
1172
+ returnState = S.ATTRIB_VALUE_UNQUOTED;
1173
+ buffer = "attribValue";
1174
+ break;
1175
+ }
1176
+ if (c === ";") {
1177
+ var parsedEntity = parseEntity(parser);
1178
+ if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {
1179
+ if ((parser.entityCount += 1) > parser.opt.maxEntityCount) error(parser, "Parsed entity count exceeds max entity count");
1180
+ if ((parser.entityDepth += 1) > parser.opt.maxEntityDepth) error(parser, "Parsed entity depth exceeds max entity depth");
1181
+ parser.entity = "";
1182
+ parser.state = returnState;
1183
+ parser.write(parsedEntity);
1184
+ parser.entityDepth -= 1;
1185
+ } else {
1186
+ parser[buffer] += parsedEntity;
1187
+ parser.entity = "";
1188
+ parser.state = returnState;
1189
+ }
1190
+ } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) parser.entity += c;
1191
+ else {
1192
+ strictFail(parser, "Invalid character in entity name");
1193
+ parser[buffer] += "&" + parser.entity + c;
1194
+ parser.entity = "";
1195
+ parser.state = returnState;
1196
+ }
1197
+ continue;
1198
+ default: throw new Error(parser, "Unknown state: " + parser.state);
1199
+ }
1200
+ }
1201
+ if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser);
1202
+ return parser;
1203
+ }
1204
+ /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
1205
+ /* istanbul ignore next */
1206
+ if (!String.fromCodePoint) (function() {
1207
+ var stringFromCharCode = String.fromCharCode;
1208
+ var floor = Math.floor;
1209
+ var fromCodePoint = function() {
1210
+ var MAX_SIZE = 16384;
1211
+ var codeUnits = [];
1212
+ var highSurrogate;
1213
+ var lowSurrogate;
1214
+ var index = -1;
1215
+ var length = arguments.length;
1216
+ if (!length) return "";
1217
+ var result = "";
1218
+ while (++index < length) {
1219
+ var codePoint = Number(arguments[index]);
1220
+ if (!isFinite(codePoint) || codePoint < 0 || codePoint > 1114111 || floor(codePoint) !== codePoint) throw RangeError("Invalid code point: " + codePoint);
1221
+ if (codePoint <= 65535) codeUnits.push(codePoint);
1222
+ else {
1223
+ codePoint -= 65536;
1224
+ highSurrogate = (codePoint >> 10) + 55296;
1225
+ lowSurrogate = codePoint % 1024 + 56320;
1226
+ codeUnits.push(highSurrogate, lowSurrogate);
1227
+ }
1228
+ if (index + 1 === length || codeUnits.length > MAX_SIZE) {
1229
+ result += stringFromCharCode.apply(null, codeUnits);
1230
+ codeUnits.length = 0;
1231
+ }
1232
+ }
1233
+ return result;
1234
+ };
1235
+ /* istanbul ignore next */
1236
+ if (Object.defineProperty) Object.defineProperty(String, "fromCodePoint", {
1237
+ value: fromCodePoint,
1238
+ configurable: true,
1239
+ writable: true
1240
+ });
1241
+ else String.fromCodePoint = fromCodePoint;
1242
+ })();
1243
+ })(typeof exports === "undefined" ? exports.sax = {} : exports);
1244
+ }));
1245
+ //#endregion
1246
+ export default require_sax();
1247
+ export { require_sax };
1248
+
1249
+ //# sourceMappingURL=sax.js.map