@learnpack/learnpack 5.0.277 → 5.0.278

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 (585) hide show
  1. package/lib/commands/serve.js +28 -7
  2. package/lib/utils/export/epub.d.ts +2 -2
  3. package/lib/utils/export/epub.js +219 -59
  4. package/lib/utils/export/index.d.ts +1 -1
  5. package/lib/utils/export/types.d.ts +7 -0
  6. package/package.json +1 -1
  7. package/src/commands/serve.ts +39 -12
  8. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  9. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/cover.png +0 -0
  10. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  11. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  12. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  13. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  14. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.0-introduction-to-heygen/README.md +56 -0
  15. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  16. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  17. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  18. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  19. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  20. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.2-understanding-heygen-interface/README.md +68 -0
  21. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/01.2-understanding-heygen-interface/README.md.processed +68 -0
  22. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  23. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  24. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  25. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  26. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  27. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  28. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  29. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  30. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  31. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  32. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  33. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  34. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  35. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  36. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/exercises/05.0-test-your-avatar-knowledge/README.md.processed +66 -0
  37. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  38. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/01.0-introduction-to-heygen/README.html +124 -0
  39. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/01.1-setting-up-a-heygen-account/README.html +121 -0
  40. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/01.2-understanding-heygen-interface/README.html +125 -0
  41. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +122 -0
  42. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +62 -0
  43. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/03.0-creating-a-video-with-your-avatar/README.html +145 -0
  44. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/04.0-other-tools-you-can-explore/README.html +164 -0
  45. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/05.0-test-your-avatar-knowledge/README.html +116 -0
  46. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/main.html +17 -0
  47. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/html/toc.html +28 -0
  48. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/navigate-avatar-creation.png +0 -0
  49. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-091438png +0 -0
  50. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-100052png +0 -0
  51. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-113550png +0 -0
  52. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-113745png +0 -0
  53. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-114048png +0 -0
  54. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-114534png +0 -0
  55. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-114808png +0 -0
  56. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-115203png +0 -0
  57. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-115521png +0 -0
  58. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-120026png +0 -0
  59. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-120229png +0 -0
  60. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/assets/screenshot-2025-08-20-120628png +0 -0
  61. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/config.json +1 -0
  62. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/initialSyllabus.json +1 -0
  63. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/learn/sidebar.json +1 -0
  64. package/src/output/directory/04bedc40-a091-4bda-96e5-c71677655944/metadata.yaml +9 -0
  65. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  66. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/cover.png +0 -0
  67. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  68. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  69. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  70. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  71. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.0-introduction-to-heygen/README.md +56 -0
  72. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  73. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  74. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  75. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  76. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  77. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.2-understanding-heygen-interface/README.md +87 -0
  78. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/01.2-understanding-heygen-interface/README.md.processed +74 -0
  79. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  80. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  81. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  82. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  83. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  84. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  85. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  86. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  87. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  88. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  89. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  90. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  91. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  92. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  93. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/exercises/05.0-test-your-avatar-knowledge/README.md.processed +62 -0
  94. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  95. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/01.0-introduction-to-heygen/README.html +124 -0
  96. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  97. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/01.2-understanding-heygen-interface/README.html +126 -0
  98. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  99. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  100. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  101. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/04.0-other-tools-you-can-explore/README.html +164 -0
  102. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/05.0-test-your-avatar-knowledge/README.html +115 -0
  103. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/main.html +17 -0
  104. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/html/toc.html +28 -0
  105. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/navigate-avatar-creation.png +0 -0
  106. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-091438png +0 -0
  107. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-100052png +0 -0
  108. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-113550png +0 -0
  109. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-113745png +0 -0
  110. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-114048png +0 -0
  111. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-114534png +0 -0
  112. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-114808png +0 -0
  113. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-115203png +0 -0
  114. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-115521png +0 -0
  115. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-120026png +0 -0
  116. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-120229png +0 -0
  117. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/assets/screenshot-2025-08-20-120628png +0 -0
  118. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/config.json +1 -0
  119. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/initialSyllabus.json +1 -0
  120. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/learn/sidebar.json +42 -0
  121. package/src/output/directory/1b7c72c0-b651-4c86-84c7-dddb401d4cc9/metadata.yaml +9 -0
  122. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  123. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/cover.png +0 -0
  124. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  125. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  126. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  127. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  128. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.0-introduction-to-heygen/README.md +56 -0
  129. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  130. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  131. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  132. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  133. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  134. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.2-understanding-heygen-interface/README.md +68 -0
  135. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/01.2-understanding-heygen-interface/README.md.processed +68 -0
  136. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  137. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  138. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  139. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  140. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  141. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  142. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  143. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  144. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  145. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  146. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  147. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  148. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  149. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  150. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/exercises/05.0-test-your-avatar-knowledge/README.md.processed +66 -0
  151. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  152. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/01.0-introduction-to-heygen/README.html +124 -0
  153. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  154. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/01.2-understanding-heygen-interface/README.html +126 -0
  155. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  156. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  157. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  158. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/04.0-other-tools-you-can-explore/README.html +164 -0
  159. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/05.0-test-your-avatar-knowledge/README.html +116 -0
  160. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/main.html +17 -0
  161. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/html/toc.html +28 -0
  162. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/navigate-avatar-creation.png +0 -0
  163. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-091438png +0 -0
  164. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-100052png +0 -0
  165. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-113550png +0 -0
  166. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-113745png +0 -0
  167. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-114048png +0 -0
  168. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-114534png +0 -0
  169. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-114808png +0 -0
  170. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-115203png +0 -0
  171. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-115521png +0 -0
  172. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-120026png +0 -0
  173. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-120229png +0 -0
  174. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/assets/screenshot-2025-08-20-120628png +0 -0
  175. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/config.json +1 -0
  176. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/initialSyllabus.json +1 -0
  177. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/learn/sidebar.json +1 -0
  178. package/src/output/directory/27669a16-4599-4c4a-966c-4b3ef894a955/metadata.yaml +9 -0
  179. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  180. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/cover.png +0 -0
  181. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  182. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  183. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  184. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  185. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.0-introduction-to-heygen/README.md +56 -0
  186. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  187. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  188. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  189. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  190. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  191. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.2-understanding-heygen-interface/README.md +87 -0
  192. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/01.2-understanding-heygen-interface/README.md.processed +74 -0
  193. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  194. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  195. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  196. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  197. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  198. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  199. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  200. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  201. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  202. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  203. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  204. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  205. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  206. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  207. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/exercises/05.0-test-your-avatar-knowledge/README.md.processed +62 -0
  208. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  209. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/01.0-introduction-to-heygen/README.html +124 -0
  210. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  211. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/01.2-understanding-heygen-interface/README.html +126 -0
  212. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  213. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  214. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  215. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/04.0-other-tools-you-can-explore/README.html +164 -0
  216. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/05.0-test-your-avatar-knowledge/README.html +115 -0
  217. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/main.html +17 -0
  218. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/html/toc.html +28 -0
  219. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/navigate-avatar-creation.png +0 -0
  220. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-091438png +0 -0
  221. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-100052png +0 -0
  222. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-113550png +0 -0
  223. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-113745png +0 -0
  224. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-114048png +0 -0
  225. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-114534png +0 -0
  226. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-114808png +0 -0
  227. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-115203png +0 -0
  228. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-115521png +0 -0
  229. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-120026png +0 -0
  230. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-120229png +0 -0
  231. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/assets/screenshot-2025-08-20-120628png +0 -0
  232. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/config.json +1 -0
  233. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/initialSyllabus.json +1 -0
  234. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/learn/sidebar.json +1 -0
  235. package/src/output/directory/36c705fc-2075-4bb0-88a5-2dc23237e48e/metadata.yaml +9 -0
  236. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/navigate-avatar-creation.png +0 -0
  237. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-091438png +0 -0
  238. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-100052png +0 -0
  239. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-113550png +0 -0
  240. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-113745png +0 -0
  241. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-114048png +0 -0
  242. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-114534png +0 -0
  243. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-114808png +0 -0
  244. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-115203png +0 -0
  245. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-115521png +0 -0
  246. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-120026png +0 -0
  247. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-120229png +0 -0
  248. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/assets/screenshot-2025-08-20-120628png +0 -0
  249. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/config.json +1 -0
  250. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/initialSyllabus.json +1 -0
  251. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/.learn/sidebar.json +1 -0
  252. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  253. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/cover.png +0 -0
  254. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  255. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  256. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  257. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  258. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.0-introduction-to-heygen/README.md +56 -0
  259. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  260. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  261. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  262. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  263. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  264. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.2-understanding-heygen-interface/README.md +68 -0
  265. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/01.2-understanding-heygen-interface/README.md.processed +68 -0
  266. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  267. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  268. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  269. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  270. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  271. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  272. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  273. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  274. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  275. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  276. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  277. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  278. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  279. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  280. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/exercises/05.0-test-your-avatar-knowledge/README.md.processed +66 -0
  281. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  282. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/01.0-introduction-to-heygen/README.html +124 -0
  283. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  284. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/01.2-understanding-heygen-interface/README.html +126 -0
  285. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  286. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  287. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  288. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/04.0-other-tools-you-can-explore/README.html +164 -0
  289. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/05.0-test-your-avatar-knowledge/README.html +116 -0
  290. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/main.html +17 -0
  291. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/html/toc.html +28 -0
  292. package/src/output/directory/628226b7-7026-458a-a836-8acac5f01ad0/metadata.yaml +9 -0
  293. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  294. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/cover.png +0 -0
  295. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  296. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  297. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  298. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  299. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.0-introduction-to-heygen/README.md +56 -0
  300. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  301. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  302. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  303. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  304. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  305. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.2-understanding-heygen-interface/README.md +87 -0
  306. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/01.2-understanding-heygen-interface/README.md.processed +74 -0
  307. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  308. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  309. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  310. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  311. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  312. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  313. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  314. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  315. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  316. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  317. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  318. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  319. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  320. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  321. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/exercises/05.0-test-your-avatar-knowledge/README.md.processed +62 -0
  322. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  323. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/01.0-introduction-to-heygen/README.html +124 -0
  324. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  325. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/01.2-understanding-heygen-interface/README.html +126 -0
  326. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  327. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  328. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  329. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/04.0-other-tools-you-can-explore/README.html +164 -0
  330. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/05.0-test-your-avatar-knowledge/README.html +115 -0
  331. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/main.html +17 -0
  332. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/html/toc.html +28 -0
  333. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/navigate-avatar-creation.png +0 -0
  334. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-091438png +0 -0
  335. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-100052png +0 -0
  336. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-113550png +0 -0
  337. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-113745png +0 -0
  338. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-114048png +0 -0
  339. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-114534png +0 -0
  340. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-114808png +0 -0
  341. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-115203png +0 -0
  342. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-115521png +0 -0
  343. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-120026png +0 -0
  344. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-120229png +0 -0
  345. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/assets/screenshot-2025-08-20-120628png +0 -0
  346. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/config.json +1 -0
  347. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/initialSyllabus.json +1 -0
  348. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/learn/sidebar.json +1 -0
  349. package/src/output/directory/9cfc3831-206c-44e9-aaec-76d90dc007ad/metadata.yaml +9 -0
  350. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  351. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/cover.png +0 -0
  352. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  353. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  354. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  355. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  356. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.0-introduction-to-heygen/README.md +56 -0
  357. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  358. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  359. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  360. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  361. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  362. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.2-understanding-heygen-interface/README.md +87 -0
  363. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/01.2-understanding-heygen-interface/README.md.processed +74 -0
  364. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  365. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  366. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  367. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  368. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  369. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  370. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  371. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  372. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  373. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  374. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  375. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  376. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  377. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  378. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/exercises/05.0-test-your-avatar-knowledge/README.md.processed +62 -0
  379. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  380. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/01.0-introduction-to-heygen/README.html +124 -0
  381. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  382. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/01.2-understanding-heygen-interface/README.html +126 -0
  383. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  384. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  385. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  386. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/04.0-other-tools-you-can-explore/README.html +164 -0
  387. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/05.0-test-your-avatar-knowledge/README.html +115 -0
  388. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/main.html +17 -0
  389. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/html/toc.html +28 -0
  390. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/navigate-avatar-creation.png +0 -0
  391. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-091438png +0 -0
  392. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-100052png +0 -0
  393. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-113550png +0 -0
  394. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-113745png +0 -0
  395. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-114048png +0 -0
  396. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-114534png +0 -0
  397. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-114808png +0 -0
  398. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-115203png +0 -0
  399. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-115521png +0 -0
  400. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-120026png +0 -0
  401. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-120229png +0 -0
  402. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/assets/screenshot-2025-08-20-120628png +0 -0
  403. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/config.json +1 -0
  404. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/initialSyllabus.json +1 -0
  405. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/learn/sidebar.json +1 -0
  406. package/src/output/directory/bcf520d5-1472-4846-8afd-2ff49339c41a/metadata.yaml +9 -0
  407. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  408. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/cover.png +0 -0
  409. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  410. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  411. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  412. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  413. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.0-introduction-to-heygen/README.md +56 -0
  414. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  415. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  416. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  417. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  418. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  419. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.2-understanding-heygen-interface/README.md +87 -0
  420. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/01.2-understanding-heygen-interface/README.md.processed +74 -0
  421. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  422. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  423. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  424. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  425. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  426. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  427. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  428. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  429. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  430. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  431. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  432. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  433. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  434. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  435. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/exercises/05.0-test-your-avatar-knowledge/README.md.processed +62 -0
  436. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  437. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/01.0-introduction-to-heygen/README.html +124 -0
  438. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/01.1-setting-up-a-heygen-account/README.html +122 -0
  439. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/01.2-understanding-heygen-interface/README.html +126 -0
  440. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +127 -0
  441. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +63 -0
  442. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/03.0-creating-a-video-with-your-avatar/README.html +149 -0
  443. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/04.0-other-tools-you-can-explore/README.html +164 -0
  444. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/05.0-test-your-avatar-knowledge/README.html +115 -0
  445. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/main.html +17 -0
  446. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/html/toc.html +28 -0
  447. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/navigate-avatar-creation.png +0 -0
  448. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-091438png +0 -0
  449. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-100052png +0 -0
  450. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-113550png +0 -0
  451. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-113745png +0 -0
  452. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-114048png +0 -0
  453. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-114534png +0 -0
  454. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-114808png +0 -0
  455. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-115203png +0 -0
  456. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-115521png +0 -0
  457. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-120026png +0 -0
  458. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-120229png +0 -0
  459. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/assets/screenshot-2025-08-20-120628png +0 -0
  460. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/config.json +1 -0
  461. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/initialSyllabus.json +1 -0
  462. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/learn/sidebar.json +1 -0
  463. package/src/output/directory/cdf069e9-cb18-414f-81cb-8c8f4339a38f/metadata.yaml +9 -0
  464. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  465. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/cover.png +0 -0
  466. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  467. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  468. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  469. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  470. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.0-introduction-to-heygen/README.md +56 -0
  471. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  472. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  473. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  474. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  475. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  476. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.2-understanding-heygen-interface/README.md +68 -0
  477. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/01.2-understanding-heygen-interface/README.md.processed +68 -0
  478. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  479. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  480. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  481. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  482. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  483. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  484. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  485. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  486. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  487. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  488. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  489. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  490. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  491. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  492. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/exercises/05.0-test-your-avatar-knowledge/README.md.processed +66 -0
  493. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  494. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/01.0-introduction-to-heygen/README.html +124 -0
  495. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/01.1-setting-up-a-heygen-account/README.html +121 -0
  496. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/01.2-understanding-heygen-interface/README.html +125 -0
  497. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +122 -0
  498. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +62 -0
  499. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/03.0-creating-a-video-with-your-avatar/README.html +145 -0
  500. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/04.0-other-tools-you-can-explore/README.html +164 -0
  501. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/05.0-test-your-avatar-knowledge/README.html +116 -0
  502. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/main.html +17 -0
  503. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/html/toc.html +28 -0
  504. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/navigate-avatar-creation.png +0 -0
  505. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-091438png +0 -0
  506. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-100052png +0 -0
  507. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-113550png +0 -0
  508. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-113745png +0 -0
  509. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-114048png +0 -0
  510. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-114534png +0 -0
  511. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-114808png +0 -0
  512. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-115203png +0 -0
  513. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-115521png +0 -0
  514. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-120026png +0 -0
  515. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-120229png +0 -0
  516. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/assets/screenshot-2025-08-20-120628png +0 -0
  517. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/config.json +1 -0
  518. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/initialSyllabus.json +1 -0
  519. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/learn/sidebar.json +1 -0
  520. package/src/output/directory/d131474e-536f-46e5-a144-616560fe3b0f/metadata.yaml +9 -0
  521. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/navigate-avatar-creation.png +0 -0
  522. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-091438png +0 -0
  523. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-100052png +0 -0
  524. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-113550png +0 -0
  525. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-113745png +0 -0
  526. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-114048png +0 -0
  527. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-114534png +0 -0
  528. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-114808png +0 -0
  529. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-115203png +0 -0
  530. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-115521png +0 -0
  531. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-120026png +0 -0
  532. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-120229png +0 -0
  533. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/assets/screenshot-2025-08-20-120628png +0 -0
  534. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/config.json +1 -0
  535. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/initialSyllabus.json +1 -0
  536. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/.learn/sidebar.json +1 -0
  537. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/avatar-creation-with-heygen-a-practical-guide.epub +0 -0
  538. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/cover.png +0 -0
  539. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.es.md +23 -0
  540. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md +23 -0
  541. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/00.0-welcome-to-avatar-creation-with-heygen/README.md.processed +23 -0
  542. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.0-introduction-to-heygen/README.es.md +56 -0
  543. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.0-introduction-to-heygen/README.md +56 -0
  544. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.0-introduction-to-heygen/README.md.processed +56 -0
  545. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.1-setting-up-a-heygen-account/README.es.md +76 -0
  546. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.1-setting-up-a-heygen-account/README.md +70 -0
  547. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.1-setting-up-a-heygen-account/README.md.processed +70 -0
  548. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.2-understanding-heygen-interface/README.es.md +70 -0
  549. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.2-understanding-heygen-interface/README.md +68 -0
  550. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/01.2-understanding-heygen-interface/README.md.processed +68 -0
  551. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.es.md +79 -0
  552. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md +83 -0
  553. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.0-creating-your-avatar-navigate-in-the-interface/README.md.processed +83 -0
  554. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.es.md +22 -0
  555. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md +46 -0
  556. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/02.2-your-avatar-is-ready-what-to-do-now/README.md.processed +46 -0
  557. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/03.0-creating-a-video-with-your-avatar/README.es.md +73 -0
  558. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/03.0-creating-a-video-with-your-avatar/README.md +95 -0
  559. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/03.0-creating-a-video-with-your-avatar/README.md.processed +95 -0
  560. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/04.0-other-tools-you-can-explore/README.es.md +63 -0
  561. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/04.0-other-tools-you-can-explore/README.md +63 -0
  562. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/04.0-other-tools-you-can-explore/README.md.processed +63 -0
  563. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/05.0-test-your-avatar-knowledge/README.es.md +65 -0
  564. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/05.0-test-your-avatar-knowledge/README.md +66 -0
  565. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/exercises/05.0-test-your-avatar-knowledge/README.md.processed +66 -0
  566. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/00.0-welcome-to-avatar-creation-with-heygen/README.html +62 -0
  567. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/01.0-introduction-to-heygen/README.html +124 -0
  568. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/01.1-setting-up-a-heygen-account/README.html +121 -0
  569. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/01.2-understanding-heygen-interface/README.html +125 -0
  570. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/02.0-creating-your-avatar-navigate-in-the-interface/README.html +122 -0
  571. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/02.2-your-avatar-is-ready-what-to-do-now/README.html +62 -0
  572. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/03.0-creating-a-video-with-your-avatar/README.html +145 -0
  573. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/04.0-other-tools-you-can-explore/README.html +164 -0
  574. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/05.0-test-your-avatar-knowledge/README.html +116 -0
  575. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/main.html +17 -0
  576. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/html/toc.html +28 -0
  577. package/src/output/directory/de8e3599-60a4-4f1d-9826-a0762d0b9402/metadata.yaml +9 -0
  578. package/src/output/directory/f33b274b-6a3f-40f8-85c2-a96aa8bfdbe6.zip +0 -0
  579. package/src/ui/_app/app.css +1 -1
  580. package/src/ui/_app/app.js +355 -355
  581. package/src/ui/app.tar.gz +0 -0
  582. package/src/utils/export/README.md +178 -178
  583. package/src/utils/export/epub.ts +292 -80
  584. package/src/utils/export/index.ts +1 -1
  585. package/src/utils/export/types.ts +8 -0
@@ -4,20 +4,114 @@ import * as mkdirp from "mkdirp";
4
4
  import * as rimraf from "rimraf";
5
5
  import { v4 as uuidv4 } from "uuid";
6
6
  import { spawn } from "child_process";
7
- import { ExportOptions, CourseMetadata } from "./types";
7
+ import { ExportOptions, CourseMetadata, EpubMetadata } from "./types";
8
8
  import { downloadS3Folder, getCourseMetadata } from "./shared";
9
9
 
10
+ const replaceQuestionsFromMarkdown = (markdown: string) => {
11
+ // Search for all code blocks like this (No breaking lines sensitive)
12
+ // ```question some parameters
13
+ // some text
14
+ // ```
15
+ const questionRegex = /```question([\s\S]*?)```/g;
16
+ return markdown.replace(questionRegex, "");
17
+ };
18
+
19
+ const replaceMermaidFromMarkdown = (markdown: string) => {
20
+ // Search for all code blocks like this (No breaking lines sensitive)
21
+ // ```mermaid
22
+ // some graphs in mermaid syntax
23
+ // ```
24
+ const mermaidRegex = /```mermaid([\s\S]*?)```/g;
25
+ return markdown.replace(mermaidRegex, "");
26
+ };
27
+
28
+ // Download cover image from bucket
29
+ async function downloadCoverImage(
30
+ bucket: any,
31
+ courseSlug: string,
32
+ outputDir: string
33
+ ): Promise<string | undefined> {
34
+ try {
35
+ const coverImagePath = path.join(outputDir, "cover.png");
36
+ const [coverBuf] = await bucket
37
+ .file(`courses/${courseSlug}/preview.png`)
38
+ .download();
39
+ fs.writeFileSync(coverImagePath, coverBuf);
40
+ console.log("Cover image downloaded:", coverImagePath);
41
+ return coverImagePath;
42
+ } catch (error) {
43
+ console.log("No cover image found, skipping...");
44
+ return undefined;
45
+ }
46
+ }
47
+
10
48
  // Convert markdown to HTML using pandoc
11
49
  async function convertMarkdownToHtml(
12
50
  markdownPath: string,
13
- outputPath: string
51
+ outputPath: string,
52
+ learnAssetsDir?: string
14
53
  ): Promise<void> {
15
54
  return new Promise((resolve, reject) => {
16
55
  let stdout = "";
17
56
  let stderr = "";
18
57
 
58
+ // Process markdown content to fix image paths
59
+ let markdownContent = fs.readFileSync(markdownPath, "utf-8");
60
+
61
+ if (learnAssetsDir && fs.existsSync(learnAssetsDir)) {
62
+ // Find all image references in markdown
63
+ const imageRegex = /!\[([^\]]*)\]\(([^)]+)\)/g;
64
+ let match;
65
+ let imageCount = 0;
66
+
67
+ while ((match = imageRegex.exec(markdownContent)) !== null) {
68
+ const [fullMatch, altText, imagePath] = match;
69
+
70
+ // Check if it's a relative path starting with /learn/assets/
71
+ if (imagePath.startsWith("/.learn/assets/")) {
72
+ const imageName = path.basename(imagePath);
73
+ const absoluteImagePath = path.join(learnAssetsDir, imageName);
74
+
75
+ console.log(`📸 Looking for image: ${imageName}`);
76
+ console.log(`📁 Learn assets dir: ${learnAssetsDir}`);
77
+ console.log(`📁 Absolute path: ${absoluteImagePath}`);
78
+ console.log(`📁 Path exists: ${fs.existsSync(absoluteImagePath)}`);
79
+
80
+ if (fs.existsSync(absoluteImagePath)) {
81
+ // Use absolute path for the image
82
+ console.log(
83
+ `✅ Found image, replacing path: ${imagePath} -> ${absoluteImagePath}`
84
+ );
85
+ markdownContent = markdownContent.replace(
86
+ fullMatch,
87
+ `![${altText}](${absoluteImagePath})`
88
+ );
89
+ imageCount++;
90
+ } else {
91
+ console.log(`❌ Image not found: ${absoluteImagePath}`);
92
+ // List files in the assets directory for debugging
93
+ if (fs.existsSync(learnAssetsDir)) {
94
+ const files = fs.readdirSync(learnAssetsDir);
95
+ console.log(`📁 Files in assets directory: ${files.join(", ")}`);
96
+ } else {
97
+ console.log(
98
+ `❌ Assets directory does not exist: ${learnAssetsDir}`
99
+ );
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ markdownContent = replaceQuestionsFromMarkdown(markdownContent);
107
+ markdownContent = replaceMermaidFromMarkdown(markdownContent);
108
+
109
+ // Write processed markdown to a temporary file
110
+ const tempMarkdownPath = markdownPath + ".processed";
111
+ fs.writeFileSync(tempMarkdownPath, markdownContent, "utf-8");
112
+
19
113
  const pandocArgs = [
20
- markdownPath,
114
+ tempMarkdownPath,
21
115
  "-o",
22
116
  outputPath,
23
117
  "--from",
@@ -29,13 +123,6 @@ async function convertMarkdownToHtml(
29
123
  path.join(__dirname, "../templates/epub/epub.css"),
30
124
  ];
31
125
 
32
- console.log("Executing pandoc command:", "pandoc", pandocArgs.join(" "));
33
- console.log("Input file exists:", fs.existsSync(markdownPath));
34
- console.log(
35
- "Output directory exists:",
36
- fs.existsSync(path.dirname(outputPath))
37
- );
38
-
39
126
  const pandoc = spawn("pandoc", pandocArgs);
40
127
 
41
128
  pandoc.stdout.on("data", (data) => {
@@ -47,7 +134,13 @@ async function convertMarkdownToHtml(
47
134
  });
48
135
 
49
136
  pandoc.on("close", (code) => {
137
+ // Clean up temporary file
138
+ // if (fs.existsSync(tempMarkdownPath)) {
139
+ // fs.unlinkSync(tempMarkdownPath);
140
+ // }
141
+
50
142
  if (code === 0) {
143
+ console.log("Successfully converted:", markdownPath, "->", outputPath);
51
144
  resolve();
52
145
  } else {
53
146
  const errorMessage = `Pandoc process exited with code ${code}\n\nSTDOUT:\n${stdout}\n\nSTDERR:\n${stderr}`;
@@ -67,12 +160,33 @@ async function convertMarkdownToHtml(
67
160
  async function generateEpub(
68
161
  htmlFiles: string[],
69
162
  outputPath: string,
70
- metadata: CourseMetadata
163
+ metadata: CourseMetadata,
164
+ epubMetadata: EpubMetadata,
165
+ coverImagePath?: string
71
166
  ): Promise<void> {
72
167
  return new Promise((resolve, reject) => {
73
168
  let stdout = "";
74
169
  let stderr = "";
75
170
 
171
+ const yamlPath = path.join(path.dirname(outputPath), "metadata.yaml");
172
+
173
+ const escapeYaml = (str: string) => {
174
+ if (!str) return "";
175
+ return str.replace(/"/g, '\\"').replace(/\n/g, "\\n");
176
+ };
177
+
178
+ const yamlContent = `---
179
+ title: "${epubMetadata.title}"
180
+ creator: "${epubMetadata.creator}"
181
+ publisher: "${epubMetadata.publisher}"
182
+ rights: "${epubMetadata.rights}"
183
+ lang: "${epubMetadata.lang}"
184
+ description: "${escapeYaml(metadata.description || "")}"
185
+ subject: "${metadata.technologies?.join(", ") || "Programming"}"
186
+ ---`;
187
+
188
+ fs.writeFileSync(yamlPath, yamlContent, "utf-8");
189
+
76
190
  // Include all HTML files in the EPUB
77
191
  const pandocArgs = [
78
192
  ...htmlFiles, // All HTML files
@@ -82,57 +196,48 @@ async function generateEpub(
82
196
  "html",
83
197
  "--to",
84
198
  "epub",
85
- "--metadata",
86
- `title=${metadata.title}`,
87
- "--metadata",
88
- `language=${metadata.language || "en"}`,
89
- "--metadata",
90
- `creator=FourGeeksAcademy`,
91
- "--metadata",
92
- `description=${metadata.description || ""}`,
93
- "--metadata",
94
- `subject=${metadata.technologies?.join(", ") || "Programming"}`,
199
+ "--metadata-file",
200
+ yamlPath,
95
201
  "--css",
96
202
  path.join(__dirname, "../templates/epub/epub.css"),
97
203
  ];
98
204
 
99
- console.log(
100
- "Executing pandoc EPUB command:",
101
- "pandoc",
102
- pandocArgs.join(" ")
103
- );
104
- console.log("HTML files to include:", htmlFiles);
105
- console.log(
106
- "All input files exist:",
107
- htmlFiles.every((file) => fs.existsSync(file))
108
- );
109
- console.log(
110
- "Output directory exists:",
111
- fs.existsSync(path.dirname(outputPath))
112
- );
205
+ // Add cover image if available - use absolute path
206
+ if (coverImagePath) {
207
+ pandocArgs.push("--epub-cover-image", coverImagePath);
208
+ }
209
+
210
+ console.log("🔧 Executing pandoc EPUB command:");
211
+ console.log("Command:", "pandoc", pandocArgs.join(" "));
113
212
 
114
213
  const pandoc = spawn("pandoc", pandocArgs);
115
214
 
116
215
  pandoc.stdout.on("data", (data) => {
117
- stdout += data.toString();
216
+ const output = data.toString();
217
+ stdout += output;
218
+ console.log("📤 Pandoc STDOUT:", output);
118
219
  });
119
220
 
120
221
  pandoc.stderr.on("data", (data) => {
121
- stderr += data.toString();
222
+ const output = data.toString();
223
+ stderr += output;
224
+ console.log("⚠️ Pandoc STDERR:", output);
122
225
  });
123
226
 
124
227
  pandoc.on("close", (code) => {
228
+ console.log(`🏁 Pandoc process finished with exit code: ${code}`);
125
229
  if (code === 0) {
230
+ console.log("✅ EPUB generation successful!");
126
231
  resolve();
127
232
  } else {
128
233
  const errorMessage = `Pandoc process exited with code ${code}\n\nSTDOUT:\n${stdout}\n\nSTDERR:\n${stderr}`;
129
- console.error("Pandoc Error Details:", errorMessage);
234
+ console.error("Pandoc Error Details:", errorMessage);
130
235
  reject(new Error(errorMessage));
131
236
  }
132
237
  });
133
238
 
134
239
  pandoc.on("error", (err) => {
135
- console.error("Pandoc spawn error:", err);
240
+ console.error("Pandoc spawn error:", err);
136
241
  reject(err);
137
242
  });
138
243
  });
@@ -142,13 +247,15 @@ async function generateEpub(
142
247
  async function processExercises(
143
248
  exercisesDir: string,
144
249
  outputDir: string,
145
- language: string = "en"
250
+ language: string = "en",
251
+ learnAssetsDir?: string
146
252
  ): Promise<string[]> {
147
253
  const htmlFiles: string[] = [];
148
254
 
149
255
  console.log("Processing exercises directory:", exercisesDir);
150
256
  console.log("Output directory:", outputDir);
151
257
  console.log("Language:", language);
258
+ console.log("Learn assets directory:", learnAssetsDir);
152
259
 
153
260
  if (!fs.existsSync(exercisesDir)) {
154
261
  console.log("Exercises directory does not exist:", exercisesDir);
@@ -158,7 +265,12 @@ async function processExercises(
158
265
  console.log("Exercises directory exists, scanning for files...");
159
266
 
160
267
  const processDirectory = async (dir: string, relativePath: string = "") => {
268
+ console.log(`🔍 Processing directory: ${dir} (relative: ${relativePath})`);
161
269
  const entries = fs.readdirSync(dir, { withFileTypes: true });
270
+ console.log(
271
+ `📁 Found ${entries.length} entries in ${dir}:`,
272
+ entries.map((e) => e.name)
273
+ );
162
274
 
163
275
  // Sort entries to prioritize README files first
164
276
  entries.sort((a, b) => {
@@ -188,40 +300,49 @@ async function processExercises(
188
300
  const baseName = entry.name.replace(/\.(md|markdown)$/, "");
189
301
 
190
302
  if (language === "en") {
191
- // For English: exclude files with language suffixes
192
- if (
303
+ // For English: only include README.md and files without language suffixes
304
+ if (entry.name.toLowerCase() === "readme.md") {
305
+ console.log(`✅ Including English README: ${relativeFilePath}`);
306
+ } else if (
193
307
  baseName.includes(".") &&
194
308
  /\.(es|fr|de|it|pt|ja|ko|zh|ar|ru)$/i.test(baseName)
195
309
  ) {
196
310
  console.log(
197
- "Skipping language-specific file for English:",
198
- relativeFilePath
311
+ `❌ Skipping language-specific file for English: ${relativeFilePath}`
199
312
  );
200
313
  continue;
314
+ } else {
315
+ console.log(`✅ Including English file: ${relativeFilePath}`);
201
316
  }
202
317
  } else {
203
318
  // For other languages: only include files with the correct language suffix
204
- if (!baseName.endsWith(`.${language}`)) {
319
+ if (entry.name.toLowerCase() === "readme.md") {
205
320
  console.log(
206
- "Skipping file with different language:",
207
- relativeFilePath
321
+ `❌ Skipping English README for language ${language}: ${relativeFilePath}`
208
322
  );
209
323
  continue;
324
+ } else if (!baseName.endsWith(`.${language}`)) {
325
+ console.log(
326
+ `❌ Skipping file with different language: ${relativeFilePath}`
327
+ );
328
+ continue;
329
+ } else {
330
+ console.log(`✅ Including ${language} file: ${relativeFilePath}`);
210
331
  }
211
332
  }
212
333
 
213
334
  // Convert markdown to HTML
214
335
  console.log("Converting markdown file:", relativeFilePath);
215
- const htmlFileName = entry.name.replace(/\.(md|markdown)$/, ".html");
216
- const htmlPath = path.join(
217
- outputDir,
218
- relativeFilePath.replace(/\.(md|markdown)$/, ".html")
219
- );
336
+
337
+ // Use the directory name as the HTML filename instead of README.html
338
+ const exerciseDirName = path.basename(path.dirname(fullPath));
339
+ const htmlFileName = `${exerciseDirName}.html`;
340
+ const htmlPath = path.join(outputDir, htmlFileName);
220
341
 
221
342
  console.log("HTML output path:", htmlPath);
222
343
  mkdirp.sync(path.dirname(htmlPath));
223
344
  // esling-disable-next-line
224
- await convertMarkdownToHtml(fullPath, htmlPath);
345
+ await convertMarkdownToHtml(fullPath, htmlPath, learnAssetsDir);
225
346
 
226
347
  htmlFiles.push(htmlPath);
227
348
  console.log(
@@ -253,8 +374,31 @@ async function processExercises(
253
374
  return htmlFiles;
254
375
  }
255
376
 
377
+ const titlelify = (title: string) => {
378
+ return title.replace(/[-_]/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
379
+ };
380
+
381
+ // Read sidebar.json to get exercise titles
382
+ function readSidebarData(learnDir: string): any {
383
+ try {
384
+ const sidebarPath = path.join(learnDir, "sidebar.json");
385
+ if (fs.existsSync(sidebarPath)) {
386
+ const sidebarContent = fs.readFileSync(sidebarPath, "utf-8");
387
+ return JSON.parse(sidebarContent);
388
+ }
389
+ } catch (error) {
390
+ console.log("⚠️ Could not read sidebar.json:", error);
391
+ }
392
+ return null;
393
+ }
394
+
256
395
  // Create EPUB table of contents
257
- function createTocHtml(htmlFiles: string[], metadata: CourseMetadata): string {
396
+ function createTocHtml(
397
+ htmlFiles: string[],
398
+ metadata: CourseMetadata,
399
+ sidebarData: any,
400
+ language: string
401
+ ): string {
258
402
  let tocContent = `
259
403
  <!DOCTYPE html>
260
404
  <html>
@@ -273,11 +417,34 @@ function createTocHtml(htmlFiles: string[], metadata: CourseMetadata): string {
273
417
 
274
418
  htmlFiles.forEach((file) => {
275
419
  const fileName = path.basename(file, ".html");
276
- const displayName = fileName
277
- .replace(/[-_]/g, " ")
278
- .replace(/\b\w/g, (l) => l.toUpperCase());
279
- // Use the full relative path for the href to ensure proper navigation
280
- const relativePath = file.replace(/.*\/html\//, "").replace(/\\/g, "/");
420
+ const relativePath = fileName + ".html";
421
+
422
+ // Get the parent directory name (exercise slug) to look up in sidebar
423
+ const parentDir = path.basename(path.dirname(file));
424
+
425
+ // Try to get the title from sidebar.json using the parent directory name
426
+ let displayName = fileName;
427
+ if (sidebarData && sidebarData[parentDir]) {
428
+ console.log(
429
+ "🔍 Found title in sidebar.json:",
430
+ sidebarData[parentDir],
431
+ "; language: ",
432
+ language
433
+ );
434
+ // Get the title for the current language, fallback to English, then to the key itself
435
+ displayName =
436
+ sidebarData[parentDir][language] ||
437
+ sidebarData[parentDir]["en"] ||
438
+ titlelify(parentDir);
439
+ } else {
440
+ console.log(
441
+ "🔍 No title found in sidebar.json for parent directory:",
442
+ parentDir
443
+ );
444
+ // Fallback to titlelify if not found in sidebar
445
+ displayName = titlelify(parentDir);
446
+ }
447
+
281
448
  tocContent += ` <li><a href="${relativePath}">${displayName}</a></li>\n`;
282
449
  });
283
450
 
@@ -290,12 +457,16 @@ function createTocHtml(htmlFiles: string[], metadata: CourseMetadata): string {
290
457
  return tocContent;
291
458
  }
292
459
 
293
- export async function exportToEpub(options: ExportOptions): Promise<string> {
460
+ export async function exportToEpub(
461
+ options: ExportOptions,
462
+ epubMetadata: EpubMetadata
463
+ ): Promise<string> {
294
464
  const { courseSlug, bucket, outDir, language = "en" } = options;
295
465
 
296
- console.log("Starting EPUB export for course:", courseSlug);
297
- console.log("Output directory:", outDir);
298
- console.log("Language:", language);
466
+ console.log("🚀 Starting EPUB export for course:", courseSlug);
467
+ console.log("📁 Output directory:", outDir);
468
+ console.log("🌍 Language:", language);
469
+ console.log("📋 EPUB Metadata:", epubMetadata);
299
470
 
300
471
  // 1. Create temporary folder
301
472
  const tmpName = uuidv4();
@@ -309,18 +480,32 @@ export async function exportToEpub(options: ExportOptions): Promise<string> {
309
480
  const epubTemplateDir = path.join(epubOutDir, "template");
310
481
  mkdirp.sync(epubTemplateDir);
311
482
 
312
- // 3. Download exercises and .learn from bucket
313
- console.log("Downloading exercises...");
483
+ // 3. Download exercises, .learn, and cover image from bucket
484
+ console.log("📥 Downloading exercises...");
314
485
  await downloadS3Folder(
315
486
  bucket,
316
487
  `courses/${courseSlug}/exercises/`,
317
488
  path.join(epubOutDir, "exercises")
318
489
  );
319
- console.log("Downloading .learn files...");
490
+ console.log(" Exercises downloaded successfully");
491
+
492
+ console.log("📥 Downloading .learn files...");
320
493
  await downloadS3Folder(
321
494
  bucket,
322
495
  `courses/${courseSlug}/.learn/`,
323
- path.join(epubOutDir, ".learn")
496
+ path.join(epubOutDir, "learn")
497
+ );
498
+ console.log("✅ .learn files downloaded successfully");
499
+
500
+ console.log("📥 Downloading cover image...");
501
+ const coverImagePath = await downloadCoverImage(
502
+ bucket,
503
+ courseSlug,
504
+ epubOutDir
505
+ );
506
+ console.log(
507
+ "✅ Cover image download completed:",
508
+ coverImagePath ? "Found" : "Not found"
324
509
  );
325
510
 
326
511
  // 4. Read learn.json for course info
@@ -328,9 +513,10 @@ export async function exportToEpub(options: ExportOptions): Promise<string> {
328
513
  const learnJson = await getCourseMetadata(bucket, courseSlug);
329
514
 
330
515
  const metadata: CourseMetadata = {
331
- title: learnJson.title?.en || learnJson.title || courseSlug,
332
- description: learnJson.description?.en || learnJson.description,
333
- language: learnJson.language || "en",
516
+ title: learnJson.title?.[epubMetadata.lang] || courseSlug,
517
+ description:
518
+ learnJson.description?.[epubMetadata.lang] || learnJson.description,
519
+ language: epubMetadata.lang,
334
520
  technologies: learnJson.technologies || [],
335
521
  difficulty: learnJson.difficulty || "beginner",
336
522
  };
@@ -338,18 +524,39 @@ export async function exportToEpub(options: ExportOptions): Promise<string> {
338
524
  console.log("Course metadata:", metadata);
339
525
 
340
526
  // 5. Process exercises and convert to HTML
341
- console.log("Processing exercises and converting to HTML...");
527
+ console.log("🔄 Processing exercises and converting to HTML...");
528
+
529
+ // First, let's see what files were downloaded
530
+ const exercisesPath = path.join(epubOutDir, "exercises");
531
+ console.log("📂 Exercises directory contents:");
532
+ if (fs.existsSync(exercisesPath)) {
533
+ const exerciseDirs = fs.readdirSync(exercisesPath, { withFileTypes: true });
534
+ console.log(`Found ${exerciseDirs.length} exercise directories:`);
535
+ exerciseDirs.forEach((dir) => {
536
+ if (dir.isDirectory()) {
537
+ const dirPath = path.join(exercisesPath, dir.name);
538
+ const files = fs.readdirSync(dirPath);
539
+ console.log(
540
+ ` 📁 ${dir.name}: ${files.length} files - ${files.join(", ")}`
541
+ );
542
+ }
543
+ });
544
+ } else {
545
+ console.log("❌ Exercises directory does not exist!");
546
+ }
547
+
342
548
  const htmlFiles = await processExercises(
343
549
  path.join(epubOutDir, "exercises"),
344
550
  path.join(epubOutDir, "html"),
345
- language
551
+ language,
552
+ path.join(epubOutDir, "learn", "assets")
346
553
  );
347
554
 
348
- console.log("Generated HTML files:", htmlFiles.length);
349
- console.log("HTML files:", htmlFiles);
555
+ // 6. Read sidebar data and create table of contents
556
+ const sidebarData = readSidebarData(path.join(epubOutDir, "learn"));
557
+ console.log("📋 Sidebar data loaded:", sidebarData ? "Success" : "Not found");
350
558
 
351
- // 6. Create table of contents
352
- const tocHtml = createTocHtml(htmlFiles, metadata);
559
+ const tocHtml = createTocHtml(htmlFiles, metadata, sidebarData, language);
353
560
  const tocPath = path.join(epubOutDir, "html", "toc.html");
354
561
  mkdirp.sync(path.dirname(tocPath));
355
562
  fs.writeFileSync(tocPath, tocHtml, "utf-8");
@@ -380,12 +587,17 @@ export async function exportToEpub(options: ExportOptions): Promise<string> {
380
587
 
381
588
  // 8. Prepare all HTML files for EPUB generation
382
589
  const allHtmlFiles = [mainContentPath, tocPath, ...htmlFiles];
383
- console.log("All HTML files for EPUB:", allHtmlFiles);
384
590
 
385
591
  // 9. Generate EPUB using pandoc
386
- console.log("Generating EPUB file...");
592
+ console.log("📖 Generating EPUB file...");
387
593
  const epubPath = path.join(epubOutDir, `${courseSlug}.epub`);
388
- await generateEpub(allHtmlFiles, epubPath, metadata);
594
+ await generateEpub(
595
+ allHtmlFiles,
596
+ epubPath,
597
+ metadata,
598
+ epubMetadata,
599
+ coverImagePath
600
+ );
389
601
 
390
602
  console.log("EPUB generated successfully:", epubPath);
391
603
 
@@ -393,7 +605,7 @@ export async function exportToEpub(options: ExportOptions): Promise<string> {
393
605
  console.log("Cleaning up temporary files...");
394
606
  rimraf.sync(path.join(epubOutDir, "html"));
395
607
  rimraf.sync(path.join(epubOutDir, "exercises"));
396
- rimraf.sync(path.join(epubOutDir, ".learn"));
608
+ rimraf.sync(path.join(epubOutDir, "learn"));
397
609
 
398
610
  console.log("EPUB export completed successfully");
399
611
  return epubPath;
@@ -1,3 +1,3 @@
1
1
  export { exportToScorm } from "./scorm";
2
2
  export { exportToEpub } from "./epub";
3
- export { ExportFormat, ExportOptions } from "./types";
3
+ export { ExportFormat, ExportOptions, EpubMetadata } from "./types";
@@ -8,6 +8,14 @@ export interface ExportOptions {
8
8
  language?: string; // Optional language parameter for EPUB export
9
9
  }
10
10
 
11
+ export interface EpubMetadata {
12
+ creator: string;
13
+ publisher: string;
14
+ title: string;
15
+ rights: string;
16
+ lang: string;
17
+ }
18
+
11
19
  export interface CourseMetadata {
12
20
  title: string;
13
21
  description?: string;