(skillsRoot: string, skillName: string)
| 12 | } |
| 13 | |
| 14 | export function assertSkillNameInRoot(skillsRoot: string, skillName: string): string { |
| 15 | if (!isSafeSkillName(skillName)) { |
| 16 | throw new Error(`Unsafe skill name: ${JSON.stringify(skillName)}`); |
| 17 | } |
| 18 | const root = resolve(skillsRoot); |
| 19 | const target = resolve(root, skillName); |
| 20 | if (dirname(target) !== root || basename(target) !== skillName) { |
| 21 | throw new Error(`Skill name "${skillName}" escapes the skills root`); |
| 22 | } |
| 23 | return target; |
| 24 | } |
no test coverage detected