| 1 | import type { VirtualModuleTemplate } from './types' |
| 2 | import { uniq } from '@antfu/utils' |
| 3 | import { resolve } from 'pathe' |
| 4 | |
| 5 | export const templateMonacoRunDeps: VirtualModuleTemplate = { |
| 6 | id: '/@slidev/monaco-run-deps', |
| 7 | async getContent({ userRoot, data }) { |
| 8 | if (!data.features.monaco) |
| 9 | return '' |
| 10 | const deps = uniq([ |
| 11 | ...data.features.monaco.deps, |
| 12 | ...(data.config.monacoTypesAdditionalPackages || []), |
| 13 | ...(data.config.monacoRunAdditionalDeps || []), |
| 14 | ]) |
| 15 | const importerPath = resolve(userRoot, './snippets/__importer__.ts') |
| 16 | let result = '' |
| 17 | for (let i = 0; i < deps.length; i++) { |
| 18 | const specifier = deps[i] |
| 19 | const resolved = await this.resolve(specifier, importerPath) |
| 20 | if (!resolved) |
| 21 | continue |
| 22 | result += `import * as vendored${i} from ${JSON.stringify(resolved.id)}\n` |
| 23 | } |
| 24 | result += 'export default {\n' |
| 25 | for (let i = 0; i < deps.length; i++) |
| 26 | result += `${JSON.stringify(deps[i])}: vendored${i},\n` |
| 27 | |
| 28 | result += '}\n' |
| 29 | return result |
| 30 | }, |
| 31 | } |
| 32 |