mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 08:07:49 +00:00
fix(tools): install TypeScript 6 without a shell-unsafe version range (#359)
Fixes #341
This commit is contained in:
@@ -297,7 +297,7 @@ fn npm_server(tools: &Path, name: &str, bin: &str, init: Option<serde_json::Valu
|
||||
|
||||
/// Vue Language Server 3 in hybrid mode: its `tsserver/request`s go through the
|
||||
/// client to vtsls with `@vue/typescript-plugin` (issue #25). Set
|
||||
/// `OPENIDEA_TEST_NPM_TOOLS` to a dir with `npm i @vue/language-server typescript@"<7" @vtsls/language-server`.
|
||||
/// `OPENIDEA_TEST_NPM_TOOLS` to a dir with `npm i @vue/language-server typescript@6 @vtsls/language-server`.
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
#[ignore = "requires @vue/language-server and @vtsls/language-server (OPENIDEA_TEST_NPM_TOOLS)"]
|
||||
async fn vue_hybrid_mode_end_to_end() {
|
||||
|
||||
@@ -38,7 +38,7 @@ pub(crate) fn tsserver_plugin(package: &Path) -> serde_json::Value {
|
||||
|
||||
pub(crate) fn missing_typescript_message() -> String {
|
||||
"Vue Language Server needs TypeScript 5 or 6 (TypeScript 7 has no language service API). \
|
||||
Reinstall it in Settings › Languages & Frameworks › Language Servers, add typescript@\"<7\" \
|
||||
Reinstall it in Settings › Languages & Frameworks › Language Servers, add typescript@6 \
|
||||
to the project, or pick a TypeScript version in Settings › Languages & Frameworks › TypeScript."
|
||||
.to_owned()
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ struct Manifest {
|
||||
|
||||
const MANIFEST: &str = ".openidea-tool.json";
|
||||
|
||||
/// `typescript@<7` → `typescript`, `@vue/language-server` unchanged.
|
||||
/// `typescript@6` → `typescript`, `@vue/language-server` unchanged.
|
||||
fn npm_name(spec: &str) -> &str {
|
||||
match spec[1..].find('@') {
|
||||
Some(i) => &spec[..i + 1],
|
||||
|
||||
@@ -114,7 +114,7 @@ const fn ver(cmd: &'static str) -> Option<(&'static str, &'static [&'static str]
|
||||
|
||||
/// The TypeScript these npm servers load as a library (`tsserver.js`, `ts.server`):
|
||||
/// TypeScript 7 (the native port) ships neither, and `@latest` resolves to it.
|
||||
pub const TYPESCRIPT: &str = "typescript@<7";
|
||||
pub const TYPESCRIPT: &str = "typescript@6";
|
||||
|
||||
pub static TOOLS: &[ToolSpec] = &[
|
||||
ToolSpec {
|
||||
|
||||
@@ -335,7 +335,7 @@ done"#,
|
||||
}
|
||||
let installs = fs::read_to_string(&log).unwrap();
|
||||
for line in installs.lines() {
|
||||
assert!(line.contains("typescript@<7") && !line.contains("typescript@latest"), "{line}");
|
||||
assert!(line.contains("typescript@6") && !line.contains("typescript@latest"), "{line}");
|
||||
}
|
||||
assert!(installs.contains("@vue/language-server@latest"), "{installs}");
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ fallback = true
|
||||
command = "typescript-language-server"
|
||||
args = ["--stdio"]
|
||||
root-markers = ["jsconfig.json", "tsconfig.json", "package.json"]
|
||||
install-hint = "npm i -g typescript@\"<7\" typescript-language-server"
|
||||
install-hint = "npm i -g typescript@6 typescript-language-server"
|
||||
|
||||
[debugger]
|
||||
adapter = "js-debug"
|
||||
|
||||
@@ -21,7 +21,7 @@ fallback = true
|
||||
command = "typescript-language-server"
|
||||
args = ["--stdio"]
|
||||
root-markers = ["jsconfig.json", "tsconfig.json", "package.json"]
|
||||
install-hint = "npm i -g typescript@\"<7\" typescript-language-server"
|
||||
install-hint = "npm i -g typescript@6 typescript-language-server"
|
||||
|
||||
[debugger]
|
||||
adapter = "js-debug"
|
||||
|
||||
@@ -21,7 +21,7 @@ fallback = true
|
||||
command = "typescript-language-server"
|
||||
args = ["--stdio"]
|
||||
root-markers = ["tsconfig.json", "jsconfig.json", "package.json"]
|
||||
install-hint = "npm i -g typescript@\"<7\" typescript-language-server"
|
||||
install-hint = "npm i -g typescript@6 typescript-language-server"
|
||||
|
||||
# Angular projects only: templates inline in components (`template: ...`),
|
||||
# and their usages and renames in templates. Last: TypeScript's own hover,
|
||||
|
||||
@@ -21,7 +21,7 @@ fallback = true
|
||||
command = "typescript-language-server"
|
||||
args = ["--stdio"]
|
||||
root-markers = ["tsconfig.json", "jsconfig.json", "package.json"]
|
||||
install-hint = "npm i -g typescript@\"<7\" typescript-language-server"
|
||||
install-hint = "npm i -g typescript@6 typescript-language-server"
|
||||
|
||||
[debugger]
|
||||
adapter = "js-debug"
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ name = "vue-language-server"
|
||||
command = "vue-language-server"
|
||||
args = ["--stdio"]
|
||||
root-markers = ["package.json", "vite.config.ts", "vite.config.js", "nuxt.config.ts", "tsconfig.json"]
|
||||
install-hint = "npm i -g @vue/language-server typescript@\"<7\""
|
||||
install-hint = "npm i -g @vue/language-server typescript@6"
|
||||
|
||||
# Hybrid mode: TypeScript in `.vue` files comes from tsserver with
|
||||
# `@vue/typescript-plugin` (configured by the settings hook); vue-language-server
|
||||
|
||||
Reference in New Issue
Block a user