xml-model 1.3.3 → 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.
Files changed (84) hide show
  1. package/README.md +39 -35
  2. package/dist/_virtual/_rolldown/runtime.js +8 -0
  3. package/dist/index.d.ts +3 -7
  4. package/dist/index.js +7 -20
  5. package/dist/model.d.ts +53 -0
  6. package/dist/model.js +75 -0
  7. package/dist/node_modules/sax/lib/sax.js +1249 -0
  8. package/dist/node_modules/xml-js/lib/array-helper.js +13 -0
  9. package/dist/node_modules/xml-js/lib/index.js +19 -0
  10. package/dist/node_modules/xml-js/lib/js2xml.js +258 -0
  11. package/dist/node_modules/xml-js/lib/json2xml.js +22 -0
  12. package/dist/node_modules/xml-js/lib/options-helper.js +33 -0
  13. package/dist/node_modules/xml-js/lib/xml2js.js +246 -0
  14. package/dist/node_modules/xml-js/lib/xml2json.js +26 -0
  15. package/dist/util/kebab-case.js +24 -13
  16. package/dist/util/zod.d.ts +4 -0
  17. package/dist/util/zod.js +21 -0
  18. package/dist/xml/codec.d.ts +87 -0
  19. package/dist/xml/codec.js +339 -0
  20. package/dist/xml/examples.d.ts +188 -0
  21. package/dist/xml/index.d.ts +5 -79
  22. package/dist/xml/index.js +4 -57
  23. package/dist/xml/model.d.ts +18 -0
  24. package/dist/xml/model.js +33 -0
  25. package/dist/xml/schema-meta.d.ts +57 -0
  26. package/dist/xml/schema-meta.js +88 -0
  27. package/dist/xml/xml-js.d.ts +280 -3
  28. package/dist/xml/xml-js.js +121 -8
  29. package/package.json +27 -42
  30. package/dist/_virtual/Reflect.js +0 -8
  31. package/dist/_virtual/Reflect2.js +0 -5
  32. package/dist/_virtual/_commonjsHelpers.js +0 -47
  33. package/dist/defaults.d.ts +0 -28
  34. package/dist/defaults.js +0 -165
  35. package/dist/errors.d.ts +0 -40
  36. package/dist/errors.js +0 -45
  37. package/dist/middleware.d.ts +0 -10
  38. package/dist/middleware.js +0 -25
  39. package/dist/model/built-ins.d.ts +0 -3
  40. package/dist/model/built-ins.js +0 -43
  41. package/dist/model/index.d.ts +0 -69
  42. package/dist/model/index.js +0 -264
  43. package/dist/model/property.d.ts +0 -18
  44. package/dist/model/property.js +0 -67
  45. package/dist/model/registry.d.ts +0 -9
  46. package/dist/model/registry.js +0 -19
  47. package/dist/model/types.d.ts +0 -109
  48. package/dist/node_modules/reflect-metadata/Reflect.js +0 -806
  49. package/dist/types.d.ts +0 -25
  50. package/dist/util/is-regexp.d.ts +0 -12
  51. package/dist/util/is-regexp.js +0 -8
  52. package/dist/util/merge-maps.d.ts +0 -2
  53. package/dist/util/merge-maps.js +0 -23
  54. package/dist/vite/index.d.ts +0 -80
  55. package/dist/vite/index.js +0 -71
  56. package/dist/vite/node_modules/typescript-rtti/dist.esm/common/format.js +0 -105
  57. package/dist/vite/node_modules/typescript-rtti/dist.esm/common/index.js +0 -55
  58. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/api-call-transformer.js +0 -152
  59. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/class-analyzer.js +0 -83
  60. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/compile-error.js +0 -8
  61. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/import-analyzer.js +0 -89
  62. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/interface-analyzer.js +0 -58
  63. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/common/visitor-base.js +0 -93
  64. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/declarations-emitter.js +0 -31
  65. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/encode-parameter.js +0 -64
  66. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/find-relative-path.js +0 -41
  67. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/flags.js +0 -43
  68. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/forward-ref.js +0 -20
  69. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/get-exports-for-symbol.js +0 -64
  70. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/index.js +0 -130
  71. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/legacy-decorator.js +0 -10
  72. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/legacy-type-encoder.js +0 -82
  73. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/literal-node.js +0 -9
  74. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-collector.js +0 -56
  75. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-decorator.js +0 -80
  76. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-emitter.js +0 -425
  77. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/metadata-encoder.js +0 -212
  78. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/rt-helper.js +0 -96
  79. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/rtti-visitor-base.js +0 -28
  80. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/serialize.js +0 -31
  81. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/type-encoder.js +0 -76
  82. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/type-literal.js +0 -499
  83. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/utils.js +0 -906
  84. package/dist/vite/node_modules/typescript-rtti/dist.esm/transformer/workarounds.js +0 -7
@@ -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