@wecode-ai/weibo-openclaw-plugin 2.1.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/README.md +28 -1
  2. package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  3. package/node_modules/@isaacs/fs-minipass/README.md +71 -0
  4. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  5. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  6. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  7. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  8. package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  9. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  10. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  11. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  12. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  13. package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  14. package/node_modules/@isaacs/fs-minipass/package.json +72 -0
  15. package/node_modules/chownr/LICENSE.md +63 -0
  16. package/node_modules/chownr/README.md +3 -0
  17. package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  18. package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  19. package/node_modules/chownr/dist/commonjs/index.js +93 -0
  20. package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  21. package/node_modules/chownr/dist/commonjs/package.json +3 -0
  22. package/node_modules/chownr/dist/esm/index.d.ts +3 -0
  23. package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  24. package/node_modules/chownr/dist/esm/index.js +85 -0
  25. package/node_modules/chownr/dist/esm/index.js.map +1 -0
  26. package/node_modules/chownr/dist/esm/package.json +3 -0
  27. package/node_modules/chownr/package.json +69 -0
  28. package/node_modules/minipass/LICENSE.md +55 -0
  29. package/node_modules/minipass/README.md +825 -0
  30. package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
  31. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  32. package/node_modules/minipass/dist/commonjs/index.js +1038 -0
  33. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  34. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  35. package/node_modules/minipass/dist/esm/index.d.ts +545 -0
  36. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  37. package/node_modules/minipass/dist/esm/index.js +1020 -0
  38. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  39. package/node_modules/minipass/dist/esm/package.json +3 -0
  40. package/node_modules/minipass/package.json +77 -0
  41. package/node_modules/minizlib/LICENSE +26 -0
  42. package/node_modules/minizlib/README.md +64 -0
  43. package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  44. package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  45. package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  46. package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  47. package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  48. package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  49. package/node_modules/minizlib/dist/commonjs/index.js +416 -0
  50. package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  51. package/node_modules/minizlib/dist/commonjs/package.json +3 -0
  52. package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  53. package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  54. package/node_modules/minizlib/dist/esm/constants.js +117 -0
  55. package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  56. package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  57. package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  58. package/node_modules/minizlib/dist/esm/index.js +363 -0
  59. package/node_modules/minizlib/dist/esm/index.js.map +1 -0
  60. package/node_modules/minizlib/dist/esm/package.json +3 -0
  61. package/node_modules/minizlib/package.json +80 -0
  62. package/node_modules/tar/LICENSE.md +55 -0
  63. package/node_modules/tar/README.md +1224 -0
  64. package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  65. package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  66. package/node_modules/tar/dist/commonjs/create.js +82 -0
  67. package/node_modules/tar/dist/commonjs/create.js.map +1 -0
  68. package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  69. package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  70. package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  71. package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  72. package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  73. package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  74. package/node_modules/tar/dist/commonjs/extract.js +88 -0
  75. package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  76. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  77. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  78. package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  79. package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  80. package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  81. package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  82. package/node_modules/tar/dist/commonjs/header.js +312 -0
  83. package/node_modules/tar/dist/commonjs/header.js.map +1 -0
  84. package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  85. package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  86. package/node_modules/tar/dist/commonjs/index.js +64 -0
  87. package/node_modules/tar/dist/commonjs/index.js.map +1 -0
  88. package/node_modules/tar/dist/commonjs/index.min.js +4 -0
  89. package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  90. package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  91. package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  92. package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  93. package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  94. package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  95. package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  96. package/node_modules/tar/dist/commonjs/list.js +145 -0
  97. package/node_modules/tar/dist/commonjs/list.js.map +1 -0
  98. package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  99. package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  100. package/node_modules/tar/dist/commonjs/make-command.js +52 -0
  101. package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  102. package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  103. package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  104. package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  105. package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  106. package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  107. package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  108. package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  109. package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  110. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  111. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  112. package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  113. package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  114. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  115. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  116. package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  117. package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  118. package/node_modules/tar/dist/commonjs/options.d.ts +596 -0
  119. package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  120. package/node_modules/tar/dist/commonjs/options.js +66 -0
  121. package/node_modules/tar/dist/commonjs/options.js.map +1 -0
  122. package/node_modules/tar/dist/commonjs/pack.d.ts +102 -0
  123. package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  124. package/node_modules/tar/dist/commonjs/pack.js +511 -0
  125. package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  126. package/node_modules/tar/dist/commonjs/package.json +3 -0
  127. package/node_modules/tar/dist/commonjs/parse.d.ts +85 -0
  128. package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  129. package/node_modules/tar/dist/commonjs/parse.js +610 -0
  130. package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  131. package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  132. package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  133. package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  134. package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  135. package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  136. package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  137. package/node_modules/tar/dist/commonjs/pax.js +158 -0
  138. package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  139. package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  140. package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  141. package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  142. package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  143. package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  144. package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  145. package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  146. package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  147. package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  148. package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  149. package/node_modules/tar/dist/commonjs/replace.js +227 -0
  150. package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  151. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  152. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  153. package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  154. package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  155. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  156. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  157. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  158. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  159. package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  160. package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  161. package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  162. package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  163. package/node_modules/tar/dist/commonjs/types.d.ts +7 -0
  164. package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  165. package/node_modules/tar/dist/commonjs/types.js +50 -0
  166. package/node_modules/tar/dist/commonjs/types.js.map +1 -0
  167. package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  168. package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  169. package/node_modules/tar/dist/commonjs/unpack.js +932 -0
  170. package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  171. package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  172. package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  173. package/node_modules/tar/dist/commonjs/update.js +33 -0
  174. package/node_modules/tar/dist/commonjs/update.js.map +1 -0
  175. package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  176. package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  177. package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  178. package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  179. package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  180. package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  181. package/node_modules/tar/dist/commonjs/winchars.js +14 -0
  182. package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  183. package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  184. package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  185. package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  186. package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  187. package/node_modules/tar/dist/esm/create.d.ts +3 -0
  188. package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  189. package/node_modules/tar/dist/esm/create.js +76 -0
  190. package/node_modules/tar/dist/esm/create.js.map +1 -0
  191. package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  192. package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  193. package/node_modules/tar/dist/esm/cwd-error.js +14 -0
  194. package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  195. package/node_modules/tar/dist/esm/extract.d.ts +3 -0
  196. package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  197. package/node_modules/tar/dist/esm/extract.js +49 -0
  198. package/node_modules/tar/dist/esm/extract.js.map +1 -0
  199. package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  200. package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  201. package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  202. package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  203. package/node_modules/tar/dist/esm/header.d.ts +53 -0
  204. package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  205. package/node_modules/tar/dist/esm/header.js +275 -0
  206. package/node_modules/tar/dist/esm/header.js.map +1 -0
  207. package/node_modules/tar/dist/esm/index.d.ts +20 -0
  208. package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  209. package/node_modules/tar/dist/esm/index.js +20 -0
  210. package/node_modules/tar/dist/esm/index.js.map +1 -0
  211. package/node_modules/tar/dist/esm/index.min.js +4 -0
  212. package/node_modules/tar/dist/esm/index.min.js.map +7 -0
  213. package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  214. package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  215. package/node_modules/tar/dist/esm/large-numbers.js +94 -0
  216. package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  217. package/node_modules/tar/dist/esm/list.d.ts +7 -0
  218. package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  219. package/node_modules/tar/dist/esm/list.js +105 -0
  220. package/node_modules/tar/dist/esm/list.js.map +1 -0
  221. package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  222. package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  223. package/node_modules/tar/dist/esm/make-command.js +48 -0
  224. package/node_modules/tar/dist/esm/make-command.js.map +1 -0
  225. package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  226. package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  227. package/node_modules/tar/dist/esm/mkdir.js +179 -0
  228. package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  229. package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  230. package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  231. package/node_modules/tar/dist/esm/mode-fix.js +25 -0
  232. package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  233. package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  234. package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  235. package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  236. package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  237. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  238. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  239. package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  240. package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  241. package/node_modules/tar/dist/esm/options.d.ts +596 -0
  242. package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  243. package/node_modules/tar/dist/esm/options.js +54 -0
  244. package/node_modules/tar/dist/esm/options.js.map +1 -0
  245. package/node_modules/tar/dist/esm/pack.d.ts +102 -0
  246. package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  247. package/node_modules/tar/dist/esm/pack.js +469 -0
  248. package/node_modules/tar/dist/esm/pack.js.map +1 -0
  249. package/node_modules/tar/dist/esm/package.json +3 -0
  250. package/node_modules/tar/dist/esm/parse.d.ts +85 -0
  251. package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  252. package/node_modules/tar/dist/esm/parse.js +606 -0
  253. package/node_modules/tar/dist/esm/parse.js.map +1 -0
  254. package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  255. package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  256. package/node_modules/tar/dist/esm/path-reservations.js +166 -0
  257. package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  258. package/node_modules/tar/dist/esm/pax.d.ts +26 -0
  259. package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  260. package/node_modules/tar/dist/esm/pax.js +154 -0
  261. package/node_modules/tar/dist/esm/pax.js.map +1 -0
  262. package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  263. package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  264. package/node_modules/tar/dist/esm/process-umask.js +3 -0
  265. package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  266. package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  267. package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  268. package/node_modules/tar/dist/esm/read-entry.js +132 -0
  269. package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  270. package/node_modules/tar/dist/esm/replace.d.ts +2 -0
  271. package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  272. package/node_modules/tar/dist/esm/replace.js +221 -0
  273. package/node_modules/tar/dist/esm/replace.js.map +1 -0
  274. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  275. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  276. package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  277. package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  278. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  279. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  280. package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  281. package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  282. package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  283. package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  284. package/node_modules/tar/dist/esm/symlink-error.js +15 -0
  285. package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  286. package/node_modules/tar/dist/esm/types.d.ts +7 -0
  287. package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  288. package/node_modules/tar/dist/esm/types.js +45 -0
  289. package/node_modules/tar/dist/esm/types.js.map +1 -0
  290. package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  291. package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  292. package/node_modules/tar/dist/esm/unpack.js +891 -0
  293. package/node_modules/tar/dist/esm/unpack.js.map +1 -0
  294. package/node_modules/tar/dist/esm/update.d.ts +2 -0
  295. package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  296. package/node_modules/tar/dist/esm/update.js +30 -0
  297. package/node_modules/tar/dist/esm/update.js.map +1 -0
  298. package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  299. package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  300. package/node_modules/tar/dist/esm/warn-method.js +27 -0
  301. package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  302. package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  303. package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  304. package/node_modules/tar/dist/esm/winchars.js +9 -0
  305. package/node_modules/tar/dist/esm/winchars.js.map +1 -0
  306. package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  307. package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  308. package/node_modules/tar/dist/esm/write-entry.js +656 -0
  309. package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  310. package/node_modules/tar/package.json +297 -0
  311. package/node_modules/yallist/LICENSE.md +63 -0
  312. package/node_modules/yallist/README.md +205 -0
  313. package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  314. package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  315. package/node_modules/yallist/dist/commonjs/index.js +384 -0
  316. package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  317. package/node_modules/yallist/dist/commonjs/package.json +3 -0
  318. package/node_modules/yallist/dist/esm/index.d.ts +39 -0
  319. package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  320. package/node_modules/yallist/dist/esm/index.js +379 -0
  321. package/node_modules/yallist/dist/esm/index.js.map +1 -0
  322. package/node_modules/yallist/dist/esm/package.json +3 -0
  323. package/node_modules/yallist/package.json +68 -0
  324. package/package.json +3 -1
  325. package/skills/manifest.json +12 -0
  326. package/skills/weibo-cron/SKILL.md +115 -48
  327. package/skills/weibo-crowd/SKILL.md +187 -19
  328. package/skills/weibo-crowd/references/SILICON-TEAHOUSE-RULES.md +197 -63
  329. package/skills/weibo-crowd/scripts/weibo-crowd.js +105 -27
  330. package/skills/weibo-hot-search/SKILL.md +2 -0
  331. package/skills/weibo-pic/SKILL.md +266 -0
  332. package/skills/weibo-pic/scripts/weibo-pic.js +798 -0
  333. package/skills/weibo-search/SKILL.md +2 -0
  334. package/skills/weibo-status/SKILL.md +2 -0
  335. package/skills/weibo-token/SKILL.md +2 -0
  336. package/skills/weibo-video/SKILL.md +2 -0
  337. package/src/client.d.ts.map +1 -1
  338. package/src/client.js +3 -0
  339. package/src/client.js.map +1 -1
  340. package/src/skill-updater.d.ts +14 -0
  341. package/src/skill-updater.d.ts.map +1 -0
  342. package/src/skill-updater.js +240 -0
  343. package/src/skill-updater.js.map +1 -0
  344. package/src/token.d.ts +2 -0
  345. package/src/token.d.ts.map +1 -1
  346. package/src/token.js +1 -0
  347. package/src/token.js.map +1 -1
  348. package/src/weibo-hot-search.js +1 -1
  349. package/src/weibo-hot-search.js.map +1 -1
  350. package/src/weibo-search.js +1 -1
  351. package/src/weibo-search.js.map +1 -1
  352. package/src/weibo-status.js +1 -1
  353. package/src/weibo-status.js.map +1 -1
  354. package/src/weibo-token-tool.js +1 -1
  355. package/src/weibo-token-tool.js.map +1 -1
@@ -0,0 +1,132 @@
1
+ import { Minipass } from 'minipass';
2
+ import { normalizeWindowsPath } from './normalize-windows-path.js';
3
+ export class ReadEntry extends Minipass {
4
+ extended;
5
+ globalExtended;
6
+ header;
7
+ startBlockSize;
8
+ blockRemain;
9
+ remain;
10
+ type;
11
+ meta = false;
12
+ ignore = false;
13
+ path;
14
+ mode;
15
+ uid;
16
+ gid;
17
+ uname;
18
+ gname;
19
+ size = 0;
20
+ mtime;
21
+ atime;
22
+ ctime;
23
+ linkpath;
24
+ dev;
25
+ ino;
26
+ nlink;
27
+ invalid = false;
28
+ absolute;
29
+ unsupported = false;
30
+ constructor(header, ex, gex) {
31
+ super({});
32
+ // read entries always start life paused. this is to avoid the
33
+ // situation where Minipass's auto-ending empty streams results
34
+ // in an entry ending before we're ready for it.
35
+ this.pause();
36
+ this.extended = ex;
37
+ this.globalExtended = gex;
38
+ this.header = header;
39
+ /* c8 ignore start */
40
+ this.remain = header.size ?? 0;
41
+ /* c8 ignore stop */
42
+ this.startBlockSize = 512 * Math.ceil(this.remain / 512);
43
+ this.blockRemain = this.startBlockSize;
44
+ this.type = header.type;
45
+ switch (this.type) {
46
+ case 'File':
47
+ case 'OldFile':
48
+ case 'Link':
49
+ case 'SymbolicLink':
50
+ case 'CharacterDevice':
51
+ case 'BlockDevice':
52
+ case 'Directory':
53
+ case 'FIFO':
54
+ case 'ContiguousFile':
55
+ case 'GNUDumpDir':
56
+ break;
57
+ case 'NextFileHasLongLinkpath':
58
+ case 'NextFileHasLongPath':
59
+ case 'OldGnuLongPath':
60
+ case 'GlobalExtendedHeader':
61
+ case 'ExtendedHeader':
62
+ case 'OldExtendedHeader':
63
+ this.meta = true;
64
+ break;
65
+ // NOTE: gnutar and bsdtar treat unrecognized types as 'File'
66
+ // it may be worth doing the same, but with a warning.
67
+ default:
68
+ this.ignore = true;
69
+ }
70
+ /* c8 ignore start */
71
+ if (!header.path) {
72
+ throw new Error('no path provided for tar.ReadEntry');
73
+ }
74
+ /* c8 ignore stop */
75
+ this.path = normalizeWindowsPath(header.path);
76
+ this.mode = header.mode;
77
+ if (this.mode) {
78
+ this.mode = this.mode & 0o7777;
79
+ }
80
+ this.uid = header.uid;
81
+ this.gid = header.gid;
82
+ this.uname = header.uname;
83
+ this.gname = header.gname;
84
+ this.size = this.remain;
85
+ this.mtime = header.mtime;
86
+ this.atime = header.atime;
87
+ this.ctime = header.ctime;
88
+ /* c8 ignore start */
89
+ this.linkpath =
90
+ header.linkpath ? normalizeWindowsPath(header.linkpath) : undefined;
91
+ /* c8 ignore stop */
92
+ this.uname = header.uname;
93
+ this.gname = header.gname;
94
+ if (ex) {
95
+ this.#slurp(ex);
96
+ }
97
+ if (gex) {
98
+ this.#slurp(gex, true);
99
+ }
100
+ }
101
+ write(data) {
102
+ const writeLen = data.length;
103
+ if (writeLen > this.blockRemain) {
104
+ throw new Error('writing more to entry than is appropriate');
105
+ }
106
+ const r = this.remain;
107
+ const br = this.blockRemain;
108
+ this.remain = Math.max(0, r - writeLen);
109
+ this.blockRemain = Math.max(0, br - writeLen);
110
+ if (this.ignore) {
111
+ return true;
112
+ }
113
+ if (r >= writeLen) {
114
+ return super.write(data);
115
+ }
116
+ // r < writeLen
117
+ return super.write(data.subarray(0, r));
118
+ }
119
+ #slurp(ex, gex = false) {
120
+ if (ex.path)
121
+ ex.path = normalizeWindowsPath(ex.path);
122
+ if (ex.linkpath)
123
+ ex.linkpath = normalizeWindowsPath(ex.linkpath);
124
+ Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
125
+ // we slurp in everything except for the path attribute in
126
+ // a global extended header, because that's weird. Also, any
127
+ // null/undefined values are ignored.
128
+ return !(v === null || v === undefined || (k === 'path' && gex));
129
+ })));
130
+ }
131
+ }
132
+ //# sourceMappingURL=read-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-entry.js","sourceRoot":"","sources":["../../src/read-entry.ts"],"names":[],"mappings":"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","sourcesContent":["import { Minipass } from 'minipass'\nimport type { Header } from './header.js'\nimport { normalizeWindowsPath } from './normalize-windows-path.js'\nimport type { Pax } from './pax.js'\nimport type { EntryTypeName } from './types.js'\n\nexport class ReadEntry extends Minipass<Buffer, Buffer> {\n extended?: Pax\n globalExtended?: Pax\n header: Header\n startBlockSize: number\n blockRemain: number\n remain: number\n type: EntryTypeName\n meta: boolean = false\n ignore: boolean = false\n path: string\n mode?: number\n uid?: number\n gid?: number\n uname?: string\n gname?: string\n size: number = 0\n mtime?: Date\n atime?: Date\n ctime?: Date\n linkpath?: string\n\n dev?: number\n ino?: number\n nlink?: number\n invalid: boolean = false\n absolute?: string\n unsupported: boolean = false\n\n constructor(header: Header, ex?: Pax, gex?: Pax) {\n super({})\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n /* c8 ignore start */\n this.remain = header.size ?? 0\n /* c8 ignore stop */\n this.startBlockSize = 512 * Math.ceil(this.remain / 512)\n this.blockRemain = this.startBlockSize\n this.type = header.type\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n /* c8 ignore start */\n if (!header.path) {\n throw new Error('no path provided for tar.ReadEntry')\n }\n /* c8 ignore stop */\n\n this.path = normalizeWindowsPath(header.path) as string\n this.mode = header.mode\n if (this.mode) {\n this.mode = this.mode & 0o7777\n }\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = this.remain\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n /* c8 ignore start */\n this.linkpath =\n header.linkpath ? normalizeWindowsPath(header.linkpath) : undefined\n /* c8 ignore stop */\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex) {\n this.#slurp(ex)\n }\n if (gex) {\n this.#slurp(gex, true)\n }\n }\n\n write(data: Buffer) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore) {\n return true\n }\n\n if (r >= writeLen) {\n return super.write(data)\n }\n\n // r < writeLen\n return super.write(data.subarray(0, r))\n }\n\n #slurp(ex: Pax, gex: boolean = false) {\n if (ex.path) ex.path = normalizeWindowsPath(ex.path)\n if (ex.linkpath) ex.linkpath = normalizeWindowsPath(ex.linkpath)\n Object.assign(\n this,\n Object.fromEntries(\n Object.entries(ex).filter(([k, v]) => {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird. Also, any\n // null/undefined values are ignored.\n return !(v === null || v === undefined || (k === 'path' && gex))\n }),\n ),\n )\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const replace: import("./make-command.js").TarCommand<never, never>;
2
+ //# sourceMappingURL=replace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace.d.ts","sourceRoot":"","sources":["../../src/replace.ts"],"names":[],"mappings":"AAuPA,eAAO,MAAM,OAAO,sDA8BnB,CAAA"}
@@ -0,0 +1,221 @@
1
+ // tar -r
2
+ import { WriteStream, WriteStreamSync } from '@isaacs/fs-minipass';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { Header } from './header.js';
6
+ import { list } from './list.js';
7
+ import { makeCommand } from './make-command.js';
8
+ import { isFile } from './options.js';
9
+ import { Pack, PackSync } from './pack.js';
10
+ // starting at the head of the file, read a Header
11
+ // If the checksum is invalid, that's our position to start writing
12
+ // If it is, jump forward by the specified size (round up to 512)
13
+ // and try again.
14
+ // Write the new Pack stream starting there.
15
+ const replaceSync = (opt, files) => {
16
+ const p = new PackSync(opt);
17
+ let threw = true;
18
+ let fd;
19
+ let position;
20
+ try {
21
+ try {
22
+ fd = fs.openSync(opt.file, 'r+');
23
+ }
24
+ catch (er) {
25
+ if (er?.code === 'ENOENT') {
26
+ fd = fs.openSync(opt.file, 'w+');
27
+ }
28
+ else {
29
+ throw er;
30
+ }
31
+ }
32
+ const st = fs.fstatSync(fd);
33
+ const headBuf = Buffer.alloc(512);
34
+ POSITION: for (position = 0; position < st.size; position += 512) {
35
+ for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
36
+ bytes = fs.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos);
37
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
38
+ throw new Error('cannot append to compressed archives');
39
+ }
40
+ if (!bytes) {
41
+ break POSITION;
42
+ }
43
+ }
44
+ const h = new Header(headBuf);
45
+ if (!h.cksumValid) {
46
+ break;
47
+ }
48
+ const entryBlockSize = 512 * Math.ceil((h.size || 0) / 512);
49
+ if (position + entryBlockSize + 512 > st.size) {
50
+ break;
51
+ }
52
+ // the 512 for the header we just parsed will be added as well
53
+ // also jump ahead all the blocks for the body
54
+ position += entryBlockSize;
55
+ if (opt.mtimeCache && h.mtime) {
56
+ opt.mtimeCache.set(String(h.path), h.mtime);
57
+ }
58
+ }
59
+ threw = false;
60
+ streamSync(opt, p, position, fd, files);
61
+ }
62
+ finally {
63
+ if (threw) {
64
+ try {
65
+ fs.closeSync(fd);
66
+ }
67
+ catch { }
68
+ }
69
+ }
70
+ };
71
+ const streamSync = (opt, p, position, fd, files) => {
72
+ const stream = new WriteStreamSync(opt.file, {
73
+ fd: fd,
74
+ start: position,
75
+ });
76
+ p.pipe(stream);
77
+ addFilesSync(p, files);
78
+ };
79
+ const replaceAsync = (opt, files) => {
80
+ files = Array.from(files);
81
+ const p = new Pack(opt);
82
+ const getPos = (fd, size, cb_) => {
83
+ const cb = (er, pos) => {
84
+ if (er) {
85
+ fs.close(fd, _ => cb_(er));
86
+ }
87
+ else {
88
+ cb_(null, pos);
89
+ }
90
+ };
91
+ let position = 0;
92
+ if (size === 0) {
93
+ return cb(null, 0);
94
+ }
95
+ let bufPos = 0;
96
+ const headBuf = Buffer.alloc(512);
97
+ const onread = (er, bytes) => {
98
+ if (er || bytes === undefined) {
99
+ return cb(er);
100
+ }
101
+ bufPos += bytes;
102
+ if (bufPos < 512 && bytes) {
103
+ return fs.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread);
104
+ }
105
+ if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {
106
+ return cb(new Error('cannot append to compressed archives'));
107
+ }
108
+ // truncated header
109
+ if (bufPos < 512) {
110
+ return cb(null, position);
111
+ }
112
+ const h = new Header(headBuf);
113
+ if (!h.cksumValid) {
114
+ return cb(null, position);
115
+ }
116
+ /* c8 ignore next */
117
+ const entryBlockSize = 512 * Math.ceil((h.size ?? 0) / 512);
118
+ if (position + entryBlockSize + 512 > size) {
119
+ return cb(null, position);
120
+ }
121
+ position += entryBlockSize + 512;
122
+ if (position >= size) {
123
+ return cb(null, position);
124
+ }
125
+ if (opt.mtimeCache && h.mtime) {
126
+ opt.mtimeCache.set(String(h.path), h.mtime);
127
+ }
128
+ bufPos = 0;
129
+ fs.read(fd, headBuf, 0, 512, position, onread);
130
+ };
131
+ fs.read(fd, headBuf, 0, 512, position, onread);
132
+ };
133
+ const promise = new Promise((resolve, reject) => {
134
+ p.on('error', reject);
135
+ let flag = 'r+';
136
+ const onopen = (er, fd) => {
137
+ if (er && er.code === 'ENOENT' && flag === 'r+') {
138
+ flag = 'w+';
139
+ return fs.open(opt.file, flag, onopen);
140
+ }
141
+ if (er || !fd) {
142
+ return reject(er);
143
+ }
144
+ fs.fstat(fd, (er, st) => {
145
+ if (er) {
146
+ return fs.close(fd, () => reject(er));
147
+ }
148
+ getPos(fd, st.size, (er, position) => {
149
+ if (er) {
150
+ return reject(er);
151
+ }
152
+ const stream = new WriteStream(opt.file, {
153
+ fd: fd,
154
+ start: position,
155
+ });
156
+ p.pipe(stream);
157
+ stream.on('error', reject);
158
+ stream.on('close', resolve);
159
+ addFilesAsync(p, files);
160
+ });
161
+ });
162
+ };
163
+ fs.open(opt.file, flag, onopen);
164
+ });
165
+ return promise;
166
+ };
167
+ const addFilesSync = (p, files) => {
168
+ files.forEach(file => {
169
+ if (file.charAt(0) === '@') {
170
+ list({
171
+ file: path.resolve(p.cwd, file.slice(1)),
172
+ sync: true,
173
+ noResume: true,
174
+ onReadEntry: entry => p.add(entry),
175
+ });
176
+ }
177
+ else {
178
+ p.add(file);
179
+ }
180
+ });
181
+ p.end();
182
+ };
183
+ const addFilesAsync = async (p, files) => {
184
+ for (const file of files) {
185
+ if (file.charAt(0) === '@') {
186
+ await list({
187
+ file: path.resolve(String(p.cwd), file.slice(1)),
188
+ noResume: true,
189
+ onReadEntry: entry => p.add(entry),
190
+ });
191
+ }
192
+ else {
193
+ p.add(file);
194
+ }
195
+ }
196
+ p.end();
197
+ };
198
+ export const replace = makeCommand(replaceSync, replaceAsync,
199
+ /* c8 ignore start */
200
+ () => {
201
+ throw new TypeError('file is required');
202
+ }, () => {
203
+ throw new TypeError('file is required');
204
+ },
205
+ /* c8 ignore stop */
206
+ (opt, entries) => {
207
+ if (!isFile(opt)) {
208
+ throw new TypeError('file is required');
209
+ }
210
+ if (opt.gzip ||
211
+ opt.brotli ||
212
+ opt.zstd ||
213
+ opt.file.endsWith('.br') ||
214
+ opt.file.endsWith('.tbr')) {
215
+ throw new TypeError('cannot append to compressed archives');
216
+ }
217
+ if (!entries?.length) {
218
+ throw new TypeError('no paths specified to add/replace');
219
+ }
220
+ });
221
+ //# sourceMappingURL=replace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace.js","sourceRoot":"","sources":["../../src/replace.ts"],"names":[],"mappings":"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","sourcesContent":["// tar -r\nimport { WriteStream, WriteStreamSync } from '@isaacs/fs-minipass'\nimport type { Minipass } from 'minipass'\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport { Header } from './header.js'\nimport { list } from './list.js'\nimport { makeCommand } from './make-command.js'\nimport type { TarOptionsFile, TarOptionsSyncFile } from './options.js'\nimport { isFile } from './options.js'\nimport { Pack, PackSync } from './pack.js'\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst replaceSync = (opt: TarOptionsSyncFile, files: string[]) => {\n const p = new PackSync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if ((er as NodeJS.ErrnoException)?.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd,\n headBuf,\n bufPos,\n headBuf.length - bufPos,\n position + bufPos,\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil((h.size || 0) / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache && h.mtime) {\n opt.mtimeCache.set(String(h.path), h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd as number)\n } catch {}\n }\n }\n}\n\nconst streamSync = (\n opt: TarOptionsSyncFile,\n p: Pack,\n position: number,\n fd: number,\n files: string[],\n) => {\n const stream = new WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream as unknown as Minipass.Writable)\n addFilesSync(p, files)\n}\n\nconst replaceAsync = (\n opt: TarOptionsFile,\n files: string[],\n): Promise<void> => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (\n fd: number,\n size: number,\n cb_: (er?: null | Error, pos?: number) => void,\n ) => {\n const cb = (er?: Error | null, pos?: number) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er?: null | Error, bytes?: number): void => {\n if (er || bytes === undefined) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd,\n headBuf,\n bufPos,\n headBuf.length - bufPos,\n position + bufPos,\n onread,\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n /* c8 ignore next */\n const entryBlockSize = 512 * Math.ceil((h.size ?? 0) / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache && h.mtime) {\n opt.mtimeCache.set(String(h.path), h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise<void>((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er?: NodeJS.ErrnoException | null, fd?: number) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er || !fd) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream as unknown as Minipass.Writable)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return promise\n}\n\nconst addFilesSync = (p: Pack, files: string[]) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n list({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onReadEntry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = async (p: Pack, files: string[]): Promise<void> => {\n for (const file of files) {\n if (file.charAt(0) === '@') {\n await list({\n file: path.resolve(String(p.cwd), file.slice(1)),\n noResume: true,\n onReadEntry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nexport const replace = makeCommand(\n replaceSync,\n replaceAsync,\n /* c8 ignore start */\n (): never => {\n throw new TypeError('file is required')\n },\n (): never => {\n throw new TypeError('file is required')\n },\n /* c8 ignore stop */\n (opt, entries) => {\n if (!isFile(opt)) {\n throw new TypeError('file is required')\n }\n\n if (\n opt.gzip ||\n opt.brotli ||\n opt.zstd ||\n opt.file.endsWith('.br') ||\n opt.file.endsWith('.tbr')\n ) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!entries?.length) {\n throw new TypeError('no paths specified to add/replace')\n }\n },\n)\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const stripAbsolutePath: (path: string) => [string, string];
2
+ //# sourceMappingURL=strip-absolute-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-absolute-path.d.ts","sourceRoot":"","sources":["../../src/strip-absolute-path.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAgB/D,CAAA"}
@@ -0,0 +1,25 @@
1
+ // unix absolute paths are also absolute on win32, so we use this for both
2
+ import { win32 } from 'node:path';
3
+ const { isAbsolute, parse } = win32;
4
+ // returns [root, stripped]
5
+ // Note that windows will think that //x/y/z/a has a "root" of //x/y, and in
6
+ // those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /
7
+ // explicitly if it's the first character.
8
+ // drive-specific relative paths on Windows get their root stripped off even
9
+ // though they are not absolute, so `c:../foo` becomes ['c:', '../foo']
10
+ export const stripAbsolutePath = (path) => {
11
+ let r = '';
12
+ let parsed = parse(path);
13
+ while (isAbsolute(path) || parsed.root) {
14
+ // windows will think that //x/y/z has a "root" of //x/y/
15
+ // but strip the //?/C:/ off of //?/C:/path
16
+ const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ?
17
+ '/'
18
+ : parsed.root;
19
+ path = path.slice(root.length);
20
+ r += root;
21
+ parsed = parse(path);
22
+ }
23
+ return [r, path];
24
+ };
25
+ //# sourceMappingURL=strip-absolute-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-absolute-path.js","sourceRoot":"","sources":["../../src/strip-absolute-path.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;AAEnC,2BAA2B;AAC3B,4EAA4E;AAC5E,yEAAyE;AACzE,0CAA0C;AAC1C,4EAA4E;AAC5E,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAoB,EAAE;IAClE,IAAI,CAAC,GAAG,EAAE,CAAA;IAEV,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,yDAAyD;QACzD,2CAA2C;QAC3C,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YACrD,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;QACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC,IAAI,IAAI,CAAA;QACT,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAClB,CAAC,CAAA","sourcesContent":["// unix absolute paths are also absolute on win32, so we use this for both\nimport { win32 } from 'node:path'\nconst { isAbsolute, parse } = win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nexport const stripAbsolutePath = (path: string): [string, string] => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root =\n path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ?\n '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const stripTrailingSlashes: (str: string) => string;
2
+ //# sourceMappingURL=strip-trailing-slashes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-trailing-slashes.d.ts","sourceRoot":"","sources":["../../src/strip-trailing-slashes.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,WAQ/C,CAAA"}
@@ -0,0 +1,14 @@
1
+ // warning: extremely hot code path.
2
+ // This has been meticulously optimized for use
3
+ // within npm install on large package trees.
4
+ // Do not edit without careful benchmarking.
5
+ export const stripTrailingSlashes = (str) => {
6
+ let i = str.length - 1;
7
+ let slashesStart = -1;
8
+ while (i > -1 && str.charAt(i) === '/') {
9
+ slashesStart = i;
10
+ i--;
11
+ }
12
+ return slashesStart === -1 ? str : str.slice(0, slashesStart);
13
+ };
14
+ //# sourceMappingURL=strip-trailing-slashes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-trailing-slashes.js","sourceRoot":"","sources":["../../src/strip-trailing-slashes.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,+CAA+C;AAC/C,6CAA6C;AAC7C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAClD,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAA;IACrB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACvC,YAAY,GAAG,CAAC,CAAA;QAChB,CAAC,EAAE,CAAA;IACL,CAAC;IACD,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;AAC/D,CAAC,CAAA","sourcesContent":["// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nexport const stripTrailingSlashes = (str: string) => {\n let i = str.length - 1\n let slashesStart = -1\n while (i > -1 && str.charAt(i) === '/') {\n slashesStart = i\n i--\n }\n return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export declare class SymlinkError extends Error {
2
+ path: string;
3
+ symlink: string;
4
+ syscall: "symlink";
5
+ code: "TAR_SYMLINK_ERROR";
6
+ constructor(symlink: string, path: string);
7
+ get name(): string;
8
+ }
9
+ //# sourceMappingURL=symlink-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlink-error.d.ts","sourceRoot":"","sources":["../../src/symlink-error.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAG,SAAS,CAAS;IAC5B,IAAI,EAAG,mBAAmB,CAAS;gBACvB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKzC,IAAI,IAAI,WAEP;CACF"}
@@ -0,0 +1,15 @@
1
+ export class SymlinkError extends Error {
2
+ path;
3
+ symlink;
4
+ syscall = 'symlink';
5
+ code = 'TAR_SYMLINK_ERROR';
6
+ constructor(symlink, path) {
7
+ super('TAR_SYMLINK_ERROR: Cannot extract through symbolic link');
8
+ this.symlink = symlink;
9
+ this.path = path;
10
+ }
11
+ get name() {
12
+ return 'SymlinkError';
13
+ }
14
+ }
15
+ //# sourceMappingURL=symlink-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlink-error.js","sourceRoot":"","sources":["../../src/symlink-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,IAAI,CAAQ;IACZ,OAAO,CAAQ;IACf,OAAO,GAAG,SAAkB,CAAA;IAC5B,IAAI,GAAG,mBAA4B,CAAA;IACnC,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,yDAAyD,CAAC,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,cAAc,CAAA;IACvB,CAAC;CACF","sourcesContent":["export class SymlinkError extends Error {\n path: string\n symlink: string\n syscall = 'symlink' as const\n code = 'TAR_SYMLINK_ERROR' as const\n constructor(symlink: string, path: string) {\n super('TAR_SYMLINK_ERROR: Cannot extract through symbolic link')\n this.symlink = symlink\n this.path = path\n }\n get name() {\n return 'SymlinkError'\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const isCode: (c: string) => c is EntryTypeCode;
2
+ export declare const isName: (c: string) => c is EntryTypeName;
3
+ export type EntryTypeCode = '0' | '' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | 'g' | 'x' | 'A' | 'D' | 'I' | 'K' | 'L' | 'M' | 'N' | 'S' | 'V' | 'X';
4
+ export type EntryTypeName = 'File' | 'OldFile' | 'Link' | 'SymbolicLink' | 'CharacterDevice' | 'BlockDevice' | 'Directory' | 'FIFO' | 'ContiguousFile' | 'GlobalExtendedHeader' | 'ExtendedHeader' | 'SolarisACL' | 'GNUDumpDir' | 'Inode' | 'NextFileHasLongLinkpath' | 'NextFileHasLongPath' | 'ContinuationFile' | 'OldGnuLongPath' | 'SparseFile' | 'TapeVolumeHeader' | 'OldExtendedHeader' | 'Unsupported';
5
+ export declare const name: Map<EntryTypeCode, EntryTypeName>;
6
+ export declare const code: Map<EntryTypeName, EntryTypeCode>;
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,aACV,CAAA;AAE9B,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,aACV,CAAA;AAE9B,MAAM,MAAM,aAAa,GACrB,GAAG,GACH,EAAE,GACF,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAA;AAEP,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,SAAS,GACT,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,WAAW,GACX,MAAM,GACN,gBAAgB,GAChB,sBAAsB,GACtB,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,yBAAyB,GACzB,qBAAqB,GACrB,kBAAkB,GAClB,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,aAAa,CAAA;AAGjB,eAAO,MAAM,IAAI,mCAsCf,CAAA;AAGF,eAAO,MAAM,IAAI,mCAEhB,CAAA"}
@@ -0,0 +1,45 @@
1
+ export const isCode = (c) => name.has(c);
2
+ export const isName = (c) => code.has(c);
3
+ // map types from key to human-friendly name
4
+ export const name = new Map([
5
+ ['0', 'File'],
6
+ // same as File
7
+ ['', 'OldFile'],
8
+ ['1', 'Link'],
9
+ ['2', 'SymbolicLink'],
10
+ // Devices and FIFOs aren't fully supported
11
+ // they are parsed, but skipped when unpacking
12
+ ['3', 'CharacterDevice'],
13
+ ['4', 'BlockDevice'],
14
+ ['5', 'Directory'],
15
+ ['6', 'FIFO'],
16
+ // same as File
17
+ ['7', 'ContiguousFile'],
18
+ // pax headers
19
+ ['g', 'GlobalExtendedHeader'],
20
+ ['x', 'ExtendedHeader'],
21
+ // vendor-specific stuff
22
+ // skip
23
+ ['A', 'SolarisACL'],
24
+ // like 5, but with data, which should be skipped
25
+ ['D', 'GNUDumpDir'],
26
+ // metadata only, skip
27
+ ['I', 'Inode'],
28
+ // data = link path of next file
29
+ ['K', 'NextFileHasLongLinkpath'],
30
+ // data = path of next file
31
+ ['L', 'NextFileHasLongPath'],
32
+ // skip
33
+ ['M', 'ContinuationFile'],
34
+ // like L
35
+ ['N', 'OldGnuLongPath'],
36
+ // skip
37
+ ['S', 'SparseFile'],
38
+ // skip
39
+ ['V', 'TapeVolumeHeader'],
40
+ // like x
41
+ ['X', 'OldExtendedHeader'],
42
+ ]);
43
+ // map the other direction
44
+ export const code = new Map(Array.from(name).map(kv => [kv[1], kv[0]]));
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAsB,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,CAAkB,CAAC,CAAA;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAsB,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,CAAkB,CAAC,CAAA;AAiD9B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAA+B;IACxD,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,eAAe;IACf,CAAC,EAAE,EAAE,SAAS,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,cAAc,CAAC;IACrB,2CAA2C;IAC3C,8CAA8C;IAC9C,CAAC,GAAG,EAAE,iBAAiB,CAAC;IACxB,CAAC,GAAG,EAAE,aAAa,CAAC;IACpB,CAAC,GAAG,EAAE,WAAW,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,eAAe;IACf,CAAC,GAAG,EAAE,gBAAgB,CAAC;IACvB,cAAc;IACd,CAAC,GAAG,EAAE,sBAAsB,CAAC;IAC7B,CAAC,GAAG,EAAE,gBAAgB,CAAC;IACvB,wBAAwB;IACxB,OAAO;IACP,CAAC,GAAG,EAAE,YAAY,CAAC;IACnB,iDAAiD;IACjD,CAAC,GAAG,EAAE,YAAY,CAAC;IACnB,sBAAsB;IACtB,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,CAAC,GAAG,EAAE,yBAAyB,CAAC;IAChC,2BAA2B;IAC3B,CAAC,GAAG,EAAE,qBAAqB,CAAC;IAC5B,OAAO;IACP,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACzB,SAAS;IACT,CAAC,GAAG,EAAE,gBAAgB,CAAC;IACvB,OAAO;IACP,CAAC,GAAG,EAAE,YAAY,CAAC;IACnB,OAAO;IACP,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACzB,SAAS;IACT,CAAC,GAAG,EAAE,mBAAmB,CAAC;CAC3B,CAAC,CAAA;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3C,CAAA","sourcesContent":["export const isCode = (c: string): c is EntryTypeCode =>\n name.has(c as EntryTypeCode)\n\nexport const isName = (c: string): c is EntryTypeName =>\n code.has(c as EntryTypeName)\n\nexport type EntryTypeCode =\n | '0'\n | ''\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | 'g'\n | 'x'\n | 'A'\n | 'D'\n | 'I'\n | 'K'\n | 'L'\n | 'M'\n | 'N'\n | 'S'\n | 'V'\n | 'X'\n\nexport type EntryTypeName =\n | 'File'\n | 'OldFile'\n | 'Link'\n | 'SymbolicLink'\n | 'CharacterDevice'\n | 'BlockDevice'\n | 'Directory'\n | 'FIFO'\n | 'ContiguousFile'\n | 'GlobalExtendedHeader'\n | 'ExtendedHeader'\n | 'SolarisACL'\n | 'GNUDumpDir'\n | 'Inode'\n | 'NextFileHasLongLinkpath'\n | 'NextFileHasLongPath'\n | 'ContinuationFile'\n | 'OldGnuLongPath'\n | 'SparseFile'\n | 'TapeVolumeHeader'\n | 'OldExtendedHeader'\n | 'Unsupported'\n\n// map types from key to human-friendly name\nexport const name = new Map<EntryTypeCode, EntryTypeName>([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexport const code = new Map<EntryTypeName, EntryTypeCode>(\n Array.from(name).map(kv => [kv[1], kv[0]]),\n)\n"]}