@learnpack/learnpack 5.0.297 → 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.
Files changed (79) hide show
  1. package/README.md +409 -409
  2. package/lib/commands/audit.js +15 -15
  3. package/lib/commands/breakToken.js +19 -19
  4. package/lib/commands/clean.js +3 -3
  5. package/lib/commands/logout.js +3 -3
  6. package/lib/commands/serve.js +32 -11
  7. package/lib/creatorDist/assets/{index-D25zkBaN.js → index-DoYRptnk.js} +11875 -11992
  8. package/lib/creatorDist/index.html +1 -1
  9. package/lib/managers/config/index.js +77 -77
  10. package/lib/utils/creatorUtilities.js +14 -14
  11. package/lib/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
  12. package/lib/utils/templates/isolated/exercises/01-hello-world/README.md +26 -26
  13. package/lib/utils/templates/scorm/adlcp_rootv1p2.xsd +110 -110
  14. package/lib/utils/templates/scorm/config/index.html +209 -209
  15. package/lib/utils/templates/scorm/ims_xml.xsd +1 -1
  16. package/lib/utils/templates/scorm/imscp_rootv1p1p2.xsd +345 -345
  17. package/lib/utils/templates/scorm/imsmanifest.xml +38 -38
  18. package/lib/utils/templates/scorm/imsmd_rootv1p2p1.xsd +573 -573
  19. package/package.json +1 -1
  20. package/src/commands/audit.ts +487 -487
  21. package/src/commands/breakToken.ts +67 -67
  22. package/src/commands/clean.ts +30 -30
  23. package/src/commands/logout.ts +38 -38
  24. package/src/commands/serve.ts +49 -26
  25. package/src/commands/start.ts +333 -333
  26. package/src/commands/translate.ts +123 -123
  27. package/src/creator/README.md +54 -54
  28. package/src/creator/package-lock.json +6621 -6621
  29. package/src/creator/package.json +55 -55
  30. package/src/creator/src/App.tsx +569 -569
  31. package/src/creator/src/components/FileUploader.tsx +302 -302
  32. package/src/creator/src/components/Icon.tsx +18 -18
  33. package/src/creator/src/components/LessonItem.tsx +152 -152
  34. package/src/creator/src/components/Login.tsx +259 -259
  35. package/src/creator/src/components/syllabus/ContentIndex.tsx +323 -323
  36. package/src/creator/src/components/syllabus/SyllabusEditor.tsx +337 -337
  37. package/src/creator/src/i18n.ts +28 -28
  38. package/src/creator/src/locales/en.json +127 -127
  39. package/src/creator/src/locales/es.json +127 -127
  40. package/src/creator/src/utils/configTypes.ts +122 -122
  41. package/src/creator/src/utils/constants.ts +13 -13
  42. package/src/creator/src/utils/creatorUtils.ts +46 -46
  43. package/src/creator/src/utils/eventBus.ts +2 -2
  44. package/src/creator/src/utils/socket.ts +61 -61
  45. package/src/creator/src/utils/store.ts +222 -222
  46. package/src/creator/src/vite-env.d.ts +1 -1
  47. package/src/creator/vite.config.ts +13 -13
  48. package/src/creatorDist/assets/{index-D25zkBaN.js → index-DoYRptnk.js} +11875 -11992
  49. package/src/creatorDist/index.html +1 -1
  50. package/src/managers/config/defaults.ts +49 -49
  51. package/src/managers/config/exercise.ts +364 -364
  52. package/src/managers/config/index.ts +775 -775
  53. package/src/managers/file.ts +236 -236
  54. package/src/managers/server/routes.ts +554 -554
  55. package/src/managers/telemetry.ts +188 -188
  56. package/src/models/action.ts +13 -13
  57. package/src/models/config-manager.ts +28 -28
  58. package/src/models/config.ts +106 -106
  59. package/src/models/exercise-obj.ts +30 -30
  60. package/src/models/session.ts +39 -39
  61. package/src/models/socket.ts +61 -61
  62. package/src/models/status.ts +16 -16
  63. package/src/utils/BaseCommand.ts +56 -56
  64. package/src/utils/audit.ts +392 -392
  65. package/src/utils/checkNotInstalled.ts +267 -267
  66. package/src/utils/convertCreds.js +34 -34
  67. package/src/utils/creatorUtilities.ts +504 -504
  68. package/src/utils/export/README.md +178 -178
  69. package/src/utils/incrementVersion.js +74 -74
  70. package/src/utils/misc.ts +58 -58
  71. package/src/utils/sidebarGenerator.ts +195 -195
  72. package/src/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
  73. package/src/utils/templates/isolated/exercises/01-hello-world/README.md +26 -26
  74. package/src/utils/templates/scorm/adlcp_rootv1p2.xsd +110 -110
  75. package/src/utils/templates/scorm/config/index.html +209 -209
  76. package/src/utils/templates/scorm/ims_xml.xsd +1 -1
  77. package/src/utils/templates/scorm/imscp_rootv1p1p2.xsd +345 -345
  78. package/src/utils/templates/scorm/imsmanifest.xml +38 -38
  79. 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
+ }
@@ -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
+ }
@@ -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
+ }
@@ -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"
@@ -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