@learnpack/learnpack 5.0.272 → 5.0.274
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.
- package/README.md +409 -409
- package/lib/commands/audit.js +15 -15
- package/lib/commands/breakToken.js +19 -19
- package/lib/commands/clean.js +3 -3
- package/lib/commands/init.js +41 -41
- package/lib/commands/logout.js +3 -3
- package/lib/commands/serve.js +32 -17
- package/lib/creatorDist/assets/{index-C1pv1wUb.js → index-BfLyIQVh.js} +10351 -10227
- package/lib/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
- package/lib/creatorDist/index.html +2 -2
- package/lib/managers/config/index.js +77 -77
- package/lib/utils/api.js +1 -0
- package/lib/utils/creatorUtilities.js +14 -14
- package/package.json +1 -1
- package/src/commands/audit.ts +487 -487
- package/src/commands/breakToken.ts +67 -67
- package/src/commands/clean.ts +30 -30
- package/src/commands/init.ts +650 -650
- package/src/commands/logout.ts +38 -38
- package/src/commands/publish.ts +522 -522
- package/src/commands/serve.ts +38 -28
- package/src/commands/start.ts +333 -333
- package/src/commands/translate.ts +123 -123
- package/src/creator/README.md +54 -54
- package/src/creator/eslint.config.js +28 -28
- package/src/creator/src/components/syllabus/ContentIndex.tsx +1 -1
- package/src/creator/src/i18n.ts +28 -28
- package/src/creator/src/index.css +217 -217
- package/src/creator/src/locales/en.json +1 -0
- package/src/creator/src/locales/es.json +1 -0
- package/src/creator/src/utils/configTypes.ts +122 -122
- package/src/creator/src/utils/constants.ts +13 -13
- package/src/creator/src/utils/creatorUtils.ts +46 -46
- package/src/creator/src/utils/eventBus.ts +2 -2
- package/src/creator/src/utils/lib.ts +468 -468
- package/src/creator/src/utils/rigo.ts +26 -26
- package/src/creator/src/utils/socket.ts +61 -61
- package/src/creator/src/utils/store.ts +222 -222
- package/src/creator/src/vite-env.d.ts +1 -1
- package/src/creator/vite.config.ts +13 -13
- package/src/creatorDist/assets/{index-C1pv1wUb.js → index-BfLyIQVh.js} +10351 -10227
- package/src/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
- package/src/creatorDist/index.html +2 -2
- package/src/managers/config/defaults.ts +49 -49
- package/src/managers/config/exercise.ts +364 -364
- package/src/managers/config/index.ts +775 -775
- package/src/managers/file.ts +236 -236
- package/src/managers/server/routes.ts +554 -554
- package/src/managers/session.ts +182 -182
- package/src/managers/telemetry.ts +188 -188
- package/src/models/action.ts +13 -13
- package/src/models/config-manager.ts +28 -28
- package/src/models/config.ts +106 -106
- package/src/models/creator.ts +40 -40
- package/src/models/exercise-obj.ts +30 -30
- package/src/models/session.ts +39 -39
- package/src/models/socket.ts +61 -61
- package/src/models/status.ts +16 -16
- package/src/ui/_app/app.css +1 -1
- package/src/ui/_app/app.js +435 -414
- package/src/ui/_app/learnpack.svg +7 -7
- package/src/ui/app.tar.gz +0 -0
- package/src/utils/BaseCommand.ts +56 -56
- package/src/utils/api.ts +31 -30
- package/src/utils/audit.ts +392 -392
- package/src/utils/checkNotInstalled.ts +267 -267
- package/src/utils/configBuilder.ts +82 -82
- package/src/utils/convertCreds.js +34 -34
- package/src/utils/creatorUtilities.ts +504 -504
- package/src/utils/incrementVersion.js +74 -74
- package/src/utils/misc.ts +58 -58
- package/src/utils/rigoActions.ts +500 -500
- package/src/utils/sidebarGenerator.ts +195 -195
- package/src/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
- package/src/utils/templates/isolated/exercises/01-hello-world/README.md +26 -26
package/src/commands/serve.ts
CHANGED
@@ -45,7 +45,10 @@ import {
|
|
45
45
|
import axios from "axios"
|
46
46
|
import * as FormData from "form-data"
|
47
47
|
import api, { RIGOBOT_HOST } from "../utils/api"
|
48
|
-
import {
|
48
|
+
import {
|
49
|
+
createUploadMiddleware,
|
50
|
+
minutesToISO8601Duration,
|
51
|
+
} from "../utils/misc"
|
49
52
|
import { buildConfig, ConfigResponse } from "../utils/configBuilder"
|
50
53
|
import { checkReadability, slugify } from "../utils/creatorUtilities"
|
51
54
|
import { checkAndFixSidebarPure } from "../utils/sidebarGenerator"
|
@@ -157,11 +160,9 @@ const uploadInitialReadme = async (
|
|
157
160
|
:rigo
|
158
161
|
\`\`\`
|
159
162
|
`
|
160
|
-
const readmeFilename = `README
|
161
|
-
packageContext.language
|
162
|
-
|
163
|
-
""
|
164
|
-
}md`
|
163
|
+
const readmeFilename = `README${getReadmeExtension(
|
164
|
+
packageContext.language || "en"
|
165
|
+
)}`
|
165
166
|
|
166
167
|
await uploadFileToBucket(
|
167
168
|
bucket,
|
@@ -229,12 +230,10 @@ const createMultiLangAsset = async (
|
|
229
230
|
}
|
230
231
|
|
231
232
|
async function startExerciseGeneration(
|
232
|
-
bucket: Bucket,
|
233
233
|
rigoToken: string,
|
234
234
|
steps: Lesson[],
|
235
235
|
packageContext: FormState,
|
236
236
|
exercise: Lesson,
|
237
|
-
tutorialDir: string,
|
238
237
|
courseSlug: string,
|
239
238
|
purposeSlug: string,
|
240
239
|
lastLesson = ""
|
@@ -246,7 +245,7 @@ async function startExerciseGeneration(
|
|
246
245
|
|
247
246
|
console.log("WEBHOOK URL", webhookUrl)
|
248
247
|
|
249
|
-
await readmeCreator(
|
248
|
+
const res = await readmeCreator(
|
250
249
|
rigoToken,
|
251
250
|
{
|
252
251
|
title: `${exercise.id} - ${exercise.title}`,
|
@@ -262,6 +261,8 @@ async function startExerciseGeneration(
|
|
262
261
|
purposeSlug,
|
263
262
|
webhookUrl
|
264
263
|
)
|
264
|
+
|
265
|
+
console.log("README CREATOR RES", res)
|
265
266
|
}
|
266
267
|
|
267
268
|
async function createInitialReadme(
|
@@ -649,12 +650,10 @@ export default class ServeCommand extends SessionCommand {
|
|
649
650
|
}
|
650
651
|
|
651
652
|
await startExerciseGeneration(
|
652
|
-
bucket,
|
653
653
|
rigoToken,
|
654
654
|
syllabusJson.lessons,
|
655
655
|
syllabusJson.courseInfo,
|
656
656
|
exercise,
|
657
|
-
`courses/${courseSlug}`,
|
658
657
|
courseSlug,
|
659
658
|
syllabusJson.courseInfo.purpose,
|
660
659
|
previousReadme +
|
@@ -784,12 +783,10 @@ export default class ServeCommand extends SessionCommand {
|
|
784
783
|
}
|
785
784
|
|
786
785
|
startExerciseGeneration(
|
787
|
-
bucket,
|
788
786
|
rigoToken,
|
789
787
|
syllabusJson.lessons,
|
790
788
|
syllabusJson.courseInfo,
|
791
789
|
nextExercise,
|
792
|
-
`courses/${courseSlug}`,
|
793
790
|
courseSlug,
|
794
791
|
syllabusJson.courseInfo.purpose,
|
795
792
|
readme.parsed.content + "\n\n" + feedback
|
@@ -1445,12 +1442,10 @@ export default class ServeCommand extends SessionCommand {
|
|
1445
1442
|
const lastResult = "---"
|
1446
1443
|
|
1447
1444
|
await startExerciseGeneration(
|
1448
|
-
bucket,
|
1449
1445
|
rigoToken,
|
1450
1446
|
syllabus.lessons,
|
1451
1447
|
syllabus.courseInfo,
|
1452
1448
|
firstLesson,
|
1453
|
-
tutorialDir,
|
1454
1449
|
courseSlug,
|
1455
1450
|
syllabus.courseInfo.purpose,
|
1456
1451
|
lastResult
|
@@ -1515,12 +1510,10 @@ export default class ServeCommand extends SessionCommand {
|
|
1515
1510
|
const firstLessonToGenerate = notGeneratedLessons[0]
|
1516
1511
|
|
1517
1512
|
await startExerciseGeneration(
|
1518
|
-
bucket,
|
1519
1513
|
rigoToken,
|
1520
1514
|
syllabusJson.lessons,
|
1521
1515
|
syllabusJson.courseInfo,
|
1522
1516
|
firstLessonToGenerate,
|
1523
|
-
`courses/${courseSlug}`,
|
1524
1517
|
courseSlug,
|
1525
1518
|
syllabusJson.courseInfo.purpose,
|
1526
1519
|
JSON.stringify(lastGeneratedLesson) +
|
@@ -1755,7 +1748,9 @@ export default class ServeCommand extends SessionCommand {
|
|
1755
1748
|
console.error("❌ Error fetching file:", error)
|
1756
1749
|
return res
|
1757
1750
|
.status(500)
|
1758
|
-
.json({
|
1751
|
+
.json({
|
1752
|
+
error: (error as Error).message || "Unable to fetch file",
|
1753
|
+
})
|
1759
1754
|
}
|
1760
1755
|
}
|
1761
1756
|
)
|
@@ -1771,25 +1766,38 @@ export default class ServeCommand extends SessionCommand {
|
|
1771
1766
|
|
1772
1767
|
if (ytMatch) {
|
1773
1768
|
const videoId = ytMatch[1]
|
1769
|
+
console.log("VIDEO ID", videoId)
|
1774
1770
|
// fetch metadata
|
1775
1771
|
const items = await YoutubeTranscript.fetchTranscript(videoId)
|
1772
|
+
console.log("ITEMS FROM YOUTUBE TRANSCRIPT", items)
|
1776
1773
|
const transcript = items.map(i => i.text).join(" ")
|
1777
1774
|
|
1778
|
-
|
1779
|
-
|
1780
|
-
{
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1775
|
+
let meta: any = null
|
1776
|
+
try {
|
1777
|
+
const { data: meta } = await axios.get(
|
1778
|
+
"https://www.youtube.com/oembed",
|
1779
|
+
{
|
1780
|
+
params: { url: decoded, format: "json" },
|
1781
|
+
}
|
1782
|
+
)
|
1783
|
+
console.log("META", meta)
|
1784
|
+
} catch (error) {
|
1785
|
+
console.error("ERROR FETCHING META", error)
|
1786
|
+
meta = null
|
1787
|
+
}
|
1788
|
+
|
1789
|
+
throw new Error("test")
|
1784
1790
|
|
1785
1791
|
return res.json({
|
1786
1792
|
url: decoded,
|
1787
|
-
title: meta
|
1788
|
-
author: meta
|
1789
|
-
thumbnail: meta
|
1793
|
+
title: meta?.title || null,
|
1794
|
+
author: meta?.author_name || null,
|
1795
|
+
thumbnail: meta?.thumbnail_url || null,
|
1790
1796
|
transcript,
|
1791
1797
|
})
|
1792
1798
|
}
|
1799
|
+
|
1800
|
+
console.log("NOT A YOUTUBE LINK", decoded)
|
1793
1801
|
|
1794
1802
|
const response = await axios.get(decoded, { responseType: "text" })
|
1795
1803
|
const html = response.data as string
|
@@ -1804,7 +1812,9 @@ export default class ServeCommand extends SessionCommand {
|
|
1804
1812
|
})
|
1805
1813
|
} catch (error: any) {
|
1806
1814
|
console.error("❌ /actions/fetch error:", error.message || error)
|
1807
|
-
res
|
1815
|
+
res
|
1816
|
+
.status(500)
|
1817
|
+
.json({ error: error.message || "Failed to fetch link" })
|
1808
1818
|
}
|
1809
1819
|
})
|
1810
1820
|
app.delete("/packages/:slug", async (req, res) => {
|