workflow-editor 0.9.83-dwtmp1 → 0.9.84-dw-tmp1

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 (61) hide show
  1. package/lib/css/workflow-editor.common~247b300f.28fbd3a3.css +1 -0
  2. package/lib/css/workflow-editor.common~62bcfb54.c1b3ecc5.css +1 -0
  3. package/lib/css/workflow-editor.common~95b80cda.16e04122.css +1 -0
  4. package/lib/css/workflow-editor.common~e19cd708.68e04fb4.css +1 -0
  5. package/lib/css/workflow-editor.umd.min~247b300f.28fbd3a3.css +1 -0
  6. package/lib/css/workflow-editor.umd.min~62bcfb54.c1b3ecc5.css +1 -0
  7. package/lib/css/workflow-editor.umd.min~95b80cda.16e04122.css +1 -0
  8. package/lib/css/workflow-editor.umd.min~e19cd708.68e04fb4.css +1 -0
  9. package/lib/css/workflow-editor.umd~247b300f.28fbd3a3.css +1 -0
  10. package/lib/css/workflow-editor.umd~62bcfb54.c1b3ecc5.css +1 -0
  11. package/lib/css/workflow-editor.umd~95b80cda.16e04122.css +1 -0
  12. package/lib/css/workflow-editor.umd~e19cd708.68e04fb4.css +1 -0
  13. package/lib/css/yarn.prismjs~0bd0e877.9093a967.css +1 -0
  14. package/lib/workflow-editor.common.vendors~workflow-editor.common~253ae210.js +4136 -0
  15. package/lib/workflow-editor.common.workflow-editor.common~0b5ad61a.js +1022 -0
  16. package/lib/workflow-editor.common.workflow-editor.common~247b300f.js +1948 -0
  17. package/lib/workflow-editor.common.workflow-editor.common~62bcfb54.js +14764 -0
  18. package/lib/workflow-editor.common.workflow-editor.common~95b80cda.js +3300 -0
  19. package/lib/workflow-editor.common.workflow-editor.common~e19cd708.js +1585 -0
  20. package/lib/workflow-editor.common.workflow-editor.common~e2e93592.js +1293 -0
  21. package/lib/workflow-editor.common.yarn.async-validator~7864cd12.js +1223 -0
  22. package/lib/workflow-editor.common.yarn.buffer~7e5e8261.js +1801 -0
  23. package/lib/workflow-editor.common.yarn.core-js~2b13b260.js +5078 -0
  24. package/lib/workflow-editor.common.yarn.imatrix-ui~f5767151.js +2256 -0
  25. package/lib/workflow-editor.common.yarn.prismjs~0bd0e877.js +2028 -0
  26. package/lib/workflow-editor.common.yarn.readable-stream~2b6d3a99.js +2435 -0
  27. package/lib/workflow-editor.common.yarn.sax~95191fae.js +1576 -0
  28. package/lib/workflow-editor.common.yarn.vue-i18n~02576867.js +2259 -0
  29. package/lib/workflow-editor.umd.min.js +1 -39
  30. package/lib/workflow-editor.umd.min.vendors~workflow-editor.umd.min~253ae210.js +12 -0
  31. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~0b5ad61a.js +1 -0
  32. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~247b300f.js +1 -0
  33. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~62bcfb54.js +1 -0
  34. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~95b80cda.js +1 -0
  35. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~e19cd708.js +1 -0
  36. package/lib/workflow-editor.umd.min.workflow-editor.umd.min~e2e93592.js +1 -0
  37. package/lib/workflow-editor.umd.min.yarn.async-validator~7864cd12.js +1 -0
  38. package/lib/workflow-editor.umd.min.yarn.buffer~7e5e8261.js +8 -0
  39. package/lib/workflow-editor.umd.min.yarn.core-js~2b13b260.js +1 -0
  40. package/lib/workflow-editor.umd.min.yarn.imatrix-ui~f5767151.js +1 -0
  41. package/lib/workflow-editor.umd.min.yarn.prismjs~0bd0e877.js +9 -0
  42. package/lib/workflow-editor.umd.min.yarn.readable-stream~2b6d3a99.js +1 -0
  43. package/lib/workflow-editor.umd.min.yarn.sax~95191fae.js +2 -0
  44. package/lib/workflow-editor.umd.min.yarn.vue-i18n~02576867.js +6 -0
  45. package/lib/workflow-editor.umd.vendors~workflow-editor.umd~253ae210.js +4136 -0
  46. package/lib/workflow-editor.umd.workflow-editor.umd~0b5ad61a.js +1032 -0
  47. package/lib/workflow-editor.umd.workflow-editor.umd~247b300f.js +1948 -0
  48. package/lib/workflow-editor.umd.workflow-editor.umd~62bcfb54.js +14764 -0
  49. package/lib/workflow-editor.umd.workflow-editor.umd~95b80cda.js +3300 -0
  50. package/lib/workflow-editor.umd.workflow-editor.umd~e19cd708.js +1585 -0
  51. package/lib/workflow-editor.umd.workflow-editor.umd~e2e93592.js +1293 -0
  52. package/lib/workflow-editor.umd.yarn.async-validator~7864cd12.js +1223 -0
  53. package/lib/workflow-editor.umd.yarn.buffer~7e5e8261.js +1801 -0
  54. package/lib/workflow-editor.umd.yarn.core-js~2b13b260.js +5078 -0
  55. package/lib/workflow-editor.umd.yarn.imatrix-ui~f5767151.js +2256 -0
  56. package/lib/workflow-editor.umd.yarn.prismjs~0bd0e877.js +2028 -0
  57. package/lib/workflow-editor.umd.yarn.readable-stream~2b6d3a99.js +2435 -0
  58. package/lib/workflow-editor.umd.yarn.sax~95191fae.js +1576 -0
  59. package/lib/workflow-editor.umd.yarn.vue-i18n~02576867.js +2259 -0
  60. package/package.json +2 -2
  61. package/lib/workflow-editor.css +0 -1
@@ -0,0 +1,1576 @@
1
+ ((typeof self !== 'undefined' ? self : this)["webpackJsonpworkflow_editor"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpworkflow_editor"] || []).push([[14],{
2
+
3
+ /***/ "3171":
4
+ /***/ (function(module, exports, __webpack_require__) {
5
+
6
+ /* WEBPACK VAR INJECTION */(function(Buffer) {;(function (sax) { // wrapper for non-node envs
7
+ sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
8
+ sax.SAXParser = SAXParser
9
+ sax.SAXStream = SAXStream
10
+ sax.createStream = createStream
11
+
12
+ // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
13
+ // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
14
+ // since that's the earliest that a buffer overrun could occur. This way, checks are
15
+ // as rare as required, but as often as necessary to ensure never crossing this bound.
16
+ // Furthermore, buffers are only tested at most once per write(), so passing a very
17
+ // large string into write() might have undesirable effects, but this is manageable by
18
+ // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
19
+ // edge case, result in creating at most one complete copy of the string passed in.
20
+ // Set to Infinity to have unlimited buffers.
21
+ sax.MAX_BUFFER_LENGTH = 64 * 1024
22
+
23
+ var buffers = [
24
+ 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
25
+ 'procInstName', 'procInstBody', 'entity', 'attribName',
26
+ 'attribValue', 'cdata', 'script'
27
+ ]
28
+
29
+ sax.EVENTS = [
30
+ 'text',
31
+ 'processinginstruction',
32
+ 'sgmldeclaration',
33
+ 'doctype',
34
+ 'comment',
35
+ 'opentagstart',
36
+ 'attribute',
37
+ 'opentag',
38
+ 'closetag',
39
+ 'opencdata',
40
+ 'cdata',
41
+ 'closecdata',
42
+ 'error',
43
+ 'end',
44
+ 'ready',
45
+ 'script',
46
+ 'opennamespace',
47
+ 'closenamespace'
48
+ ]
49
+
50
+ function SAXParser (strict, opt) {
51
+ if (!(this instanceof SAXParser)) {
52
+ return new SAXParser(strict, opt)
53
+ }
54
+
55
+ var parser = this
56
+ clearBuffers(parser)
57
+ parser.q = parser.c = ''
58
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
59
+ parser.opt = opt || {}
60
+ parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
61
+ parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
62
+ parser.tags = []
63
+ parser.closed = parser.closedRoot = parser.sawRoot = false
64
+ parser.tag = parser.error = null
65
+ parser.strict = !!strict
66
+ parser.noscript = !!(strict || parser.opt.noscript)
67
+ parser.state = S.BEGIN
68
+ parser.strictEntities = parser.opt.strictEntities
69
+ parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
70
+ parser.attribList = []
71
+
72
+ // namespaces form a prototype chain.
73
+ // it always points at the current tag,
74
+ // which protos to its parent tag.
75
+ if (parser.opt.xmlns) {
76
+ parser.ns = Object.create(rootNS)
77
+ }
78
+
79
+ // mostly just for error reporting
80
+ parser.trackPosition = parser.opt.position !== false
81
+ if (parser.trackPosition) {
82
+ parser.position = parser.line = parser.column = 0
83
+ }
84
+ emit(parser, 'onready')
85
+ }
86
+
87
+ if (!Object.create) {
88
+ Object.create = function (o) {
89
+ function F () {}
90
+ F.prototype = o
91
+ var newf = new F()
92
+ return newf
93
+ }
94
+ }
95
+
96
+ if (!Object.keys) {
97
+ Object.keys = function (o) {
98
+ var a = []
99
+ for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
100
+ return a
101
+ }
102
+ }
103
+
104
+ function checkBufferLength (parser) {
105
+ var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
106
+ var maxActual = 0
107
+ for (var i = 0, l = buffers.length; i < l; i++) {
108
+ var len = parser[buffers[i]].length
109
+ if (len > maxAllowed) {
110
+ // Text/cdata nodes can get big, and since they're buffered,
111
+ // we can get here under normal conditions.
112
+ // Avoid issues by emitting the text node now,
113
+ // so at least it won't get any bigger.
114
+ switch (buffers[i]) {
115
+ case 'textNode':
116
+ closeText(parser)
117
+ break
118
+
119
+ case 'cdata':
120
+ emitNode(parser, 'oncdata', parser.cdata)
121
+ parser.cdata = ''
122
+ break
123
+
124
+ case 'script':
125
+ emitNode(parser, 'onscript', parser.script)
126
+ parser.script = ''
127
+ break
128
+
129
+ default:
130
+ error(parser, 'Max buffer length exceeded: ' + buffers[i])
131
+ }
132
+ }
133
+ maxActual = Math.max(maxActual, len)
134
+ }
135
+ // schedule the next check for the earliest possible buffer overrun.
136
+ var m = sax.MAX_BUFFER_LENGTH - maxActual
137
+ parser.bufferCheckPosition = m + parser.position
138
+ }
139
+
140
+ function clearBuffers (parser) {
141
+ for (var i = 0, l = buffers.length; i < l; i++) {
142
+ parser[buffers[i]] = ''
143
+ }
144
+ }
145
+
146
+ function flushBuffers (parser) {
147
+ closeText(parser)
148
+ if (parser.cdata !== '') {
149
+ emitNode(parser, 'oncdata', parser.cdata)
150
+ parser.cdata = ''
151
+ }
152
+ if (parser.script !== '') {
153
+ emitNode(parser, 'onscript', parser.script)
154
+ parser.script = ''
155
+ }
156
+ }
157
+
158
+ SAXParser.prototype = {
159
+ end: function () { end(this) },
160
+ write: write,
161
+ resume: function () { this.error = null; return this },
162
+ close: function () { return this.write(null) },
163
+ flush: function () { flushBuffers(this) }
164
+ }
165
+
166
+ var Stream
167
+ try {
168
+ Stream = __webpack_require__("d485").Stream
169
+ } catch (ex) {
170
+ Stream = function () {}
171
+ }
172
+
173
+ var streamWraps = sax.EVENTS.filter(function (ev) {
174
+ return ev !== 'error' && ev !== 'end'
175
+ })
176
+
177
+ function createStream (strict, opt) {
178
+ return new SAXStream(strict, opt)
179
+ }
180
+
181
+ function SAXStream (strict, opt) {
182
+ if (!(this instanceof SAXStream)) {
183
+ return new SAXStream(strict, opt)
184
+ }
185
+
186
+ Stream.apply(this)
187
+
188
+ this._parser = new SAXParser(strict, opt)
189
+ this.writable = true
190
+ this.readable = true
191
+
192
+ var me = this
193
+
194
+ this._parser.onend = function () {
195
+ me.emit('end')
196
+ }
197
+
198
+ this._parser.onerror = function (er) {
199
+ me.emit('error', er)
200
+
201
+ // if didn't throw, then means error was handled.
202
+ // go ahead and clear error, so we can write again.
203
+ me._parser.error = null
204
+ }
205
+
206
+ this._decoder = null
207
+
208
+ streamWraps.forEach(function (ev) {
209
+ Object.defineProperty(me, 'on' + ev, {
210
+ get: function () {
211
+ return me._parser['on' + ev]
212
+ },
213
+ set: function (h) {
214
+ if (!h) {
215
+ me.removeAllListeners(ev)
216
+ me._parser['on' + ev] = h
217
+ return h
218
+ }
219
+ me.on(ev, h)
220
+ },
221
+ enumerable: true,
222
+ configurable: false
223
+ })
224
+ })
225
+ }
226
+
227
+ SAXStream.prototype = Object.create(Stream.prototype, {
228
+ constructor: {
229
+ value: SAXStream
230
+ }
231
+ })
232
+
233
+ SAXStream.prototype.write = function (data) {
234
+ if (typeof Buffer === 'function' &&
235
+ typeof Buffer.isBuffer === 'function' &&
236
+ Buffer.isBuffer(data)) {
237
+ if (!this._decoder) {
238
+ var SD = __webpack_require__("7d72").StringDecoder
239
+ this._decoder = new SD('utf8')
240
+ }
241
+ data = this._decoder.write(data)
242
+ }
243
+
244
+ this._parser.write(data.toString())
245
+ this.emit('data', data)
246
+ return true
247
+ }
248
+
249
+ SAXStream.prototype.end = function (chunk) {
250
+ if (chunk && chunk.length) {
251
+ this.write(chunk)
252
+ }
253
+ this._parser.end()
254
+ return true
255
+ }
256
+
257
+ SAXStream.prototype.on = function (ev, handler) {
258
+ var me = this
259
+ if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {
260
+ me._parser['on' + ev] = function () {
261
+ var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)
262
+ args.splice(0, 0, ev)
263
+ me.emit.apply(me, args)
264
+ }
265
+ }
266
+
267
+ return Stream.prototype.on.call(me, ev, handler)
268
+ }
269
+
270
+ // this really needs to be replaced with character classes.
271
+ // XML allows all manner of ridiculous numbers and digits.
272
+ var CDATA = '[CDATA['
273
+ var DOCTYPE = 'DOCTYPE'
274
+ var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
275
+ var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
276
+ var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
277
+
278
+ // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
279
+ // This implementation works on strings, a single character at a time
280
+ // as such, it cannot ever support astral-plane characters (10000-EFFFF)
281
+ // without a significant breaking change to either this parser, or the
282
+ // JavaScript language. Implementation of an emoji-capable xml parser
283
+ // is left as an exercise for the reader.
284
+ 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]/
285
+
286
+ 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-]/
287
+
288
+ 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]/
289
+ 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-]/
290
+
291
+ function isWhitespace (c) {
292
+ return c === ' ' || c === '\n' || c === '\r' || c === '\t'
293
+ }
294
+
295
+ function isQuote (c) {
296
+ return c === '"' || c === '\''
297
+ }
298
+
299
+ function isAttribEnd (c) {
300
+ return c === '>' || isWhitespace(c)
301
+ }
302
+
303
+ function isMatch (regex, c) {
304
+ return regex.test(c)
305
+ }
306
+
307
+ function notMatch (regex, c) {
308
+ return !isMatch(regex, c)
309
+ }
310
+
311
+ var S = 0
312
+ sax.STATE = {
313
+ BEGIN: S++, // leading byte order mark or whitespace
314
+ BEGIN_WHITESPACE: S++, // leading whitespace
315
+ TEXT: S++, // general stuff
316
+ TEXT_ENTITY: S++, // &amp and such.
317
+ OPEN_WAKA: S++, // <
318
+ SGML_DECL: S++, // <!BLARG
319
+ SGML_DECL_QUOTED: S++, // <!BLARG foo "bar
320
+ DOCTYPE: S++, // <!DOCTYPE
321
+ DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah
322
+ DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ...
323
+ DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo
324
+ COMMENT_STARTING: S++, // <!-
325
+ COMMENT: S++, // <!--
326
+ COMMENT_ENDING: S++, // <!-- blah -
327
+ COMMENT_ENDED: S++, // <!-- blah --
328
+ CDATA: S++, // <![CDATA[ something
329
+ CDATA_ENDING: S++, // ]
330
+ CDATA_ENDING_2: S++, // ]]
331
+ PROC_INST: S++, // <?hi
332
+ PROC_INST_BODY: S++, // <?hi there
333
+ PROC_INST_ENDING: S++, // <?hi "there" ?
334
+ OPEN_TAG: S++, // <strong
335
+ OPEN_TAG_SLASH: S++, // <strong /
336
+ ATTRIB: S++, // <a
337
+ ATTRIB_NAME: S++, // <a foo
338
+ ATTRIB_NAME_SAW_WHITE: S++, // <a foo _
339
+ ATTRIB_VALUE: S++, // <a foo=
340
+ ATTRIB_VALUE_QUOTED: S++, // <a foo="bar
341
+ ATTRIB_VALUE_CLOSED: S++, // <a foo="bar"
342
+ ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar
343
+ ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar="&quot;"
344
+ ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot
345
+ CLOSE_TAG: S++, // </a
346
+ CLOSE_TAG_SAW_WHITE: S++, // </a >
347
+ SCRIPT: S++, // <script> ...
348
+ SCRIPT_ENDING: S++ // <script> ... <
349
+ }
350
+
351
+ sax.XML_ENTITIES = {
352
+ 'amp': '&',
353
+ 'gt': '>',
354
+ 'lt': '<',
355
+ 'quot': '"',
356
+ 'apos': "'"
357
+ }
358
+
359
+ sax.ENTITIES = {
360
+ 'amp': '&',
361
+ 'gt': '>',
362
+ 'lt': '<',
363
+ 'quot': '"',
364
+ 'apos': "'",
365
+ 'AElig': 198,
366
+ 'Aacute': 193,
367
+ 'Acirc': 194,
368
+ 'Agrave': 192,
369
+ 'Aring': 197,
370
+ 'Atilde': 195,
371
+ 'Auml': 196,
372
+ 'Ccedil': 199,
373
+ 'ETH': 208,
374
+ 'Eacute': 201,
375
+ 'Ecirc': 202,
376
+ 'Egrave': 200,
377
+ 'Euml': 203,
378
+ 'Iacute': 205,
379
+ 'Icirc': 206,
380
+ 'Igrave': 204,
381
+ 'Iuml': 207,
382
+ 'Ntilde': 209,
383
+ 'Oacute': 211,
384
+ 'Ocirc': 212,
385
+ 'Ograve': 210,
386
+ 'Oslash': 216,
387
+ 'Otilde': 213,
388
+ 'Ouml': 214,
389
+ 'THORN': 222,
390
+ 'Uacute': 218,
391
+ 'Ucirc': 219,
392
+ 'Ugrave': 217,
393
+ 'Uuml': 220,
394
+ 'Yacute': 221,
395
+ 'aacute': 225,
396
+ 'acirc': 226,
397
+ 'aelig': 230,
398
+ 'agrave': 224,
399
+ 'aring': 229,
400
+ 'atilde': 227,
401
+ 'auml': 228,
402
+ 'ccedil': 231,
403
+ 'eacute': 233,
404
+ 'ecirc': 234,
405
+ 'egrave': 232,
406
+ 'eth': 240,
407
+ 'euml': 235,
408
+ 'iacute': 237,
409
+ 'icirc': 238,
410
+ 'igrave': 236,
411
+ 'iuml': 239,
412
+ 'ntilde': 241,
413
+ 'oacute': 243,
414
+ 'ocirc': 244,
415
+ 'ograve': 242,
416
+ 'oslash': 248,
417
+ 'otilde': 245,
418
+ 'ouml': 246,
419
+ 'szlig': 223,
420
+ 'thorn': 254,
421
+ 'uacute': 250,
422
+ 'ucirc': 251,
423
+ 'ugrave': 249,
424
+ 'uuml': 252,
425
+ 'yacute': 253,
426
+ 'yuml': 255,
427
+ 'copy': 169,
428
+ 'reg': 174,
429
+ 'nbsp': 160,
430
+ 'iexcl': 161,
431
+ 'cent': 162,
432
+ 'pound': 163,
433
+ 'curren': 164,
434
+ 'yen': 165,
435
+ 'brvbar': 166,
436
+ 'sect': 167,
437
+ 'uml': 168,
438
+ 'ordf': 170,
439
+ 'laquo': 171,
440
+ 'not': 172,
441
+ 'shy': 173,
442
+ 'macr': 175,
443
+ 'deg': 176,
444
+ 'plusmn': 177,
445
+ 'sup1': 185,
446
+ 'sup2': 178,
447
+ 'sup3': 179,
448
+ 'acute': 180,
449
+ 'micro': 181,
450
+ 'para': 182,
451
+ 'middot': 183,
452
+ 'cedil': 184,
453
+ 'ordm': 186,
454
+ 'raquo': 187,
455
+ 'frac14': 188,
456
+ 'frac12': 189,
457
+ 'frac34': 190,
458
+ 'iquest': 191,
459
+ 'times': 215,
460
+ 'divide': 247,
461
+ 'OElig': 338,
462
+ 'oelig': 339,
463
+ 'Scaron': 352,
464
+ 'scaron': 353,
465
+ 'Yuml': 376,
466
+ 'fnof': 402,
467
+ 'circ': 710,
468
+ 'tilde': 732,
469
+ 'Alpha': 913,
470
+ 'Beta': 914,
471
+ 'Gamma': 915,
472
+ 'Delta': 916,
473
+ 'Epsilon': 917,
474
+ 'Zeta': 918,
475
+ 'Eta': 919,
476
+ 'Theta': 920,
477
+ 'Iota': 921,
478
+ 'Kappa': 922,
479
+ 'Lambda': 923,
480
+ 'Mu': 924,
481
+ 'Nu': 925,
482
+ 'Xi': 926,
483
+ 'Omicron': 927,
484
+ 'Pi': 928,
485
+ 'Rho': 929,
486
+ 'Sigma': 931,
487
+ 'Tau': 932,
488
+ 'Upsilon': 933,
489
+ 'Phi': 934,
490
+ 'Chi': 935,
491
+ 'Psi': 936,
492
+ 'Omega': 937,
493
+ 'alpha': 945,
494
+ 'beta': 946,
495
+ 'gamma': 947,
496
+ 'delta': 948,
497
+ 'epsilon': 949,
498
+ 'zeta': 950,
499
+ 'eta': 951,
500
+ 'theta': 952,
501
+ 'iota': 953,
502
+ 'kappa': 954,
503
+ 'lambda': 955,
504
+ 'mu': 956,
505
+ 'nu': 957,
506
+ 'xi': 958,
507
+ 'omicron': 959,
508
+ 'pi': 960,
509
+ 'rho': 961,
510
+ 'sigmaf': 962,
511
+ 'sigma': 963,
512
+ 'tau': 964,
513
+ 'upsilon': 965,
514
+ 'phi': 966,
515
+ 'chi': 967,
516
+ 'psi': 968,
517
+ 'omega': 969,
518
+ 'thetasym': 977,
519
+ 'upsih': 978,
520
+ 'piv': 982,
521
+ 'ensp': 8194,
522
+ 'emsp': 8195,
523
+ 'thinsp': 8201,
524
+ 'zwnj': 8204,
525
+ 'zwj': 8205,
526
+ 'lrm': 8206,
527
+ 'rlm': 8207,
528
+ 'ndash': 8211,
529
+ 'mdash': 8212,
530
+ 'lsquo': 8216,
531
+ 'rsquo': 8217,
532
+ 'sbquo': 8218,
533
+ 'ldquo': 8220,
534
+ 'rdquo': 8221,
535
+ 'bdquo': 8222,
536
+ 'dagger': 8224,
537
+ 'Dagger': 8225,
538
+ 'bull': 8226,
539
+ 'hellip': 8230,
540
+ 'permil': 8240,
541
+ 'prime': 8242,
542
+ 'Prime': 8243,
543
+ 'lsaquo': 8249,
544
+ 'rsaquo': 8250,
545
+ 'oline': 8254,
546
+ 'frasl': 8260,
547
+ 'euro': 8364,
548
+ 'image': 8465,
549
+ 'weierp': 8472,
550
+ 'real': 8476,
551
+ 'trade': 8482,
552
+ 'alefsym': 8501,
553
+ 'larr': 8592,
554
+ 'uarr': 8593,
555
+ 'rarr': 8594,
556
+ 'darr': 8595,
557
+ 'harr': 8596,
558
+ 'crarr': 8629,
559
+ 'lArr': 8656,
560
+ 'uArr': 8657,
561
+ 'rArr': 8658,
562
+ 'dArr': 8659,
563
+ 'hArr': 8660,
564
+ 'forall': 8704,
565
+ 'part': 8706,
566
+ 'exist': 8707,
567
+ 'empty': 8709,
568
+ 'nabla': 8711,
569
+ 'isin': 8712,
570
+ 'notin': 8713,
571
+ 'ni': 8715,
572
+ 'prod': 8719,
573
+ 'sum': 8721,
574
+ 'minus': 8722,
575
+ 'lowast': 8727,
576
+ 'radic': 8730,
577
+ 'prop': 8733,
578
+ 'infin': 8734,
579
+ 'ang': 8736,
580
+ 'and': 8743,
581
+ 'or': 8744,
582
+ 'cap': 8745,
583
+ 'cup': 8746,
584
+ 'int': 8747,
585
+ 'there4': 8756,
586
+ 'sim': 8764,
587
+ 'cong': 8773,
588
+ 'asymp': 8776,
589
+ 'ne': 8800,
590
+ 'equiv': 8801,
591
+ 'le': 8804,
592
+ 'ge': 8805,
593
+ 'sub': 8834,
594
+ 'sup': 8835,
595
+ 'nsub': 8836,
596
+ 'sube': 8838,
597
+ 'supe': 8839,
598
+ 'oplus': 8853,
599
+ 'otimes': 8855,
600
+ 'perp': 8869,
601
+ 'sdot': 8901,
602
+ 'lceil': 8968,
603
+ 'rceil': 8969,
604
+ 'lfloor': 8970,
605
+ 'rfloor': 8971,
606
+ 'lang': 9001,
607
+ 'rang': 9002,
608
+ 'loz': 9674,
609
+ 'spades': 9824,
610
+ 'clubs': 9827,
611
+ 'hearts': 9829,
612
+ 'diams': 9830
613
+ }
614
+
615
+ Object.keys(sax.ENTITIES).forEach(function (key) {
616
+ var e = sax.ENTITIES[key]
617
+ var s = typeof e === 'number' ? String.fromCharCode(e) : e
618
+ sax.ENTITIES[key] = s
619
+ })
620
+
621
+ for (var s in sax.STATE) {
622
+ sax.STATE[sax.STATE[s]] = s
623
+ }
624
+
625
+ // shorthand
626
+ S = sax.STATE
627
+
628
+ function emit (parser, event, data) {
629
+ parser[event] && parser[event](data)
630
+ }
631
+
632
+ function emitNode (parser, nodeType, data) {
633
+ if (parser.textNode) closeText(parser)
634
+ emit(parser, nodeType, data)
635
+ }
636
+
637
+ function closeText (parser) {
638
+ parser.textNode = textopts(parser.opt, parser.textNode)
639
+ if (parser.textNode) emit(parser, 'ontext', parser.textNode)
640
+ parser.textNode = ''
641
+ }
642
+
643
+ function textopts (opt, text) {
644
+ if (opt.trim) text = text.trim()
645
+ if (opt.normalize) text = text.replace(/\s+/g, ' ')
646
+ return text
647
+ }
648
+
649
+ function error (parser, er) {
650
+ closeText(parser)
651
+ if (parser.trackPosition) {
652
+ er += '\nLine: ' + parser.line +
653
+ '\nColumn: ' + parser.column +
654
+ '\nChar: ' + parser.c
655
+ }
656
+ er = new Error(er)
657
+ parser.error = er
658
+ emit(parser, 'onerror', er)
659
+ return parser
660
+ }
661
+
662
+ function end (parser) {
663
+ if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')
664
+ if ((parser.state !== S.BEGIN) &&
665
+ (parser.state !== S.BEGIN_WHITESPACE) &&
666
+ (parser.state !== S.TEXT)) {
667
+ error(parser, 'Unexpected end')
668
+ }
669
+ closeText(parser)
670
+ parser.c = ''
671
+ parser.closed = true
672
+ emit(parser, 'onend')
673
+ SAXParser.call(parser, parser.strict, parser.opt)
674
+ return parser
675
+ }
676
+
677
+ function strictFail (parser, message) {
678
+ if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {
679
+ throw new Error('bad call to strictFail')
680
+ }
681
+ if (parser.strict) {
682
+ error(parser, message)
683
+ }
684
+ }
685
+
686
+ function newTag (parser) {
687
+ if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
688
+ var parent = parser.tags[parser.tags.length - 1] || parser
689
+ var tag = parser.tag = { name: parser.tagName, attributes: {} }
690
+
691
+ // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
692
+ if (parser.opt.xmlns) {
693
+ tag.ns = parent.ns
694
+ }
695
+ parser.attribList.length = 0
696
+ emitNode(parser, 'onopentagstart', tag)
697
+ }
698
+
699
+ function qname (name, attribute) {
700
+ var i = name.indexOf(':')
701
+ var qualName = i < 0 ? [ '', name ] : name.split(':')
702
+ var prefix = qualName[0]
703
+ var local = qualName[1]
704
+
705
+ // <x "xmlns"="http://foo">
706
+ if (attribute && name === 'xmlns') {
707
+ prefix = 'xmlns'
708
+ local = ''
709
+ }
710
+
711
+ return { prefix: prefix, local: local }
712
+ }
713
+
714
+ function attrib (parser) {
715
+ if (!parser.strict) {
716
+ parser.attribName = parser.attribName[parser.looseCase]()
717
+ }
718
+
719
+ if (parser.attribList.indexOf(parser.attribName) !== -1 ||
720
+ parser.tag.attributes.hasOwnProperty(parser.attribName)) {
721
+ parser.attribName = parser.attribValue = ''
722
+ return
723
+ }
724
+
725
+ if (parser.opt.xmlns) {
726
+ var qn = qname(parser.attribName, true)
727
+ var prefix = qn.prefix
728
+ var local = qn.local
729
+
730
+ if (prefix === 'xmlns') {
731
+ // namespace binding attribute. push the binding into scope
732
+ if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {
733
+ strictFail(parser,
734
+ 'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' +
735
+ 'Actual: ' + parser.attribValue)
736
+ } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {
737
+ strictFail(parser,
738
+ 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' +
739
+ 'Actual: ' + parser.attribValue)
740
+ } else {
741
+ var tag = parser.tag
742
+ var parent = parser.tags[parser.tags.length - 1] || parser
743
+ if (tag.ns === parent.ns) {
744
+ tag.ns = Object.create(parent.ns)
745
+ }
746
+ tag.ns[local] = parser.attribValue
747
+ }
748
+ }
749
+
750
+ // defer onattribute events until all attributes have been seen
751
+ // so any new bindings can take effect. preserve attribute order
752
+ // so deferred events can be emitted in document order
753
+ parser.attribList.push([parser.attribName, parser.attribValue])
754
+ } else {
755
+ // in non-xmlns mode, we can emit the event right away
756
+ parser.tag.attributes[parser.attribName] = parser.attribValue
757
+ emitNode(parser, 'onattribute', {
758
+ name: parser.attribName,
759
+ value: parser.attribValue
760
+ })
761
+ }
762
+
763
+ parser.attribName = parser.attribValue = ''
764
+ }
765
+
766
+ function openTag (parser, selfClosing) {
767
+ if (parser.opt.xmlns) {
768
+ // emit namespace binding events
769
+ var tag = parser.tag
770
+
771
+ // add namespace info to tag
772
+ var qn = qname(parser.tagName)
773
+ tag.prefix = qn.prefix
774
+ tag.local = qn.local
775
+ tag.uri = tag.ns[qn.prefix] || ''
776
+
777
+ if (tag.prefix && !tag.uri) {
778
+ strictFail(parser, 'Unbound namespace prefix: ' +
779
+ JSON.stringify(parser.tagName))
780
+ tag.uri = qn.prefix
781
+ }
782
+
783
+ var parent = parser.tags[parser.tags.length - 1] || parser
784
+ if (tag.ns && parent.ns !== tag.ns) {
785
+ Object.keys(tag.ns).forEach(function (p) {
786
+ emitNode(parser, 'onopennamespace', {
787
+ prefix: p,
788
+ uri: tag.ns[p]
789
+ })
790
+ })
791
+ }
792
+
793
+ // handle deferred onattribute events
794
+ // Note: do not apply default ns to attributes:
795
+ // http://www.w3.org/TR/REC-xml-names/#defaulting
796
+ for (var i = 0, l = parser.attribList.length; i < l; i++) {
797
+ var nv = parser.attribList[i]
798
+ var name = nv[0]
799
+ var value = nv[1]
800
+ var qualName = qname(name, true)
801
+ var prefix = qualName.prefix
802
+ var local = qualName.local
803
+ var uri = prefix === '' ? '' : (tag.ns[prefix] || '')
804
+ var a = {
805
+ name: name,
806
+ value: value,
807
+ prefix: prefix,
808
+ local: local,
809
+ uri: uri
810
+ }
811
+
812
+ // if there's any attributes with an undefined namespace,
813
+ // then fail on them now.
814
+ if (prefix && prefix !== 'xmlns' && !uri) {
815
+ strictFail(parser, 'Unbound namespace prefix: ' +
816
+ JSON.stringify(prefix))
817
+ a.uri = prefix
818
+ }
819
+ parser.tag.attributes[name] = a
820
+ emitNode(parser, 'onattribute', a)
821
+ }
822
+ parser.attribList.length = 0
823
+ }
824
+
825
+ parser.tag.isSelfClosing = !!selfClosing
826
+
827
+ // process the tag
828
+ parser.sawRoot = true
829
+ parser.tags.push(parser.tag)
830
+ emitNode(parser, 'onopentag', parser.tag)
831
+ if (!selfClosing) {
832
+ // special case for <script> in non-strict mode.
833
+ if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {
834
+ parser.state = S.SCRIPT
835
+ } else {
836
+ parser.state = S.TEXT
837
+ }
838
+ parser.tag = null
839
+ parser.tagName = ''
840
+ }
841
+ parser.attribName = parser.attribValue = ''
842
+ parser.attribList.length = 0
843
+ }
844
+
845
+ function closeTag (parser) {
846
+ if (!parser.tagName) {
847
+ strictFail(parser, 'Weird empty close tag.')
848
+ parser.textNode += '</>'
849
+ parser.state = S.TEXT
850
+ return
851
+ }
852
+
853
+ if (parser.script) {
854
+ if (parser.tagName !== 'script') {
855
+ parser.script += '</' + parser.tagName + '>'
856
+ parser.tagName = ''
857
+ parser.state = S.SCRIPT
858
+ return
859
+ }
860
+ emitNode(parser, 'onscript', parser.script)
861
+ parser.script = ''
862
+ }
863
+
864
+ // first make sure that the closing tag actually exists.
865
+ // <a><b></c></b></a> will close everything, otherwise.
866
+ var t = parser.tags.length
867
+ var tagName = parser.tagName
868
+ if (!parser.strict) {
869
+ tagName = tagName[parser.looseCase]()
870
+ }
871
+ var closeTo = tagName
872
+ while (t--) {
873
+ var close = parser.tags[t]
874
+ if (close.name !== closeTo) {
875
+ // fail the first time in strict mode
876
+ strictFail(parser, 'Unexpected close tag')
877
+ } else {
878
+ break
879
+ }
880
+ }
881
+
882
+ // didn't find it. we already failed for strict, so just abort.
883
+ if (t < 0) {
884
+ strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)
885
+ parser.textNode += '</' + parser.tagName + '>'
886
+ parser.state = S.TEXT
887
+ return
888
+ }
889
+ parser.tagName = tagName
890
+ var s = parser.tags.length
891
+ while (s-- > t) {
892
+ var tag = parser.tag = parser.tags.pop()
893
+ parser.tagName = parser.tag.name
894
+ emitNode(parser, 'onclosetag', parser.tagName)
895
+
896
+ var x = {}
897
+ for (var i in tag.ns) {
898
+ x[i] = tag.ns[i]
899
+ }
900
+
901
+ var parent = parser.tags[parser.tags.length - 1] || parser
902
+ if (parser.opt.xmlns && tag.ns !== parent.ns) {
903
+ // remove namespace bindings introduced by tag
904
+ Object.keys(tag.ns).forEach(function (p) {
905
+ var n = tag.ns[p]
906
+ emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })
907
+ })
908
+ }
909
+ }
910
+ if (t === 0) parser.closedRoot = true
911
+ parser.tagName = parser.attribValue = parser.attribName = ''
912
+ parser.attribList.length = 0
913
+ parser.state = S.TEXT
914
+ }
915
+
916
+ function parseEntity (parser) {
917
+ var entity = parser.entity
918
+ var entityLC = entity.toLowerCase()
919
+ var num
920
+ var numStr = ''
921
+
922
+ if (parser.ENTITIES[entity]) {
923
+ return parser.ENTITIES[entity]
924
+ }
925
+ if (parser.ENTITIES[entityLC]) {
926
+ return parser.ENTITIES[entityLC]
927
+ }
928
+ entity = entityLC
929
+ if (entity.charAt(0) === '#') {
930
+ if (entity.charAt(1) === 'x') {
931
+ entity = entity.slice(2)
932
+ num = parseInt(entity, 16)
933
+ numStr = num.toString(16)
934
+ } else {
935
+ entity = entity.slice(1)
936
+ num = parseInt(entity, 10)
937
+ numStr = num.toString(10)
938
+ }
939
+ }
940
+ entity = entity.replace(/^0+/, '')
941
+ if (isNaN(num) || numStr.toLowerCase() !== entity) {
942
+ strictFail(parser, 'Invalid character entity')
943
+ return '&' + parser.entity + ';'
944
+ }
945
+
946
+ return String.fromCodePoint(num)
947
+ }
948
+
949
+ function beginWhiteSpace (parser, c) {
950
+ if (c === '<') {
951
+ parser.state = S.OPEN_WAKA
952
+ parser.startTagPosition = parser.position
953
+ } else if (!isWhitespace(c)) {
954
+ // have to process this as a text node.
955
+ // weird, but happens.
956
+ strictFail(parser, 'Non-whitespace before first tag.')
957
+ parser.textNode = c
958
+ parser.state = S.TEXT
959
+ }
960
+ }
961
+
962
+ function charAt (chunk, i) {
963
+ var result = ''
964
+ if (i < chunk.length) {
965
+ result = chunk.charAt(i)
966
+ }
967
+ return result
968
+ }
969
+
970
+ function write (chunk) {
971
+ var parser = this
972
+ if (this.error) {
973
+ throw this.error
974
+ }
975
+ if (parser.closed) {
976
+ return error(parser,
977
+ 'Cannot write after close. Assign an onready handler.')
978
+ }
979
+ if (chunk === null) {
980
+ return end(parser)
981
+ }
982
+ if (typeof chunk === 'object') {
983
+ chunk = chunk.toString()
984
+ }
985
+ var i = 0
986
+ var c = ''
987
+ while (true) {
988
+ c = charAt(chunk, i++)
989
+ parser.c = c
990
+
991
+ if (!c) {
992
+ break
993
+ }
994
+
995
+ if (parser.trackPosition) {
996
+ parser.position++
997
+ if (c === '\n') {
998
+ parser.line++
999
+ parser.column = 0
1000
+ } else {
1001
+ parser.column++
1002
+ }
1003
+ }
1004
+
1005
+ switch (parser.state) {
1006
+ case S.BEGIN:
1007
+ parser.state = S.BEGIN_WHITESPACE
1008
+ if (c === '\uFEFF') {
1009
+ continue
1010
+ }
1011
+ beginWhiteSpace(parser, c)
1012
+ continue
1013
+
1014
+ case S.BEGIN_WHITESPACE:
1015
+ beginWhiteSpace(parser, c)
1016
+ continue
1017
+
1018
+ case S.TEXT:
1019
+ if (parser.sawRoot && !parser.closedRoot) {
1020
+ var starti = i - 1
1021
+ while (c && c !== '<' && c !== '&') {
1022
+ c = charAt(chunk, i++)
1023
+ if (c && parser.trackPosition) {
1024
+ parser.position++
1025
+ if (c === '\n') {
1026
+ parser.line++
1027
+ parser.column = 0
1028
+ } else {
1029
+ parser.column++
1030
+ }
1031
+ }
1032
+ }
1033
+ parser.textNode += chunk.substring(starti, i - 1)
1034
+ }
1035
+ if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
1036
+ parser.state = S.OPEN_WAKA
1037
+ parser.startTagPosition = parser.position
1038
+ } else {
1039
+ if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
1040
+ strictFail(parser, 'Text data outside of root node.')
1041
+ }
1042
+ if (c === '&') {
1043
+ parser.state = S.TEXT_ENTITY
1044
+ } else {
1045
+ parser.textNode += c
1046
+ }
1047
+ }
1048
+ continue
1049
+
1050
+ case S.SCRIPT:
1051
+ // only non-strict
1052
+ if (c === '<') {
1053
+ parser.state = S.SCRIPT_ENDING
1054
+ } else {
1055
+ parser.script += c
1056
+ }
1057
+ continue
1058
+
1059
+ case S.SCRIPT_ENDING:
1060
+ if (c === '/') {
1061
+ parser.state = S.CLOSE_TAG
1062
+ } else {
1063
+ parser.script += '<' + c
1064
+ parser.state = S.SCRIPT
1065
+ }
1066
+ continue
1067
+
1068
+ case S.OPEN_WAKA:
1069
+ // either a /, ?, !, or text is coming next.
1070
+ if (c === '!') {
1071
+ parser.state = S.SGML_DECL
1072
+ parser.sgmlDecl = ''
1073
+ } else if (isWhitespace(c)) {
1074
+ // wait for it...
1075
+ } else if (isMatch(nameStart, c)) {
1076
+ parser.state = S.OPEN_TAG
1077
+ parser.tagName = c
1078
+ } else if (c === '/') {
1079
+ parser.state = S.CLOSE_TAG
1080
+ parser.tagName = ''
1081
+ } else if (c === '?') {
1082
+ parser.state = S.PROC_INST
1083
+ parser.procInstName = parser.procInstBody = ''
1084
+ } else {
1085
+ strictFail(parser, 'Unencoded <')
1086
+ // if there was some whitespace, then add that in.
1087
+ if (parser.startTagPosition + 1 < parser.position) {
1088
+ var pad = parser.position - parser.startTagPosition
1089
+ c = new Array(pad).join(' ') + c
1090
+ }
1091
+ parser.textNode += '<' + c
1092
+ parser.state = S.TEXT
1093
+ }
1094
+ continue
1095
+
1096
+ case S.SGML_DECL:
1097
+ if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
1098
+ emitNode(parser, 'onopencdata')
1099
+ parser.state = S.CDATA
1100
+ parser.sgmlDecl = ''
1101
+ parser.cdata = ''
1102
+ } else if (parser.sgmlDecl + c === '--') {
1103
+ parser.state = S.COMMENT
1104
+ parser.comment = ''
1105
+ parser.sgmlDecl = ''
1106
+ } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
1107
+ parser.state = S.DOCTYPE
1108
+ if (parser.doctype || parser.sawRoot) {
1109
+ strictFail(parser,
1110
+ 'Inappropriately located doctype declaration')
1111
+ }
1112
+ parser.doctype = ''
1113
+ parser.sgmlDecl = ''
1114
+ } else if (c === '>') {
1115
+ emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)
1116
+ parser.sgmlDecl = ''
1117
+ parser.state = S.TEXT
1118
+ } else if (isQuote(c)) {
1119
+ parser.state = S.SGML_DECL_QUOTED
1120
+ parser.sgmlDecl += c
1121
+ } else {
1122
+ parser.sgmlDecl += c
1123
+ }
1124
+ continue
1125
+
1126
+ case S.SGML_DECL_QUOTED:
1127
+ if (c === parser.q) {
1128
+ parser.state = S.SGML_DECL
1129
+ parser.q = ''
1130
+ }
1131
+ parser.sgmlDecl += c
1132
+ continue
1133
+
1134
+ case S.DOCTYPE:
1135
+ if (c === '>') {
1136
+ parser.state = S.TEXT
1137
+ emitNode(parser, 'ondoctype', parser.doctype)
1138
+ parser.doctype = true // just remember that we saw it.
1139
+ } else {
1140
+ parser.doctype += c
1141
+ if (c === '[') {
1142
+ parser.state = S.DOCTYPE_DTD
1143
+ } else if (isQuote(c)) {
1144
+ parser.state = S.DOCTYPE_QUOTED
1145
+ parser.q = c
1146
+ }
1147
+ }
1148
+ continue
1149
+
1150
+ case S.DOCTYPE_QUOTED:
1151
+ parser.doctype += c
1152
+ if (c === parser.q) {
1153
+ parser.q = ''
1154
+ parser.state = S.DOCTYPE
1155
+ }
1156
+ continue
1157
+
1158
+ case S.DOCTYPE_DTD:
1159
+ parser.doctype += c
1160
+ if (c === ']') {
1161
+ parser.state = S.DOCTYPE
1162
+ } else if (isQuote(c)) {
1163
+ parser.state = S.DOCTYPE_DTD_QUOTED
1164
+ parser.q = c
1165
+ }
1166
+ continue
1167
+
1168
+ case S.DOCTYPE_DTD_QUOTED:
1169
+ parser.doctype += c
1170
+ if (c === parser.q) {
1171
+ parser.state = S.DOCTYPE_DTD
1172
+ parser.q = ''
1173
+ }
1174
+ continue
1175
+
1176
+ case S.COMMENT:
1177
+ if (c === '-') {
1178
+ parser.state = S.COMMENT_ENDING
1179
+ } else {
1180
+ parser.comment += c
1181
+ }
1182
+ continue
1183
+
1184
+ case S.COMMENT_ENDING:
1185
+ if (c === '-') {
1186
+ parser.state = S.COMMENT_ENDED
1187
+ parser.comment = textopts(parser.opt, parser.comment)
1188
+ if (parser.comment) {
1189
+ emitNode(parser, 'oncomment', parser.comment)
1190
+ }
1191
+ parser.comment = ''
1192
+ } else {
1193
+ parser.comment += '-' + c
1194
+ parser.state = S.COMMENT
1195
+ }
1196
+ continue
1197
+
1198
+ case S.COMMENT_ENDED:
1199
+ if (c !== '>') {
1200
+ strictFail(parser, 'Malformed comment')
1201
+ // allow <!-- blah -- bloo --> in non-strict mode,
1202
+ // which is a comment of " blah -- bloo "
1203
+ parser.comment += '--' + c
1204
+ parser.state = S.COMMENT
1205
+ } else {
1206
+ parser.state = S.TEXT
1207
+ }
1208
+ continue
1209
+
1210
+ case S.CDATA:
1211
+ if (c === ']') {
1212
+ parser.state = S.CDATA_ENDING
1213
+ } else {
1214
+ parser.cdata += c
1215
+ }
1216
+ continue
1217
+
1218
+ case S.CDATA_ENDING:
1219
+ if (c === ']') {
1220
+ parser.state = S.CDATA_ENDING_2
1221
+ } else {
1222
+ parser.cdata += ']' + c
1223
+ parser.state = S.CDATA
1224
+ }
1225
+ continue
1226
+
1227
+ case S.CDATA_ENDING_2:
1228
+ if (c === '>') {
1229
+ if (parser.cdata) {
1230
+ emitNode(parser, 'oncdata', parser.cdata)
1231
+ }
1232
+ emitNode(parser, 'onclosecdata')
1233
+ parser.cdata = ''
1234
+ parser.state = S.TEXT
1235
+ } else if (c === ']') {
1236
+ parser.cdata += ']'
1237
+ } else {
1238
+ parser.cdata += ']]' + c
1239
+ parser.state = S.CDATA
1240
+ }
1241
+ continue
1242
+
1243
+ case S.PROC_INST:
1244
+ if (c === '?') {
1245
+ parser.state = S.PROC_INST_ENDING
1246
+ } else if (isWhitespace(c)) {
1247
+ parser.state = S.PROC_INST_BODY
1248
+ } else {
1249
+ parser.procInstName += c
1250
+ }
1251
+ continue
1252
+
1253
+ case S.PROC_INST_BODY:
1254
+ if (!parser.procInstBody && isWhitespace(c)) {
1255
+ continue
1256
+ } else if (c === '?') {
1257
+ parser.state = S.PROC_INST_ENDING
1258
+ } else {
1259
+ parser.procInstBody += c
1260
+ }
1261
+ continue
1262
+
1263
+ case S.PROC_INST_ENDING:
1264
+ if (c === '>') {
1265
+ emitNode(parser, 'onprocessinginstruction', {
1266
+ name: parser.procInstName,
1267
+ body: parser.procInstBody
1268
+ })
1269
+ parser.procInstName = parser.procInstBody = ''
1270
+ parser.state = S.TEXT
1271
+ } else {
1272
+ parser.procInstBody += '?' + c
1273
+ parser.state = S.PROC_INST_BODY
1274
+ }
1275
+ continue
1276
+
1277
+ case S.OPEN_TAG:
1278
+ if (isMatch(nameBody, c)) {
1279
+ parser.tagName += c
1280
+ } else {
1281
+ newTag(parser)
1282
+ if (c === '>') {
1283
+ openTag(parser)
1284
+ } else if (c === '/') {
1285
+ parser.state = S.OPEN_TAG_SLASH
1286
+ } else {
1287
+ if (!isWhitespace(c)) {
1288
+ strictFail(parser, 'Invalid character in tag name')
1289
+ }
1290
+ parser.state = S.ATTRIB
1291
+ }
1292
+ }
1293
+ continue
1294
+
1295
+ case S.OPEN_TAG_SLASH:
1296
+ if (c === '>') {
1297
+ openTag(parser, true)
1298
+ closeTag(parser)
1299
+ } else {
1300
+ strictFail(parser, 'Forward-slash in opening tag not followed by >')
1301
+ parser.state = S.ATTRIB
1302
+ }
1303
+ continue
1304
+
1305
+ case S.ATTRIB:
1306
+ // haven't read the attribute name yet.
1307
+ if (isWhitespace(c)) {
1308
+ continue
1309
+ } else if (c === '>') {
1310
+ openTag(parser)
1311
+ } else if (c === '/') {
1312
+ parser.state = S.OPEN_TAG_SLASH
1313
+ } else if (isMatch(nameStart, c)) {
1314
+ parser.attribName = c
1315
+ parser.attribValue = ''
1316
+ parser.state = S.ATTRIB_NAME
1317
+ } else {
1318
+ strictFail(parser, 'Invalid attribute name')
1319
+ }
1320
+ continue
1321
+
1322
+ case S.ATTRIB_NAME:
1323
+ if (c === '=') {
1324
+ parser.state = S.ATTRIB_VALUE
1325
+ } else if (c === '>') {
1326
+ strictFail(parser, 'Attribute without value')
1327
+ parser.attribValue = parser.attribName
1328
+ attrib(parser)
1329
+ openTag(parser)
1330
+ } else if (isWhitespace(c)) {
1331
+ parser.state = S.ATTRIB_NAME_SAW_WHITE
1332
+ } else if (isMatch(nameBody, c)) {
1333
+ parser.attribName += c
1334
+ } else {
1335
+ strictFail(parser, 'Invalid attribute name')
1336
+ }
1337
+ continue
1338
+
1339
+ case S.ATTRIB_NAME_SAW_WHITE:
1340
+ if (c === '=') {
1341
+ parser.state = S.ATTRIB_VALUE
1342
+ } else if (isWhitespace(c)) {
1343
+ continue
1344
+ } else {
1345
+ strictFail(parser, 'Attribute without value')
1346
+ parser.tag.attributes[parser.attribName] = ''
1347
+ parser.attribValue = ''
1348
+ emitNode(parser, 'onattribute', {
1349
+ name: parser.attribName,
1350
+ value: ''
1351
+ })
1352
+ parser.attribName = ''
1353
+ if (c === '>') {
1354
+ openTag(parser)
1355
+ } else if (isMatch(nameStart, c)) {
1356
+ parser.attribName = c
1357
+ parser.state = S.ATTRIB_NAME
1358
+ } else {
1359
+ strictFail(parser, 'Invalid attribute name')
1360
+ parser.state = S.ATTRIB
1361
+ }
1362
+ }
1363
+ continue
1364
+
1365
+ case S.ATTRIB_VALUE:
1366
+ if (isWhitespace(c)) {
1367
+ continue
1368
+ } else if (isQuote(c)) {
1369
+ parser.q = c
1370
+ parser.state = S.ATTRIB_VALUE_QUOTED
1371
+ } else {
1372
+ strictFail(parser, 'Unquoted attribute value')
1373
+ parser.state = S.ATTRIB_VALUE_UNQUOTED
1374
+ parser.attribValue = c
1375
+ }
1376
+ continue
1377
+
1378
+ case S.ATTRIB_VALUE_QUOTED:
1379
+ if (c !== parser.q) {
1380
+ if (c === '&') {
1381
+ parser.state = S.ATTRIB_VALUE_ENTITY_Q
1382
+ } else {
1383
+ parser.attribValue += c
1384
+ }
1385
+ continue
1386
+ }
1387
+ attrib(parser)
1388
+ parser.q = ''
1389
+ parser.state = S.ATTRIB_VALUE_CLOSED
1390
+ continue
1391
+
1392
+ case S.ATTRIB_VALUE_CLOSED:
1393
+ if (isWhitespace(c)) {
1394
+ parser.state = S.ATTRIB
1395
+ } else if (c === '>') {
1396
+ openTag(parser)
1397
+ } else if (c === '/') {
1398
+ parser.state = S.OPEN_TAG_SLASH
1399
+ } else if (isMatch(nameStart, c)) {
1400
+ strictFail(parser, 'No whitespace between attributes')
1401
+ parser.attribName = c
1402
+ parser.attribValue = ''
1403
+ parser.state = S.ATTRIB_NAME
1404
+ } else {
1405
+ strictFail(parser, 'Invalid attribute name')
1406
+ }
1407
+ continue
1408
+
1409
+ case S.ATTRIB_VALUE_UNQUOTED:
1410
+ if (!isAttribEnd(c)) {
1411
+ if (c === '&') {
1412
+ parser.state = S.ATTRIB_VALUE_ENTITY_U
1413
+ } else {
1414
+ parser.attribValue += c
1415
+ }
1416
+ continue
1417
+ }
1418
+ attrib(parser)
1419
+ if (c === '>') {
1420
+ openTag(parser)
1421
+ } else {
1422
+ parser.state = S.ATTRIB
1423
+ }
1424
+ continue
1425
+
1426
+ case S.CLOSE_TAG:
1427
+ if (!parser.tagName) {
1428
+ if (isWhitespace(c)) {
1429
+ continue
1430
+ } else if (notMatch(nameStart, c)) {
1431
+ if (parser.script) {
1432
+ parser.script += '</' + c
1433
+ parser.state = S.SCRIPT
1434
+ } else {
1435
+ strictFail(parser, 'Invalid tagname in closing tag.')
1436
+ }
1437
+ } else {
1438
+ parser.tagName = c
1439
+ }
1440
+ } else if (c === '>') {
1441
+ closeTag(parser)
1442
+ } else if (isMatch(nameBody, c)) {
1443
+ parser.tagName += c
1444
+ } else if (parser.script) {
1445
+ parser.script += '</' + parser.tagName
1446
+ parser.tagName = ''
1447
+ parser.state = S.SCRIPT
1448
+ } else {
1449
+ if (!isWhitespace(c)) {
1450
+ strictFail(parser, 'Invalid tagname in closing tag')
1451
+ }
1452
+ parser.state = S.CLOSE_TAG_SAW_WHITE
1453
+ }
1454
+ continue
1455
+
1456
+ case S.CLOSE_TAG_SAW_WHITE:
1457
+ if (isWhitespace(c)) {
1458
+ continue
1459
+ }
1460
+ if (c === '>') {
1461
+ closeTag(parser)
1462
+ } else {
1463
+ strictFail(parser, 'Invalid characters in closing tag')
1464
+ }
1465
+ continue
1466
+
1467
+ case S.TEXT_ENTITY:
1468
+ case S.ATTRIB_VALUE_ENTITY_Q:
1469
+ case S.ATTRIB_VALUE_ENTITY_U:
1470
+ var returnState
1471
+ var buffer
1472
+ switch (parser.state) {
1473
+ case S.TEXT_ENTITY:
1474
+ returnState = S.TEXT
1475
+ buffer = 'textNode'
1476
+ break
1477
+
1478
+ case S.ATTRIB_VALUE_ENTITY_Q:
1479
+ returnState = S.ATTRIB_VALUE_QUOTED
1480
+ buffer = 'attribValue'
1481
+ break
1482
+
1483
+ case S.ATTRIB_VALUE_ENTITY_U:
1484
+ returnState = S.ATTRIB_VALUE_UNQUOTED
1485
+ buffer = 'attribValue'
1486
+ break
1487
+ }
1488
+
1489
+ if (c === ';') {
1490
+ parser[buffer] += parseEntity(parser)
1491
+ parser.entity = ''
1492
+ parser.state = returnState
1493
+ } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
1494
+ parser.entity += c
1495
+ } else {
1496
+ strictFail(parser, 'Invalid character in entity name')
1497
+ parser[buffer] += '&' + parser.entity + c
1498
+ parser.entity = ''
1499
+ parser.state = returnState
1500
+ }
1501
+
1502
+ continue
1503
+
1504
+ default:
1505
+ throw new Error(parser, 'Unknown state: ' + parser.state)
1506
+ }
1507
+ } // while
1508
+
1509
+ if (parser.position >= parser.bufferCheckPosition) {
1510
+ checkBufferLength(parser)
1511
+ }
1512
+ return parser
1513
+ }
1514
+
1515
+ /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
1516
+ /* istanbul ignore next */
1517
+ if (!String.fromCodePoint) {
1518
+ (function () {
1519
+ var stringFromCharCode = String.fromCharCode
1520
+ var floor = Math.floor
1521
+ var fromCodePoint = function () {
1522
+ var MAX_SIZE = 0x4000
1523
+ var codeUnits = []
1524
+ var highSurrogate
1525
+ var lowSurrogate
1526
+ var index = -1
1527
+ var length = arguments.length
1528
+ if (!length) {
1529
+ return ''
1530
+ }
1531
+ var result = ''
1532
+ while (++index < length) {
1533
+ var codePoint = Number(arguments[index])
1534
+ if (
1535
+ !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
1536
+ codePoint < 0 || // not a valid Unicode code point
1537
+ codePoint > 0x10FFFF || // not a valid Unicode code point
1538
+ floor(codePoint) !== codePoint // not an integer
1539
+ ) {
1540
+ throw RangeError('Invalid code point: ' + codePoint)
1541
+ }
1542
+ if (codePoint <= 0xFFFF) { // BMP code point
1543
+ codeUnits.push(codePoint)
1544
+ } else { // Astral code point; split in surrogate halves
1545
+ // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
1546
+ codePoint -= 0x10000
1547
+ highSurrogate = (codePoint >> 10) + 0xD800
1548
+ lowSurrogate = (codePoint % 0x400) + 0xDC00
1549
+ codeUnits.push(highSurrogate, lowSurrogate)
1550
+ }
1551
+ if (index + 1 === length || codeUnits.length > MAX_SIZE) {
1552
+ result += stringFromCharCode.apply(null, codeUnits)
1553
+ codeUnits.length = 0
1554
+ }
1555
+ }
1556
+ return result
1557
+ }
1558
+ /* istanbul ignore next */
1559
+ if (Object.defineProperty) {
1560
+ Object.defineProperty(String, 'fromCodePoint', {
1561
+ value: fromCodePoint,
1562
+ configurable: true,
1563
+ writable: true
1564
+ })
1565
+ } else {
1566
+ String.fromCodePoint = fromCodePoint
1567
+ }
1568
+ }())
1569
+ }
1570
+ })( false ? undefined : exports)
1571
+
1572
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("b639").Buffer))
1573
+
1574
+ /***/ })
1575
+
1576
+ }]);