node-datachannel 0.1.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.
Files changed (444) hide show
  1. package/.github/workflows/build-linux.yml +109 -0
  2. package/.github/workflows/build-mac.yml +40 -0
  3. package/.github/workflows/build-win.yml +77 -0
  4. package/.github/workflows/npm-publish-manual.yml +23 -0
  5. package/CMakeLists.txt +73 -0
  6. package/LICENSE +504 -0
  7. package/README.md +180 -0
  8. package/cmake/toolchain/arm64.cmake +17 -0
  9. package/cmake/toolchain/armv7.cmake +17 -0
  10. package/examples/README.md +21 -0
  11. package/examples/client-server/client-benchmark.js +216 -0
  12. package/examples/client-server/client-periodic.js +176 -0
  13. package/examples/client-server/client.js +113 -0
  14. package/examples/client-server/package-lock.json +126 -0
  15. package/examples/client-server/package.json +16 -0
  16. package/examples/client-server/signaling-server.js +31 -0
  17. package/lib/index.d.ts +123 -0
  18. package/lib/index.js +2 -0
  19. package/node_modules/ansi-regex/index.js +4 -0
  20. package/node_modules/ansi-regex/license +21 -0
  21. package/node_modules/ansi-regex/package.json +111 -0
  22. package/node_modules/ansi-regex/readme.md +39 -0
  23. package/node_modules/aproba/LICENSE +14 -0
  24. package/node_modules/aproba/README.md +94 -0
  25. package/node_modules/aproba/index.js +105 -0
  26. package/node_modules/aproba/package.json +65 -0
  27. package/node_modules/base64-js/LICENSE +21 -0
  28. package/node_modules/base64-js/README.md +34 -0
  29. package/node_modules/base64-js/base64js.min.js +1 -0
  30. package/node_modules/base64-js/index.d.ts +3 -0
  31. package/node_modules/base64-js/index.js +150 -0
  32. package/node_modules/base64-js/package.json +78 -0
  33. package/node_modules/buffer/AUTHORS.md +70 -0
  34. package/node_modules/buffer/LICENSE +21 -0
  35. package/node_modules/buffer/README.md +410 -0
  36. package/node_modules/buffer/index.d.ts +186 -0
  37. package/node_modules/buffer/index.js +1817 -0
  38. package/node_modules/buffer/package.json +130 -0
  39. package/node_modules/chownr/LICENSE +15 -0
  40. package/node_modules/chownr/README.md +3 -0
  41. package/node_modules/chownr/chownr.js +167 -0
  42. package/node_modules/chownr/package.json +66 -0
  43. package/node_modules/code-point-at/index.js +32 -0
  44. package/node_modules/code-point-at/license +21 -0
  45. package/node_modules/code-point-at/package.json +73 -0
  46. package/node_modules/code-point-at/readme.md +32 -0
  47. package/node_modules/console-control-strings/LICENSE +13 -0
  48. package/node_modules/console-control-strings/README.md +145 -0
  49. package/node_modules/console-control-strings/README.md~ +140 -0
  50. package/node_modules/console-control-strings/index.js +125 -0
  51. package/node_modules/console-control-strings/package.json +64 -0
  52. package/node_modules/core-util-is/LICENSE +19 -0
  53. package/node_modules/core-util-is/README.md +3 -0
  54. package/node_modules/core-util-is/float.patch +604 -0
  55. package/node_modules/core-util-is/lib/util.js +107 -0
  56. package/node_modules/core-util-is/package.json +70 -0
  57. package/node_modules/core-util-is/test.js +68 -0
  58. package/node_modules/decompress-response/index.d.ts +29 -0
  59. package/node_modules/decompress-response/index.js +40 -0
  60. package/node_modules/decompress-response/license +9 -0
  61. package/node_modules/decompress-response/package.json +85 -0
  62. package/node_modules/decompress-response/readme.md +52 -0
  63. package/node_modules/deep-extend/CHANGELOG.md +46 -0
  64. package/node_modules/deep-extend/LICENSE +20 -0
  65. package/node_modules/deep-extend/README.md +91 -0
  66. package/node_modules/deep-extend/index.js +1 -0
  67. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  68. package/node_modules/deep-extend/package.json +95 -0
  69. package/node_modules/delegates/.npmignore +1 -0
  70. package/node_modules/delegates/History.md +22 -0
  71. package/node_modules/delegates/License +20 -0
  72. package/node_modules/delegates/Makefile +8 -0
  73. package/node_modules/delegates/Readme.md +94 -0
  74. package/node_modules/delegates/index.js +121 -0
  75. package/node_modules/delegates/package.json +54 -0
  76. package/node_modules/delegates/test/index.js +94 -0
  77. package/node_modules/detect-libc/.npmignore +7 -0
  78. package/node_modules/detect-libc/LICENSE +201 -0
  79. package/node_modules/detect-libc/README.md +78 -0
  80. package/node_modules/detect-libc/bin/detect-libc.js +18 -0
  81. package/node_modules/detect-libc/lib/detect-libc.js +92 -0
  82. package/node_modules/detect-libc/package.json +74 -0
  83. package/node_modules/end-of-stream/LICENSE +21 -0
  84. package/node_modules/end-of-stream/README.md +54 -0
  85. package/node_modules/end-of-stream/index.js +94 -0
  86. package/node_modules/end-of-stream/package.json +69 -0
  87. package/node_modules/expand-template/.travis.yml +6 -0
  88. package/node_modules/expand-template/LICENSE +21 -0
  89. package/node_modules/expand-template/README.md +43 -0
  90. package/node_modules/expand-template/index.js +26 -0
  91. package/node_modules/expand-template/package.json +63 -0
  92. package/node_modules/expand-template/test.js +67 -0
  93. package/node_modules/fs-constants/LICENSE +21 -0
  94. package/node_modules/fs-constants/README.md +26 -0
  95. package/node_modules/fs-constants/browser.js +1 -0
  96. package/node_modules/fs-constants/index.js +1 -0
  97. package/node_modules/fs-constants/package.json +50 -0
  98. package/node_modules/github-from-package/.travis.yml +4 -0
  99. package/node_modules/github-from-package/LICENSE +18 -0
  100. package/node_modules/github-from-package/example/package.json +8 -0
  101. package/node_modules/github-from-package/example/url.js +3 -0
  102. package/node_modules/github-from-package/index.js +17 -0
  103. package/node_modules/github-from-package/package.json +62 -0
  104. package/node_modules/github-from-package/readme.markdown +53 -0
  105. package/node_modules/github-from-package/test/a.json +8 -0
  106. package/node_modules/github-from-package/test/b.json +5 -0
  107. package/node_modules/github-from-package/test/c.json +5 -0
  108. package/node_modules/github-from-package/test/d.json +7 -0
  109. package/node_modules/github-from-package/test/e.json +5 -0
  110. package/node_modules/github-from-package/test/url.js +19 -0
  111. package/node_modules/has-unicode/LICENSE +14 -0
  112. package/node_modules/has-unicode/README.md +43 -0
  113. package/node_modules/has-unicode/index.js +16 -0
  114. package/node_modules/has-unicode/package.json +63 -0
  115. package/node_modules/ieee754/LICENSE +11 -0
  116. package/node_modules/ieee754/README.md +51 -0
  117. package/node_modules/ieee754/index.d.ts +10 -0
  118. package/node_modules/ieee754/index.js +85 -0
  119. package/node_modules/ieee754/package.json +87 -0
  120. package/node_modules/inherits/LICENSE +16 -0
  121. package/node_modules/inherits/README.md +42 -0
  122. package/node_modules/inherits/inherits.js +9 -0
  123. package/node_modules/inherits/inherits_browser.js +27 -0
  124. package/node_modules/inherits/package.json +78 -0
  125. package/node_modules/ini/LICENSE +15 -0
  126. package/node_modules/ini/README.md +102 -0
  127. package/node_modules/ini/ini.js +194 -0
  128. package/node_modules/ini/package.json +66 -0
  129. package/node_modules/is-fullwidth-code-point/index.js +46 -0
  130. package/node_modules/is-fullwidth-code-point/license +21 -0
  131. package/node_modules/is-fullwidth-code-point/package.json +80 -0
  132. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  133. package/node_modules/isarray/.npmignore +1 -0
  134. package/node_modules/isarray/.travis.yml +4 -0
  135. package/node_modules/isarray/Makefile +6 -0
  136. package/node_modules/isarray/README.md +60 -0
  137. package/node_modules/isarray/component.json +19 -0
  138. package/node_modules/isarray/index.js +5 -0
  139. package/node_modules/isarray/package.json +77 -0
  140. package/node_modules/isarray/test.js +20 -0
  141. package/node_modules/mimic-response/index.d.ts +17 -0
  142. package/node_modules/mimic-response/index.js +38 -0
  143. package/node_modules/mimic-response/license +9 -0
  144. package/node_modules/mimic-response/package.json +77 -0
  145. package/node_modules/mimic-response/readme.md +57 -0
  146. package/node_modules/minimist/.travis.yml +8 -0
  147. package/node_modules/minimist/LICENSE +18 -0
  148. package/node_modules/minimist/example/parse.js +2 -0
  149. package/node_modules/minimist/index.js +245 -0
  150. package/node_modules/minimist/package.json +80 -0
  151. package/node_modules/minimist/readme.markdown +95 -0
  152. package/node_modules/minimist/test/all_bool.js +32 -0
  153. package/node_modules/minimist/test/bool.js +178 -0
  154. package/node_modules/minimist/test/dash.js +31 -0
  155. package/node_modules/minimist/test/default_bool.js +35 -0
  156. package/node_modules/minimist/test/dotted.js +22 -0
  157. package/node_modules/minimist/test/kv_short.js +16 -0
  158. package/node_modules/minimist/test/long.js +31 -0
  159. package/node_modules/minimist/test/num.js +36 -0
  160. package/node_modules/minimist/test/parse.js +197 -0
  161. package/node_modules/minimist/test/parse_modified.js +9 -0
  162. package/node_modules/minimist/test/proto.js +44 -0
  163. package/node_modules/minimist/test/short.js +67 -0
  164. package/node_modules/minimist/test/stop_early.js +15 -0
  165. package/node_modules/minimist/test/unknown.js +102 -0
  166. package/node_modules/minimist/test/whitespace.js +8 -0
  167. package/node_modules/mkdirp-classic/LICENSE +21 -0
  168. package/node_modules/mkdirp-classic/README.md +18 -0
  169. package/node_modules/mkdirp-classic/index.js +98 -0
  170. package/node_modules/mkdirp-classic/package.json +50 -0
  171. package/node_modules/napi-build-utils/LICENSE +21 -0
  172. package/node_modules/napi-build-utils/README.md +48 -0
  173. package/node_modules/napi-build-utils/index.js +213 -0
  174. package/node_modules/napi-build-utils/index.md +81 -0
  175. package/node_modules/napi-build-utils/package.json +72 -0
  176. package/node_modules/node-abi/.github/workflows/update-abi.yml +41 -0
  177. package/node_modules/node-abi/.travis.yml +19 -0
  178. package/node_modules/node-abi/CODE_OF_CONDUCT.md +73 -0
  179. package/node_modules/node-abi/CONTRIBUTING.md +53 -0
  180. package/node_modules/node-abi/LICENSE +21 -0
  181. package/node_modules/node-abi/README.md +50 -0
  182. package/node_modules/node-abi/abi_registry.json +99 -0
  183. package/node_modules/node-abi/index.js +170 -0
  184. package/node_modules/node-abi/package.json +69 -0
  185. package/node_modules/node-abi/scripts/update-abi-registry.js +113 -0
  186. package/node_modules/node-abi/test/index.js +174 -0
  187. package/node_modules/noop-logger/.npmignore +1 -0
  188. package/node_modules/noop-logger/History.md +16 -0
  189. package/node_modules/noop-logger/Makefile +8 -0
  190. package/node_modules/noop-logger/Readme.md +27 -0
  191. package/node_modules/noop-logger/circle.yml +9 -0
  192. package/node_modules/noop-logger/lib/index.js +25 -0
  193. package/node_modules/noop-logger/package.json +51 -0
  194. package/node_modules/noop-logger/test/index.js +18 -0
  195. package/node_modules/npmlog/CHANGELOG.md +49 -0
  196. package/node_modules/npmlog/LICENSE +15 -0
  197. package/node_modules/npmlog/README.md +216 -0
  198. package/node_modules/npmlog/log.js +309 -0
  199. package/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md +37 -0
  200. package/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE +5 -0
  201. package/node_modules/npmlog/node_modules/are-we-there-yet/README.md +195 -0
  202. package/node_modules/npmlog/node_modules/are-we-there-yet/index.js +4 -0
  203. package/node_modules/npmlog/node_modules/are-we-there-yet/package.json +66 -0
  204. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js +11 -0
  205. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js +107 -0
  206. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js +36 -0
  207. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js +30 -0
  208. package/node_modules/npmlog/node_modules/gauge/CHANGELOG.md +160 -0
  209. package/node_modules/npmlog/node_modules/gauge/LICENSE +13 -0
  210. package/node_modules/npmlog/node_modules/gauge/README.md +399 -0
  211. package/node_modules/npmlog/node_modules/gauge/base-theme.js +14 -0
  212. package/node_modules/npmlog/node_modules/gauge/error.js +24 -0
  213. package/node_modules/npmlog/node_modules/gauge/has-color.js +12 -0
  214. package/node_modules/npmlog/node_modules/gauge/index.js +233 -0
  215. package/node_modules/npmlog/node_modules/gauge/package.json +94 -0
  216. package/node_modules/npmlog/node_modules/gauge/plumbing.js +48 -0
  217. package/node_modules/npmlog/node_modules/gauge/process.js +3 -0
  218. package/node_modules/npmlog/node_modules/gauge/progress-bar.js +35 -0
  219. package/node_modules/npmlog/node_modules/gauge/render-template.js +181 -0
  220. package/node_modules/npmlog/node_modules/gauge/set-immediate.js +7 -0
  221. package/node_modules/npmlog/node_modules/gauge/set-interval.js +3 -0
  222. package/node_modules/npmlog/node_modules/gauge/spin.js +5 -0
  223. package/node_modules/npmlog/node_modules/gauge/template-item.js +73 -0
  224. package/node_modules/npmlog/node_modules/gauge/theme-set.js +115 -0
  225. package/node_modules/npmlog/node_modules/gauge/themes.js +54 -0
  226. package/node_modules/npmlog/node_modules/gauge/wide-truncate.js +25 -0
  227. package/node_modules/npmlog/package.json +78 -0
  228. package/node_modules/number-is-nan/index.js +4 -0
  229. package/node_modules/number-is-nan/license +21 -0
  230. package/node_modules/number-is-nan/package.json +70 -0
  231. package/node_modules/number-is-nan/readme.md +28 -0
  232. package/node_modules/object-assign/index.js +90 -0
  233. package/node_modules/object-assign/license +21 -0
  234. package/node_modules/object-assign/package.json +77 -0
  235. package/node_modules/object-assign/readme.md +61 -0
  236. package/node_modules/once/LICENSE +15 -0
  237. package/node_modules/once/README.md +79 -0
  238. package/node_modules/once/once.js +42 -0
  239. package/node_modules/once/package.json +74 -0
  240. package/node_modules/prebuild-install/.travis.yml +12 -0
  241. package/node_modules/prebuild-install/CHANGELOG.md +7 -0
  242. package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  243. package/node_modules/prebuild-install/LICENSE +21 -0
  244. package/node_modules/prebuild-install/README.md +108 -0
  245. package/node_modules/prebuild-install/appveyor.yml +40 -0
  246. package/node_modules/prebuild-install/asset.js +48 -0
  247. package/node_modules/prebuild-install/bin.js +85 -0
  248. package/node_modules/prebuild-install/download.js +130 -0
  249. package/node_modules/prebuild-install/error.js +14 -0
  250. package/node_modules/prebuild-install/help.txt +14 -0
  251. package/node_modules/prebuild-install/index.js +1 -0
  252. package/node_modules/prebuild-install/log.js +13 -0
  253. package/node_modules/prebuild-install/package.json +131 -0
  254. package/node_modules/prebuild-install/proxy.js +38 -0
  255. package/node_modules/prebuild-install/rc.js +81 -0
  256. package/node_modules/prebuild-install/util.js +97 -0
  257. package/node_modules/process-nextick-args/index.js +45 -0
  258. package/node_modules/process-nextick-args/license.md +19 -0
  259. package/node_modules/process-nextick-args/package.json +53 -0
  260. package/node_modules/process-nextick-args/readme.md +18 -0
  261. package/node_modules/pump/.travis.yml +5 -0
  262. package/node_modules/pump/LICENSE +21 -0
  263. package/node_modules/pump/README.md +65 -0
  264. package/node_modules/pump/index.js +82 -0
  265. package/node_modules/pump/package.json +63 -0
  266. package/node_modules/pump/test-browser.js +66 -0
  267. package/node_modules/pump/test-node.js +53 -0
  268. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  269. package/node_modules/rc/LICENSE.BSD +26 -0
  270. package/node_modules/rc/LICENSE.MIT +24 -0
  271. package/node_modules/rc/README.md +227 -0
  272. package/node_modules/rc/browser.js +7 -0
  273. package/node_modules/rc/cli.js +4 -0
  274. package/node_modules/rc/index.js +53 -0
  275. package/node_modules/rc/lib/utils.js +104 -0
  276. package/node_modules/rc/package.json +70 -0
  277. package/node_modules/rc/test/ini.js +16 -0
  278. package/node_modules/rc/test/nested-env-vars.js +50 -0
  279. package/node_modules/rc/test/test.js +59 -0
  280. package/node_modules/readable-stream/.travis.yml +34 -0
  281. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  282. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  283. package/node_modules/readable-stream/LICENSE +47 -0
  284. package/node_modules/readable-stream/README.md +58 -0
  285. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  286. package/node_modules/readable-stream/duplex-browser.js +1 -0
  287. package/node_modules/readable-stream/duplex.js +1 -0
  288. package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  289. package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  290. package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  291. package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  292. package/node_modules/readable-stream/lib/_stream_writable.js +687 -0
  293. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +79 -0
  294. package/node_modules/readable-stream/lib/internal/streams/destroy.js +74 -0
  295. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  296. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  297. package/node_modules/readable-stream/package.json +88 -0
  298. package/node_modules/readable-stream/passthrough.js +1 -0
  299. package/node_modules/readable-stream/readable-browser.js +7 -0
  300. package/node_modules/readable-stream/readable.js +19 -0
  301. package/node_modules/readable-stream/transform.js +1 -0
  302. package/node_modules/readable-stream/writable-browser.js +1 -0
  303. package/node_modules/readable-stream/writable.js +8 -0
  304. package/node_modules/safe-buffer/LICENSE +21 -0
  305. package/node_modules/safe-buffer/README.md +584 -0
  306. package/node_modules/safe-buffer/index.d.ts +187 -0
  307. package/node_modules/safe-buffer/index.js +62 -0
  308. package/node_modules/safe-buffer/package.json +71 -0
  309. package/node_modules/semver/CHANGELOG.md +39 -0
  310. package/node_modules/semver/LICENSE +15 -0
  311. package/node_modules/semver/README.md +412 -0
  312. package/node_modules/semver/bin/semver +160 -0
  313. package/node_modules/semver/package.json +67 -0
  314. package/node_modules/semver/range.bnf +16 -0
  315. package/node_modules/semver/semver.js +1483 -0
  316. package/node_modules/set-blocking/CHANGELOG.md +26 -0
  317. package/node_modules/set-blocking/LICENSE.txt +14 -0
  318. package/node_modules/set-blocking/README.md +31 -0
  319. package/node_modules/set-blocking/index.js +7 -0
  320. package/node_modules/set-blocking/package.json +73 -0
  321. package/node_modules/signal-exit/CHANGELOG.md +35 -0
  322. package/node_modules/signal-exit/LICENSE.txt +16 -0
  323. package/node_modules/signal-exit/README.md +39 -0
  324. package/node_modules/signal-exit/index.js +163 -0
  325. package/node_modules/signal-exit/package.json +71 -0
  326. package/node_modules/signal-exit/signals.js +53 -0
  327. package/node_modules/simple-concat/.travis.yml +3 -0
  328. package/node_modules/simple-concat/LICENSE +20 -0
  329. package/node_modules/simple-concat/README.md +44 -0
  330. package/node_modules/simple-concat/index.js +15 -0
  331. package/node_modules/simple-concat/package.json +75 -0
  332. package/node_modules/simple-concat/test/basic.js +41 -0
  333. package/node_modules/simple-get/LICENSE +20 -0
  334. package/node_modules/simple-get/README.md +319 -0
  335. package/node_modules/simple-get/index.js +99 -0
  336. package/node_modules/simple-get/package.json +81 -0
  337. package/node_modules/string-width/index.js +37 -0
  338. package/node_modules/string-width/license +21 -0
  339. package/node_modules/string-width/package.json +96 -0
  340. package/node_modules/string-width/readme.md +42 -0
  341. package/node_modules/string_decoder/.travis.yml +50 -0
  342. package/node_modules/string_decoder/LICENSE +48 -0
  343. package/node_modules/string_decoder/README.md +47 -0
  344. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  345. package/node_modules/string_decoder/package.json +64 -0
  346. package/node_modules/strip-ansi/index.js +6 -0
  347. package/node_modules/strip-ansi/license +21 -0
  348. package/node_modules/strip-ansi/package.json +107 -0
  349. package/node_modules/strip-ansi/readme.md +33 -0
  350. package/node_modules/strip-json-comments/index.js +70 -0
  351. package/node_modules/strip-json-comments/license +21 -0
  352. package/node_modules/strip-json-comments/package.json +77 -0
  353. package/node_modules/strip-json-comments/readme.md +64 -0
  354. package/node_modules/tar-fs/.travis.yml +6 -0
  355. package/node_modules/tar-fs/LICENSE +21 -0
  356. package/node_modules/tar-fs/README.md +165 -0
  357. package/node_modules/tar-fs/index.js +351 -0
  358. package/node_modules/tar-fs/package.json +71 -0
  359. package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  360. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  361. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  362. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  363. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  364. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  365. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  366. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  367. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  368. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  369. package/node_modules/tar-fs/test/index.js +346 -0
  370. package/node_modules/tar-stream/LICENSE +21 -0
  371. package/node_modules/tar-stream/README.md +168 -0
  372. package/node_modules/tar-stream/extract.js +257 -0
  373. package/node_modules/tar-stream/headers.js +293 -0
  374. package/node_modules/tar-stream/index.js +2 -0
  375. package/node_modules/tar-stream/node_modules/bl/.travis.yml +16 -0
  376. package/node_modules/tar-stream/node_modules/bl/BufferList.js +396 -0
  377. package/node_modules/tar-stream/node_modules/bl/LICENSE.md +13 -0
  378. package/node_modules/tar-stream/node_modules/bl/README.md +247 -0
  379. package/node_modules/tar-stream/node_modules/bl/bl.js +84 -0
  380. package/node_modules/tar-stream/node_modules/bl/package.json +68 -0
  381. package/node_modules/tar-stream/node_modules/bl/test/convert.js +21 -0
  382. package/node_modules/tar-stream/node_modules/bl/test/indexOf.js +492 -0
  383. package/node_modules/tar-stream/node_modules/bl/test/isBufferList.js +32 -0
  384. package/node_modules/tar-stream/node_modules/bl/test/test.js +851 -0
  385. package/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  386. package/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +136 -0
  387. package/node_modules/tar-stream/node_modules/readable-stream/LICENSE +47 -0
  388. package/node_modules/tar-stream/node_modules/readable-stream/README.md +106 -0
  389. package/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +127 -0
  390. package/node_modules/tar-stream/node_modules/readable-stream/errors.js +116 -0
  391. package/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +17 -0
  392. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +139 -0
  393. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +39 -0
  394. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +1124 -0
  395. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +201 -0
  396. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +697 -0
  397. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +207 -0
  398. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +210 -0
  399. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +105 -0
  400. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +104 -0
  401. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  402. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +64 -0
  403. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +97 -0
  404. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +27 -0
  405. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  406. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  407. package/node_modules/tar-stream/node_modules/readable-stream/package.json +101 -0
  408. package/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +9 -0
  409. package/node_modules/tar-stream/node_modules/readable-stream/readable.js +16 -0
  410. package/node_modules/tar-stream/pack.js +255 -0
  411. package/node_modules/tar-stream/package.json +95 -0
  412. package/node_modules/tar-stream/sandbox.js +11 -0
  413. package/node_modules/tunnel-agent/LICENSE +55 -0
  414. package/node_modules/tunnel-agent/README.md +4 -0
  415. package/node_modules/tunnel-agent/index.js +244 -0
  416. package/node_modules/tunnel-agent/package.json +59 -0
  417. package/node_modules/util-deprecate/History.md +16 -0
  418. package/node_modules/util-deprecate/LICENSE +24 -0
  419. package/node_modules/util-deprecate/README.md +53 -0
  420. package/node_modules/util-deprecate/browser.js +67 -0
  421. package/node_modules/util-deprecate/node.js +6 -0
  422. package/node_modules/util-deprecate/package.json +62 -0
  423. package/node_modules/which-pm-runs/LICENSE +21 -0
  424. package/node_modules/which-pm-runs/README.md +29 -0
  425. package/node_modules/which-pm-runs/index.js +17 -0
  426. package/node_modules/which-pm-runs/package.json +64 -0
  427. package/node_modules/wide-align/LICENSE +14 -0
  428. package/node_modules/wide-align/README.md +47 -0
  429. package/node_modules/wide-align/align.js +65 -0
  430. package/node_modules/wide-align/package.json +69 -0
  431. package/node_modules/wrappy/LICENSE +15 -0
  432. package/node_modules/wrappy/README.md +36 -0
  433. package/node_modules/wrappy/package.json +62 -0
  434. package/node_modules/wrappy/wrappy.js +33 -0
  435. package/package.json +48 -0
  436. package/src/data-channel-wrapper.cpp +401 -0
  437. package/src/data-channel-wrapper.h +52 -0
  438. package/src/main.cpp +14 -0
  439. package/src/peer-connection-wrapper.cpp +720 -0
  440. package/src/peer-connection-wrapper.h +55 -0
  441. package/src/rtc-wrapper.cpp +110 -0
  442. package/src/rtc-wrapper.h +19 -0
  443. package/test/connectivity.js +100 -0
  444. package/test/test.js +149 -0
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Mathias Buus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,168 @@
1
+ # tar-stream
2
+
3
+ tar-stream is a streaming tar parser and generator and nothing else. It is streams2 and operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.
4
+
5
+ Note that you still need to gunzip your data if you have a `.tar.gz`. We recommend using [gunzip-maybe](https://github.com/mafintosh/gunzip-maybe) in conjunction with this.
6
+
7
+ ```
8
+ npm install tar-stream
9
+ ```
10
+
11
+ [![build status](https://secure.travis-ci.org/mafintosh/tar-stream.png)](http://travis-ci.org/mafintosh/tar-stream)
12
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT)
13
+
14
+ ## Usage
15
+
16
+ tar-stream exposes two streams, [pack](https://github.com/mafintosh/tar-stream#packing) which creates tarballs and [extract](https://github.com/mafintosh/tar-stream#extracting) which extracts tarballs. To [modify an existing tarball](https://github.com/mafintosh/tar-stream#modifying-existing-tarballs) use both.
17
+
18
+
19
+ It implementes USTAR with additional support for pax extended headers. It should be compatible with all popular tar distributions out there (gnutar, bsdtar etc)
20
+
21
+ ## Related
22
+
23
+ If you want to pack/unpack directories on the file system check out [tar-fs](https://github.com/mafintosh/tar-fs) which provides file system bindings to this module.
24
+
25
+ ## Packing
26
+
27
+ To create a pack stream use `tar.pack()` and call `pack.entry(header, [callback])` to add tar entries.
28
+
29
+ ``` js
30
+ var tar = require('tar-stream')
31
+ var pack = tar.pack() // pack is a streams2 stream
32
+
33
+ // add a file called my-test.txt with the content "Hello World!"
34
+ pack.entry({ name: 'my-test.txt' }, 'Hello World!')
35
+
36
+ // add a file called my-stream-test.txt from a stream
37
+ var entry = pack.entry({ name: 'my-stream-test.txt', size: 11 }, function(err) {
38
+ // the stream was added
39
+ // no more entries
40
+ pack.finalize()
41
+ })
42
+
43
+ entry.write('hello')
44
+ entry.write(' ')
45
+ entry.write('world')
46
+ entry.end()
47
+
48
+ // pipe the pack stream somewhere
49
+ pack.pipe(process.stdout)
50
+ ```
51
+
52
+ ## Extracting
53
+
54
+ To extract a stream use `tar.extract()` and listen for `extract.on('entry', (header, stream, next) )`
55
+
56
+ ``` js
57
+ var extract = tar.extract()
58
+
59
+ extract.on('entry', function(header, stream, next) {
60
+ // header is the tar header
61
+ // stream is the content body (might be an empty stream)
62
+ // call next when you are done with this entry
63
+
64
+ stream.on('end', function() {
65
+ next() // ready for next entry
66
+ })
67
+
68
+ stream.resume() // just auto drain the stream
69
+ })
70
+
71
+ extract.on('finish', function() {
72
+ // all entries read
73
+ })
74
+
75
+ pack.pipe(extract)
76
+ ```
77
+
78
+ The tar archive is streamed sequentially, meaning you **must** drain each entry's stream as you get them or else the main extract stream will receive backpressure and stop reading.
79
+
80
+ ## Headers
81
+
82
+ The header object using in `entry` should contain the following properties.
83
+ Most of these values can be found by stat'ing a file.
84
+
85
+ ``` js
86
+ {
87
+ name: 'path/to/this/entry.txt',
88
+ size: 1314, // entry size. defaults to 0
89
+ mode: 0o644, // entry mode. defaults to to 0o755 for dirs and 0o644 otherwise
90
+ mtime: new Date(), // last modified date for entry. defaults to now.
91
+ type: 'file', // type of entry. defaults to file. can be:
92
+ // file | link | symlink | directory | block-device
93
+ // character-device | fifo | contiguous-file
94
+ linkname: 'path', // linked file name
95
+ uid: 0, // uid of entry owner. defaults to 0
96
+ gid: 0, // gid of entry owner. defaults to 0
97
+ uname: 'maf', // uname of entry owner. defaults to null
98
+ gname: 'staff', // gname of entry owner. defaults to null
99
+ devmajor: 0, // device major version. defaults to 0
100
+ devminor: 0 // device minor version. defaults to 0
101
+ }
102
+ ```
103
+
104
+ ## Modifying existing tarballs
105
+
106
+ Using tar-stream it is easy to rewrite paths / change modes etc in an existing tarball.
107
+
108
+ ``` js
109
+ var extract = tar.extract()
110
+ var pack = tar.pack()
111
+ var path = require('path')
112
+
113
+ extract.on('entry', function(header, stream, callback) {
114
+ // let's prefix all names with 'tmp'
115
+ header.name = path.join('tmp', header.name)
116
+ // write the new entry to the pack stream
117
+ stream.pipe(pack.entry(header, callback))
118
+ })
119
+
120
+ extract.on('finish', function() {
121
+ // all entries done - lets finalize it
122
+ pack.finalize()
123
+ })
124
+
125
+ // pipe the old tarball to the extractor
126
+ oldTarballStream.pipe(extract)
127
+
128
+ // pipe the new tarball the another stream
129
+ pack.pipe(newTarballStream)
130
+ ```
131
+
132
+ ## Saving tarball to fs
133
+
134
+
135
+ ``` js
136
+ var fs = require('fs')
137
+ var tar = require('tar-stream')
138
+
139
+ var pack = tar.pack() // pack is a streams2 stream
140
+ var path = 'YourTarBall.tar'
141
+ var yourTarball = fs.createWriteStream(path)
142
+
143
+ // add a file called YourFile.txt with the content "Hello World!"
144
+ pack.entry({name: 'YourFile.txt'}, 'Hello World!', function (err) {
145
+ if (err) throw err
146
+ pack.finalize()
147
+ })
148
+
149
+ // pipe the pack stream to your file
150
+ pack.pipe(yourTarball)
151
+
152
+ yourTarball.on('close', function () {
153
+ console.log(path + ' has been written')
154
+ fs.stat(path, function(err, stats) {
155
+ if (err) throw err
156
+ console.log(stats)
157
+ console.log('Got file info successfully!')
158
+ })
159
+ })
160
+ ```
161
+
162
+ ## Performance
163
+
164
+ [See tar-fs for a performance comparison with node-tar](https://github.com/mafintosh/tar-fs/blob/master/README.md#performance)
165
+
166
+ # License
167
+
168
+ MIT
@@ -0,0 +1,257 @@
1
+ var util = require('util')
2
+ var bl = require('bl')
3
+ var headers = require('./headers')
4
+
5
+ var Writable = require('readable-stream').Writable
6
+ var PassThrough = require('readable-stream').PassThrough
7
+
8
+ var noop = function () {}
9
+
10
+ var overflow = function (size) {
11
+ size &= 511
12
+ return size && 512 - size
13
+ }
14
+
15
+ var emptyStream = function (self, offset) {
16
+ var s = new Source(self, offset)
17
+ s.end()
18
+ return s
19
+ }
20
+
21
+ var mixinPax = function (header, pax) {
22
+ if (pax.path) header.name = pax.path
23
+ if (pax.linkpath) header.linkname = pax.linkpath
24
+ if (pax.size) header.size = parseInt(pax.size, 10)
25
+ header.pax = pax
26
+ return header
27
+ }
28
+
29
+ var Source = function (self, offset) {
30
+ this._parent = self
31
+ this.offset = offset
32
+ PassThrough.call(this, { autoDestroy: false })
33
+ }
34
+
35
+ util.inherits(Source, PassThrough)
36
+
37
+ Source.prototype.destroy = function (err) {
38
+ this._parent.destroy(err)
39
+ }
40
+
41
+ var Extract = function (opts) {
42
+ if (!(this instanceof Extract)) return new Extract(opts)
43
+ Writable.call(this, opts)
44
+
45
+ opts = opts || {}
46
+
47
+ this._offset = 0
48
+ this._buffer = bl()
49
+ this._missing = 0
50
+ this._partial = false
51
+ this._onparse = noop
52
+ this._header = null
53
+ this._stream = null
54
+ this._overflow = null
55
+ this._cb = null
56
+ this._locked = false
57
+ this._destroyed = false
58
+ this._pax = null
59
+ this._paxGlobal = null
60
+ this._gnuLongPath = null
61
+ this._gnuLongLinkPath = null
62
+
63
+ var self = this
64
+ var b = self._buffer
65
+
66
+ var oncontinue = function () {
67
+ self._continue()
68
+ }
69
+
70
+ var onunlock = function (err) {
71
+ self._locked = false
72
+ if (err) return self.destroy(err)
73
+ if (!self._stream) oncontinue()
74
+ }
75
+
76
+ var onstreamend = function () {
77
+ self._stream = null
78
+ var drain = overflow(self._header.size)
79
+ if (drain) self._parse(drain, ondrain)
80
+ else self._parse(512, onheader)
81
+ if (!self._locked) oncontinue()
82
+ }
83
+
84
+ var ondrain = function () {
85
+ self._buffer.consume(overflow(self._header.size))
86
+ self._parse(512, onheader)
87
+ oncontinue()
88
+ }
89
+
90
+ var onpaxglobalheader = function () {
91
+ var size = self._header.size
92
+ self._paxGlobal = headers.decodePax(b.slice(0, size))
93
+ b.consume(size)
94
+ onstreamend()
95
+ }
96
+
97
+ var onpaxheader = function () {
98
+ var size = self._header.size
99
+ self._pax = headers.decodePax(b.slice(0, size))
100
+ if (self._paxGlobal) self._pax = Object.assign({}, self._paxGlobal, self._pax)
101
+ b.consume(size)
102
+ onstreamend()
103
+ }
104
+
105
+ var ongnulongpath = function () {
106
+ var size = self._header.size
107
+ this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
108
+ b.consume(size)
109
+ onstreamend()
110
+ }
111
+
112
+ var ongnulonglinkpath = function () {
113
+ var size = self._header.size
114
+ this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
115
+ b.consume(size)
116
+ onstreamend()
117
+ }
118
+
119
+ var onheader = function () {
120
+ var offset = self._offset
121
+ var header
122
+ try {
123
+ header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding)
124
+ } catch (err) {
125
+ self.emit('error', err)
126
+ }
127
+ b.consume(512)
128
+
129
+ if (!header) {
130
+ self._parse(512, onheader)
131
+ oncontinue()
132
+ return
133
+ }
134
+ if (header.type === 'gnu-long-path') {
135
+ self._parse(header.size, ongnulongpath)
136
+ oncontinue()
137
+ return
138
+ }
139
+ if (header.type === 'gnu-long-link-path') {
140
+ self._parse(header.size, ongnulonglinkpath)
141
+ oncontinue()
142
+ return
143
+ }
144
+ if (header.type === 'pax-global-header') {
145
+ self._parse(header.size, onpaxglobalheader)
146
+ oncontinue()
147
+ return
148
+ }
149
+ if (header.type === 'pax-header') {
150
+ self._parse(header.size, onpaxheader)
151
+ oncontinue()
152
+ return
153
+ }
154
+
155
+ if (self._gnuLongPath) {
156
+ header.name = self._gnuLongPath
157
+ self._gnuLongPath = null
158
+ }
159
+
160
+ if (self._gnuLongLinkPath) {
161
+ header.linkname = self._gnuLongLinkPath
162
+ self._gnuLongLinkPath = null
163
+ }
164
+
165
+ if (self._pax) {
166
+ self._header = header = mixinPax(header, self._pax)
167
+ self._pax = null
168
+ }
169
+
170
+ self._locked = true
171
+
172
+ if (!header.size || header.type === 'directory') {
173
+ self._parse(512, onheader)
174
+ self.emit('entry', header, emptyStream(self, offset), onunlock)
175
+ return
176
+ }
177
+
178
+ self._stream = new Source(self, offset)
179
+
180
+ self.emit('entry', header, self._stream, onunlock)
181
+ self._parse(header.size, onstreamend)
182
+ oncontinue()
183
+ }
184
+
185
+ this._onheader = onheader
186
+ this._parse(512, onheader)
187
+ }
188
+
189
+ util.inherits(Extract, Writable)
190
+
191
+ Extract.prototype.destroy = function (err) {
192
+ if (this._destroyed) return
193
+ this._destroyed = true
194
+
195
+ if (err) this.emit('error', err)
196
+ this.emit('close')
197
+ if (this._stream) this._stream.emit('close')
198
+ }
199
+
200
+ Extract.prototype._parse = function (size, onparse) {
201
+ if (this._destroyed) return
202
+ this._offset += size
203
+ this._missing = size
204
+ if (onparse === this._onheader) this._partial = false
205
+ this._onparse = onparse
206
+ }
207
+
208
+ Extract.prototype._continue = function () {
209
+ if (this._destroyed) return
210
+ var cb = this._cb
211
+ this._cb = noop
212
+ if (this._overflow) this._write(this._overflow, undefined, cb)
213
+ else cb()
214
+ }
215
+
216
+ Extract.prototype._write = function (data, enc, cb) {
217
+ if (this._destroyed) return
218
+
219
+ var s = this._stream
220
+ var b = this._buffer
221
+ var missing = this._missing
222
+ if (data.length) this._partial = true
223
+
224
+ // we do not reach end-of-chunk now. just forward it
225
+
226
+ if (data.length < missing) {
227
+ this._missing -= data.length
228
+ this._overflow = null
229
+ if (s) return s.write(data, cb)
230
+ b.append(data)
231
+ return cb()
232
+ }
233
+
234
+ // end-of-chunk. the parser should call cb.
235
+
236
+ this._cb = cb
237
+ this._missing = 0
238
+
239
+ var overflow = null
240
+ if (data.length > missing) {
241
+ overflow = data.slice(missing)
242
+ data = data.slice(0, missing)
243
+ }
244
+
245
+ if (s) s.end(data)
246
+ else b.append(data)
247
+
248
+ this._overflow = overflow
249
+ this._onparse()
250
+ }
251
+
252
+ Extract.prototype._final = function (cb) {
253
+ if (this._partial) return this.destroy(new Error('Unexpected end of data'))
254
+ cb()
255
+ }
256
+
257
+ module.exports = Extract
@@ -0,0 +1,293 @@
1
+ var alloc = Buffer.alloc
2
+
3
+ var ZEROS = '0000000000000000000'
4
+ var SEVENS = '7777777777777777777'
5
+ var ZERO_OFFSET = '0'.charCodeAt(0)
6
+ var USTAR_MAGIC = Buffer.from('ustar\x00', 'binary')
7
+ var USTAR_VER = Buffer.from('00', 'binary')
8
+ var GNU_MAGIC = Buffer.from('ustar\x20', 'binary')
9
+ var GNU_VER = Buffer.from('\x20\x00', 'binary')
10
+ var MASK = parseInt('7777', 8)
11
+ var MAGIC_OFFSET = 257
12
+ var VERSION_OFFSET = 263
13
+
14
+ var clamp = function (index, len, defaultValue) {
15
+ if (typeof index !== 'number') return defaultValue
16
+ index = ~~index // Coerce to integer.
17
+ if (index >= len) return len
18
+ if (index >= 0) return index
19
+ index += len
20
+ if (index >= 0) return index
21
+ return 0
22
+ }
23
+
24
+ var toType = function (flag) {
25
+ switch (flag) {
26
+ case 0:
27
+ return 'file'
28
+ case 1:
29
+ return 'link'
30
+ case 2:
31
+ return 'symlink'
32
+ case 3:
33
+ return 'character-device'
34
+ case 4:
35
+ return 'block-device'
36
+ case 5:
37
+ return 'directory'
38
+ case 6:
39
+ return 'fifo'
40
+ case 7:
41
+ return 'contiguous-file'
42
+ case 72:
43
+ return 'pax-header'
44
+ case 55:
45
+ return 'pax-global-header'
46
+ case 27:
47
+ return 'gnu-long-link-path'
48
+ case 28:
49
+ case 30:
50
+ return 'gnu-long-path'
51
+ }
52
+
53
+ return null
54
+ }
55
+
56
+ var toTypeflag = function (flag) {
57
+ switch (flag) {
58
+ case 'file':
59
+ return 0
60
+ case 'link':
61
+ return 1
62
+ case 'symlink':
63
+ return 2
64
+ case 'character-device':
65
+ return 3
66
+ case 'block-device':
67
+ return 4
68
+ case 'directory':
69
+ return 5
70
+ case 'fifo':
71
+ return 6
72
+ case 'contiguous-file':
73
+ return 7
74
+ case 'pax-header':
75
+ return 72
76
+ }
77
+
78
+ return 0
79
+ }
80
+
81
+ var indexOf = function (block, num, offset, end) {
82
+ for (; offset < end; offset++) {
83
+ if (block[offset] === num) return offset
84
+ }
85
+ return end
86
+ }
87
+
88
+ var cksum = function (block) {
89
+ var sum = 8 * 32
90
+ for (var i = 0; i < 148; i++) sum += block[i]
91
+ for (var j = 156; j < 512; j++) sum += block[j]
92
+ return sum
93
+ }
94
+
95
+ var encodeOct = function (val, n) {
96
+ val = val.toString(8)
97
+ if (val.length > n) return SEVENS.slice(0, n) + ' '
98
+ else return ZEROS.slice(0, n - val.length) + val + ' '
99
+ }
100
+
101
+ /* Copied from the node-tar repo and modified to meet
102
+ * tar-stream coding standard.
103
+ *
104
+ * Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349
105
+ */
106
+ function parse256 (buf) {
107
+ // first byte MUST be either 80 or FF
108
+ // 80 for positive, FF for 2's comp
109
+ var positive
110
+ if (buf[0] === 0x80) positive = true
111
+ else if (buf[0] === 0xFF) positive = false
112
+ else return null
113
+
114
+ // build up a base-256 tuple from the least sig to the highest
115
+ var tuple = []
116
+ for (var i = buf.length - 1; i > 0; i--) {
117
+ var byte = buf[i]
118
+ if (positive) tuple.push(byte)
119
+ else tuple.push(0xFF - byte)
120
+ }
121
+
122
+ var sum = 0
123
+ var l = tuple.length
124
+ for (i = 0; i < l; i++) {
125
+ sum += tuple[i] * Math.pow(256, i)
126
+ }
127
+
128
+ return positive ? sum : -1 * sum
129
+ }
130
+
131
+ var decodeOct = function (val, offset, length) {
132
+ val = val.slice(offset, offset + length)
133
+ offset = 0
134
+
135
+ // If prefixed with 0x80 then parse as a base-256 integer
136
+ if (val[offset] & 0x80) {
137
+ return parse256(val)
138
+ } else {
139
+ // Older versions of tar can prefix with spaces
140
+ while (offset < val.length && val[offset] === 32) offset++
141
+ var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)
142
+ while (offset < end && val[offset] === 0) offset++
143
+ if (end === offset) return 0
144
+ return parseInt(val.slice(offset, end).toString(), 8)
145
+ }
146
+ }
147
+
148
+ var decodeStr = function (val, offset, length, encoding) {
149
+ return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding)
150
+ }
151
+
152
+ var addLength = function (str) {
153
+ var len = Buffer.byteLength(str)
154
+ var digits = Math.floor(Math.log(len) / Math.log(10)) + 1
155
+ if (len + digits >= Math.pow(10, digits)) digits++
156
+
157
+ return (len + digits) + str
158
+ }
159
+
160
+ exports.decodeLongPath = function (buf, encoding) {
161
+ return decodeStr(buf, 0, buf.length, encoding)
162
+ }
163
+
164
+ exports.encodePax = function (opts) { // TODO: encode more stuff in pax
165
+ var result = ''
166
+ if (opts.name) result += addLength(' path=' + opts.name + '\n')
167
+ if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\n')
168
+ var pax = opts.pax
169
+ if (pax) {
170
+ for (var key in pax) {
171
+ result += addLength(' ' + key + '=' + pax[key] + '\n')
172
+ }
173
+ }
174
+ return Buffer.from(result)
175
+ }
176
+
177
+ exports.decodePax = function (buf) {
178
+ var result = {}
179
+
180
+ while (buf.length) {
181
+ var i = 0
182
+ while (i < buf.length && buf[i] !== 32) i++
183
+ var len = parseInt(buf.slice(0, i).toString(), 10)
184
+ if (!len) return result
185
+
186
+ var b = buf.slice(i + 1, len - 1).toString()
187
+ var keyIndex = b.indexOf('=')
188
+ if (keyIndex === -1) return result
189
+ result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)
190
+
191
+ buf = buf.slice(len)
192
+ }
193
+
194
+ return result
195
+ }
196
+
197
+ exports.encode = function (opts) {
198
+ var buf = alloc(512)
199
+ var name = opts.name
200
+ var prefix = ''
201
+
202
+ if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'
203
+ if (Buffer.byteLength(name) !== name.length) return null // utf-8
204
+
205
+ while (Buffer.byteLength(name) > 100) {
206
+ var i = name.indexOf('/')
207
+ if (i === -1) return null
208
+ prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)
209
+ name = name.slice(i + 1)
210
+ }
211
+
212
+ if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null
213
+ if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null
214
+
215
+ buf.write(name)
216
+ buf.write(encodeOct(opts.mode & MASK, 6), 100)
217
+ buf.write(encodeOct(opts.uid, 6), 108)
218
+ buf.write(encodeOct(opts.gid, 6), 116)
219
+ buf.write(encodeOct(opts.size, 11), 124)
220
+ buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)
221
+
222
+ buf[156] = ZERO_OFFSET + toTypeflag(opts.type)
223
+
224
+ if (opts.linkname) buf.write(opts.linkname, 157)
225
+
226
+ USTAR_MAGIC.copy(buf, MAGIC_OFFSET)
227
+ USTAR_VER.copy(buf, VERSION_OFFSET)
228
+ if (opts.uname) buf.write(opts.uname, 265)
229
+ if (opts.gname) buf.write(opts.gname, 297)
230
+ buf.write(encodeOct(opts.devmajor || 0, 6), 329)
231
+ buf.write(encodeOct(opts.devminor || 0, 6), 337)
232
+
233
+ if (prefix) buf.write(prefix, 345)
234
+
235
+ buf.write(encodeOct(cksum(buf), 6), 148)
236
+
237
+ return buf
238
+ }
239
+
240
+ exports.decode = function (buf, filenameEncoding) {
241
+ var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET
242
+
243
+ var name = decodeStr(buf, 0, 100, filenameEncoding)
244
+ var mode = decodeOct(buf, 100, 8)
245
+ var uid = decodeOct(buf, 108, 8)
246
+ var gid = decodeOct(buf, 116, 8)
247
+ var size = decodeOct(buf, 124, 12)
248
+ var mtime = decodeOct(buf, 136, 12)
249
+ var type = toType(typeflag)
250
+ var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)
251
+ var uname = decodeStr(buf, 265, 32)
252
+ var gname = decodeStr(buf, 297, 32)
253
+ var devmajor = decodeOct(buf, 329, 8)
254
+ var devminor = decodeOct(buf, 337, 8)
255
+
256
+ var c = cksum(buf)
257
+
258
+ // checksum is still initial value if header was null.
259
+ if (c === 8 * 32) return null
260
+
261
+ // valid checksum
262
+ if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')
263
+
264
+ if (USTAR_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0) {
265
+ // ustar (posix) format.
266
+ // prepend prefix, if present.
267
+ if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name
268
+ } else if (GNU_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0 &&
269
+ GNU_VER.compare(buf, VERSION_OFFSET, VERSION_OFFSET + 2) === 0) {
270
+ // 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and
271
+ // multi-volume tarballs.
272
+ } else {
273
+ throw new Error('Invalid tar header: unknown format.')
274
+ }
275
+
276
+ // to support old tar versions that use trailing / to indicate dirs
277
+ if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5
278
+
279
+ return {
280
+ name,
281
+ mode,
282
+ uid,
283
+ gid,
284
+ size,
285
+ mtime: new Date(1000 * mtime),
286
+ type,
287
+ linkname,
288
+ uname,
289
+ gname,
290
+ devmajor,
291
+ devminor
292
+ }
293
+ }