@learnpack/learnpack 5.0.298 → 5.0.300
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/logout.js +3 -3
- package/lib/commands/serve.js +31 -11
- package/lib/creatorDist/assets/{index-D25zkBaN.js → index-DoYRptnk.js} +11875 -11992
- package/lib/creatorDist/index.html +1 -1
- package/lib/managers/config/index.js +77 -77
- package/lib/utils/creatorUtilities.js +14 -14
- package/lib/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
- package/lib/utils/templates/isolated/exercises/01-hello-world/README.md +26 -26
- package/lib/utils/templates/scorm/adlcp_rootv1p2.xsd +110 -110
- package/lib/utils/templates/scorm/config/index.html +209 -209
- package/lib/utils/templates/scorm/ims_xml.xsd +1 -1
- package/lib/utils/templates/scorm/imscp_rootv1p1p2.xsd +345 -345
- package/lib/utils/templates/scorm/imsmanifest.xml +38 -38
- package/lib/utils/templates/scorm/imsmd_rootv1p2p1.xsd +573 -573
- 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/logout.ts +38 -38
- package/src/commands/serve.ts +47 -25
- package/src/commands/start.ts +333 -333
- package/src/commands/translate.ts +123 -123
- package/src/creator/README.md +54 -54
- package/src/creator/package-lock.json +6621 -6621
- package/src/creator/package.json +55 -55
- package/src/creator/src/App.tsx +569 -569
- package/src/creator/src/components/FileUploader.tsx +302 -302
- package/src/creator/src/components/Icon.tsx +18 -18
- package/src/creator/src/components/LessonItem.tsx +152 -152
- package/src/creator/src/components/Login.tsx +259 -259
- package/src/creator/src/components/syllabus/ContentIndex.tsx +323 -323
- package/src/creator/src/components/syllabus/SyllabusEditor.tsx +337 -337
- package/src/creator/src/i18n.ts +28 -28
- package/src/creator/src/locales/en.json +127 -127
- package/src/creator/src/locales/es.json +127 -127
- 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/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-D25zkBaN.js → index-DoYRptnk.js} +11875 -11992
- package/src/creatorDist/index.html +1 -1
- 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/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/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/utils/BaseCommand.ts +56 -56
- package/src/utils/audit.ts +392 -392
- package/src/utils/checkNotInstalled.ts +267 -267
- package/src/utils/convertCreds.js +34 -34
- package/src/utils/creatorUtilities.ts +504 -504
- package/src/utils/export/README.md +178 -178
- package/src/utils/incrementVersion.js +74 -74
- package/src/utils/misc.ts +58 -58
- 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/utils/templates/scorm/adlcp_rootv1p2.xsd +110 -110
- package/src/utils/templates/scorm/config/index.html +209 -209
- package/src/utils/templates/scorm/ims_xml.xsd +1 -1
- package/src/utils/templates/scorm/imscp_rootv1p1p2.xsd +345 -345
- package/src/utils/templates/scorm/imsmanifest.xml +38 -38
- package/src/utils/templates/scorm/imsmd_rootv1p2p1.xsd +573 -573
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { IFile } from "./file"
|
|
2
|
-
import { IConfig } from "./config"
|
|
3
|
-
import { ISocket } from "./socket"
|
|
4
|
-
|
|
5
|
-
export interface IExercise {
|
|
6
|
-
position?: number
|
|
7
|
-
files: Array<IFile>
|
|
8
|
-
slug: string
|
|
9
|
-
path: string
|
|
10
|
-
done: boolean
|
|
11
|
-
language?: string | null
|
|
12
|
-
entry?: string | null
|
|
13
|
-
graded?: boolean
|
|
14
|
-
translations?: { [key: string]: string }
|
|
15
|
-
title: string
|
|
16
|
-
getReadme?: (lang: string | null) => any
|
|
17
|
-
getFile?: (name: string) => string | Buffer
|
|
18
|
-
saveFile?: (name: string, content: string) => void
|
|
19
|
-
renameFolder?: (newName: string) => void
|
|
20
|
-
getTestReport?: () => any
|
|
21
|
-
test?: (sessionConfig: any, config: IConfig, socket: ISocket) => void
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface IExerciseData {
|
|
25
|
-
lastMessages?: any
|
|
26
|
-
userMessage?: string
|
|
27
|
-
exerciseSlug: string
|
|
28
|
-
entryPoint?: string
|
|
29
|
-
files: string[]
|
|
30
|
-
}
|
|
1
|
+
import { IFile } from "./file"
|
|
2
|
+
import { IConfig } from "./config"
|
|
3
|
+
import { ISocket } from "./socket"
|
|
4
|
+
|
|
5
|
+
export interface IExercise {
|
|
6
|
+
position?: number
|
|
7
|
+
files: Array<IFile>
|
|
8
|
+
slug: string
|
|
9
|
+
path: string
|
|
10
|
+
done: boolean
|
|
11
|
+
language?: string | null
|
|
12
|
+
entry?: string | null
|
|
13
|
+
graded?: boolean
|
|
14
|
+
translations?: { [key: string]: string }
|
|
15
|
+
title: string
|
|
16
|
+
getReadme?: (lang: string | null) => any
|
|
17
|
+
getFile?: (name: string) => string | Buffer
|
|
18
|
+
saveFile?: (name: string, content: string) => void
|
|
19
|
+
renameFolder?: (newName: string) => void
|
|
20
|
+
getTestReport?: () => any
|
|
21
|
+
test?: (sessionConfig: any, config: IConfig, socket: ISocket) => void
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IExerciseData {
|
|
25
|
+
lastMessages?: any
|
|
26
|
+
userMessage?: string
|
|
27
|
+
exerciseSlug: string
|
|
28
|
+
entryPoint?: string
|
|
29
|
+
files: string[]
|
|
30
|
+
}
|
package/src/models/session.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { IConfig, IConfigObj } from "./config"
|
|
2
|
-
|
|
3
|
-
export interface IPayload {
|
|
4
|
-
email: string
|
|
5
|
-
user_id: number
|
|
6
|
-
token: string
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface IStartProps {
|
|
10
|
-
token: string
|
|
11
|
-
payload: IPayload | null
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type TLoginResponse = {
|
|
15
|
-
token: string
|
|
16
|
-
user_id: string
|
|
17
|
-
email: string
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface ISession {
|
|
21
|
-
sessionStarted: boolean
|
|
22
|
-
token: string | null
|
|
23
|
-
config: IConfig | null
|
|
24
|
-
currentCohort: null
|
|
25
|
-
initialize: () => Promise<boolean>
|
|
26
|
-
setRigoToken: (token: string) => Promise<boolean>
|
|
27
|
-
setTabHash: (hash: string) => Promise<boolean>
|
|
28
|
-
setSessionKey: (value: string) => Promise<boolean>
|
|
29
|
-
setPayload: (value: IPayload) => Promise<boolean>
|
|
30
|
-
getPayload: () => Promise<any>
|
|
31
|
-
isActive: () => boolean
|
|
32
|
-
get: (config?: IConfigObj) => Promise<any>
|
|
33
|
-
login: () => Promise<void>
|
|
34
|
-
loginWeb: (email: string, password: string) => Promise<TLoginResponse>
|
|
35
|
-
sync: () => Promise<void>
|
|
36
|
-
start: ({ token, payload }: IStartProps) => Promise<void>
|
|
37
|
-
destroy: () => Promise<void>
|
|
38
|
-
breakToken: () => Promise<void>
|
|
39
|
-
}
|
|
1
|
+
import { IConfig, IConfigObj } from "./config"
|
|
2
|
+
|
|
3
|
+
export interface IPayload {
|
|
4
|
+
email: string
|
|
5
|
+
user_id: number
|
|
6
|
+
token: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface IStartProps {
|
|
10
|
+
token: string
|
|
11
|
+
payload: IPayload | null
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type TLoginResponse = {
|
|
15
|
+
token: string
|
|
16
|
+
user_id: string
|
|
17
|
+
email: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ISession {
|
|
21
|
+
sessionStarted: boolean
|
|
22
|
+
token: string | null
|
|
23
|
+
config: IConfig | null
|
|
24
|
+
currentCohort: null
|
|
25
|
+
initialize: () => Promise<boolean>
|
|
26
|
+
setRigoToken: (token: string) => Promise<boolean>
|
|
27
|
+
setTabHash: (hash: string) => Promise<boolean>
|
|
28
|
+
setSessionKey: (value: string) => Promise<boolean>
|
|
29
|
+
setPayload: (value: IPayload) => Promise<boolean>
|
|
30
|
+
getPayload: () => Promise<any>
|
|
31
|
+
isActive: () => boolean
|
|
32
|
+
get: (config?: IConfigObj) => Promise<any>
|
|
33
|
+
login: () => Promise<void>
|
|
34
|
+
loginWeb: (email: string, password: string) => Promise<TLoginResponse>
|
|
35
|
+
sync: () => Promise<void>
|
|
36
|
+
start: ({ token, payload }: IStartProps) => Promise<void>
|
|
37
|
+
destroy: () => Promise<void>
|
|
38
|
+
breakToken: () => Promise<void>
|
|
39
|
+
}
|
package/src/models/socket.ts
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { IConfig } from "./config"
|
|
2
|
-
import { Server } from "socket.io"
|
|
3
|
-
import { DefaultEventsMap } from "socket.io/dist/typed-events"
|
|
4
|
-
import { TAction, ICallback } from "./action"
|
|
5
|
-
import { TStatus } from "./status"
|
|
6
|
-
|
|
7
|
-
export type TPossibleActions =
|
|
8
|
-
| "build"
|
|
9
|
-
| "test"
|
|
10
|
-
| "reset"
|
|
11
|
-
| "tutorial"
|
|
12
|
-
| "generate"
|
|
13
|
-
|
|
14
|
-
export interface ISocket {
|
|
15
|
-
socket: Server<
|
|
16
|
-
DefaultEventsMap,
|
|
17
|
-
DefaultEventsMap,
|
|
18
|
-
DefaultEventsMap,
|
|
19
|
-
any
|
|
20
|
-
> | null
|
|
21
|
-
config: IConfig | null
|
|
22
|
-
allowedActions: Array<TPossibleActions>
|
|
23
|
-
actionCallBacks: { [key: string]: ICallback }
|
|
24
|
-
possibleActions: Array<TPossibleActions>
|
|
25
|
-
isTestingEnvironment: boolean
|
|
26
|
-
addAllowed: (actions: any) => void
|
|
27
|
-
removeAllowed: (actions: any) => void
|
|
28
|
-
start: (config: IConfig, server: any, isTestingEnvironment: boolean) => void
|
|
29
|
-
on: (action: any, callBack: any) => void
|
|
30
|
-
clean: (_: string, logs: Array<any>) => void
|
|
31
|
-
complete: () => void
|
|
32
|
-
ask: (questions: Array<string>) => void
|
|
33
|
-
sessionRefreshed: (data: any) => void
|
|
34
|
-
reload: (files: Array<string> | null, exercises: Array<string>) => void
|
|
35
|
-
openWindow: (id: string) => void
|
|
36
|
-
log: (
|
|
37
|
-
status: TStatus,
|
|
38
|
-
messages?: string | Array<string>,
|
|
39
|
-
report?: Array<string>,
|
|
40
|
-
data?: any
|
|
41
|
-
) => void
|
|
42
|
-
emit: (
|
|
43
|
-
action: TAction,
|
|
44
|
-
status: TStatus | string,
|
|
45
|
-
logs: string | Array<string>,
|
|
46
|
-
inputs?: Array<string>,
|
|
47
|
-
report?: Array<string>,
|
|
48
|
-
data?: any
|
|
49
|
-
) => void
|
|
50
|
-
ready: (message: string) => void
|
|
51
|
-
error: (type: any, stdout: string) => void
|
|
52
|
-
fatal: (msg: string) => void
|
|
53
|
-
dialog: (message: string) => void
|
|
54
|
-
success: (type: any, stdout: string, lang?: string) => void
|
|
55
|
-
onTestingFinished: (obj: any) => void
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export type TOpenWindowData = {
|
|
59
|
-
url: string
|
|
60
|
-
exerciseSlug: string
|
|
61
|
-
}
|
|
1
|
+
import { IConfig } from "./config"
|
|
2
|
+
import { Server } from "socket.io"
|
|
3
|
+
import { DefaultEventsMap } from "socket.io/dist/typed-events"
|
|
4
|
+
import { TAction, ICallback } from "./action"
|
|
5
|
+
import { TStatus } from "./status"
|
|
6
|
+
|
|
7
|
+
export type TPossibleActions =
|
|
8
|
+
| "build"
|
|
9
|
+
| "test"
|
|
10
|
+
| "reset"
|
|
11
|
+
| "tutorial"
|
|
12
|
+
| "generate"
|
|
13
|
+
|
|
14
|
+
export interface ISocket {
|
|
15
|
+
socket: Server<
|
|
16
|
+
DefaultEventsMap,
|
|
17
|
+
DefaultEventsMap,
|
|
18
|
+
DefaultEventsMap,
|
|
19
|
+
any
|
|
20
|
+
> | null
|
|
21
|
+
config: IConfig | null
|
|
22
|
+
allowedActions: Array<TPossibleActions>
|
|
23
|
+
actionCallBacks: { [key: string]: ICallback }
|
|
24
|
+
possibleActions: Array<TPossibleActions>
|
|
25
|
+
isTestingEnvironment: boolean
|
|
26
|
+
addAllowed: (actions: any) => void
|
|
27
|
+
removeAllowed: (actions: any) => void
|
|
28
|
+
start: (config: IConfig, server: any, isTestingEnvironment: boolean) => void
|
|
29
|
+
on: (action: any, callBack: any) => void
|
|
30
|
+
clean: (_: string, logs: Array<any>) => void
|
|
31
|
+
complete: () => void
|
|
32
|
+
ask: (questions: Array<string>) => void
|
|
33
|
+
sessionRefreshed: (data: any) => void
|
|
34
|
+
reload: (files: Array<string> | null, exercises: Array<string>) => void
|
|
35
|
+
openWindow: (id: string) => void
|
|
36
|
+
log: (
|
|
37
|
+
status: TStatus,
|
|
38
|
+
messages?: string | Array<string>,
|
|
39
|
+
report?: Array<string>,
|
|
40
|
+
data?: any
|
|
41
|
+
) => void
|
|
42
|
+
emit: (
|
|
43
|
+
action: TAction,
|
|
44
|
+
status: TStatus | string,
|
|
45
|
+
logs: string | Array<string>,
|
|
46
|
+
inputs?: Array<string>,
|
|
47
|
+
report?: Array<string>,
|
|
48
|
+
data?: any
|
|
49
|
+
) => void
|
|
50
|
+
ready: (message: string) => void
|
|
51
|
+
error: (type: any, stdout: string) => void
|
|
52
|
+
fatal: (msg: string) => void
|
|
53
|
+
dialog: (message: string) => void
|
|
54
|
+
success: (type: any, stdout: string, lang?: string) => void
|
|
55
|
+
onTestingFinished: (obj: any) => void
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type TOpenWindowData = {
|
|
59
|
+
url: string
|
|
60
|
+
exerciseSlug: string
|
|
61
|
+
}
|
package/src/models/status.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export type TStatus =
|
|
2
|
-
| "ready"
|
|
3
|
-
| "internal-error"
|
|
4
|
-
| "compiler-success"
|
|
5
|
-
| "testing-success"
|
|
6
|
-
| "compiling"
|
|
7
|
-
| "testing"
|
|
8
|
-
| "start_exercise"
|
|
9
|
-
| "initializing"
|
|
10
|
-
| "configuration_loaded"
|
|
11
|
-
| "connection_ended"
|
|
12
|
-
| "reset_exercise"
|
|
13
|
-
| "open_files"
|
|
14
|
-
| "open_window"
|
|
15
|
-
| "instructions_closed"
|
|
16
|
-
| "completed"
|
|
1
|
+
export type TStatus =
|
|
2
|
+
| "ready"
|
|
3
|
+
| "internal-error"
|
|
4
|
+
| "compiler-success"
|
|
5
|
+
| "testing-success"
|
|
6
|
+
| "compiling"
|
|
7
|
+
| "testing"
|
|
8
|
+
| "start_exercise"
|
|
9
|
+
| "initializing"
|
|
10
|
+
| "configuration_loaded"
|
|
11
|
+
| "connection_ended"
|
|
12
|
+
| "reset_exercise"
|
|
13
|
+
| "open_files"
|
|
14
|
+
| "open_window"
|
|
15
|
+
| "instructions_closed"
|
|
16
|
+
| "completed"
|
package/src/utils/BaseCommand.ts
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { Command, flags } from "@oclif/command"
|
|
2
|
-
import Console from "./console"
|
|
3
|
-
import { createInterface } from "readline"
|
|
4
|
-
// import SessionManager from '../managers/session'
|
|
5
|
-
|
|
6
|
-
class BaseCommand extends Command {
|
|
7
|
-
async catch(err: any) {
|
|
8
|
-
Console.debug("COMMAND CATCH", err)
|
|
9
|
-
|
|
10
|
-
throw err
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async init() {
|
|
14
|
-
const { flags, args } = this.parse(BaseCommand)
|
|
15
|
-
Console.debug("COMMAND INIT")
|
|
16
|
-
Console.debug("These are your flags: ", flags)
|
|
17
|
-
Console.debug("These are your args: ", args)
|
|
18
|
-
|
|
19
|
-
// quick fix for listening to the process termination on windows
|
|
20
|
-
if (process.platform === "win32") {
|
|
21
|
-
const rl = createInterface({
|
|
22
|
-
input: process.stdin,
|
|
23
|
-
output: process.stdout,
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
rl.on("SIGINT", function () {
|
|
27
|
-
// process.emit('SIGINT')
|
|
28
|
-
// process.emit('SIGINT')
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
process.on("SIGINT", function () {
|
|
33
|
-
Console.debug("Terminated (SIGINT)")
|
|
34
|
-
process.exit()
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async finally() {
|
|
39
|
-
Console.debug("COMMAND FINALLY")
|
|
40
|
-
// called after run and catch regardless of whether or not the command errored
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
static flags = {
|
|
44
|
-
yes: flags.boolean({
|
|
45
|
-
char: "y",
|
|
46
|
-
description: "Skip all prompts and initialize an empty project",
|
|
47
|
-
default: false,
|
|
48
|
-
}),
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async run() {
|
|
52
|
-
// console.log('running my command')
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export default BaseCommand
|
|
1
|
+
import { Command, flags } from "@oclif/command"
|
|
2
|
+
import Console from "./console"
|
|
3
|
+
import { createInterface } from "readline"
|
|
4
|
+
// import SessionManager from '../managers/session'
|
|
5
|
+
|
|
6
|
+
class BaseCommand extends Command {
|
|
7
|
+
async catch(err: any) {
|
|
8
|
+
Console.debug("COMMAND CATCH", err)
|
|
9
|
+
|
|
10
|
+
throw err
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async init() {
|
|
14
|
+
const { flags, args } = this.parse(BaseCommand)
|
|
15
|
+
Console.debug("COMMAND INIT")
|
|
16
|
+
Console.debug("These are your flags: ", flags)
|
|
17
|
+
Console.debug("These are your args: ", args)
|
|
18
|
+
|
|
19
|
+
// quick fix for listening to the process termination on windows
|
|
20
|
+
if (process.platform === "win32") {
|
|
21
|
+
const rl = createInterface({
|
|
22
|
+
input: process.stdin,
|
|
23
|
+
output: process.stdout,
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
rl.on("SIGINT", function () {
|
|
27
|
+
// process.emit('SIGINT')
|
|
28
|
+
// process.emit('SIGINT')
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
process.on("SIGINT", function () {
|
|
33
|
+
Console.debug("Terminated (SIGINT)")
|
|
34
|
+
process.exit()
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async finally() {
|
|
39
|
+
Console.debug("COMMAND FINALLY")
|
|
40
|
+
// called after run and catch regardless of whether or not the command errored
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static flags = {
|
|
44
|
+
yes: flags.boolean({
|
|
45
|
+
char: "y",
|
|
46
|
+
description: "Skip all prompts and initialize an empty project",
|
|
47
|
+
default: false,
|
|
48
|
+
}),
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async run() {
|
|
52
|
+
// console.log('running my command')
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default BaseCommand
|