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