@moontaiworks/fanbox-dl 1.5.5 → 1.7.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 (92) hide show
  1. package/README.md +51 -37
  2. package/dist/cjs/downloader/asset/download.d.ts +3 -1
  3. package/dist/cjs/downloader/asset/download.d.ts.map +1 -1
  4. package/dist/cjs/downloader/asset/download.js +11 -14
  5. package/dist/cjs/downloader/asset/download.js.map +1 -1
  6. package/dist/cjs/downloader/cli/options.d.ts +4 -1
  7. package/dist/cjs/downloader/cli/options.d.ts.map +1 -1
  8. package/dist/cjs/downloader/cli/options.js +10 -1
  9. package/dist/cjs/downloader/cli/options.js.map +1 -1
  10. package/dist/cjs/downloader/creator/discover-posts.d.ts.map +1 -1
  11. package/dist/cjs/downloader/creator/discover-posts.js +5 -3
  12. package/dist/cjs/downloader/creator/discover-posts.js.map +1 -1
  13. package/dist/cjs/downloader/creator/sync.d.ts +2 -1
  14. package/dist/cjs/downloader/creator/sync.d.ts.map +1 -1
  15. package/dist/cjs/downloader/creator/sync.js +26 -27
  16. package/dist/cjs/downloader/creator/sync.js.map +1 -1
  17. package/dist/cjs/downloader/fs/filesystem.d.ts +3 -0
  18. package/dist/cjs/downloader/fs/filesystem.d.ts.map +1 -1
  19. package/dist/cjs/downloader/fs/filesystem.js +27 -2
  20. package/dist/cjs/downloader/fs/filesystem.js.map +1 -1
  21. package/dist/cjs/downloader/fs/path-manager.d.ts +10 -3
  22. package/dist/cjs/downloader/fs/path-manager.d.ts.map +1 -1
  23. package/dist/cjs/downloader/fs/path-manager.js +102 -12
  24. package/dist/cjs/downloader/fs/path-manager.js.map +1 -1
  25. package/dist/cjs/downloader/index.d.ts.map +1 -1
  26. package/dist/cjs/downloader/index.js +16 -13
  27. package/dist/cjs/downloader/index.js.map +1 -1
  28. package/dist/cjs/downloader/manifest/creator-manager.d.ts +3 -0
  29. package/dist/cjs/downloader/manifest/creator-manager.d.ts.map +1 -1
  30. package/dist/cjs/downloader/manifest/creator-manager.js +30 -2
  31. package/dist/cjs/downloader/manifest/creator-manager.js.map +1 -1
  32. package/dist/cjs/downloader/manifest/creator.d.ts +6 -0
  33. package/dist/cjs/downloader/manifest/creator.d.ts.map +1 -1
  34. package/dist/cjs/downloader/manifest/creator.js +11 -1
  35. package/dist/cjs/downloader/manifest/creator.js.map +1 -1
  36. package/dist/cjs/downloader/post/article.d.ts.map +1 -1
  37. package/dist/cjs/downloader/post/article.js +25 -22
  38. package/dist/cjs/downloader/post/article.js.map +1 -1
  39. package/dist/cjs/downloader/post/sync.d.ts +3 -2
  40. package/dist/cjs/downloader/post/sync.d.ts.map +1 -1
  41. package/dist/cjs/downloader/post/sync.js +127 -79
  42. package/dist/cjs/downloader/post/sync.js.map +1 -1
  43. package/dist/cjs/downloader/post/verify.d.ts +9 -0
  44. package/dist/cjs/downloader/post/verify.d.ts.map +1 -0
  45. package/dist/cjs/downloader/post/verify.js +64 -0
  46. package/dist/cjs/downloader/post/verify.js.map +1 -0
  47. package/dist/esm/downloader/asset/download.d.ts +3 -1
  48. package/dist/esm/downloader/asset/download.d.ts.map +1 -1
  49. package/dist/esm/downloader/asset/download.js +12 -15
  50. package/dist/esm/downloader/asset/download.js.map +1 -1
  51. package/dist/esm/downloader/cli/options.d.ts +4 -1
  52. package/dist/esm/downloader/cli/options.d.ts.map +1 -1
  53. package/dist/esm/downloader/cli/options.js +10 -1
  54. package/dist/esm/downloader/cli/options.js.map +1 -1
  55. package/dist/esm/downloader/creator/discover-posts.d.ts.map +1 -1
  56. package/dist/esm/downloader/creator/discover-posts.js +5 -3
  57. package/dist/esm/downloader/creator/discover-posts.js.map +1 -1
  58. package/dist/esm/downloader/creator/sync.d.ts +2 -1
  59. package/dist/esm/downloader/creator/sync.d.ts.map +1 -1
  60. package/dist/esm/downloader/creator/sync.js +26 -27
  61. package/dist/esm/downloader/creator/sync.js.map +1 -1
  62. package/dist/esm/downloader/fs/filesystem.d.ts +3 -0
  63. package/dist/esm/downloader/fs/filesystem.d.ts.map +1 -1
  64. package/dist/esm/downloader/fs/filesystem.js +24 -2
  65. package/dist/esm/downloader/fs/filesystem.js.map +1 -1
  66. package/dist/esm/downloader/fs/path-manager.d.ts +10 -3
  67. package/dist/esm/downloader/fs/path-manager.d.ts.map +1 -1
  68. package/dist/esm/downloader/fs/path-manager.js +102 -12
  69. package/dist/esm/downloader/fs/path-manager.js.map +1 -1
  70. package/dist/esm/downloader/index.d.ts.map +1 -1
  71. package/dist/esm/downloader/index.js +16 -13
  72. package/dist/esm/downloader/index.js.map +1 -1
  73. package/dist/esm/downloader/manifest/creator-manager.d.ts +3 -0
  74. package/dist/esm/downloader/manifest/creator-manager.d.ts.map +1 -1
  75. package/dist/esm/downloader/manifest/creator-manager.js +30 -2
  76. package/dist/esm/downloader/manifest/creator-manager.js.map +1 -1
  77. package/dist/esm/downloader/manifest/creator.d.ts +6 -0
  78. package/dist/esm/downloader/manifest/creator.d.ts.map +1 -1
  79. package/dist/esm/downloader/manifest/creator.js +11 -1
  80. package/dist/esm/downloader/manifest/creator.js.map +1 -1
  81. package/dist/esm/downloader/post/article.d.ts.map +1 -1
  82. package/dist/esm/downloader/post/article.js +25 -22
  83. package/dist/esm/downloader/post/article.js.map +1 -1
  84. package/dist/esm/downloader/post/sync.d.ts +3 -2
  85. package/dist/esm/downloader/post/sync.d.ts.map +1 -1
  86. package/dist/esm/downloader/post/sync.js +127 -79
  87. package/dist/esm/downloader/post/sync.js.map +1 -1
  88. package/dist/esm/downloader/post/verify.d.ts +9 -0
  89. package/dist/esm/downloader/post/verify.d.ts.map +1 -0
  90. package/dist/esm/downloader/post/verify.js +61 -0
  91. package/dist/esm/downloader/post/verify.js.map +1 -0
  92. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AAoCzD,MAAM,OAAO,eAAe;IAE1B,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAQD,YACE,OAA4B,EACZ,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAb1B,YAAO,GAAG,CAAU,CAAC;QAK9B,wCAA2B;QAC3B,kCAAU,KAAK,EAAC;QAChB,0CAAgB;QAChB,gDAAsB;QACtB,yCAAmC;QAMjC,uBAAA,IAAI,2BAAW,OAAO,CAAC,MAAM,MAAA,CAAC;QAC9B,uBAAA,IAAI,iCAAiB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAA,CAAC;QAC/D,uBAAA,IAAI,0BAAU,OAAO,CAAC,KAAK,IAAI,IAAI,eAAe,EAAuB,MAAA,CAAC;QAE1E,uBAAA,IAAI,yBAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,uBAAA,IAAI,+BAAQ;YAAE,OAAO;QACzB,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,gCAAgC,IAAI,CAAC,SAAS,SAAS,uBAAA,IAAI,qCAAc,EAAE,CAC5E,CAAC;QAEF,uBAAA,IAAI,2BAAW,IAAI,MAAA,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,CAAC,CAAC;QAExD,uBAAA,IAAI,yBAAS,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC;YAExE,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,oCAAoC,IAAI,CAAC,SAAS,kBAAkB,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,+BAA+B,IAAI,CAAC,SAAS,OAAO,uBAAA,IAAI,qCAAc,EAAE,CACzE,CAAC;QACF,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,EAAE,uBAAA,IAAI,6BAAM,CAAC,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AAuCzD,MAAM,OAAO,eAAe;IAE1B,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAQD,YACE,OAA4B,EACZ,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAjB1B,YAAO,GAAG,CAAU,CAAC;QAS9B,wCAA2B;QAC3B,kCAAU,KAAK,EAAC;QAChB,0CAAgB;QAChB,gDAAsB;QACtB,yCAAmC;QAMjC,uBAAA,IAAI,2BAAW,OAAO,CAAC,MAAM,MAAA,CAAC;QAC9B,uBAAA,IAAI,iCAAiB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAA,CAAC;QAC/D,uBAAA,IAAI,0BAAU,OAAO,CAAC,KAAK,IAAI,IAAI,eAAe,EAAuB,MAAA,CAAC;QAE1E,uBAAA,IAAI,yBAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,uBAAA,IAAI,+BAAQ;YAAE,OAAO;QACzB,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,gCAAgC,IAAI,CAAC,SAAS,SAAS,uBAAA,IAAI,qCAAc,EAAE,CAC5E,CAAC;QAEF,uBAAA,IAAI,2BAAW,IAAI,MAAA,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,CAAC,CAAC;QAExD,uBAAA,IAAI,yBAAS,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,KAAc;QACvB,uBAAA,IAAI,6BAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,aAAa;QACX,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IACE,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK;YACjB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,EACrE,CAAC;YAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,oCAAoC,IAAI,CAAC,SAAS,kBAAkB,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,+BAA+B,IAAI,CAAC,SAAS,OAAO,uBAAA,IAAI,qCAAc,EAAE,CACzE,CAAC;QACF,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,EAAE,uBAAA,IAAI,6BAAM,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/article.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAc5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE,CAgClE"}
1
+ {"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/article.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAc5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE,CAIlE"}
@@ -3,30 +3,33 @@ import { handleEmbedBlock } from "./embed.js";
3
3
  import { handleUrlEmbedBlock } from "./url-embed.js";
4
4
  export function formatArticleContents(post) {
5
5
  return post.body.blocks
6
- .map((block) => {
7
- if (isArticleBlockType("image", block)) {
8
- const image = post.body.imageMap[block.imageId];
9
- return new ImageContent(image);
10
- }
11
- if (isArticleBlockType("file", block)) {
12
- const file = post.body.fileMap[block.fileId];
13
- return new FileContent(file);
14
- }
15
- if (isArticleBlockType("url_embed", block)) {
16
- return handleUrlEmbedBlock(block, post.body.urlEmbedMap);
17
- }
18
- if (isArticleBlockType("embed", block)) {
19
- return handleEmbedBlock(block, post.body.embedMap);
20
- }
21
- if (isArticleBlockType("p", block) ||
22
- isArticleBlockType("header", block)) {
23
- return new TextContent(block);
24
- }
25
- return null;
26
- })
27
- .filter((content) => !!content);
6
+ .map((block) => formatArticleBlock(post, block))
7
+ .filter(isContent);
8
+ }
9
+ function formatArticleBlock(post, block) {
10
+ if (isArticleBlockType("image", block)) {
11
+ const image = post.body.imageMap[block.imageId];
12
+ return new ImageContent(image);
13
+ }
14
+ if (isArticleBlockType("file", block)) {
15
+ const file = post.body.fileMap[block.fileId];
16
+ return new FileContent(file);
17
+ }
18
+ if (isArticleBlockType("url_embed", block)) {
19
+ return handleUrlEmbedBlock(block, post.body.urlEmbedMap);
20
+ }
21
+ if (isArticleBlockType("embed", block)) {
22
+ return handleEmbedBlock(block, post.body.embedMap);
23
+ }
24
+ if (isArticleBlockType("p", block) || isArticleBlockType("header", block)) {
25
+ return new TextContent(block);
26
+ }
27
+ return null;
28
28
  }
29
29
  function isArticleBlockType(type, item) {
30
30
  return item.type === type;
31
31
  }
32
+ function isContent(content) {
33
+ return content !== null;
34
+ }
32
35
  //# sourceMappingURL=article.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"article.js","sourceRoot":"","sources":["../../../../src/downloader/post/article.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAWrD,MAAM,UAAU,qBAAqB,CAAC,IAAiB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,IACE,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC;YAC9B,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,EACnC,CAAC;YACD,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAGD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAO,EACP,IAAkB;IAElB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"article.js","sourceRoot":"","sources":["../../../../src/downloader/post/article.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAWrD,MAAM,UAAU,qBAAqB,CAAC,IAAiB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC/C,MAAM,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAiB,EACjB,KAAmB;IAEnB,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAO,EACP,IAAkB;IAElB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS,CAAC,OAAuB;IACxC,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC"}
@@ -5,7 +5,8 @@ import type { PathManager } from "../fs/path-manager.js";
5
5
  import type { CreatorManifest, PostManifestData } from "../manifest/creator.js";
6
6
  interface PreSyncPostCheckDeps {
7
7
  logger: Logger;
8
- manifest: CreatorManifest;
8
+ manifest: Pick<CreatorManifest, "posts">;
9
+ verify?: boolean;
9
10
  }
10
11
  interface SyncPostDeps {
11
12
  headers?: Record<string, string>;
@@ -13,7 +14,7 @@ interface SyncPostDeps {
13
14
  pathManager: PathManager;
14
15
  transport: HttpTransport;
15
16
  }
16
- export declare function preSyncPostCheck({ logger, manifest }: PreSyncPostCheckDeps, postSummary: PostSummary): PostManifestData;
17
+ export declare function preSyncPostCheck({ logger, manifest, verify }: PreSyncPostCheckDeps, postSummary: PostSummary): Promise<PostManifestData>;
17
18
  export declare function syncPost({ headers, logger, pathManager, transport }: SyncPostDeps, post: Post): Promise<PostManifestData>;
18
19
  export {};
19
20
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +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,IAAI,EAAE,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,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,GACvB,gBAAgB,CA6BlB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CAgI3B"}
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,IAAI,EAAE,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;AAsBhC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmBD,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAsB,gBAAgB,CACpC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAClD,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAkC3B;AAED,wBAAsB,QAAQ,CAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,YAAY,EACzD,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,gBAAgB,CAAC,CA8C3B"}
@@ -4,7 +4,17 @@ import { downloadAsset } from "../asset/download.js";
4
4
  import { formatFileAsset, formatImageAsset, formatTextContent, } from "../markdown/asset.js";
5
5
  import { FileContent, ImageContent, TextContent } from "./content.js";
6
6
  import { formatPostContents } from "./contents.js";
7
- export function preSyncPostCheck({ logger, manifest }, postSummary) {
7
+ import { verifyCompletePost } from "./verify.js";
8
+ export async function preSyncPostCheck({ logger, manifest, verify }, postSummary) {
9
+ const existingPost = manifest.posts[postSummary.id];
10
+ if (existingPost?.status === "complete" &&
11
+ postSummary.updatedDatetime === existingPost.updatedDatetime) {
12
+ logger.debug(`Post ${postSummary.id} has no changes, skipping download.`);
13
+ if (verify) {
14
+ return verifyCompletePost({ logger }, existingPost, postSummary);
15
+ }
16
+ return existingPost;
17
+ }
8
18
  if (postSummary.isRestricted) {
9
19
  logger.debug(`Post ${postSummary.id} is restricted, skipping download.`);
10
20
  return {
@@ -15,12 +25,6 @@ export function preSyncPostCheck({ logger, manifest }, postSummary) {
15
25
  updatedDatetime: postSummary.updatedDatetime,
16
26
  };
17
27
  }
18
- const existingPost = manifest.posts[postSummary.id];
19
- if (existingPost?.status === "complete" &&
20
- postSummary.updatedDatetime === existingPost.updatedDatetime) {
21
- logger.debug(`Post ${postSummary.id} has no changes, skipping download.`);
22
- return existingPost;
23
- }
24
28
  return {
25
29
  assets: {},
26
30
  id: postSummary.id,
@@ -34,86 +38,31 @@ export async function syncPost({ headers, logger, pathManager, transport }, post
34
38
  const contents = formatPostContents({ logger }, post);
35
39
  if (post.coverImageUrl)
36
40
  contents.unshift(formatCoverImage(post));
37
- let hasUnknownContent = false;
38
- const assetManifestData = {};
39
- const download = downloadAsset.bind(undefined, {
40
- headers,
41
- logger,
42
- transport,
43
- });
44
41
  const totalDigits = contents.length.toString().length;
45
- const results = await Promise.allSettled(contents.map(async (content, index) => {
46
- const indexPadded = index.toString().padStart(totalDigits, "0");
47
- if (content instanceof ImageContent) {
48
- const destination = pathManager.asset(indexPadded, content.id, content.extension);
49
- const { bytes, sha256 } = await download({
50
- destination,
51
- fallbackDateTime: post.updatedDatetime,
52
- mediaContent: content,
53
- }).catch((err) => {
54
- logger.error({ err }, `Error occurred while downloading image asset ${content.id}, skipping.`);
55
- assetManifestData[content.id] = {
56
- path: destination,
57
- status: "failed",
58
- url: content.url,
59
- };
60
- throw err;
61
- });
62
- assetManifestData[content.id] = {
63
- bytes,
64
- path: destination,
65
- sha256,
66
- status: "complete",
67
- url: content.url,
68
- };
69
- return formatImageAsset({ assetPath: destination });
70
- }
71
- if (content instanceof FileContent) {
72
- const destination = pathManager.asset(indexPadded, `${content.name}-${content.id}`, content.extension);
73
- const { bytes, sha256 } = await download({
74
- destination,
75
- fallbackDateTime: post.updatedDatetime,
76
- mediaContent: content,
77
- }).catch((err) => {
78
- logger.error({ err }, `Error occurred while downloading file asset ${content.id}, skipping.`);
79
- assetManifestData[content.id] = {
80
- path: destination,
81
- status: "failed",
82
- url: content.url,
83
- };
84
- throw err;
85
- });
86
- assetManifestData[content.id] = {
87
- bytes,
88
- path: destination,
89
- sha256,
90
- status: "complete",
91
- url: content.url,
92
- };
93
- return formatFileAsset({ assetPath: destination });
94
- }
95
- if (content instanceof TextContent) {
96
- return 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 writeFile(pathManager.asset("0".padStart(totalDigits, "0"), "content", "md"), markdownContent.join("\n\n"));
42
+ const results = await Promise.allSettled(contents.map((content, index) => processContent({ headers, logger, pathManager, post, transport }, { content, index, totalDigits })));
43
+ const hasRejectedContent = results.some((result) => result.status === "rejected");
44
+ const fulfilled = fulfilledResults(results);
45
+ const hasUnknownContent = fulfilled.some((result) => result.unknown);
46
+ const hasFailedContent = fulfilled.some((result) => result.failed);
47
+ const assetManifestData = collectAssetManifestData(fulfilled);
48
+ const markdownContent = formatMarkdownContent(results);
49
+ await writeFile(pathManager.asset([
50
+ { context: "0".padStart(totalDigits, "0"), required: true },
51
+ { context: "content", required: true },
52
+ ], "md"), markdownContent.join("\n\n"));
109
53
  return {
110
54
  assets: assetManifestData,
111
55
  id: post.id,
112
56
  restricted: false,
113
- status: hasUnknownContent ? "partial" : "complete",
57
+ status: hasUnknownContent || hasFailedContent || hasRejectedContent
58
+ ? "partial"
59
+ : "complete",
114
60
  updatedDatetime: post.updatedDatetime,
115
61
  };
116
62
  }
63
+ function collectAssetManifestData(contents) {
64
+ return Object.fromEntries(contents.flatMap((content) => content.assets ?? []));
65
+ }
117
66
  function formatCoverImage(post) {
118
67
  if (!post.coverImageUrl)
119
68
  throw new Error("Post does not have a cover image");
@@ -124,4 +73,103 @@ function formatCoverImage(post) {
124
73
  originalUrl: post.coverImageUrl,
125
74
  });
126
75
  }
76
+ function formatMarkdownContent(results) {
77
+ return results.map((result) => {
78
+ if (result.status === "fulfilled") {
79
+ return result.value.markdown;
80
+ }
81
+ const err = String(result.reason);
82
+ return `<!-- Error occurred while processing content: ${err} -->`;
83
+ });
84
+ }
85
+ function formatMediaAsset(content, destination) {
86
+ if (content instanceof ImageContent) {
87
+ return formatImageAsset({ assetPath: destination });
88
+ }
89
+ return formatFileAsset({ assetPath: destination });
90
+ }
91
+ function fulfilledResults(results) {
92
+ return results
93
+ .filter((result) => result.status === "fulfilled")
94
+ .map((result) => result.value);
95
+ }
96
+ function isMediaContent(content) {
97
+ return content instanceof FileContent || content instanceof ImageContent;
98
+ }
99
+ function mediaAssetSegments(content, index, totalDigits) {
100
+ const indexPadded = index.toString().padStart(totalDigits, "0");
101
+ if (content instanceof FileContent) {
102
+ return [
103
+ { context: indexPadded, required: true },
104
+ { context: content.name, required: false },
105
+ { context: content.id, required: true },
106
+ ];
107
+ }
108
+ return [
109
+ { context: indexPadded, required: true },
110
+ { context: content.id, required: true },
111
+ ];
112
+ }
113
+ async function processContent({ headers, logger, pathManager, post, transport }, { content, index, totalDigits }) {
114
+ if (isMediaContent(content)) {
115
+ return syncMediaContent({ headers, logger, pathManager, transport }, {
116
+ content,
117
+ fallbackDateTime: post.updatedDatetime,
118
+ index,
119
+ totalDigits,
120
+ });
121
+ }
122
+ if (content instanceof TextContent) {
123
+ return { markdown: formatTextContent(content) };
124
+ }
125
+ logger.warn(`Post ${post.id} has unhandled content type ${content.type}, skipping.`);
126
+ return { unknown: true };
127
+ }
128
+ async function syncMediaContent({ headers, logger, pathManager, transport, }, { content, fallbackDateTime, index, totalDigits, }) {
129
+ const destination = pathManager.asset(mediaAssetSegments(content, index, totalDigits), content.extension);
130
+ const downloadResult = await downloadAsset({ headers, logger, transport }, {
131
+ destination,
132
+ fallbackDateTime,
133
+ mediaContent: content,
134
+ timeOffset: index,
135
+ })
136
+ .then(({ bytes, modifiedTime, sha256 }) => ({ bytes, failed: false, modifiedTime, sha256 }))
137
+ .catch((err) => {
138
+ logger.error({ err }, `Error occurred while downloading ${content.type} asset ${content.id}, skipping.`);
139
+ return { error: err, failed: true };
140
+ });
141
+ if (downloadResult.failed) {
142
+ return {
143
+ assets: [
144
+ [
145
+ content.id,
146
+ {
147
+ path: destination,
148
+ status: "failed",
149
+ url: content.url,
150
+ },
151
+ ],
152
+ ],
153
+ failed: true,
154
+ markdown: `<!-- Error occurred while processing content: ${String(downloadResult.error)} -->`,
155
+ };
156
+ }
157
+ return {
158
+ assets: [
159
+ [
160
+ content.id,
161
+ {
162
+ bytes: downloadResult.bytes,
163
+ contentIndex: index,
164
+ expectedTime: downloadResult.modifiedTime,
165
+ path: destination,
166
+ sha256: downloadResult.sha256,
167
+ status: "complete",
168
+ url: content.url,
169
+ },
170
+ ],
171
+ ],
172
+ markdown: formatMediaAsset(content, destination),
173
+ };
174
+ }
127
175
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from "pino";
2
+ import type { PostSummary } from "../../client/types.js";
3
+ import type { PostManifestData } from "../manifest/creator.js";
4
+ interface VerifyPostCheckDeps {
5
+ logger: Logger;
6
+ }
7
+ export declare function verifyCompletePost({ logger }: VerifyPostCheckDeps, manifest: PostManifestData, postSummary: PostSummary): Promise<PostManifestData>;
8
+ export {};
9
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
@@ -0,0 +1,61 @@
1
+ import { stat, utimes } from "node:fs/promises";
2
+ import { exists, formatFileTimestamp, hashFile, normalizeFileTimestamp, } from "../fs/filesystem.js";
3
+ export async function verifyCompletePost({ logger }, manifest, postSummary) {
4
+ const assets = Object.fromEntries(await Promise.all(Object.entries(manifest.assets).map(async ([id, asset]) => [
5
+ id,
6
+ asset ? await verifyAsset({ logger }, asset, postSummary) : asset,
7
+ ])));
8
+ const hasFailedAsset = Object.values(assets).some((asset) => asset && asset.status !== "complete");
9
+ return {
10
+ ...manifest,
11
+ assets,
12
+ status: hasFailedAsset ? "partial" : "complete",
13
+ };
14
+ }
15
+ function expectedModifiedTime(asset, postSummary) {
16
+ if (asset.expectedTime) {
17
+ const modifiedTime = normalizeFileTimestamp(new Date(asset.expectedTime));
18
+ if (!Number.isNaN(modifiedTime.getTime()))
19
+ return modifiedTime;
20
+ }
21
+ return normalizeFileTimestamp(new Date(new Date(postSummary.updatedDatetime).getTime() +
22
+ asset.contentIndex * 1000));
23
+ }
24
+ function failedAsset(asset, error) {
25
+ return {
26
+ ...asset,
27
+ error,
28
+ status: "failed",
29
+ };
30
+ }
31
+ function obsoleteAsset(asset, error) {
32
+ return {
33
+ ...asset,
34
+ error,
35
+ status: "obsolete",
36
+ };
37
+ }
38
+ async function verifyAsset({ logger }, asset, postSummary) {
39
+ if (asset.status !== "complete") {
40
+ return asset;
41
+ }
42
+ if (asset.contentIndex === undefined) {
43
+ return obsoleteAsset(asset, "content index missing");
44
+ }
45
+ if (!(await exists(asset.path))) {
46
+ return failedAsset(asset, "file missing");
47
+ }
48
+ const actualSha256 = await hashFile(asset.path);
49
+ if (actualSha256 !== asset.sha256) {
50
+ return failedAsset(asset, "sha256 mismatch");
51
+ }
52
+ const expectedTime = expectedModifiedTime(asset, postSummary);
53
+ const { mtimeMs } = await stat(asset.path);
54
+ if (normalizeFileTimestamp(new Date(mtimeMs)).getTime() !==
55
+ expectedTime.getTime()) {
56
+ logger.debug(`Repairing modified time of verified asset ${asset.path} from ${new Date(mtimeMs).toISOString()} to ${expectedTime.toISOString()}`);
57
+ await utimes(asset.path, expectedTime, expectedTime);
58
+ }
59
+ return { ...asset, expectedTime: formatFileTimestamp(expectedTime) };
60
+ }
61
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAKhD,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,QAAQ,EACR,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAU7B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAE,MAAM,EAAuB,EAC/B,QAA0B,EAC1B,WAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CACjC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACpB;QACE,EAAE;QACF,KAAK,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK;KAChB,CACtD,CACF,CACF,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAChD,CAAC;IAEF,OAAO;QACL,GAAG,QAAQ;QACX,MAAM;QACN,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAwB,EACxB,WAAwB;IAExB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,YAAY,CAAC;IACjE,CAAC;IAED,OAAO,sBAAsB,CAC3B,IAAI,IAAI,CACN,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE;QAC7C,KAAK,CAAC,YAAa,GAAG,IAAK,CAC9B,CACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,KAAwB,EACxB,KAAa;IAEb,OAAO;QACL,GAAG,KAAK;QACR,KAAK;QACL,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAwB,EACxB,KAAa;IAEb,OAAO;QACL,GAAG,KAAK;QACR,KAAK;QACL,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,EAAE,MAAM,EAAuB,EAC/B,KAAwB,EACxB,WAAwB;IAExB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,aAAa,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,YAAY,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IACE,sBAAsB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE;QACnD,YAAY,CAAC,OAAO,EAAE,EACtB,CAAC;QACD,MAAM,CAAC,KAAK,CACV,6CAA6C,KAAK,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,OAAO,YAAY,CAAC,WAAW,EAAE,EAAE,CACnI,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;AACvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moontaiworks/fanbox-dl",
3
- "version": "1.5.5",
3
+ "version": "1.7.0",
4
4
  "description": "A TypeScript PixivFanbox Downloader and SDK",
5
5
  "author": "moontai0724",
6
6
  "license": "MIT",