ahmad-module 1.0.0

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.

Potentially problematic release.


This version of ahmad-module might be problematic. Click here for more details.

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 +106 -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 +31 -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 +23 -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 +63 -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 +17 -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 +84 -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 +25 -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 +27 -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 +40 -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 +42 -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 +61 -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 +52 -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 +59 -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 +65 -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 +54 -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 +43 -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 +39 -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 +33 -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 +43 -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 +31 -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 +20 -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 +54 -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 +60 -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 +44 -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 +49 -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 +35 -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 +43 -0
  463. package/punycode/LICENSE-MIT.txt +20 -0
  464. package/punycode/README.md +122 -0
  465. package/punycode/package.json +58 -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 +54 -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 +86 -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 +51 -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 +34 -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 +38 -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 +60 -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 +78 -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 +58 -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 +77 -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 +49 -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 +22 -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 +47 -0
  725. package/xml2js/text.coffee +11 -0
  726. package/xml2js/text.xml +485 -0
  727. package/youtube-search/.travis.yml +5 -0
  728. package/youtube-search/README.md +61 -0
  729. package/youtube-search/index.d.ts +77 -0
  730. package/youtube-search/index.js +111 -0
  731. package/youtube-search/package.json +29 -0
  732. package/youtube-search/tests/test-search.js +32 -0
  733. package/ytdl-core/LICENSE +21 -0
  734. package/ytdl-core/README.md +238 -0
  735. package/ytdl-core/lib/cache.js +54 -0
  736. package/ytdl-core/lib/format-utils.js +250 -0
  737. package/ytdl-core/lib/formats.js +524 -0
  738. package/ytdl-core/lib/index.js +214 -0
  739. package/ytdl-core/lib/info-extras.js +365 -0
  740. package/ytdl-core/lib/info.js +495 -0
  741. package/ytdl-core/lib/sig.js +122 -0
  742. package/ytdl-core/lib/url-utils.js +91 -0
  743. package/ytdl-core/lib/utils.js +286 -0
  744. package/ytdl-core/node_modules/sax/LICENSE +41 -0
  745. package/ytdl-core/node_modules/sax/README.md +225 -0
  746. package/ytdl-core/node_modules/sax/lib/sax.js +1565 -0
  747. package/ytdl-core/node_modules/sax/package.json +25 -0
  748. package/ytdl-core/package.json +61 -0
  749. package/ytdl-core/typings/index.d.ts +426 -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 +33 -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
@@ -0,0 +1,315 @@
1
+ // Copyright 2012 Joyent, Inc. All rights reserved.
2
+
3
+ var assert = require('assert-plus');
4
+ var util = require('util');
5
+ var utils = require('./utils');
6
+
7
+
8
+
9
+ ///--- Globals
10
+
11
+ var HASH_ALGOS = utils.HASH_ALGOS;
12
+ var PK_ALGOS = utils.PK_ALGOS;
13
+ var HttpSignatureError = utils.HttpSignatureError;
14
+ var InvalidAlgorithmError = utils.InvalidAlgorithmError;
15
+ var validateAlgorithm = utils.validateAlgorithm;
16
+
17
+ var State = {
18
+ New: 0,
19
+ Params: 1
20
+ };
21
+
22
+ var ParamsState = {
23
+ Name: 0,
24
+ Quote: 1,
25
+ Value: 2,
26
+ Comma: 3
27
+ };
28
+
29
+
30
+ ///--- Specific Errors
31
+
32
+
33
+ function ExpiredRequestError(message) {
34
+ HttpSignatureError.call(this, message, ExpiredRequestError);
35
+ }
36
+ util.inherits(ExpiredRequestError, HttpSignatureError);
37
+
38
+
39
+ function InvalidHeaderError(message) {
40
+ HttpSignatureError.call(this, message, InvalidHeaderError);
41
+ }
42
+ util.inherits(InvalidHeaderError, HttpSignatureError);
43
+
44
+
45
+ function InvalidParamsError(message) {
46
+ HttpSignatureError.call(this, message, InvalidParamsError);
47
+ }
48
+ util.inherits(InvalidParamsError, HttpSignatureError);
49
+
50
+
51
+ function MissingHeaderError(message) {
52
+ HttpSignatureError.call(this, message, MissingHeaderError);
53
+ }
54
+ util.inherits(MissingHeaderError, HttpSignatureError);
55
+
56
+ function StrictParsingError(message) {
57
+ HttpSignatureError.call(this, message, StrictParsingError);
58
+ }
59
+ util.inherits(StrictParsingError, HttpSignatureError);
60
+
61
+ ///--- Exported API
62
+
63
+ module.exports = {
64
+
65
+ /**
66
+ * Parses the 'Authorization' header out of an http.ServerRequest object.
67
+ *
68
+ * Note that this API will fully validate the Authorization header, and throw
69
+ * on any error. It will not however check the signature, or the keyId format
70
+ * as those are specific to your environment. You can use the options object
71
+ * to pass in extra constraints.
72
+ *
73
+ * As a response object you can expect this:
74
+ *
75
+ * {
76
+ * "scheme": "Signature",
77
+ * "params": {
78
+ * "keyId": "foo",
79
+ * "algorithm": "rsa-sha256",
80
+ * "headers": [
81
+ * "date" or "x-date",
82
+ * "digest"
83
+ * ],
84
+ * "signature": "base64"
85
+ * },
86
+ * "signingString": "ready to be passed to crypto.verify()"
87
+ * }
88
+ *
89
+ * @param {Object} request an http.ServerRequest.
90
+ * @param {Object} options an optional options object with:
91
+ * - clockSkew: allowed clock skew in seconds (default 300).
92
+ * - headers: required header names (def: date or x-date)
93
+ * - algorithms: algorithms to support (default: all).
94
+ * - strict: should enforce latest spec parsing
95
+ * (default: false).
96
+ * @return {Object} parsed out object (see above).
97
+ * @throws {TypeError} on invalid input.
98
+ * @throws {InvalidHeaderError} on an invalid Authorization header error.
99
+ * @throws {InvalidParamsError} if the params in the scheme are invalid.
100
+ * @throws {MissingHeaderError} if the params indicate a header not present,
101
+ * either in the request headers from the params,
102
+ * or not in the params from a required header
103
+ * in options.
104
+ * @throws {StrictParsingError} if old attributes are used in strict parsing
105
+ * mode.
106
+ * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.
107
+ */
108
+ parseRequest: function parseRequest(request, options) {
109
+ assert.object(request, 'request');
110
+ assert.object(request.headers, 'request.headers');
111
+ if (options === undefined) {
112
+ options = {};
113
+ }
114
+ if (options.headers === undefined) {
115
+ options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];
116
+ }
117
+ assert.object(options, 'options');
118
+ assert.arrayOfString(options.headers, 'options.headers');
119
+ assert.optionalFinite(options.clockSkew, 'options.clockSkew');
120
+
121
+ var authzHeaderName = options.authorizationHeaderName || 'authorization';
122
+
123
+ if (!request.headers[authzHeaderName]) {
124
+ throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +
125
+ 'present in the request');
126
+ }
127
+
128
+ options.clockSkew = options.clockSkew || 300;
129
+
130
+
131
+ var i = 0;
132
+ var state = State.New;
133
+ var substate = ParamsState.Name;
134
+ var tmpName = '';
135
+ var tmpValue = '';
136
+
137
+ var parsed = {
138
+ scheme: '',
139
+ params: {},
140
+ signingString: ''
141
+ };
142
+
143
+ var authz = request.headers[authzHeaderName];
144
+ for (i = 0; i < authz.length; i++) {
145
+ var c = authz.charAt(i);
146
+
147
+ switch (Number(state)) {
148
+
149
+ case State.New:
150
+ if (c !== ' ') parsed.scheme += c;
151
+ else state = State.Params;
152
+ break;
153
+
154
+ case State.Params:
155
+ switch (Number(substate)) {
156
+
157
+ case ParamsState.Name:
158
+ var code = c.charCodeAt(0);
159
+ // restricted name of A-Z / a-z
160
+ if ((code >= 0x41 && code <= 0x5a) || // A-Z
161
+ (code >= 0x61 && code <= 0x7a)) { // a-z
162
+ tmpName += c;
163
+ } else if (c === '=') {
164
+ if (tmpName.length === 0)
165
+ throw new InvalidHeaderError('bad param format');
166
+ substate = ParamsState.Quote;
167
+ } else {
168
+ throw new InvalidHeaderError('bad param format');
169
+ }
170
+ break;
171
+
172
+ case ParamsState.Quote:
173
+ if (c === '"') {
174
+ tmpValue = '';
175
+ substate = ParamsState.Value;
176
+ } else {
177
+ throw new InvalidHeaderError('bad param format');
178
+ }
179
+ break;
180
+
181
+ case ParamsState.Value:
182
+ if (c === '"') {
183
+ parsed.params[tmpName] = tmpValue;
184
+ substate = ParamsState.Comma;
185
+ } else {
186
+ tmpValue += c;
187
+ }
188
+ break;
189
+
190
+ case ParamsState.Comma:
191
+ if (c === ',') {
192
+ tmpName = '';
193
+ substate = ParamsState.Name;
194
+ } else {
195
+ throw new InvalidHeaderError('bad param format');
196
+ }
197
+ break;
198
+
199
+ default:
200
+ throw new Error('Invalid substate');
201
+ }
202
+ break;
203
+
204
+ default:
205
+ throw new Error('Invalid substate');
206
+ }
207
+
208
+ }
209
+
210
+ if (!parsed.params.headers || parsed.params.headers === '') {
211
+ if (request.headers['x-date']) {
212
+ parsed.params.headers = ['x-date'];
213
+ } else {
214
+ parsed.params.headers = ['date'];
215
+ }
216
+ } else {
217
+ parsed.params.headers = parsed.params.headers.split(' ');
218
+ }
219
+
220
+ // Minimally validate the parsed object
221
+ if (!parsed.scheme || parsed.scheme !== 'Signature')
222
+ throw new InvalidHeaderError('scheme was not "Signature"');
223
+
224
+ if (!parsed.params.keyId)
225
+ throw new InvalidHeaderError('keyId was not specified');
226
+
227
+ if (!parsed.params.algorithm)
228
+ throw new InvalidHeaderError('algorithm was not specified');
229
+
230
+ if (!parsed.params.signature)
231
+ throw new InvalidHeaderError('signature was not specified');
232
+
233
+ // Check the algorithm against the official list
234
+ parsed.params.algorithm = parsed.params.algorithm.toLowerCase();
235
+ try {
236
+ validateAlgorithm(parsed.params.algorithm);
237
+ } catch (e) {
238
+ if (e instanceof InvalidAlgorithmError)
239
+ throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +
240
+ 'supported'));
241
+ else
242
+ throw (e);
243
+ }
244
+
245
+ // Build the signingString
246
+ for (i = 0; i < parsed.params.headers.length; i++) {
247
+ var h = parsed.params.headers[i].toLowerCase();
248
+ parsed.params.headers[i] = h;
249
+
250
+ if (h === 'request-line') {
251
+ if (!options.strict) {
252
+ /*
253
+ * We allow headers from the older spec drafts if strict parsing isn't
254
+ * specified in options.
255
+ */
256
+ parsed.signingString +=
257
+ request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;
258
+ } else {
259
+ /* Strict parsing doesn't allow older draft headers. */
260
+ throw (new StrictParsingError('request-line is not a valid header ' +
261
+ 'with strict parsing enabled.'));
262
+ }
263
+ } else if (h === '(request-target)') {
264
+ parsed.signingString +=
265
+ '(request-target): ' + request.method.toLowerCase() + ' ' +
266
+ request.url;
267
+ } else {
268
+ var value = request.headers[h];
269
+ if (value === undefined)
270
+ throw new MissingHeaderError(h + ' was not in the request');
271
+ parsed.signingString += h + ': ' + value;
272
+ }
273
+
274
+ if ((i + 1) < parsed.params.headers.length)
275
+ parsed.signingString += '\n';
276
+ }
277
+
278
+ // Check against the constraints
279
+ var date;
280
+ if (request.headers.date || request.headers['x-date']) {
281
+ if (request.headers['x-date']) {
282
+ date = new Date(request.headers['x-date']);
283
+ } else {
284
+ date = new Date(request.headers.date);
285
+ }
286
+ var now = new Date();
287
+ var skew = Math.abs(now.getTime() - date.getTime());
288
+
289
+ if (skew > options.clockSkew * 1000) {
290
+ throw new ExpiredRequestError('clock skew of ' +
291
+ (skew / 1000) +
292
+ 's was greater than ' +
293
+ options.clockSkew + 's');
294
+ }
295
+ }
296
+
297
+ options.headers.forEach(function (hdr) {
298
+ // Remember that we already checked any headers in the params
299
+ // were in the request, so if this passes we're good.
300
+ if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)
301
+ throw new MissingHeaderError(hdr + ' was not a signed header');
302
+ });
303
+
304
+ if (options.algorithms) {
305
+ if (options.algorithms.indexOf(parsed.params.algorithm) === -1)
306
+ throw new InvalidParamsError(parsed.params.algorithm +
307
+ ' is not a supported algorithm');
308
+ }
309
+
310
+ parsed.algorithm = parsed.params.algorithm.toUpperCase();
311
+ parsed.keyId = parsed.params.keyId;
312
+ return parsed;
313
+ }
314
+
315
+ };
@@ -0,0 +1,401 @@
1
+ // Copyright 2012 Joyent, Inc. All rights reserved.
2
+
3
+ var assert = require('assert-plus');
4
+ var crypto = require('crypto');
5
+ var http = require('http');
6
+ var util = require('util');
7
+ var sshpk = require('sshpk');
8
+ var jsprim = require('jsprim');
9
+ var utils = require('./utils');
10
+
11
+ var sprintf = require('util').format;
12
+
13
+ var HASH_ALGOS = utils.HASH_ALGOS;
14
+ var PK_ALGOS = utils.PK_ALGOS;
15
+ var InvalidAlgorithmError = utils.InvalidAlgorithmError;
16
+ var HttpSignatureError = utils.HttpSignatureError;
17
+ var validateAlgorithm = utils.validateAlgorithm;
18
+
19
+ ///--- Globals
20
+
21
+ var AUTHZ_FMT =
22
+ 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"';
23
+
24
+ ///--- Specific Errors
25
+
26
+ function MissingHeaderError(message) {
27
+ HttpSignatureError.call(this, message, MissingHeaderError);
28
+ }
29
+ util.inherits(MissingHeaderError, HttpSignatureError);
30
+
31
+ function StrictParsingError(message) {
32
+ HttpSignatureError.call(this, message, StrictParsingError);
33
+ }
34
+ util.inherits(StrictParsingError, HttpSignatureError);
35
+
36
+ /* See createSigner() */
37
+ function RequestSigner(options) {
38
+ assert.object(options, 'options');
39
+
40
+ var alg = [];
41
+ if (options.algorithm !== undefined) {
42
+ assert.string(options.algorithm, 'options.algorithm');
43
+ alg = validateAlgorithm(options.algorithm);
44
+ }
45
+ this.rs_alg = alg;
46
+
47
+ /*
48
+ * RequestSigners come in two varieties: ones with an rs_signFunc, and ones
49
+ * with an rs_signer.
50
+ *
51
+ * rs_signFunc-based RequestSigners have to build up their entire signing
52
+ * string within the rs_lines array and give it to rs_signFunc as a single
53
+ * concat'd blob. rs_signer-based RequestSigners can add a line at a time to
54
+ * their signing state by using rs_signer.update(), thus only needing to
55
+ * buffer the hash function state and one line at a time.
56
+ */
57
+ if (options.sign !== undefined) {
58
+ assert.func(options.sign, 'options.sign');
59
+ this.rs_signFunc = options.sign;
60
+
61
+ } else if (alg[0] === 'hmac' && options.key !== undefined) {
62
+ assert.string(options.keyId, 'options.keyId');
63
+ this.rs_keyId = options.keyId;
64
+
65
+ if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))
66
+ throw (new TypeError('options.key for HMAC must be a string or Buffer'));
67
+
68
+ /*
69
+ * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their
70
+ * data in chunks rather than requiring it all to be given in one go
71
+ * at the end, so they are more similar to signers than signFuncs.
72
+ */
73
+ this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);
74
+ this.rs_signer.sign = function () {
75
+ var digest = this.digest('base64');
76
+ return ({
77
+ hashAlgorithm: alg[1],
78
+ toString: function () { return (digest); }
79
+ });
80
+ };
81
+
82
+ } else if (options.key !== undefined) {
83
+ var key = options.key;
84
+ if (typeof (key) === 'string' || Buffer.isBuffer(key))
85
+ key = sshpk.parsePrivateKey(key);
86
+
87
+ assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),
88
+ 'options.key must be a sshpk.PrivateKey');
89
+ this.rs_key = key;
90
+
91
+ assert.string(options.keyId, 'options.keyId');
92
+ this.rs_keyId = options.keyId;
93
+
94
+ if (!PK_ALGOS[key.type]) {
95
+ throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +
96
+ 'keys are not supported'));
97
+ }
98
+
99
+ if (alg[0] !== undefined && key.type !== alg[0]) {
100
+ throw (new InvalidAlgorithmError('options.key must be a ' +
101
+ alg[0].toUpperCase() + ' key, was given a ' +
102
+ key.type.toUpperCase() + ' key instead'));
103
+ }
104
+
105
+ this.rs_signer = key.createSign(alg[1]);
106
+
107
+ } else {
108
+ throw (new TypeError('options.sign (func) or options.key is required'));
109
+ }
110
+
111
+ this.rs_headers = [];
112
+ this.rs_lines = [];
113
+ }
114
+
115
+ /**
116
+ * Adds a header to be signed, with its value, into this signer.
117
+ *
118
+ * @param {String} header
119
+ * @param {String} value
120
+ * @return {String} value written
121
+ */
122
+ RequestSigner.prototype.writeHeader = function (header, value) {
123
+ assert.string(header, 'header');
124
+ header = header.toLowerCase();
125
+ assert.string(value, 'value');
126
+
127
+ this.rs_headers.push(header);
128
+
129
+ if (this.rs_signFunc) {
130
+ this.rs_lines.push(header + ': ' + value);
131
+
132
+ } else {
133
+ var line = header + ': ' + value;
134
+ if (this.rs_headers.length > 0)
135
+ line = '\n' + line;
136
+ this.rs_signer.update(line);
137
+ }
138
+
139
+ return (value);
140
+ };
141
+
142
+ /**
143
+ * Adds a default Date header, returning its value.
144
+ *
145
+ * @return {String}
146
+ */
147
+ RequestSigner.prototype.writeDateHeader = function () {
148
+ return (this.writeHeader('date', jsprim.rfc1123(new Date())));
149
+ };
150
+
151
+ /**
152
+ * Adds the request target line to be signed.
153
+ *
154
+ * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')
155
+ * @param {String} path
156
+ */
157
+ RequestSigner.prototype.writeTarget = function (method, path) {
158
+ assert.string(method, 'method');
159
+ assert.string(path, 'path');
160
+ method = method.toLowerCase();
161
+ this.writeHeader('(request-target)', method + ' ' + path);
162
+ };
163
+
164
+ /**
165
+ * Calculate the value for the Authorization header on this request
166
+ * asynchronously.
167
+ *
168
+ * @param {Func} callback (err, authz)
169
+ */
170
+ RequestSigner.prototype.sign = function (cb) {
171
+ assert.func(cb, 'callback');
172
+
173
+ if (this.rs_headers.length < 1)
174
+ throw (new Error('At least one header must be signed'));
175
+
176
+ var alg, authz;
177
+ if (this.rs_signFunc) {
178
+ var data = this.rs_lines.join('\n');
179
+ var self = this;
180
+ this.rs_signFunc(data, function (err, sig) {
181
+ if (err) {
182
+ cb(err);
183
+ return;
184
+ }
185
+ try {
186
+ assert.object(sig, 'signature');
187
+ assert.string(sig.keyId, 'signature.keyId');
188
+ assert.string(sig.algorithm, 'signature.algorithm');
189
+ assert.string(sig.signature, 'signature.signature');
190
+ alg = validateAlgorithm(sig.algorithm);
191
+
192
+ authz = sprintf(AUTHZ_FMT,
193
+ sig.keyId,
194
+ sig.algorithm,
195
+ self.rs_headers.join(' '),
196
+ sig.signature);
197
+ } catch (e) {
198
+ cb(e);
199
+ return;
200
+ }
201
+ cb(null, authz);
202
+ });
203
+
204
+ } else {
205
+ try {
206
+ var sigObj = this.rs_signer.sign();
207
+ } catch (e) {
208
+ cb(e);
209
+ return;
210
+ }
211
+ alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;
212
+ var signature = sigObj.toString();
213
+ authz = sprintf(AUTHZ_FMT,
214
+ this.rs_keyId,
215
+ alg,
216
+ this.rs_headers.join(' '),
217
+ signature);
218
+ cb(null, authz);
219
+ }
220
+ };
221
+
222
+ ///--- Exported API
223
+
224
+ module.exports = {
225
+ /**
226
+ * Identifies whether a given object is a request signer or not.
227
+ *
228
+ * @param {Object} object, the object to identify
229
+ * @returns {Boolean}
230
+ */
231
+ isSigner: function (obj) {
232
+ if (typeof (obj) === 'object' && obj instanceof RequestSigner)
233
+ return (true);
234
+ return (false);
235
+ },
236
+
237
+ /**
238
+ * Creates a request signer, used to asynchronously build a signature
239
+ * for a request (does not have to be an http.ClientRequest).
240
+ *
241
+ * @param {Object} options, either:
242
+ * - {String} keyId
243
+ * - {String|Buffer} key
244
+ * - {String} algorithm (optional, required for HMAC)
245
+ * or:
246
+ * - {Func} sign (data, cb)
247
+ * @return {RequestSigner}
248
+ */
249
+ createSigner: function createSigner(options) {
250
+ return (new RequestSigner(options));
251
+ },
252
+
253
+ /**
254
+ * Adds an 'Authorization' header to an http.ClientRequest object.
255
+ *
256
+ * Note that this API will add a Date header if it's not already set. Any
257
+ * other headers in the options.headers array MUST be present, or this
258
+ * will throw.
259
+ *
260
+ * You shouldn't need to check the return type; it's just there if you want
261
+ * to be pedantic.
262
+ *
263
+ * The optional flag indicates whether parsing should use strict enforcement
264
+ * of the version draft-cavage-http-signatures-04 of the spec or beyond.
265
+ * The default is to be loose and support
266
+ * older versions for compatibility.
267
+ *
268
+ * @param {Object} request an instance of http.ClientRequest.
269
+ * @param {Object} options signing parameters object:
270
+ * - {String} keyId required.
271
+ * - {String} key required (either a PEM or HMAC key).
272
+ * - {Array} headers optional; defaults to ['date'].
273
+ * - {String} algorithm optional (unless key is HMAC);
274
+ * default is the same as the sshpk default
275
+ * signing algorithm for the type of key given
276
+ * - {String} httpVersion optional; defaults to '1.1'.
277
+ * - {Boolean} strict optional; defaults to 'false'.
278
+ * @return {Boolean} true if Authorization (and optionally Date) were added.
279
+ * @throws {TypeError} on bad parameter types (input).
280
+ * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with
281
+ * the given key.
282
+ * @throws {sshpk.KeyParseError} if key was bad.
283
+ * @throws {MissingHeaderError} if a header to be signed was specified but
284
+ * was not present.
285
+ */
286
+ signRequest: function signRequest(request, options) {
287
+ assert.object(request, 'request');
288
+ assert.object(options, 'options');
289
+ assert.optionalString(options.algorithm, 'options.algorithm');
290
+ assert.string(options.keyId, 'options.keyId');
291
+ assert.optionalArrayOfString(options.headers, 'options.headers');
292
+ assert.optionalString(options.httpVersion, 'options.httpVersion');
293
+
294
+ if (!request.getHeader('Date'))
295
+ request.setHeader('Date', jsprim.rfc1123(new Date()));
296
+ if (!options.headers)
297
+ options.headers = ['date'];
298
+ if (!options.httpVersion)
299
+ options.httpVersion = '1.1';
300
+
301
+ var alg = [];
302
+ if (options.algorithm) {
303
+ options.algorithm = options.algorithm.toLowerCase();
304
+ alg = validateAlgorithm(options.algorithm);
305
+ }
306
+
307
+ var i;
308
+ var stringToSign = '';
309
+ for (i = 0; i < options.headers.length; i++) {
310
+ if (typeof (options.headers[i]) !== 'string')
311
+ throw new TypeError('options.headers must be an array of Strings');
312
+
313
+ var h = options.headers[i].toLowerCase();
314
+
315
+ if (h === 'request-line') {
316
+ if (!options.strict) {
317
+ /**
318
+ * We allow headers from the older spec drafts if strict parsing isn't
319
+ * specified in options.
320
+ */
321
+ stringToSign +=
322
+ request.method + ' ' + request.path + ' HTTP/' +
323
+ options.httpVersion;
324
+ } else {
325
+ /* Strict parsing doesn't allow older draft headers. */
326
+ throw (new StrictParsingError('request-line is not a valid header ' +
327
+ 'with strict parsing enabled.'));
328
+ }
329
+ } else if (h === '(request-target)') {
330
+ stringToSign +=
331
+ '(request-target): ' + request.method.toLowerCase() + ' ' +
332
+ request.path;
333
+ } else {
334
+ var value = request.getHeader(h);
335
+ if (value === undefined || value === '') {
336
+ throw new MissingHeaderError(h + ' was not in the request');
337
+ }
338
+ stringToSign += h + ': ' + value;
339
+ }
340
+
341
+ if ((i + 1) < options.headers.length)
342
+ stringToSign += '\n';
343
+ }
344
+
345
+ /* This is just for unit tests. */
346
+ if (request.hasOwnProperty('_stringToSign')) {
347
+ request._stringToSign = stringToSign;
348
+ }
349
+
350
+ var signature;
351
+ if (alg[0] === 'hmac') {
352
+ if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))
353
+ throw (new TypeError('options.key must be a string or Buffer'));
354
+
355
+ var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);
356
+ hmac.update(stringToSign);
357
+ signature = hmac.digest('base64');
358
+
359
+ } else {
360
+ var key = options.key;
361
+ if (typeof (key) === 'string' || Buffer.isBuffer(key))
362
+ key = sshpk.parsePrivateKey(options.key);
363
+
364
+ assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),
365
+ 'options.key must be a sshpk.PrivateKey');
366
+
367
+ if (!PK_ALGOS[key.type]) {
368
+ throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +
369
+ 'keys are not supported'));
370
+ }
371
+
372
+ if (alg[0] !== undefined && key.type !== alg[0]) {
373
+ throw (new InvalidAlgorithmError('options.key must be a ' +
374
+ alg[0].toUpperCase() + ' key, was given a ' +
375
+ key.type.toUpperCase() + ' key instead'));
376
+ }
377
+
378
+ var signer = key.createSign(alg[1]);
379
+ signer.update(stringToSign);
380
+ var sigObj = signer.sign();
381
+ if (!HASH_ALGOS[sigObj.hashAlgorithm]) {
382
+ throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +
383
+ ' is not a supported hash algorithm'));
384
+ }
385
+ options.algorithm = key.type + '-' + sigObj.hashAlgorithm;
386
+ signature = sigObj.toString();
387
+ assert.notStrictEqual(signature, '', 'empty signature produced');
388
+ }
389
+
390
+ var authzHeaderName = options.authorizationHeaderName || 'Authorization';
391
+
392
+ request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,
393
+ options.keyId,
394
+ options.algorithm,
395
+ options.headers.join(' '),
396
+ signature));
397
+
398
+ return true;
399
+ }
400
+
401
+ };