@effect/tsgo 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/effect-tsgo.js +48 -52
- package/package.json +12 -10
package/bin/effect-tsgo.js
CHANGED
|
@@ -195732,7 +195732,7 @@ var FileReadError = class extends TaggedError("FileReadError") {
|
|
|
195732
195732
|
//#endregion
|
|
195733
195733
|
//#region package.json
|
|
195734
195734
|
var name = "@effect/tsgo";
|
|
195735
|
-
var version = "0.0.
|
|
195735
|
+
var version = "0.0.5";
|
|
195736
195736
|
|
|
195737
195737
|
//#endregion
|
|
195738
195738
|
//#region src/setup/consts.ts
|
|
@@ -196040,7 +196040,8 @@ const computePackageJsonChanges = (current, target) => {
|
|
|
196040
196040
|
description: descriptions.join("; "),
|
|
196041
196041
|
changes: [{
|
|
196042
196042
|
fileName: current.path,
|
|
196043
|
-
textChanges: changes
|
|
196043
|
+
textChanges: changes,
|
|
196044
|
+
isNewFile: false
|
|
196044
196045
|
}]
|
|
196045
196046
|
}],
|
|
196046
196047
|
messages
|
|
@@ -196106,7 +196107,8 @@ const computeTsConfigChanges = (current, target, lspVersion) => {
|
|
|
196106
196107
|
description: descriptions.join("; "),
|
|
196107
196108
|
changes: [{
|
|
196108
196109
|
fileName: current.sourceFile.fileName,
|
|
196109
|
-
textChanges: changes
|
|
196110
|
+
textChanges: changes,
|
|
196111
|
+
isNewFile: false
|
|
196110
196112
|
}]
|
|
196111
196113
|
}],
|
|
196112
196114
|
messages
|
|
@@ -196146,7 +196148,8 @@ const computeVSCodeSettingsChanges = (current, target) => {
|
|
|
196146
196148
|
description: descriptions.join("; "),
|
|
196147
196149
|
changes: [{
|
|
196148
196150
|
fileName: current.path,
|
|
196149
|
-
textChanges: changes
|
|
196151
|
+
textChanges: changes,
|
|
196152
|
+
isNewFile: false
|
|
196150
196153
|
}]
|
|
196151
196154
|
}],
|
|
196152
196155
|
messages
|
|
@@ -196171,9 +196174,29 @@ const computeChanges = (assessment, target) => {
|
|
|
196171
196174
|
const vscodeResult = computeVSCodeSettingsChanges(assessment.vscodeSettings.value, vscodeTarget);
|
|
196172
196175
|
codeActions = [...codeActions, ...vscodeResult.codeActions];
|
|
196173
196176
|
messages = [...messages, ...vscodeResult.messages];
|
|
196177
|
+
} else {
|
|
196178
|
+
const dir = node_path.dirname(assessment.packageJson.path);
|
|
196179
|
+
const vscodeSettingsPath = node_path.join(dir, ".vscode", "settings.json");
|
|
196180
|
+
const content = JSON.stringify(vscodeTarget.settings, null, 2) + "\n";
|
|
196181
|
+
codeActions = [...codeActions, {
|
|
196182
|
+
description: "Create .vscode/settings.json",
|
|
196183
|
+
changes: [{
|
|
196184
|
+
fileName: vscodeSettingsPath,
|
|
196185
|
+
textChanges: [{
|
|
196186
|
+
span: {
|
|
196187
|
+
start: 0,
|
|
196188
|
+
length: 0
|
|
196189
|
+
},
|
|
196190
|
+
newText: content
|
|
196191
|
+
}],
|
|
196192
|
+
isNewFile: true
|
|
196193
|
+
}]
|
|
196194
|
+
}];
|
|
196174
196195
|
}
|
|
196175
196196
|
}
|
|
196176
196197
|
}
|
|
196198
|
+
if (isSome(target.packageJson.lspVersion) && codeActions.length > 0) messages = [...messages, "Run `effect-tsgo patch` to complete the installation."];
|
|
196199
|
+
else if (isNone(target.packageJson.lspVersion) && isSome(assessment.packageJson.lspVersion)) messages = [...messages, "Run `effect-tsgo unpatch` to restore the original TypeScript-Go binary."];
|
|
196177
196200
|
if (isSome(target.packageJson.lspVersion) && target.editors.length > 0) {
|
|
196178
196201
|
messages = [...messages, ""];
|
|
196179
196202
|
if (target.editors.includes("vscode")) messages = [
|
|
@@ -196184,18 +196207,6 @@ const computeChanges = (assessment, target) => {
|
|
|
196184
196207
|
" 3. The language service plugin will be loaded automatically",
|
|
196185
196208
|
""
|
|
196186
196209
|
];
|
|
196187
|
-
if (target.editors.includes("nvim")) messages = [
|
|
196188
|
-
...messages,
|
|
196189
|
-
"Neovim (with nvim-vtsls):",
|
|
196190
|
-
" Refer to: https://github.com/yioneko/vtsls?tab=readme-ov-file#typescript-plugin-not-activated",
|
|
196191
|
-
""
|
|
196192
|
-
];
|
|
196193
|
-
if (target.editors.includes("emacs")) messages = [
|
|
196194
|
-
...messages,
|
|
196195
|
-
"Emacs:",
|
|
196196
|
-
" Step-by-step instructions: https://gosha.net/2025/effect-ls-emacs/",
|
|
196197
|
-
""
|
|
196198
|
-
];
|
|
196199
196210
|
}
|
|
196200
196211
|
return {
|
|
196201
196212
|
codeActions,
|
|
@@ -196332,15 +196343,24 @@ const renderCodeActions = (result, assessmentState) => gen(function* () {
|
|
|
196332
196343
|
const sourceFiles = [assessmentState.packageJson.sourceFile, assessmentState.tsconfig.sourceFile];
|
|
196333
196344
|
if (isSome(assessmentState.vscodeSettings)) sourceFiles.push(assessmentState.vscodeSettings.value.sourceFile);
|
|
196334
196345
|
for (const codeAction of result.codeActions) for (const fileChange of codeAction.changes) {
|
|
196335
|
-
const sourceFile = sourceFiles.find((sf) => sf.fileName === fileChange.fileName);
|
|
196336
196346
|
yield* log("");
|
|
196337
196347
|
yield* log(bold(codeAction.description));
|
|
196338
196348
|
yield* log(cyan(fileChange.fileName));
|
|
196339
196349
|
yield* log("");
|
|
196340
|
-
if (
|
|
196341
|
-
const
|
|
196342
|
-
for (
|
|
196343
|
-
|
|
196350
|
+
if (fileChange.isNewFile) {
|
|
196351
|
+
const newFileLines = fileChange.textChanges[0].newText.split("\n");
|
|
196352
|
+
for (let i = 0; i < newFileLines.length; i++) {
|
|
196353
|
+
const line = newFileLines[i];
|
|
196354
|
+
if (i === newFileLines.length - 1 && line.length === 0 && newFileLines.length > 1) continue;
|
|
196355
|
+
yield* log(renderLine(i + 1, "+", line, green));
|
|
196356
|
+
}
|
|
196357
|
+
} else {
|
|
196358
|
+
const sourceFile = sourceFiles.find((sf) => sf.fileName === fileChange.fileName);
|
|
196359
|
+
if (sourceFile) {
|
|
196360
|
+
const diffLines = renderFileChanges(sourceFile, fileChange.textChanges);
|
|
196361
|
+
for (const line of diffLines) yield* log(line);
|
|
196362
|
+
} else yield* log(" (file will be modified)");
|
|
196363
|
+
}
|
|
196344
196364
|
}
|
|
196345
196365
|
if (result.messages.length > 0) {
|
|
196346
196366
|
yield* log("");
|
|
@@ -196390,24 +196410,6 @@ const gatherTargetState = (assessment, context) => gen(function* () {
|
|
|
196390
196410
|
vscodeSettings: none$3(),
|
|
196391
196411
|
editors: []
|
|
196392
196412
|
};
|
|
196393
|
-
const currentPrepareState = match$8(assessment.packageJson.prepareScript, {
|
|
196394
|
-
onNone: () => false,
|
|
196395
|
-
onSome: (script) => script.hasPatch
|
|
196396
|
-
});
|
|
196397
|
-
const prepareScript = yield* select({
|
|
196398
|
-
message: "Enable language service diagnostics during TypeScript compilation?",
|
|
196399
|
-
choices: [{
|
|
196400
|
-
title: "Yes",
|
|
196401
|
-
description: "Enable patching - Recommended for LLMs, diagnostics will appear in tsc output and CI/CD, will patch the tsc binary and typescript library locally.",
|
|
196402
|
-
value: true,
|
|
196403
|
-
selected: currentPrepareState
|
|
196404
|
-
}, {
|
|
196405
|
-
title: "No",
|
|
196406
|
-
description: "Skip patching - diagnostics only available in your editor",
|
|
196407
|
-
value: false,
|
|
196408
|
-
selected: !currentPrepareState
|
|
196409
|
-
}]
|
|
196410
|
-
});
|
|
196411
196413
|
const hasVscodeSettings = isSome(assessment.vscodeSettings);
|
|
196412
196414
|
const editors = yield* multiSelect({
|
|
196413
196415
|
message: "Which editors do you use?",
|
|
@@ -196434,7 +196436,7 @@ const gatherTargetState = (assessment, context) => gen(function* () {
|
|
|
196434
196436
|
dependencyType: lspDependencyType,
|
|
196435
196437
|
version: context.defaultLspVersion
|
|
196436
196438
|
}),
|
|
196437
|
-
prepareScript
|
|
196439
|
+
prepareScript: true
|
|
196438
196440
|
},
|
|
196439
196441
|
tsconfig: { plugin: true },
|
|
196440
196442
|
vscodeSettings,
|
|
@@ -196493,11 +196495,9 @@ const setupCommand = make("setup").pipe(withDescription("Setup @effect/tsgo for
|
|
|
196493
196495
|
const fs = yield* FileSystem;
|
|
196494
196496
|
const currentDir = path.resolve(process.cwd());
|
|
196495
196497
|
const assessmentState = assess(yield* createAssessmentInput(currentDir, yield* selectTsConfigFile(currentDir)));
|
|
196496
|
-
const
|
|
196497
|
-
const result = computeChanges(assessmentState, targetState);
|
|
196498
|
+
const result = computeChanges(assessmentState, yield* gatherTargetState(assessmentState, { defaultLspVersion: DEFAULT_LSP_VERSION }));
|
|
196498
196499
|
yield* renderCodeActions(result, assessmentState);
|
|
196499
|
-
|
|
196500
|
-
if (result.codeActions.length === 0 && !needsNewVSCodeSettings) return;
|
|
196500
|
+
if (result.codeActions.length === 0) return;
|
|
196501
196501
|
if (!(yield* confirm({
|
|
196502
196502
|
message: "Apply all changes?",
|
|
196503
196503
|
initial: true
|
|
@@ -196519,16 +196519,12 @@ const setupCommand = make("setup").pipe(withDescription("Setup @effect/tsgo for
|
|
|
196519
196519
|
newContent = newContent.slice(0, start) + textChange.newText + newContent.slice(end);
|
|
196520
196520
|
}
|
|
196521
196521
|
yield* fs.writeFileString(fileName, newContent);
|
|
196522
|
+
} else if (fileChange.isNewFile) {
|
|
196523
|
+
const dirName = path.dirname(fileName);
|
|
196524
|
+
yield* fs.makeDirectory(dirName, { recursive: true }).pipe(ignore);
|
|
196525
|
+
yield* fs.writeFileString(fileName, fileChange.textChanges[0].newText);
|
|
196522
196526
|
}
|
|
196523
196527
|
}
|
|
196524
|
-
if (needsNewVSCodeSettings) {
|
|
196525
|
-
const vscodeDir = path.join(currentDir, ".vscode");
|
|
196526
|
-
const vscodeSettingsPath = path.join(vscodeDir, "settings.json");
|
|
196527
|
-
yield* fs.makeDirectory(vscodeDir, { recursive: true }).pipe(ignore);
|
|
196528
|
-
const settings = isSome(targetState.vscodeSettings) ? targetState.vscodeSettings.value.settings : {};
|
|
196529
|
-
const content = JSON.stringify(settings, null, 2) + "\n";
|
|
196530
|
-
yield* fs.writeFileString(vscodeSettingsPath, content);
|
|
196531
|
-
}
|
|
196532
196528
|
yield* log("Changes applied successfully!");
|
|
196533
196529
|
yield* log("");
|
|
196534
196530
|
for (const message of result.messages) yield* log(message);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/tsgo",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Effect Language Service for TypeScript-Go — Effect-specific diagnostics and hover features.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"bin/"
|
|
22
22
|
],
|
|
23
23
|
"optionalDependencies": {
|
|
24
|
-
"@effect/tsgo-win32-x64": "0.0.
|
|
25
|
-
"@effect/tsgo-win32-arm64": "0.0.
|
|
26
|
-
"@effect/tsgo-linux-x64": "0.0.
|
|
27
|
-
"@effect/tsgo-linux-arm64": "0.0.
|
|
28
|
-
"@effect/tsgo-linux-arm": "0.0.
|
|
29
|
-
"@effect/tsgo-darwin-x64": "0.0.
|
|
30
|
-
"@effect/tsgo-darwin-arm64": "0.0.
|
|
24
|
+
"@effect/tsgo-win32-x64": "0.0.5",
|
|
25
|
+
"@effect/tsgo-win32-arm64": "0.0.5",
|
|
26
|
+
"@effect/tsgo-linux-x64": "0.0.5",
|
|
27
|
+
"@effect/tsgo-linux-arm64": "0.0.5",
|
|
28
|
+
"@effect/tsgo-linux-arm": "0.0.5",
|
|
29
|
+
"@effect/tsgo-darwin-x64": "0.0.5",
|
|
30
|
+
"@effect/tsgo-darwin-arm64": "0.0.5"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@effect/platform-node": "4.0.0-beta.11",
|
|
@@ -35,10 +35,12 @@
|
|
|
35
35
|
"@types/node": "^24.3.0",
|
|
36
36
|
"tsdown": "^0.20.1",
|
|
37
37
|
"typescript": "^5.9.2",
|
|
38
|
-
"effect": "4.0.0-beta.11"
|
|
38
|
+
"effect": "4.0.0-beta.11",
|
|
39
|
+
"vitest": "^3.2.1"
|
|
39
40
|
},
|
|
40
41
|
"scripts": {
|
|
41
42
|
"build": "tsdown --config tsdown.config.mjs",
|
|
42
|
-
"check": "tsc --noEmit -p tsconfig.json"
|
|
43
|
+
"check": "tsc --noEmit -p tsconfig.json",
|
|
44
|
+
"test": "vitest run"
|
|
43
45
|
}
|
|
44
46
|
}
|