cline 1.0.0 → 1.0.2

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 (299) hide show
  1. package/bin/cline +0 -0
  2. package/bin/cline-darwin-amd64 +0 -0
  3. package/bin/cline-darwin-arm64 +0 -0
  4. package/bin/cline-host +0 -0
  5. package/bin/cline-host-darwin-amd64 +0 -0
  6. package/bin/cline-host-darwin-arm64 +0 -0
  7. package/bin/cline-host-linux-amd64 +0 -0
  8. package/bin/cline-host-linux-arm64 +0 -0
  9. package/bin/cline-linux-amd64 +0 -0
  10. package/bin/cline-linux-arm64 +0 -0
  11. package/cline-core.js +24841 -16621
  12. package/extension/package.json +12 -4
  13. package/node_modules/b4a/LICENSE +201 -0
  14. package/node_modules/b4a/README.md +153 -0
  15. package/node_modules/b4a/browser.js +563 -0
  16. package/node_modules/b4a/index.js +188 -0
  17. package/node_modules/b4a/lib/ascii.js +31 -0
  18. package/node_modules/b4a/lib/base64.js +65 -0
  19. package/node_modules/b4a/lib/hex.js +51 -0
  20. package/node_modules/b4a/lib/utf16le.js +40 -0
  21. package/node_modules/b4a/lib/utf8.js +141 -0
  22. package/node_modules/b4a/package.json +49 -0
  23. package/node_modules/b4a/react-native.js +5 -0
  24. package/node_modules/bare-events/LICENSE +201 -0
  25. package/node_modules/bare-events/README.md +25 -0
  26. package/node_modules/bare-events/global.d.ts +15 -0
  27. package/node_modules/bare-events/global.js +5 -0
  28. package/node_modules/bare-events/index.d.ts +94 -0
  29. package/node_modules/bare-events/index.js +355 -0
  30. package/node_modules/bare-events/lib/errors.js +32 -0
  31. package/node_modules/bare-events/package.json +61 -0
  32. package/node_modules/bare-events/web.d.ts +79 -0
  33. package/node_modules/bare-events/web.js +347 -0
  34. package/node_modules/bare-fs/CMakeLists.txt +13 -0
  35. package/node_modules/bare-fs/LICENSE +201 -0
  36. package/node_modules/bare-fs/README.md +29 -0
  37. package/node_modules/bare-fs/binding.c +2238 -0
  38. package/node_modules/bare-fs/binding.js +1 -0
  39. package/node_modules/bare-fs/index.d.ts +1115 -0
  40. package/node_modules/bare-fs/index.js +2330 -0
  41. package/node_modules/bare-fs/lib/constants.d.ts +49 -0
  42. package/node_modules/bare-fs/lib/constants.js +49 -0
  43. package/node_modules/bare-fs/lib/errors.d.ts +11 -0
  44. package/node_modules/bare-fs/lib/errors.js +55 -0
  45. package/node_modules/bare-fs/package.json +71 -0
  46. package/node_modules/bare-fs/prebuilds/android-arm/bare-fs.bare +0 -0
  47. package/node_modules/bare-fs/prebuilds/android-arm64/bare-fs.bare +0 -0
  48. package/node_modules/bare-fs/prebuilds/android-ia32/bare-fs.bare +0 -0
  49. package/node_modules/bare-fs/prebuilds/android-x64/bare-fs.bare +0 -0
  50. package/node_modules/bare-fs/prebuilds/darwin-arm64/bare-fs.bare +0 -0
  51. package/node_modules/bare-fs/prebuilds/darwin-x64/bare-fs.bare +0 -0
  52. package/node_modules/bare-fs/prebuilds/ios-arm64/bare-fs.bare +0 -0
  53. package/node_modules/bare-fs/prebuilds/ios-arm64-simulator/bare-fs.bare +0 -0
  54. package/node_modules/bare-fs/prebuilds/ios-x64-simulator/bare-fs.bare +0 -0
  55. package/node_modules/bare-fs/prebuilds/linux-arm64/bare-fs.bare +0 -0
  56. package/node_modules/bare-fs/prebuilds/linux-x64/bare-fs.bare +0 -0
  57. package/node_modules/bare-fs/prebuilds/win32-arm64/bare-fs.bare +0 -0
  58. package/node_modules/bare-fs/prebuilds/win32-x64/bare-fs.bare +0 -0
  59. package/node_modules/bare-fs/promises.d.ts +282 -0
  60. package/node_modules/bare-fs/promises.js +90 -0
  61. package/node_modules/bare-os/CMakeLists.txt +13 -0
  62. package/node_modules/bare-os/LICENSE +201 -0
  63. package/node_modules/bare-os/README.md +11 -0
  64. package/node_modules/bare-os/binding.c +1119 -0
  65. package/node_modules/bare-os/binding.js +1 -0
  66. package/node_modules/bare-os/index.d.ts +109 -0
  67. package/node_modules/bare-os/index.js +99 -0
  68. package/node_modules/bare-os/lib/constants.js +6 -0
  69. package/node_modules/bare-os/lib/errors.js +22 -0
  70. package/node_modules/bare-os/package.json +46 -0
  71. package/node_modules/bare-os/prebuilds/android-arm/bare-os.bare +0 -0
  72. package/node_modules/bare-os/prebuilds/android-arm64/bare-os.bare +0 -0
  73. package/node_modules/bare-os/prebuilds/android-ia32/bare-os.bare +0 -0
  74. package/node_modules/bare-os/prebuilds/android-x64/bare-os.bare +0 -0
  75. package/node_modules/bare-os/prebuilds/darwin-arm64/bare-os.bare +0 -0
  76. package/node_modules/bare-os/prebuilds/darwin-x64/bare-os.bare +0 -0
  77. package/node_modules/bare-os/prebuilds/ios-arm64/bare-os.bare +0 -0
  78. package/node_modules/bare-os/prebuilds/ios-arm64-simulator/bare-os.bare +0 -0
  79. package/node_modules/bare-os/prebuilds/ios-x64-simulator/bare-os.bare +0 -0
  80. package/node_modules/bare-os/prebuilds/linux-arm64/bare-os.bare +0 -0
  81. package/node_modules/bare-os/prebuilds/linux-x64/bare-os.bare +0 -0
  82. package/node_modules/bare-os/prebuilds/win32-arm64/bare-os.bare +0 -0
  83. package/node_modules/bare-os/prebuilds/win32-x64/bare-os.bare +0 -0
  84. package/node_modules/bare-path/LICENSE +201 -0
  85. package/node_modules/bare-path/NOTICE +28 -0
  86. package/node_modules/bare-path/README.md +19 -0
  87. package/node_modules/bare-path/index.js +11 -0
  88. package/node_modules/bare-path/lib/constants.js +11 -0
  89. package/node_modules/bare-path/lib/posix.js +242 -0
  90. package/node_modules/bare-path/lib/shared.js +67 -0
  91. package/node_modules/bare-path/lib/win32.js +513 -0
  92. package/node_modules/bare-path/package.json +36 -0
  93. package/node_modules/bare-stream/LICENSE +201 -0
  94. package/node_modules/bare-stream/README.md +15 -0
  95. package/node_modules/bare-stream/global.js +8 -0
  96. package/node_modules/bare-stream/index.d.ts +237 -0
  97. package/node_modules/bare-stream/index.js +355 -0
  98. package/node_modules/bare-stream/package.json +61 -0
  99. package/node_modules/bare-stream/promises.js +3 -0
  100. package/node_modules/bare-stream/web.d.ts +73 -0
  101. package/node_modules/bare-stream/web.js +229 -0
  102. package/node_modules/bare-url/CMakeLists.txt +27 -0
  103. package/node_modules/bare-url/LICENSE +201 -0
  104. package/node_modules/bare-url/README.md +19 -0
  105. package/node_modules/bare-url/binding.c +188 -0
  106. package/node_modules/bare-url/binding.js +1 -0
  107. package/node_modules/bare-url/global.d.ts +12 -0
  108. package/node_modules/bare-url/global.js +2 -0
  109. package/node_modules/bare-url/index.d.ts +39 -0
  110. package/node_modules/bare-url/index.js +450 -0
  111. package/node_modules/bare-url/lib/errors.d.ts +8 -0
  112. package/node_modules/bare-url/lib/errors.js +38 -0
  113. package/node_modules/bare-url/lib/url-search-params.d.ts +21 -0
  114. package/node_modules/bare-url/lib/url-search-params.js +176 -0
  115. package/node_modules/bare-url/package.json +51 -0
  116. package/node_modules/bare-url/prebuilds/android-arm/bare-url.bare +0 -0
  117. package/node_modules/bare-url/prebuilds/android-arm64/bare-url.bare +0 -0
  118. package/node_modules/bare-url/prebuilds/android-ia32/bare-url.bare +0 -0
  119. package/node_modules/bare-url/prebuilds/android-x64/bare-url.bare +0 -0
  120. package/node_modules/bare-url/prebuilds/darwin-arm64/bare-url.bare +0 -0
  121. package/node_modules/bare-url/prebuilds/darwin-x64/bare-url.bare +0 -0
  122. package/node_modules/bare-url/prebuilds/ios-arm64/bare-url.bare +0 -0
  123. package/node_modules/bare-url/prebuilds/ios-arm64-simulator/bare-url.bare +0 -0
  124. package/node_modules/bare-url/prebuilds/ios-x64-simulator/bare-url.bare +0 -0
  125. package/node_modules/bare-url/prebuilds/linux-arm64/bare-url.bare +0 -0
  126. package/node_modules/bare-url/prebuilds/linux-x64/bare-url.bare +0 -0
  127. package/node_modules/bare-url/prebuilds/win32-arm64/bare-url.bare +0 -0
  128. package/node_modules/bare-url/prebuilds/win32-x64/bare-url.bare +0 -0
  129. package/node_modules/better-sqlite3/deps/download.sh +1 -1
  130. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +122 -81
  131. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +45 -45
  132. package/node_modules/better-sqlite3/lib/database.js +1 -1
  133. package/node_modules/better-sqlite3/package.json +4 -7
  134. package/node_modules/better-sqlite3/src/addon.cpp +47 -0
  135. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +44 -2164
  136. package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
  137. package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
  138. package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
  139. package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
  140. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
  141. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
  142. package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
  143. package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
  144. package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
  145. package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
  146. package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
  147. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
  148. package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
  149. package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
  150. package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
  151. package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
  152. package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
  153. package/node_modules/better-sqlite3/src/util/macros.cpp +63 -0
  154. package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
  155. package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
  156. package/node_modules/events-universal/LICENSE +201 -0
  157. package/node_modules/events-universal/README.md +17 -0
  158. package/node_modules/events-universal/bare.js +1 -0
  159. package/node_modules/events-universal/default.js +1 -0
  160. package/node_modules/events-universal/index.js +1 -0
  161. package/node_modules/events-universal/package.json +39 -0
  162. package/node_modules/events-universal/react-native.js +1 -0
  163. package/node_modules/{fs-constants → fast-fifo}/LICENSE +1 -1
  164. package/node_modules/fast-fifo/README.md +78 -0
  165. package/node_modules/fast-fifo/fixed-size.js +39 -0
  166. package/node_modules/fast-fifo/index.js +48 -0
  167. package/node_modules/fast-fifo/package.json +28 -0
  168. package/node_modules/{base64-js → streamx}/LICENSE +1 -1
  169. package/node_modules/streamx/README.md +489 -0
  170. package/node_modules/streamx/index.js +1184 -0
  171. package/node_modules/streamx/package.json +34 -0
  172. package/node_modules/tar-fs/README.md +23 -34
  173. package/node_modules/tar-fs/index.js +211 -184
  174. package/node_modules/tar-fs/package.json +27 -7
  175. package/node_modules/tar-stream/README.md +34 -19
  176. package/node_modules/tar-stream/constants.js +14 -0
  177. package/node_modules/tar-stream/extract.js +341 -192
  178. package/node_modules/tar-stream/headers.js +201 -175
  179. package/node_modules/tar-stream/pack.js +226 -194
  180. package/node_modules/tar-stream/package.json +23 -46
  181. package/node_modules/text-decoder/LICENSE +201 -0
  182. package/node_modules/text-decoder/README.md +36 -0
  183. package/node_modules/text-decoder/index.js +64 -0
  184. package/node_modules/text-decoder/lib/browser-decoder.js +17 -0
  185. package/node_modules/text-decoder/lib/pass-through-decoder.js +19 -0
  186. package/node_modules/text-decoder/lib/utf8-decoder.js +104 -0
  187. package/node_modules/text-decoder/package.json +38 -0
  188. package/package.json +2 -2
  189. package/proto/cline/account.proto +10 -8
  190. package/proto/cline/browser.proto +3 -1
  191. package/proto/cline/checkpoints.proto +5 -3
  192. package/proto/cline/commands.proto +4 -2
  193. package/proto/cline/common.proto +5 -7
  194. package/proto/cline/dictation.proto +3 -1
  195. package/proto/cline/file.proto +36 -34
  196. package/proto/cline/hooks.proto +3 -2
  197. package/proto/cline/mcp.proto +6 -4
  198. package/proto/cline/models.proto +189 -19
  199. package/proto/cline/oca_account.proto +6 -7
  200. package/proto/cline/slash.proto +3 -1
  201. package/proto/cline/state.proto +147 -292
  202. package/proto/cline/task.proto +4 -2
  203. package/proto/cline/ui.proto +25 -24
  204. package/proto/cline/web.proto +3 -1
  205. package/proto/descriptor_set.pb +0 -0
  206. package/proto/host/diff.proto +5 -4
  207. package/proto/host/env.proto +8 -7
  208. package/proto/host/testing.proto +3 -3
  209. package/proto/host/window.proto +2 -2
  210. package/proto/host/workspace.proto +24 -11
  211. package/node_modules/base64-js/README.md +0 -34
  212. package/node_modules/base64-js/base64js.min.js +0 -1
  213. package/node_modules/base64-js/index.d.ts +0 -3
  214. package/node_modules/base64-js/index.js +0 -150
  215. package/node_modules/base64-js/package.json +0 -47
  216. package/node_modules/better-sqlite3/src/better_sqlite3.hpp +0 -1036
  217. package/node_modules/bl/.travis.yml +0 -17
  218. package/node_modules/bl/BufferList.js +0 -396
  219. package/node_modules/bl/LICENSE.md +0 -13
  220. package/node_modules/bl/README.md +0 -247
  221. package/node_modules/bl/bl.js +0 -84
  222. package/node_modules/bl/package.json +0 -37
  223. package/node_modules/bl/test/convert.js +0 -21
  224. package/node_modules/bl/test/indexOf.js +0 -492
  225. package/node_modules/bl/test/isBufferList.js +0 -32
  226. package/node_modules/bl/test/test.js +0 -869
  227. package/node_modules/buffer/AUTHORS.md +0 -70
  228. package/node_modules/buffer/LICENSE +0 -21
  229. package/node_modules/buffer/README.md +0 -410
  230. package/node_modules/buffer/index.d.ts +0 -186
  231. package/node_modules/buffer/index.js +0 -1817
  232. package/node_modules/buffer/package.json +0 -96
  233. package/node_modules/chownr/LICENSE +0 -15
  234. package/node_modules/chownr/README.md +0 -3
  235. package/node_modules/chownr/chownr.js +0 -167
  236. package/node_modules/chownr/package.json +0 -29
  237. package/node_modules/fs-constants/README.md +0 -26
  238. package/node_modules/fs-constants/browser.js +0 -1
  239. package/node_modules/fs-constants/index.js +0 -1
  240. package/node_modules/fs-constants/package.json +0 -19
  241. package/node_modules/ieee754/LICENSE +0 -11
  242. package/node_modules/ieee754/README.md +0 -51
  243. package/node_modules/ieee754/index.d.ts +0 -10
  244. package/node_modules/ieee754/index.js +0 -85
  245. package/node_modules/ieee754/package.json +0 -52
  246. package/node_modules/inherits/LICENSE +0 -16
  247. package/node_modules/inherits/README.md +0 -42
  248. package/node_modules/inherits/inherits.js +0 -9
  249. package/node_modules/inherits/inherits_browser.js +0 -27
  250. package/node_modules/inherits/package.json +0 -29
  251. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  252. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  253. package/node_modules/readable-stream/LICENSE +0 -47
  254. package/node_modules/readable-stream/README.md +0 -106
  255. package/node_modules/readable-stream/errors-browser.js +0 -127
  256. package/node_modules/readable-stream/errors.js +0 -116
  257. package/node_modules/readable-stream/experimentalWarning.js +0 -17
  258. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  259. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  260. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  261. package/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  262. package/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  263. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  264. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  265. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  266. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  267. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  268. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  269. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  270. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  271. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  272. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  273. package/node_modules/readable-stream/package.json +0 -68
  274. package/node_modules/readable-stream/readable-browser.js +0 -9
  275. package/node_modules/readable-stream/readable.js +0 -16
  276. package/node_modules/string_decoder/LICENSE +0 -48
  277. package/node_modules/string_decoder/README.md +0 -47
  278. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  279. package/node_modules/string_decoder/package.json +0 -34
  280. package/node_modules/tar-fs/.travis.yml +0 -6
  281. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  282. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  283. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  284. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  285. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  286. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  287. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  288. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  289. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  290. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  291. package/node_modules/tar-fs/test/index.js +0 -346
  292. package/node_modules/tar-stream/sandbox.js +0 -11
  293. package/node_modules/util-deprecate/History.md +0 -16
  294. package/node_modules/util-deprecate/LICENSE +0 -24
  295. package/node_modules/util-deprecate/README.md +0 -53
  296. package/node_modules/util-deprecate/browser.js +0 -67
  297. package/node_modules/util-deprecate/node.js +0 -6
  298. package/node_modules/util-deprecate/package.json +0 -27
  299. package/test-startup.sh +0 -14
@@ -1,255 +1,287 @@
1
- var constants = require('fs-constants')
2
- var eos = require('end-of-stream')
3
- var inherits = require('inherits')
4
- var alloc = Buffer.alloc
1
+ const { Readable, Writable, getStreamError } = require('streamx')
2
+ const b4a = require('b4a')
5
3
 
6
- var Readable = require('readable-stream').Readable
7
- var Writable = require('readable-stream').Writable
8
- var StringDecoder = require('string_decoder').StringDecoder
4
+ const constants = require('./constants')
5
+ const headers = require('./headers')
9
6
 
10
- var headers = require('./headers')
7
+ const DMODE = 0o755
8
+ const FMODE = 0o644
11
9
 
12
- var DMODE = parseInt('755', 8)
13
- var FMODE = parseInt('644', 8)
10
+ const END_OF_TAR = b4a.alloc(1024)
14
11
 
15
- var END_OF_TAR = alloc(1024)
12
+ class Sink extends Writable {
13
+ constructor (pack, header, callback) {
14
+ super({ mapWritable, eagerOpen: true })
16
15
 
17
- var noop = function () {}
16
+ this.written = 0
17
+ this.header = header
18
18
 
19
- var overflow = function (self, size) {
20
- size &= 511
21
- if (size) self.push(END_OF_TAR.slice(0, 512 - size))
22
- }
19
+ this._callback = callback
20
+ this._linkname = null
21
+ this._isLinkname = header.type === 'symlink' && !header.linkname
22
+ this._isVoid = header.type !== 'file' && header.type !== 'contiguous-file'
23
+ this._finished = false
24
+ this._pack = pack
25
+ this._openCallback = null
23
26
 
24
- function modeToType (mode) {
25
- switch (mode & constants.S_IFMT) {
26
- case constants.S_IFBLK: return 'block-device'
27
- case constants.S_IFCHR: return 'character-device'
28
- case constants.S_IFDIR: return 'directory'
29
- case constants.S_IFIFO: return 'fifo'
30
- case constants.S_IFLNK: return 'symlink'
27
+ if (this._pack._stream === null) this._pack._stream = this
28
+ else this._pack._pending.push(this)
31
29
  }
32
30
 
33
- return 'file'
34
- }
31
+ _open (cb) {
32
+ this._openCallback = cb
33
+ if (this._pack._stream === this) this._continueOpen()
34
+ }
35
35
 
36
- var Sink = function (to) {
37
- Writable.call(this)
38
- this.written = 0
39
- this._to = to
40
- this._destroyed = false
41
- }
36
+ _continuePack (err) {
37
+ if (this._callback === null) return
42
38
 
43
- inherits(Sink, Writable)
39
+ const callback = this._callback
40
+ this._callback = null
44
41
 
45
- Sink.prototype._write = function (data, enc, cb) {
46
- this.written += data.length
47
- if (this._to.push(data)) return cb()
48
- this._to._drain = cb
49
- }
42
+ callback(err)
43
+ }
50
44
 
51
- Sink.prototype.destroy = function () {
52
- if (this._destroyed) return
53
- this._destroyed = true
54
- this.emit('close')
55
- }
45
+ _continueOpen () {
46
+ if (this._pack._stream === null) this._pack._stream = this
56
47
 
57
- var LinkSink = function () {
58
- Writable.call(this)
59
- this.linkname = ''
60
- this._decoder = new StringDecoder('utf-8')
61
- this._destroyed = false
62
- }
48
+ const cb = this._openCallback
49
+ this._openCallback = null
50
+ if (cb === null) return
63
51
 
64
- inherits(LinkSink, Writable)
52
+ if (this._pack.destroying) return cb(new Error('pack stream destroyed'))
53
+ if (this._pack._finalized) return cb(new Error('pack stream is already finalized'))
65
54
 
66
- LinkSink.prototype._write = function (data, enc, cb) {
67
- this.linkname += this._decoder.write(data)
68
- cb()
69
- }
55
+ this._pack._stream = this
70
56
 
71
- LinkSink.prototype.destroy = function () {
72
- if (this._destroyed) return
73
- this._destroyed = true
74
- this.emit('close')
75
- }
57
+ if (!this._isLinkname) {
58
+ this._pack._encode(this.header)
59
+ }
76
60
 
77
- var Void = function () {
78
- Writable.call(this)
79
- this._destroyed = false
80
- }
61
+ if (this._isVoid) {
62
+ this._finish()
63
+ this._continuePack(null)
64
+ }
81
65
 
82
- inherits(Void, Writable)
66
+ cb(null)
67
+ }
83
68
 
84
- Void.prototype._write = function (data, enc, cb) {
85
- cb(new Error('No body allowed for this entry'))
86
- }
69
+ _write (data, cb) {
70
+ if (this._isLinkname) {
71
+ this._linkname = this._linkname ? b4a.concat([this._linkname, data]) : data
72
+ return cb(null)
73
+ }
87
74
 
88
- Void.prototype.destroy = function () {
89
- if (this._destroyed) return
90
- this._destroyed = true
91
- this.emit('close')
92
- }
75
+ if (this._isVoid) {
76
+ if (data.byteLength > 0) {
77
+ return cb(new Error('No body allowed for this entry'))
78
+ }
79
+ return cb()
80
+ }
93
81
 
94
- var Pack = function (opts) {
95
- if (!(this instanceof Pack)) return new Pack(opts)
96
- Readable.call(this, opts)
82
+ this.written += data.byteLength
83
+ if (this._pack.push(data)) return cb()
84
+ this._pack._drain = cb
85
+ }
97
86
 
98
- this._drain = noop
99
- this._finalized = false
100
- this._finalizing = false
101
- this._destroyed = false
102
- this._stream = null
103
- }
87
+ _finish () {
88
+ if (this._finished) return
89
+ this._finished = true
104
90
 
105
- inherits(Pack, Readable)
91
+ if (this._isLinkname) {
92
+ this.header.linkname = this._linkname ? b4a.toString(this._linkname, 'utf-8') : ''
93
+ this._pack._encode(this.header)
94
+ }
106
95
 
107
- Pack.prototype.entry = function (header, buffer, callback) {
108
- if (this._stream) throw new Error('already piping an entry')
109
- if (this._finalized || this._destroyed) return
96
+ overflow(this._pack, this.header.size)
110
97
 
111
- if (typeof buffer === 'function') {
112
- callback = buffer
113
- buffer = null
98
+ this._pack._done(this)
114
99
  }
115
100
 
116
- if (!callback) callback = noop
101
+ _final (cb) {
102
+ if (this.written !== this.header.size) { // corrupting tar
103
+ return cb(new Error('Size mismatch'))
104
+ }
117
105
 
118
- var self = this
106
+ this._finish()
107
+ cb(null)
108
+ }
119
109
 
120
- if (!header.size || header.type === 'symlink') header.size = 0
121
- if (!header.type) header.type = modeToType(header.mode)
122
- if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE
123
- if (!header.uid) header.uid = 0
124
- if (!header.gid) header.gid = 0
125
- if (!header.mtime) header.mtime = new Date()
110
+ _getError () {
111
+ return getStreamError(this) || new Error('tar entry destroyed')
112
+ }
126
113
 
127
- if (typeof buffer === 'string') buffer = Buffer.from(buffer)
128
- if (Buffer.isBuffer(buffer)) {
129
- header.size = buffer.length
130
- this._encode(header)
131
- var ok = this.push(buffer)
132
- overflow(self, header.size)
133
- if (ok) process.nextTick(callback)
134
- else this._drain = callback
135
- return new Void()
114
+ _predestroy () {
115
+ this._pack.destroy(this._getError())
136
116
  }
137
117
 
138
- if (header.type === 'symlink' && !header.linkname) {
139
- var linkSink = new LinkSink()
140
- eos(linkSink, function (err) {
141
- if (err) { // stream was closed
142
- self.destroy()
143
- return callback(err)
144
- }
118
+ _destroy (cb) {
119
+ this._pack._done(this)
145
120
 
146
- header.linkname = linkSink.linkname
147
- self._encode(header)
148
- callback()
149
- })
121
+ this._continuePack(this._finished ? null : this._getError())
150
122
 
151
- return linkSink
123
+ cb()
152
124
  }
125
+ }
153
126
 
154
- this._encode(header)
155
-
156
- if (header.type !== 'file' && header.type !== 'contiguous-file') {
157
- process.nextTick(callback)
158
- return new Void()
127
+ class Pack extends Readable {
128
+ constructor (opts) {
129
+ super(opts)
130
+ this._drain = noop
131
+ this._finalized = false
132
+ this._finalizing = false
133
+ this._pending = []
134
+ this._stream = null
159
135
  }
160
136
 
161
- var sink = new Sink(this)
137
+ entry (header, buffer, callback) {
138
+ if (this._finalized || this.destroying) throw new Error('already finalized or destroyed')
139
+
140
+ if (typeof buffer === 'function') {
141
+ callback = buffer
142
+ buffer = null
143
+ }
144
+
145
+ if (!callback) callback = noop
146
+
147
+ if (!header.size || header.type === 'symlink') header.size = 0
148
+ if (!header.type) header.type = modeToType(header.mode)
149
+ if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE
150
+ if (!header.uid) header.uid = 0
151
+ if (!header.gid) header.gid = 0
152
+ if (!header.mtime) header.mtime = new Date()
162
153
 
163
- this._stream = sink
154
+ if (typeof buffer === 'string') buffer = b4a.from(buffer)
164
155
 
165
- eos(sink, function (err) {
166
- self._stream = null
156
+ const sink = new Sink(this, header, callback)
167
157
 
168
- if (err) { // stream was closed
169
- self.destroy()
170
- return callback(err)
158
+ if (b4a.isBuffer(buffer)) {
159
+ header.size = buffer.byteLength
160
+ sink.write(buffer)
161
+ sink.end()
162
+ return sink
171
163
  }
172
164
 
173
- if (sink.written !== header.size) { // corrupting tar
174
- self.destroy()
175
- return callback(new Error('size mismatch'))
165
+ if (sink._isVoid) {
166
+ return sink
176
167
  }
177
168
 
178
- overflow(self, header.size)
179
- if (self._finalizing) self.finalize()
180
- callback()
181
- })
169
+ return sink
170
+ }
182
171
 
183
- return sink
184
- }
172
+ finalize () {
173
+ if (this._stream || this._pending.length > 0) {
174
+ this._finalizing = true
175
+ return
176
+ }
177
+
178
+ if (this._finalized) return
179
+ this._finalized = true
185
180
 
186
- Pack.prototype.finalize = function () {
187
- if (this._stream) {
188
- this._finalizing = true
189
- return
181
+ this.push(END_OF_TAR)
182
+ this.push(null)
190
183
  }
191
184
 
192
- if (this._finalized) return
193
- this._finalized = true
194
- this.push(END_OF_TAR)
195
- this.push(null)
196
- }
185
+ _done (stream) {
186
+ if (stream !== this._stream) return
197
187
 
198
- Pack.prototype.destroy = function (err) {
199
- if (this._destroyed) return
200
- this._destroyed = true
188
+ this._stream = null
201
189
 
202
- if (err) this.emit('error', err)
203
- this.emit('close')
204
- if (this._stream && this._stream.destroy) this._stream.destroy()
205
- }
190
+ if (this._finalizing) this.finalize()
191
+ if (this._pending.length) this._pending.shift()._continueOpen()
192
+ }
206
193
 
207
- Pack.prototype._encode = function (header) {
208
- if (!header.pax) {
209
- var buf = headers.encode(header)
210
- if (buf) {
211
- this.push(buf)
212
- return
194
+ _encode (header) {
195
+ if (!header.pax) {
196
+ const buf = headers.encode(header)
197
+ if (buf) {
198
+ this.push(buf)
199
+ return
200
+ }
201
+ }
202
+ this._encodePax(header)
203
+ }
204
+
205
+ _encodePax (header) {
206
+ const paxHeader = headers.encodePax({
207
+ name: header.name,
208
+ linkname: header.linkname,
209
+ pax: header.pax
210
+ })
211
+
212
+ const newHeader = {
213
+ name: 'PaxHeader',
214
+ mode: header.mode,
215
+ uid: header.uid,
216
+ gid: header.gid,
217
+ size: paxHeader.byteLength,
218
+ mtime: header.mtime,
219
+ type: 'pax-header',
220
+ linkname: header.linkname && 'PaxHeader',
221
+ uname: header.uname,
222
+ gname: header.gname,
223
+ devmajor: header.devmajor,
224
+ devminor: header.devminor
225
+ }
226
+
227
+ this.push(headers.encode(newHeader))
228
+ this.push(paxHeader)
229
+ overflow(this, paxHeader.byteLength)
230
+
231
+ newHeader.size = header.size
232
+ newHeader.type = header.type
233
+ this.push(headers.encode(newHeader))
234
+ }
235
+
236
+ _doDrain () {
237
+ const drain = this._drain
238
+ this._drain = noop
239
+ drain()
240
+ }
241
+
242
+ _predestroy () {
243
+ const err = getStreamError(this)
244
+
245
+ if (this._stream) this._stream.destroy(err)
246
+
247
+ while (this._pending.length) {
248
+ const stream = this._pending.shift()
249
+ stream.destroy(err)
250
+ stream._continueOpen()
213
251
  }
252
+
253
+ this._doDrain()
254
+ }
255
+
256
+ _read (cb) {
257
+ this._doDrain()
258
+ cb()
214
259
  }
215
- this._encodePax(header)
216
260
  }
217
261
 
218
- Pack.prototype._encodePax = function (header) {
219
- var paxHeader = headers.encodePax({
220
- name: header.name,
221
- linkname: header.linkname,
222
- pax: header.pax
223
- })
224
-
225
- var newHeader = {
226
- name: 'PaxHeader',
227
- mode: header.mode,
228
- uid: header.uid,
229
- gid: header.gid,
230
- size: paxHeader.length,
231
- mtime: header.mtime,
232
- type: 'pax-header',
233
- linkname: header.linkname && 'PaxHeader',
234
- uname: header.uname,
235
- gname: header.gname,
236
- devmajor: header.devmajor,
237
- devminor: header.devminor
238
- }
239
-
240
- this.push(headers.encode(newHeader))
241
- this.push(paxHeader)
242
- overflow(this, paxHeader.length)
243
-
244
- newHeader.size = header.size
245
- newHeader.type = header.type
246
- this.push(headers.encode(newHeader))
262
+ module.exports = function pack (opts) {
263
+ return new Pack(opts)
247
264
  }
248
265
 
249
- Pack.prototype._read = function (n) {
250
- var drain = this._drain
251
- this._drain = noop
252
- drain()
266
+ function modeToType (mode) {
267
+ switch (mode & constants.S_IFMT) {
268
+ case constants.S_IFBLK: return 'block-device'
269
+ case constants.S_IFCHR: return 'character-device'
270
+ case constants.S_IFDIR: return 'directory'
271
+ case constants.S_IFIFO: return 'fifo'
272
+ case constants.S_IFLNK: return 'symlink'
273
+ }
274
+
275
+ return 'file'
253
276
  }
254
277
 
255
- module.exports = Pack
278
+ function noop () {}
279
+
280
+ function overflow (self, size) {
281
+ size &= 511
282
+ if (size) self.push(END_OF_TAR.subarray(0, 512 - size))
283
+ }
284
+
285
+ function mapWritable (buf) {
286
+ return b4a.isBuffer(buf) ? buf : b4a.from(buf)
287
+ }
@@ -1,58 +1,35 @@
1
1
  {
2
2
  "name": "tar-stream",
3
- "version": "2.2.0",
4
- "description": "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.",
5
- "author": "Mathias Buus <mathiasbuus@gmail.com>",
6
- "dependencies": {
7
- "bl": "^4.0.3",
8
- "end-of-stream": "^1.4.1",
9
- "fs-constants": "^1.0.0",
10
- "inherits": "^2.0.3",
11
- "readable-stream": "^3.1.1"
12
- },
13
- "devDependencies": {
14
- "concat-stream": "^2.0.0",
15
- "standard": "^12.0.1",
16
- "tape": "^4.9.2"
17
- },
18
- "scripts": {
19
- "test": "standard && tape test/extract.js test/pack.js",
20
- "test-all": "standard && tape test/*.js"
21
- },
22
- "keywords": [
23
- "tar",
24
- "tarball",
25
- "parse",
26
- "parser",
27
- "generate",
28
- "generator",
29
- "stream",
30
- "stream2",
31
- "streams",
32
- "streams2",
33
- "streaming",
34
- "pack",
35
- "extract",
36
- "modify"
37
- ],
38
- "bugs": {
39
- "url": "https://github.com/mafintosh/tar-stream/issues"
40
- },
41
- "homepage": "https://github.com/mafintosh/tar-stream",
3
+ "version": "3.1.7",
4
+ "description": "tar-stream is a streaming tar parser and generator and nothing else. It operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.",
42
5
  "main": "index.js",
43
6
  "files": [
44
- "*.js",
45
- "LICENSE"
7
+ "*.js"
46
8
  ],
47
- "directories": {
48
- "test": "test"
9
+ "browser": {
10
+ "fs": false
11
+ },
12
+ "scripts": {
13
+ "test": "standard && brittle test/*.js"
49
14
  },
50
- "license": "MIT",
51
15
  "repository": {
52
16
  "type": "git",
53
17
  "url": "git+https://github.com/mafintosh/tar-stream.git"
54
18
  },
55
- "engines": {
56
- "node": ">=6"
19
+ "author": "Mathias Buus <mathiasbuus@gmail.com>",
20
+ "license": "MIT",
21
+ "bugs": {
22
+ "url": "https://github.com/mafintosh/tar-stream/issues"
23
+ },
24
+ "homepage": "https://github.com/mafintosh/tar-stream",
25
+ "dependencies": {
26
+ "b4a": "^1.6.4",
27
+ "fast-fifo": "^1.2.0",
28
+ "streamx": "^2.15.0"
29
+ },
30
+ "devDependencies": {
31
+ "brittle": "^3.3.2",
32
+ "concat-stream": "^2.0.0",
33
+ "standard": "^17.0.1"
57
34
  }
58
35
  }