youtube-downloader-by-ahmad 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (759) hide show
  1. package/.bin/sshpk-conv +12 -0
  2. package/.bin/sshpk-conv.cmd +17 -0
  3. package/.bin/sshpk-conv.ps1 +28 -0
  4. package/.bin/sshpk-sign +12 -0
  5. package/.bin/sshpk-sign.cmd +17 -0
  6. package/.bin/sshpk-sign.ps1 +28 -0
  7. package/.bin/sshpk-verify +12 -0
  8. package/.bin/sshpk-verify.cmd +17 -0
  9. package/.bin/sshpk-verify.ps1 +28 -0
  10. package/.bin/uuid +12 -0
  11. package/.bin/uuid.cmd +17 -0
  12. package/.bin/uuid.ps1 +28 -0
  13. package/ajv/.tonic_example.js +20 -0
  14. package/ajv/LICENSE +22 -0
  15. package/ajv/README.md +1497 -0
  16. package/ajv/dist/ajv.bundle.js +7189 -0
  17. package/ajv/dist/ajv.min.js +3 -0
  18. package/ajv/dist/ajv.min.js.map +1 -0
  19. package/ajv/lib/ajv.d.ts +397 -0
  20. package/ajv/lib/ajv.js +506 -0
  21. package/ajv/lib/cache.js +26 -0
  22. package/ajv/lib/compile/async.js +90 -0
  23. package/ajv/lib/compile/equal.js +5 -0
  24. package/ajv/lib/compile/error_classes.js +34 -0
  25. package/ajv/lib/compile/formats.js +142 -0
  26. package/ajv/lib/compile/index.js +387 -0
  27. package/ajv/lib/compile/resolve.js +270 -0
  28. package/ajv/lib/compile/rules.js +66 -0
  29. package/ajv/lib/compile/schema_obj.js +9 -0
  30. package/ajv/lib/compile/ucs2length.js +20 -0
  31. package/ajv/lib/compile/util.js +239 -0
  32. package/ajv/lib/data.js +49 -0
  33. package/ajv/lib/definition_schema.js +37 -0
  34. package/ajv/lib/dot/_limit.jst +113 -0
  35. package/ajv/lib/dot/_limitItems.jst +12 -0
  36. package/ajv/lib/dot/_limitLength.jst +12 -0
  37. package/ajv/lib/dot/_limitProperties.jst +12 -0
  38. package/ajv/lib/dot/allOf.jst +32 -0
  39. package/ajv/lib/dot/anyOf.jst +46 -0
  40. package/ajv/lib/dot/coerce.def +51 -0
  41. package/ajv/lib/dot/comment.jst +9 -0
  42. package/ajv/lib/dot/const.jst +11 -0
  43. package/ajv/lib/dot/contains.jst +55 -0
  44. package/ajv/lib/dot/custom.jst +191 -0
  45. package/ajv/lib/dot/defaults.def +47 -0
  46. package/ajv/lib/dot/definitions.def +203 -0
  47. package/ajv/lib/dot/dependencies.jst +79 -0
  48. package/ajv/lib/dot/enum.jst +30 -0
  49. package/ajv/lib/dot/errors.def +194 -0
  50. package/ajv/lib/dot/format.jst +106 -0
  51. package/ajv/lib/dot/if.jst +73 -0
  52. package/ajv/lib/dot/items.jst +98 -0
  53. package/ajv/lib/dot/missing.def +39 -0
  54. package/ajv/lib/dot/multipleOf.jst +22 -0
  55. package/ajv/lib/dot/not.jst +43 -0
  56. package/ajv/lib/dot/oneOf.jst +54 -0
  57. package/ajv/lib/dot/pattern.jst +14 -0
  58. package/ajv/lib/dot/properties.jst +245 -0
  59. package/ajv/lib/dot/propertyNames.jst +52 -0
  60. package/ajv/lib/dot/ref.jst +85 -0
  61. package/ajv/lib/dot/required.jst +108 -0
  62. package/ajv/lib/dot/uniqueItems.jst +62 -0
  63. package/ajv/lib/dot/validate.jst +276 -0
  64. package/ajv/lib/dotjs/README.md +3 -0
  65. package/ajv/lib/dotjs/_limit.js +163 -0
  66. package/ajv/lib/dotjs/_limitItems.js +80 -0
  67. package/ajv/lib/dotjs/_limitLength.js +85 -0
  68. package/ajv/lib/dotjs/_limitProperties.js +80 -0
  69. package/ajv/lib/dotjs/allOf.js +42 -0
  70. package/ajv/lib/dotjs/anyOf.js +73 -0
  71. package/ajv/lib/dotjs/comment.js +14 -0
  72. package/ajv/lib/dotjs/const.js +56 -0
  73. package/ajv/lib/dotjs/contains.js +81 -0
  74. package/ajv/lib/dotjs/custom.js +228 -0
  75. package/ajv/lib/dotjs/dependencies.js +168 -0
  76. package/ajv/lib/dotjs/enum.js +66 -0
  77. package/ajv/lib/dotjs/format.js +150 -0
  78. package/ajv/lib/dotjs/if.js +103 -0
  79. package/ajv/lib/dotjs/index.js +33 -0
  80. package/ajv/lib/dotjs/items.js +140 -0
  81. package/ajv/lib/dotjs/multipleOf.js +80 -0
  82. package/ajv/lib/dotjs/not.js +84 -0
  83. package/ajv/lib/dotjs/oneOf.js +73 -0
  84. package/ajv/lib/dotjs/pattern.js +75 -0
  85. package/ajv/lib/dotjs/properties.js +335 -0
  86. package/ajv/lib/dotjs/propertyNames.js +81 -0
  87. package/ajv/lib/dotjs/ref.js +124 -0
  88. package/ajv/lib/dotjs/required.js +270 -0
  89. package/ajv/lib/dotjs/uniqueItems.js +86 -0
  90. package/ajv/lib/dotjs/validate.js +482 -0
  91. package/ajv/lib/keyword.js +146 -0
  92. package/ajv/lib/refs/data.json +17 -0
  93. package/ajv/lib/refs/json-schema-draft-04.json +149 -0
  94. package/ajv/lib/refs/json-schema-draft-06.json +154 -0
  95. package/ajv/lib/refs/json-schema-draft-07.json +168 -0
  96. package/ajv/lib/refs/json-schema-secure.json +94 -0
  97. package/ajv/package.json +81 -0
  98. package/ajv/scripts/.eslintrc.yml +3 -0
  99. package/ajv/scripts/bundle.js +61 -0
  100. package/ajv/scripts/compile-dots.js +73 -0
  101. package/ajv/scripts/info +10 -0
  102. package/ajv/scripts/prepare-tests +12 -0
  103. package/ajv/scripts/publish-built-version +32 -0
  104. package/ajv/scripts/travis-gh-pages +23 -0
  105. package/asn1/Jenkinsfile +65 -0
  106. package/asn1/LICENSE +19 -0
  107. package/asn1/README.md +50 -0
  108. package/asn1/lib/ber/errors.js +13 -0
  109. package/asn1/lib/ber/index.js +27 -0
  110. package/asn1/lib/ber/reader.js +262 -0
  111. package/asn1/lib/ber/types.js +36 -0
  112. package/asn1/lib/ber/writer.js +317 -0
  113. package/asn1/lib/index.js +20 -0
  114. package/asn1/package.json +26 -0
  115. package/assert-plus/AUTHORS +6 -0
  116. package/assert-plus/CHANGES.md +14 -0
  117. package/assert-plus/README.md +162 -0
  118. package/assert-plus/assert.js +211 -0
  119. package/assert-plus/package.json +21 -0
  120. package/asynckit/LICENSE +21 -0
  121. package/asynckit/README.md +233 -0
  122. package/asynckit/bench.js +76 -0
  123. package/asynckit/index.js +6 -0
  124. package/asynckit/lib/abort.js +29 -0
  125. package/asynckit/lib/async.js +34 -0
  126. package/asynckit/lib/defer.js +26 -0
  127. package/asynckit/lib/iterate.js +75 -0
  128. package/asynckit/lib/readable_asynckit.js +91 -0
  129. package/asynckit/lib/readable_parallel.js +25 -0
  130. package/asynckit/lib/readable_serial.js +25 -0
  131. package/asynckit/lib/readable_serial_ordered.js +29 -0
  132. package/asynckit/lib/state.js +37 -0
  133. package/asynckit/lib/streamify.js +141 -0
  134. package/asynckit/lib/terminator.js +29 -0
  135. package/asynckit/package.json +50 -0
  136. package/asynckit/parallel.js +43 -0
  137. package/asynckit/serial.js +17 -0
  138. package/asynckit/serialOrdered.js +75 -0
  139. package/asynckit/stream.js +21 -0
  140. package/aws-sign2/LICENSE +55 -0
  141. package/aws-sign2/README.md +4 -0
  142. package/aws-sign2/index.js +212 -0
  143. package/aws-sign2/package.json +17 -0
  144. package/aws4/.github/FUNDING.yml +3 -0
  145. package/aws4/.travis.yml +9 -0
  146. package/aws4/LICENSE +19 -0
  147. package/aws4/README.md +183 -0
  148. package/aws4/aws4.js +373 -0
  149. package/aws4/lru.js +96 -0
  150. package/aws4/package.json +16 -0
  151. package/axios/CHANGELOG.md +775 -0
  152. package/axios/LICENSE +19 -0
  153. package/axios/README.md +868 -0
  154. package/axios/SECURITY.md +5 -0
  155. package/axios/UPGRADE_GUIDE.md +162 -0
  156. package/axios/dist/axios.js +2193 -0
  157. package/axios/dist/axios.map +1 -0
  158. package/axios/dist/axios.min.js +3 -0
  159. package/axios/dist/axios.min.map +1 -0
  160. package/axios/index.d.ts +168 -0
  161. package/axios/index.js +1 -0
  162. package/axios/lib/adapters/README.md +37 -0
  163. package/axios/lib/adapters/http.js +331 -0
  164. package/axios/lib/adapters/xhr.js +189 -0
  165. package/axios/lib/axios.js +56 -0
  166. package/axios/lib/cancel/Cancel.js +19 -0
  167. package/axios/lib/cancel/CancelToken.js +57 -0
  168. package/axios/lib/cancel/isCancel.js +5 -0
  169. package/axios/lib/core/Axios.js +148 -0
  170. package/axios/lib/core/InterceptorManager.js +54 -0
  171. package/axios/lib/core/README.md +8 -0
  172. package/axios/lib/core/buildFullPath.js +20 -0
  173. package/axios/lib/core/createError.js +18 -0
  174. package/axios/lib/core/dispatchRequest.js +82 -0
  175. package/axios/lib/core/enhanceError.js +42 -0
  176. package/axios/lib/core/mergeConfig.js +87 -0
  177. package/axios/lib/core/settle.js +25 -0
  178. package/axios/lib/core/transformData.js +22 -0
  179. package/axios/lib/defaults.js +134 -0
  180. package/axios/lib/helpers/README.md +7 -0
  181. package/axios/lib/helpers/bind.js +11 -0
  182. package/axios/lib/helpers/buildURL.js +70 -0
  183. package/axios/lib/helpers/combineURLs.js +14 -0
  184. package/axios/lib/helpers/cookies.js +53 -0
  185. package/axios/lib/helpers/deprecatedMethod.js +24 -0
  186. package/axios/lib/helpers/isAbsoluteURL.js +14 -0
  187. package/axios/lib/helpers/isAxiosError.js +11 -0
  188. package/axios/lib/helpers/isURLSameOrigin.js +68 -0
  189. package/axios/lib/helpers/normalizeHeaderName.js +12 -0
  190. package/axios/lib/helpers/parseHeaders.js +53 -0
  191. package/axios/lib/helpers/spread.js +27 -0
  192. package/axios/lib/helpers/validator.js +105 -0
  193. package/axios/lib/utils.js +349 -0
  194. package/axios/package.json +52 -0
  195. package/bcrypt-pbkdf/CONTRIBUTING.md +13 -0
  196. package/bcrypt-pbkdf/LICENSE +66 -0
  197. package/bcrypt-pbkdf/README.md +45 -0
  198. package/bcrypt-pbkdf/index.js +556 -0
  199. package/bcrypt-pbkdf/package.json +15 -0
  200. package/caseless/LICENSE +28 -0
  201. package/caseless/README.md +45 -0
  202. package/caseless/index.js +67 -0
  203. package/caseless/package.json +27 -0
  204. package/caseless/test.js +67 -0
  205. package/combined-stream/License +19 -0
  206. package/combined-stream/Readme.md +138 -0
  207. package/combined-stream/lib/combined_stream.js +208 -0
  208. package/combined-stream/package.json +24 -0
  209. package/combined-stream/yarn.lock +17 -0
  210. package/core-util-is/LICENSE +19 -0
  211. package/core-util-is/README.md +3 -0
  212. package/core-util-is/float.patch +604 -0
  213. package/core-util-is/lib/util.js +107 -0
  214. package/core-util-is/package.json +32 -0
  215. package/core-util-is/test.js +68 -0
  216. package/dashdash/CHANGES.md +364 -0
  217. package/dashdash/LICENSE.txt +24 -0
  218. package/dashdash/README.md +574 -0
  219. package/dashdash/etc/dashdash.bash_completion.in +389 -0
  220. package/dashdash/lib/dashdash.js +1055 -0
  221. package/dashdash/package.json +26 -0
  222. package/delayed-stream/License +19 -0
  223. package/delayed-stream/Makefile +7 -0
  224. package/delayed-stream/Readme.md +141 -0
  225. package/delayed-stream/lib/delayed_stream.js +107 -0
  226. package/delayed-stream/package.json +26 -0
  227. package/ecc-jsbn/LICENSE +21 -0
  228. package/ecc-jsbn/README.md +8 -0
  229. package/ecc-jsbn/index.js +58 -0
  230. package/ecc-jsbn/lib/LICENSE-jsbn +40 -0
  231. package/ecc-jsbn/lib/ec.js +561 -0
  232. package/ecc-jsbn/lib/sec.js +170 -0
  233. package/ecc-jsbn/package.json +39 -0
  234. package/ecc-jsbn/test.js +14 -0
  235. package/extend/.editorconfig +20 -0
  236. package/extend/.eslintrc +17 -0
  237. package/extend/.jscs.json +175 -0
  238. package/extend/.travis.yml +230 -0
  239. package/extend/CHANGELOG.md +83 -0
  240. package/extend/LICENSE +23 -0
  241. package/extend/README.md +81 -0
  242. package/extend/component.json +32 -0
  243. package/extend/index.js +117 -0
  244. package/extend/package.json +38 -0
  245. package/extsprintf/.gitmodules +0 -0
  246. package/extsprintf/LICENSE +19 -0
  247. package/extsprintf/Makefile +24 -0
  248. package/extsprintf/Makefile.targ +285 -0
  249. package/extsprintf/README.md +46 -0
  250. package/extsprintf/jsl.node.conf +137 -0
  251. package/extsprintf/lib/extsprintf.js +183 -0
  252. package/extsprintf/package.json +14 -0
  253. package/fast-deep-equal/LICENSE +21 -0
  254. package/fast-deep-equal/README.md +96 -0
  255. package/fast-deep-equal/es6/index.d.ts +2 -0
  256. package/fast-deep-equal/es6/index.js +72 -0
  257. package/fast-deep-equal/es6/react.d.ts +2 -0
  258. package/fast-deep-equal/es6/react.js +79 -0
  259. package/fast-deep-equal/index.d.ts +4 -0
  260. package/fast-deep-equal/index.js +46 -0
  261. package/fast-deep-equal/package.json +52 -0
  262. package/fast-deep-equal/react.d.ts +2 -0
  263. package/fast-deep-equal/react.js +53 -0
  264. package/fast-json-stable-stringify/.eslintrc.yml +26 -0
  265. package/fast-json-stable-stringify/.github/FUNDING.yml +1 -0
  266. package/fast-json-stable-stringify/.travis.yml +8 -0
  267. package/fast-json-stable-stringify/LICENSE +21 -0
  268. package/fast-json-stable-stringify/README.md +131 -0
  269. package/fast-json-stable-stringify/benchmark/index.js +31 -0
  270. package/fast-json-stable-stringify/benchmark/test.json +137 -0
  271. package/fast-json-stable-stringify/example/key_cmp.js +7 -0
  272. package/fast-json-stable-stringify/example/nested.js +3 -0
  273. package/fast-json-stable-stringify/example/str.js +3 -0
  274. package/fast-json-stable-stringify/example/value_cmp.js +7 -0
  275. package/fast-json-stable-stringify/index.d.ts +4 -0
  276. package/fast-json-stable-stringify/index.js +59 -0
  277. package/fast-json-stable-stringify/package.json +44 -0
  278. package/fast-json-stable-stringify/test/cmp.js +13 -0
  279. package/fast-json-stable-stringify/test/nested.js +44 -0
  280. package/fast-json-stable-stringify/test/str.js +46 -0
  281. package/fast-json-stable-stringify/test/to-json.js +22 -0
  282. package/follow-redirects/LICENSE +18 -0
  283. package/follow-redirects/README.md +155 -0
  284. package/follow-redirects/debug.js +15 -0
  285. package/follow-redirects/http.js +1 -0
  286. package/follow-redirects/https.js +1 -0
  287. package/follow-redirects/index.js +598 -0
  288. package/follow-redirects/package.json +54 -0
  289. package/forever-agent/LICENSE +55 -0
  290. package/forever-agent/README.md +4 -0
  291. package/forever-agent/index.js +138 -0
  292. package/forever-agent/package.json +17 -0
  293. package/form-data/License +19 -0
  294. package/form-data/README.md +234 -0
  295. package/form-data/README.md.bak +234 -0
  296. package/form-data/lib/browser.js +2 -0
  297. package/form-data/lib/form_data.js +457 -0
  298. package/form-data/lib/populate.js +10 -0
  299. package/form-data/package.json +46 -0
  300. package/form-data/yarn.lock +2662 -0
  301. package/getpass/.travis.yml +9 -0
  302. package/getpass/LICENSE +18 -0
  303. package/getpass/README.md +32 -0
  304. package/getpass/lib/index.js +123 -0
  305. package/getpass/package.json +18 -0
  306. package/har-schema/LICENSE +13 -0
  307. package/har-schema/README.md +49 -0
  308. package/har-schema/lib/afterRequest.json +30 -0
  309. package/har-schema/lib/beforeRequest.json +30 -0
  310. package/har-schema/lib/browser.json +20 -0
  311. package/har-schema/lib/cache.json +21 -0
  312. package/har-schema/lib/content.json +29 -0
  313. package/har-schema/lib/cookie.json +36 -0
  314. package/har-schema/lib/creator.json +20 -0
  315. package/har-schema/lib/entry.json +53 -0
  316. package/har-schema/lib/har.json +13 -0
  317. package/har-schema/lib/header.json +20 -0
  318. package/har-schema/lib/index.js +22 -0
  319. package/har-schema/lib/log.json +36 -0
  320. package/har-schema/lib/page.json +32 -0
  321. package/har-schema/lib/pageTimings.json +18 -0
  322. package/har-schema/lib/postData.json +43 -0
  323. package/har-schema/lib/query.json +20 -0
  324. package/har-schema/lib/request.json +57 -0
  325. package/har-schema/lib/response.json +54 -0
  326. package/har-schema/lib/timings.json +42 -0
  327. package/har-schema/package.json +48 -0
  328. package/har-validator/LICENSE +9 -0
  329. package/har-validator/README.md +43 -0
  330. package/har-validator/lib/async.js +105 -0
  331. package/har-validator/lib/error.js +17 -0
  332. package/har-validator/lib/promise.js +102 -0
  333. package/har-validator/package.json +42 -0
  334. package/http-signature/.dir-locals.el +6 -0
  335. package/http-signature/CHANGES.md +46 -0
  336. package/http-signature/LICENSE +18 -0
  337. package/http-signature/README.md +79 -0
  338. package/http-signature/http_signing.md +363 -0
  339. package/http-signature/lib/index.js +29 -0
  340. package/http-signature/lib/parser.js +315 -0
  341. package/http-signature/lib/signer.js +401 -0
  342. package/http-signature/lib/utils.js +112 -0
  343. package/http-signature/lib/verify.js +88 -0
  344. package/http-signature/package.json +36 -0
  345. package/is-typedarray/LICENSE.md +18 -0
  346. package/is-typedarray/README.md +16 -0
  347. package/is-typedarray/index.js +41 -0
  348. package/is-typedarray/package.json +30 -0
  349. package/is-typedarray/test.js +34 -0
  350. package/isstream/.jshintrc +59 -0
  351. package/isstream/.travis.yml +12 -0
  352. package/isstream/LICENSE.md +11 -0
  353. package/isstream/README.md +66 -0
  354. package/isstream/isstream.js +27 -0
  355. package/isstream/package.json +29 -0
  356. package/isstream/test.js +168 -0
  357. package/jsbn/LICENSE +40 -0
  358. package/jsbn/README.md +175 -0
  359. package/jsbn/example.html +12 -0
  360. package/jsbn/example.js +3 -0
  361. package/jsbn/index.js +1357 -0
  362. package/jsbn/package.json +21 -0
  363. package/json-schema/LICENSE +195 -0
  364. package/json-schema/README.md +3 -0
  365. package/json-schema/lib/links.js +65 -0
  366. package/json-schema/lib/validate.js +271 -0
  367. package/json-schema/package.json +24 -0
  368. package/json-schema-traverse/.eslintrc.yml +27 -0
  369. package/json-schema-traverse/.travis.yml +8 -0
  370. package/json-schema-traverse/LICENSE +21 -0
  371. package/json-schema-traverse/README.md +83 -0
  372. package/json-schema-traverse/index.js +89 -0
  373. package/json-schema-traverse/package.json +39 -0
  374. package/json-schema-traverse/spec/.eslintrc.yml +6 -0
  375. package/json-schema-traverse/spec/fixtures/schema.js +125 -0
  376. package/json-schema-traverse/spec/index.spec.js +171 -0
  377. package/json-stringify-safe/CHANGELOG.md +14 -0
  378. package/json-stringify-safe/LICENSE +15 -0
  379. package/json-stringify-safe/Makefile +35 -0
  380. package/json-stringify-safe/README.md +52 -0
  381. package/json-stringify-safe/package.json +29 -0
  382. package/json-stringify-safe/stringify.js +27 -0
  383. package/json-stringify-safe/test/mocha.opts +2 -0
  384. package/json-stringify-safe/test/stringify_test.js +246 -0
  385. package/jsprim/CHANGES.md +53 -0
  386. package/jsprim/CONTRIBUTING.md +19 -0
  387. package/jsprim/LICENSE +19 -0
  388. package/jsprim/README.md +287 -0
  389. package/jsprim/lib/jsprim.js +735 -0
  390. package/jsprim/package.json +17 -0
  391. package/m3u8stream/LICENSE +21 -0
  392. package/m3u8stream/README.md +81 -0
  393. package/m3u8stream/dist/dash-mpd-parser.d.ts +11 -0
  394. package/m3u8stream/dist/dash-mpd-parser.js +183 -0
  395. package/m3u8stream/dist/dash-mpd-parser.js.map +1 -0
  396. package/m3u8stream/dist/index.d.ts +31 -0
  397. package/m3u8stream/dist/index.js +180 -0
  398. package/m3u8stream/dist/index.js.map +1 -0
  399. package/m3u8stream/dist/m3u8-parser.d.ts +18 -0
  400. package/m3u8stream/dist/m3u8-parser.js +111 -0
  401. package/m3u8stream/dist/m3u8-parser.js.map +1 -0
  402. package/m3u8stream/dist/parse-time.d.ts +16 -0
  403. package/m3u8stream/dist/parse-time.js +59 -0
  404. package/m3u8stream/dist/parse-time.js.map +1 -0
  405. package/m3u8stream/dist/parser.d.ts +19 -0
  406. package/m3u8stream/dist/parser.js +3 -0
  407. package/m3u8stream/dist/parser.js.map +1 -0
  408. package/m3u8stream/dist/queue.d.ts +39 -0
  409. package/m3u8stream/dist/queue.js +58 -0
  410. package/m3u8stream/dist/queue.js.map +1 -0
  411. package/m3u8stream/node_modules/sax/LICENSE +41 -0
  412. package/m3u8stream/node_modules/sax/README.md +225 -0
  413. package/m3u8stream/node_modules/sax/lib/sax.js +1565 -0
  414. package/m3u8stream/node_modules/sax/package.json +25 -0
  415. package/m3u8stream/package.json +41 -0
  416. package/mime-db/HISTORY.md +507 -0
  417. package/mime-db/LICENSE +23 -0
  418. package/mime-db/README.md +100 -0
  419. package/mime-db/db.json +8519 -0
  420. package/mime-db/index.js +12 -0
  421. package/mime-db/package.json +44 -0
  422. package/mime-types/HISTORY.md +397 -0
  423. package/mime-types/LICENSE +23 -0
  424. package/mime-types/README.md +113 -0
  425. package/mime-types/index.js +188 -0
  426. package/mime-types/package.json +36 -0
  427. package/miniget/LICENSE +21 -0
  428. package/miniget/README.md +111 -0
  429. package/miniget/dist/index.d.ts +65 -0
  430. package/miniget/dist/index.js +281 -0
  431. package/miniget/dist/index.js.map +1 -0
  432. package/miniget/package.json +36 -0
  433. package/oauth-sign/LICENSE +55 -0
  434. package/oauth-sign/README.md +11 -0
  435. package/oauth-sign/index.js +146 -0
  436. package/oauth-sign/package.json +23 -0
  437. package/package.json +11 -0
  438. package/performance-now/.tm_properties +7 -0
  439. package/performance-now/.travis.yml +6 -0
  440. package/performance-now/README.md +30 -0
  441. package/performance-now/lib/performance-now.js +36 -0
  442. package/performance-now/lib/performance-now.js.map +10 -0
  443. package/performance-now/license.txt +7 -0
  444. package/performance-now/package.json +29 -0
  445. package/performance-now/src/index.d.ts +8 -0
  446. package/performance-now/src/performance-now.coffee +17 -0
  447. package/performance-now/test/mocha.opts +3 -0
  448. package/performance-now/test/performance-now.coffee +43 -0
  449. package/performance-now/test/scripts/delayed-call.coffee +11 -0
  450. package/performance-now/test/scripts/delayed-require.coffee +12 -0
  451. package/performance-now/test/scripts/difference.coffee +6 -0
  452. package/performance-now/test/scripts/initial-value.coffee +10 -0
  453. package/performance-now/test/scripts.coffee +27 -0
  454. package/psl/.env +0 -0
  455. package/psl/LICENSE +9 -0
  456. package/psl/README.md +211 -0
  457. package/psl/browserstack-logo.svg +90 -0
  458. package/psl/data/rules.json +9376 -0
  459. package/psl/dist/psl.js +10187 -0
  460. package/psl/dist/psl.min.js +1 -0
  461. package/psl/index.js +269 -0
  462. package/psl/package.json +30 -0
  463. package/punycode/LICENSE-MIT.txt +20 -0
  464. package/punycode/README.md +122 -0
  465. package/punycode/package.json +56 -0
  466. package/punycode/punycode.es6.js +441 -0
  467. package/punycode/punycode.js +440 -0
  468. package/qs/.editorconfig +43 -0
  469. package/qs/.eslintrc +37 -0
  470. package/qs/.github/FUNDING.yml +12 -0
  471. package/qs/.nycrc +13 -0
  472. package/qs/CHANGELOG.md +250 -0
  473. package/qs/LICENSE.md +29 -0
  474. package/qs/README.md +510 -0
  475. package/qs/bower.json +21 -0
  476. package/qs/component.json +15 -0
  477. package/qs/dist/qs.js +648 -0
  478. package/qs/lib/formats.js +18 -0
  479. package/qs/lib/index.js +11 -0
  480. package/qs/lib/parse.js +175 -0
  481. package/qs/lib/stringify.js +217 -0
  482. package/qs/lib/utils.js +215 -0
  483. package/qs/package.json +41 -0
  484. package/qs/test/index.js +7 -0
  485. package/qs/test/parse.js +649 -0
  486. package/qs/test/stringify.js +642 -0
  487. package/qs/test/utils.js +65 -0
  488. package/request/CHANGELOG.md +717 -0
  489. package/request/LICENSE +55 -0
  490. package/request/README.md +1133 -0
  491. package/request/index.js +155 -0
  492. package/request/lib/auth.js +167 -0
  493. package/request/lib/cookies.js +38 -0
  494. package/request/lib/getProxyFromURI.js +79 -0
  495. package/request/lib/har.js +205 -0
  496. package/request/lib/hawk.js +89 -0
  497. package/request/lib/helpers.js +66 -0
  498. package/request/lib/multipart.js +112 -0
  499. package/request/lib/oauth.js +148 -0
  500. package/request/lib/querystring.js +50 -0
  501. package/request/lib/redirect.js +154 -0
  502. package/request/lib/tunnel.js +175 -0
  503. package/request/package.json +48 -0
  504. package/request/request.js +1553 -0
  505. package/safe-buffer/LICENSE +21 -0
  506. package/safe-buffer/README.md +584 -0
  507. package/safe-buffer/index.d.ts +187 -0
  508. package/safe-buffer/index.js +65 -0
  509. package/safe-buffer/package.json +50 -0
  510. package/safer-buffer/LICENSE +21 -0
  511. package/safer-buffer/Porting-Buffer.md +268 -0
  512. package/safer-buffer/Readme.md +156 -0
  513. package/safer-buffer/dangerous.js +58 -0
  514. package/safer-buffer/package.json +33 -0
  515. package/safer-buffer/safer.js +77 -0
  516. package/safer-buffer/tests.js +406 -0
  517. package/sax/AUTHORS +10 -0
  518. package/sax/LICENSE +32 -0
  519. package/sax/LICENSE-W3C.html +188 -0
  520. package/sax/README.md +216 -0
  521. package/sax/component.json +12 -0
  522. package/sax/examples/big-not-pretty.xml +8002 -0
  523. package/sax/examples/example.js +29 -0
  524. package/sax/examples/get-products.js +58 -0
  525. package/sax/examples/hello-world.js +4 -0
  526. package/sax/examples/not-pretty.xml +8 -0
  527. package/sax/examples/pretty-print.js +74 -0
  528. package/sax/examples/shopping.xml +2 -0
  529. package/sax/examples/strict.dtd +870 -0
  530. package/sax/examples/test.html +15 -0
  531. package/sax/examples/test.xml +1254 -0
  532. package/sax/lib/sax.js +1355 -0
  533. package/sax/package.json +12 -0
  534. package/sax/test/attribute-name.js +33 -0
  535. package/sax/test/attribute-no-space.js +75 -0
  536. package/sax/test/buffer-overrun.js +26 -0
  537. package/sax/test/case.js +50 -0
  538. package/sax/test/cdata-chunked.js +11 -0
  539. package/sax/test/cdata-end-split.js +15 -0
  540. package/sax/test/cdata-fake-end.js +28 -0
  541. package/sax/test/cdata-multiple.js +15 -0
  542. package/sax/test/cdata.js +10 -0
  543. package/sax/test/cyrillic.js +8 -0
  544. package/sax/test/duplicate-attribute.js +13 -0
  545. package/sax/test/end_empty_stream.js +5 -0
  546. package/sax/test/entities.js +10 -0
  547. package/sax/test/entity-mega.js +16 -0
  548. package/sax/test/flush.js +13 -0
  549. package/sax/test/index.js +86 -0
  550. package/sax/test/issue-23.js +43 -0
  551. package/sax/test/issue-30.js +24 -0
  552. package/sax/test/issue-35.js +15 -0
  553. package/sax/test/issue-47.js +12 -0
  554. package/sax/test/issue-49.js +31 -0
  555. package/sax/test/issue-84.js +13 -0
  556. package/sax/test/parser-position.js +28 -0
  557. package/sax/test/script-close-better.js +12 -0
  558. package/sax/test/script.js +12 -0
  559. package/sax/test/self-closing-child-strict.js +44 -0
  560. package/sax/test/self-closing-child.js +44 -0
  561. package/sax/test/self-closing-tag.js +25 -0
  562. package/sax/test/stray-ending.js +17 -0
  563. package/sax/test/trailing-attribute-no-value.js +10 -0
  564. package/sax/test/trailing-non-whitespace.js +18 -0
  565. package/sax/test/unclosed-root.js +11 -0
  566. package/sax/test/unquoted.js +18 -0
  567. package/sax/test/utf8-split.js +32 -0
  568. package/sax/test/xmlns-as-tag-name.js +15 -0
  569. package/sax/test/xmlns-issue-41.js +68 -0
  570. package/sax/test/xmlns-rebinding.js +63 -0
  571. package/sax/test/xmlns-strict.js +74 -0
  572. package/sax/test/xmlns-unbound-element.js +33 -0
  573. package/sax/test/xmlns-unbound.js +15 -0
  574. package/sax/test/xmlns-xml-default-ns.js +31 -0
  575. package/sax/test/xmlns-xml-default-prefix-attribute.js +36 -0
  576. package/sax/test/xmlns-xml-default-prefix.js +21 -0
  577. package/sax/test/xmlns-xml-default-redefine.js +41 -0
  578. package/simple-csv-reader/.editorconfig +8 -0
  579. package/simple-csv-reader/LICENSE +21 -0
  580. package/simple-csv-reader/README.md +32 -0
  581. package/simple-csv-reader/dist/simple-csv-reader.min.js +2 -0
  582. package/simple-csv-reader/dist/simple-csv-reader.min.js.map +1 -0
  583. package/simple-csv-reader/gulpfile.js +26 -0
  584. package/simple-csv-reader/index.js +131 -0
  585. package/simple-csv-reader/package.json +30 -0
  586. package/sshpk/.travis.yml +11 -0
  587. package/sshpk/Jenkinsfile +86 -0
  588. package/sshpk/LICENSE +18 -0
  589. package/sshpk/README.md +804 -0
  590. package/sshpk/bin/sshpk-conv +243 -0
  591. package/sshpk/bin/sshpk-sign +191 -0
  592. package/sshpk/bin/sshpk-verify +167 -0
  593. package/sshpk/lib/algs.js +168 -0
  594. package/sshpk/lib/certificate.js +410 -0
  595. package/sshpk/lib/dhe.js +397 -0
  596. package/sshpk/lib/ed-compat.js +92 -0
  597. package/sshpk/lib/errors.js +84 -0
  598. package/sshpk/lib/fingerprint.js +220 -0
  599. package/sshpk/lib/formats/auto.js +124 -0
  600. package/sshpk/lib/formats/dnssec.js +287 -0
  601. package/sshpk/lib/formats/openssh-cert.js +352 -0
  602. package/sshpk/lib/formats/pem.js +290 -0
  603. package/sshpk/lib/formats/pkcs1.js +373 -0
  604. package/sshpk/lib/formats/pkcs8.js +631 -0
  605. package/sshpk/lib/formats/putty.js +194 -0
  606. package/sshpk/lib/formats/rfc4253.js +166 -0
  607. package/sshpk/lib/formats/ssh-private.js +262 -0
  608. package/sshpk/lib/formats/ssh.js +115 -0
  609. package/sshpk/lib/formats/x509-pem.js +88 -0
  610. package/sshpk/lib/formats/x509.js +752 -0
  611. package/sshpk/lib/identity.js +373 -0
  612. package/sshpk/lib/index.js +40 -0
  613. package/sshpk/lib/key.js +294 -0
  614. package/sshpk/lib/private-key.js +247 -0
  615. package/sshpk/lib/signature.js +314 -0
  616. package/sshpk/lib/ssh-buffer.js +149 -0
  617. package/sshpk/lib/utils.js +404 -0
  618. package/sshpk/man/man1/sshpk-conv.1 +135 -0
  619. package/sshpk/man/man1/sshpk-sign.1 +81 -0
  620. package/sshpk/man/man1/sshpk-verify.1 +68 -0
  621. package/sshpk/package.json +49 -0
  622. package/tough-cookie/LICENSE +12 -0
  623. package/tough-cookie/README.md +527 -0
  624. package/tough-cookie/lib/cookie.js +1482 -0
  625. package/tough-cookie/lib/memstore.js +181 -0
  626. package/tough-cookie/lib/pathMatch.js +61 -0
  627. package/tough-cookie/lib/permuteDomain.js +56 -0
  628. package/tough-cookie/lib/pubsuffix-psl.js +38 -0
  629. package/tough-cookie/lib/store.js +75 -0
  630. package/tough-cookie/lib/version.js +2 -0
  631. package/tough-cookie/package.json +73 -0
  632. package/tunnel-agent/LICENSE +55 -0
  633. package/tunnel-agent/README.md +4 -0
  634. package/tunnel-agent/index.js +244 -0
  635. package/tunnel-agent/package.json +22 -0
  636. package/tweetnacl/AUTHORS.md +28 -0
  637. package/tweetnacl/CHANGELOG.md +221 -0
  638. package/tweetnacl/LICENSE +24 -0
  639. package/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
  640. package/tweetnacl/README.md +459 -0
  641. package/tweetnacl/nacl-fast.js +2388 -0
  642. package/tweetnacl/nacl-fast.min.js +2 -0
  643. package/tweetnacl/nacl.d.ts +98 -0
  644. package/tweetnacl/nacl.js +1175 -0
  645. package/tweetnacl/nacl.min.js +1 -0
  646. package/tweetnacl/package.json +51 -0
  647. package/uri-js/LICENSE +11 -0
  648. package/uri-js/README.md +203 -0
  649. package/uri-js/dist/es5/uri.all.d.ts +59 -0
  650. package/uri-js/dist/es5/uri.all.js +1443 -0
  651. package/uri-js/dist/es5/uri.all.js.map +1 -0
  652. package/uri-js/dist/es5/uri.all.min.d.ts +59 -0
  653. package/uri-js/dist/es5/uri.all.min.js +3 -0
  654. package/uri-js/dist/es5/uri.all.min.js.map +1 -0
  655. package/uri-js/dist/esnext/index.d.ts +1 -0
  656. package/uri-js/dist/esnext/index.js +17 -0
  657. package/uri-js/dist/esnext/index.js.map +1 -0
  658. package/uri-js/dist/esnext/regexps-iri.d.ts +3 -0
  659. package/uri-js/dist/esnext/regexps-iri.js +3 -0
  660. package/uri-js/dist/esnext/regexps-iri.js.map +1 -0
  661. package/uri-js/dist/esnext/regexps-uri.d.ts +4 -0
  662. package/uri-js/dist/esnext/regexps-uri.js +42 -0
  663. package/uri-js/dist/esnext/regexps-uri.js.map +1 -0
  664. package/uri-js/dist/esnext/schemes/http.d.ts +3 -0
  665. package/uri-js/dist/esnext/schemes/http.js +28 -0
  666. package/uri-js/dist/esnext/schemes/http.js.map +1 -0
  667. package/uri-js/dist/esnext/schemes/https.d.ts +3 -0
  668. package/uri-js/dist/esnext/schemes/https.js +9 -0
  669. package/uri-js/dist/esnext/schemes/https.js.map +1 -0
  670. package/uri-js/dist/esnext/schemes/mailto.d.ts +12 -0
  671. package/uri-js/dist/esnext/schemes/mailto.js +148 -0
  672. package/uri-js/dist/esnext/schemes/mailto.js.map +1 -0
  673. package/uri-js/dist/esnext/schemes/urn-uuid.d.ts +7 -0
  674. package/uri-js/dist/esnext/schemes/urn-uuid.js +23 -0
  675. package/uri-js/dist/esnext/schemes/urn-uuid.js.map +1 -0
  676. package/uri-js/dist/esnext/schemes/urn.d.ts +10 -0
  677. package/uri-js/dist/esnext/schemes/urn.js +49 -0
  678. package/uri-js/dist/esnext/schemes/urn.js.map +1 -0
  679. package/uri-js/dist/esnext/schemes/ws.d.ts +7 -0
  680. package/uri-js/dist/esnext/schemes/ws.js +41 -0
  681. package/uri-js/dist/esnext/schemes/ws.js.map +1 -0
  682. package/uri-js/dist/esnext/schemes/wss.d.ts +3 -0
  683. package/uri-js/dist/esnext/schemes/wss.js +9 -0
  684. package/uri-js/dist/esnext/schemes/wss.js.map +1 -0
  685. package/uri-js/dist/esnext/uri.d.ts +59 -0
  686. package/uri-js/dist/esnext/uri.js +480 -0
  687. package/uri-js/dist/esnext/uri.js.map +1 -0
  688. package/uri-js/dist/esnext/util.d.ts +6 -0
  689. package/uri-js/dist/esnext/util.js +36 -0
  690. package/uri-js/dist/esnext/util.js.map +1 -0
  691. package/uri-js/package.json +67 -0
  692. package/uri-js/yarn.lock +2558 -0
  693. package/uuid/AUTHORS +5 -0
  694. package/uuid/CHANGELOG.md +119 -0
  695. package/uuid/LICENSE.md +21 -0
  696. package/uuid/README.md +276 -0
  697. package/uuid/bin/uuid +65 -0
  698. package/uuid/index.js +8 -0
  699. package/uuid/lib/bytesToUuid.js +26 -0
  700. package/uuid/lib/md5-browser.js +216 -0
  701. package/uuid/lib/md5.js +25 -0
  702. package/uuid/lib/rng-browser.js +34 -0
  703. package/uuid/lib/rng.js +8 -0
  704. package/uuid/lib/sha1-browser.js +89 -0
  705. package/uuid/lib/sha1.js +25 -0
  706. package/uuid/lib/v35.js +57 -0
  707. package/uuid/package.json +43 -0
  708. package/uuid/v1.js +109 -0
  709. package/uuid/v3.js +4 -0
  710. package/uuid/v4.js +29 -0
  711. package/uuid/v5.js +3 -0
  712. package/verror/CHANGES.md +28 -0
  713. package/verror/CONTRIBUTING.md +19 -0
  714. package/verror/LICENSE +19 -0
  715. package/verror/README.md +528 -0
  716. package/verror/lib/verror.js +451 -0
  717. package/verror/package.json +20 -0
  718. package/xml2js/.travis.yml +5 -0
  719. package/xml2js/83.coffee +6 -0
  720. package/xml2js/LICENSE +19 -0
  721. package/xml2js/README.md +248 -0
  722. package/xml2js/canon.xml +482 -0
  723. package/xml2js/lib/xml2js.js +299 -0
  724. package/xml2js/package.json +45 -0
  725. package/xml2js/text.coffee +11 -0
  726. package/xml2js/text.xml +485 -0
  727. package/youtube-downloader-by-ahmad/LICENSE +21 -0
  728. package/youtube-downloader-by-ahmad/README.md +238 -0
  729. package/youtube-downloader-by-ahmad/lib/cache.js +54 -0
  730. package/youtube-downloader-by-ahmad/lib/format-utils.js +250 -0
  731. package/youtube-downloader-by-ahmad/lib/formats.js +524 -0
  732. package/youtube-downloader-by-ahmad/lib/index.js +214 -0
  733. package/youtube-downloader-by-ahmad/lib/info-extras.js +365 -0
  734. package/youtube-downloader-by-ahmad/lib/info.js +495 -0
  735. package/youtube-downloader-by-ahmad/lib/sig.js +122 -0
  736. package/youtube-downloader-by-ahmad/lib/url-utils.js +91 -0
  737. package/youtube-downloader-by-ahmad/lib/utils.js +286 -0
  738. package/youtube-downloader-by-ahmad/node_modules/sax/LICENSE +41 -0
  739. package/youtube-downloader-by-ahmad/node_modules/sax/README.md +225 -0
  740. package/youtube-downloader-by-ahmad/node_modules/sax/lib/sax.js +1565 -0
  741. package/youtube-downloader-by-ahmad/node_modules/sax/package.json +25 -0
  742. package/youtube-downloader-by-ahmad/package.json +61 -0
  743. package/youtube-downloader-by-ahmad/typings/index.d.ts +426 -0
  744. package/youtube-search/.travis.yml +5 -0
  745. package/youtube-search/README.md +61 -0
  746. package/youtube-search/index.d.ts +77 -0
  747. package/youtube-search/index.js +111 -0
  748. package/youtube-search/package.json +26 -0
  749. package/youtube-search/tests/test-search.js +32 -0
  750. package/ytdl-getinfo/.travis.yml +3 -0
  751. package/ytdl-getinfo/README.md +77 -0
  752. package/ytdl-getinfo/index.js +105 -0
  753. package/ytdl-getinfo/package.json +30 -0
  754. package/ytdl-getinfo/playlist.js +50 -0
  755. package/ytdl-getinfo/test/test.js +68 -0
  756. package/ytdl-getinfo/updater.js +42 -0
  757. package/ytdl-getinfo/yarn.lock +533 -0
  758. package/ytdl-getinfo/ytdl/.gitkeep +0 -0
  759. package/ytdl-getinfo/ytdl/youtube-dl.exe +0 -0
package/sax/lib/sax.js ADDED
@@ -0,0 +1,1355 @@
1
+ // wrapper for non-node envs
2
+ ;(function (sax) {
3
+
4
+ sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
5
+ sax.SAXParser = SAXParser
6
+ sax.SAXStream = SAXStream
7
+ sax.createStream = createStream
8
+
9
+ // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
10
+ // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
11
+ // since that's the earliest that a buffer overrun could occur. This way, checks are
12
+ // as rare as required, but as often as necessary to ensure never crossing this bound.
13
+ // Furthermore, buffers are only tested at most once per write(), so passing a very
14
+ // large string into write() might have undesirable effects, but this is manageable by
15
+ // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme
16
+ // edge case, result in creating at most one complete copy of the string passed in.
17
+ // Set to Infinity to have unlimited buffers.
18
+ sax.MAX_BUFFER_LENGTH = 64 * 1024
19
+
20
+ var buffers = [
21
+ "comment", "sgmlDecl", "textNode", "tagName", "doctype",
22
+ "procInstName", "procInstBody", "entity", "attribName",
23
+ "attribValue", "cdata", "script"
24
+ ]
25
+
26
+ sax.EVENTS = // for discoverability.
27
+ [ "text"
28
+ , "processinginstruction"
29
+ , "sgmldeclaration"
30
+ , "doctype"
31
+ , "comment"
32
+ , "attribute"
33
+ , "opentag"
34
+ , "closetag"
35
+ , "opencdata"
36
+ , "cdata"
37
+ , "closecdata"
38
+ , "error"
39
+ , "end"
40
+ , "ready"
41
+ , "script"
42
+ , "opennamespace"
43
+ , "closenamespace"
44
+ ]
45
+
46
+ function SAXParser (strict, opt) {
47
+ if (!(this instanceof SAXParser)) return new SAXParser(strict, opt)
48
+
49
+ var parser = this
50
+ clearBuffers(parser)
51
+ parser.q = parser.c = ""
52
+ parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
53
+ parser.opt = opt || {}
54
+ parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
55
+ parser.looseCase = parser.opt.lowercase ? "toLowerCase" : "toUpperCase"
56
+ parser.tags = []
57
+ parser.closed = parser.closedRoot = parser.sawRoot = false
58
+ parser.tag = parser.error = null
59
+ parser.strict = !!strict
60
+ parser.noscript = !!(strict || parser.opt.noscript)
61
+ parser.state = S.BEGIN
62
+ parser.ENTITIES = Object.create(sax.ENTITIES)
63
+ parser.attribList = []
64
+
65
+ // namespaces form a prototype chain.
66
+ // it always points at the current tag,
67
+ // which protos to its parent tag.
68
+ if (parser.opt.xmlns) parser.ns = Object.create(rootNS)
69
+
70
+ // mostly just for error reporting
71
+ parser.trackPosition = parser.opt.position !== false
72
+ if (parser.trackPosition) {
73
+ parser.position = parser.line = parser.column = 0
74
+ }
75
+ emit(parser, "onready")
76
+ }
77
+
78
+ if (!Object.create) Object.create = function (o) {
79
+ function f () { this.__proto__ = o }
80
+ f.prototype = o
81
+ return new f
82
+ }
83
+
84
+ if (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) {
85
+ return o.__proto__
86
+ }
87
+
88
+ if (!Object.keys) Object.keys = function (o) {
89
+ var a = []
90
+ for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
91
+ return a
92
+ }
93
+
94
+ function checkBufferLength (parser) {
95
+ var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
96
+ , maxActual = 0
97
+ for (var i = 0, l = buffers.length; i < l; i ++) {
98
+ var len = parser[buffers[i]].length
99
+ if (len > maxAllowed) {
100
+ // Text/cdata nodes can get big, and since they're buffered,
101
+ // we can get here under normal conditions.
102
+ // Avoid issues by emitting the text node now,
103
+ // so at least it won't get any bigger.
104
+ switch (buffers[i]) {
105
+ case "textNode":
106
+ closeText(parser)
107
+ break
108
+
109
+ case "cdata":
110
+ emitNode(parser, "oncdata", parser.cdata)
111
+ parser.cdata = ""
112
+ break
113
+
114
+ case "script":
115
+ emitNode(parser, "onscript", parser.script)
116
+ parser.script = ""
117
+ break
118
+
119
+ default:
120
+ error(parser, "Max buffer length exceeded: "+buffers[i])
121
+ }
122
+ }
123
+ maxActual = Math.max(maxActual, len)
124
+ }
125
+ // schedule the next check for the earliest possible buffer overrun.
126
+ parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual)
127
+ + parser.position
128
+ }
129
+
130
+ function clearBuffers (parser) {
131
+ for (var i = 0, l = buffers.length; i < l; i ++) {
132
+ parser[buffers[i]] = ""
133
+ }
134
+ }
135
+
136
+ function flushBuffers (parser) {
137
+ closeText(parser)
138
+ if (parser.cdata !== "") {
139
+ emitNode(parser, "oncdata", parser.cdata)
140
+ parser.cdata = ""
141
+ }
142
+ if (parser.script !== "") {
143
+ emitNode(parser, "onscript", parser.script)
144
+ parser.script = ""
145
+ }
146
+ }
147
+
148
+ SAXParser.prototype =
149
+ { end: function () { end(this) }
150
+ , write: write
151
+ , resume: function () { this.error = null; return this }
152
+ , close: function () { return this.write(null) }
153
+ , flush: function () { flushBuffers(this) }
154
+ }
155
+
156
+ try {
157
+ var Stream = require("stream").Stream
158
+ } catch (ex) {
159
+ var Stream = function () {}
160
+ }
161
+
162
+
163
+ var streamWraps = sax.EVENTS.filter(function (ev) {
164
+ return ev !== "error" && ev !== "end"
165
+ })
166
+
167
+ function createStream (strict, opt) {
168
+ return new SAXStream(strict, opt)
169
+ }
170
+
171
+ function SAXStream (strict, opt) {
172
+ if (!(this instanceof SAXStream)) return new SAXStream(strict, opt)
173
+
174
+ Stream.apply(this)
175
+
176
+ this._parser = new SAXParser(strict, opt)
177
+ this.writable = true
178
+ this.readable = true
179
+
180
+
181
+ var me = this
182
+
183
+ this._parser.onend = function () {
184
+ me.emit("end")
185
+ }
186
+
187
+ this._parser.onerror = function (er) {
188
+ me.emit("error", er)
189
+
190
+ // if didn't throw, then means error was handled.
191
+ // go ahead and clear error, so we can write again.
192
+ me._parser.error = null
193
+ }
194
+
195
+ this._decoder = null;
196
+
197
+ streamWraps.forEach(function (ev) {
198
+ Object.defineProperty(me, "on" + ev, {
199
+ get: function () { return me._parser["on" + ev] },
200
+ set: function (h) {
201
+ if (!h) {
202
+ me.removeAllListeners(ev)
203
+ return me._parser["on"+ev] = h
204
+ }
205
+ me.on(ev, h)
206
+ },
207
+ enumerable: true,
208
+ configurable: false
209
+ })
210
+ })
211
+ }
212
+
213
+ SAXStream.prototype = Object.create(Stream.prototype,
214
+ { constructor: { value: SAXStream } })
215
+
216
+ SAXStream.prototype.write = function (data) {
217
+ if (typeof Buffer === 'function' &&
218
+ typeof Buffer.isBuffer === 'function' &&
219
+ Buffer.isBuffer(data)) {
220
+ if (!this._decoder) {
221
+ var SD = require('string_decoder').StringDecoder
222
+ this._decoder = new SD('utf8')
223
+ }
224
+ data = this._decoder.write(data);
225
+ }
226
+
227
+ this._parser.write(data.toString())
228
+ this.emit("data", data)
229
+ return true
230
+ }
231
+
232
+ SAXStream.prototype.end = function (chunk) {
233
+ if (chunk && chunk.length) this.write(chunk)
234
+ this._parser.end()
235
+ return true
236
+ }
237
+
238
+ SAXStream.prototype.on = function (ev, handler) {
239
+ var me = this
240
+ if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) {
241
+ me._parser["on"+ev] = function () {
242
+ var args = arguments.length === 1 ? [arguments[0]]
243
+ : Array.apply(null, arguments)
244
+ args.splice(0, 0, ev)
245
+ me.emit.apply(me, args)
246
+ }
247
+ }
248
+
249
+ return Stream.prototype.on.call(me, ev, handler)
250
+ }
251
+
252
+
253
+
254
+ // character classes and tokens
255
+ var whitespace = "\r\n\t "
256
+ // this really needs to be replaced with character classes.
257
+ // XML allows all manner of ridiculous numbers and digits.
258
+ , number = "0124356789"
259
+ , letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
260
+ // (Letter | "_" | ":")
261
+ , quote = "'\""
262
+ , entity = number+letter+"#"
263
+ , attribEnd = whitespace + ">"
264
+ , CDATA = "[CDATA["
265
+ , DOCTYPE = "DOCTYPE"
266
+ , XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
267
+ , XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
268
+ , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
269
+
270
+ // turn all the string character sets into character class objects.
271
+ whitespace = charClass(whitespace)
272
+ number = charClass(number)
273
+ letter = charClass(letter)
274
+
275
+ // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
276
+ // This implementation works on strings, a single character at a time
277
+ // as such, it cannot ever support astral-plane characters (10000-EFFFF)
278
+ // without a significant breaking change to either this parser, or the
279
+ // JavaScript language. Implementation of an emoji-capable xml parser
280
+ // is left as an exercise for the reader.
281
+ 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]/
282
+
283
+ 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-]/
284
+
285
+ quote = charClass(quote)
286
+ entity = charClass(entity)
287
+ attribEnd = charClass(attribEnd)
288
+
289
+ function charClass (str) {
290
+ return str.split("").reduce(function (s, c) {
291
+ s[c] = true
292
+ return s
293
+ }, {})
294
+ }
295
+
296
+ function isRegExp (c) {
297
+ return Object.prototype.toString.call(c) === '[object RegExp]'
298
+ }
299
+
300
+ function is (charclass, c) {
301
+ return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]
302
+ }
303
+
304
+ function not (charclass, c) {
305
+ return !is(charclass, c)
306
+ }
307
+
308
+ var S = 0
309
+ sax.STATE =
310
+ { BEGIN : S++
311
+ , TEXT : S++ // general stuff
312
+ , TEXT_ENTITY : S++ // &amp and such.
313
+ , OPEN_WAKA : S++ // <
314
+ , SGML_DECL : S++ // <!BLARG
315
+ , SGML_DECL_QUOTED : S++ // <!BLARG foo "bar
316
+ , DOCTYPE : S++ // <!DOCTYPE
317
+ , DOCTYPE_QUOTED : S++ // <!DOCTYPE "//blah
318
+ , DOCTYPE_DTD : S++ // <!DOCTYPE "//blah" [ ...
319
+ , DOCTYPE_DTD_QUOTED : S++ // <!DOCTYPE "//blah" [ "foo
320
+ , COMMENT_STARTING : S++ // <!-
321
+ , COMMENT : S++ // <!--
322
+ , COMMENT_ENDING : S++ // <!-- blah -
323
+ , COMMENT_ENDED : S++ // <!-- blah --
324
+ , CDATA : S++ // <![CDATA[ something
325
+ , CDATA_ENDING : S++ // ]
326
+ , CDATA_ENDING_2 : S++ // ]]
327
+ , PROC_INST : S++ // <?hi
328
+ , PROC_INST_BODY : S++ // <?hi there
329
+ , PROC_INST_ENDING : S++ // <?hi "there" ?
330
+ , OPEN_TAG : S++ // <strong
331
+ , OPEN_TAG_SLASH : S++ // <strong /
332
+ , ATTRIB : S++ // <a
333
+ , ATTRIB_NAME : S++ // <a foo
334
+ , ATTRIB_NAME_SAW_WHITE : S++ // <a foo _
335
+ , ATTRIB_VALUE : S++ // <a foo=
336
+ , ATTRIB_VALUE_QUOTED : S++ // <a foo="bar
337
+ , ATTRIB_VALUE_CLOSED : S++ // <a foo="bar"
338
+ , ATTRIB_VALUE_UNQUOTED : S++ // <a foo=bar
339
+ , ATTRIB_VALUE_ENTITY_Q : S++ // <foo bar="&quot;"
340
+ , ATTRIB_VALUE_ENTITY_U : S++ // <foo bar=&quot;
341
+ , CLOSE_TAG : S++ // </a
342
+ , CLOSE_TAG_SAW_WHITE : S++ // </a >
343
+ , SCRIPT : S++ // <script> ...
344
+ , SCRIPT_ENDING : S++ // <script> ... <
345
+ }
346
+
347
+ sax.ENTITIES =
348
+ { "amp" : "&"
349
+ , "gt" : ">"
350
+ , "lt" : "<"
351
+ , "quot" : "\""
352
+ , "apos" : "'"
353
+ , "AElig" : 198
354
+ , "Aacute" : 193
355
+ , "Acirc" : 194
356
+ , "Agrave" : 192
357
+ , "Aring" : 197
358
+ , "Atilde" : 195
359
+ , "Auml" : 196
360
+ , "Ccedil" : 199
361
+ , "ETH" : 208
362
+ , "Eacute" : 201
363
+ , "Ecirc" : 202
364
+ , "Egrave" : 200
365
+ , "Euml" : 203
366
+ , "Iacute" : 205
367
+ , "Icirc" : 206
368
+ , "Igrave" : 204
369
+ , "Iuml" : 207
370
+ , "Ntilde" : 209
371
+ , "Oacute" : 211
372
+ , "Ocirc" : 212
373
+ , "Ograve" : 210
374
+ , "Oslash" : 216
375
+ , "Otilde" : 213
376
+ , "Ouml" : 214
377
+ , "THORN" : 222
378
+ , "Uacute" : 218
379
+ , "Ucirc" : 219
380
+ , "Ugrave" : 217
381
+ , "Uuml" : 220
382
+ , "Yacute" : 221
383
+ , "aacute" : 225
384
+ , "acirc" : 226
385
+ , "aelig" : 230
386
+ , "agrave" : 224
387
+ , "aring" : 229
388
+ , "atilde" : 227
389
+ , "auml" : 228
390
+ , "ccedil" : 231
391
+ , "eacute" : 233
392
+ , "ecirc" : 234
393
+ , "egrave" : 232
394
+ , "eth" : 240
395
+ , "euml" : 235
396
+ , "iacute" : 237
397
+ , "icirc" : 238
398
+ , "igrave" : 236
399
+ , "iuml" : 239
400
+ , "ntilde" : 241
401
+ , "oacute" : 243
402
+ , "ocirc" : 244
403
+ , "ograve" : 242
404
+ , "oslash" : 248
405
+ , "otilde" : 245
406
+ , "ouml" : 246
407
+ , "szlig" : 223
408
+ , "thorn" : 254
409
+ , "uacute" : 250
410
+ , "ucirc" : 251
411
+ , "ugrave" : 249
412
+ , "uuml" : 252
413
+ , "yacute" : 253
414
+ , "yuml" : 255
415
+ , "copy" : 169
416
+ , "reg" : 174
417
+ , "nbsp" : 160
418
+ , "iexcl" : 161
419
+ , "cent" : 162
420
+ , "pound" : 163
421
+ , "curren" : 164
422
+ , "yen" : 165
423
+ , "brvbar" : 166
424
+ , "sect" : 167
425
+ , "uml" : 168
426
+ , "ordf" : 170
427
+ , "laquo" : 171
428
+ , "not" : 172
429
+ , "shy" : 173
430
+ , "macr" : 175
431
+ , "deg" : 176
432
+ , "plusmn" : 177
433
+ , "sup1" : 185
434
+ , "sup2" : 178
435
+ , "sup3" : 179
436
+ , "acute" : 180
437
+ , "micro" : 181
438
+ , "para" : 182
439
+ , "middot" : 183
440
+ , "cedil" : 184
441
+ , "ordm" : 186
442
+ , "raquo" : 187
443
+ , "frac14" : 188
444
+ , "frac12" : 189
445
+ , "frac34" : 190
446
+ , "iquest" : 191
447
+ , "times" : 215
448
+ , "divide" : 247
449
+ , "OElig" : 338
450
+ , "oelig" : 339
451
+ , "Scaron" : 352
452
+ , "scaron" : 353
453
+ , "Yuml" : 376
454
+ , "fnof" : 402
455
+ , "circ" : 710
456
+ , "tilde" : 732
457
+ , "Alpha" : 913
458
+ , "Beta" : 914
459
+ , "Gamma" : 915
460
+ , "Delta" : 916
461
+ , "Epsilon" : 917
462
+ , "Zeta" : 918
463
+ , "Eta" : 919
464
+ , "Theta" : 920
465
+ , "Iota" : 921
466
+ , "Kappa" : 922
467
+ , "Lambda" : 923
468
+ , "Mu" : 924
469
+ , "Nu" : 925
470
+ , "Xi" : 926
471
+ , "Omicron" : 927
472
+ , "Pi" : 928
473
+ , "Rho" : 929
474
+ , "Sigma" : 931
475
+ , "Tau" : 932
476
+ , "Upsilon" : 933
477
+ , "Phi" : 934
478
+ , "Chi" : 935
479
+ , "Psi" : 936
480
+ , "Omega" : 937
481
+ , "alpha" : 945
482
+ , "beta" : 946
483
+ , "gamma" : 947
484
+ , "delta" : 948
485
+ , "epsilon" : 949
486
+ , "zeta" : 950
487
+ , "eta" : 951
488
+ , "theta" : 952
489
+ , "iota" : 953
490
+ , "kappa" : 954
491
+ , "lambda" : 955
492
+ , "mu" : 956
493
+ , "nu" : 957
494
+ , "xi" : 958
495
+ , "omicron" : 959
496
+ , "pi" : 960
497
+ , "rho" : 961
498
+ , "sigmaf" : 962
499
+ , "sigma" : 963
500
+ , "tau" : 964
501
+ , "upsilon" : 965
502
+ , "phi" : 966
503
+ , "chi" : 967
504
+ , "psi" : 968
505
+ , "omega" : 969
506
+ , "thetasym" : 977
507
+ , "upsih" : 978
508
+ , "piv" : 982
509
+ , "ensp" : 8194
510
+ , "emsp" : 8195
511
+ , "thinsp" : 8201
512
+ , "zwnj" : 8204
513
+ , "zwj" : 8205
514
+ , "lrm" : 8206
515
+ , "rlm" : 8207
516
+ , "ndash" : 8211
517
+ , "mdash" : 8212
518
+ , "lsquo" : 8216
519
+ , "rsquo" : 8217
520
+ , "sbquo" : 8218
521
+ , "ldquo" : 8220
522
+ , "rdquo" : 8221
523
+ , "bdquo" : 8222
524
+ , "dagger" : 8224
525
+ , "Dagger" : 8225
526
+ , "bull" : 8226
527
+ , "hellip" : 8230
528
+ , "permil" : 8240
529
+ , "prime" : 8242
530
+ , "Prime" : 8243
531
+ , "lsaquo" : 8249
532
+ , "rsaquo" : 8250
533
+ , "oline" : 8254
534
+ , "frasl" : 8260
535
+ , "euro" : 8364
536
+ , "image" : 8465
537
+ , "weierp" : 8472
538
+ , "real" : 8476
539
+ , "trade" : 8482
540
+ , "alefsym" : 8501
541
+ , "larr" : 8592
542
+ , "uarr" : 8593
543
+ , "rarr" : 8594
544
+ , "darr" : 8595
545
+ , "harr" : 8596
546
+ , "crarr" : 8629
547
+ , "lArr" : 8656
548
+ , "uArr" : 8657
549
+ , "rArr" : 8658
550
+ , "dArr" : 8659
551
+ , "hArr" : 8660
552
+ , "forall" : 8704
553
+ , "part" : 8706
554
+ , "exist" : 8707
555
+ , "empty" : 8709
556
+ , "nabla" : 8711
557
+ , "isin" : 8712
558
+ , "notin" : 8713
559
+ , "ni" : 8715
560
+ , "prod" : 8719
561
+ , "sum" : 8721
562
+ , "minus" : 8722
563
+ , "lowast" : 8727
564
+ , "radic" : 8730
565
+ , "prop" : 8733
566
+ , "infin" : 8734
567
+ , "ang" : 8736
568
+ , "and" : 8743
569
+ , "or" : 8744
570
+ , "cap" : 8745
571
+ , "cup" : 8746
572
+ , "int" : 8747
573
+ , "there4" : 8756
574
+ , "sim" : 8764
575
+ , "cong" : 8773
576
+ , "asymp" : 8776
577
+ , "ne" : 8800
578
+ , "equiv" : 8801
579
+ , "le" : 8804
580
+ , "ge" : 8805
581
+ , "sub" : 8834
582
+ , "sup" : 8835
583
+ , "nsub" : 8836
584
+ , "sube" : 8838
585
+ , "supe" : 8839
586
+ , "oplus" : 8853
587
+ , "otimes" : 8855
588
+ , "perp" : 8869
589
+ , "sdot" : 8901
590
+ , "lceil" : 8968
591
+ , "rceil" : 8969
592
+ , "lfloor" : 8970
593
+ , "rfloor" : 8971
594
+ , "lang" : 9001
595
+ , "rang" : 9002
596
+ , "loz" : 9674
597
+ , "spades" : 9824
598
+ , "clubs" : 9827
599
+ , "hearts" : 9829
600
+ , "diams" : 9830
601
+ }
602
+
603
+ Object.keys(sax.ENTITIES).forEach(function (key) {
604
+ var e = sax.ENTITIES[key]
605
+ var s = typeof e === 'number' ? String.fromCharCode(e) : e
606
+ sax.ENTITIES[key] = s
607
+ })
608
+
609
+ for (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S
610
+
611
+ // shorthand
612
+ S = sax.STATE
613
+
614
+ function emit (parser, event, data) {
615
+ parser[event] && parser[event](data)
616
+ }
617
+
618
+ function emitNode (parser, nodeType, data) {
619
+ if (parser.textNode) closeText(parser)
620
+ emit(parser, nodeType, data)
621
+ }
622
+
623
+ function closeText (parser) {
624
+ parser.textNode = textopts(parser.opt, parser.textNode)
625
+ if (parser.textNode) emit(parser, "ontext", parser.textNode)
626
+ parser.textNode = ""
627
+ }
628
+
629
+ function textopts (opt, text) {
630
+ if (opt.trim) text = text.trim()
631
+ if (opt.normalize) text = text.replace(/\s+/g, " ")
632
+ return text
633
+ }
634
+
635
+ function error (parser, er) {
636
+ closeText(parser)
637
+ if (parser.trackPosition) {
638
+ er += "\nLine: "+parser.line+
639
+ "\nColumn: "+parser.column+
640
+ "\nChar: "+parser.c
641
+ }
642
+ er = new Error(er)
643
+ parser.error = er
644
+ emit(parser, "onerror", er)
645
+ return parser
646
+ }
647
+
648
+ function end (parser) {
649
+ if (!parser.closedRoot) strictFail(parser, "Unclosed root tag")
650
+ if ((parser.state !== S.BEGIN) && (parser.state !== S.TEXT)) error(parser, "Unexpected end")
651
+ closeText(parser)
652
+ parser.c = ""
653
+ parser.closed = true
654
+ emit(parser, "onend")
655
+ SAXParser.call(parser, parser.strict, parser.opt)
656
+ return parser
657
+ }
658
+
659
+ function strictFail (parser, message) {
660
+ if (typeof parser !== 'object' || !(parser instanceof SAXParser))
661
+ throw new Error('bad call to strictFail');
662
+ if (parser.strict) error(parser, message)
663
+ }
664
+
665
+ function newTag (parser) {
666
+ if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
667
+ var parent = parser.tags[parser.tags.length - 1] || parser
668
+ , tag = parser.tag = { name : parser.tagName, attributes : {} }
669
+
670
+ // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
671
+ if (parser.opt.xmlns) tag.ns = parent.ns
672
+ parser.attribList.length = 0
673
+ }
674
+
675
+ function qname (name, attribute) {
676
+ var i = name.indexOf(":")
677
+ , qualName = i < 0 ? [ "", name ] : name.split(":")
678
+ , prefix = qualName[0]
679
+ , local = qualName[1]
680
+
681
+ // <x "xmlns"="http://foo">
682
+ if (attribute && name === "xmlns") {
683
+ prefix = "xmlns"
684
+ local = ""
685
+ }
686
+
687
+ return { prefix: prefix, local: local }
688
+ }
689
+
690
+ function attrib (parser) {
691
+ if (!parser.strict) parser.attribName = parser.attribName[parser.looseCase]()
692
+
693
+ if (parser.attribList.indexOf(parser.attribName) !== -1 ||
694
+ parser.tag.attributes.hasOwnProperty(parser.attribName)) {
695
+ return parser.attribName = parser.attribValue = ""
696
+ }
697
+
698
+ if (parser.opt.xmlns) {
699
+ var qn = qname(parser.attribName, true)
700
+ , prefix = qn.prefix
701
+ , local = qn.local
702
+
703
+ if (prefix === "xmlns") {
704
+ // namespace binding attribute; push the binding into scope
705
+ if (local === "xml" && parser.attribValue !== XML_NAMESPACE) {
706
+ strictFail( parser
707
+ , "xml: prefix must be bound to " + XML_NAMESPACE + "\n"
708
+ + "Actual: " + parser.attribValue )
709
+ } else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) {
710
+ strictFail( parser
711
+ , "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\n"
712
+ + "Actual: " + parser.attribValue )
713
+ } else {
714
+ var tag = parser.tag
715
+ , parent = parser.tags[parser.tags.length - 1] || parser
716
+ if (tag.ns === parent.ns) {
717
+ tag.ns = Object.create(parent.ns)
718
+ }
719
+ tag.ns[local] = parser.attribValue
720
+ }
721
+ }
722
+
723
+ // defer onattribute events until all attributes have been seen
724
+ // so any new bindings can take effect; preserve attribute order
725
+ // so deferred events can be emitted in document order
726
+ parser.attribList.push([parser.attribName, parser.attribValue])
727
+ } else {
728
+ // in non-xmlns mode, we can emit the event right away
729
+ parser.tag.attributes[parser.attribName] = parser.attribValue
730
+ emitNode( parser
731
+ , "onattribute"
732
+ , { name: parser.attribName
733
+ , value: parser.attribValue } )
734
+ }
735
+
736
+ parser.attribName = parser.attribValue = ""
737
+ }
738
+
739
+ function openTag (parser, selfClosing) {
740
+ if (parser.opt.xmlns) {
741
+ // emit namespace binding events
742
+ var tag = parser.tag
743
+
744
+ // add namespace info to tag
745
+ var qn = qname(parser.tagName)
746
+ tag.prefix = qn.prefix
747
+ tag.local = qn.local
748
+ tag.uri = tag.ns[qn.prefix] || ""
749
+
750
+ if (tag.prefix && !tag.uri) {
751
+ strictFail(parser, "Unbound namespace prefix: "
752
+ + JSON.stringify(parser.tagName))
753
+ tag.uri = qn.prefix
754
+ }
755
+
756
+ var parent = parser.tags[parser.tags.length - 1] || parser
757
+ if (tag.ns && parent.ns !== tag.ns) {
758
+ Object.keys(tag.ns).forEach(function (p) {
759
+ emitNode( parser
760
+ , "onopennamespace"
761
+ , { prefix: p , uri: tag.ns[p] } )
762
+ })
763
+ }
764
+
765
+ // handle deferred onattribute events
766
+ // Note: do not apply default ns to attributes:
767
+ // http://www.w3.org/TR/REC-xml-names/#defaulting
768
+ for (var i = 0, l = parser.attribList.length; i < l; i ++) {
769
+ var nv = parser.attribList[i]
770
+ var name = nv[0]
771
+ , value = nv[1]
772
+ , qualName = qname(name, true)
773
+ , prefix = qualName.prefix
774
+ , local = qualName.local
775
+ , uri = prefix == "" ? "" : (tag.ns[prefix] || "")
776
+ , a = { name: name
777
+ , value: value
778
+ , prefix: prefix
779
+ , local: local
780
+ , uri: uri
781
+ }
782
+
783
+ // if there's any attributes with an undefined namespace,
784
+ // then fail on them now.
785
+ if (prefix && prefix != "xmlns" && !uri) {
786
+ strictFail(parser, "Unbound namespace prefix: "
787
+ + JSON.stringify(prefix))
788
+ a.uri = prefix
789
+ }
790
+ parser.tag.attributes[name] = a
791
+ emitNode(parser, "onattribute", a)
792
+ }
793
+ parser.attribList.length = 0
794
+ }
795
+
796
+ parser.tag.isSelfClosing = !!selfClosing
797
+
798
+ // process the tag
799
+ parser.sawRoot = true
800
+ parser.tags.push(parser.tag)
801
+ emitNode(parser, "onopentag", parser.tag)
802
+ if (!selfClosing) {
803
+ // special case for <script> in non-strict mode.
804
+ if (!parser.noscript && parser.tagName.toLowerCase() === "script") {
805
+ parser.state = S.SCRIPT
806
+ } else {
807
+ parser.state = S.TEXT
808
+ }
809
+ parser.tag = null
810
+ parser.tagName = ""
811
+ }
812
+ parser.attribName = parser.attribValue = ""
813
+ parser.attribList.length = 0
814
+ }
815
+
816
+ function closeTag (parser) {
817
+ if (!parser.tagName) {
818
+ strictFail(parser, "Weird empty close tag.")
819
+ parser.textNode += "</>"
820
+ parser.state = S.TEXT
821
+ return
822
+ }
823
+
824
+ if (parser.script) {
825
+ if (parser.tagName !== "script") {
826
+ parser.script += "</" + parser.tagName + ">"
827
+ parser.tagName = ""
828
+ parser.state = S.SCRIPT
829
+ return
830
+ }
831
+ emitNode(parser, "onscript", parser.script)
832
+ parser.script = ""
833
+ }
834
+
835
+ // first make sure that the closing tag actually exists.
836
+ // <a><b></c></b></a> will close everything, otherwise.
837
+ var t = parser.tags.length
838
+ var tagName = parser.tagName
839
+ if (!parser.strict) tagName = tagName[parser.looseCase]()
840
+ var closeTo = tagName
841
+ while (t --) {
842
+ var close = parser.tags[t]
843
+ if (close.name !== closeTo) {
844
+ // fail the first time in strict mode
845
+ strictFail(parser, "Unexpected close tag")
846
+ } else break
847
+ }
848
+
849
+ // didn't find it. we already failed for strict, so just abort.
850
+ if (t < 0) {
851
+ strictFail(parser, "Unmatched closing tag: "+parser.tagName)
852
+ parser.textNode += "</" + parser.tagName + ">"
853
+ parser.state = S.TEXT
854
+ return
855
+ }
856
+ parser.tagName = tagName
857
+ var s = parser.tags.length
858
+ while (s --> t) {
859
+ var tag = parser.tag = parser.tags.pop()
860
+ parser.tagName = parser.tag.name
861
+ emitNode(parser, "onclosetag", parser.tagName)
862
+
863
+ var x = {}
864
+ for (var i in tag.ns) x[i] = tag.ns[i]
865
+
866
+ var parent = parser.tags[parser.tags.length - 1] || parser
867
+ if (parser.opt.xmlns && tag.ns !== parent.ns) {
868
+ // remove namespace bindings introduced by tag
869
+ Object.keys(tag.ns).forEach(function (p) {
870
+ var n = tag.ns[p]
871
+ emitNode(parser, "onclosenamespace", { prefix: p, uri: n })
872
+ })
873
+ }
874
+ }
875
+ if (t === 0) parser.closedRoot = true
876
+ parser.tagName = parser.attribValue = parser.attribName = ""
877
+ parser.attribList.length = 0
878
+ parser.state = S.TEXT
879
+ }
880
+
881
+ function parseEntity (parser) {
882
+ var entity = parser.entity
883
+ , entityLC = entity.toLowerCase()
884
+ , num
885
+ , numStr = ""
886
+ if (parser.ENTITIES[entity])
887
+ return parser.ENTITIES[entity]
888
+ if (parser.ENTITIES[entityLC])
889
+ return parser.ENTITIES[entityLC]
890
+ entity = entityLC
891
+ if (entity.charAt(0) === "#") {
892
+ if (entity.charAt(1) === "x") {
893
+ entity = entity.slice(2)
894
+ num = parseInt(entity, 16)
895
+ numStr = num.toString(16)
896
+ } else {
897
+ entity = entity.slice(1)
898
+ num = parseInt(entity, 10)
899
+ numStr = num.toString(10)
900
+ }
901
+ }
902
+ entity = entity.replace(/^0+/, "")
903
+ if (numStr.toLowerCase() !== entity) {
904
+ strictFail(parser, "Invalid character entity")
905
+ return "&"+parser.entity + ";"
906
+ }
907
+ return String.fromCharCode(num)
908
+ }
909
+
910
+ function write (chunk) {
911
+ var parser = this
912
+ if (this.error) throw this.error
913
+ if (parser.closed) return error(parser,
914
+ "Cannot write after close. Assign an onready handler.")
915
+ if (chunk === null) return end(parser)
916
+ var i = 0, c = ""
917
+ while (parser.c = c = chunk.charAt(i++)) {
918
+ if (parser.trackPosition) {
919
+ parser.position ++
920
+ if (c === "\n") {
921
+ parser.line ++
922
+ parser.column = 0
923
+ } else parser.column ++
924
+ }
925
+ switch (parser.state) {
926
+
927
+ case S.BEGIN:
928
+ if (c === "<") {
929
+ parser.state = S.OPEN_WAKA
930
+ parser.startTagPosition = parser.position
931
+ } else if (not(whitespace,c)) {
932
+ // have to process this as a text node.
933
+ // weird, but happens.
934
+ strictFail(parser, "Non-whitespace before first tag.")
935
+ parser.textNode = c
936
+ parser.state = S.TEXT
937
+ }
938
+ continue
939
+
940
+ case S.TEXT:
941
+ if (parser.sawRoot && !parser.closedRoot) {
942
+ var starti = i-1
943
+ while (c && c!=="<" && c!=="&") {
944
+ c = chunk.charAt(i++)
945
+ if (c && parser.trackPosition) {
946
+ parser.position ++
947
+ if (c === "\n") {
948
+ parser.line ++
949
+ parser.column = 0
950
+ } else parser.column ++
951
+ }
952
+ }
953
+ parser.textNode += chunk.substring(starti, i-1)
954
+ }
955
+ if (c === "<") {
956
+ parser.state = S.OPEN_WAKA
957
+ parser.startTagPosition = parser.position
958
+ } else {
959
+ if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot))
960
+ strictFail(parser, "Text data outside of root node.")
961
+ if (c === "&") parser.state = S.TEXT_ENTITY
962
+ else parser.textNode += c
963
+ }
964
+ continue
965
+
966
+ case S.SCRIPT:
967
+ // only non-strict
968
+ if (c === "<") {
969
+ parser.state = S.SCRIPT_ENDING
970
+ } else parser.script += c
971
+ continue
972
+
973
+ case S.SCRIPT_ENDING:
974
+ if (c === "/") {
975
+ parser.state = S.CLOSE_TAG
976
+ } else {
977
+ parser.script += "<" + c
978
+ parser.state = S.SCRIPT
979
+ }
980
+ continue
981
+
982
+ case S.OPEN_WAKA:
983
+ // either a /, ?, !, or text is coming next.
984
+ if (c === "!") {
985
+ parser.state = S.SGML_DECL
986
+ parser.sgmlDecl = ""
987
+ } else if (is(whitespace, c)) {
988
+ // wait for it...
989
+ } else if (is(nameStart,c)) {
990
+ parser.state = S.OPEN_TAG
991
+ parser.tagName = c
992
+ } else if (c === "/") {
993
+ parser.state = S.CLOSE_TAG
994
+ parser.tagName = ""
995
+ } else if (c === "?") {
996
+ parser.state = S.PROC_INST
997
+ parser.procInstName = parser.procInstBody = ""
998
+ } else {
999
+ strictFail(parser, "Unencoded <")
1000
+ // if there was some whitespace, then add that in.
1001
+ if (parser.startTagPosition + 1 < parser.position) {
1002
+ var pad = parser.position - parser.startTagPosition
1003
+ c = new Array(pad).join(" ") + c
1004
+ }
1005
+ parser.textNode += "<" + c
1006
+ parser.state = S.TEXT
1007
+ }
1008
+ continue
1009
+
1010
+ case S.SGML_DECL:
1011
+ if ((parser.sgmlDecl+c).toUpperCase() === CDATA) {
1012
+ emitNode(parser, "onopencdata")
1013
+ parser.state = S.CDATA
1014
+ parser.sgmlDecl = ""
1015
+ parser.cdata = ""
1016
+ } else if (parser.sgmlDecl+c === "--") {
1017
+ parser.state = S.COMMENT
1018
+ parser.comment = ""
1019
+ parser.sgmlDecl = ""
1020
+ } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) {
1021
+ parser.state = S.DOCTYPE
1022
+ if (parser.doctype || parser.sawRoot) strictFail(parser,
1023
+ "Inappropriately located doctype declaration")
1024
+ parser.doctype = ""
1025
+ parser.sgmlDecl = ""
1026
+ } else if (c === ">") {
1027
+ emitNode(parser, "onsgmldeclaration", parser.sgmlDecl)
1028
+ parser.sgmlDecl = ""
1029
+ parser.state = S.TEXT
1030
+ } else if (is(quote, c)) {
1031
+ parser.state = S.SGML_DECL_QUOTED
1032
+ parser.sgmlDecl += c
1033
+ } else parser.sgmlDecl += c
1034
+ continue
1035
+
1036
+ case S.SGML_DECL_QUOTED:
1037
+ if (c === parser.q) {
1038
+ parser.state = S.SGML_DECL
1039
+ parser.q = ""
1040
+ }
1041
+ parser.sgmlDecl += c
1042
+ continue
1043
+
1044
+ case S.DOCTYPE:
1045
+ if (c === ">") {
1046
+ parser.state = S.TEXT
1047
+ emitNode(parser, "ondoctype", parser.doctype)
1048
+ parser.doctype = true // just remember that we saw it.
1049
+ } else {
1050
+ parser.doctype += c
1051
+ if (c === "[") parser.state = S.DOCTYPE_DTD
1052
+ else if (is(quote, c)) {
1053
+ parser.state = S.DOCTYPE_QUOTED
1054
+ parser.q = c
1055
+ }
1056
+ }
1057
+ continue
1058
+
1059
+ case S.DOCTYPE_QUOTED:
1060
+ parser.doctype += c
1061
+ if (c === parser.q) {
1062
+ parser.q = ""
1063
+ parser.state = S.DOCTYPE
1064
+ }
1065
+ continue
1066
+
1067
+ case S.DOCTYPE_DTD:
1068
+ parser.doctype += c
1069
+ if (c === "]") parser.state = S.DOCTYPE
1070
+ else if (is(quote,c)) {
1071
+ parser.state = S.DOCTYPE_DTD_QUOTED
1072
+ parser.q = c
1073
+ }
1074
+ continue
1075
+
1076
+ case S.DOCTYPE_DTD_QUOTED:
1077
+ parser.doctype += c
1078
+ if (c === parser.q) {
1079
+ parser.state = S.DOCTYPE_DTD
1080
+ parser.q = ""
1081
+ }
1082
+ continue
1083
+
1084
+ case S.COMMENT:
1085
+ if (c === "-") parser.state = S.COMMENT_ENDING
1086
+ else parser.comment += c
1087
+ continue
1088
+
1089
+ case S.COMMENT_ENDING:
1090
+ if (c === "-") {
1091
+ parser.state = S.COMMENT_ENDED
1092
+ parser.comment = textopts(parser.opt, parser.comment)
1093
+ if (parser.comment) emitNode(parser, "oncomment", parser.comment)
1094
+ parser.comment = ""
1095
+ } else {
1096
+ parser.comment += "-" + c
1097
+ parser.state = S.COMMENT
1098
+ }
1099
+ continue
1100
+
1101
+ case S.COMMENT_ENDED:
1102
+ if (c !== ">") {
1103
+ strictFail(parser, "Malformed comment")
1104
+ // allow <!-- blah -- bloo --> in non-strict mode,
1105
+ // which is a comment of " blah -- bloo "
1106
+ parser.comment += "--" + c
1107
+ parser.state = S.COMMENT
1108
+ } else parser.state = S.TEXT
1109
+ continue
1110
+
1111
+ case S.CDATA:
1112
+ if (c === "]") parser.state = S.CDATA_ENDING
1113
+ else parser.cdata += c
1114
+ continue
1115
+
1116
+ case S.CDATA_ENDING:
1117
+ if (c === "]") parser.state = S.CDATA_ENDING_2
1118
+ else {
1119
+ parser.cdata += "]" + c
1120
+ parser.state = S.CDATA
1121
+ }
1122
+ continue
1123
+
1124
+ case S.CDATA_ENDING_2:
1125
+ if (c === ">") {
1126
+ if (parser.cdata) emitNode(parser, "oncdata", parser.cdata)
1127
+ emitNode(parser, "onclosecdata")
1128
+ parser.cdata = ""
1129
+ parser.state = S.TEXT
1130
+ } else if (c === "]") {
1131
+ parser.cdata += "]"
1132
+ } else {
1133
+ parser.cdata += "]]" + c
1134
+ parser.state = S.CDATA
1135
+ }
1136
+ continue
1137
+
1138
+ case S.PROC_INST:
1139
+ if (c === "?") parser.state = S.PROC_INST_ENDING
1140
+ else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY
1141
+ else parser.procInstName += c
1142
+ continue
1143
+
1144
+ case S.PROC_INST_BODY:
1145
+ if (!parser.procInstBody && is(whitespace, c)) continue
1146
+ else if (c === "?") parser.state = S.PROC_INST_ENDING
1147
+ else parser.procInstBody += c
1148
+ continue
1149
+
1150
+ case S.PROC_INST_ENDING:
1151
+ if (c === ">") {
1152
+ emitNode(parser, "onprocessinginstruction", {
1153
+ name : parser.procInstName,
1154
+ body : parser.procInstBody
1155
+ })
1156
+ parser.procInstName = parser.procInstBody = ""
1157
+ parser.state = S.TEXT
1158
+ } else {
1159
+ parser.procInstBody += "?" + c
1160
+ parser.state = S.PROC_INST_BODY
1161
+ }
1162
+ continue
1163
+
1164
+ case S.OPEN_TAG:
1165
+ if (is(nameBody, c)) parser.tagName += c
1166
+ else {
1167
+ newTag(parser)
1168
+ if (c === ">") openTag(parser)
1169
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH
1170
+ else {
1171
+ if (not(whitespace, c)) strictFail(
1172
+ parser, "Invalid character in tag name")
1173
+ parser.state = S.ATTRIB
1174
+ }
1175
+ }
1176
+ continue
1177
+
1178
+ case S.OPEN_TAG_SLASH:
1179
+ if (c === ">") {
1180
+ openTag(parser, true)
1181
+ closeTag(parser)
1182
+ } else {
1183
+ strictFail(parser, "Forward-slash in opening tag not followed by >")
1184
+ parser.state = S.ATTRIB
1185
+ }
1186
+ continue
1187
+
1188
+ case S.ATTRIB:
1189
+ // haven't read the attribute name yet.
1190
+ if (is(whitespace, c)) continue
1191
+ else if (c === ">") openTag(parser)
1192
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH
1193
+ else if (is(nameStart, c)) {
1194
+ parser.attribName = c
1195
+ parser.attribValue = ""
1196
+ parser.state = S.ATTRIB_NAME
1197
+ } else strictFail(parser, "Invalid attribute name")
1198
+ continue
1199
+
1200
+ case S.ATTRIB_NAME:
1201
+ if (c === "=") parser.state = S.ATTRIB_VALUE
1202
+ else if (c === ">") {
1203
+ strictFail(parser, "Attribute without value")
1204
+ parser.attribValue = parser.attribName
1205
+ attrib(parser)
1206
+ openTag(parser)
1207
+ }
1208
+ else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE
1209
+ else if (is(nameBody, c)) parser.attribName += c
1210
+ else strictFail(parser, "Invalid attribute name")
1211
+ continue
1212
+
1213
+ case S.ATTRIB_NAME_SAW_WHITE:
1214
+ if (c === "=") parser.state = S.ATTRIB_VALUE
1215
+ else if (is(whitespace, c)) continue
1216
+ else {
1217
+ strictFail(parser, "Attribute without value")
1218
+ parser.tag.attributes[parser.attribName] = ""
1219
+ parser.attribValue = ""
1220
+ emitNode(parser, "onattribute",
1221
+ { name : parser.attribName, value : "" })
1222
+ parser.attribName = ""
1223
+ if (c === ">") openTag(parser)
1224
+ else if (is(nameStart, c)) {
1225
+ parser.attribName = c
1226
+ parser.state = S.ATTRIB_NAME
1227
+ } else {
1228
+ strictFail(parser, "Invalid attribute name")
1229
+ parser.state = S.ATTRIB
1230
+ }
1231
+ }
1232
+ continue
1233
+
1234
+ case S.ATTRIB_VALUE:
1235
+ if (is(whitespace, c)) continue
1236
+ else if (is(quote, c)) {
1237
+ parser.q = c
1238
+ parser.state = S.ATTRIB_VALUE_QUOTED
1239
+ } else {
1240
+ strictFail(parser, "Unquoted attribute value")
1241
+ parser.state = S.ATTRIB_VALUE_UNQUOTED
1242
+ parser.attribValue = c
1243
+ }
1244
+ continue
1245
+
1246
+ case S.ATTRIB_VALUE_QUOTED:
1247
+ if (c !== parser.q) {
1248
+ if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_Q
1249
+ else parser.attribValue += c
1250
+ continue
1251
+ }
1252
+ attrib(parser)
1253
+ parser.q = ""
1254
+ parser.state = S.ATTRIB_VALUE_CLOSED
1255
+ continue
1256
+
1257
+ case S.ATTRIB_VALUE_CLOSED:
1258
+ if (is(whitespace, c)) {
1259
+ parser.state = S.ATTRIB
1260
+ } else if (c === ">") openTag(parser)
1261
+ else if (c === "/") parser.state = S.OPEN_TAG_SLASH
1262
+ else if (is(nameStart, c)) {
1263
+ strictFail(parser, "No whitespace between attributes")
1264
+ parser.attribName = c
1265
+ parser.attribValue = ""
1266
+ parser.state = S.ATTRIB_NAME
1267
+ } else strictFail(parser, "Invalid attribute name")
1268
+ continue
1269
+
1270
+ case S.ATTRIB_VALUE_UNQUOTED:
1271
+ if (not(attribEnd,c)) {
1272
+ if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U
1273
+ else parser.attribValue += c
1274
+ continue
1275
+ }
1276
+ attrib(parser)
1277
+ if (c === ">") openTag(parser)
1278
+ else parser.state = S.ATTRIB
1279
+ continue
1280
+
1281
+ case S.CLOSE_TAG:
1282
+ if (!parser.tagName) {
1283
+ if (is(whitespace, c)) continue
1284
+ else if (not(nameStart, c)) {
1285
+ if (parser.script) {
1286
+ parser.script += "</" + c
1287
+ parser.state = S.SCRIPT
1288
+ } else {
1289
+ strictFail(parser, "Invalid tagname in closing tag.")
1290
+ }
1291
+ } else parser.tagName = c
1292
+ }
1293
+ else if (c === ">") closeTag(parser)
1294
+ else if (is(nameBody, c)) parser.tagName += c
1295
+ else if (parser.script) {
1296
+ parser.script += "</" + parser.tagName
1297
+ parser.tagName = ""
1298
+ parser.state = S.SCRIPT
1299
+ } else {
1300
+ if (not(whitespace, c)) strictFail(parser,
1301
+ "Invalid tagname in closing tag")
1302
+ parser.state = S.CLOSE_TAG_SAW_WHITE
1303
+ }
1304
+ continue
1305
+
1306
+ case S.CLOSE_TAG_SAW_WHITE:
1307
+ if (is(whitespace, c)) continue
1308
+ if (c === ">") closeTag(parser)
1309
+ else strictFail(parser, "Invalid characters in closing tag")
1310
+ continue
1311
+
1312
+ case S.TEXT_ENTITY:
1313
+ case S.ATTRIB_VALUE_ENTITY_Q:
1314
+ case S.ATTRIB_VALUE_ENTITY_U:
1315
+ switch(parser.state) {
1316
+ case S.TEXT_ENTITY:
1317
+ var returnState = S.TEXT, buffer = "textNode"
1318
+ break
1319
+
1320
+ case S.ATTRIB_VALUE_ENTITY_Q:
1321
+ var returnState = S.ATTRIB_VALUE_QUOTED, buffer = "attribValue"
1322
+ break
1323
+
1324
+ case S.ATTRIB_VALUE_ENTITY_U:
1325
+ var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = "attribValue"
1326
+ break
1327
+ }
1328
+ if (c === ";") {
1329
+ parser[buffer] += parseEntity(parser)
1330
+ parser.entity = ""
1331
+ parser.state = returnState
1332
+ }
1333
+ else if (is(entity, c)) parser.entity += c
1334
+ else {
1335
+ strictFail(parser, "Invalid character entity")
1336
+ parser[buffer] += "&" + parser.entity + c
1337
+ parser.entity = ""
1338
+ parser.state = returnState
1339
+ }
1340
+ continue
1341
+
1342
+ default:
1343
+ throw new Error(parser, "Unknown state: " + parser.state)
1344
+ }
1345
+ } // while
1346
+ // cdata blocks can get very big under normal conditions. emit and move on.
1347
+ // if (parser.state === S.CDATA && parser.cdata) {
1348
+ // emitNode(parser, "oncdata", parser.cdata)
1349
+ // parser.cdata = ""
1350
+ // }
1351
+ if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser)
1352
+ return parser
1353
+ }
1354
+
1355
+ })(typeof exports === "undefined" ? sax = {} : exports)