cline 1.0.0-nightly.5 → 1.0.0-nightly.6

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 (355) hide show
  1. package/bin/cline +0 -0
  2. package/bin/cline-host +0 -0
  3. package/node_modules/base64-js/LICENSE +21 -0
  4. package/node_modules/base64-js/README.md +34 -0
  5. package/node_modules/base64-js/base64js.min.js +1 -0
  6. package/node_modules/base64-js/index.d.ts +3 -0
  7. package/node_modules/base64-js/index.js +150 -0
  8. package/node_modules/base64-js/package.json +47 -0
  9. package/node_modules/better-sqlite3/LICENSE +21 -0
  10. package/node_modules/better-sqlite3/README.md +99 -0
  11. package/node_modules/better-sqlite3/binding.gyp +38 -0
  12. package/node_modules/better-sqlite3/deps/common.gypi +68 -0
  13. package/node_modules/better-sqlite3/deps/copy.js +31 -0
  14. package/node_modules/better-sqlite3/deps/defines.gypi +41 -0
  15. package/node_modules/better-sqlite3/deps/download.sh +122 -0
  16. package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
  17. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +262875 -0
  18. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +13775 -0
  19. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +723 -0
  20. package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
  21. package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
  22. package/node_modules/better-sqlite3/lib/database.js +90 -0
  23. package/node_modules/better-sqlite3/lib/index.js +3 -0
  24. package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  25. package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  26. package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  27. package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  28. package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  29. package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  30. package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  31. package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  32. package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  33. package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  34. package/node_modules/better-sqlite3/lib/util.js +12 -0
  35. package/node_modules/better-sqlite3/package.json +62 -0
  36. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +2189 -0
  37. package/node_modules/better-sqlite3/src/better_sqlite3.hpp +1036 -0
  38. package/node_modules/bindings/LICENSE.md +22 -0
  39. package/node_modules/bindings/README.md +98 -0
  40. package/node_modules/bindings/bindings.js +221 -0
  41. package/node_modules/bindings/package.json +28 -0
  42. package/node_modules/bl/.travis.yml +17 -0
  43. package/node_modules/bl/BufferList.js +396 -0
  44. package/node_modules/bl/LICENSE.md +13 -0
  45. package/node_modules/bl/README.md +247 -0
  46. package/node_modules/bl/bl.js +84 -0
  47. package/node_modules/bl/package.json +37 -0
  48. package/node_modules/bl/test/convert.js +21 -0
  49. package/node_modules/bl/test/indexOf.js +492 -0
  50. package/node_modules/bl/test/isBufferList.js +32 -0
  51. package/node_modules/bl/test/test.js +869 -0
  52. package/node_modules/buffer/AUTHORS.md +70 -0
  53. package/node_modules/buffer/LICENSE +21 -0
  54. package/node_modules/buffer/README.md +410 -0
  55. package/node_modules/buffer/index.d.ts +186 -0
  56. package/node_modules/buffer/index.js +1817 -0
  57. package/node_modules/buffer/package.json +96 -0
  58. package/node_modules/chownr/LICENSE +15 -0
  59. package/node_modules/chownr/README.md +3 -0
  60. package/node_modules/chownr/chownr.js +167 -0
  61. package/node_modules/chownr/package.json +29 -0
  62. package/node_modules/decompress-response/index.d.ts +22 -0
  63. package/node_modules/decompress-response/index.js +58 -0
  64. package/node_modules/decompress-response/license +9 -0
  65. package/node_modules/decompress-response/package.json +56 -0
  66. package/node_modules/decompress-response/readme.md +48 -0
  67. package/node_modules/deep-extend/LICENSE +20 -0
  68. package/node_modules/deep-extend/README.md +91 -0
  69. package/node_modules/deep-extend/index.js +1 -0
  70. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  71. package/node_modules/deep-extend/package.json +62 -0
  72. package/node_modules/detect-libc/LICENSE +201 -0
  73. package/node_modules/detect-libc/README.md +163 -0
  74. package/node_modules/detect-libc/index.d.ts +14 -0
  75. package/node_modules/detect-libc/lib/detect-libc.js +267 -0
  76. package/node_modules/detect-libc/lib/filesystem.js +41 -0
  77. package/node_modules/detect-libc/lib/process.js +24 -0
  78. package/node_modules/detect-libc/package.json +41 -0
  79. package/node_modules/end-of-stream/LICENSE +21 -0
  80. package/node_modules/end-of-stream/README.md +54 -0
  81. package/node_modules/end-of-stream/index.js +96 -0
  82. package/node_modules/end-of-stream/package.json +37 -0
  83. package/node_modules/expand-template/.travis.yml +6 -0
  84. package/node_modules/expand-template/LICENSE +21 -0
  85. package/node_modules/expand-template/README.md +43 -0
  86. package/node_modules/expand-template/index.js +26 -0
  87. package/node_modules/expand-template/package.json +29 -0
  88. package/node_modules/expand-template/test.js +67 -0
  89. package/node_modules/file-uri-to-path/.npmignore +1 -0
  90. package/node_modules/file-uri-to-path/.travis.yml +30 -0
  91. package/node_modules/file-uri-to-path/History.md +21 -0
  92. package/node_modules/file-uri-to-path/LICENSE +20 -0
  93. package/node_modules/file-uri-to-path/README.md +74 -0
  94. package/node_modules/file-uri-to-path/index.d.ts +2 -0
  95. package/node_modules/file-uri-to-path/index.js +66 -0
  96. package/node_modules/file-uri-to-path/package.json +32 -0
  97. package/node_modules/file-uri-to-path/test/test.js +24 -0
  98. package/node_modules/file-uri-to-path/test/tests.json +13 -0
  99. package/node_modules/fs-constants/LICENSE +21 -0
  100. package/node_modules/fs-constants/README.md +26 -0
  101. package/node_modules/fs-constants/browser.js +1 -0
  102. package/node_modules/fs-constants/index.js +1 -0
  103. package/node_modules/fs-constants/package.json +19 -0
  104. package/node_modules/github-from-package/.travis.yml +4 -0
  105. package/node_modules/github-from-package/LICENSE +18 -0
  106. package/node_modules/github-from-package/example/package.json +8 -0
  107. package/node_modules/github-from-package/example/url.js +3 -0
  108. package/node_modules/github-from-package/index.js +17 -0
  109. package/node_modules/github-from-package/package.json +30 -0
  110. package/node_modules/github-from-package/readme.markdown +53 -0
  111. package/node_modules/github-from-package/test/a.json +8 -0
  112. package/node_modules/github-from-package/test/b.json +5 -0
  113. package/node_modules/github-from-package/test/c.json +5 -0
  114. package/node_modules/github-from-package/test/d.json +7 -0
  115. package/node_modules/github-from-package/test/e.json +5 -0
  116. package/node_modules/github-from-package/test/url.js +19 -0
  117. package/node_modules/ieee754/LICENSE +11 -0
  118. package/node_modules/ieee754/README.md +51 -0
  119. package/node_modules/ieee754/index.d.ts +10 -0
  120. package/node_modules/ieee754/index.js +85 -0
  121. package/node_modules/ieee754/package.json +52 -0
  122. package/node_modules/inherits/LICENSE +16 -0
  123. package/node_modules/inherits/README.md +42 -0
  124. package/node_modules/inherits/inherits.js +9 -0
  125. package/node_modules/inherits/inherits_browser.js +27 -0
  126. package/node_modules/inherits/package.json +29 -0
  127. package/node_modules/ini/LICENSE +15 -0
  128. package/node_modules/ini/README.md +102 -0
  129. package/node_modules/ini/ini.js +206 -0
  130. package/node_modules/ini/package.json +33 -0
  131. package/node_modules/mimic-response/index.d.ts +17 -0
  132. package/node_modules/mimic-response/index.js +77 -0
  133. package/node_modules/mimic-response/license +9 -0
  134. package/node_modules/mimic-response/package.json +42 -0
  135. package/node_modules/mimic-response/readme.md +78 -0
  136. package/node_modules/minimist/.eslintrc +29 -0
  137. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  138. package/node_modules/minimist/.nycrc +14 -0
  139. package/node_modules/minimist/CHANGELOG.md +298 -0
  140. package/node_modules/minimist/LICENSE +18 -0
  141. package/node_modules/minimist/README.md +121 -0
  142. package/node_modules/minimist/example/parse.js +4 -0
  143. package/node_modules/minimist/index.js +263 -0
  144. package/node_modules/minimist/package.json +75 -0
  145. package/node_modules/minimist/test/all_bool.js +34 -0
  146. package/node_modules/minimist/test/bool.js +177 -0
  147. package/node_modules/minimist/test/dash.js +43 -0
  148. package/node_modules/minimist/test/default_bool.js +37 -0
  149. package/node_modules/minimist/test/dotted.js +24 -0
  150. package/node_modules/minimist/test/kv_short.js +32 -0
  151. package/node_modules/minimist/test/long.js +33 -0
  152. package/node_modules/minimist/test/num.js +38 -0
  153. package/node_modules/minimist/test/parse.js +209 -0
  154. package/node_modules/minimist/test/parse_modified.js +11 -0
  155. package/node_modules/minimist/test/proto.js +64 -0
  156. package/node_modules/minimist/test/short.js +69 -0
  157. package/node_modules/minimist/test/stop_early.js +17 -0
  158. package/node_modules/minimist/test/unknown.js +104 -0
  159. package/node_modules/minimist/test/whitespace.js +10 -0
  160. package/node_modules/mkdirp-classic/LICENSE +21 -0
  161. package/node_modules/mkdirp-classic/README.md +18 -0
  162. package/node_modules/mkdirp-classic/index.js +98 -0
  163. package/node_modules/mkdirp-classic/package.json +18 -0
  164. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
  165. package/node_modules/napi-build-utils/LICENSE +21 -0
  166. package/node_modules/napi-build-utils/README.md +52 -0
  167. package/node_modules/napi-build-utils/index.js +214 -0
  168. package/node_modules/napi-build-utils/index.md +0 -0
  169. package/node_modules/napi-build-utils/package.json +42 -0
  170. package/node_modules/node-abi/LICENSE +21 -0
  171. package/node_modules/node-abi/README.md +54 -0
  172. package/node_modules/node-abi/abi_registry.json +408 -0
  173. package/node_modules/node-abi/index.js +179 -0
  174. package/node_modules/node-abi/package.json +45 -0
  175. package/node_modules/once/LICENSE +15 -0
  176. package/node_modules/once/README.md +79 -0
  177. package/node_modules/once/once.js +42 -0
  178. package/node_modules/once/package.json +33 -0
  179. package/node_modules/prebuild-install/CHANGELOG.md +131 -0
  180. package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  181. package/node_modules/prebuild-install/LICENSE +21 -0
  182. package/node_modules/prebuild-install/README.md +163 -0
  183. package/node_modules/prebuild-install/asset.js +44 -0
  184. package/node_modules/prebuild-install/bin.js +78 -0
  185. package/node_modules/prebuild-install/download.js +142 -0
  186. package/node_modules/prebuild-install/error.js +14 -0
  187. package/node_modules/prebuild-install/help.txt +16 -0
  188. package/node_modules/prebuild-install/index.js +1 -0
  189. package/node_modules/prebuild-install/log.js +33 -0
  190. package/node_modules/prebuild-install/package.json +67 -0
  191. package/node_modules/prebuild-install/proxy.js +35 -0
  192. package/node_modules/prebuild-install/rc.js +64 -0
  193. package/node_modules/prebuild-install/util.js +143 -0
  194. package/node_modules/pump/.github/FUNDING.yml +2 -0
  195. package/node_modules/pump/.travis.yml +5 -0
  196. package/node_modules/pump/LICENSE +21 -0
  197. package/node_modules/pump/README.md +74 -0
  198. package/node_modules/pump/SECURITY.md +5 -0
  199. package/node_modules/pump/index.js +86 -0
  200. package/node_modules/pump/package.json +24 -0
  201. package/node_modules/pump/test-browser.js +66 -0
  202. package/node_modules/pump/test-node.js +53 -0
  203. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  204. package/node_modules/rc/LICENSE.BSD +26 -0
  205. package/node_modules/rc/LICENSE.MIT +24 -0
  206. package/node_modules/rc/README.md +227 -0
  207. package/node_modules/rc/browser.js +7 -0
  208. package/node_modules/rc/cli.js +4 -0
  209. package/node_modules/rc/index.js +53 -0
  210. package/node_modules/rc/lib/utils.js +104 -0
  211. package/node_modules/rc/package.json +29 -0
  212. package/node_modules/rc/test/ini.js +16 -0
  213. package/node_modules/rc/test/nested-env-vars.js +50 -0
  214. package/node_modules/rc/test/test.js +59 -0
  215. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  216. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  217. package/node_modules/readable-stream/LICENSE +47 -0
  218. package/node_modules/readable-stream/README.md +106 -0
  219. package/node_modules/readable-stream/errors-browser.js +127 -0
  220. package/node_modules/readable-stream/errors.js +116 -0
  221. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  222. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  223. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  224. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  225. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  226. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  227. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  228. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  229. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  230. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  231. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  232. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  233. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  234. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  235. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  236. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  237. package/node_modules/readable-stream/package.json +68 -0
  238. package/node_modules/readable-stream/readable-browser.js +9 -0
  239. package/node_modules/readable-stream/readable.js +16 -0
  240. package/node_modules/safe-buffer/LICENSE +21 -0
  241. package/node_modules/safe-buffer/README.md +584 -0
  242. package/node_modules/safe-buffer/index.d.ts +187 -0
  243. package/node_modules/safe-buffer/index.js +65 -0
  244. package/node_modules/safe-buffer/package.json +51 -0
  245. package/node_modules/semver/LICENSE +15 -0
  246. package/node_modules/semver/README.md +664 -0
  247. package/node_modules/semver/bin/semver.js +191 -0
  248. package/node_modules/semver/classes/comparator.js +143 -0
  249. package/node_modules/semver/classes/index.js +7 -0
  250. package/node_modules/semver/classes/range.js +556 -0
  251. package/node_modules/semver/classes/semver.js +319 -0
  252. package/node_modules/semver/functions/clean.js +8 -0
  253. package/node_modules/semver/functions/cmp.js +54 -0
  254. package/node_modules/semver/functions/coerce.js +62 -0
  255. package/node_modules/semver/functions/compare-build.js +9 -0
  256. package/node_modules/semver/functions/compare-loose.js +5 -0
  257. package/node_modules/semver/functions/compare.js +7 -0
  258. package/node_modules/semver/functions/diff.js +60 -0
  259. package/node_modules/semver/functions/eq.js +5 -0
  260. package/node_modules/semver/functions/gt.js +5 -0
  261. package/node_modules/semver/functions/gte.js +5 -0
  262. package/node_modules/semver/functions/inc.js +21 -0
  263. package/node_modules/semver/functions/lt.js +5 -0
  264. package/node_modules/semver/functions/lte.js +5 -0
  265. package/node_modules/semver/functions/major.js +5 -0
  266. package/node_modules/semver/functions/minor.js +5 -0
  267. package/node_modules/semver/functions/neq.js +5 -0
  268. package/node_modules/semver/functions/parse.js +18 -0
  269. package/node_modules/semver/functions/patch.js +5 -0
  270. package/node_modules/semver/functions/prerelease.js +8 -0
  271. package/node_modules/semver/functions/rcompare.js +5 -0
  272. package/node_modules/semver/functions/rsort.js +5 -0
  273. package/node_modules/semver/functions/satisfies.js +12 -0
  274. package/node_modules/semver/functions/sort.js +5 -0
  275. package/node_modules/semver/functions/valid.js +8 -0
  276. package/node_modules/semver/index.js +91 -0
  277. package/node_modules/semver/internal/constants.js +37 -0
  278. package/node_modules/semver/internal/debug.js +11 -0
  279. package/node_modules/semver/internal/identifiers.js +25 -0
  280. package/node_modules/semver/internal/lrucache.js +42 -0
  281. package/node_modules/semver/internal/parse-options.js +17 -0
  282. package/node_modules/semver/internal/re.js +223 -0
  283. package/node_modules/semver/package.json +78 -0
  284. package/node_modules/semver/preload.js +4 -0
  285. package/node_modules/semver/range.bnf +16 -0
  286. package/node_modules/semver/ranges/gtr.js +6 -0
  287. package/node_modules/semver/ranges/intersects.js +9 -0
  288. package/node_modules/semver/ranges/ltr.js +6 -0
  289. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  290. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  291. package/node_modules/semver/ranges/min-version.js +63 -0
  292. package/node_modules/semver/ranges/outside.js +82 -0
  293. package/node_modules/semver/ranges/simplify.js +49 -0
  294. package/node_modules/semver/ranges/subset.js +249 -0
  295. package/node_modules/semver/ranges/to-comparators.js +10 -0
  296. package/node_modules/semver/ranges/valid.js +13 -0
  297. package/node_modules/simple-concat/.travis.yml +3 -0
  298. package/node_modules/simple-concat/LICENSE +20 -0
  299. package/node_modules/simple-concat/README.md +44 -0
  300. package/node_modules/simple-concat/index.js +15 -0
  301. package/node_modules/simple-concat/package.json +47 -0
  302. package/node_modules/simple-concat/test/basic.js +41 -0
  303. package/node_modules/simple-get/.github/dependabot.yml +15 -0
  304. package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
  305. package/node_modules/simple-get/LICENSE +20 -0
  306. package/node_modules/simple-get/README.md +333 -0
  307. package/node_modules/simple-get/index.js +108 -0
  308. package/node_modules/simple-get/package.json +67 -0
  309. package/node_modules/string_decoder/LICENSE +48 -0
  310. package/node_modules/string_decoder/README.md +47 -0
  311. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  312. package/node_modules/string_decoder/package.json +34 -0
  313. package/node_modules/strip-json-comments/index.js +70 -0
  314. package/node_modules/strip-json-comments/license +21 -0
  315. package/node_modules/strip-json-comments/package.json +42 -0
  316. package/node_modules/strip-json-comments/readme.md +64 -0
  317. package/node_modules/tar-fs/.travis.yml +6 -0
  318. package/node_modules/tar-fs/LICENSE +21 -0
  319. package/node_modules/tar-fs/README.md +165 -0
  320. package/node_modules/tar-fs/index.js +358 -0
  321. package/node_modules/tar-fs/package.json +41 -0
  322. package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  323. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  324. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  325. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  326. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  327. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  328. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  329. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  330. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  331. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  332. package/node_modules/tar-fs/test/index.js +346 -0
  333. package/node_modules/tar-stream/LICENSE +21 -0
  334. package/node_modules/tar-stream/README.md +168 -0
  335. package/node_modules/tar-stream/extract.js +257 -0
  336. package/node_modules/tar-stream/headers.js +295 -0
  337. package/node_modules/tar-stream/index.js +2 -0
  338. package/node_modules/tar-stream/pack.js +255 -0
  339. package/node_modules/tar-stream/package.json +58 -0
  340. package/node_modules/tar-stream/sandbox.js +11 -0
  341. package/node_modules/tunnel-agent/LICENSE +55 -0
  342. package/node_modules/tunnel-agent/README.md +4 -0
  343. package/node_modules/tunnel-agent/index.js +244 -0
  344. package/node_modules/tunnel-agent/package.json +22 -0
  345. package/node_modules/util-deprecate/History.md +16 -0
  346. package/node_modules/util-deprecate/LICENSE +24 -0
  347. package/node_modules/util-deprecate/README.md +53 -0
  348. package/node_modules/util-deprecate/browser.js +67 -0
  349. package/node_modules/util-deprecate/node.js +6 -0
  350. package/node_modules/util-deprecate/package.json +27 -0
  351. package/node_modules/wrappy/LICENSE +15 -0
  352. package/node_modules/wrappy/README.md +36 -0
  353. package/node_modules/wrappy/package.json +29 -0
  354. package/node_modules/wrappy/wrappy.js +33 -0
  355. package/package.json +1 -1
@@ -0,0 +1,346 @@
1
+ var test = require('tape')
2
+ var rimraf = require('rimraf')
3
+ var tar = require('../index')
4
+ var tarStream = require('tar-stream')
5
+ var path = require('path')
6
+ var fs = require('fs')
7
+ var os = require('os')
8
+
9
+ var win32 = os.platform() === 'win32'
10
+
11
+ var mtime = function (st) {
12
+ return Math.floor(st.mtime.getTime() / 1000)
13
+ }
14
+
15
+ test('copy a -> copy/a', function (t) {
16
+ t.plan(5)
17
+
18
+ var a = path.join(__dirname, 'fixtures', 'a')
19
+ var b = path.join(__dirname, 'fixtures', 'copy', 'a')
20
+
21
+ rimraf.sync(b)
22
+ tar.pack(a)
23
+ .pipe(tar.extract(b))
24
+ .on('finish', function () {
25
+ var files = fs.readdirSync(b)
26
+ t.same(files.length, 1)
27
+ t.same(files[0], 'hello.txt')
28
+ var fileB = path.join(b, files[0])
29
+ var fileA = path.join(a, files[0])
30
+ t.same(fs.readFileSync(fileB, 'utf-8'), fs.readFileSync(fileA, 'utf-8'))
31
+ t.same(fs.statSync(fileB).mode, fs.statSync(fileA).mode)
32
+ t.same(mtime(fs.statSync(fileB)), mtime(fs.statSync(fileA)))
33
+ })
34
+ })
35
+
36
+ test('copy b -> copy/b', function (t) {
37
+ t.plan(8)
38
+
39
+ var a = path.join(__dirname, 'fixtures', 'b')
40
+ var b = path.join(__dirname, 'fixtures', 'copy', 'b')
41
+
42
+ rimraf.sync(b)
43
+ tar.pack(a)
44
+ .pipe(tar.extract(b))
45
+ .on('finish', function () {
46
+ var files = fs.readdirSync(b)
47
+ t.same(files.length, 1)
48
+ t.same(files[0], 'a')
49
+ var dirB = path.join(b, files[0])
50
+ var dirA = path.join(a, files[0])
51
+ t.same(fs.statSync(dirB).mode, fs.statSync(dirA).mode)
52
+ t.same(mtime(fs.statSync(dirB)), mtime(fs.statSync(dirA)))
53
+ t.ok(fs.statSync(dirB).isDirectory())
54
+ var fileB = path.join(dirB, 'test.txt')
55
+ var fileA = path.join(dirA, 'test.txt')
56
+ t.same(fs.readFileSync(fileB, 'utf-8'), fs.readFileSync(fileA, 'utf-8'))
57
+ t.same(fs.statSync(fileB).mode, fs.statSync(fileA).mode)
58
+ t.same(mtime(fs.statSync(fileB)), mtime(fs.statSync(fileA)))
59
+ })
60
+ })
61
+
62
+ test('symlink', function (t) {
63
+ if (win32) { // no symlink support on win32 currently. TODO: test if this can be enabled somehow
64
+ t.plan(1)
65
+ t.ok(true)
66
+ return
67
+ }
68
+
69
+ t.plan(5)
70
+
71
+ var a = path.join(__dirname, 'fixtures', 'c')
72
+
73
+ rimraf.sync(path.join(a, 'link'))
74
+ fs.symlinkSync('.gitignore', path.join(a, 'link'))
75
+
76
+ var b = path.join(__dirname, 'fixtures', 'copy', 'c')
77
+
78
+ rimraf.sync(b)
79
+ tar.pack(a)
80
+ .pipe(tar.extract(b))
81
+ .on('finish', function () {
82
+ var files = fs.readdirSync(b).sort()
83
+ t.same(files.length, 2)
84
+ t.same(files[0], '.gitignore')
85
+ t.same(files[1], 'link')
86
+
87
+ var linkA = path.join(a, 'link')
88
+ var linkB = path.join(b, 'link')
89
+
90
+ t.same(mtime(fs.lstatSync(linkB)), mtime(fs.lstatSync(linkA)))
91
+ t.same(fs.readlinkSync(linkB), fs.readlinkSync(linkA))
92
+ })
93
+ })
94
+
95
+ test('follow symlinks', function (t) {
96
+ if (win32) { // no symlink support on win32 currently. TODO: test if this can be enabled somehow
97
+ t.plan(1)
98
+ t.ok(true)
99
+ return
100
+ }
101
+
102
+ t.plan(5)
103
+
104
+ var a = path.join(__dirname, 'fixtures', 'c')
105
+
106
+ rimraf.sync(path.join(a, 'link'))
107
+ fs.symlinkSync('.gitignore', path.join(a, 'link'))
108
+
109
+ var b = path.join(__dirname, 'fixtures', 'copy', 'c-dereference')
110
+
111
+ rimraf.sync(b)
112
+ tar.pack(a, { dereference: true })
113
+ .pipe(tar.extract(b))
114
+ .on('finish', function () {
115
+ var files = fs.readdirSync(b).sort()
116
+ t.same(files.length, 2)
117
+ t.same(files[0], '.gitignore')
118
+ t.same(files[1], 'link')
119
+
120
+ var file1 = path.join(b, '.gitignore')
121
+ var file2 = path.join(b, 'link')
122
+
123
+ t.same(mtime(fs.lstatSync(file1)), mtime(fs.lstatSync(file2)))
124
+ t.same(fs.readFileSync(file1), fs.readFileSync(file2))
125
+ })
126
+ })
127
+
128
+ test('strip', function (t) {
129
+ t.plan(2)
130
+
131
+ var a = path.join(__dirname, 'fixtures', 'b')
132
+ var b = path.join(__dirname, 'fixtures', 'copy', 'b-strip')
133
+
134
+ rimraf.sync(b)
135
+
136
+ tar.pack(a)
137
+ .pipe(tar.extract(b, { strip: 1 }))
138
+ .on('finish', function () {
139
+ var files = fs.readdirSync(b).sort()
140
+ t.same(files.length, 1)
141
+ t.same(files[0], 'test.txt')
142
+ })
143
+ })
144
+
145
+ test('strip + map', function (t) {
146
+ t.plan(2)
147
+
148
+ var a = path.join(__dirname, 'fixtures', 'b')
149
+ var b = path.join(__dirname, 'fixtures', 'copy', 'b-strip')
150
+
151
+ rimraf.sync(b)
152
+
153
+ var uppercase = function (header) {
154
+ header.name = header.name.toUpperCase()
155
+ return header
156
+ }
157
+
158
+ tar.pack(a)
159
+ .pipe(tar.extract(b, { strip: 1, map: uppercase }))
160
+ .on('finish', function () {
161
+ var files = fs.readdirSync(b).sort()
162
+ t.same(files.length, 1)
163
+ t.same(files[0], 'TEST.TXT')
164
+ })
165
+ })
166
+
167
+ test('map + dir + permissions', function (t) {
168
+ t.plan(win32 ? 1 : 2) // skip chmod test, it's not working like unix
169
+
170
+ var a = path.join(__dirname, 'fixtures', 'b')
171
+ var b = path.join(__dirname, 'fixtures', 'copy', 'a-perms')
172
+
173
+ rimraf.sync(b)
174
+
175
+ var aWithMode = function (header) {
176
+ if (header.name === 'a') {
177
+ header.mode = parseInt(700, 8)
178
+ }
179
+ return header
180
+ }
181
+
182
+ tar.pack(a)
183
+ .pipe(tar.extract(b, { map: aWithMode }))
184
+ .on('finish', function () {
185
+ var files = fs.readdirSync(b).sort()
186
+ var stat = fs.statSync(path.join(b, 'a'))
187
+ t.same(files.length, 1)
188
+ if (!win32) {
189
+ t.same(stat.mode & parseInt(777, 8), parseInt(700, 8))
190
+ }
191
+ })
192
+ })
193
+
194
+ test('specific entries', function (t) {
195
+ t.plan(6)
196
+
197
+ var a = path.join(__dirname, 'fixtures', 'd')
198
+ var b = path.join(__dirname, 'fixtures', 'copy', 'd-entries')
199
+
200
+ var entries = ['file1', 'sub-files/file3', 'sub-dir']
201
+
202
+ rimraf.sync(b)
203
+ tar.pack(a, { entries: entries })
204
+ .pipe(tar.extract(b))
205
+ .on('finish', function () {
206
+ var files = fs.readdirSync(b)
207
+ t.same(files.length, 3)
208
+ t.notSame(files.indexOf('file1'), -1)
209
+ t.notSame(files.indexOf('sub-files'), -1)
210
+ t.notSame(files.indexOf('sub-dir'), -1)
211
+ var subFiles = fs.readdirSync(path.join(b, 'sub-files'))
212
+ t.same(subFiles, ['file3'])
213
+ var subDir = fs.readdirSync(path.join(b, 'sub-dir'))
214
+ t.same(subDir, ['file5'])
215
+ })
216
+ })
217
+
218
+ test('check type while mapping header on packing', function (t) {
219
+ t.plan(3)
220
+
221
+ var e = path.join(__dirname, 'fixtures', 'e')
222
+
223
+ var checkHeaderType = function (header) {
224
+ if (header.name.indexOf('.') === -1) t.same(header.type, header.name)
225
+ }
226
+
227
+ tar.pack(e, { map: checkHeaderType })
228
+ })
229
+
230
+ test('finish callbacks', function (t) {
231
+ t.plan(3)
232
+
233
+ var a = path.join(__dirname, 'fixtures', 'a')
234
+ var b = path.join(__dirname, 'fixtures', 'copy', 'a')
235
+
236
+ rimraf.sync(b)
237
+
238
+ var packEntries = 0
239
+ var extractEntries = 0
240
+
241
+ var countPackEntry = function (header) { packEntries++ }
242
+ var countExtractEntry = function (header) { extractEntries++ }
243
+
244
+ var pack
245
+ var onPackFinish = function (passedPack) {
246
+ t.equal(packEntries, 2, 'All entries have been packed') // 2 entries - the file and base directory
247
+ t.equal(passedPack, pack, 'The finish hook passes the pack')
248
+ }
249
+
250
+ var onExtractFinish = function () { t.equal(extractEntries, 2) }
251
+
252
+ pack = tar.pack(a, { map: countPackEntry, finish: onPackFinish })
253
+
254
+ pack.pipe(tar.extract(b, { map: countExtractEntry, finish: onExtractFinish }))
255
+ .on('finish', function () {
256
+ t.end()
257
+ })
258
+ })
259
+
260
+ test('not finalizing the pack', function (t) {
261
+ t.plan(2)
262
+
263
+ var a = path.join(__dirname, 'fixtures', 'a')
264
+ var b = path.join(__dirname, 'fixtures', 'b')
265
+
266
+ var out = path.join(__dirname, 'fixtures', 'copy', 'merged-packs')
267
+
268
+ rimraf.sync(out)
269
+
270
+ var prefixer = function (prefix) {
271
+ return function (header) {
272
+ header.name = path.join(prefix, header.name)
273
+ return header
274
+ }
275
+ }
276
+
277
+ tar.pack(a, {
278
+ map: prefixer('a-files'),
279
+ finalize: false,
280
+ finish: packB
281
+ })
282
+
283
+ function packB (pack) {
284
+ tar.pack(b, { pack: pack, map: prefixer('b-files') })
285
+ .pipe(tar.extract(out))
286
+ .on('finish', assertResults)
287
+ }
288
+
289
+ function assertResults () {
290
+ var containers = fs.readdirSync(out)
291
+ t.deepEqual(containers, ['a-files', 'b-files'])
292
+ var aFiles = fs.readdirSync(path.join(out, 'a-files'))
293
+ t.deepEqual(aFiles, ['hello.txt'])
294
+ }
295
+ })
296
+
297
+ test('do not extract invalid tar', function (t) {
298
+ var a = path.join(__dirname, 'fixtures', 'invalid.tar')
299
+
300
+ var out = path.join(__dirname, 'fixtures', 'invalid')
301
+
302
+ rimraf.sync(out)
303
+
304
+ fs.createReadStream(a)
305
+ .pipe(tar.extract(out))
306
+ .on('error', function (err) {
307
+ t.ok(/is not a valid symlink/i.test(err.message))
308
+ fs.stat(path.join(out, '../bar'), function (err) {
309
+ t.ok(err)
310
+ t.end()
311
+ })
312
+ })
313
+ })
314
+
315
+ test('no abs hardlink targets', function (t) {
316
+ var out = path.join(__dirname, 'fixtures', 'invalid')
317
+ var outside = path.join(__dirname, 'fixtures', 'outside')
318
+
319
+ rimraf.sync(out)
320
+
321
+ var s = tarStream.pack()
322
+
323
+ fs.writeFileSync(outside, 'something')
324
+
325
+ s.entry({
326
+ type: 'link',
327
+ name: 'link',
328
+ linkname: outside
329
+ })
330
+
331
+ s.entry({
332
+ name: 'link'
333
+ }, 'overwrite')
334
+
335
+ s.finalize()
336
+
337
+ s.pipe(tar.extract(out))
338
+ .on('error', function (err) {
339
+ t.ok(err, 'had error')
340
+ fs.readFile(outside, 'utf-8', function (err, str) {
341
+ t.error(err, 'no error')
342
+ t.same(str, 'something')
343
+ t.end()
344
+ })
345
+ })
346
+ })
@@ -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