fca-shadow 0.0.1-security → 2.3.8

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 fca-shadow might be problematic. Click here for more details.

Files changed (501) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/DOCS.md +1738 -0
  3. package/GetThreads/GetThreadInfo.js +128 -0
  4. package/GetThreads/Last-Run.js +65 -0
  5. package/LICENSE-MIT +21 -0
  6. package/README.md +132 -3
  7. package/StateCrypt.js +28 -0
  8. package/broadcast.js +22 -0
  9. package/index.html +1200 -0
  10. package/index.js +694 -0
  11. package/languages/index.json +150 -0
  12. package/lib/getInfoNew.js +34 -0
  13. package/lib/getToken.js +44 -0
  14. package/logger.js +23 -0
  15. package/package/database/SyntheticDatabase.sqlite +0 -0
  16. package/package/database/index.js +358 -0
  17. package/package/database/node_modules/lodash/_baseGet/README.md +20 -0
  18. package/package/database/node_modules/lodash/_baseGet/index.js +74 -0
  19. package/package/database/node_modules/lodash/_baseGet/package.json +18 -0
  20. package/package/database/node_modules/lodash/add.js +22 -0
  21. package/package/database/node_modules/lodash/after.js +42 -0
  22. package/package/database/node_modules/lodash/array.js +67 -0
  23. package/package/database/node_modules/lodash/ary.js +29 -0
  24. package/package/database/node_modules/lodash/assign.js +58 -0
  25. package/package/database/node_modules/lodash/assignIn.js +40 -0
  26. package/package/database/node_modules/lodash/assignInWith.js +38 -0
  27. package/package/database/node_modules/lodash/assignWith.js +37 -0
  28. package/package/database/node_modules/lodash/at.js +23 -0
  29. package/package/database/node_modules/lodash/attempt.js +35 -0
  30. package/package/database/node_modules/lodash/before.js +40 -0
  31. package/package/database/node_modules/lodash/bind.js +57 -0
  32. package/package/database/node_modules/lodash/bindAll.js +41 -0
  33. package/package/database/node_modules/lodash/bindKey.js +68 -0
  34. package/package/database/node_modules/lodash/camelCase.js +29 -0
  35. package/package/database/node_modules/lodash/capitalize.js +23 -0
  36. package/package/database/node_modules/lodash/castArray.js +44 -0
  37. package/package/database/node_modules/lodash/ceil.js +26 -0
  38. package/package/database/node_modules/lodash/chain.js +38 -0
  39. package/package/database/node_modules/lodash/chunk.js +50 -0
  40. package/package/database/node_modules/lodash/clamp.js +39 -0
  41. package/package/database/node_modules/lodash/clone.js +36 -0
  42. package/package/database/node_modules/lodash/cloneDeep.js +29 -0
  43. package/package/database/node_modules/lodash/cloneDeepWith.js +40 -0
  44. package/package/database/node_modules/lodash/cloneWith.js +42 -0
  45. package/package/database/node_modules/lodash/collection.js +30 -0
  46. package/package/database/node_modules/lodash/commit.js +33 -0
  47. package/package/database/node_modules/lodash/compact.js +31 -0
  48. package/package/database/node_modules/lodash/concat.js +43 -0
  49. package/package/database/node_modules/lodash/cond.js +60 -0
  50. package/package/database/node_modules/lodash/conforms.js +35 -0
  51. package/package/database/node_modules/lodash/conformsTo.js +32 -0
  52. package/package/database/node_modules/lodash/constant.js +26 -0
  53. package/package/database/node_modules/lodash/core.js +3877 -0
  54. package/package/database/node_modules/lodash/core.min.js +29 -0
  55. package/package/database/node_modules/lodash/countBy.js +40 -0
  56. package/package/database/node_modules/lodash/create.js +43 -0
  57. package/package/database/node_modules/lodash/curry.js +57 -0
  58. package/package/database/node_modules/lodash/curryRight.js +54 -0
  59. package/package/database/node_modules/lodash/date.js +3 -0
  60. package/package/database/node_modules/lodash/debounce.js +191 -0
  61. package/package/database/node_modules/lodash/deburr.js +45 -0
  62. package/package/database/node_modules/lodash/defaultTo.js +25 -0
  63. package/package/database/node_modules/lodash/defaults.js +64 -0
  64. package/package/database/node_modules/lodash/defaultsDeep.js +30 -0
  65. package/package/database/node_modules/lodash/defer.js +26 -0
  66. package/package/database/node_modules/lodash/delay.js +28 -0
  67. package/package/database/node_modules/lodash/difference.js +33 -0
  68. package/package/database/node_modules/lodash/differenceBy.js +44 -0
  69. package/package/database/node_modules/lodash/differenceWith.js +40 -0
  70. package/package/database/node_modules/lodash/divide.js +22 -0
  71. package/package/database/node_modules/lodash/drop.js +38 -0
  72. package/package/database/node_modules/lodash/dropRight.js +39 -0
  73. package/package/database/node_modules/lodash/dropRightWhile.js +45 -0
  74. package/package/database/node_modules/lodash/dropWhile.js +45 -0
  75. package/package/database/node_modules/lodash/each.js +1 -0
  76. package/package/database/node_modules/lodash/eachRight.js +1 -0
  77. package/package/database/node_modules/lodash/endsWith.js +43 -0
  78. package/package/database/node_modules/lodash/entries.js +1 -0
  79. package/package/database/node_modules/lodash/entriesIn.js +1 -0
  80. package/package/database/node_modules/lodash/eq.js +37 -0
  81. package/package/database/node_modules/lodash/escape.js +43 -0
  82. package/package/database/node_modules/lodash/escapeRegExp.js +32 -0
  83. package/package/database/node_modules/lodash/every.js +56 -0
  84. package/package/database/node_modules/lodash/extend.js +1 -0
  85. package/package/database/node_modules/lodash/extendWith.js +1 -0
  86. package/package/database/node_modules/lodash/fill.js +45 -0
  87. package/package/database/node_modules/lodash/filter.js +52 -0
  88. package/package/database/node_modules/lodash/find.js +42 -0
  89. package/package/database/node_modules/lodash/findIndex.js +55 -0
  90. package/package/database/node_modules/lodash/findKey.js +44 -0
  91. package/package/database/node_modules/lodash/findLast.js +25 -0
  92. package/package/database/node_modules/lodash/findLastIndex.js +59 -0
  93. package/package/database/node_modules/lodash/findLastKey.js +44 -0
  94. package/package/database/node_modules/lodash/first.js +1 -0
  95. package/package/database/node_modules/lodash/flake.lock +40 -0
  96. package/package/database/node_modules/lodash/flake.nix +20 -0
  97. package/package/database/node_modules/lodash/flatMap.js +29 -0
  98. package/package/database/node_modules/lodash/flatMapDeep.js +31 -0
  99. package/package/database/node_modules/lodash/flatMapDepth.js +31 -0
  100. package/package/database/node_modules/lodash/flatten.js +22 -0
  101. package/package/database/node_modules/lodash/flattenDeep.js +25 -0
  102. package/package/database/node_modules/lodash/flattenDepth.js +33 -0
  103. package/package/database/node_modules/lodash/flip.js +28 -0
  104. package/package/database/node_modules/lodash/floor.js +26 -0
  105. package/package/database/node_modules/lodash/flow.js +27 -0
  106. package/package/database/node_modules/lodash/flowRight.js +26 -0
  107. package/package/database/node_modules/lodash/forEach.js +41 -0
  108. package/package/database/node_modules/lodash/forEachRight.js +31 -0
  109. package/package/database/node_modules/lodash/forIn.js +39 -0
  110. package/package/database/node_modules/lodash/forInRight.js +37 -0
  111. package/package/database/node_modules/lodash/forOwn.js +36 -0
  112. package/package/database/node_modules/lodash/forOwnRight.js +34 -0
  113. package/package/database/node_modules/lodash/fp/F.js +1 -0
  114. package/package/database/node_modules/lodash/fp/add.js +5 -0
  115. package/package/database/node_modules/lodash/fp/after.js +5 -0
  116. package/package/database/node_modules/lodash/fp/all.js +1 -0
  117. package/package/database/node_modules/lodash/fp/allPass.js +1 -0
  118. package/package/database/node_modules/lodash/fp/always.js +1 -0
  119. package/package/database/node_modules/lodash/fp/any.js +1 -0
  120. package/package/database/node_modules/lodash/fp/anyPass.js +1 -0
  121. package/package/database/node_modules/lodash/fp/apply.js +1 -0
  122. package/package/database/node_modules/lodash/fp/array.js +2 -0
  123. package/package/database/node_modules/lodash/fp/ary.js +5 -0
  124. package/package/database/node_modules/lodash/fp/assign.js +5 -0
  125. package/package/database/node_modules/lodash/fp/assignAll.js +5 -0
  126. package/package/database/node_modules/lodash/fp/assignAllWith.js +5 -0
  127. package/package/database/node_modules/lodash/fp/assignIn.js +5 -0
  128. package/package/database/node_modules/lodash/fp/assignInAll.js +5 -0
  129. package/package/database/node_modules/lodash/fp/assignInAllWith.js +5 -0
  130. package/package/database/node_modules/lodash/fp/assignInWith.js +5 -0
  131. package/package/database/node_modules/lodash/fp/assignWith.js +5 -0
  132. package/package/database/node_modules/lodash/fp/assoc.js +1 -0
  133. package/package/database/node_modules/lodash/fp/assocPath.js +1 -0
  134. package/package/database/node_modules/lodash/fp/at.js +5 -0
  135. package/package/database/node_modules/lodash/fp/attempt.js +5 -0
  136. package/package/database/node_modules/lodash/fp/before.js +5 -0
  137. package/package/database/node_modules/lodash/fp/bind.js +5 -0
  138. package/package/database/node_modules/lodash/fp/bindAll.js +5 -0
  139. package/package/database/node_modules/lodash/fp/bindKey.js +5 -0
  140. package/package/database/node_modules/lodash/fp/camelCase.js +5 -0
  141. package/package/database/node_modules/lodash/fp/capitalize.js +5 -0
  142. package/package/database/node_modules/lodash/fp/castArray.js +5 -0
  143. package/package/database/node_modules/lodash/fp/ceil.js +5 -0
  144. package/package/database/node_modules/lodash/fp/chain.js +5 -0
  145. package/package/database/node_modules/lodash/fp/chunk.js +5 -0
  146. package/package/database/node_modules/lodash/fp/clamp.js +5 -0
  147. package/package/database/node_modules/lodash/fp/clone.js +5 -0
  148. package/package/database/node_modules/lodash/fp/cloneDeep.js +5 -0
  149. package/package/database/node_modules/lodash/fp/cloneDeepWith.js +5 -0
  150. package/package/database/node_modules/lodash/fp/cloneWith.js +5 -0
  151. package/package/database/node_modules/lodash/fp/collection.js +2 -0
  152. package/package/database/node_modules/lodash/fp/commit.js +5 -0
  153. package/package/database/node_modules/lodash/fp/compact.js +5 -0
  154. package/package/database/node_modules/lodash/fp/complement.js +1 -0
  155. package/package/database/node_modules/lodash/fp/compose.js +1 -0
  156. package/package/database/node_modules/lodash/fp/concat.js +5 -0
  157. package/package/database/node_modules/lodash/fp/cond.js +5 -0
  158. package/package/database/node_modules/lodash/fp/conforms.js +1 -0
  159. package/package/database/node_modules/lodash/fp/conformsTo.js +5 -0
  160. package/package/database/node_modules/lodash/fp/constant.js +5 -0
  161. package/package/database/node_modules/lodash/fp/contains.js +1 -0
  162. package/package/database/node_modules/lodash/fp/convert.js +18 -0
  163. package/package/database/node_modules/lodash/fp/countBy.js +5 -0
  164. package/package/database/node_modules/lodash/fp/create.js +5 -0
  165. package/package/database/node_modules/lodash/fp/curry.js +5 -0
  166. package/package/database/node_modules/lodash/fp/curryN.js +5 -0
  167. package/package/database/node_modules/lodash/fp/curryRight.js +5 -0
  168. package/package/database/node_modules/lodash/fp/curryRightN.js +5 -0
  169. package/package/database/node_modules/lodash/fp/date.js +2 -0
  170. package/package/database/node_modules/lodash/fp/debounce.js +5 -0
  171. package/package/database/node_modules/lodash/fp/deburr.js +5 -0
  172. package/package/database/node_modules/lodash/fp/defaultTo.js +5 -0
  173. package/package/database/node_modules/lodash/fp/defaults.js +5 -0
  174. package/package/database/node_modules/lodash/fp/defaultsAll.js +5 -0
  175. package/package/database/node_modules/lodash/fp/defaultsDeep.js +5 -0
  176. package/package/database/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  177. package/package/database/node_modules/lodash/fp/defer.js +5 -0
  178. package/package/database/node_modules/lodash/fp/delay.js +5 -0
  179. package/package/database/node_modules/lodash/fp/difference.js +5 -0
  180. package/package/database/node_modules/lodash/fp/differenceBy.js +5 -0
  181. package/package/database/node_modules/lodash/fp/differenceWith.js +5 -0
  182. package/package/database/node_modules/lodash/fp/dissoc.js +1 -0
  183. package/package/database/node_modules/lodash/fp/dissocPath.js +1 -0
  184. package/package/database/node_modules/lodash/fp/divide.js +5 -0
  185. package/package/database/node_modules/lodash/fp/drop.js +5 -0
  186. package/package/database/node_modules/lodash/fp/dropLast.js +1 -0
  187. package/package/database/node_modules/lodash/fp/dropLastWhile.js +1 -0
  188. package/package/database/node_modules/lodash/fp/dropRight.js +5 -0
  189. package/package/database/node_modules/lodash/fp/dropRightWhile.js +5 -0
  190. package/package/database/node_modules/lodash/fp/dropWhile.js +5 -0
  191. package/package/database/node_modules/lodash/fp/each.js +1 -0
  192. package/package/database/node_modules/lodash/fp/eachRight.js +1 -0
  193. package/package/database/node_modules/lodash/fp/endsWith.js +5 -0
  194. package/package/database/node_modules/lodash/fp/entries.js +1 -0
  195. package/package/database/node_modules/lodash/fp/entriesIn.js +1 -0
  196. package/package/database/node_modules/lodash/fp/eq.js +5 -0
  197. package/package/database/node_modules/lodash/fp/equals.js +1 -0
  198. package/package/database/node_modules/lodash/fp/escape.js +5 -0
  199. package/package/database/node_modules/lodash/fp/escapeRegExp.js +5 -0
  200. package/package/database/node_modules/lodash/fp/every.js +5 -0
  201. package/package/database/node_modules/lodash/fp/extend.js +1 -0
  202. package/package/database/node_modules/lodash/fp/extendAll.js +1 -0
  203. package/package/database/node_modules/lodash/fp/extendAllWith.js +1 -0
  204. package/package/database/node_modules/lodash/fp/extendWith.js +1 -0
  205. package/package/database/node_modules/lodash/fp/fill.js +5 -0
  206. package/package/database/node_modules/lodash/fp/filter.js +5 -0
  207. package/package/database/node_modules/lodash/fp/find.js +5 -0
  208. package/package/database/node_modules/lodash/fp/findFrom.js +5 -0
  209. package/package/database/node_modules/lodash/fp/findIndex.js +5 -0
  210. package/package/database/node_modules/lodash/fp/findIndexFrom.js +5 -0
  211. package/package/database/node_modules/lodash/fp/findKey.js +5 -0
  212. package/package/database/node_modules/lodash/fp/findLast.js +5 -0
  213. package/package/database/node_modules/lodash/fp.js +2 -0
  214. package/package/database/node_modules/lodash/fromPairs.js +28 -0
  215. package/package/database/node_modules/lodash/function.js +25 -0
  216. package/package/database/node_modules/lodash/functions.js +31 -0
  217. package/package/database/node_modules/lodash/functionsIn.js +31 -0
  218. package/package/database/node_modules/lodash/get.js +33 -0
  219. package/package/database/node_modules/node-fetch/CHANGELOG.md +266 -0
  220. package/package/database/node_modules/node-fetch/LICENSE.md +22 -0
  221. package/package/database/node_modules/node-fetch/README.md +583 -0
  222. package/package/database/node_modules/node-fetch/browser.js +23 -0
  223. package/package/database/node_modules/node-fetch/lib/index.es.js +1633 -0
  224. package/package/database/node_modules/node-fetch/lib/index.js +1642 -0
  225. package/package/database/node_modules/node-fetch/lib/index.mjs +1631 -0
  226. package/package/database/node_modules/node-fetch/package.json +70 -0
  227. package/package/database/node_modules/sqlite3/CHANGELOG.md +313 -0
  228. package/package/database/node_modules/sqlite3/CONTRIBUTING.md +57 -0
  229. package/package/database/node_modules/sqlite3/LICENSE +25 -0
  230. package/package/database/node_modules/sqlite3/README.md +259 -0
  231. package/package/database/node_modules/sqlite3/binding.gyp +66 -0
  232. package/package/database/node_modules/sqlite3/deps/common-sqlite.gypi +60 -0
  233. package/package/database/node_modules/sqlite3/deps/extract.js +10 -0
  234. package/package/database/node_modules/sqlite3/deps/sqlite-autoconf-3380200.tar.gz +0 -0
  235. package/package/database/node_modules/sqlite3/deps/sqlite3.gyp +121 -0
  236. package/package/database/node_modules/sqlite3/lib/binding/napi-v6-linux-x64/node_sqlite3.node +0 -0
  237. package/package/database/node_modules/sqlite3/lib/index.js +1 -0
  238. package/package/database/node_modules/sqlite3/lib/sqlite3-binding.js +5 -0
  239. package/package/database/node_modules/sqlite3/lib/sqlite3.js +205 -0
  240. package/package/database/node_modules/sqlite3/lib/trace.js +38 -0
  241. package/package/database/node_modules/sqlite3/package.json +82 -0
  242. package/package/database/node_modules/sqlite3/sqlite3.js +1 -0
  243. package/package/database/node_modules/sqlite3/src/async.h +82 -0
  244. package/package/database/node_modules/sqlite3/src/backup.cc +420 -0
  245. package/package/database/node_modules/sqlite3/src/backup.h +221 -0
  246. package/package/database/node_modules/sqlite3/src/database.cc +738 -0
  247. package/package/database/node_modules/sqlite3/src/database.h +206 -0
  248. package/package/database/node_modules/sqlite3/src/gcc-preinclude.h +6 -0
  249. package/package/database/node_modules/sqlite3/src/macros.h +212 -0
  250. package/package/database/node_modules/sqlite3/src/node_sqlite3.cc +115 -0
  251. package/package/database/node_modules/sqlite3/src/statement.cc +947 -0
  252. package/package/database/node_modules/sqlite3/src/statement.h +249 -0
  253. package/package/database/node_modules/sqlite3/src/threading.h +48 -0
  254. package/package/database/package.json +31 -0
  255. package/package/database/readme.md +8 -0
  256. package/package/database/test.js +3 -0
  257. package/package/horizon-sp/README.md +11 -0
  258. package/package/horizon-sp/index.js +41 -0
  259. package/package/horizon-sp/logger.js +16 -0
  260. package/package/horizon-sp/node_modules/.package-lock.json +140 -0
  261. package/package/horizon-sp/node_modules/asynckit/LICENSE +21 -0
  262. package/package/horizon-sp/node_modules/asynckit/README.md +233 -0
  263. package/package/horizon-sp/node_modules/asynckit/bench.js +76 -0
  264. package/package/horizon-sp/node_modules/asynckit/index.js +6 -0
  265. package/package/horizon-sp/node_modules/asynckit/lib/abort.js +29 -0
  266. package/package/horizon-sp/node_modules/asynckit/lib/async.js +34 -0
  267. package/package/horizon-sp/node_modules/asynckit/lib/defer.js +26 -0
  268. package/package/horizon-sp/node_modules/asynckit/lib/iterate.js +75 -0
  269. package/package/horizon-sp/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  270. package/package/horizon-sp/node_modules/asynckit/lib/readable_parallel.js +25 -0
  271. package/package/horizon-sp/node_modules/asynckit/lib/readable_serial.js +25 -0
  272. package/package/horizon-sp/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  273. package/package/horizon-sp/node_modules/asynckit/lib/state.js +37 -0
  274. package/package/horizon-sp/node_modules/asynckit/lib/streamify.js +141 -0
  275. package/package/horizon-sp/node_modules/asynckit/lib/terminator.js +29 -0
  276. package/package/horizon-sp/node_modules/asynckit/package.json +63 -0
  277. package/package/horizon-sp/node_modules/asynckit/parallel.js +43 -0
  278. package/package/horizon-sp/node_modules/asynckit/serial.js +17 -0
  279. package/package/horizon-sp/node_modules/asynckit/serialOrdered.js +75 -0
  280. package/package/horizon-sp/node_modules/asynckit/stream.js +21 -0
  281. package/package/horizon-sp/node_modules/axios/CHANGELOG.md +410 -0
  282. package/package/horizon-sp/node_modules/axios/LICENSE +7 -0
  283. package/package/horizon-sp/node_modules/axios/MIGRATION_GUIDE.md +3 -0
  284. package/package/horizon-sp/node_modules/axios/README.md +1310 -0
  285. package/package/horizon-sp/node_modules/axios/SECURITY.md +6 -0
  286. package/package/horizon-sp/node_modules/axios/index.d.cts +524 -0
  287. package/package/horizon-sp/node_modules/axios/index.d.ts +539 -0
  288. package/package/horizon-sp/node_modules/axios/index.js +41 -0
  289. package/package/horizon-sp/node_modules/axios/lib/adapters/README.md +37 -0
  290. package/package/horizon-sp/node_modules/axios/lib/adapters/adapters.js +59 -0
  291. package/package/horizon-sp/node_modules/axios/lib/adapters/http.js +608 -0
  292. package/package/horizon-sp/node_modules/axios/lib/adapters/xhr.js +249 -0
  293. package/package/horizon-sp/node_modules/axios/lib/axios.js +86 -0
  294. package/package/horizon-sp/node_modules/axios/lib/cancel/CancelToken.js +121 -0
  295. package/package/horizon-sp/node_modules/axios/lib/cancel/CanceledError.js +25 -0
  296. package/package/horizon-sp/node_modules/axios/lib/cancel/isCancel.js +5 -0
  297. package/package/horizon-sp/node_modules/axios/lib/core/Axios.js +197 -0
  298. package/package/horizon-sp/node_modules/axios/lib/core/AxiosError.js +100 -0
  299. package/package/horizon-sp/node_modules/axios/lib/core/AxiosHeaders.js +274 -0
  300. package/package/horizon-sp/node_modules/axios/lib/core/InterceptorManager.js +71 -0
  301. package/package/horizon-sp/node_modules/axios/lib/core/README.md +8 -0
  302. package/package/horizon-sp/node_modules/axios/lib/core/buildFullPath.js +21 -0
  303. package/package/horizon-sp/node_modules/axios/lib/core/dispatchRequest.js +81 -0
  304. package/package/horizon-sp/node_modules/axios/lib/core/mergeConfig.js +105 -0
  305. package/package/horizon-sp/node_modules/axios/lib/core/settle.js +27 -0
  306. package/package/horizon-sp/node_modules/axios/lib/core/transformData.js +28 -0
  307. package/package/horizon-sp/node_modules/axios/lib/defaults/index.js +166 -0
  308. package/package/horizon-sp/node_modules/axios/lib/defaults/transitional.js +7 -0
  309. package/package/horizon-sp/node_modules/axios/lib/env/README.md +3 -0
  310. package/package/horizon-sp/node_modules/axios/lib/env/classes/FormData.js +2 -0
  311. package/package/horizon-sp/node_modules/axios/lib/env/data.js +1 -0
  312. package/package/horizon-sp/node_modules/axios/lib/helpers/AxiosTransformStream.js +191 -0
  313. package/package/horizon-sp/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +58 -0
  314. package/package/horizon-sp/node_modules/axios/lib/helpers/HttpStatusCode.js +71 -0
  315. package/package/horizon-sp/node_modules/axios/lib/helpers/README.md +7 -0
  316. package/package/horizon-sp/node_modules/axios/lib/helpers/bind.js +7 -0
  317. package/package/horizon-sp/node_modules/axios/lib/helpers/buildURL.js +63 -0
  318. package/package/horizon-sp/node_modules/axios/lib/helpers/combineURLs.js +15 -0
  319. package/package/horizon-sp/node_modules/axios/lib/helpers/cookies.js +52 -0
  320. package/package/horizon-sp/node_modules/axios/lib/helpers/deprecatedMethod.js +26 -0
  321. package/package/horizon-sp/node_modules/axios/lib/helpers/formDataToJSON.js +92 -0
  322. package/package/horizon-sp/node_modules/axios/lib/helpers/fromDataURI.js +53 -0
  323. package/package/horizon-sp/node_modules/axios/lib/helpers/isAbsoluteURL.js +15 -0
  324. package/package/horizon-sp/node_modules/axios/lib/helpers/isAxiosError.js +14 -0
  325. package/package/horizon-sp/node_modules/axios/lib/helpers/isURLSameOrigin.js +67 -0
  326. package/package/horizon-sp/node_modules/axios/lib/helpers/null.js +2 -0
  327. package/package/horizon-sp/node_modules/axios/lib/helpers/parseHeaders.js +55 -0
  328. package/package/horizon-sp/node_modules/axios/lib/helpers/parseProtocol.js +6 -0
  329. package/package/horizon-sp/node_modules/axios/lib/helpers/speedometer.js +55 -0
  330. package/package/horizon-sp/node_modules/axios/lib/helpers/spread.js +28 -0
  331. package/package/horizon-sp/node_modules/axios/lib/helpers/throttle.js +33 -0
  332. package/package/horizon-sp/node_modules/axios/lib/helpers/toFormData.js +229 -0
  333. package/package/horizon-sp/node_modules/axios/lib/helpers/toURLEncodedForm.js +18 -0
  334. package/package/horizon-sp/node_modules/axios/lib/helpers/validator.js +91 -0
  335. package/package/horizon-sp/node_modules/axios/lib/platform/browser/classes/FormData.js +3 -0
  336. package/package/horizon-sp/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +4 -0
  337. package/package/horizon-sp/node_modules/axios/lib/platform/browser/index.js +63 -0
  338. package/package/horizon-sp/node_modules/axios/lib/platform/index.js +3 -0
  339. package/package/horizon-sp/node_modules/axios/lib/platform/node/classes/FormData.js +3 -0
  340. package/package/horizon-sp/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +4 -0
  341. package/package/horizon-sp/node_modules/axios/lib/platform/node/index.js +12 -0
  342. package/package/horizon-sp/node_modules/axios/lib/utils.js +677 -0
  343. package/package/horizon-sp/node_modules/axios/package.json +197 -0
  344. package/package/horizon-sp/node_modules/child_process/README.md +9 -0
  345. package/package/horizon-sp/node_modules/child_process/package.json +20 -0
  346. package/package/horizon-sp/node_modules/combined-stream/License +19 -0
  347. package/package/horizon-sp/node_modules/combined-stream/Readme.md +138 -0
  348. package/package/horizon-sp/node_modules/combined-stream/lib/combined_stream.js +208 -0
  349. package/package/horizon-sp/node_modules/combined-stream/package.json +25 -0
  350. package/package/horizon-sp/node_modules/delayed-stream/License +19 -0
  351. package/package/horizon-sp/node_modules/delayed-stream/Makefile +7 -0
  352. package/package/horizon-sp/node_modules/delayed-stream/Readme.md +141 -0
  353. package/package/horizon-sp/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  354. package/package/horizon-sp/node_modules/delayed-stream/package.json +27 -0
  355. package/package/horizon-sp/node_modules/follow-redirects/LICENSE +18 -0
  356. package/package/horizon-sp/node_modules/follow-redirects/README.md +155 -0
  357. package/package/horizon-sp/node_modules/follow-redirects/debug.js +15 -0
  358. package/package/horizon-sp/node_modules/follow-redirects/http.js +1 -0
  359. package/package/horizon-sp/node_modules/follow-redirects/https.js +1 -0
  360. package/package/horizon-sp/node_modules/follow-redirects/index.js +621 -0
  361. package/package/horizon-sp/node_modules/follow-redirects/package.json +59 -0
  362. package/package/horizon-sp/node_modules/form-data/License +19 -0
  363. package/package/horizon-sp/node_modules/form-data/README.md.bak +358 -0
  364. package/package/horizon-sp/node_modules/form-data/Readme.md +358 -0
  365. package/package/horizon-sp/node_modules/form-data/index.d.ts +62 -0
  366. package/package/horizon-sp/node_modules/form-data/lib/browser.js +2 -0
  367. package/package/horizon-sp/node_modules/form-data/lib/form_data.js +501 -0
  368. package/package/horizon-sp/node_modules/form-data/lib/populate.js +10 -0
  369. package/package/horizon-sp/node_modules/form-data/package.json +68 -0
  370. package/package/horizon-sp/node_modules/fs-extra/LICENSE +15 -0
  371. package/package/horizon-sp/node_modules/fs-extra/README.md +290 -0
  372. package/package/horizon-sp/node_modules/fs-extra/lib/copy/copy-sync.js +161 -0
  373. package/package/horizon-sp/node_modules/fs-extra/lib/copy/copy.js +238 -0
  374. package/package/horizon-sp/node_modules/fs-extra/lib/copy/index.js +7 -0
  375. package/package/horizon-sp/node_modules/fs-extra/lib/empty/index.js +39 -0
  376. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/file.js +69 -0
  377. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/index.js +23 -0
  378. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/link.js +64 -0
  379. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/symlink-paths.js +99 -0
  380. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/symlink-type.js +31 -0
  381. package/package/horizon-sp/node_modules/fs-extra/lib/ensure/symlink.js +82 -0
  382. package/package/horizon-sp/node_modules/fs-extra/lib/esm.mjs +68 -0
  383. package/package/horizon-sp/node_modules/fs-extra/lib/fs/index.js +140 -0
  384. package/package/horizon-sp/node_modules/fs-extra/lib/index.js +16 -0
  385. package/package/horizon-sp/node_modules/fs-extra/lib/json/index.js +16 -0
  386. package/package/horizon-sp/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  387. package/package/horizon-sp/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  388. package/package/horizon-sp/node_modules/fs-extra/lib/json/output-json.js +12 -0
  389. package/package/horizon-sp/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  390. package/package/horizon-sp/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  391. package/package/horizon-sp/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  392. package/package/horizon-sp/node_modules/fs-extra/lib/move/index.js +7 -0
  393. package/package/horizon-sp/node_modules/fs-extra/lib/move/move-sync.js +54 -0
  394. package/package/horizon-sp/node_modules/fs-extra/lib/move/move.js +75 -0
  395. package/package/horizon-sp/node_modules/fs-extra/lib/output-file/index.js +40 -0
  396. package/package/horizon-sp/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  397. package/package/horizon-sp/node_modules/fs-extra/lib/remove/index.js +17 -0
  398. package/package/horizon-sp/node_modules/fs-extra/lib/util/stat.js +154 -0
  399. package/package/horizon-sp/node_modules/fs-extra/lib/util/utimes.js +26 -0
  400. package/package/horizon-sp/node_modules/fs-extra/package.json +71 -0
  401. package/package/horizon-sp/node_modules/graceful-fs/LICENSE +15 -0
  402. package/package/horizon-sp/node_modules/graceful-fs/README.md +143 -0
  403. package/package/horizon-sp/node_modules/graceful-fs/clone.js +23 -0
  404. package/package/horizon-sp/node_modules/graceful-fs/graceful-fs.js +448 -0
  405. package/package/horizon-sp/node_modules/graceful-fs/legacy-streams.js +118 -0
  406. package/package/horizon-sp/node_modules/graceful-fs/package.json +50 -0
  407. package/package/horizon-sp/node_modules/graceful-fs/polyfills.js +355 -0
  408. package/package/horizon-sp/node_modules/jsonfile/CHANGELOG.md +171 -0
  409. package/package/horizon-sp/node_modules/jsonfile/LICENSE +15 -0
  410. package/package/horizon-sp/node_modules/jsonfile/README.md +230 -0
  411. package/package/horizon-sp/node_modules/jsonfile/index.js +88 -0
  412. package/package/horizon-sp/node_modules/jsonfile/package.json +40 -0
  413. package/package/horizon-sp/node_modules/jsonfile/utils.js +14 -0
  414. package/package/horizon-sp/node_modules/mime-db/HISTORY.md +507 -0
  415. package/package/horizon-sp/node_modules/mime-db/LICENSE +23 -0
  416. package/package/horizon-sp/node_modules/mime-db/README.md +100 -0
  417. package/package/horizon-sp/node_modules/mime-db/db.json +8519 -0
  418. package/package/horizon-sp/node_modules/mime-db/index.js +12 -0
  419. package/package/horizon-sp/node_modules/mime-db/package.json +60 -0
  420. package/package/horizon-sp/node_modules/mime-types/HISTORY.md +397 -0
  421. package/package/horizon-sp/node_modules/mime-types/LICENSE +23 -0
  422. package/package/horizon-sp/node_modules/mime-types/README.md +113 -0
  423. package/package/horizon-sp/node_modules/mime-types/index.js +188 -0
  424. package/package/horizon-sp/node_modules/mime-types/package.json +44 -0
  425. package/package/horizon-sp/node_modules/proxy-from-env/LICENSE +20 -0
  426. package/package/horizon-sp/node_modules/proxy-from-env/README.md +131 -0
  427. package/package/horizon-sp/node_modules/proxy-from-env/index.js +108 -0
  428. package/package/horizon-sp/node_modules/proxy-from-env/package.json +34 -0
  429. package/package/horizon-sp/node_modules/proxy-from-env/test.js +483 -0
  430. package/package/horizon-sp/node_modules/universalify/LICENSE +20 -0
  431. package/package/horizon-sp/node_modules/universalify/README.md +76 -0
  432. package/package/horizon-sp/node_modules/universalify/index.js +24 -0
  433. package/package/horizon-sp/node_modules/universalify/package.json +34 -0
  434. package/package/horizon-sp/package-lock.json +150 -0
  435. package/package/horizon-sp/package.json +20 -0
  436. package/package.json +133 -4
  437. package/src/ReportV1.js +55 -0
  438. package/src/addExternalModule.js +16 -0
  439. package/src/addUserToGroup.js +78 -0
  440. package/src/changeAdminStatus.js +79 -0
  441. package/src/changeArchivedStatus.js +41 -0
  442. package/src/changeAvt.js +86 -0
  443. package/src/changeBio.js +65 -0
  444. package/src/changeBlockedStatus.js +36 -0
  445. package/src/changeGroupImage.js +106 -0
  446. package/src/changeNickname.js +45 -0
  447. package/src/changeThreadColor.js +62 -0
  448. package/src/changeThreadEmoji.js +42 -0
  449. package/src/createNewGroup.js +70 -0
  450. package/src/createPoll.js +60 -0
  451. package/src/data/getThreadInfo.json +31985 -0
  452. package/src/deleteMessage.js +45 -0
  453. package/src/deleteThread.js +43 -0
  454. package/src/forwardAttachment.js +48 -0
  455. package/src/getAccessToken.js +33 -0
  456. package/src/getCurrentUserID.js +7 -0
  457. package/src/getEmojiUrl.js +27 -0
  458. package/src/getFriendsList.js +73 -0
  459. package/src/getMessage.js +80 -0
  460. package/src/getThreadHistory.js +537 -0
  461. package/src/getThreadHistoryDeprecated.js +71 -0
  462. package/src/getThreadInfo.js +193 -0
  463. package/src/getThreadInfoDeprecated.js +56 -0
  464. package/src/getThreadList.js +213 -0
  465. package/src/getThreadListDeprecated.js +46 -0
  466. package/src/getThreadMain.js +219 -0
  467. package/src/getThreadPictures.js +59 -0
  468. package/src/getUserID.js +62 -0
  469. package/src/getUserInfo.js +66 -0
  470. package/src/getUserInfoMain.js +65 -0
  471. package/src/getUserInfoV2.js +36 -0
  472. package/src/getUserInfoV3.js +63 -0
  473. package/src/getUserInfoV4.js +55 -0
  474. package/src/getUserInfoV5.js +61 -0
  475. package/src/handleFriendRequest.js +46 -0
  476. package/src/handleMessageRequest.js +49 -0
  477. package/src/httpGet.js +49 -0
  478. package/src/httpPost.js +48 -0
  479. package/src/httpPostFormData.js +41 -0
  480. package/src/listenMqtt.js +629 -0
  481. package/src/logout.js +68 -0
  482. package/src/markAsDelivered.js +48 -0
  483. package/src/markAsRead.js +70 -0
  484. package/src/markAsReadAll.js +43 -0
  485. package/src/markAsSeen.js +51 -0
  486. package/src/muteThread.js +47 -0
  487. package/src/removeUserFromGroup.js +49 -0
  488. package/src/resolvePhotoUrl.js +37 -0
  489. package/src/searchForThread.js +43 -0
  490. package/src/sendMessage.js +321 -0
  491. package/src/sendTypingIndicator.js +80 -0
  492. package/src/setMessageReaction.js +109 -0
  493. package/src/setPostReaction.js +102 -0
  494. package/src/setTitle.js +74 -0
  495. package/src/threadColors.js +39 -0
  496. package/src/unfriend.js +43 -0
  497. package/src/unsendMessage.js +40 -0
  498. package/test/example-config.json +18 -0
  499. package/test/test-page.js +140 -0
  500. package/test/test.js +385 -0
  501. package/utils.js +1246 -0
@@ -0,0 +1,1642 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
+
7
+ var Stream = _interopDefault(require('stream'));
8
+ var http = _interopDefault(require('http'));
9
+ var Url = _interopDefault(require('url'));
10
+ var https = _interopDefault(require('https'));
11
+ var zlib = _interopDefault(require('zlib'));
12
+
13
+ // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
14
+
15
+ // fix for "Readable" isn't a named export issue
16
+ const Readable = Stream.Readable;
17
+
18
+ const BUFFER = Symbol('buffer');
19
+ const TYPE = Symbol('type');
20
+
21
+ class Blob {
22
+ constructor() {
23
+ this[TYPE] = '';
24
+
25
+ const blobParts = arguments[0];
26
+ const options = arguments[1];
27
+
28
+ const buffers = [];
29
+ let size = 0;
30
+
31
+ if (blobParts) {
32
+ const a = blobParts;
33
+ const length = Number(a.length);
34
+ for (let i = 0; i < length; i++) {
35
+ const element = a[i];
36
+ let buffer;
37
+ if (element instanceof Buffer) {
38
+ buffer = element;
39
+ } else if (ArrayBuffer.isView(element)) {
40
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
41
+ } else if (element instanceof ArrayBuffer) {
42
+ buffer = Buffer.from(element);
43
+ } else if (element instanceof Blob) {
44
+ buffer = element[BUFFER];
45
+ } else {
46
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
47
+ }
48
+ size += buffer.length;
49
+ buffers.push(buffer);
50
+ }
51
+ }
52
+
53
+ this[BUFFER] = Buffer.concat(buffers);
54
+
55
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
56
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
57
+ this[TYPE] = type;
58
+ }
59
+ }
60
+ get size() {
61
+ return this[BUFFER].length;
62
+ }
63
+ get type() {
64
+ return this[TYPE];
65
+ }
66
+ text() {
67
+ return Promise.resolve(this[BUFFER].toString());
68
+ }
69
+ arrayBuffer() {
70
+ const buf = this[BUFFER];
71
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
72
+ return Promise.resolve(ab);
73
+ }
74
+ stream() {
75
+ const readable = new Readable();
76
+ readable._read = function () {};
77
+ readable.push(this[BUFFER]);
78
+ readable.push(null);
79
+ return readable;
80
+ }
81
+ toString() {
82
+ return '[object Blob]';
83
+ }
84
+ slice() {
85
+ const size = this.size;
86
+
87
+ const start = arguments[0];
88
+ const end = arguments[1];
89
+ let relativeStart, relativeEnd;
90
+ if (start === undefined) {
91
+ relativeStart = 0;
92
+ } else if (start < 0) {
93
+ relativeStart = Math.max(size + start, 0);
94
+ } else {
95
+ relativeStart = Math.min(start, size);
96
+ }
97
+ if (end === undefined) {
98
+ relativeEnd = size;
99
+ } else if (end < 0) {
100
+ relativeEnd = Math.max(size + end, 0);
101
+ } else {
102
+ relativeEnd = Math.min(end, size);
103
+ }
104
+ const span = Math.max(relativeEnd - relativeStart, 0);
105
+
106
+ const buffer = this[BUFFER];
107
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
108
+ const blob = new Blob([], { type: arguments[2] });
109
+ blob[BUFFER] = slicedBuffer;
110
+ return blob;
111
+ }
112
+ }
113
+
114
+ Object.defineProperties(Blob.prototype, {
115
+ size: { enumerable: true },
116
+ type: { enumerable: true },
117
+ slice: { enumerable: true }
118
+ });
119
+
120
+ Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
121
+ value: 'Blob',
122
+ writable: false,
123
+ enumerable: false,
124
+ configurable: true
125
+ });
126
+
127
+ /**
128
+ * fetch-error.js
129
+ *
130
+ * FetchError interface for operational errors
131
+ */
132
+
133
+ /**
134
+ * Create FetchError instance
135
+ *
136
+ * @param String message Error message for human
137
+ * @param String type Error type for machine
138
+ * @param String systemError For Node.js system error
139
+ * @return FetchError
140
+ */
141
+ function FetchError(message, type, systemError) {
142
+ Error.call(this, message);
143
+
144
+ this.message = message;
145
+ this.type = type;
146
+
147
+ // when err.type is `system`, err.code contains system error code
148
+ if (systemError) {
149
+ this.code = this.errno = systemError.code;
150
+ }
151
+
152
+ // hide custom error implementation details from end-users
153
+ Error.captureStackTrace(this, this.constructor);
154
+ }
155
+
156
+ FetchError.prototype = Object.create(Error.prototype);
157
+ FetchError.prototype.constructor = FetchError;
158
+ FetchError.prototype.name = 'FetchError';
159
+
160
+ let convert;
161
+ try {
162
+ convert = require('encoding').convert;
163
+ } catch (e) {}
164
+
165
+ const INTERNALS = Symbol('Body internals');
166
+
167
+ // fix an issue where "PassThrough" isn't a named export for node <10
168
+ const PassThrough = Stream.PassThrough;
169
+
170
+ /**
171
+ * Body mixin
172
+ *
173
+ * Ref: https://fetch.spec.whatwg.org/#body
174
+ *
175
+ * @param Stream body Readable stream
176
+ * @param Object opts Response options
177
+ * @return Void
178
+ */
179
+ function Body(body) {
180
+ var _this = this;
181
+
182
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
183
+ _ref$size = _ref.size;
184
+
185
+ let size = _ref$size === undefined ? 0 : _ref$size;
186
+ var _ref$timeout = _ref.timeout;
187
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
188
+
189
+ if (body == null) {
190
+ // body is undefined or null
191
+ body = null;
192
+ } else if (isURLSearchParams(body)) {
193
+ // body is a URLSearchParams
194
+ body = Buffer.from(body.toString());
195
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
196
+ // body is ArrayBuffer
197
+ body = Buffer.from(body);
198
+ } else if (ArrayBuffer.isView(body)) {
199
+ // body is ArrayBufferView
200
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
201
+ } else if (body instanceof Stream) ; else {
202
+ // none of the above
203
+ // coerce to string then buffer
204
+ body = Buffer.from(String(body));
205
+ }
206
+ this[INTERNALS] = {
207
+ body,
208
+ disturbed: false,
209
+ error: null
210
+ };
211
+ this.size = size;
212
+ this.timeout = timeout;
213
+
214
+ if (body instanceof Stream) {
215
+ body.on('error', function (err) {
216
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
217
+ _this[INTERNALS].error = error;
218
+ });
219
+ }
220
+ }
221
+
222
+ Body.prototype = {
223
+ get body() {
224
+ return this[INTERNALS].body;
225
+ },
226
+
227
+ get bodyUsed() {
228
+ return this[INTERNALS].disturbed;
229
+ },
230
+
231
+ /**
232
+ * Decode response as ArrayBuffer
233
+ *
234
+ * @return Promise
235
+ */
236
+ arrayBuffer() {
237
+ return consumeBody.call(this).then(function (buf) {
238
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
239
+ });
240
+ },
241
+
242
+ /**
243
+ * Return raw response as Blob
244
+ *
245
+ * @return Promise
246
+ */
247
+ blob() {
248
+ let ct = this.headers && this.headers.get('content-type') || '';
249
+ return consumeBody.call(this).then(function (buf) {
250
+ return Object.assign(
251
+ // Prevent copying
252
+ new Blob([], {
253
+ type: ct.toLowerCase()
254
+ }), {
255
+ [BUFFER]: buf
256
+ });
257
+ });
258
+ },
259
+
260
+ /**
261
+ * Decode response as json
262
+ *
263
+ * @return Promise
264
+ */
265
+ json() {
266
+ var _this2 = this;
267
+
268
+ return consumeBody.call(this).then(function (buffer) {
269
+ try {
270
+ return JSON.parse(buffer.toString());
271
+ } catch (err) {
272
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
273
+ }
274
+ });
275
+ },
276
+
277
+ /**
278
+ * Decode response as text
279
+ *
280
+ * @return Promise
281
+ */
282
+ text() {
283
+ return consumeBody.call(this).then(function (buffer) {
284
+ return buffer.toString();
285
+ });
286
+ },
287
+
288
+ /**
289
+ * Decode response as buffer (non-spec api)
290
+ *
291
+ * @return Promise
292
+ */
293
+ buffer() {
294
+ return consumeBody.call(this);
295
+ },
296
+
297
+ /**
298
+ * Decode response as text, while automatically detecting the encoding and
299
+ * trying to decode to UTF-8 (non-spec api)
300
+ *
301
+ * @return Promise
302
+ */
303
+ textConverted() {
304
+ var _this3 = this;
305
+
306
+ return consumeBody.call(this).then(function (buffer) {
307
+ return convertBody(buffer, _this3.headers);
308
+ });
309
+ }
310
+ };
311
+
312
+ // In browsers, all properties are enumerable.
313
+ Object.defineProperties(Body.prototype, {
314
+ body: { enumerable: true },
315
+ bodyUsed: { enumerable: true },
316
+ arrayBuffer: { enumerable: true },
317
+ blob: { enumerable: true },
318
+ json: { enumerable: true },
319
+ text: { enumerable: true }
320
+ });
321
+
322
+ Body.mixIn = function (proto) {
323
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
324
+ // istanbul ignore else: future proof
325
+ if (!(name in proto)) {
326
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
327
+ Object.defineProperty(proto, name, desc);
328
+ }
329
+ }
330
+ };
331
+
332
+ /**
333
+ * Consume and convert an entire Body to a Buffer.
334
+ *
335
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
336
+ *
337
+ * @return Promise
338
+ */
339
+ function consumeBody() {
340
+ var _this4 = this;
341
+
342
+ if (this[INTERNALS].disturbed) {
343
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
344
+ }
345
+
346
+ this[INTERNALS].disturbed = true;
347
+
348
+ if (this[INTERNALS].error) {
349
+ return Body.Promise.reject(this[INTERNALS].error);
350
+ }
351
+
352
+ let body = this.body;
353
+
354
+ // body is null
355
+ if (body === null) {
356
+ return Body.Promise.resolve(Buffer.alloc(0));
357
+ }
358
+
359
+ // body is blob
360
+ if (isBlob(body)) {
361
+ body = body.stream();
362
+ }
363
+
364
+ // body is buffer
365
+ if (Buffer.isBuffer(body)) {
366
+ return Body.Promise.resolve(body);
367
+ }
368
+
369
+ // istanbul ignore if: should never happen
370
+ if (!(body instanceof Stream)) {
371
+ return Body.Promise.resolve(Buffer.alloc(0));
372
+ }
373
+
374
+ // body is stream
375
+ // get ready to actually consume the body
376
+ let accum = [];
377
+ let accumBytes = 0;
378
+ let abort = false;
379
+
380
+ return new Body.Promise(function (resolve, reject) {
381
+ let resTimeout;
382
+
383
+ // allow timeout on slow response body
384
+ if (_this4.timeout) {
385
+ resTimeout = setTimeout(function () {
386
+ abort = true;
387
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
388
+ }, _this4.timeout);
389
+ }
390
+
391
+ // handle stream errors
392
+ body.on('error', function (err) {
393
+ if (err.name === 'AbortError') {
394
+ // if the request was aborted, reject with this Error
395
+ abort = true;
396
+ reject(err);
397
+ } else {
398
+ // other errors, such as incorrect content-encoding
399
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
400
+ }
401
+ });
402
+
403
+ body.on('data', function (chunk) {
404
+ if (abort || chunk === null) {
405
+ return;
406
+ }
407
+
408
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
409
+ abort = true;
410
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
411
+ return;
412
+ }
413
+
414
+ accumBytes += chunk.length;
415
+ accum.push(chunk);
416
+ });
417
+
418
+ body.on('end', function () {
419
+ if (abort) {
420
+ return;
421
+ }
422
+
423
+ clearTimeout(resTimeout);
424
+
425
+ try {
426
+ resolve(Buffer.concat(accum, accumBytes));
427
+ } catch (err) {
428
+ // handle streams that have accumulated too much data (issue #414)
429
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
430
+ }
431
+ });
432
+ });
433
+ }
434
+
435
+ /**
436
+ * Detect buffer encoding and convert to target encoding
437
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
438
+ *
439
+ * @param Buffer buffer Incoming buffer
440
+ * @param String encoding Target encoding
441
+ * @return String
442
+ */
443
+ function convertBody(buffer, headers) {
444
+ if (typeof convert !== 'function') {
445
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
446
+ }
447
+
448
+ const ct = headers.get('content-type');
449
+ let charset = 'utf-8';
450
+ let res, str;
451
+
452
+ // header
453
+ if (ct) {
454
+ res = /charset=([^;]*)/i.exec(ct);
455
+ }
456
+
457
+ // no charset in content type, peek at response body for at most 1024 bytes
458
+ str = buffer.slice(0, 1024).toString();
459
+
460
+ // html5
461
+ if (!res && str) {
462
+ res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
463
+ }
464
+
465
+ // html4
466
+ if (!res && str) {
467
+ res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
468
+
469
+ if (res) {
470
+ res = /charset=(.*)/i.exec(res.pop());
471
+ }
472
+ }
473
+
474
+ // xml
475
+ if (!res && str) {
476
+ res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
477
+ }
478
+
479
+ // found charset
480
+ if (res) {
481
+ charset = res.pop();
482
+
483
+ // prevent decode issues when sites use incorrect encoding
484
+ // ref: https://hsivonen.fi/encoding-menu/
485
+ if (charset === 'gb2312' || charset === 'gbk') {
486
+ charset = 'gb18030';
487
+ }
488
+ }
489
+
490
+ // turn raw buffers into a single utf-8 buffer
491
+ return convert(buffer, 'UTF-8', charset).toString();
492
+ }
493
+
494
+ /**
495
+ * Detect a URLSearchParams object
496
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
497
+ *
498
+ * @param Object obj Object to detect by type or brand
499
+ * @return String
500
+ */
501
+ function isURLSearchParams(obj) {
502
+ // Duck-typing as a necessary condition.
503
+ if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
504
+ return false;
505
+ }
506
+
507
+ // Brand-checking and more duck-typing as optional condition.
508
+ return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
509
+ }
510
+
511
+ /**
512
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
513
+ * @param {*} obj
514
+ * @return {boolean}
515
+ */
516
+ function isBlob(obj) {
517
+ return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
518
+ }
519
+
520
+ /**
521
+ * Clone body given Res/Req instance
522
+ *
523
+ * @param Mixed instance Response or Request instance
524
+ * @return Mixed
525
+ */
526
+ function clone(instance) {
527
+ let p1, p2;
528
+ let body = instance.body;
529
+
530
+ // don't allow cloning a used body
531
+ if (instance.bodyUsed) {
532
+ throw new Error('cannot clone body after it is used');
533
+ }
534
+
535
+ // check that body is a stream and not form-data object
536
+ // note: we can't clone the form-data object without having it as a dependency
537
+ if (body instanceof Stream && typeof body.getBoundary !== 'function') {
538
+ // tee instance body
539
+ p1 = new PassThrough();
540
+ p2 = new PassThrough();
541
+ body.pipe(p1);
542
+ body.pipe(p2);
543
+ // set instance body to teed body and return the other teed body
544
+ instance[INTERNALS].body = p1;
545
+ body = p2;
546
+ }
547
+
548
+ return body;
549
+ }
550
+
551
+ /**
552
+ * Performs the operation "extract a `Content-Type` value from |object|" as
553
+ * specified in the specification:
554
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
555
+ *
556
+ * This function assumes that instance.body is present.
557
+ *
558
+ * @param Mixed instance Any options.body input
559
+ */
560
+ function extractContentType(body) {
561
+ if (body === null) {
562
+ // body is null
563
+ return null;
564
+ } else if (typeof body === 'string') {
565
+ // body is string
566
+ return 'text/plain;charset=UTF-8';
567
+ } else if (isURLSearchParams(body)) {
568
+ // body is a URLSearchParams
569
+ return 'application/x-www-form-urlencoded;charset=UTF-8';
570
+ } else if (isBlob(body)) {
571
+ // body is blob
572
+ return body.type || null;
573
+ } else if (Buffer.isBuffer(body)) {
574
+ // body is buffer
575
+ return null;
576
+ } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
577
+ // body is ArrayBuffer
578
+ return null;
579
+ } else if (ArrayBuffer.isView(body)) {
580
+ // body is ArrayBufferView
581
+ return null;
582
+ } else if (typeof body.getBoundary === 'function') {
583
+ // detect form data input from form-data module
584
+ return `multipart/form-data;boundary=${body.getBoundary()}`;
585
+ } else if (body instanceof Stream) {
586
+ // body is stream
587
+ // can't really do much about this
588
+ return null;
589
+ } else {
590
+ // Body constructor defaults other things to string
591
+ return 'text/plain;charset=UTF-8';
592
+ }
593
+ }
594
+
595
+ /**
596
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
597
+ * For us, we have to explicitly get it with a function.
598
+ *
599
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
600
+ *
601
+ * @param Body instance Instance of Body
602
+ * @return Number? Number of bytes, or null if not possible
603
+ */
604
+ function getTotalBytes(instance) {
605
+ const body = instance.body;
606
+
607
+
608
+ if (body === null) {
609
+ // body is null
610
+ return 0;
611
+ } else if (isBlob(body)) {
612
+ return body.size;
613
+ } else if (Buffer.isBuffer(body)) {
614
+ // body is buffer
615
+ return body.length;
616
+ } else if (body && typeof body.getLengthSync === 'function') {
617
+ // detect form data input from form-data module
618
+ if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
619
+ body.hasKnownLength && body.hasKnownLength()) {
620
+ // 2.x
621
+ return body.getLengthSync();
622
+ }
623
+ return null;
624
+ } else {
625
+ // body is stream
626
+ return null;
627
+ }
628
+ }
629
+
630
+ /**
631
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
632
+ *
633
+ * @param Body instance Instance of Body
634
+ * @return Void
635
+ */
636
+ function writeToStream(dest, instance) {
637
+ const body = instance.body;
638
+
639
+
640
+ if (body === null) {
641
+ // body is null
642
+ dest.end();
643
+ } else if (isBlob(body)) {
644
+ body.stream().pipe(dest);
645
+ } else if (Buffer.isBuffer(body)) {
646
+ // body is buffer
647
+ dest.write(body);
648
+ dest.end();
649
+ } else {
650
+ // body is stream
651
+ body.pipe(dest);
652
+ }
653
+ }
654
+
655
+ // expose Promise
656
+ Body.Promise = global.Promise;
657
+
658
+ /**
659
+ * headers.js
660
+ *
661
+ * Headers class offers convenient helpers
662
+ */
663
+
664
+ const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
665
+ const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
666
+
667
+ function validateName(name) {
668
+ name = `${name}`;
669
+ if (invalidTokenRegex.test(name) || name === '') {
670
+ throw new TypeError(`${name} is not a legal HTTP header name`);
671
+ }
672
+ }
673
+
674
+ function validateValue(value) {
675
+ value = `${value}`;
676
+ if (invalidHeaderCharRegex.test(value)) {
677
+ throw new TypeError(`${value} is not a legal HTTP header value`);
678
+ }
679
+ }
680
+
681
+ /**
682
+ * Find the key in the map object given a header name.
683
+ *
684
+ * Returns undefined if not found.
685
+ *
686
+ * @param String name Header name
687
+ * @return String|Undefined
688
+ */
689
+ function find(map, name) {
690
+ name = name.toLowerCase();
691
+ for (const key in map) {
692
+ if (key.toLowerCase() === name) {
693
+ return key;
694
+ }
695
+ }
696
+ return undefined;
697
+ }
698
+
699
+ const MAP = Symbol('map');
700
+ class Headers {
701
+ /**
702
+ * Headers class
703
+ *
704
+ * @param Object headers Response headers
705
+ * @return Void
706
+ */
707
+ constructor() {
708
+ let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
709
+
710
+ this[MAP] = Object.create(null);
711
+
712
+ if (init instanceof Headers) {
713
+ const rawHeaders = init.raw();
714
+ const headerNames = Object.keys(rawHeaders);
715
+
716
+ for (const headerName of headerNames) {
717
+ for (const value of rawHeaders[headerName]) {
718
+ this.append(headerName, value);
719
+ }
720
+ }
721
+
722
+ return;
723
+ }
724
+
725
+ // We don't worry about converting prop to ByteString here as append()
726
+ // will handle it.
727
+ if (init == null) ; else if (typeof init === 'object') {
728
+ const method = init[Symbol.iterator];
729
+ if (method != null) {
730
+ if (typeof method !== 'function') {
731
+ throw new TypeError('Header pairs must be iterable');
732
+ }
733
+
734
+ // sequence<sequence<ByteString>>
735
+ // Note: per spec we have to first exhaust the lists then process them
736
+ const pairs = [];
737
+ for (const pair of init) {
738
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
739
+ throw new TypeError('Each header pair must be iterable');
740
+ }
741
+ pairs.push(Array.from(pair));
742
+ }
743
+
744
+ for (const pair of pairs) {
745
+ if (pair.length !== 2) {
746
+ throw new TypeError('Each header pair must be a name/value tuple');
747
+ }
748
+ this.append(pair[0], pair[1]);
749
+ }
750
+ } else {
751
+ // record<ByteString, ByteString>
752
+ for (const key of Object.keys(init)) {
753
+ const value = init[key];
754
+ this.append(key, value);
755
+ }
756
+ }
757
+ } else {
758
+ throw new TypeError('Provided initializer must be an object');
759
+ }
760
+ }
761
+
762
+ /**
763
+ * Return combined header value given name
764
+ *
765
+ * @param String name Header name
766
+ * @return Mixed
767
+ */
768
+ get(name) {
769
+ name = `${name}`;
770
+ validateName(name);
771
+ const key = find(this[MAP], name);
772
+ if (key === undefined) {
773
+ return null;
774
+ }
775
+
776
+ return this[MAP][key].join(', ');
777
+ }
778
+
779
+ /**
780
+ * Iterate over all headers
781
+ *
782
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
783
+ * @param Boolean thisArg `this` context for callback function
784
+ * @return Void
785
+ */
786
+ forEach(callback) {
787
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
788
+
789
+ let pairs = getHeaders(this);
790
+ let i = 0;
791
+ while (i < pairs.length) {
792
+ var _pairs$i = pairs[i];
793
+ const name = _pairs$i[0],
794
+ value = _pairs$i[1];
795
+
796
+ callback.call(thisArg, value, name, this);
797
+ pairs = getHeaders(this);
798
+ i++;
799
+ }
800
+ }
801
+
802
+ /**
803
+ * Overwrite header values given name
804
+ *
805
+ * @param String name Header name
806
+ * @param String value Header value
807
+ * @return Void
808
+ */
809
+ set(name, value) {
810
+ name = `${name}`;
811
+ value = `${value}`;
812
+ validateName(name);
813
+ validateValue(value);
814
+ const key = find(this[MAP], name);
815
+ this[MAP][key !== undefined ? key : name] = [value];
816
+ }
817
+
818
+ /**
819
+ * Append a value onto existing header
820
+ *
821
+ * @param String name Header name
822
+ * @param String value Header value
823
+ * @return Void
824
+ */
825
+ append(name, value) {
826
+ name = `${name}`;
827
+ value = `${value}`;
828
+ validateName(name);
829
+ validateValue(value);
830
+ const key = find(this[MAP], name);
831
+ if (key !== undefined) {
832
+ this[MAP][key].push(value);
833
+ } else {
834
+ this[MAP][name] = [value];
835
+ }
836
+ }
837
+
838
+ /**
839
+ * Check for header name existence
840
+ *
841
+ * @param String name Header name
842
+ * @return Boolean
843
+ */
844
+ has(name) {
845
+ name = `${name}`;
846
+ validateName(name);
847
+ return find(this[MAP], name) !== undefined;
848
+ }
849
+
850
+ /**
851
+ * Delete all header values given name
852
+ *
853
+ * @param String name Header name
854
+ * @return Void
855
+ */
856
+ delete(name) {
857
+ name = `${name}`;
858
+ validateName(name);
859
+ const key = find(this[MAP], name);
860
+ if (key !== undefined) {
861
+ delete this[MAP][key];
862
+ }
863
+ }
864
+
865
+ /**
866
+ * Return raw headers (non-spec api)
867
+ *
868
+ * @return Object
869
+ */
870
+ raw() {
871
+ return this[MAP];
872
+ }
873
+
874
+ /**
875
+ * Get an iterator on keys.
876
+ *
877
+ * @return Iterator
878
+ */
879
+ keys() {
880
+ return createHeadersIterator(this, 'key');
881
+ }
882
+
883
+ /**
884
+ * Get an iterator on values.
885
+ *
886
+ * @return Iterator
887
+ */
888
+ values() {
889
+ return createHeadersIterator(this, 'value');
890
+ }
891
+
892
+ /**
893
+ * Get an iterator on entries.
894
+ *
895
+ * This is the default iterator of the Headers object.
896
+ *
897
+ * @return Iterator
898
+ */
899
+ [Symbol.iterator]() {
900
+ return createHeadersIterator(this, 'key+value');
901
+ }
902
+ }
903
+ Headers.prototype.entries = Headers.prototype[Symbol.iterator];
904
+
905
+ Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
906
+ value: 'Headers',
907
+ writable: false,
908
+ enumerable: false,
909
+ configurable: true
910
+ });
911
+
912
+ Object.defineProperties(Headers.prototype, {
913
+ get: { enumerable: true },
914
+ forEach: { enumerable: true },
915
+ set: { enumerable: true },
916
+ append: { enumerable: true },
917
+ has: { enumerable: true },
918
+ delete: { enumerable: true },
919
+ keys: { enumerable: true },
920
+ values: { enumerable: true },
921
+ entries: { enumerable: true }
922
+ });
923
+
924
+ function getHeaders(headers) {
925
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
926
+
927
+ const keys = Object.keys(headers[MAP]).sort();
928
+ return keys.map(kind === 'key' ? function (k) {
929
+ return k.toLowerCase();
930
+ } : kind === 'value' ? function (k) {
931
+ return headers[MAP][k].join(', ');
932
+ } : function (k) {
933
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
934
+ });
935
+ }
936
+
937
+ const INTERNAL = Symbol('internal');
938
+
939
+ function createHeadersIterator(target, kind) {
940
+ const iterator = Object.create(HeadersIteratorPrototype);
941
+ iterator[INTERNAL] = {
942
+ target,
943
+ kind,
944
+ index: 0
945
+ };
946
+ return iterator;
947
+ }
948
+
949
+ const HeadersIteratorPrototype = Object.setPrototypeOf({
950
+ next() {
951
+ // istanbul ignore if
952
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
953
+ throw new TypeError('Value of `this` is not a HeadersIterator');
954
+ }
955
+
956
+ var _INTERNAL = this[INTERNAL];
957
+ const target = _INTERNAL.target,
958
+ kind = _INTERNAL.kind,
959
+ index = _INTERNAL.index;
960
+
961
+ const values = getHeaders(target, kind);
962
+ const len = values.length;
963
+ if (index >= len) {
964
+ return {
965
+ value: undefined,
966
+ done: true
967
+ };
968
+ }
969
+
970
+ this[INTERNAL].index = index + 1;
971
+
972
+ return {
973
+ value: values[index],
974
+ done: false
975
+ };
976
+ }
977
+ }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
978
+
979
+ Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
980
+ value: 'HeadersIterator',
981
+ writable: false,
982
+ enumerable: false,
983
+ configurable: true
984
+ });
985
+
986
+ /**
987
+ * Export the Headers object in a form that Node.js can consume.
988
+ *
989
+ * @param Headers headers
990
+ * @return Object
991
+ */
992
+ function exportNodeCompatibleHeaders(headers) {
993
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
994
+
995
+ // http.request() only supports string as Host header. This hack makes
996
+ // specifying custom Host header possible.
997
+ const hostHeaderKey = find(headers[MAP], 'Host');
998
+ if (hostHeaderKey !== undefined) {
999
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
1000
+ }
1001
+
1002
+ return obj;
1003
+ }
1004
+
1005
+ /**
1006
+ * Create a Headers object from an object of headers, ignoring those that do
1007
+ * not conform to HTTP grammar productions.
1008
+ *
1009
+ * @param Object obj Object of headers
1010
+ * @return Headers
1011
+ */
1012
+ function createHeadersLenient(obj) {
1013
+ const headers = new Headers();
1014
+ for (const name of Object.keys(obj)) {
1015
+ if (invalidTokenRegex.test(name)) {
1016
+ continue;
1017
+ }
1018
+ if (Array.isArray(obj[name])) {
1019
+ for (const val of obj[name]) {
1020
+ if (invalidHeaderCharRegex.test(val)) {
1021
+ continue;
1022
+ }
1023
+ if (headers[MAP][name] === undefined) {
1024
+ headers[MAP][name] = [val];
1025
+ } else {
1026
+ headers[MAP][name].push(val);
1027
+ }
1028
+ }
1029
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
1030
+ headers[MAP][name] = [obj[name]];
1031
+ }
1032
+ }
1033
+ return headers;
1034
+ }
1035
+
1036
+ const INTERNALS$1 = Symbol('Response internals');
1037
+
1038
+ // fix an issue where "STATUS_CODES" aren't a named export for node <10
1039
+ const STATUS_CODES = http.STATUS_CODES;
1040
+
1041
+ /**
1042
+ * Response class
1043
+ *
1044
+ * @param Stream body Readable stream
1045
+ * @param Object opts Response options
1046
+ * @return Void
1047
+ */
1048
+ class Response {
1049
+ constructor() {
1050
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1051
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1052
+
1053
+ Body.call(this, body, opts);
1054
+
1055
+ const status = opts.status || 200;
1056
+ const headers = new Headers(opts.headers);
1057
+
1058
+ if (body != null && !headers.has('Content-Type')) {
1059
+ const contentType = extractContentType(body);
1060
+ if (contentType) {
1061
+ headers.append('Content-Type', contentType);
1062
+ }
1063
+ }
1064
+
1065
+ this[INTERNALS$1] = {
1066
+ url: opts.url,
1067
+ status,
1068
+ statusText: opts.statusText || STATUS_CODES[status],
1069
+ headers,
1070
+ counter: opts.counter
1071
+ };
1072
+ }
1073
+
1074
+ get url() {
1075
+ return this[INTERNALS$1].url || '';
1076
+ }
1077
+
1078
+ get status() {
1079
+ return this[INTERNALS$1].status;
1080
+ }
1081
+
1082
+ /**
1083
+ * Convenience property representing if the request ended normally
1084
+ */
1085
+ get ok() {
1086
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
1087
+ }
1088
+
1089
+ get redirected() {
1090
+ return this[INTERNALS$1].counter > 0;
1091
+ }
1092
+
1093
+ get statusText() {
1094
+ return this[INTERNALS$1].statusText;
1095
+ }
1096
+
1097
+ get headers() {
1098
+ return this[INTERNALS$1].headers;
1099
+ }
1100
+
1101
+ /**
1102
+ * Clone this response
1103
+ *
1104
+ * @return Response
1105
+ */
1106
+ clone() {
1107
+ return new Response(clone(this), {
1108
+ url: this.url,
1109
+ status: this.status,
1110
+ statusText: this.statusText,
1111
+ headers: this.headers,
1112
+ ok: this.ok,
1113
+ redirected: this.redirected
1114
+ });
1115
+ }
1116
+ }
1117
+
1118
+ Body.mixIn(Response.prototype);
1119
+
1120
+ Object.defineProperties(Response.prototype, {
1121
+ url: { enumerable: true },
1122
+ status: { enumerable: true },
1123
+ ok: { enumerable: true },
1124
+ redirected: { enumerable: true },
1125
+ statusText: { enumerable: true },
1126
+ headers: { enumerable: true },
1127
+ clone: { enumerable: true }
1128
+ });
1129
+
1130
+ Object.defineProperty(Response.prototype, Symbol.toStringTag, {
1131
+ value: 'Response',
1132
+ writable: false,
1133
+ enumerable: false,
1134
+ configurable: true
1135
+ });
1136
+
1137
+ const INTERNALS$2 = Symbol('Request internals');
1138
+
1139
+ // fix an issue where "format", "parse" aren't a named export for node <10
1140
+ const parse_url = Url.parse;
1141
+ const format_url = Url.format;
1142
+
1143
+ const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
1144
+
1145
+ /**
1146
+ * Check if a value is an instance of Request.
1147
+ *
1148
+ * @param Mixed input
1149
+ * @return Boolean
1150
+ */
1151
+ function isRequest(input) {
1152
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
1153
+ }
1154
+
1155
+ function isAbortSignal(signal) {
1156
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
1157
+ return !!(proto && proto.constructor.name === 'AbortSignal');
1158
+ }
1159
+
1160
+ /**
1161
+ * Request class
1162
+ *
1163
+ * @param Mixed input Url or Request instance
1164
+ * @param Object init Custom options
1165
+ * @return Void
1166
+ */
1167
+ class Request {
1168
+ constructor(input) {
1169
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1170
+
1171
+ let parsedURL;
1172
+
1173
+ // normalize input
1174
+ if (!isRequest(input)) {
1175
+ if (input && input.href) {
1176
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
1177
+ // will fall into this branch also (since their `toString()` will return
1178
+ // `href` property anyway)
1179
+ parsedURL = parse_url(input.href);
1180
+ } else {
1181
+ // coerce input to a string before attempting to parse
1182
+ parsedURL = parse_url(`${input}`);
1183
+ }
1184
+ input = {};
1185
+ } else {
1186
+ parsedURL = parse_url(input.url);
1187
+ }
1188
+
1189
+ let method = init.method || input.method || 'GET';
1190
+ method = method.toUpperCase();
1191
+
1192
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
1193
+ throw new TypeError('Request with GET/HEAD method cannot have body');
1194
+ }
1195
+
1196
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
1197
+
1198
+ Body.call(this, inputBody, {
1199
+ timeout: init.timeout || input.timeout || 0,
1200
+ size: init.size || input.size || 0
1201
+ });
1202
+
1203
+ const headers = new Headers(init.headers || input.headers || {});
1204
+
1205
+ if (inputBody != null && !headers.has('Content-Type')) {
1206
+ const contentType = extractContentType(inputBody);
1207
+ if (contentType) {
1208
+ headers.append('Content-Type', contentType);
1209
+ }
1210
+ }
1211
+
1212
+ let signal = isRequest(input) ? input.signal : null;
1213
+ if ('signal' in init) signal = init.signal;
1214
+
1215
+ if (signal != null && !isAbortSignal(signal)) {
1216
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
1217
+ }
1218
+
1219
+ this[INTERNALS$2] = {
1220
+ method,
1221
+ redirect: init.redirect || input.redirect || 'follow',
1222
+ headers,
1223
+ parsedURL,
1224
+ signal
1225
+ };
1226
+
1227
+ // node-fetch-only options
1228
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
1229
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
1230
+ this.counter = init.counter || input.counter || 0;
1231
+ this.agent = init.agent || input.agent;
1232
+ }
1233
+
1234
+ get method() {
1235
+ return this[INTERNALS$2].method;
1236
+ }
1237
+
1238
+ get url() {
1239
+ return format_url(this[INTERNALS$2].parsedURL);
1240
+ }
1241
+
1242
+ get headers() {
1243
+ return this[INTERNALS$2].headers;
1244
+ }
1245
+
1246
+ get redirect() {
1247
+ return this[INTERNALS$2].redirect;
1248
+ }
1249
+
1250
+ get signal() {
1251
+ return this[INTERNALS$2].signal;
1252
+ }
1253
+
1254
+ /**
1255
+ * Clone this request
1256
+ *
1257
+ * @return Request
1258
+ */
1259
+ clone() {
1260
+ return new Request(this);
1261
+ }
1262
+ }
1263
+
1264
+ Body.mixIn(Request.prototype);
1265
+
1266
+ Object.defineProperty(Request.prototype, Symbol.toStringTag, {
1267
+ value: 'Request',
1268
+ writable: false,
1269
+ enumerable: false,
1270
+ configurable: true
1271
+ });
1272
+
1273
+ Object.defineProperties(Request.prototype, {
1274
+ method: { enumerable: true },
1275
+ url: { enumerable: true },
1276
+ headers: { enumerable: true },
1277
+ redirect: { enumerable: true },
1278
+ clone: { enumerable: true },
1279
+ signal: { enumerable: true }
1280
+ });
1281
+
1282
+ /**
1283
+ * Convert a Request to Node.js http request options.
1284
+ *
1285
+ * @param Request A Request instance
1286
+ * @return Object The options object to be passed to http.request
1287
+ */
1288
+ function getNodeRequestOptions(request) {
1289
+ const parsedURL = request[INTERNALS$2].parsedURL;
1290
+ const headers = new Headers(request[INTERNALS$2].headers);
1291
+
1292
+ // fetch step 1.3
1293
+ if (!headers.has('Accept')) {
1294
+ headers.set('Accept', '*/*');
1295
+ }
1296
+
1297
+ // Basic fetch
1298
+ if (!parsedURL.protocol || !parsedURL.hostname) {
1299
+ throw new TypeError('Only absolute URLs are supported');
1300
+ }
1301
+
1302
+ if (!/^https?:$/.test(parsedURL.protocol)) {
1303
+ throw new TypeError('Only HTTP(S) protocols are supported');
1304
+ }
1305
+
1306
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
1307
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
1308
+ }
1309
+
1310
+ // HTTP-network-or-cache fetch steps 2.4-2.7
1311
+ let contentLengthValue = null;
1312
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
1313
+ contentLengthValue = '0';
1314
+ }
1315
+ if (request.body != null) {
1316
+ const totalBytes = getTotalBytes(request);
1317
+ if (typeof totalBytes === 'number') {
1318
+ contentLengthValue = String(totalBytes);
1319
+ }
1320
+ }
1321
+ if (contentLengthValue) {
1322
+ headers.set('Content-Length', contentLengthValue);
1323
+ }
1324
+
1325
+ // HTTP-network-or-cache fetch step 2.11
1326
+ if (!headers.has('User-Agent')) {
1327
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
1328
+ }
1329
+
1330
+ // HTTP-network-or-cache fetch step 2.15
1331
+ if (request.compress && !headers.has('Accept-Encoding')) {
1332
+ headers.set('Accept-Encoding', 'gzip,deflate');
1333
+ }
1334
+
1335
+ let agent = request.agent;
1336
+ if (typeof agent === 'function') {
1337
+ agent = agent(parsedURL);
1338
+ }
1339
+
1340
+ if (!headers.has('Connection') && !agent) {
1341
+ headers.set('Connection', 'close');
1342
+ }
1343
+
1344
+ // HTTP-network fetch step 4.2
1345
+ // chunked encoding is handled by Node.js
1346
+
1347
+ return Object.assign({}, parsedURL, {
1348
+ method: request.method,
1349
+ headers: exportNodeCompatibleHeaders(headers),
1350
+ agent
1351
+ });
1352
+ }
1353
+
1354
+ /**
1355
+ * abort-error.js
1356
+ *
1357
+ * AbortError interface for cancelled requests
1358
+ */
1359
+
1360
+ /**
1361
+ * Create AbortError instance
1362
+ *
1363
+ * @param String message Error message for human
1364
+ * @return AbortError
1365
+ */
1366
+ function AbortError(message) {
1367
+ Error.call(this, message);
1368
+
1369
+ this.type = 'aborted';
1370
+ this.message = message;
1371
+
1372
+ // hide custom error implementation details from end-users
1373
+ Error.captureStackTrace(this, this.constructor);
1374
+ }
1375
+
1376
+ AbortError.prototype = Object.create(Error.prototype);
1377
+ AbortError.prototype.constructor = AbortError;
1378
+ AbortError.prototype.name = 'AbortError';
1379
+
1380
+ // fix an issue where "PassThrough", "resolve" aren't a named export for node <10
1381
+ const PassThrough$1 = Stream.PassThrough;
1382
+ const resolve_url = Url.resolve;
1383
+
1384
+ /**
1385
+ * Fetch function
1386
+ *
1387
+ * @param Mixed url Absolute url or Request instance
1388
+ * @param Object opts Fetch options
1389
+ * @return Promise
1390
+ */
1391
+ function fetch(url, opts) {
1392
+
1393
+ // allow custom promise
1394
+ if (!fetch.Promise) {
1395
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
1396
+ }
1397
+
1398
+ Body.Promise = fetch.Promise;
1399
+
1400
+ // wrap http.request into fetch
1401
+ return new fetch.Promise(function (resolve, reject) {
1402
+ // build request object
1403
+ const request = new Request(url, opts);
1404
+ const options = getNodeRequestOptions(request);
1405
+
1406
+ const send = (options.protocol === 'https:' ? https : http).request;
1407
+ const signal = request.signal;
1408
+
1409
+ let response = null;
1410
+
1411
+ const abort = function abort() {
1412
+ let error = new AbortError('The user aborted a request.');
1413
+ reject(error);
1414
+ if (request.body && request.body instanceof Stream.Readable) {
1415
+ request.body.destroy(error);
1416
+ }
1417
+ if (!response || !response.body) return;
1418
+ response.body.emit('error', error);
1419
+ };
1420
+
1421
+ if (signal && signal.aborted) {
1422
+ abort();
1423
+ return;
1424
+ }
1425
+
1426
+ const abortAndFinalize = function abortAndFinalize() {
1427
+ abort();
1428
+ finalize();
1429
+ };
1430
+
1431
+ // send request
1432
+ const req = send(options);
1433
+ let reqTimeout;
1434
+
1435
+ if (signal) {
1436
+ signal.addEventListener('abort', abortAndFinalize);
1437
+ }
1438
+
1439
+ function finalize() {
1440
+ req.abort();
1441
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
1442
+ clearTimeout(reqTimeout);
1443
+ }
1444
+
1445
+ if (request.timeout) {
1446
+ req.once('socket', function (socket) {
1447
+ reqTimeout = setTimeout(function () {
1448
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
1449
+ finalize();
1450
+ }, request.timeout);
1451
+ });
1452
+ }
1453
+
1454
+ req.on('error', function (err) {
1455
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
1456
+ finalize();
1457
+ });
1458
+
1459
+ req.on('response', function (res) {
1460
+ clearTimeout(reqTimeout);
1461
+
1462
+ const headers = createHeadersLenient(res.headers);
1463
+
1464
+ // HTTP fetch step 5
1465
+ if (fetch.isRedirect(res.statusCode)) {
1466
+ // HTTP fetch step 5.2
1467
+ const location = headers.get('Location');
1468
+
1469
+ // HTTP fetch step 5.3
1470
+ const locationURL = location === null ? null : resolve_url(request.url, location);
1471
+
1472
+ // HTTP fetch step 5.5
1473
+ switch (request.redirect) {
1474
+ case 'error':
1475
+ reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'));
1476
+ finalize();
1477
+ return;
1478
+ case 'manual':
1479
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
1480
+ if (locationURL !== null) {
1481
+ // handle corrupted header
1482
+ try {
1483
+ headers.set('Location', locationURL);
1484
+ } catch (err) {
1485
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
1486
+ reject(err);
1487
+ }
1488
+ }
1489
+ break;
1490
+ case 'follow':
1491
+ // HTTP-redirect fetch step 2
1492
+ if (locationURL === null) {
1493
+ break;
1494
+ }
1495
+
1496
+ // HTTP-redirect fetch step 5
1497
+ if (request.counter >= request.follow) {
1498
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
1499
+ finalize();
1500
+ return;
1501
+ }
1502
+
1503
+ // HTTP-redirect fetch step 6 (counter increment)
1504
+ // Create a new Request object.
1505
+ const requestOpts = {
1506
+ headers: new Headers(request.headers),
1507
+ follow: request.follow,
1508
+ counter: request.counter + 1,
1509
+ agent: request.agent,
1510
+ compress: request.compress,
1511
+ method: request.method,
1512
+ body: request.body,
1513
+ signal: request.signal,
1514
+ timeout: request.timeout
1515
+ };
1516
+
1517
+ // HTTP-redirect fetch step 9
1518
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
1519
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
1520
+ finalize();
1521
+ return;
1522
+ }
1523
+
1524
+ // HTTP-redirect fetch step 11
1525
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
1526
+ requestOpts.method = 'GET';
1527
+ requestOpts.body = undefined;
1528
+ requestOpts.headers.delete('content-length');
1529
+ }
1530
+
1531
+ // HTTP-redirect fetch step 15
1532
+ resolve(fetch(new Request(locationURL, requestOpts)));
1533
+ finalize();
1534
+ return;
1535
+ }
1536
+ }
1537
+
1538
+ // prepare response
1539
+ res.once('end', function () {
1540
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
1541
+ });
1542
+ let body = res.pipe(new PassThrough$1());
1543
+
1544
+ const response_options = {
1545
+ url: request.url,
1546
+ status: res.statusCode,
1547
+ statusText: res.statusMessage,
1548
+ headers: headers,
1549
+ size: request.size,
1550
+ timeout: request.timeout,
1551
+ counter: request.counter
1552
+ };
1553
+
1554
+ // HTTP-network fetch step 12.1.1.3
1555
+ const codings = headers.get('Content-Encoding');
1556
+
1557
+ // HTTP-network fetch step 12.1.1.4: handle content codings
1558
+
1559
+ // in following scenarios we ignore compression support
1560
+ // 1. compression support is disabled
1561
+ // 2. HEAD request
1562
+ // 3. no Content-Encoding header
1563
+ // 4. no content response (204)
1564
+ // 5. content not modified response (304)
1565
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
1566
+ response = new Response(body, response_options);
1567
+ resolve(response);
1568
+ return;
1569
+ }
1570
+
1571
+ // For Node v6+
1572
+ // Be less strict when decoding compressed responses, since sometimes
1573
+ // servers send slightly invalid responses that are still accepted
1574
+ // by common browsers.
1575
+ // Always using Z_SYNC_FLUSH is what cURL does.
1576
+ const zlibOptions = {
1577
+ flush: zlib.Z_SYNC_FLUSH,
1578
+ finishFlush: zlib.Z_SYNC_FLUSH
1579
+ };
1580
+
1581
+ // for gzip
1582
+ if (codings == 'gzip' || codings == 'x-gzip') {
1583
+ body = body.pipe(zlib.createGunzip(zlibOptions));
1584
+ response = new Response(body, response_options);
1585
+ resolve(response);
1586
+ return;
1587
+ }
1588
+
1589
+ // for deflate
1590
+ if (codings == 'deflate' || codings == 'x-deflate') {
1591
+ // handle the infamous raw deflate response from old servers
1592
+ // a hack for old IIS and Apache servers
1593
+ const raw = res.pipe(new PassThrough$1());
1594
+ raw.once('data', function (chunk) {
1595
+ // see http://stackoverflow.com/questions/37519828
1596
+ if ((chunk[0] & 0x0F) === 0x08) {
1597
+ body = body.pipe(zlib.createInflate());
1598
+ } else {
1599
+ body = body.pipe(zlib.createInflateRaw());
1600
+ }
1601
+ response = new Response(body, response_options);
1602
+ resolve(response);
1603
+ });
1604
+ return;
1605
+ }
1606
+
1607
+ // for br
1608
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
1609
+ body = body.pipe(zlib.createBrotliDecompress());
1610
+ response = new Response(body, response_options);
1611
+ resolve(response);
1612
+ return;
1613
+ }
1614
+
1615
+ // otherwise, use response as-is
1616
+ response = new Response(body, response_options);
1617
+ resolve(response);
1618
+ });
1619
+
1620
+ writeToStream(req, request);
1621
+ });
1622
+ }
1623
+ /**
1624
+ * Redirect code matching
1625
+ *
1626
+ * @param Number code Status code
1627
+ * @return Boolean
1628
+ */
1629
+ fetch.isRedirect = function (code) {
1630
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
1631
+ };
1632
+
1633
+ // expose Promise
1634
+ fetch.Promise = global.Promise;
1635
+
1636
+ module.exports = exports = fetch;
1637
+ Object.defineProperty(exports, "__esModule", { value: true });
1638
+ exports.default = exports;
1639
+ exports.Headers = Headers;
1640
+ exports.Request = Request;
1641
+ exports.Response = Response;
1642
+ exports.FetchError = FetchError;