Urara-Blog/node_modules/.pnpm-store/v3/files/38/8f6dad7255c2865290d8296508f9efc09561c05334e4725d977303e53b6072367be3b9a936f5a52433bf88d37842695b018b29da291bdcdb02fc307f5dac59
2022-08-14 01:14:53 +08:00

1 line
No EOL
38 KiB
Text

{"version":3,"file":"vfs.esm.js","sources":["../src/index.ts"],"sourcesContent":["type System = import(\"typescript\").System\ntype CompilerOptions = import(\"typescript\").CompilerOptions\ntype CustomTransformers = import(\"typescript\").CustomTransformers\ntype LanguageServiceHost = import(\"typescript\").LanguageServiceHost\ntype CompilerHost = import(\"typescript\").CompilerHost\ntype SourceFile = import(\"typescript\").SourceFile\ntype TS = typeof import(\"typescript\")\n\nlet hasLocalStorage = false\ntry {\n hasLocalStorage = typeof localStorage !== `undefined`\n} catch (error) {}\n\nconst hasProcess = typeof process !== `undefined`\nconst shouldDebug = (hasLocalStorage && localStorage.getItem(\"DEBUG\")) || (hasProcess && process.env.DEBUG)\nconst debugLog = shouldDebug ? console.log : (_message?: any, ..._optionalParams: any[]) => \"\"\n\nexport interface VirtualTypeScriptEnvironment {\n sys: System\n languageService: import(\"typescript\").LanguageService\n getSourceFile: (fileName: string) => import(\"typescript\").SourceFile | undefined\n createFile: (fileName: string, content: string) => void\n updateFile: (fileName: string, content: string, replaceTextSpan?: import(\"typescript\").TextSpan) => void\n}\n\n/**\n * Makes a virtual copy of the TypeScript environment. This is the main API you want to be using with\n * @typescript/vfs. A lot of the other exposed functions are used by this function to get set up.\n *\n * @param sys an object which conforms to the TS Sys (a shim over read/write access to the fs)\n * @param rootFiles a list of files which are considered inside the project\n * @param ts a copy pf the TypeScript module\n * @param compilerOptions the options for this compiler run\n * @param customTransformers custom transformers for this compiler run\n */\n\nexport function createVirtualTypeScriptEnvironment(\n sys: System,\n rootFiles: string[],\n ts: TS,\n compilerOptions: CompilerOptions = {},\n customTransformers?: CustomTransformers\n): VirtualTypeScriptEnvironment {\n const mergedCompilerOpts = { ...defaultCompilerOptions(ts), ...compilerOptions }\n\n const { languageServiceHost, updateFile } = createVirtualLanguageServiceHost(\n sys,\n rootFiles,\n mergedCompilerOpts,\n ts,\n customTransformers\n )\n const languageService = ts.createLanguageService(languageServiceHost)\n const diagnostics = languageService.getCompilerOptionsDiagnostics()\n\n if (diagnostics.length) {\n const compilerHost = createVirtualCompilerHost(sys, compilerOptions, ts)\n throw new Error(ts.formatDiagnostics(diagnostics, compilerHost.compilerHost))\n }\n\n return {\n // @ts-ignore\n name: \"vfs\",\n sys,\n languageService,\n getSourceFile: fileName => languageService.getProgram()?.getSourceFile(fileName),\n\n createFile: (fileName, content) => {\n updateFile(ts.createSourceFile(fileName, content, mergedCompilerOpts.target!, false))\n },\n updateFile: (fileName, content, optPrevTextSpan) => {\n const prevSourceFile = languageService.getProgram()!.getSourceFile(fileName)\n if (!prevSourceFile) {\n throw new Error(\"Did not find a source file for \" + fileName)\n }\n const prevFullContents = prevSourceFile.text\n\n // TODO: Validate if the default text span has a fencepost error?\n const prevTextSpan = optPrevTextSpan ?? ts.createTextSpan(0, prevFullContents.length)\n const newText =\n prevFullContents.slice(0, prevTextSpan.start) +\n content +\n prevFullContents.slice(prevTextSpan.start + prevTextSpan.length)\n const newSourceFile = ts.updateSourceFile(prevSourceFile, newText, {\n span: prevTextSpan,\n newLength: content.length,\n })\n\n updateFile(newSourceFile)\n },\n }\n}\n\n/**\n * Grab the list of lib files for a particular target, will return a bit more than necessary (by including\n * the dom) but that's OK\n *\n * @param target The compiler settings target baseline\n * @param ts A copy of the TypeScript module\n */\nexport const knownLibFilesForCompilerOptions = (compilerOptions: CompilerOptions, ts: TS) => {\n const target = compilerOptions.target || ts.ScriptTarget.ES5\n const lib = compilerOptions.lib || []\n\n const files = [\n \"lib.d.ts\",\n \"lib.dom.d.ts\",\n \"lib.dom.iterable.d.ts\",\n \"lib.webworker.d.ts\",\n \"lib.webworker.importscripts.d.ts\",\n \"lib.scripthost.d.ts\",\n \"lib.es5.d.ts\",\n \"lib.es6.d.ts\",\n \"lib.es2015.collection.d.ts\",\n \"lib.es2015.core.d.ts\",\n \"lib.es2015.d.ts\",\n \"lib.es2015.generator.d.ts\",\n \"lib.es2015.iterable.d.ts\",\n \"lib.es2015.promise.d.ts\",\n \"lib.es2015.proxy.d.ts\",\n \"lib.es2015.reflect.d.ts\",\n \"lib.es2015.symbol.d.ts\",\n \"lib.es2015.symbol.wellknown.d.ts\",\n \"lib.es2016.array.include.d.ts\",\n \"lib.es2016.d.ts\",\n \"lib.es2016.full.d.ts\",\n \"lib.es2017.d.ts\",\n \"lib.es2017.full.d.ts\",\n \"lib.es2017.intl.d.ts\",\n \"lib.es2017.object.d.ts\",\n \"lib.es2017.sharedmemory.d.ts\",\n \"lib.es2017.string.d.ts\",\n \"lib.es2017.typedarrays.d.ts\",\n \"lib.es2018.asyncgenerator.d.ts\",\n \"lib.es2018.asynciterable.d.ts\",\n \"lib.es2018.d.ts\",\n \"lib.es2018.full.d.ts\",\n \"lib.es2018.intl.d.ts\",\n \"lib.es2018.promise.d.ts\",\n \"lib.es2018.regexp.d.ts\",\n \"lib.es2019.array.d.ts\",\n \"lib.es2019.d.ts\",\n \"lib.es2019.full.d.ts\",\n \"lib.es2019.object.d.ts\",\n \"lib.es2019.string.d.ts\",\n \"lib.es2019.symbol.d.ts\",\n \"lib.es2020.d.ts\",\n \"lib.es2020.full.d.ts\",\n \"lib.es2020.string.d.ts\",\n \"lib.es2020.symbol.wellknown.d.ts\",\n \"lib.es2020.bigint.d.ts\",\n \"lib.es2020.promise.d.ts\",\n \"lib.es2020.sharedmemory.d.ts\",\n \"lib.es2020.intl.d.ts\",\n \"lib.esnext.array.d.ts\",\n \"lib.esnext.asynciterable.d.ts\",\n \"lib.esnext.bigint.d.ts\",\n \"lib.esnext.d.ts\",\n \"lib.esnext.full.d.ts\",\n \"lib.esnext.intl.d.ts\",\n \"lib.esnext.symbol.d.ts\",\n ]\n\n const targetToCut = ts.ScriptTarget[target]\n const matches = files.filter(f => f.startsWith(`lib.${targetToCut.toLowerCase()}`))\n const targetCutIndex = files.indexOf(matches.pop()!)\n\n const getMax = (array: number[]) =>\n array && array.length ? array.reduce((max, current) => (current > max ? current : max)) : undefined\n\n // Find the index for everything in\n const indexesForCutting = lib.map(lib => {\n const matches = files.filter(f => f.startsWith(`lib.${lib.toLowerCase()}`))\n if (matches.length === 0) return 0\n\n const cutIndex = files.indexOf(matches.pop()!)\n return cutIndex\n })\n\n const libCutIndex = getMax(indexesForCutting) || 0\n\n const finalCutIndex = Math.max(targetCutIndex, libCutIndex)\n return files.slice(0, finalCutIndex + 1)\n}\n\n/**\n * Sets up a Map with lib contents by grabbing the necessary files from\n * the local copy of typescript via the file system.\n */\nexport const createDefaultMapFromNodeModules = (compilerOptions: CompilerOptions, ts?: typeof import(\"typescript\")) => {\n const tsModule = ts || require(\"typescript\")\n const path = require(\"path\")\n const fs = require(\"fs\")\n\n const getLib = (name: string) => {\n const lib = path.dirname(require.resolve(\"typescript\"))\n return fs.readFileSync(path.join(lib, name), \"utf8\")\n }\n\n const libs = knownLibFilesForCompilerOptions(compilerOptions, tsModule)\n const fsMap = new Map<string, string>()\n libs.forEach(lib => {\n fsMap.set(\"/\" + lib, getLib(lib))\n })\n return fsMap\n}\n\n/**\n * Adds recursively files from the FS into the map based on the folder\n */\nexport const addAllFilesFromFolder = (map: Map<string, string>, workingDir: string): void => {\n const path = require(\"path\")\n const fs = require(\"fs\")\n\n const walk = function (dir: string) {\n let results: string[] = []\n const list = fs.readdirSync(dir)\n list.forEach(function (file: string) {\n file = path.join(dir, file)\n const stat = fs.statSync(file)\n if (stat && stat.isDirectory()) {\n /* Recurse into a subdirectory */\n results = results.concat(walk(file))\n } else {\n /* Is a file */\n results.push(file)\n }\n })\n return results\n }\n\n const allFiles = walk(workingDir)\n\n allFiles.forEach(lib => {\n const fsPath = \"/node_modules/@types\" + lib.replace(workingDir, \"\")\n const content = fs.readFileSync(lib, \"utf8\")\n const validExtensions = [\".ts\", \".tsx\"]\n\n if (validExtensions.includes(path.extname(fsPath))) {\n map.set(fsPath, content)\n }\n })\n}\n\n/** Adds all files from node_modules/@types into the FS Map */\nexport const addFilesForTypesIntoFolder = (map: Map<string, string>) =>\n addAllFilesFromFolder(map, \"node_modules/@types\")\n\n/**\n * Create a virtual FS Map with the lib files from a particular TypeScript\n * version based on the target, Always includes dom ATM.\n *\n * @param options The compiler target, which dictates the libs to set up\n * @param version the versions of TypeScript which are supported\n * @param cache should the values be stored in local storage\n * @param ts a copy of the typescript import\n * @param lzstring an optional copy of the lz-string import\n * @param fetcher an optional replacement for the global fetch function (tests mainly)\n * @param storer an optional replacement for the localStorage global (tests mainly)\n */\nexport const createDefaultMapFromCDN = (\n options: CompilerOptions,\n version: string,\n cache: boolean,\n ts: TS,\n lzstring?: typeof import(\"lz-string\"),\n fetcher?: typeof fetch,\n storer?: typeof localStorage\n) => {\n const fetchlike = fetcher || fetch\n const storelike = storer || localStorage\n const fsMap = new Map<string, string>()\n const files = knownLibFilesForCompilerOptions(options, ts)\n const prefix = `https://typescript.azureedge.net/cdn/${version}/typescript/lib/`\n\n function zip(str: string) {\n return lzstring ? lzstring.compressToUTF16(str) : str\n }\n\n function unzip(str: string) {\n return lzstring ? lzstring.decompressFromUTF16(str) : str\n }\n\n // Map the known libs to a node fetch promise, then return the contents\n function uncached() {\n return Promise.all(files.map(lib => fetchlike(prefix + lib).then(resp => resp.text()))).then(contents => {\n contents.forEach((text, index) => fsMap.set(\"/\" + files[index], text))\n })\n }\n\n // A localstorage and lzzip aware version of the lib files\n function cached() {\n const keys = Object.keys(localStorage)\n keys.forEach(key => {\n // Remove anything which isn't from this version\n if (key.startsWith(\"ts-lib-\") && !key.startsWith(\"ts-lib-\" + version)) {\n storelike.removeItem(key)\n }\n })\n\n return Promise.all(\n files.map(lib => {\n const cacheKey = `ts-lib-${version}-${lib}`\n const content = storelike.getItem(cacheKey)\n\n if (!content) {\n // Make the API call and store the text concent in the cache\n return fetchlike(prefix + lib)\n .then(resp => resp.text())\n .then(t => {\n storelike.setItem(cacheKey, zip(t))\n return t\n })\n } else {\n return Promise.resolve(unzip(content))\n }\n })\n ).then(contents => {\n contents.forEach((text, index) => {\n const name = \"/\" + files[index]\n fsMap.set(name, text)\n })\n })\n }\n\n const func = cache ? cached : uncached\n return func().then(() => fsMap)\n}\n\nfunction notImplemented(methodName: string): any {\n throw new Error(`Method '${methodName}' is not implemented.`)\n}\n\nfunction audit<ArgsT extends any[], ReturnT>(\n name: string,\n fn: (...args: ArgsT) => ReturnT\n): (...args: ArgsT) => ReturnT {\n return (...args) => {\n const res = fn(...args)\n\n const smallres = typeof res === \"string\" ? res.slice(0, 80) + \"...\" : res\n debugLog(\"> \" + name, ...args)\n debugLog(\"< \" + smallres)\n\n return res\n }\n}\n\n/** The default compiler options if TypeScript could ever change the compiler options */\nconst defaultCompilerOptions = (ts: typeof import(\"typescript\")): CompilerOptions => {\n return {\n ...ts.getDefaultCompilerOptions(),\n jsx: ts.JsxEmit.React,\n strict: true,\n esModuleInterop: true,\n module: ts.ModuleKind.ESNext,\n suppressOutputPathCheck: true,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n moduleResolution: ts.ModuleResolutionKind.NodeJs,\n }\n}\n\n// \"/DOM.d.ts\" => \"/lib.dom.d.ts\"\nconst libize = (path: string) => path.replace(\"/\", \"/lib.\").toLowerCase()\n\n/**\n * Creates an in-memory System object which can be used in a TypeScript program, this\n * is what provides read/write aspects of the virtual fs\n */\nexport function createSystem(files: Map<string, string>): System {\n return {\n args: [],\n createDirectory: () => notImplemented(\"createDirectory\"),\n // TODO: could make a real file tree\n directoryExists: audit(\"directoryExists\", directory => {\n return Array.from(files.keys()).some(path => path.startsWith(directory))\n }),\n exit: () => notImplemented(\"exit\"),\n fileExists: audit(\"fileExists\", fileName => files.has(fileName) || files.has(libize(fileName))),\n getCurrentDirectory: () => \"/\",\n getDirectories: () => [],\n getExecutingFilePath: () => notImplemented(\"getExecutingFilePath\"),\n readDirectory: audit(\"readDirectory\", directory => (directory === \"/\" ? Array.from(files.keys()) : [])),\n readFile: audit(\"readFile\", fileName => files.get(fileName) || files.get(libize(fileName))),\n resolvePath: path => path,\n newLine: \"\\n\",\n useCaseSensitiveFileNames: true,\n write: () => notImplemented(\"write\"),\n writeFile: (fileName, contents) => {\n files.set(fileName, contents)\n },\n }\n}\n\n/**\n * Creates a file-system backed System object which can be used in a TypeScript program, you provide\n * a set of virtual files which are prioritised over the FS versions, then a path to the root of your\n * project (basically the folder your node_modules lives)\n */\nexport function createFSBackedSystem(files: Map<string, string>, _projectRoot: string, ts: TS): System {\n // We need to make an isolated folder for the tsconfig, but also need to be able to resolve the\n // existing node_modules structures going back through the history\n const root = _projectRoot + \"/vfs\"\n const path = require(\"path\")\n\n // The default System in TypeScript\n const nodeSys = ts.sys\n const tsLib = path.dirname(require.resolve(\"typescript\"))\n\n return {\n // @ts-ignore\n name: \"fs-vfs\",\n root,\n args: [],\n createDirectory: () => notImplemented(\"createDirectory\"),\n // TODO: could make a real file tree\n directoryExists: audit(\"directoryExists\", directory => {\n return Array.from(files.keys()).some(path => path.startsWith(directory)) || nodeSys.directoryExists(directory)\n }),\n exit: nodeSys.exit,\n fileExists: audit(\"fileExists\", fileName => {\n if (files.has(fileName)) return true\n // Don't let other tsconfigs end up touching the vfs\n if (fileName.includes(\"tsconfig.json\") || fileName.includes(\"tsconfig.json\")) return false\n if (fileName.startsWith(\"/lib\")) {\n const tsLibName = `${tsLib}/${fileName.replace(\"/\", \"\")}`\n return nodeSys.fileExists(tsLibName)\n }\n return nodeSys.fileExists(fileName)\n }),\n getCurrentDirectory: () => root,\n getDirectories: nodeSys.getDirectories,\n getExecutingFilePath: () => notImplemented(\"getExecutingFilePath\"),\n readDirectory: audit(\"readDirectory\", (...args) => {\n if (args[0] === \"/\") {\n return Array.from(files.keys())\n } else {\n return nodeSys.readDirectory(...args)\n }\n }),\n readFile: audit(\"readFile\", fileName => {\n if (files.has(fileName)) return files.get(fileName)\n if (fileName.startsWith(\"/lib\")) {\n const tsLibName = `${tsLib}/${fileName.replace(\"/\", \"\")}`\n const result = nodeSys.readFile(tsLibName)\n if (!result) {\n const libs = nodeSys.readDirectory(tsLib)\n throw new Error(\n `TSVFS: A request was made for ${tsLibName} but there wasn't a file found in the file map. You likely have a mismatch in the compiler options for the CDN download vs the compiler program. Existing Libs: ${libs}.`\n )\n }\n return result\n }\n return nodeSys.readFile(fileName)\n }),\n resolvePath: path => {\n if (files.has(path)) return path\n return nodeSys.resolvePath(path)\n },\n newLine: \"\\n\",\n useCaseSensitiveFileNames: true,\n write: () => notImplemented(\"write\"),\n writeFile: (fileName, contents) => {\n files.set(fileName, contents)\n },\n }\n}\n\n/**\n * Creates an in-memory CompilerHost -which is essentially an extra wrapper to System\n * which works with TypeScript objects - returns both a compiler host, and a way to add new SourceFile\n * instances to the in-memory file system.\n */\nexport function createVirtualCompilerHost(sys: System, compilerOptions: CompilerOptions, ts: TS) {\n const sourceFiles = new Map<string, SourceFile>()\n const save = (sourceFile: SourceFile) => {\n sourceFiles.set(sourceFile.fileName, sourceFile)\n return sourceFile\n }\n\n type Return = {\n compilerHost: CompilerHost\n updateFile: (sourceFile: SourceFile) => boolean\n }\n\n const vHost: Return = {\n compilerHost: {\n ...sys,\n getCanonicalFileName: fileName => fileName,\n getDefaultLibFileName: () => \"/\" + ts.getDefaultLibFileName(compilerOptions), // '/lib.d.ts',\n // getDefaultLibLocation: () => '/',\n getDirectories: () => [],\n getNewLine: () => sys.newLine,\n getSourceFile: fileName => {\n return (\n sourceFiles.get(fileName) ||\n save(\n ts.createSourceFile(\n fileName,\n sys.readFile(fileName)!,\n compilerOptions.target || defaultCompilerOptions(ts).target!,\n false\n )\n )\n )\n },\n useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames,\n },\n updateFile: sourceFile => {\n const alreadyExists = sourceFiles.has(sourceFile.fileName)\n sys.writeFile(sourceFile.fileName, sourceFile.text)\n sourceFiles.set(sourceFile.fileName, sourceFile)\n return alreadyExists\n },\n }\n return vHost\n}\n\n/**\n * Creates an object which can host a language service against the virtual file-system\n */\nexport function createVirtualLanguageServiceHost(\n sys: System,\n rootFiles: string[],\n compilerOptions: CompilerOptions,\n ts: TS,\n customTransformers?: CustomTransformers\n) {\n const fileNames = [...rootFiles]\n const { compilerHost, updateFile } = createVirtualCompilerHost(sys, compilerOptions, ts)\n const fileVersions = new Map<string, string>()\n let projectVersion = 0\n const languageServiceHost: LanguageServiceHost = {\n ...compilerHost,\n getProjectVersion: () => projectVersion.toString(),\n getCompilationSettings: () => compilerOptions,\n getCustomTransformers: () => customTransformers,\n getScriptFileNames: () => fileNames,\n getScriptSnapshot: fileName => {\n const contents = sys.readFile(fileName)\n if (contents) {\n return ts.ScriptSnapshot.fromString(contents)\n }\n return\n },\n getScriptVersion: fileName => {\n return fileVersions.get(fileName) || \"0\"\n },\n writeFile: sys.writeFile,\n }\n\n type Return = {\n languageServiceHost: LanguageServiceHost\n updateFile: (sourceFile: import(\"typescript\").SourceFile) => void\n }\n\n const lsHost: Return = {\n languageServiceHost,\n updateFile: sourceFile => {\n projectVersion++\n fileVersions.set(sourceFile.fileName, projectVersion.toString())\n if (!fileNames.includes(sourceFile.fileName)) {\n fileNames.push(sourceFile.fileName)\n }\n updateFile(sourceFile)\n },\n }\n return lsHost\n}\n"],"names":["hasLocalStorage","localStorage","error","hasProcess","process","shouldDebug","getItem","env","DEBUG","debugLog","console","log","_message","createVirtualTypeScriptEnvironment","sys","rootFiles","ts","compilerOptions","customTransformers","mergedCompilerOpts","defaultCompilerOptions","createVirtualLanguageServiceHost","languageServiceHost","updateFile","languageService","createLanguageService","diagnostics","getCompilerOptionsDiagnostics","length","compilerHost","createVirtualCompilerHost","Error","formatDiagnostics","name","getSourceFile","fileName","getProgram","createFile","content","createSourceFile","target","optPrevTextSpan","prevSourceFile","prevFullContents","text","prevTextSpan","createTextSpan","newText","slice","start","newSourceFile","updateSourceFile","span","newLength","knownLibFilesForCompilerOptions","ScriptTarget","ES5","lib","files","targetToCut","matches","filter","f","startsWith","toLowerCase","targetCutIndex","indexOf","pop","getMax","array","reduce","max","current","undefined","indexesForCutting","map","cutIndex","libCutIndex","finalCutIndex","Math","createDefaultMapFromNodeModules","tsModule","require","path","fs","getLib","dirname","resolve","readFileSync","join","libs","fsMap","Map","forEach","set","addAllFilesFromFolder","workingDir","walk","dir","results","list","readdirSync","file","stat","statSync","isDirectory","concat","push","allFiles","fsPath","replace","validExtensions","includes","extname","addFilesForTypesIntoFolder","createDefaultMapFromCDN","options","version","cache","lzstring","fetcher","storer","fetchlike","fetch","storelike","prefix","zip","str","compressToUTF16","unzip","decompressFromUTF16","uncached","Promise","all","then","resp","contents","index","cached","keys","Object","key","removeItem","cacheKey","t","setItem","func","notImplemented","methodName","audit","fn","args","res","smallres","getDefaultCompilerOptions","jsx","JsxEmit","React","strict","esModuleInterop","module","ModuleKind","ESNext","suppressOutputPathCheck","skipLibCheck","skipDefaultLibCheck","moduleResolution","ModuleResolutionKind","NodeJs","libize","createSystem","createDirectory","directoryExists","directory","Array","from","some","exit","fileExists","has","getCurrentDirectory","getDirectories","getExecutingFilePath","readDirectory","readFile","get","resolvePath","newLine","useCaseSensitiveFileNames","write","writeFile","createFSBackedSystem","_projectRoot","root","nodeSys","tsLib","tsLibName","result","sourceFiles","save","sourceFile","vHost","getCanonicalFileName","getDefaultLibFileName","getNewLine","alreadyExists","fileNames","fileVersions","projectVersion","getProjectVersion","toString","getCompilationSettings","getCustomTransformers","getScriptFileNames","getScriptSnapshot","ScriptSnapshot","fromString","getScriptVersion","lsHost"],"mappings":"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"}