(challengeFiles: ChallengeFile[])
| 60 | const joinWithFileBoundaries = (contents: string[]) => contents.join('\n'); |
| 61 | |
| 62 | function buildSourceMap(challengeFiles: ChallengeFile[]): Source | undefined { |
| 63 | // TODO: rename sources.index to sources.contents. |
| 64 | const index = joinWithFileBoundaries( |
| 65 | challengeFiles.map(challengeFile => challengeFile.source ?? '') |
| 66 | ); |
| 67 | const editableContents = joinWithFileBoundaries( |
| 68 | challengeFiles.map(challengeFile => challengeFile.editableContents ?? '') |
| 69 | ); |
| 70 | const source: Source | undefined = challengeFiles.length |
| 71 | ? { |
| 72 | index, |
| 73 | contents: index, |
| 74 | editableContents |
| 75 | } |
| 76 | : { |
| 77 | index, |
| 78 | editableContents |
| 79 | }; |
| 80 | return source; |
| 81 | } |
| 82 | |
| 83 | const buildFunctions = { |
| 84 | [challengeTypes.js]: buildJSChallenge, |
no test coverage detected