@learnpack/learnpack 5.0.7 → 5.0.8
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +17 -17
- package/bin/run +17 -17
- package/bin/run.cmd +3 -3
- package/lib/commands/audit.js +30 -21
- package/lib/commands/clean.js +3 -3
- package/lib/commands/download.js +3 -3
- package/lib/commands/login.js +3 -3
- package/lib/commands/logout.js +3 -3
- package/oclif.manifest.json +1 -1
- package/package.json +152 -152
- package/src/commands/audit.ts +449 -443
- package/src/commands/clean.ts +29 -29
- package/src/commands/download.ts +61 -61
- package/src/commands/login.ts +42 -42
- package/src/commands/logout.ts +43 -43
- package/src/commands/publish.ts +249 -249
- package/src/commands/test.ts +85 -85
- package/src/index.ts +1 -1
- package/src/managers/config/allowed_files.ts +29 -29
- package/src/managers/gitpod.ts +84 -84
- package/src/managers/server/index.ts +78 -78
- package/src/managers/telemetry.ts +353 -353
- package/src/managers/test.ts +83 -83
- package/src/models/audit.ts +16 -16
- package/src/models/config-manager.ts +23 -23
- package/src/models/counter.ts +11 -11
- package/src/models/errors.ts +22 -22
- package/src/models/exercise-obj.ts +29 -29
- package/src/models/file.ts +5 -5
- package/src/models/findings.ts +18 -18
- package/src/models/flags.ts +10 -10
- package/src/models/front-matter.ts +11 -11
- package/src/models/gitpod-data.ts +19 -19
- package/src/models/language.ts +4 -4
- package/src/models/package.ts +7 -7
- package/src/models/plugin-config.ts +17 -17
- package/src/models/success-types.ts +1 -1
- package/src/plugin/command/compile.ts +17 -17
- package/src/plugin/command/test.ts +30 -30
- package/src/plugin/index.ts +6 -6
- package/src/plugin/plugin.ts +94 -94
- package/src/plugin/utils.ts +87 -87
- package/src/types/node-fetch.d.ts +1 -1
- package/src/ui/download.ts +71 -71
- package/src/utils/BaseCommand.ts +48 -48
- package/src/utils/SessionCommand.ts +43 -43
- package/src/utils/audit.ts +393 -393
- package/src/utils/errors.ts +117 -117
- package/src/utils/exercisesQueue.ts +51 -51
- package/src/utils/fileQueue.ts +199 -199
- package/src/utils/misc.ts +23 -23
- package/src/utils/osOperations.ts +79 -79
- package/src/utils/templates/gitignore.txt +19 -19
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
- package/src/utils/templates/incremental/.vscode/schema.json +121 -121
- package/src/utils/templates/incremental/.vscode/settings.json +13 -13
- package/src/utils/templates/incremental/README.ejs +4 -4
- package/src/utils/templates/incremental/README.es.ejs +4 -4
- package/src/utils/templates/isolated/.vscode/schema.json +121 -121
- package/src/utils/templates/isolated/.vscode/settings.json +13 -13
- package/src/utils/templates/isolated/README.ejs +4 -4
- package/src/utils/templates/isolated/README.es.ejs +4 -4
- package/src/utils/templates/no-grading/README.ejs +4 -4
- package/src/utils/templates/no-grading/README.es.ejs +4 -4
- package/src/utils/validators.ts +18 -18
- package/src/utils/watcher.ts +27 -27
@@ -1,5 +1,5 @@
|
|
1
|
-
# Welcome to <%= it.title %>
|
2
|
-
|
3
|
-
You have initialized the exercises with grading=`incremental`; meaning that your students will complete one single tutorial with clear and autograded steps from beginning to end.
|
4
|
-
|
1
|
+
# Welcome to <%= it.title %>
|
2
|
+
|
3
|
+
You have initialized the exercises with grading=`incremental`; meaning that your students will complete one single tutorial with clear and autograded steps from beginning to end.
|
4
|
+
|
5
5
|
Type `$ learnpack start` in your terminal to start the exercises.
|
@@ -1,5 +1,5 @@
|
|
1
|
-
# Bienvenido a <%= it.title %>
|
2
|
-
|
3
|
-
Has inicializado los ejercicios con grading=`incremental`; esto signigica que tus estudiantes completarán un solo tutorial con pasos claros e incrementales, desde el comienzo hasta el final.
|
4
|
-
|
1
|
+
# Bienvenido a <%= it.title %>
|
2
|
+
|
3
|
+
Has inicializado los ejercicios con grading=`incremental`; esto signigica que tus estudiantes completarán un solo tutorial con pasos claros e incrementales, desde el comienzo hasta el final.
|
4
|
+
|
5
5
|
Ejecuta `$ learnpack start` en la terminal para comenzar con los ejercicios.
|
@@ -1,5 +1,5 @@
|
|
1
|
-
# Welcome to <%= it.title %>
|
2
|
-
|
3
|
-
You have initialized the exercises without grading, meaning that your students will completed exercises without the need of coding.
|
4
|
-
|
1
|
+
# Welcome to <%= it.title %>
|
2
|
+
|
3
|
+
You have initialized the exercises without grading, meaning that your students will completed exercises without the need of coding.
|
4
|
+
|
5
5
|
Type `$ learnpack start` in your terminal to start the exercises.
|
@@ -1,5 +1,5 @@
|
|
1
|
-
# Bienvenido a <%= it.title %>
|
2
|
-
|
3
|
-
Has inicializado los ejercicios sin grading; lo que signigica que tus estudiantes completarán los ejercicios sin necesidad de codificar.
|
4
|
-
|
1
|
+
# Bienvenido a <%= it.title %>
|
2
|
+
|
3
|
+
Has inicializado los ejercicios sin grading; lo que signigica que tus estudiantes completarán los ejercicios sin necesidad de codificar.
|
4
|
+
|
5
5
|
Ejecuta `$ learnpack start` en la terminal para comenzar con los ejercicios.
|
package/src/utils/validators.ts
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
export function validURL(str: string) {
|
2
|
-
if (!str.includes('github.com')) {
|
3
|
-
return false
|
4
|
-
}
|
5
|
-
|
6
|
-
const pattern = new RegExp(
|
7
|
-
'^(https?:\\/\\/)?' + // protocol
|
8
|
-
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
9
|
-
'((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
|
10
|
-
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
|
11
|
-
'(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
|
12
|
-
'(\\#[-a-z\\d_]*)?$',
|
13
|
-
'i',
|
14
|
-
) // fragment locator
|
15
|
-
return !!pattern.test(str)
|
16
|
-
}
|
17
|
-
|
18
|
-
export default {validURL}
|
1
|
+
export function validURL(str: string) {
|
2
|
+
if (!str.includes('github.com')) {
|
3
|
+
return false
|
4
|
+
}
|
5
|
+
|
6
|
+
const pattern = new RegExp(
|
7
|
+
'^(https?:\\/\\/)?' + // protocol
|
8
|
+
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
9
|
+
'((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
|
10
|
+
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
|
11
|
+
'(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
|
12
|
+
'(\\#[-a-z\\d_]*)?$',
|
13
|
+
'i',
|
14
|
+
) // fragment locator
|
15
|
+
return !!pattern.test(str)
|
16
|
+
}
|
17
|
+
|
18
|
+
export default {validURL}
|
package/src/utils/watcher.ts
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
import * as chokidar from "chokidar"
|
2
|
-
import Console from "./console"
|
3
|
-
import * as debounce from "debounce"
|
4
|
-
import { IConfigManager } from "../models/config-manager"
|
5
|
-
|
6
|
-
export default (path: string, reloadSocket: (filename: string) => void) =>
|
7
|
-
new Promise((resolve /* , reject */) => {
|
8
|
-
Console.debug("PATH:", path)
|
9
|
-
const watcher = chokidar.watch(path, {
|
10
|
-
// TODO: This watcher is not ready yet
|
11
|
-
// ignored: /^(?=.*(\.\w+)$)(?!.*\.md$).*$/gm,
|
12
|
-
ignored: /\.pyc$/,
|
13
|
-
ignoreInitial: true,
|
14
|
-
})
|
15
|
-
const onChange = (eventname: string, _filename: string) => {
|
16
|
-
// Console.info(`Event ${eventname} detected. in file: ${_filename}`)
|
17
|
-
resolve(_filename)
|
18
|
-
reloadSocket(_filename)
|
19
|
-
}
|
20
|
-
|
21
|
-
watcher.on("all", debounce(onChange, 500, true))
|
22
|
-
// watcher.on('all', onChange)
|
23
|
-
process.on("SIGINT", function () {
|
24
|
-
watcher.close()
|
25
|
-
process.exit()
|
26
|
-
})
|
27
|
-
})
|
1
|
+
import * as chokidar from "chokidar"
|
2
|
+
import Console from "./console"
|
3
|
+
import * as debounce from "debounce"
|
4
|
+
import { IConfigManager } from "../models/config-manager"
|
5
|
+
|
6
|
+
export default (path: string, reloadSocket: (filename: string) => void) =>
|
7
|
+
new Promise((resolve /* , reject */) => {
|
8
|
+
Console.debug("PATH:", path)
|
9
|
+
const watcher = chokidar.watch(path, {
|
10
|
+
// TODO: This watcher is not ready yet
|
11
|
+
// ignored: /^(?=.*(\.\w+)$)(?!.*\.md$).*$/gm,
|
12
|
+
ignored: /\.pyc$/,
|
13
|
+
ignoreInitial: true,
|
14
|
+
})
|
15
|
+
const onChange = (eventname: string, _filename: string) => {
|
16
|
+
// Console.info(`Event ${eventname} detected. in file: ${_filename}`)
|
17
|
+
resolve(_filename)
|
18
|
+
reloadSocket(_filename)
|
19
|
+
}
|
20
|
+
|
21
|
+
watcher.on("all", debounce(onChange, 500, true))
|
22
|
+
// watcher.on('all', onChange)
|
23
|
+
process.on("SIGINT", function () {
|
24
|
+
watcher.close()
|
25
|
+
process.exit()
|
26
|
+
})
|
27
|
+
})
|