@lsproxy/cli 0.3.0
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/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/apply.d.ts +139 -0
- package/dist/apply.d.ts.map +1 -0
- package/dist/apply.js +325 -0
- package/dist/apply.js.map +1 -0
- package/dist/build-commands.d.ts +6 -0
- package/dist/build-commands.d.ts.map +1 -0
- package/dist/build-commands.js +111 -0
- package/dist/build-commands.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +207 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/move-file.d.ts +13 -0
- package/dist/commands/move-file.d.ts.map +1 -0
- package/dist/commands/move-file.js +84 -0
- package/dist/commands/move-file.js.map +1 -0
- package/dist/commands/move-symbol.d.ts +70 -0
- package/dist/commands/move-symbol.d.ts.map +1 -0
- package/dist/commands/move-symbol.js +154 -0
- package/dist/commands/move-symbol.js.map +1 -0
- package/dist/commands/query.d.ts +14 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +46 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/rename.d.ts +14 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +42 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/connect.d.ts +10 -0
- package/dist/connect.d.ts.map +1 -0
- package/dist/connect.js +63 -0
- package/dist/connect.js.map +1 -0
- package/dist/discover.d.ts +17 -0
- package/dist/discover.d.ts.map +1 -0
- package/dist/discover.js +46 -0
- package/dist/discover.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +76 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +150 -0
- package/dist/io.js.map +1 -0
- package/dist/session.d.ts +89 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +286 -0
- package/dist/session.js.map +1 -0
- package/dist/zod-to-commander.d.ts +11 -0
- package/dist/zod-to-commander.d.ts.map +1 -0
- package/dist/zod-to-commander.js +351 -0
- package/dist/zod-to-commander.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { parseLineCol, toLspPosition, resolvePathArg } from './io.js';
|
|
5
|
+
import { WorkspaceEditSchema, TextEditSchema, CodeActionSchema } from '@lspeasy/core';
|
|
6
|
+
import { applyWorkspaceEdit, planWorkspaceEdit } from './apply.js';
|
|
7
|
+
const PATTERN_FIELDS = {
|
|
8
|
+
'file-position-newname': new Set(['textDocument', 'position', 'newName']),
|
|
9
|
+
'file-position': new Set(['textDocument', 'position']),
|
|
10
|
+
'file-range': new Set(['textDocument', 'range']),
|
|
11
|
+
file: new Set(['textDocument']),
|
|
12
|
+
query: new Set(['query']),
|
|
13
|
+
raw: new Set()
|
|
14
|
+
};
|
|
15
|
+
function isZodObjectLike(schema) {
|
|
16
|
+
return (schema != null &&
|
|
17
|
+
typeof schema === 'object' &&
|
|
18
|
+
'shape' in schema &&
|
|
19
|
+
schema.shape != null &&
|
|
20
|
+
typeof schema.shape === 'object');
|
|
21
|
+
}
|
|
22
|
+
function unwrapOptional(schema) {
|
|
23
|
+
const def = schema._def;
|
|
24
|
+
if (def?.typeName === 'ZodOptional' && def.innerType)
|
|
25
|
+
return unwrapOptional(def.innerType);
|
|
26
|
+
return schema;
|
|
27
|
+
}
|
|
28
|
+
function toKebabCase(str) {
|
|
29
|
+
return str.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);
|
|
30
|
+
}
|
|
31
|
+
function toCamelCase(str) {
|
|
32
|
+
return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
33
|
+
}
|
|
34
|
+
// Suffixes stripped when deriving the CLI prefix for an object-typed field.
|
|
35
|
+
// e.g. "formatting" + "options" → "formatting-options" → strip "-options" → "formatting"
|
|
36
|
+
// so sub-fields become --formatting-tab-size, --formatting-insert-spaces.
|
|
37
|
+
const STRIP_SUFFIXES = ['-options', '-context', '-params', '-config', '-settings'];
|
|
38
|
+
/**
|
|
39
|
+
* Derive the CLI key prefix for an object-typed schema field.
|
|
40
|
+
* Concatenates the command name and field name (both kebab-cased), then strips
|
|
41
|
+
* any known generic suffix so users see --formatting-tab-size rather than
|
|
42
|
+
* --formatting-options-tab-size or a bare --tab-size.
|
|
43
|
+
* For non-object (primitive) fields the field name is used directly.
|
|
44
|
+
*/
|
|
45
|
+
function fieldCliKey(subcommand, fieldName, isObject) {
|
|
46
|
+
if (!isObject)
|
|
47
|
+
return toKebabCase(fieldName);
|
|
48
|
+
const combined = `${toKebabCase(subcommand)}-${toKebabCase(fieldName)}`;
|
|
49
|
+
for (const suffix of STRIP_SUFFIXES) {
|
|
50
|
+
if (combined.endsWith(suffix))
|
|
51
|
+
return combined.slice(0, -suffix.length);
|
|
52
|
+
}
|
|
53
|
+
return combined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Register Commander options for a schema field not covered by the positional
|
|
57
|
+
* pattern. `cliKey` is the pre-computed kebab-case prefix (see `fieldCliKey`).
|
|
58
|
+
* Object-typed fields are expanded one level deep: sub-fields become
|
|
59
|
+
* `--<cliKey>-<sub-field>`. Primitive fields become `--<cliKey> <value>`.
|
|
60
|
+
*/
|
|
61
|
+
function addFieldOptions(cmd, cliKey, schema, depth = 0) {
|
|
62
|
+
const inner = unwrapOptional(schema);
|
|
63
|
+
if (depth < 1 && isZodObjectLike(inner)) {
|
|
64
|
+
for (const [sub, subSchema] of Object.entries(inner.shape)) {
|
|
65
|
+
addFieldOptions(cmd, `${cliKey}-${toKebabCase(sub)}`, subSchema, depth + 1);
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
cmd.option(`--${cliKey} <value>`, cliKey);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Read back all field options registered by `addFieldOptions` and reconstruct
|
|
73
|
+
* the original nested value. Returns `undefined` when none of the sub-options
|
|
74
|
+
* were provided.
|
|
75
|
+
*/
|
|
76
|
+
function extractFieldValue(opts, cliKey, schema, depth = 0) {
|
|
77
|
+
const inner = unwrapOptional(schema);
|
|
78
|
+
if (depth < 1 && isZodObjectLike(inner)) {
|
|
79
|
+
const result = {};
|
|
80
|
+
let hasAny = false;
|
|
81
|
+
for (const [sub, subSchema] of Object.entries(inner.shape)) {
|
|
82
|
+
const val = extractFieldValue(opts, `${cliKey}-${toKebabCase(sub)}`, subSchema, depth + 1);
|
|
83
|
+
if (val !== undefined) {
|
|
84
|
+
result[sub] = val;
|
|
85
|
+
hasAny = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return hasAny ? result : undefined;
|
|
89
|
+
}
|
|
90
|
+
const raw = opts[toCamelCase(cliKey)];
|
|
91
|
+
if (raw === undefined)
|
|
92
|
+
return undefined;
|
|
93
|
+
if (typeof raw === 'string') {
|
|
94
|
+
try {
|
|
95
|
+
return JSON.parse(raw);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return raw;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return raw;
|
|
102
|
+
}
|
|
103
|
+
export function detectArgPattern(schema) {
|
|
104
|
+
if (!isZodObjectLike(schema))
|
|
105
|
+
return 'raw';
|
|
106
|
+
const shape = schema.shape;
|
|
107
|
+
if ('textDocument' in shape && 'position' in shape && 'newName' in shape)
|
|
108
|
+
return 'file-position-newname';
|
|
109
|
+
if ('textDocument' in shape && 'position' in shape)
|
|
110
|
+
return 'file-position';
|
|
111
|
+
if ('textDocument' in shape && 'range' in shape)
|
|
112
|
+
return 'file-range';
|
|
113
|
+
if ('textDocument' in shape)
|
|
114
|
+
return 'file';
|
|
115
|
+
if ('query' in shape)
|
|
116
|
+
return 'query';
|
|
117
|
+
return 'raw';
|
|
118
|
+
}
|
|
119
|
+
export function marshalParams(pattern, positional, opts, flags) {
|
|
120
|
+
if (typeof opts['params'] === 'string')
|
|
121
|
+
return JSON.parse(opts['params']);
|
|
122
|
+
switch (pattern) {
|
|
123
|
+
case 'file-position-newname': {
|
|
124
|
+
const file = resolvePathArg(positional[0], flags);
|
|
125
|
+
const pos = parseLineCol(positional[1]);
|
|
126
|
+
return {
|
|
127
|
+
textDocument: { uri: pathToFileURL(file).href },
|
|
128
|
+
position: toLspPosition(pos),
|
|
129
|
+
newName: positional[2]
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
case 'file-position': {
|
|
133
|
+
const file = resolvePathArg(positional[0], flags);
|
|
134
|
+
const pos = parseLineCol(positional[1]);
|
|
135
|
+
return {
|
|
136
|
+
textDocument: { uri: pathToFileURL(file).href },
|
|
137
|
+
position: toLspPosition(pos)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case 'file-range': {
|
|
141
|
+
const file = resolvePathArg(positional[0], flags);
|
|
142
|
+
const [startStr, endStr] = (positional[1] ?? '').split('-');
|
|
143
|
+
const start = parseLineCol(startStr ?? '1:1');
|
|
144
|
+
const end = parseLineCol(endStr ?? startStr ?? '1:1');
|
|
145
|
+
return {
|
|
146
|
+
textDocument: { uri: pathToFileURL(file).href },
|
|
147
|
+
range: { start: toLspPosition(start), end: toLspPosition(end) }
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
case 'file': {
|
|
151
|
+
const file = resolvePathArg(positional[0], flags);
|
|
152
|
+
return { textDocument: { uri: pathToFileURL(file).href } };
|
|
153
|
+
}
|
|
154
|
+
case 'query':
|
|
155
|
+
return { query: positional[0] ?? '' };
|
|
156
|
+
case 'raw':
|
|
157
|
+
throw new Error('This method requires --params <json>');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const TextEditArraySchema = z.array(TextEditSchema);
|
|
161
|
+
// WorkspaceEdit has all optional fields, so safeParse succeeds on any plain
|
|
162
|
+
// object. Require at least one edit-bearing key so hover/completion results
|
|
163
|
+
// don't get misclassified as empty workspace edits.
|
|
164
|
+
const NonEmptyWorkspaceEditSchema = WorkspaceEditSchema.refine((e) => (e.changes != null && Object.keys(e.changes).length > 0) ||
|
|
165
|
+
(e.documentChanges != null && e.documentChanges.length > 0), 'not a workspace edit');
|
|
166
|
+
/**
|
|
167
|
+
* Wrap a TextEdit[] result as a single-file WorkspaceEdit using the
|
|
168
|
+
* `textDocument.uri` already present in the marshaled params. Returns null
|
|
169
|
+
* when the params don't carry a recognizable URI (raw-pattern calls).
|
|
170
|
+
*/
|
|
171
|
+
function textEditsToWorkspaceEdit(edits, params) {
|
|
172
|
+
if (typeof params !== 'object' || params === null)
|
|
173
|
+
return null;
|
|
174
|
+
const td = params['textDocument'];
|
|
175
|
+
const uri = typeof td === 'object' && td !== null ? td['uri'] : null;
|
|
176
|
+
if (typeof uri !== 'string')
|
|
177
|
+
return null;
|
|
178
|
+
return { changes: { [uri]: edits } };
|
|
179
|
+
}
|
|
180
|
+
export function printAppliedChanges(changes, method, dryRun, json) {
|
|
181
|
+
if (json) {
|
|
182
|
+
process.stdout.write(JSON.stringify({ ok: true, method, dryRun, changes }) + '\n');
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
const label = dryRun ? '[dry-run]' : '[applied]';
|
|
186
|
+
for (const c of changes) {
|
|
187
|
+
const detail = c.kind === 'rename'
|
|
188
|
+
? `${c.path} → ${c.toPath}`
|
|
189
|
+
: c.kind === 'edit'
|
|
190
|
+
? `${c.path} (${c.editCount} edit${c.editCount !== 1 ? 's' : ''})`
|
|
191
|
+
: c.path;
|
|
192
|
+
process.stdout.write(`${label} ${c.kind} ${detail}\n`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function injectRequiredDefaults(method, params) {
|
|
197
|
+
if (typeof params !== 'object' || params === null)
|
|
198
|
+
return params;
|
|
199
|
+
const p = params;
|
|
200
|
+
if (method === 'textDocument/references' && !('context' in p)) {
|
|
201
|
+
return { ...p, context: { includeDeclaration: true } };
|
|
202
|
+
}
|
|
203
|
+
if (method === 'textDocument/codeAction' && !('context' in p)) {
|
|
204
|
+
return { ...p, context: { diagnostics: [] } };
|
|
205
|
+
}
|
|
206
|
+
if ((method === 'textDocument/formatting' || method === 'textDocument/rangeFormatting') &&
|
|
207
|
+
!('options' in p)) {
|
|
208
|
+
return { ...p, options: { tabSize: 2, insertSpaces: true } };
|
|
209
|
+
}
|
|
210
|
+
return params;
|
|
211
|
+
}
|
|
212
|
+
export function zodToCommander(method, schema, session, flags) {
|
|
213
|
+
const subcommand = method.split('/').slice(1).join('-') || method;
|
|
214
|
+
const cmd = new Command(subcommand);
|
|
215
|
+
const pattern = detectArgPattern(schema);
|
|
216
|
+
switch (pattern) {
|
|
217
|
+
case 'file-position-newname':
|
|
218
|
+
cmd.argument('<file>', 'file path (relative to --root)');
|
|
219
|
+
cmd.argument('<line:col>', '1-based position, e.g. 12:7');
|
|
220
|
+
cmd.argument('<newName>', 'new symbol name');
|
|
221
|
+
break;
|
|
222
|
+
case 'file-position':
|
|
223
|
+
cmd.argument('<file>', 'file path (relative to --root)');
|
|
224
|
+
cmd.argument('<line:col>', '1-based position, e.g. 12:7');
|
|
225
|
+
break;
|
|
226
|
+
case 'file-range':
|
|
227
|
+
cmd.argument('<file>', 'file path (relative to --root)');
|
|
228
|
+
cmd.argument('<range>', 'range as startLine:col-endLine:col, e.g. 2:1-4:5');
|
|
229
|
+
break;
|
|
230
|
+
case 'file':
|
|
231
|
+
cmd.argument('<file>', 'file path (relative to --root)');
|
|
232
|
+
break;
|
|
233
|
+
case 'query':
|
|
234
|
+
cmd.argument('<query>', 'search query string');
|
|
235
|
+
break;
|
|
236
|
+
case 'raw':
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
cmd.option('--params <json>', 'raw LSP params as JSON, overrides positional args');
|
|
240
|
+
// Add Commander options for schema fields not covered by the positional pattern.
|
|
241
|
+
// Object-typed fields are expanded one level deep via hyphenation.
|
|
242
|
+
if (pattern !== 'raw' && isZodObjectLike(schema)) {
|
|
243
|
+
const covered = PATTERN_FIELDS[pattern];
|
|
244
|
+
for (const [field, fieldSchema] of Object.entries(schema.shape)) {
|
|
245
|
+
if (!covered.has(field)) {
|
|
246
|
+
const inner = unwrapOptional(fieldSchema);
|
|
247
|
+
const cliKey = fieldCliKey(subcommand, field, isZodObjectLike(inner));
|
|
248
|
+
addFieldOptions(cmd, cliKey, fieldSchema);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
cmd.action(async (...cmdArgs) => {
|
|
253
|
+
const cmdOpts = cmdArgs.at(-1);
|
|
254
|
+
const positional = cmdArgs.slice(0, -1).map(String);
|
|
255
|
+
try {
|
|
256
|
+
const rawParams = marshalParams(pattern, positional, cmdOpts, flags);
|
|
257
|
+
// Overlay extra field options onto the pattern-derived base params.
|
|
258
|
+
if (pattern !== 'raw' &&
|
|
259
|
+
isZodObjectLike(schema) &&
|
|
260
|
+
typeof rawParams === 'object' &&
|
|
261
|
+
rawParams !== null) {
|
|
262
|
+
const covered = PATTERN_FIELDS[pattern];
|
|
263
|
+
for (const [field, fieldSchema] of Object.entries(schema.shape)) {
|
|
264
|
+
if (covered.has(field))
|
|
265
|
+
continue;
|
|
266
|
+
const inner = unwrapOptional(fieldSchema);
|
|
267
|
+
const cliKey = fieldCliKey(subcommand, field, isZodObjectLike(inner));
|
|
268
|
+
const val = extractFieldValue(cmdOpts, cliKey, fieldSchema);
|
|
269
|
+
if (val !== undefined)
|
|
270
|
+
rawParams[field] = val;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const params = injectRequiredDefaults(method, rawParams);
|
|
274
|
+
const result = await session.requestWithRetry(() => session.lsp.sendRequest(method, params));
|
|
275
|
+
// Collect workspace edits from up to four sources:
|
|
276
|
+
// 1. Direct WorkspaceEdit result (e.g. textDocument/rename)
|
|
277
|
+
// 2. TextEdit[] result (e.g. textDocument/formatting) — wrapped using the
|
|
278
|
+
// textDocument.uri already in rawParams
|
|
279
|
+
// 3. CodeAction[].edit — inline edits embedded in code action results
|
|
280
|
+
// 4. Server-pushed edits via workspace/applyEdit (e.g. workspace/executeCommand)
|
|
281
|
+
const capturedEdits = session.takeCapturedEdits();
|
|
282
|
+
const weResult = NonEmptyWorkspaceEditSchema.safeParse(result);
|
|
283
|
+
const teResult = TextEditArraySchema.safeParse(result);
|
|
284
|
+
// LSP allows codeAction results to be (Command | CodeAction)[]. Parse each
|
|
285
|
+
// item individually so Command entries don't cause the whole parse to fail.
|
|
286
|
+
const codeActionItems = Array.isArray(result)
|
|
287
|
+
? result.flatMap((item) => {
|
|
288
|
+
const parsed = CodeActionSchema.safeParse(item);
|
|
289
|
+
return parsed.success ? [parsed.data] : [];
|
|
290
|
+
})
|
|
291
|
+
: [];
|
|
292
|
+
// Only auto-apply when exactly one code action carries an edit; if multiple
|
|
293
|
+
// edit-bearing actions are returned, fall through to JSON printing so the
|
|
294
|
+
// caller can choose rather than silently applying the wrong quick-fix.
|
|
295
|
+
const inlineCodeActionEdits = codeActionItems
|
|
296
|
+
.map((a) => a.edit)
|
|
297
|
+
.filter((e) => e != null && NonEmptyWorkspaceEditSchema.safeParse(e).success);
|
|
298
|
+
const inlineCodeActionEdit = inlineCodeActionEdits.length === 1
|
|
299
|
+
? inlineCodeActionEdits[0]
|
|
300
|
+
: null;
|
|
301
|
+
const directEdit = weResult.success
|
|
302
|
+
? weResult.data
|
|
303
|
+
: teResult.success && teResult.data.length > 0
|
|
304
|
+
? textEditsToWorkspaceEdit(teResult.data, rawParams)
|
|
305
|
+
: inlineCodeActionEdit;
|
|
306
|
+
// For methods that produce edits (rename, formatting, codeAction), a null
|
|
307
|
+
// result means the server could not fulfil the request — treat as an error.
|
|
308
|
+
const isEditMethod = method === 'textDocument/rename' ||
|
|
309
|
+
method === 'textDocument/formatting' ||
|
|
310
|
+
method === 'textDocument/rangeFormatting' ||
|
|
311
|
+
method === 'textDocument/codeAction';
|
|
312
|
+
if (isEditMethod && result === null && capturedEdits.length === 0) {
|
|
313
|
+
throw new Error(`${method} returned null — server could not fulfil the request`);
|
|
314
|
+
}
|
|
315
|
+
if (directEdit || capturedEdits.length > 0) {
|
|
316
|
+
const guard = {
|
|
317
|
+
root: flags.root,
|
|
318
|
+
allowOutsideRoot: flags.allowOutsideRoot
|
|
319
|
+
};
|
|
320
|
+
const allChanges = [];
|
|
321
|
+
const edits = directEdit ? [directEdit, ...capturedEdits] : capturedEdits;
|
|
322
|
+
for (const edit of edits) {
|
|
323
|
+
const changes = flags.dryRun
|
|
324
|
+
? planWorkspaceEdit(edit, guard)
|
|
325
|
+
: applyWorkspaceEdit(edit, guard);
|
|
326
|
+
allChanges.push(...changes);
|
|
327
|
+
}
|
|
328
|
+
printAppliedChanges(allChanges, method, flags.dryRun, flags.json);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
if (flags.json) {
|
|
332
|
+
process.stdout.write(JSON.stringify({ ok: true, method, result }) + '\n');
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
if (flags.json) {
|
|
341
|
+
process.stdout.write(JSON.stringify({ ok: false, error: String(err) }) + '\n');
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
process.stderr.write(`error: ${String(err)}\n`);
|
|
345
|
+
}
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
return cmd;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=zod-to-commander.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-to-commander.js","sourceRoot":"","sources":["../src/zod-to-commander.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lsproxy/cli",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Standalone refactor CLI driving any LSP server: project-wide rename, file-move with importer updates, and move-symbol",
|
|
5
|
+
"private": false,
|
|
6
|
+
"keywords": [
|
|
7
|
+
"lsp",
|
|
8
|
+
"language-server-protocol",
|
|
9
|
+
"refactor",
|
|
10
|
+
"rename",
|
|
11
|
+
"codemod",
|
|
12
|
+
"move-symbol",
|
|
13
|
+
"cli",
|
|
14
|
+
"typescript"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://github.com/pradeepmouli/lspeasy#readme",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/pradeepmouli/lspeasy/issues"
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": "Pradeep Mouli <pmouli@mac.com> (https://github.com/pradeepmouli)",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/pradeepmouli/lspeasy.git",
|
|
25
|
+
"directory": "apps/cli"
|
|
26
|
+
},
|
|
27
|
+
"type": "module",
|
|
28
|
+
"bin": {
|
|
29
|
+
"lspeasy": "./dist/cli.js"
|
|
30
|
+
},
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"main": "./dist/index.js",
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"files": [
|
|
40
|
+
"dist",
|
|
41
|
+
"README.md"
|
|
42
|
+
],
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"commander": "^12.1.0",
|
|
48
|
+
"zod": "^4.4.3",
|
|
49
|
+
"@lspeasy/client": "3.1.1",
|
|
50
|
+
"@lspeasy/core": "2.3.0",
|
|
51
|
+
"@lsproxy/proxy": "0.2.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"typescript": "^6.0.3"
|
|
55
|
+
},
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=22.0.0"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsgo --build",
|
|
61
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
62
|
+
"dev": "tsgo --build --watch",
|
|
63
|
+
"type-check": "tsgo --noEmit"
|
|
64
|
+
}
|
|
65
|
+
}
|