All files / lib vfs_default_map_cdn.ts

0% Statements 0/25
0% Branches 0/5
0% Functions 0/7
0% Lines 0/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124                                                                                                                                                                                                                                                       
import * as ts from 'typescript'
import { ScriptTarget } from 'typescript'
import { fetchSource, getUrlBase } from '@youwol/cdn-client'
 
export function createDefaultMapFromCDN(
    options: ts.CompilerOptions,
    version: string,
) {
    const base = [
        'lib.d.ts',
        'lib.dom.d.ts',
        'lib.dom.iterable.d.ts',
        'lib.webworker.d.ts',
        'lib.webworker.importscripts.d.ts',
        'lib.scripthost.d.ts',
        'lib.es5.d.ts',
        'lib.es6.d.ts',
    ]
    let es = [
        `lib.es2015.d.ts`,
        'lib.es2015.collection.d.ts',
        'lib.es2015.core.d.ts',
        'lib.es2015.generator.d.ts',
        'lib.es2015.iterable.d.ts',
        'lib.es2015.promise.d.ts',
        'lib.es2015.proxy.d.ts',
        'lib.es2015.reflect.d.ts',
        'lib.es2015.symbol.d.ts',
        'lib.es2015.symbol.wellknown.d.ts',
    ]
    Iif (options.target >= ScriptTarget.ES2016) {
        es = [
            ...es,
            `lib.es2016.d.ts`,
            'lib.es2016.full.d.ts',
            'lib.es2016.array.include.d.ts',
        ]
    }
    Iif (options.target >= ScriptTarget.ES2017) {
        es = [
            ...es,
            `lib.es2017.d.ts`,
            'lib.es2017.full.d.ts',
            'lib.es2017.object.d.ts',
            'lib.es2017.sharedmemory.d.ts',
            'lib.es2017.string.d.ts',
            'lib.es2017.intl.d.ts',
            'lib.es2017.typedarrays.d.ts',
        ]
    }
    Iif (options.target >= ScriptTarget.ES2018) {
        es = [
            ...es,
            `lib.es2018.d.ts`,
            'lib.es2018.full.d.ts',
            'lib.es2018.intl.d.ts',
            'lib.es2018.asyncgenerator.d.ts',
            'lib.es2018.asynciterable.d.ts',
            'lib.es2018.promise.d.ts',
            'lib.es2018.regexp.d.ts',
        ]
    }
    Iif (options.target >= ScriptTarget.ES2019) {
        es = [
            ...es,
            `lib.es2019.d.ts`,
            'lib.es2019.full.d.ts',
            'lib.es2019.array.d.ts',
            'lib.es2019.object.d.ts',
            'lib.es2019.string.d.ts',
            'lib.es2019.symbol.d.ts',
        ]
    }
    Iif (options.target >= ScriptTarget.ES2020) {
        es = [
            ...es,
            `lib.es2020.d.ts`,
            'lib.es2020.full.d.ts',
            'lib.es2020.intl.d.ts',
            'lib.es2020.bigint.d.ts',
            'lib.es2020.promise.d.ts',
            'lib.es2020.sharedmemory.d.ts',
            'lib.es2020.string.d.ts',
            'lib.es2020.symbol.wellknown.d.ts',
        ]
    }
    const fsMap = new Map<string, string>()
 
    const promises = [...base, ...es]
        .map((filename) => [
            filename,
            `${getUrlBase('typescript', version)}/lib/${filename}`,
        ])
        .map(([filename, url]) =>
            fetchSource({ name: filename, url }).then(({ content }) => {
                fsMap.set(`/${filename}`, content)
            }),
        )
    const interfaces = [
        fetchSource({
            name: 'environment.d.ts',
            url: `${getUrlBase(
                '@youwol/os-core',
                'latest',
            )}/dist/lib/environment.d.ts`,
        }).then(({ content }) => {
            fsMap.set(`/environment.ts`, content)
        }),
        fetchSource({
            name: 'installer.d.ts',
            url: `${getUrlBase(
                '@youwol/os-core',
                'latest',
            )}/dist/lib/installer.d.ts`,
        }).then(({ content }) => {
            fsMap.set(`/installer.ts`, content)
        }),
    ]
 
    return Promise.all([...promises, ...interfaces]).then(() => {
        return fsMap
    })
}