init
This commit is contained in:
71
node_modules/vue-tsc/bin/vue-tsc.js
generated
vendored
Normal file
71
node_modules/vue-tsc/bin/vue-tsc.js
generated
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env node
|
||||
const semver = require('semver')
|
||||
const fs = require('fs');
|
||||
const tsPkg = require('typescript/package.json');
|
||||
const readFileSync = fs.readFileSync;
|
||||
const tscPath = require.resolve('typescript/lib/tsc');
|
||||
const proxyApiPath = require.resolve('../out/index');
|
||||
const { state } = require('../out/shared');
|
||||
|
||||
fs.readFileSync = (...args) => {
|
||||
if (args[0] === tscPath) {
|
||||
let tsc = readFileSync(...args);
|
||||
|
||||
// add *.vue files to allow extensions
|
||||
tryReplace(/supportedTSExtensions = .*(?=;)/, s => s + '.concat([[".vue"]])');
|
||||
tryReplace(/supportedJSExtensions = .*(?=;)/, s => s + '.concat([[".vue"]])');
|
||||
tryReplace(/allSupportedExtensions = .*(?=;)/, s => s + '.concat([[".vue"]])');
|
||||
|
||||
// proxy createProgram apis
|
||||
tryReplace(/function createProgram\(.+\) {/, s => s + ` return require(${JSON.stringify(proxyApiPath)}).createProgram(...arguments);`);
|
||||
|
||||
// patches logic for checking root file extension in build program for incremental builds
|
||||
if (semver.gt(tsPkg.version, '5.0.0')) {
|
||||
tryReplace(
|
||||
`for (const existingRoot of buildInfoVersionMap.roots) {`,
|
||||
`for (const existingRoot of buildInfoVersionMap.roots
|
||||
.filter(file => !file.toLowerCase().includes('__vls_'))
|
||||
.map(file => file.replace(/\.vue\.(j|t)sx?$/i, '.vue'))
|
||||
) {`
|
||||
);
|
||||
tryReplace(
|
||||
`return [toFileId(key), toFileIdListId(state.exportedModulesMap.getValues(key))];`,
|
||||
`return [toFileId(key), toFileIdListId(new Set(arrayFrom(state.exportedModulesMap.getValues(key)).filter(file => file !== void 0)))];`
|
||||
);
|
||||
}
|
||||
if (semver.gte(tsPkg.version, '5.0.4')) {
|
||||
tryReplace(
|
||||
`return createBuilderProgramUsingProgramBuildInfo(buildInfo, buildInfoPath, host);`,
|
||||
s => `buildInfo.program.fileNames = buildInfo.program.fileNames
|
||||
.filter(file => !file.toLowerCase().includes('__vls_'))
|
||||
.map(file => file.replace(/\.vue\.(j|t)sx?$/i, '.vue'));\n` + s
|
||||
);
|
||||
}
|
||||
|
||||
return tsc;
|
||||
|
||||
function tryReplace(search, replace) {
|
||||
const before = tsc;
|
||||
tsc = tsc.replace(search, replace);
|
||||
const after = tsc;
|
||||
if (after === before) {
|
||||
throw 'Search string not found: ' + JSON.stringify(search.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
return readFileSync(...args);
|
||||
};
|
||||
|
||||
(function main() {
|
||||
try {
|
||||
require(tscPath);
|
||||
}
|
||||
catch (err) {
|
||||
if (err === 'hook') {
|
||||
state.hook.worker.then(main);
|
||||
}
|
||||
else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user