init
This commit is contained in:
21
node_modules/vue-tsc/LICENSE
generated
vendored
Normal file
21
node_modules/vue-tsc/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021-present Johnson Chu
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
36
node_modules/vue-tsc/README.md
generated
vendored
Normal file
36
node_modules/vue-tsc/README.md
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
# vue-tsc
|
||||
|
||||
Install: `npm i vue-tsc -D`
|
||||
|
||||
Usage: `vue-tsc --noEmit && vite build`
|
||||
|
||||
Vue 3 command line Type-Checking tool base on IDE plugin [Volar](https://github.com/vuejs/language-tools).
|
||||
|
||||
Roadmap:
|
||||
|
||||
- [x] Type-Checking with `--noEmit`
|
||||
- [x] Use released LSP module
|
||||
- [x] Make `typescript` as peerDependencies
|
||||
- [x] Cleaner dependencies (remove `prettyhtml`, `prettier` etc.) (with `vscode-vue-languageservice` version >= 0.26.4)
|
||||
- [x] dts emit support
|
||||
- [x] Watch mode support
|
||||
|
||||
## Usage
|
||||
|
||||
Type check:
|
||||
|
||||
`vue-tsc --noEmit`
|
||||
|
||||
Build dts:
|
||||
|
||||
`vue-tsc --declaration --emitDeclarationOnly`
|
||||
|
||||
Check out https://github.com/vuejs/language-tools/discussions/640#discussioncomment-1555479 for example repo.
|
||||
|
||||
## Sponsors
|
||||
|
||||
<p align="center">
|
||||
<a href="https://cdn.jsdelivr.net/gh/johnsoncodehk/sponsors/sponsors.svg">
|
||||
<img src="https://cdn.jsdelivr.net/gh/johnsoncodehk/sponsors/sponsors.svg"/>
|
||||
</a>
|
||||
</p>
|
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;
|
||||
}
|
||||
}
|
||||
})();
|
17
node_modules/vue-tsc/out/index.d.ts
generated
vendored
Normal file
17
node_modules/vue-tsc/out/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
import type * as ts from 'typescript/lib/tsserverlibrary';
|
||||
import * as vue from '@vue/language-core';
|
||||
export type Hook = (program: _Program) => void;
|
||||
export type _Program = ts.Program & {
|
||||
__vue: ProgramContext;
|
||||
};
|
||||
interface ProgramContext {
|
||||
projectVersion: number;
|
||||
options: ts.CreateProgramOptions;
|
||||
languageHost: vue.TypeScriptLanguageHost;
|
||||
vueCompilerOptions: Partial<vue.VueCompilerOptions>;
|
||||
langaugeContext: vue.LanguageContext;
|
||||
languageService: ts.LanguageService;
|
||||
}
|
||||
export declare function createProgram(options: ts.CreateProgramOptions): _Program;
|
||||
export {};
|
||||
//# sourceMappingURL=index.d.ts.map
|
126
node_modules/vue-tsc/out/index.js
generated
vendored
Normal file
126
node_modules/vue-tsc/out/index.js
generated
vendored
Normal file
@ -0,0 +1,126 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createProgram = void 0;
|
||||
const vue = require("@vue/language-core");
|
||||
const volarTs = require("@volar/typescript");
|
||||
const shared_1 = require("./shared");
|
||||
const windowsPathReg = /\\/g;
|
||||
function createProgram(options) {
|
||||
if (!options.options.noEmit && !options.options.emitDeclarationOnly)
|
||||
throw toThrow('js emit is not supported');
|
||||
if (!options.options.noEmit && options.options.noEmitOnError)
|
||||
throw toThrow('noEmitOnError is not supported');
|
||||
if (options.options.extendedDiagnostics || options.options.generateTrace)
|
||||
throw toThrow('--extendedDiagnostics / --generateTrace is not supported, please run `Write Virtual Files` in VSCode to write virtual files and use `--extendedDiagnostics` / `--generateTrace` via tsc instead of vue-tsc to debug.');
|
||||
if (!options.host)
|
||||
throw toThrow('!options.host');
|
||||
const ts = require('typescript');
|
||||
let program = options.oldProgram;
|
||||
if (shared_1.state.hook) {
|
||||
program = shared_1.state.hook.program;
|
||||
program.__vue.options = options;
|
||||
}
|
||||
else if (!program) {
|
||||
const ctx = {
|
||||
projectVersion: 0,
|
||||
options,
|
||||
get languageHost() {
|
||||
return languageHost;
|
||||
},
|
||||
get vueCompilerOptions() {
|
||||
return vueCompilerOptions;
|
||||
},
|
||||
get languageService() {
|
||||
return vueTsLs;
|
||||
},
|
||||
get langaugeContext() {
|
||||
return languageContext;
|
||||
},
|
||||
};
|
||||
const vueCompilerOptions = getVueCompilerOptions();
|
||||
const scripts = new Map();
|
||||
const languageHost = {
|
||||
workspacePath: ctx.options.host.getCurrentDirectory().replace(windowsPathReg, '/'),
|
||||
rootPath: ctx.options.host.getCurrentDirectory().replace(windowsPathReg, '/'),
|
||||
getCompilationSettings: () => ctx.options.options,
|
||||
getScriptFileNames: () => {
|
||||
return ctx.options.rootNames;
|
||||
},
|
||||
getScriptSnapshot,
|
||||
getProjectVersion: () => {
|
||||
return ctx.projectVersion.toString();
|
||||
},
|
||||
getProjectReferences: () => ctx.options.projectReferences,
|
||||
getCancellationToken: ctx.options.host.getCancellationToken ? () => ctx.options.host.getCancellationToken() : undefined,
|
||||
};
|
||||
const languageContext = vue.createLanguageContext(languageHost, vue.createLanguages(ts, languageHost.getCompilationSettings(), vueCompilerOptions));
|
||||
const languageServiceHost = volarTs.createLanguageServiceHost(languageContext, ts, ts.sys);
|
||||
const vueTsLs = ts.createLanguageService(languageServiceHost, volarTs.getDocumentRegistry(ts, ts.sys.useCaseSensitiveFileNames, languageHost.workspacePath));
|
||||
volarTs.decorateLanguageService(languageContext.virtualFiles, vueTsLs, false);
|
||||
program = volarTs.getProgram(ts, languageContext, vueTsLs, ts.sys);
|
||||
program.__vue = ctx;
|
||||
function getVueCompilerOptions() {
|
||||
const tsConfig = ctx.options.options.configFilePath;
|
||||
if (typeof tsConfig === 'string') {
|
||||
return vue.createParsedCommandLine(ts, ts.sys, tsConfig.replace(windowsPathReg, '/')).vueOptions;
|
||||
}
|
||||
return {};
|
||||
}
|
||||
function getScriptSnapshot(fileName) {
|
||||
return getScript(fileName)?.scriptSnapshot;
|
||||
}
|
||||
function getScript(fileName) {
|
||||
const script = scripts.get(fileName);
|
||||
if (script?.projectVersion === ctx.projectVersion) {
|
||||
return script;
|
||||
}
|
||||
const modifiedTime = ts.sys.getModifiedTime?.(fileName)?.valueOf() ?? 0;
|
||||
if (script?.modifiedTime === modifiedTime) {
|
||||
return script;
|
||||
}
|
||||
if (ctx.options.host.fileExists(fileName)) {
|
||||
const fileContent = ctx.options.host.readFile(fileName);
|
||||
if (fileContent !== undefined) {
|
||||
const script = {
|
||||
projectVersion: ctx.projectVersion,
|
||||
modifiedTime,
|
||||
scriptSnapshot: ts.ScriptSnapshot.fromString(fileContent),
|
||||
version: ctx.options.host.createHash?.(fileContent) ?? fileContent,
|
||||
};
|
||||
scripts.set(fileName, script);
|
||||
return script;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
const ctx = program.__vue;
|
||||
ctx.options = options;
|
||||
ctx.projectVersion++;
|
||||
}
|
||||
const vueCompilerOptions = program.__vue.vueCompilerOptions;
|
||||
if (vueCompilerOptions?.hooks) {
|
||||
const index = (shared_1.state.hook?.index ?? -1) + 1;
|
||||
if (index < vueCompilerOptions.hooks.length) {
|
||||
const hookPath = vueCompilerOptions.hooks[index];
|
||||
const hook = require(hookPath);
|
||||
shared_1.state.hook = {
|
||||
program,
|
||||
index,
|
||||
worker: (async () => await hook(program))(),
|
||||
};
|
||||
throw 'hook';
|
||||
}
|
||||
}
|
||||
for (const rootName of options.rootNames) {
|
||||
// register file watchers
|
||||
options.host.getSourceFile(rootName, ts.ScriptTarget.ESNext);
|
||||
}
|
||||
return program;
|
||||
}
|
||||
exports.createProgram = createProgram;
|
||||
function toThrow(msg) {
|
||||
console.error(msg);
|
||||
return msg;
|
||||
}
|
||||
//# sourceMappingURL=index.js.map
|
9
node_modules/vue-tsc/out/shared.d.ts
generated
vendored
Normal file
9
node_modules/vue-tsc/out/shared.d.ts
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import type { _Program } from './index';
|
||||
export declare const state: {
|
||||
hook?: {
|
||||
program: _Program;
|
||||
index: number;
|
||||
worker: Promise<any>;
|
||||
};
|
||||
};
|
||||
//# sourceMappingURL=shared.d.ts.map
|
5
node_modules/vue-tsc/out/shared.js
generated
vendored
Normal file
5
node_modules/vue-tsc/out/shared.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.state = void 0;
|
||||
exports.state = {};
|
||||
//# sourceMappingURL=shared.js.map
|
31
node_modules/vue-tsc/package.json
generated
vendored
Normal file
31
node_modules/vue-tsc/package.json
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "vue-tsc",
|
||||
"version": "1.8.27",
|
||||
"main": "out/index.js",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"bin",
|
||||
"out/**/*.js",
|
||||
"out/**/*.d.ts"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vuejs/language-tools.git",
|
||||
"directory": "packages/tsc"
|
||||
},
|
||||
"bin": {
|
||||
"vue-tsc": "./bin/vue-tsc.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@volar/typescript": "~1.11.1",
|
||||
"@vue/language-core": "1.8.27",
|
||||
"semver": "^7.5.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "latest"
|
||||
},
|
||||
"gitHead": "09c04807eb19f1261cc429af1b90c6561166ad4f"
|
||||
}
|
Reference in New Issue
Block a user