@moontaiworks/fanbox-dl 1.0.1 → 1.1.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 (596) hide show
  1. package/README.md +1 -1
  2. package/dist/bundle/index.cjs +1 -1
  3. package/dist/bundle/index.cjs.map +1 -1
  4. package/dist/bundle/index.d.cts +111 -101
  5. package/dist/bundle/index.d.ts +111 -101
  6. package/dist/bundle/index.js +1 -1
  7. package/dist/bundle/index.js.map +1 -1
  8. package/dist/cjs/cli.d.ts +3 -0
  9. package/dist/cjs/cli.d.ts.map +1 -0
  10. package/dist/cjs/cli.js +97 -0
  11. package/dist/cjs/cli.js.map +1 -0
  12. package/dist/cjs/client/client.d.ts +36 -0
  13. package/dist/cjs/client/client.d.ts.map +1 -0
  14. package/dist/cjs/client/client.js +73 -0
  15. package/dist/cjs/client/client.js.map +1 -0
  16. package/dist/cjs/client/endpoints/creator-get.d.ts +8 -0
  17. package/dist/cjs/client/endpoints/creator-get.d.ts.map +1 -0
  18. package/dist/cjs/client/endpoints/creator-get.js +7 -0
  19. package/dist/cjs/client/endpoints/creator-get.js.map +1 -0
  20. package/dist/cjs/client/endpoints/creator-list-pages.d.ts +9 -0
  21. package/dist/cjs/client/endpoints/creator-list-pages.d.ts.map +1 -0
  22. package/dist/cjs/client/endpoints/creator-list-pages.js +7 -0
  23. package/dist/cjs/client/endpoints/creator-list-pages.js.map +1 -0
  24. package/dist/cjs/client/endpoints/creator-list-plans.d.ts +8 -0
  25. package/dist/cjs/client/endpoints/creator-list-plans.d.ts.map +1 -0
  26. package/dist/cjs/client/endpoints/creator-list-plans.js +7 -0
  27. package/dist/cjs/client/endpoints/creator-list-plans.js.map +1 -0
  28. package/dist/cjs/client/endpoints/creator-list-posts.d.ts +11 -0
  29. package/dist/cjs/client/endpoints/creator-list-posts.d.ts.map +1 -0
  30. package/dist/cjs/client/endpoints/creator-list-posts.js +7 -0
  31. package/dist/cjs/client/endpoints/creator-list-posts.js.map +1 -0
  32. package/dist/cjs/client/endpoints/post-info.d.ts +8 -0
  33. package/dist/cjs/client/endpoints/post-info.d.ts.map +1 -0
  34. package/dist/cjs/client/endpoints/post-info.js +7 -0
  35. package/dist/cjs/client/endpoints/post-info.js.map +1 -0
  36. package/dist/cjs/client/endpoints/post-list-home.d.ts +6 -0
  37. package/dist/cjs/client/endpoints/post-list-home.d.ts.map +1 -0
  38. package/dist/cjs/client/endpoints/post-list-home.js +7 -0
  39. package/dist/cjs/client/endpoints/post-list-home.js.map +1 -0
  40. package/dist/cjs/client/endpoints/post-list-supporting.d.ts +6 -0
  41. package/dist/cjs/client/endpoints/post-list-supporting.d.ts.map +1 -0
  42. package/dist/cjs/client/endpoints/post-list-supporting.js +7 -0
  43. package/dist/cjs/client/endpoints/post-list-supporting.js.map +1 -0
  44. package/dist/cjs/client/endpoints/user-list-following.d.ts +7 -0
  45. package/dist/cjs/client/endpoints/user-list-following.d.ts.map +1 -0
  46. package/dist/cjs/client/endpoints/user-list-following.js +7 -0
  47. package/dist/cjs/client/endpoints/user-list-following.js.map +1 -0
  48. package/dist/cjs/client/endpoints/user-list-supporting.d.ts +5 -0
  49. package/dist/cjs/client/endpoints/user-list-supporting.d.ts.map +1 -0
  50. package/dist/cjs/client/endpoints/user-list-supporting.js +7 -0
  51. package/dist/cjs/client/endpoints/user-list-supporting.js.map +1 -0
  52. package/dist/cjs/client/fanbox-envelope.d.ts.map +1 -0
  53. package/dist/cjs/client/fanbox-envelope.js.map +1 -0
  54. package/dist/cjs/client/fanbox-headers.d.ts.map +1 -0
  55. package/dist/cjs/{fanbox-headers.js → client/fanbox-headers.js} +0 -4
  56. package/dist/cjs/client/fanbox-headers.js.map +1 -0
  57. package/dist/cjs/client/models/creator.d.ts.map +1 -0
  58. package/dist/cjs/client/models/creator.js.map +1 -0
  59. package/dist/cjs/client/models/plan.d.ts.map +1 -0
  60. package/dist/cjs/{endpoints → client}/models/plan.js.map +1 -1
  61. package/dist/cjs/client/models/post/article.d.ts +41 -0
  62. package/dist/cjs/client/models/post/article.d.ts.map +1 -0
  63. package/dist/cjs/client/models/post/article.js +3 -0
  64. package/dist/cjs/client/models/post/article.js.map +1 -0
  65. package/dist/cjs/client/models/post/asset.d.ts +16 -0
  66. package/dist/cjs/client/models/post/asset.d.ts.map +1 -0
  67. package/dist/cjs/client/models/post/asset.js +3 -0
  68. package/dist/cjs/client/models/post/asset.js.map +1 -0
  69. package/dist/cjs/client/models/post/embed.d.ts +12 -0
  70. package/dist/cjs/client/models/post/embed.d.ts.map +1 -0
  71. package/dist/cjs/client/models/post/embed.js +3 -0
  72. package/dist/cjs/client/models/post/embed.js.map +1 -0
  73. package/dist/cjs/client/models/post/url-embed.d.ts +13 -0
  74. package/dist/cjs/client/models/post/url-embed.d.ts.map +1 -0
  75. package/dist/cjs/client/models/post/url-embed.js +3 -0
  76. package/dist/cjs/client/models/post/url-embed.js.map +1 -0
  77. package/dist/cjs/{endpoints → client}/models/post.d.ts +5 -48
  78. package/dist/cjs/client/models/post.d.ts.map +1 -0
  79. package/dist/cjs/{endpoints → client}/models/post.js.map +1 -1
  80. package/dist/cjs/client/models/user.d.ts.map +1 -0
  81. package/dist/cjs/{endpoints → client}/models/user.js.map +1 -1
  82. package/dist/cjs/client/types.d.ts +14 -0
  83. package/dist/cjs/client/types.d.ts.map +1 -0
  84. package/dist/cjs/{types.js.map → client/types.js.map} +1 -1
  85. package/dist/cjs/downloader/asset/download.d.ts +21 -0
  86. package/dist/cjs/downloader/asset/download.d.ts.map +1 -0
  87. package/dist/cjs/downloader/asset/download.js +95 -0
  88. package/dist/cjs/downloader/asset/download.js.map +1 -0
  89. package/dist/cjs/downloader/cli/cookie.d.ts +2 -0
  90. package/dist/cjs/downloader/cli/cookie.d.ts.map +1 -0
  91. package/dist/cjs/downloader/cli/cookie.js +37 -0
  92. package/dist/cjs/downloader/cli/cookie.js.map +1 -0
  93. package/dist/cjs/downloader/cli/index.d.ts +4 -0
  94. package/dist/cjs/downloader/cli/index.d.ts.map +1 -0
  95. package/dist/cjs/downloader/cli/index.js +15 -0
  96. package/dist/cjs/downloader/cli/index.js.map +1 -0
  97. package/dist/cjs/downloader/cli/options.d.ts +22 -0
  98. package/dist/cjs/downloader/cli/options.d.ts.map +1 -0
  99. package/dist/cjs/downloader/cli/options.js +124 -0
  100. package/dist/cjs/downloader/cli/options.js.map +1 -0
  101. package/dist/cjs/downloader/{resolver.d.ts → cli/resolver.d.ts} +7 -1
  102. package/dist/cjs/downloader/cli/resolver.d.ts.map +1 -0
  103. package/dist/cjs/downloader/cli/resolver.js +28 -0
  104. package/dist/cjs/downloader/cli/resolver.js.map +1 -0
  105. package/dist/cjs/downloader/creator/discover-posts.d.ts +15 -0
  106. package/dist/cjs/downloader/creator/discover-posts.d.ts.map +1 -0
  107. package/dist/cjs/downloader/creator/discover-posts.js +20 -0
  108. package/dist/cjs/downloader/creator/discover-posts.js.map +1 -0
  109. package/dist/cjs/downloader/creator/sync.d.ts +16 -0
  110. package/dist/cjs/downloader/creator/sync.d.ts.map +1 -0
  111. package/dist/cjs/downloader/creator/sync.js +34 -0
  112. package/dist/cjs/downloader/creator/sync.js.map +1 -0
  113. package/dist/cjs/downloader/fs/filesystem.d.ts +2 -0
  114. package/dist/cjs/downloader/fs/filesystem.d.ts.map +1 -0
  115. package/dist/cjs/downloader/fs/filesystem.js +10 -0
  116. package/dist/cjs/downloader/fs/filesystem.js.map +1 -0
  117. package/dist/cjs/downloader/fs/path-manager.d.ts +17 -0
  118. package/dist/cjs/downloader/fs/path-manager.d.ts.map +1 -0
  119. package/dist/cjs/downloader/fs/path-manager.js +49 -0
  120. package/dist/cjs/downloader/fs/path-manager.js.map +1 -0
  121. package/dist/cjs/downloader/index.d.ts +8 -2
  122. package/dist/cjs/downloader/index.d.ts.map +1 -1
  123. package/dist/cjs/downloader/index.js +55 -5
  124. package/dist/cjs/downloader/index.js.map +1 -1
  125. package/dist/cjs/downloader/manifest/creator-manager.d.ts +15 -0
  126. package/dist/cjs/downloader/manifest/creator-manager.d.ts.map +1 -0
  127. package/dist/cjs/downloader/manifest/creator-manager.js +42 -0
  128. package/dist/cjs/downloader/manifest/creator-manager.js.map +1 -0
  129. package/dist/cjs/downloader/manifest/creator.d.ts +42 -0
  130. package/dist/cjs/downloader/manifest/creator.d.ts.map +1 -0
  131. package/dist/cjs/downloader/manifest/creator.js +54 -0
  132. package/dist/cjs/downloader/manifest/creator.js.map +1 -0
  133. package/dist/cjs/downloader/manifest/store.d.ts +9 -0
  134. package/dist/cjs/downloader/manifest/store.d.ts.map +1 -0
  135. package/dist/cjs/downloader/manifest/store.js +29 -0
  136. package/dist/cjs/downloader/manifest/store.js.map +1 -0
  137. package/dist/cjs/downloader/markdown/asset.d.ts +12 -0
  138. package/dist/cjs/downloader/markdown/asset.d.ts.map +1 -0
  139. package/dist/cjs/downloader/markdown/asset.js +31 -0
  140. package/dist/cjs/downloader/markdown/asset.js.map +1 -0
  141. package/dist/cjs/downloader/post/article.d.ts +4 -0
  142. package/dist/cjs/downloader/post/article.d.ts.map +1 -0
  143. package/dist/cjs/downloader/post/article.js +35 -0
  144. package/dist/cjs/downloader/post/article.js.map +1 -0
  145. package/dist/cjs/downloader/post/content.d.ts +52 -0
  146. package/dist/cjs/downloader/post/content.d.ts.map +1 -0
  147. package/dist/cjs/downloader/post/content.js +48 -0
  148. package/dist/cjs/downloader/post/content.js.map +1 -0
  149. package/dist/cjs/downloader/post/contents.d.ts +9 -0
  150. package/dist/cjs/downloader/post/contents.d.ts.map +1 -0
  151. package/dist/cjs/downloader/post/contents.js +36 -0
  152. package/dist/cjs/downloader/post/contents.js.map +1 -0
  153. package/dist/cjs/downloader/post/embed.d.ts +7 -0
  154. package/dist/cjs/downloader/post/embed.d.ts.map +1 -0
  155. package/dist/cjs/downloader/post/embed.js +14 -0
  156. package/dist/cjs/downloader/post/embed.js.map +1 -0
  157. package/dist/cjs/downloader/post/sync.d.ts +17 -0
  158. package/dist/cjs/downloader/post/sync.d.ts.map +1 -0
  159. package/dist/cjs/downloader/post/sync.js +127 -0
  160. package/dist/cjs/downloader/post/sync.js.map +1 -0
  161. package/dist/cjs/downloader/post/url-embed.d.ts +7 -0
  162. package/dist/cjs/downloader/post/url-embed.d.ts.map +1 -0
  163. package/dist/cjs/downloader/post/url-embed.js +14 -0
  164. package/dist/cjs/downloader/post/url-embed.js.map +1 -0
  165. package/dist/cjs/index.d.ts +2 -2
  166. package/dist/cjs/index.d.ts.map +1 -1
  167. package/dist/cjs/index.js +1 -1
  168. package/dist/cjs/index.js.map +1 -1
  169. package/dist/cjs/transport/http2-session.d.ts +7 -0
  170. package/dist/cjs/transport/http2-session.d.ts.map +1 -0
  171. package/dist/cjs/transport/http2-session.js +48 -0
  172. package/dist/cjs/transport/http2-session.js.map +1 -0
  173. package/dist/cjs/transport/http2.d.ts +11 -0
  174. package/dist/cjs/transport/http2.d.ts.map +1 -0
  175. package/dist/cjs/transport/http2.js +85 -0
  176. package/dist/cjs/transport/http2.js.map +1 -0
  177. package/dist/cjs/transport/worker.d.ts +17 -0
  178. package/dist/cjs/transport/worker.d.ts.map +1 -0
  179. package/dist/cjs/transport/worker.js +137 -0
  180. package/dist/cjs/transport/worker.js.map +1 -0
  181. package/dist/cjs/usage.d.ts +4 -0
  182. package/dist/cjs/usage.d.ts.map +1 -0
  183. package/dist/cjs/usage.js +11 -0
  184. package/dist/cjs/usage.js.map +1 -0
  185. package/dist/esm/cli.d.ts +3 -0
  186. package/dist/esm/cli.d.ts.map +1 -0
  187. package/dist/esm/cli.js +62 -0
  188. package/dist/esm/cli.js.map +1 -0
  189. package/dist/esm/client/client.d.ts +36 -0
  190. package/dist/esm/client/client.d.ts.map +1 -0
  191. package/dist/esm/client/client.js +68 -0
  192. package/dist/esm/client/client.js.map +1 -0
  193. package/dist/esm/client/endpoints/creator-get.d.ts +8 -0
  194. package/dist/esm/client/endpoints/creator-get.d.ts.map +1 -0
  195. package/dist/esm/client/endpoints/creator-get.js +4 -0
  196. package/dist/esm/client/endpoints/creator-get.js.map +1 -0
  197. package/dist/esm/client/endpoints/creator-list-pages.d.ts +9 -0
  198. package/dist/esm/client/endpoints/creator-list-pages.d.ts.map +1 -0
  199. package/dist/esm/client/endpoints/creator-list-pages.js +4 -0
  200. package/dist/esm/client/endpoints/creator-list-pages.js.map +1 -0
  201. package/dist/esm/client/endpoints/creator-list-plans.d.ts +8 -0
  202. package/dist/esm/client/endpoints/creator-list-plans.d.ts.map +1 -0
  203. package/dist/esm/client/endpoints/creator-list-plans.js +4 -0
  204. package/dist/esm/client/endpoints/creator-list-plans.js.map +1 -0
  205. package/dist/esm/client/endpoints/creator-list-posts.d.ts +11 -0
  206. package/dist/esm/client/endpoints/creator-list-posts.d.ts.map +1 -0
  207. package/dist/esm/client/endpoints/creator-list-posts.js +4 -0
  208. package/dist/esm/client/endpoints/creator-list-posts.js.map +1 -0
  209. package/dist/esm/client/endpoints/post-info.d.ts +8 -0
  210. package/dist/esm/client/endpoints/post-info.d.ts.map +1 -0
  211. package/dist/esm/client/endpoints/post-info.js +4 -0
  212. package/dist/esm/client/endpoints/post-info.js.map +1 -0
  213. package/dist/esm/client/endpoints/post-list-home.d.ts +6 -0
  214. package/dist/esm/client/endpoints/post-list-home.d.ts.map +1 -0
  215. package/dist/esm/client/endpoints/post-list-home.js +4 -0
  216. package/dist/esm/client/endpoints/post-list-home.js.map +1 -0
  217. package/dist/esm/client/endpoints/post-list-supporting.d.ts +6 -0
  218. package/dist/esm/client/endpoints/post-list-supporting.d.ts.map +1 -0
  219. package/dist/esm/client/endpoints/post-list-supporting.js +4 -0
  220. package/dist/esm/client/endpoints/post-list-supporting.js.map +1 -0
  221. package/dist/esm/client/endpoints/user-list-following.d.ts +7 -0
  222. package/dist/esm/client/endpoints/user-list-following.d.ts.map +1 -0
  223. package/dist/esm/client/endpoints/user-list-following.js +4 -0
  224. package/dist/esm/client/endpoints/user-list-following.js.map +1 -0
  225. package/dist/esm/client/endpoints/user-list-supporting.d.ts +5 -0
  226. package/dist/esm/client/endpoints/user-list-supporting.d.ts.map +1 -0
  227. package/dist/esm/client/endpoints/user-list-supporting.js +4 -0
  228. package/dist/esm/client/endpoints/user-list-supporting.js.map +1 -0
  229. package/dist/esm/client/fanbox-envelope.d.ts.map +1 -0
  230. package/dist/esm/client/fanbox-envelope.js.map +1 -0
  231. package/dist/esm/client/fanbox-headers.d.ts.map +1 -0
  232. package/dist/esm/{fanbox-headers.js → client/fanbox-headers.js} +0 -4
  233. package/dist/esm/client/fanbox-headers.js.map +1 -0
  234. package/dist/esm/client/models/creator.d.ts.map +1 -0
  235. package/dist/esm/client/models/creator.js.map +1 -0
  236. package/dist/esm/client/models/plan.d.ts.map +1 -0
  237. package/dist/esm/{endpoints → client}/models/plan.js.map +1 -1
  238. package/dist/esm/client/models/post/article.d.ts +41 -0
  239. package/dist/esm/client/models/post/article.d.ts.map +1 -0
  240. package/dist/esm/client/models/post/article.js +2 -0
  241. package/dist/esm/client/models/post/article.js.map +1 -0
  242. package/dist/esm/client/models/post/asset.d.ts +16 -0
  243. package/dist/esm/client/models/post/asset.d.ts.map +1 -0
  244. package/dist/esm/client/models/post/asset.js +2 -0
  245. package/dist/esm/client/models/post/asset.js.map +1 -0
  246. package/dist/esm/client/models/post/embed.d.ts +12 -0
  247. package/dist/esm/client/models/post/embed.d.ts.map +1 -0
  248. package/dist/esm/client/models/post/embed.js +2 -0
  249. package/dist/esm/client/models/post/embed.js.map +1 -0
  250. package/dist/esm/client/models/post/url-embed.d.ts +13 -0
  251. package/dist/esm/client/models/post/url-embed.d.ts.map +1 -0
  252. package/dist/esm/client/models/post/url-embed.js +2 -0
  253. package/dist/esm/client/models/post/url-embed.js.map +1 -0
  254. package/dist/esm/{endpoints → client}/models/post.d.ts +5 -48
  255. package/dist/esm/client/models/post.d.ts.map +1 -0
  256. package/dist/esm/{endpoints → client}/models/post.js.map +1 -1
  257. package/dist/esm/client/models/user.d.ts.map +1 -0
  258. package/dist/esm/{endpoints → client}/models/user.js.map +1 -1
  259. package/dist/esm/client/types.d.ts +14 -0
  260. package/dist/esm/client/types.d.ts.map +1 -0
  261. package/dist/esm/{types.js.map → client/types.js.map} +1 -1
  262. package/dist/esm/downloader/asset/download.d.ts +21 -0
  263. package/dist/esm/downloader/asset/download.d.ts.map +1 -0
  264. package/dist/esm/downloader/asset/download.js +56 -0
  265. package/dist/esm/downloader/asset/download.js.map +1 -0
  266. package/dist/esm/downloader/cli/cookie.d.ts +2 -0
  267. package/dist/esm/downloader/cli/cookie.d.ts.map +1 -0
  268. package/dist/esm/downloader/cli/cookie.js +34 -0
  269. package/dist/esm/downloader/cli/cookie.js.map +1 -0
  270. package/dist/esm/downloader/cli/index.d.ts +4 -0
  271. package/dist/esm/downloader/cli/index.d.ts.map +1 -0
  272. package/dist/esm/downloader/cli/index.js +11 -0
  273. package/dist/esm/downloader/cli/index.js.map +1 -0
  274. package/dist/esm/downloader/cli/options.d.ts +22 -0
  275. package/dist/esm/downloader/cli/options.d.ts.map +1 -0
  276. package/dist/esm/downloader/cli/options.js +120 -0
  277. package/dist/esm/downloader/cli/options.js.map +1 -0
  278. package/dist/esm/downloader/{resolver.d.ts → cli/resolver.d.ts} +7 -1
  279. package/dist/esm/downloader/cli/resolver.d.ts.map +1 -0
  280. package/dist/esm/downloader/cli/resolver.js +25 -0
  281. package/dist/esm/downloader/cli/resolver.js.map +1 -0
  282. package/dist/esm/downloader/creator/discover-posts.d.ts +15 -0
  283. package/dist/esm/downloader/creator/discover-posts.d.ts.map +1 -0
  284. package/dist/esm/downloader/creator/discover-posts.js +17 -0
  285. package/dist/esm/downloader/creator/discover-posts.js.map +1 -0
  286. package/dist/esm/downloader/creator/sync.d.ts +16 -0
  287. package/dist/esm/downloader/creator/sync.d.ts.map +1 -0
  288. package/dist/esm/downloader/creator/sync.js +31 -0
  289. package/dist/esm/downloader/creator/sync.js.map +1 -0
  290. package/dist/esm/downloader/fs/filesystem.d.ts +2 -0
  291. package/dist/esm/downloader/fs/filesystem.d.ts.map +1 -0
  292. package/dist/esm/downloader/fs/filesystem.js +7 -0
  293. package/dist/esm/downloader/fs/filesystem.js.map +1 -0
  294. package/dist/esm/downloader/fs/path-manager.d.ts +17 -0
  295. package/dist/esm/downloader/fs/path-manager.d.ts.map +1 -0
  296. package/dist/esm/downloader/fs/path-manager.js +45 -0
  297. package/dist/esm/downloader/fs/path-manager.js.map +1 -0
  298. package/dist/esm/downloader/index.d.ts +8 -2
  299. package/dist/esm/downloader/index.d.ts.map +1 -1
  300. package/dist/esm/downloader/index.js +54 -5
  301. package/dist/esm/downloader/index.js.map +1 -1
  302. package/dist/esm/downloader/manifest/creator-manager.d.ts +15 -0
  303. package/dist/esm/downloader/manifest/creator-manager.d.ts.map +1 -0
  304. package/dist/esm/downloader/manifest/creator-manager.js +38 -0
  305. package/dist/esm/downloader/manifest/creator-manager.js.map +1 -0
  306. package/dist/esm/downloader/manifest/creator.d.ts +42 -0
  307. package/dist/esm/downloader/manifest/creator.d.ts.map +1 -0
  308. package/dist/esm/downloader/manifest/creator.js +50 -0
  309. package/dist/esm/downloader/manifest/creator.js.map +1 -0
  310. package/dist/esm/downloader/manifest/store.d.ts +9 -0
  311. package/dist/esm/downloader/manifest/store.d.ts.map +1 -0
  312. package/dist/esm/downloader/manifest/store.js +25 -0
  313. package/dist/esm/downloader/manifest/store.js.map +1 -0
  314. package/dist/esm/downloader/markdown/asset.d.ts +12 -0
  315. package/dist/esm/downloader/markdown/asset.d.ts.map +1 -0
  316. package/dist/esm/downloader/markdown/asset.js +22 -0
  317. package/dist/esm/downloader/markdown/asset.js.map +1 -0
  318. package/dist/esm/downloader/post/article.d.ts +4 -0
  319. package/dist/esm/downloader/post/article.d.ts.map +1 -0
  320. package/dist/esm/downloader/post/article.js +32 -0
  321. package/dist/esm/downloader/post/article.js.map +1 -0
  322. package/dist/esm/downloader/post/content.d.ts +52 -0
  323. package/dist/esm/downloader/post/content.d.ts.map +1 -0
  324. package/dist/esm/downloader/post/content.js +39 -0
  325. package/dist/esm/downloader/post/content.js.map +1 -0
  326. package/dist/esm/downloader/post/contents.d.ts +9 -0
  327. package/dist/esm/downloader/post/contents.d.ts.map +1 -0
  328. package/dist/esm/downloader/post/contents.js +33 -0
  329. package/dist/esm/downloader/post/contents.js.map +1 -0
  330. package/dist/esm/downloader/post/embed.d.ts +7 -0
  331. package/dist/esm/downloader/post/embed.d.ts.map +1 -0
  332. package/dist/esm/downloader/post/embed.js +11 -0
  333. package/dist/esm/downloader/post/embed.js.map +1 -0
  334. package/dist/esm/downloader/post/sync.d.ts +17 -0
  335. package/dist/esm/downloader/post/sync.d.ts.map +1 -0
  336. package/dist/esm/downloader/post/sync.js +124 -0
  337. package/dist/esm/downloader/post/sync.js.map +1 -0
  338. package/dist/esm/downloader/post/url-embed.d.ts +7 -0
  339. package/dist/esm/downloader/post/url-embed.d.ts.map +1 -0
  340. package/dist/esm/downloader/post/url-embed.js +11 -0
  341. package/dist/esm/downloader/post/url-embed.js.map +1 -0
  342. package/dist/esm/index.d.ts +2 -2
  343. package/dist/esm/index.d.ts.map +1 -1
  344. package/dist/esm/index.js +1 -1
  345. package/dist/esm/index.js.map +1 -1
  346. package/dist/esm/transport/http2-session.d.ts +7 -0
  347. package/dist/esm/transport/http2-session.d.ts.map +1 -0
  348. package/dist/esm/transport/http2-session.js +44 -0
  349. package/dist/esm/transport/http2-session.js.map +1 -0
  350. package/dist/esm/transport/http2.d.ts +11 -0
  351. package/dist/esm/transport/http2.d.ts.map +1 -0
  352. package/dist/esm/transport/http2.js +80 -0
  353. package/dist/esm/transport/http2.js.map +1 -0
  354. package/dist/esm/transport/worker.d.ts +17 -0
  355. package/dist/esm/transport/worker.d.ts.map +1 -0
  356. package/dist/esm/transport/worker.js +133 -0
  357. package/dist/esm/transport/worker.js.map +1 -0
  358. package/dist/esm/usage.d.ts +4 -0
  359. package/dist/esm/usage.d.ts.map +1 -0
  360. package/dist/esm/usage.js +7 -0
  361. package/dist/esm/usage.js.map +1 -0
  362. package/package.json +5 -2
  363. package/dist/cjs/client-options.d.ts +0 -8
  364. package/dist/cjs/client-options.d.ts.map +0 -1
  365. package/dist/cjs/client-options.js +0 -3
  366. package/dist/cjs/client-options.js.map +0 -1
  367. package/dist/cjs/client.d.ts +0 -31
  368. package/dist/cjs/client.d.ts.map +0 -1
  369. package/dist/cjs/client.js +0 -107
  370. package/dist/cjs/client.js.map +0 -1
  371. package/dist/cjs/downloader/asset.d.ts +0 -30
  372. package/dist/cjs/downloader/asset.d.ts.map +0 -1
  373. package/dist/cjs/downloader/asset.js +0 -99
  374. package/dist/cjs/downloader/asset.js.map +0 -1
  375. package/dist/cjs/downloader/cli.d.ts +0 -8
  376. package/dist/cjs/downloader/cli.d.ts.map +0 -1
  377. package/dist/cjs/downloader/cli.js +0 -168
  378. package/dist/cjs/downloader/cli.js.map +0 -1
  379. package/dist/cjs/downloader/discovery.d.ts +0 -12
  380. package/dist/cjs/downloader/discovery.d.ts.map +0 -1
  381. package/dist/cjs/downloader/discovery.js +0 -87
  382. package/dist/cjs/downloader/discovery.js.map +0 -1
  383. package/dist/cjs/downloader/errors.d.ts +0 -5
  384. package/dist/cjs/downloader/errors.d.ts.map +0 -1
  385. package/dist/cjs/downloader/errors.js +0 -40
  386. package/dist/cjs/downloader/errors.js.map +0 -1
  387. package/dist/cjs/downloader/logger.d.ts +0 -16
  388. package/dist/cjs/downloader/logger.d.ts.map +0 -1
  389. package/dist/cjs/downloader/logger.js +0 -51
  390. package/dist/cjs/downloader/logger.js.map +0 -1
  391. package/dist/cjs/downloader/manifest.d.ts +0 -31
  392. package/dist/cjs/downloader/manifest.d.ts.map +0 -1
  393. package/dist/cjs/downloader/manifest.js +0 -53
  394. package/dist/cjs/downloader/manifest.js.map +0 -1
  395. package/dist/cjs/downloader/markdown.d.ts +0 -4
  396. package/dist/cjs/downloader/markdown.d.ts.map +0 -1
  397. package/dist/cjs/downloader/markdown.js +0 -62
  398. package/dist/cjs/downloader/markdown.js.map +0 -1
  399. package/dist/cjs/downloader/options.d.ts +0 -24
  400. package/dist/cjs/downloader/options.d.ts.map +0 -1
  401. package/dist/cjs/downloader/options.js +0 -135
  402. package/dist/cjs/downloader/options.js.map +0 -1
  403. package/dist/cjs/downloader/path.d.ts +0 -15
  404. package/dist/cjs/downloader/path.d.ts.map +0 -1
  405. package/dist/cjs/downloader/path.js +0 -79
  406. package/dist/cjs/downloader/path.js.map +0 -1
  407. package/dist/cjs/downloader/resolver.d.ts.map +0 -1
  408. package/dist/cjs/downloader/resolver.js +0 -22
  409. package/dist/cjs/downloader/resolver.js.map +0 -1
  410. package/dist/cjs/downloader/scheduler.d.ts +0 -19
  411. package/dist/cjs/downloader/scheduler.d.ts.map +0 -1
  412. package/dist/cjs/downloader/scheduler.js +0 -124
  413. package/dist/cjs/downloader/scheduler.js.map +0 -1
  414. package/dist/cjs/downloader/sync.d.ts +0 -21
  415. package/dist/cjs/downloader/sync.d.ts.map +0 -1
  416. package/dist/cjs/downloader/sync.js +0 -317
  417. package/dist/cjs/downloader/sync.js.map +0 -1
  418. package/dist/cjs/endpoints/creator-get.d.ts +0 -7
  419. package/dist/cjs/endpoints/creator-get.d.ts.map +0 -1
  420. package/dist/cjs/endpoints/creator-get.js +0 -5
  421. package/dist/cjs/endpoints/creator-get.js.map +0 -1
  422. package/dist/cjs/endpoints/creator-list-following.d.ts +0 -6
  423. package/dist/cjs/endpoints/creator-list-following.d.ts.map +0 -1
  424. package/dist/cjs/endpoints/creator-list-following.js +0 -5
  425. package/dist/cjs/endpoints/creator-list-following.js.map +0 -1
  426. package/dist/cjs/endpoints/fanbox-envelope.d.ts.map +0 -1
  427. package/dist/cjs/endpoints/fanbox-envelope.js.map +0 -1
  428. package/dist/cjs/endpoints/models/creator.d.ts.map +0 -1
  429. package/dist/cjs/endpoints/models/creator.js.map +0 -1
  430. package/dist/cjs/endpoints/models/plan.d.ts.map +0 -1
  431. package/dist/cjs/endpoints/models/post.d.ts.map +0 -1
  432. package/dist/cjs/endpoints/models/user.d.ts.map +0 -1
  433. package/dist/cjs/endpoints/plan-list-creator.d.ts +0 -7
  434. package/dist/cjs/endpoints/plan-list-creator.d.ts.map +0 -1
  435. package/dist/cjs/endpoints/plan-list-creator.js +0 -5
  436. package/dist/cjs/endpoints/plan-list-creator.js.map +0 -1
  437. package/dist/cjs/endpoints/plan-list-supporting.d.ts +0 -4
  438. package/dist/cjs/endpoints/plan-list-supporting.d.ts.map +0 -1
  439. package/dist/cjs/endpoints/plan-list-supporting.js +0 -5
  440. package/dist/cjs/endpoints/plan-list-supporting.js.map +0 -1
  441. package/dist/cjs/endpoints/post-info.d.ts +0 -7
  442. package/dist/cjs/endpoints/post-info.d.ts.map +0 -1
  443. package/dist/cjs/endpoints/post-info.js +0 -5
  444. package/dist/cjs/endpoints/post-info.js.map +0 -1
  445. package/dist/cjs/endpoints/post-list-creator.d.ts +0 -10
  446. package/dist/cjs/endpoints/post-list-creator.d.ts.map +0 -1
  447. package/dist/cjs/endpoints/post-list-creator.js +0 -5
  448. package/dist/cjs/endpoints/post-list-creator.js.map +0 -1
  449. package/dist/cjs/endpoints/post-list-home.d.ts +0 -5
  450. package/dist/cjs/endpoints/post-list-home.d.ts.map +0 -1
  451. package/dist/cjs/endpoints/post-list-home.js +0 -5
  452. package/dist/cjs/endpoints/post-list-home.js.map +0 -1
  453. package/dist/cjs/endpoints/post-list-supporting.d.ts +0 -5
  454. package/dist/cjs/endpoints/post-list-supporting.d.ts.map +0 -1
  455. package/dist/cjs/endpoints/post-list-supporting.js +0 -5
  456. package/dist/cjs/endpoints/post-list-supporting.js.map +0 -1
  457. package/dist/cjs/endpoints/post-paginate-creator.d.ts +0 -8
  458. package/dist/cjs/endpoints/post-paginate-creator.d.ts.map +0 -1
  459. package/dist/cjs/endpoints/post-paginate-creator.js +0 -5
  460. package/dist/cjs/endpoints/post-paginate-creator.js.map +0 -1
  461. package/dist/cjs/fanbox-headers.d.ts.map +0 -1
  462. package/dist/cjs/fanbox-headers.js.map +0 -1
  463. package/dist/cjs/http.d.ts +0 -31
  464. package/dist/cjs/http.d.ts.map +0 -1
  465. package/dist/cjs/http.js +0 -200
  466. package/dist/cjs/http.js.map +0 -1
  467. package/dist/cjs/types.d.ts +0 -16
  468. package/dist/cjs/types.d.ts.map +0 -1
  469. package/dist/esm/client-options.d.ts +0 -8
  470. package/dist/esm/client-options.d.ts.map +0 -1
  471. package/dist/esm/client-options.js +0 -2
  472. package/dist/esm/client-options.js.map +0 -1
  473. package/dist/esm/client.d.ts +0 -31
  474. package/dist/esm/client.d.ts.map +0 -1
  475. package/dist/esm/client.js +0 -102
  476. package/dist/esm/client.js.map +0 -1
  477. package/dist/esm/downloader/asset.d.ts +0 -30
  478. package/dist/esm/downloader/asset.d.ts.map +0 -1
  479. package/dist/esm/downloader/asset.js +0 -91
  480. package/dist/esm/downloader/asset.js.map +0 -1
  481. package/dist/esm/downloader/cli.d.ts +0 -8
  482. package/dist/esm/downloader/cli.d.ts.map +0 -1
  483. package/dist/esm/downloader/cli.js +0 -164
  484. package/dist/esm/downloader/cli.js.map +0 -1
  485. package/dist/esm/downloader/discovery.d.ts +0 -12
  486. package/dist/esm/downloader/discovery.d.ts.map +0 -1
  487. package/dist/esm/downloader/discovery.js +0 -84
  488. package/dist/esm/downloader/discovery.js.map +0 -1
  489. package/dist/esm/downloader/errors.d.ts +0 -5
  490. package/dist/esm/downloader/errors.d.ts.map +0 -1
  491. package/dist/esm/downloader/errors.js +0 -36
  492. package/dist/esm/downloader/errors.js.map +0 -1
  493. package/dist/esm/downloader/logger.d.ts +0 -16
  494. package/dist/esm/downloader/logger.d.ts.map +0 -1
  495. package/dist/esm/downloader/logger.js +0 -47
  496. package/dist/esm/downloader/logger.js.map +0 -1
  497. package/dist/esm/downloader/manifest.d.ts +0 -31
  498. package/dist/esm/downloader/manifest.d.ts.map +0 -1
  499. package/dist/esm/downloader/manifest.js +0 -46
  500. package/dist/esm/downloader/manifest.js.map +0 -1
  501. package/dist/esm/downloader/markdown.d.ts +0 -4
  502. package/dist/esm/downloader/markdown.d.ts.map +0 -1
  503. package/dist/esm/downloader/markdown.js +0 -59
  504. package/dist/esm/downloader/markdown.js.map +0 -1
  505. package/dist/esm/downloader/options.d.ts +0 -24
  506. package/dist/esm/downloader/options.d.ts.map +0 -1
  507. package/dist/esm/downloader/options.js +0 -130
  508. package/dist/esm/downloader/options.js.map +0 -1
  509. package/dist/esm/downloader/path.d.ts +0 -15
  510. package/dist/esm/downloader/path.d.ts.map +0 -1
  511. package/dist/esm/downloader/path.js +0 -69
  512. package/dist/esm/downloader/path.js.map +0 -1
  513. package/dist/esm/downloader/resolver.d.ts.map +0 -1
  514. package/dist/esm/downloader/resolver.js +0 -19
  515. package/dist/esm/downloader/resolver.js.map +0 -1
  516. package/dist/esm/downloader/scheduler.d.ts +0 -19
  517. package/dist/esm/downloader/scheduler.d.ts.map +0 -1
  518. package/dist/esm/downloader/scheduler.js +0 -120
  519. package/dist/esm/downloader/scheduler.js.map +0 -1
  520. package/dist/esm/downloader/sync.d.ts +0 -21
  521. package/dist/esm/downloader/sync.d.ts.map +0 -1
  522. package/dist/esm/downloader/sync.js +0 -311
  523. package/dist/esm/downloader/sync.js.map +0 -1
  524. package/dist/esm/endpoints/creator-get.d.ts +0 -7
  525. package/dist/esm/endpoints/creator-get.d.ts.map +0 -1
  526. package/dist/esm/endpoints/creator-get.js +0 -2
  527. package/dist/esm/endpoints/creator-get.js.map +0 -1
  528. package/dist/esm/endpoints/creator-list-following.d.ts +0 -6
  529. package/dist/esm/endpoints/creator-list-following.d.ts.map +0 -1
  530. package/dist/esm/endpoints/creator-list-following.js +0 -2
  531. package/dist/esm/endpoints/creator-list-following.js.map +0 -1
  532. package/dist/esm/endpoints/fanbox-envelope.d.ts.map +0 -1
  533. package/dist/esm/endpoints/fanbox-envelope.js.map +0 -1
  534. package/dist/esm/endpoints/models/creator.d.ts.map +0 -1
  535. package/dist/esm/endpoints/models/creator.js.map +0 -1
  536. package/dist/esm/endpoints/models/plan.d.ts.map +0 -1
  537. package/dist/esm/endpoints/models/post.d.ts.map +0 -1
  538. package/dist/esm/endpoints/models/user.d.ts.map +0 -1
  539. package/dist/esm/endpoints/plan-list-creator.d.ts +0 -7
  540. package/dist/esm/endpoints/plan-list-creator.d.ts.map +0 -1
  541. package/dist/esm/endpoints/plan-list-creator.js +0 -2
  542. package/dist/esm/endpoints/plan-list-creator.js.map +0 -1
  543. package/dist/esm/endpoints/plan-list-supporting.d.ts +0 -4
  544. package/dist/esm/endpoints/plan-list-supporting.d.ts.map +0 -1
  545. package/dist/esm/endpoints/plan-list-supporting.js +0 -2
  546. package/dist/esm/endpoints/plan-list-supporting.js.map +0 -1
  547. package/dist/esm/endpoints/post-info.d.ts +0 -7
  548. package/dist/esm/endpoints/post-info.d.ts.map +0 -1
  549. package/dist/esm/endpoints/post-info.js +0 -2
  550. package/dist/esm/endpoints/post-info.js.map +0 -1
  551. package/dist/esm/endpoints/post-list-creator.d.ts +0 -10
  552. package/dist/esm/endpoints/post-list-creator.d.ts.map +0 -1
  553. package/dist/esm/endpoints/post-list-creator.js +0 -2
  554. package/dist/esm/endpoints/post-list-creator.js.map +0 -1
  555. package/dist/esm/endpoints/post-list-home.d.ts +0 -5
  556. package/dist/esm/endpoints/post-list-home.d.ts.map +0 -1
  557. package/dist/esm/endpoints/post-list-home.js +0 -2
  558. package/dist/esm/endpoints/post-list-home.js.map +0 -1
  559. package/dist/esm/endpoints/post-list-supporting.d.ts +0 -5
  560. package/dist/esm/endpoints/post-list-supporting.d.ts.map +0 -1
  561. package/dist/esm/endpoints/post-list-supporting.js +0 -2
  562. package/dist/esm/endpoints/post-list-supporting.js.map +0 -1
  563. package/dist/esm/endpoints/post-paginate-creator.d.ts +0 -8
  564. package/dist/esm/endpoints/post-paginate-creator.d.ts.map +0 -1
  565. package/dist/esm/endpoints/post-paginate-creator.js +0 -2
  566. package/dist/esm/endpoints/post-paginate-creator.js.map +0 -1
  567. package/dist/esm/fanbox-headers.d.ts.map +0 -1
  568. package/dist/esm/fanbox-headers.js.map +0 -1
  569. package/dist/esm/http.d.ts +0 -31
  570. package/dist/esm/http.d.ts.map +0 -1
  571. package/dist/esm/http.js +0 -195
  572. package/dist/esm/http.js.map +0 -1
  573. package/dist/esm/types.d.ts +0 -16
  574. package/dist/esm/types.d.ts.map +0 -1
  575. /package/dist/cjs/{endpoints → client}/fanbox-envelope.d.ts +0 -0
  576. /package/dist/cjs/{endpoints → client}/fanbox-envelope.js +0 -0
  577. /package/dist/cjs/{fanbox-headers.d.ts → client/fanbox-headers.d.ts} +0 -0
  578. /package/dist/cjs/{endpoints → client}/models/creator.d.ts +0 -0
  579. /package/dist/cjs/{endpoints → client}/models/creator.js +0 -0
  580. /package/dist/cjs/{endpoints → client}/models/plan.d.ts +0 -0
  581. /package/dist/cjs/{endpoints → client}/models/plan.js +0 -0
  582. /package/dist/cjs/{endpoints → client}/models/post.js +0 -0
  583. /package/dist/cjs/{endpoints → client}/models/user.d.ts +0 -0
  584. /package/dist/cjs/{endpoints → client}/models/user.js +0 -0
  585. /package/dist/cjs/{types.js → client/types.js} +0 -0
  586. /package/dist/esm/{endpoints → client}/fanbox-envelope.d.ts +0 -0
  587. /package/dist/esm/{endpoints → client}/fanbox-envelope.js +0 -0
  588. /package/dist/esm/{fanbox-headers.d.ts → client/fanbox-headers.d.ts} +0 -0
  589. /package/dist/esm/{endpoints → client}/models/creator.d.ts +0 -0
  590. /package/dist/esm/{endpoints → client}/models/creator.js +0 -0
  591. /package/dist/esm/{endpoints → client}/models/plan.d.ts +0 -0
  592. /package/dist/esm/{endpoints → client}/models/plan.js +0 -0
  593. /package/dist/esm/{endpoints → client}/models/post.js +0 -0
  594. /package/dist/esm/{endpoints → client}/models/user.d.ts +0 -0
  595. /package/dist/esm/{endpoints → client}/models/user.js +0 -0
  596. /package/dist/esm/{types.js → client/types.js} +0 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatPostContents = formatPostContents;
4
+ const article_js_1 = require("./article.js");
5
+ const content_js_1 = require("./content.js");
6
+ function formatPostContents({ logger }, post) {
7
+ if (isPostType("image", post)) {
8
+ const assets = post.body.images.map((image) => new content_js_1.ImageContent(image));
9
+ if (post.body.text)
10
+ return [...assets, new content_js_1.TextContent(post.body)];
11
+ return assets;
12
+ }
13
+ if (isPostType("file", post)) {
14
+ const assets = post.body.files.map((file) => new content_js_1.FileContent(file));
15
+ if (post.body.text)
16
+ return [...assets, new content_js_1.TextContent(post.body)];
17
+ return assets;
18
+ }
19
+ if (isPostType("video", post)) {
20
+ logger.warn(`Post ${post.id} has unknown video provider ${post.body.video.serviceProvider}, skipping video content.`);
21
+ const assets = [new content_js_1.UnknownContent(post.body.video)];
22
+ if (post.body.text)
23
+ return [...assets, new content_js_1.TextContent(post.body)];
24
+ return assets;
25
+ }
26
+ if (isPostType("text", post))
27
+ return [new content_js_1.TextContent(post.body)];
28
+ if (isPostType("article", post))
29
+ return (0, article_js_1.formatArticleContents)(post);
30
+ logger.warn(`Post ${post.id} has unknown type ${post.type}, skipping.`);
31
+ return [new content_js_1.UnknownContent(post.body)];
32
+ }
33
+ function isPostType(type, post) {
34
+ return post.type === type;
35
+ }
36
+ //# sourceMappingURL=contents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contents.js","sourceRoot":"","sources":["../../../../src/downloader/post/contents.ts"],"names":[],"mappings":";;AA+BA,gDAkCC;AAvDD,6CAAqD;AAErD,6CAKsB;AActB,SAAgB,kBAAkB,CAChC,EAAE,MAAM,EAA0B,EAClC,IAAU;IAEV,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,yBAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,wBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,wBAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,wBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,IAAI,CAAC,EAAE,+BAA+B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,2BAA2B,CACzG,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,IAAI,2BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,wBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,wBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAElE,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,OAAO,IAAA,kCAAqB,EAAC,IAAI,CAAC,CAAC;IAEpE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,2BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CACjB,IAAO,EACP,IAAU;IAEV,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ArticleEmbedBlock } from "../../client/models/post/article.js";
2
+ import type { ArticleEmbedItem } from "../../client/models/post/embed.js";
3
+ import { TextContent } from "./content.js";
4
+ export declare function handleEmbedBlock(block: ArticleEmbedBlock, embedMap: Record<string, ArticleEmbedItem>): TextContent<{
5
+ text: string;
6
+ }> | null;
7
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;;UAS3C"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleEmbedBlock = handleEmbedBlock;
4
+ const content_js_1 = require("./content.js");
5
+ function handleEmbedBlock(block, embedMap) {
6
+ const item = embedMap[block.embedId];
7
+ if (isEmbedType("twitter", item))
8
+ return new content_js_1.TextContent({ text: `https://x.com/${item.contentId}` });
9
+ return null;
10
+ }
11
+ function isEmbedType(type, item) {
12
+ return item.serviceProvider === type;
13
+ }
14
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../src/downloader/post/embed.ts"],"names":[],"mappings":";;AAWA,4CAWC;AAjBD,6CAA2C;AAM3C,SAAgB,gBAAgB,CAC9B,KAAwB,EACxB,QAA0C;IAE1C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC;QAC9B,OAAO,IAAI,wBAAW,CAAC,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAGtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAClB,IAAO,EACP,IAAsB;IAEtB,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;AACvC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Logger } from "pino";
2
+ import type { FanboxClient } from "../../client/client.js";
3
+ import type { PostSummary } from "../../client/types.js";
4
+ import type { HttpTransport } from "../../transport/http2.js";
5
+ import type { PathManager } from "../fs/path-manager.js";
6
+ import type { CreatorManifest, PostManifestData } from "../manifest/creator.js";
7
+ interface SyncPostDeps {
8
+ client: FanboxClient;
9
+ headers?: Record<string, string>;
10
+ logger: Logger;
11
+ manifest: CreatorManifest;
12
+ pathManager: PathManager;
13
+ transport: HttpTransport;
14
+ }
15
+ export declare function syncPost({ client, headers, logger, manifest, pathManager, transport }: SyncPostDeps, postSummary: PostSummary): Promise<PostManifestData>;
16
+ export {};
17
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAShC,UAAU,YAAY;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EAC3E,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA2J3B"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncPost = syncPost;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_path_1 = require("node:path");
6
+ const download_js_1 = require("../asset/download.js");
7
+ const asset_js_1 = require("../markdown/asset.js");
8
+ const content_js_1 = require("./content.js");
9
+ const contents_js_1 = require("./contents.js");
10
+ async function syncPost({ client, headers, logger, manifest, pathManager, transport }, postSummary) {
11
+ if (postSummary.isRestricted) {
12
+ logger.warn(`Post ${postSummary.id} is restricted, skipping download.`);
13
+ return {
14
+ assets: {},
15
+ id: postSummary.id,
16
+ restricted: true,
17
+ status: "skipped",
18
+ updatedDatetime: postSummary.updatedDatetime,
19
+ };
20
+ }
21
+ const existingPost = manifest.posts[postSummary.id];
22
+ if (existingPost?.status === "complete" &&
23
+ postSummary.updatedDatetime === existingPost.updatedDatetime) {
24
+ logger.debug(`Post ${postSummary.id} has no changes, skipping download.`);
25
+ return existingPost;
26
+ }
27
+ logger.debug(`Downloading post ${postSummary.id} updated at ${postSummary.updatedDatetime}: ${postSummary.title}`);
28
+ const post = await client.getPost({ postId: postSummary.id });
29
+ const contents = (0, contents_js_1.formatPostContents)({ logger }, post);
30
+ if (post.coverImageUrl)
31
+ contents.unshift(formatCoverImage(post));
32
+ let hasUnknownContent = false;
33
+ const assetManifestData = {};
34
+ const download = download_js_1.downloadAsset.bind(undefined, {
35
+ headers,
36
+ logger,
37
+ pathManager,
38
+ transport,
39
+ });
40
+ const results = await Promise.allSettled(contents.map(async (content, index) => {
41
+ if (content instanceof content_js_1.ImageContent) {
42
+ const destination = pathManager.asset(index, content.id, content.extension);
43
+ const { bytes, sha256 } = await download({
44
+ destination,
45
+ fallbackDateTime: post.updatedDatetime,
46
+ mediaContent: content,
47
+ }).catch((err) => {
48
+ logger.error({ err }, `Error occurred while downloading image asset ${content.id}, skipping.`);
49
+ assetManifestData[content.id] = {
50
+ path: destination,
51
+ status: "failed",
52
+ url: content.url,
53
+ };
54
+ throw err;
55
+ });
56
+ assetManifestData[content.id] = {
57
+ bytes,
58
+ path: destination,
59
+ sha256,
60
+ status: "complete",
61
+ url: content.url,
62
+ };
63
+ return (0, asset_js_1.formatImageAsset)({
64
+ assetPath: pathManager.path,
65
+ contentPath: destination,
66
+ });
67
+ }
68
+ if (content instanceof content_js_1.FileContent) {
69
+ const destination = pathManager.asset(index, `${content.name}-${content.id}`, content.extension);
70
+ const { bytes, sha256 } = await download({
71
+ destination,
72
+ fallbackDateTime: post.updatedDatetime,
73
+ mediaContent: content,
74
+ }).catch((err) => {
75
+ logger.error({ err }, `Error occurred while downloading file asset ${content.id}, skipping.`);
76
+ assetManifestData[content.id] = {
77
+ path: destination,
78
+ status: "failed",
79
+ url: content.url,
80
+ };
81
+ throw err;
82
+ });
83
+ assetManifestData[content.id] = {
84
+ bytes,
85
+ path: destination,
86
+ sha256,
87
+ status: "complete",
88
+ url: content.url,
89
+ };
90
+ return (0, asset_js_1.formatFileAsset)({
91
+ assetPath: pathManager.path,
92
+ contentPath: destination,
93
+ });
94
+ }
95
+ if (content instanceof content_js_1.TextContent) {
96
+ return (0, asset_js_1.formatTextContent)(content);
97
+ }
98
+ logger.warn(`Post ${post.id} has unhandled content type ${content.type}, skipping.`);
99
+ hasUnknownContent = true;
100
+ }));
101
+ const markdownContent = results.map((result) => {
102
+ if (result.status === "fulfilled") {
103
+ return result.value;
104
+ }
105
+ const err = String(result.reason);
106
+ return `<!-- Error occurred while processing content: ${err} -->`;
107
+ });
108
+ await (0, promises_1.writeFile)(pathManager.asset(0, "content", "md"), markdownContent.join("\n\n"));
109
+ return {
110
+ assets: assetManifestData,
111
+ id: post.id,
112
+ restricted: false,
113
+ status: hasUnknownContent ? "partial" : "complete",
114
+ updatedDatetime: post.updatedDatetime,
115
+ };
116
+ }
117
+ function formatCoverImage(post) {
118
+ if (!post.coverImageUrl)
119
+ throw new Error("Post does not have a cover image");
120
+ const extension = (0, node_path_1.extname)(new URL(post.coverImageUrl).pathname).slice(1) || "jpg";
121
+ return new content_js_1.ImageContent({
122
+ extension,
123
+ id: "cover",
124
+ originalUrl: post.coverImageUrl,
125
+ });
126
+ }
127
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ArticleUrlEmbedBlock } from "../../client/models/post/article.js";
2
+ import type { ArticleUrlEmbedItem } from "../../client/models/post/url-embed.js";
3
+ import { TextContent } from "./content.js";
4
+ export declare function handleUrlEmbedBlock(block: ArticleUrlEmbedBlock, urlEmbedMap: Record<string, ArticleUrlEmbedItem>): TextContent<{
5
+ text: string;
6
+ }> | null;
7
+ //# sourceMappingURL=url-embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-embed.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/url-embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC;;UASjD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleUrlEmbedBlock = handleUrlEmbedBlock;
4
+ const content_js_1 = require("./content.js");
5
+ function handleUrlEmbedBlock(block, urlEmbedMap) {
6
+ const item = urlEmbedMap[block.urlEmbedId];
7
+ if (isUrlEmbedType("twitter", item))
8
+ return new content_js_1.TextContent({ text: item.html });
9
+ return null;
10
+ }
11
+ function isUrlEmbedType(type, item) {
12
+ return item.type === type;
13
+ }
14
+ //# sourceMappingURL=url-embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-embed.js","sourceRoot":"","sources":["../../../../src/downloader/post/url-embed.ts"],"names":[],"mappings":";;AAWA,kDAWC;AAjBD,6CAA2C;AAM3C,SAAgB,mBAAmB,CACjC,KAA2B,EAC3B,WAAgD;IAEhD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;QACjC,OAAO,IAAI,wBAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAG9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,IAAO,EACP,IAAyB;IAEzB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC"}
@@ -1,3 +1,3 @@
1
- export { FanboxApiError, FanboxClient } from "./client.js";
2
- export type * from "./types.js";
1
+ export { FanboxApiError, FanboxClient } from "./client/client.js";
2
+ export type * from "./client/types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,mBAAmB,mBAAmB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FanboxClient = exports.FanboxApiError = void 0;
4
- var client_js_1 = require("./client.js");
4
+ var client_js_1 = require("./client/client.js");
5
5
  Object.defineProperty(exports, "FanboxApiError", { enumerable: true, get: function () { return client_js_1.FanboxApiError; } });
6
6
  Object.defineProperty(exports, "FanboxClient", { enumerable: true, get: function () { return client_js_1.FanboxClient; } });
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA2D;AAAlD,2GAAA,cAAc,OAAA;AAAE,yGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAkE;AAAzD,2GAAA,cAAc,OAAA;AAAE,yGAAA,YAAY,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { type ClientHttp2Session } from "node:http2";
2
+ export declare class Http2SessionManager {
3
+ #private;
4
+ closeAll(): Promise<void>;
5
+ getSession(url: string): ClientHttp2Session;
6
+ }
7
+ //# sourceMappingURL=http2-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http2-session.d.ts","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAW,MAAM,YAAY,CAAC;AAE9D,qBAAa,mBAAmB;;IAGxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CAqB5C"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var _Http2SessionManager_sessions;
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Http2SessionManager = void 0;
10
+ const node_http2_1 = require("node:http2");
11
+ class Http2SessionManager {
12
+ constructor() {
13
+ _Http2SessionManager_sessions.set(this, new Map());
14
+ }
15
+ async closeAll() {
16
+ const sessions = [...__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").values()];
17
+ __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").clear();
18
+ await Promise.all(sessions.map(closeHttp2Session));
19
+ }
20
+ getSession(url) {
21
+ const origin = new URL(url).origin;
22
+ const existing = __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin);
23
+ if (existing && !existing.closed && !existing.destroyed) {
24
+ return existing;
25
+ }
26
+ const session = (0, node_http2_1.connect)(origin);
27
+ __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").set(origin, session);
28
+ const cleanup = () => {
29
+ if (__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin) === session) {
30
+ __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").delete(origin);
31
+ }
32
+ };
33
+ session.once("close", cleanup);
34
+ session.once("error", cleanup);
35
+ return session;
36
+ }
37
+ }
38
+ exports.Http2SessionManager = Http2SessionManager;
39
+ _Http2SessionManager_sessions = new WeakMap();
40
+ function closeHttp2Session(session) {
41
+ if (session.closed || session.destroyed) {
42
+ return Promise.resolve();
43
+ }
44
+ return new Promise((resolve) => {
45
+ session.close(resolve);
46
+ });
47
+ }
48
+ //# sourceMappingURL=http2-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http2-session.js","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8D;AAE9D,MAAa,mBAAmB;IAAhC;QACW,wCAAY,IAAI,GAAG,EAA8B,EAAC;IA6B7D,CAAC;IA3BC,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAA,IAAI,qCAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,uBAAA,IAAI,qCAAU,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,OAAO,GAAG,IAAA,oBAAO,EAAC,MAAM,CAAC,CAAC;QAChC,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC3C,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA9BD,kDA8BC;;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface HttpTransport {
2
+ fetch(input: Request | string | URL): Promise<Response>;
3
+ }
4
+ export declare class Http2Error extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class Http2Transport {
8
+ #private;
9
+ fetch(input: Request | string | URL): Promise<Response>;
10
+ }
11
+ //# sourceMappingURL=http2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http2.d.ts","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAInC;AAED,qBAAa,cAAc;;IAGzB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8BpC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var _Http2Transport_pool;
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Http2Transport = exports.Http2Error = void 0;
10
+ const http2_session_js_1 = require("./http2-session.js");
11
+ const HTTP2_HEADER_STATUS = ":status";
12
+ class Http2Error extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = "Http2Error";
16
+ }
17
+ }
18
+ exports.Http2Error = Http2Error;
19
+ class Http2Transport {
20
+ constructor() {
21
+ _Http2Transport_pool.set(this, new http2_session_js_1.Http2SessionManager());
22
+ }
23
+ fetch(input) {
24
+ const request = input instanceof Request ? input : new Request(input);
25
+ const headers = attachHttp2Headers(request);
26
+ const session = __classPrivateFieldGet(this, _Http2Transport_pool, "f").getSession(request.url);
27
+ const stream = session.request(headers, { endStream: !request.body });
28
+ return new Promise((resolve, reject) => {
29
+ let settled = false;
30
+ stream.once("error", reject);
31
+ stream.once("close", () => {
32
+ if (!settled) {
33
+ reject(new Http2Error(`HTTP/2 stream closed before response`));
34
+ }
35
+ });
36
+ stream.once("response", (responseHeaders) => {
37
+ settled = true;
38
+ resolve(new Response(stream, {
39
+ headers: createResponseHeaders(responseHeaders),
40
+ status: parseStatus(responseHeaders[HTTP2_HEADER_STATUS]),
41
+ }));
42
+ });
43
+ if (request.body)
44
+ stream.end(request.body);
45
+ });
46
+ }
47
+ }
48
+ exports.Http2Transport = Http2Transport;
49
+ _Http2Transport_pool = new WeakMap();
50
+ function attachHttp2Headers(request) {
51
+ const url = new URL(request.url);
52
+ const headers = { ...Object.fromEntries(request.headers) };
53
+ headers[":authority"] = url.host;
54
+ headers[":method"] = request.method.toUpperCase();
55
+ headers[":path"] = `${url.pathname}${url.search}`;
56
+ headers[":scheme"] = url.protocol.slice(0, -1);
57
+ return headers;
58
+ }
59
+ function createResponseHeaders(headers) {
60
+ const result = new Headers();
61
+ for (const [key, value] of Object.entries(headers)) {
62
+ if (key.startsWith(":") ||
63
+ value === undefined)
64
+ continue;
65
+ if (Array.isArray(value)) {
66
+ for (const item of value) {
67
+ result.append(key, item);
68
+ }
69
+ }
70
+ else {
71
+ result.set(key, value);
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ function parseStatus(status) {
77
+ if (typeof status === "number") {
78
+ return status;
79
+ }
80
+ if (Array.isArray(status)) {
81
+ return Number(status[0] ?? 0);
82
+ }
83
+ return Number(status ?? 0);
84
+ }
85
+ //# sourceMappingURL=http2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http2.js","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Logger } from "pino";
2
+ import { type HttpTransport } from "./http2.js";
3
+ export interface RequestQueueOptions {
4
+ concurrency?: number;
5
+ intervalMs?: number;
6
+ maxRetries?: number;
7
+ rateLimitPauseMs?: number;
8
+ transport?: HttpTransport;
9
+ }
10
+ export declare class RequestWorker {
11
+ #private;
12
+ constructor({ logger }: {
13
+ logger: Logger;
14
+ }, { concurrency, intervalMs, maxRetries, rateLimitPauseMs, transport, }?: RequestQueueOptions);
15
+ fetch(request: Request | string | URL): Promise<Response>;
16
+ }
17
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAwED,qBAAa,aAAa;;gBAStB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAe,EACf,UAAgB,EAChB,UAAc,EACd,gBAAgB,EAChB,SAAgC,GACjC,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CAwC5C"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _ConcurrencyLimiter_active, _ConcurrencyLimiter_logger, _ConcurrencyLimiter_queue, _TimeLimiter_availableAt, _TimeLimiter_logger, _RequestWorker_instances, _RequestWorker_concurrencyLimiter, _RequestWorker_logger, _RequestWorker_maxRetries, _RequestWorker_rateLimitPauseMs, _RequestWorker_timeLimiter, _RequestWorker_transport, _RequestWorker_fetch;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.RequestWorker = void 0;
16
+ const http2_js_1 = require("./http2.js");
17
+ class ConcurrencyLimiter {
18
+ constructor({ logger }, concurrency) {
19
+ this.concurrency = concurrency;
20
+ _ConcurrencyLimiter_active.set(this, 0);
21
+ _ConcurrencyLimiter_logger.set(this, void 0);
22
+ _ConcurrencyLimiter_queue.set(this, []);
23
+ __classPrivateFieldSet(this, _ConcurrencyLimiter_logger, logger, "f");
24
+ __classPrivateFieldGet(this, _ConcurrencyLimiter_logger, "f").trace({ concurrency }, "Initialized ConcurrencyLimiter");
25
+ }
26
+ async acquire() {
27
+ var _a;
28
+ if (__classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f") >= this.concurrency) {
29
+ __classPrivateFieldGet(this, _ConcurrencyLimiter_logger, "f").trace(`Concurrency limit reached (${__classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f")}/${this.concurrency}), waiting for release.`);
30
+ await new Promise((release) => __classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").push(release));
31
+ }
32
+ __classPrivateFieldSet(this, _ConcurrencyLimiter_active, (_a = __classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f"), ++_a), "f");
33
+ }
34
+ release() {
35
+ var _a;
36
+ __classPrivateFieldSet(this, _ConcurrencyLimiter_active, (_a = __classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f"), --_a), "f");
37
+ if (__classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").length > 0) {
38
+ const next = __classPrivateFieldGet(this, _ConcurrencyLimiter_queue, "f").shift();
39
+ if (next) {
40
+ __classPrivateFieldGet(this, _ConcurrencyLimiter_logger, "f").trace(`Concurrency limit released (${__classPrivateFieldGet(this, _ConcurrencyLimiter_active, "f")}/${this.concurrency}), processing next request.`);
41
+ next();
42
+ }
43
+ }
44
+ }
45
+ }
46
+ _ConcurrencyLimiter_active = new WeakMap(), _ConcurrencyLimiter_logger = new WeakMap(), _ConcurrencyLimiter_queue = new WeakMap();
47
+ class TimeLimiter {
48
+ constructor({ logger }, intervalMs) {
49
+ this.intervalMs = intervalMs;
50
+ _TimeLimiter_availableAt.set(this, 0);
51
+ _TimeLimiter_logger.set(this, void 0);
52
+ __classPrivateFieldSet(this, _TimeLimiter_logger, logger, "f");
53
+ __classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Initialized TimeLimiter with interval ${intervalMs}ms`);
54
+ }
55
+ setNextAvailableAt(availableAt) {
56
+ __classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Setting next available time to ${availableAt}.`);
57
+ __classPrivateFieldSet(this, _TimeLimiter_availableAt, availableAt, "f");
58
+ }
59
+ async wait() {
60
+ const now = Date.now();
61
+ if (__classPrivateFieldGet(this, _TimeLimiter_availableAt, "f") > now) {
62
+ const waitMs = __classPrivateFieldGet(this, _TimeLimiter_availableAt, "f") - now;
63
+ __classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Waiting for time limiter for ${waitMs}ms, until ${__classPrivateFieldGet(this, _TimeLimiter_availableAt, "f")}.`);
64
+ await sleep(waitMs);
65
+ __classPrivateFieldGet(this, _TimeLimiter_logger, "f").trace(`Time limiter continued at ${__classPrivateFieldGet(this, _TimeLimiter_availableAt, "f")}.`);
66
+ }
67
+ this.setNextAvailableAt(Date.now() + this.intervalMs);
68
+ }
69
+ }
70
+ _TimeLimiter_availableAt = new WeakMap(), _TimeLimiter_logger = new WeakMap();
71
+ class RequestWorker {
72
+ constructor({ logger }, { concurrency = 5, intervalMs = 500, maxRetries = 3, rateLimitPauseMs, transport = new http2_js_1.Http2Transport(), } = {}) {
73
+ _RequestWorker_instances.add(this);
74
+ _RequestWorker_concurrencyLimiter.set(this, void 0);
75
+ _RequestWorker_logger.set(this, void 0);
76
+ _RequestWorker_maxRetries.set(this, void 0);
77
+ _RequestWorker_rateLimitPauseMs.set(this, void 0);
78
+ _RequestWorker_timeLimiter.set(this, void 0);
79
+ _RequestWorker_transport.set(this, void 0);
80
+ __classPrivateFieldSet(this, _RequestWorker_logger, logger, "f");
81
+ __classPrivateFieldSet(this, _RequestWorker_transport, transport, "f");
82
+ __classPrivateFieldSet(this, _RequestWorker_concurrencyLimiter, new ConcurrencyLimiter({ logger }, concurrency), "f");
83
+ __classPrivateFieldSet(this, _RequestWorker_timeLimiter, new TimeLimiter({ logger }, intervalMs), "f");
84
+ __classPrivateFieldSet(this, _RequestWorker_maxRetries, maxRetries, "f");
85
+ __classPrivateFieldSet(this, _RequestWorker_rateLimitPauseMs, rateLimitPauseMs, "f");
86
+ logger.trace({
87
+ concurrency,
88
+ intervalMs,
89
+ maxRetries,
90
+ rateLimitPauseMs,
91
+ transport: transport.constructor.name,
92
+ }, "Initialized RequestWorker");
93
+ }
94
+ async fetch(request) {
95
+ await __classPrivateFieldGet(this, _RequestWorker_concurrencyLimiter, "f").acquire();
96
+ return __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, request).finally(() => {
97
+ __classPrivateFieldGet(this, _RequestWorker_concurrencyLimiter, "f").release();
98
+ });
99
+ }
100
+ }
101
+ exports.RequestWorker = RequestWorker;
102
+ _RequestWorker_concurrencyLimiter = new WeakMap(), _RequestWorker_logger = new WeakMap(), _RequestWorker_maxRetries = new WeakMap(), _RequestWorker_rateLimitPauseMs = new WeakMap(), _RequestWorker_timeLimiter = new WeakMap(), _RequestWorker_transport = new WeakMap(), _RequestWorker_instances = new WeakSet(), _RequestWorker_fetch = async function _RequestWorker_fetch(request, retryRemains = __classPrivateFieldGet(this, _RequestWorker_maxRetries, "f")) {
103
+ __classPrivateFieldGet(this, _RequestWorker_logger, "f").trace(`Fetching request with max ${retryRemains} retries to ${request instanceof Request ? request.url : request.toString()}`);
104
+ await __classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").wait();
105
+ const requestObj = request instanceof Request ? request.clone() : new Request(request);
106
+ const response = await __classPrivateFieldGet(this, _RequestWorker_transport, "f").fetch(requestObj);
107
+ if (response.ok)
108
+ return response;
109
+ if (response.status === 429) {
110
+ const retryAfter = __classPrivateFieldGet(this, _RequestWorker_rateLimitPauseMs, "f") ?? parseRetryAfter(response) ?? 60000;
111
+ const availableAt = Date.now() + retryAfter;
112
+ __classPrivateFieldGet(this, _RequestWorker_logger, "f").warn("Received 429 Too Many Requests. Pausing requests.");
113
+ await sleep(retryAfter);
114
+ __classPrivateFieldGet(this, _RequestWorker_timeLimiter, "f").setNextAvailableAt(availableAt);
115
+ }
116
+ if (retryRemains <= 0) {
117
+ __classPrivateFieldGet(this, _RequestWorker_logger, "f").error(`Request failed with ${response.status} ${response.statusText} after maximum retries.`);
118
+ return response;
119
+ }
120
+ return __classPrivateFieldGet(this, _RequestWorker_instances, "m", _RequestWorker_fetch).call(this, request, retryRemains - 1);
121
+ };
122
+ function parseRetryAfter(response, now = Date.now()) {
123
+ const retryAfter = response.headers.get("Retry-After");
124
+ if (!retryAfter) {
125
+ return undefined;
126
+ }
127
+ const seconds = Number(retryAfter);
128
+ if (Number.isFinite(seconds)) {
129
+ return Math.max(0, seconds * 1000);
130
+ }
131
+ const date = Date.parse(retryAfter);
132
+ return Number.isNaN(date) ? undefined : Math.max(0, date - now);
133
+ }
134
+ function sleep(milliseconds) {
135
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
136
+ }
137
+ //# sourceMappingURL=worker.js.map