@lspeasy/core 1.0.1
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 +550 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonrpc/framing.d.ts +32 -0
- package/dist/jsonrpc/framing.d.ts.map +1 -0
- package/dist/jsonrpc/framing.js +96 -0
- package/dist/jsonrpc/framing.js.map +1 -0
- package/dist/jsonrpc/messages.d.ts +64 -0
- package/dist/jsonrpc/messages.d.ts.map +1 -0
- package/dist/jsonrpc/messages.js +23 -0
- package/dist/jsonrpc/messages.js.map +1 -0
- package/dist/jsonrpc/reader.d.ts +44 -0
- package/dist/jsonrpc/reader.d.ts.map +1 -0
- package/dist/jsonrpc/reader.js +107 -0
- package/dist/jsonrpc/reader.js.map +1 -0
- package/dist/jsonrpc/schemas.d.ts +103 -0
- package/dist/jsonrpc/schemas.d.ts.map +1 -0
- package/dist/jsonrpc/schemas.js +66 -0
- package/dist/jsonrpc/schemas.js.map +1 -0
- package/dist/jsonrpc/writer.d.ts +43 -0
- package/dist/jsonrpc/writer.d.ts.map +1 -0
- package/dist/jsonrpc/writer.js +110 -0
- package/dist/jsonrpc/writer.js.map +1 -0
- package/dist/middleware/compose.d.ts +3 -0
- package/dist/middleware/compose.d.ts.map +1 -0
- package/dist/middleware/compose.js +16 -0
- package/dist/middleware/compose.js.map +1 -0
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +5 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/pipeline.d.ts +5 -0
- package/dist/middleware/pipeline.d.ts.map +1 -0
- package/dist/middleware/pipeline.js +54 -0
- package/dist/middleware/pipeline.js.map +1 -0
- package/dist/middleware/scoped.d.ts +9 -0
- package/dist/middleware/scoped.d.ts.map +1 -0
- package/dist/middleware/scoped.js +20 -0
- package/dist/middleware/scoped.js.map +1 -0
- package/dist/middleware/typed.d.ts +3 -0
- package/dist/middleware/typed.d.ts.map +1 -0
- package/dist/middleware/typed.js +18 -0
- package/dist/middleware/typed.js.map +1 -0
- package/dist/middleware/types.d.ts +45 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/protocol/capabilities.d.ts +93 -0
- package/dist/protocol/capabilities.d.ts.map +1 -0
- package/dist/protocol/capabilities.js +143 -0
- package/dist/protocol/capabilities.js.map +1 -0
- package/dist/protocol/capability-methods.d.ts +270 -0
- package/dist/protocol/capability-methods.d.ts.map +1 -0
- package/dist/protocol/capability-methods.js +14 -0
- package/dist/protocol/capability-methods.js.map +1 -0
- package/dist/protocol/enums.d.ts +336 -0
- package/dist/protocol/enums.d.ts.map +1 -0
- package/dist/protocol/enums.js +417 -0
- package/dist/protocol/enums.js.map +1 -0
- package/dist/protocol/infer.d.ts +112 -0
- package/dist/protocol/infer.d.ts.map +1 -0
- package/dist/protocol/infer.js +58 -0
- package/dist/protocol/infer.js.map +1 -0
- package/dist/protocol/namespaces.d.ts +1432 -0
- package/dist/protocol/namespaces.d.ts.map +1 -0
- package/dist/protocol/namespaces.js +570 -0
- package/dist/protocol/namespaces.js.map +1 -0
- package/dist/protocol/partial.d.ts +29 -0
- package/dist/protocol/partial.d.ts.map +1 -0
- package/dist/protocol/partial.js +24 -0
- package/dist/protocol/partial.js.map +1 -0
- package/dist/protocol/progress.d.ts +32 -0
- package/dist/protocol/progress.d.ts.map +1 -0
- package/dist/protocol/progress.js +60 -0
- package/dist/protocol/progress.js.map +1 -0
- package/dist/protocol/schemas.d.ts +534 -0
- package/dist/protocol/schemas.d.ts.map +1 -0
- package/dist/protocol/schemas.js +271 -0
- package/dist/protocol/schemas.js.map +1 -0
- package/dist/protocol/types.d.ts +19 -0
- package/dist/protocol/types.d.ts.map +1 -0
- package/dist/protocol/types.js +8 -0
- package/dist/protocol/types.js.map +1 -0
- package/dist/protocol/watching.d.ts +29 -0
- package/dist/protocol/watching.d.ts.map +1 -0
- package/dist/protocol/watching.js +36 -0
- package/dist/protocol/watching.js.map +1 -0
- package/dist/protocol/workspace.d.ts +24 -0
- package/dist/protocol/workspace.d.ts.map +1 -0
- package/dist/protocol/workspace.js +26 -0
- package/dist/protocol/workspace.js.map +1 -0
- package/dist/transport/events.d.ts +27 -0
- package/dist/transport/events.d.ts.map +1 -0
- package/dist/transport/events.js +34 -0
- package/dist/transport/events.js.map +1 -0
- package/dist/transport/stdio.d.ts +55 -0
- package/dist/transport/stdio.d.ts.map +1 -0
- package/dist/transport/stdio.js +147 -0
- package/dist/transport/stdio.js.map +1 -0
- package/dist/transport/transport.d.ts +38 -0
- package/dist/transport/transport.d.ts.map +1 -0
- package/dist/transport/transport.js +5 -0
- package/dist/transport/transport.js.map +1 -0
- package/dist/transport/websocket.d.ts +142 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +324 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/utils/cancellation.d.ts +47 -0
- package/dist/utils/cancellation.d.ts.map +1 -0
- package/dist/utils/cancellation.js +77 -0
- package/dist/utils/cancellation.js.map +1 -0
- package/dist/utils/disposable-event-emitter.d.ts +26 -0
- package/dist/utils/disposable-event-emitter.d.ts.map +1 -0
- package/dist/utils/disposable-event-emitter.js +62 -0
- package/dist/utils/disposable-event-emitter.js.map +1 -0
- package/dist/utils/disposable.d.ts +34 -0
- package/dist/utils/disposable.d.ts.map +1 -0
- package/dist/utils/disposable.js +55 -0
- package/dist/utils/disposable.js.map +1 -0
- package/dist/utils/document.d.ts +20 -0
- package/dist/utils/document.d.ts.map +1 -0
- package/dist/utils/document.js +54 -0
- package/dist/utils/document.js.map +1 -0
- package/dist/utils/errors.d.ts +69 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +104 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/handler-registry.d.ts +35 -0
- package/dist/utils/handler-registry.d.ts.map +1 -0
- package/dist/utils/handler-registry.js +68 -0
- package/dist/utils/handler-registry.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/internal.d.ts +3 -0
- package/dist/utils/internal.d.ts.map +1 -0
- package/dist/utils/internal.js +3 -0
- package/dist/utils/internal.js.map +1 -0
- package/dist/utils/logger.d.ts +47 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +61 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pending-request-tracker.d.ts +36 -0
- package/dist/utils/pending-request-tracker.d.ts.map +1 -0
- package/dist/utils/pending-request-tracker.js +93 -0
- package/dist/utils/pending-request-tracker.js.map +1 -0
- package/dist/utils/transport-attachment.d.ts +34 -0
- package/dist/utils/transport-attachment.d.ts.map +1 -0
- package/dist/utils/transport-attachment.js +48 -0
- package/dist/utils/transport-attachment.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-registry.d.ts","sourceRoot":"","sources":["../../src/utils/handler-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CACvE,MAAM,EAAE,QAAQ,EAChB,GAAG,IAAI,EAAE,KAAK,KACX,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AAEpC;;GAEG;AACH,qBAAa,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAS,OAAO,EAAE,GAAG,EAAE;IAC5E,OAAO,CAAC,QAAQ,CAA0D;IAC1E,OAAO,CAAC,UAAU,CAAkC;IAEpD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,UAAU,CASjF;IAED;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAI/B;IAED;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS,CAEnE;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,SAAS;CAIlB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler registry with method-based lookup and cleanup support.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Registry for request/notification handlers keyed by method.
|
|
6
|
+
*/
|
|
7
|
+
export class HandlerRegistry {
|
|
8
|
+
handlers = new Map();
|
|
9
|
+
categories = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Register a handler for the given method.
|
|
12
|
+
*/
|
|
13
|
+
register(method, handler) {
|
|
14
|
+
this.handlers.set(method, handler);
|
|
15
|
+
this.addCategory(method);
|
|
16
|
+
return {
|
|
17
|
+
dispose: () => {
|
|
18
|
+
this.unregister(method);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unregister a handler.
|
|
24
|
+
*/
|
|
25
|
+
unregister(method) {
|
|
26
|
+
if (this.handlers.delete(method)) {
|
|
27
|
+
this.removeCategory(method);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get a handler by method.
|
|
32
|
+
*/
|
|
33
|
+
get(method) {
|
|
34
|
+
return this.handlers.get(method);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Clear all handlers.
|
|
38
|
+
*/
|
|
39
|
+
clear() {
|
|
40
|
+
this.handlers.clear();
|
|
41
|
+
this.categories.clear();
|
|
42
|
+
}
|
|
43
|
+
addCategory(method) {
|
|
44
|
+
const prefix = this.getPrefix(method);
|
|
45
|
+
let methods = this.categories.get(prefix);
|
|
46
|
+
if (!methods) {
|
|
47
|
+
methods = new Set();
|
|
48
|
+
this.categories.set(prefix, methods);
|
|
49
|
+
}
|
|
50
|
+
methods.add(method);
|
|
51
|
+
}
|
|
52
|
+
removeCategory(method) {
|
|
53
|
+
const prefix = this.getPrefix(method);
|
|
54
|
+
const methods = this.categories.get(prefix);
|
|
55
|
+
if (!methods) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
methods.delete(method);
|
|
59
|
+
if (methods.size === 0) {
|
|
60
|
+
this.categories.delete(prefix);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
getPrefix(method) {
|
|
64
|
+
const index = method.indexOf('/');
|
|
65
|
+
return index === -1 ? method : method.slice(0, index);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=handler-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-registry.js","sourceRoot":"","sources":["../../src/utils/handler-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IAClE,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEpD;;OAEG;IACH,QAAQ,CAAC,MAAc,EAAE,OAA4C,EAAc;QACjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAAA,CACzB;SACF,CAAC;IAAA,CACH;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAQ;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IAAA,CACF;IAED;;OAEG;IACH,GAAG,CAAC,MAAc,EAAmD;QACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAAA,CAClC;IAED;;OAEG;IACH,KAAK,GAAS;QACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAAA,CACzB;IAEO,WAAW,CAAC,MAAc,EAAQ;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAAA,CACrB;IAEO,cAAc,CAAC,MAAc,EAAQ;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;IAAA,CACF;IAEO,SAAS,CAAC,MAAc,EAAU;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAAA,CACvD;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DisposableEventEmitter } from './disposable-event-emitter.js';
|
|
2
|
+
export { HandlerRegistry } from './handler-registry.js';
|
|
3
|
+
export { DocumentVersionTracker, createFullDidChangeParams, createIncrementalDidChangeParams } from './document.js';
|
|
4
|
+
export type { IncrementalChange, VersionSource } from './document.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DisposableEventEmitter } from './disposable-event-emitter.js';
|
|
2
|
+
export { HandlerRegistry } from './handler-registry.js';
|
|
3
|
+
export { DocumentVersionTracker, createFullDidChangeParams, createIncrementalDidChangeParams } from './document.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/utils/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/utils/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger interface and implementation
|
|
3
|
+
* Pattern: MCP SDK's logging infrastructure
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Log levels
|
|
7
|
+
*/
|
|
8
|
+
export declare enum LogLevel {
|
|
9
|
+
Error = 0,
|
|
10
|
+
Warn = 1,
|
|
11
|
+
Info = 2,
|
|
12
|
+
Debug = 3,
|
|
13
|
+
Trace = 4
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Logger interface
|
|
17
|
+
*/
|
|
18
|
+
export interface Logger {
|
|
19
|
+
error(message: string, ...args: unknown[]): void;
|
|
20
|
+
warn(message: string, ...args: unknown[]): void;
|
|
21
|
+
info(message: string, ...args: unknown[]): void;
|
|
22
|
+
debug(message: string, ...args: unknown[]): void;
|
|
23
|
+
trace(message: string, ...args: unknown[]): void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Console logger implementation
|
|
27
|
+
*/
|
|
28
|
+
export declare class ConsoleLogger implements Logger {
|
|
29
|
+
private readonly level;
|
|
30
|
+
constructor(level?: LogLevel);
|
|
31
|
+
error(message: string, ...args: unknown[]): void;
|
|
32
|
+
warn(message: string, ...args: unknown[]): void;
|
|
33
|
+
info(message: string, ...args: unknown[]): void;
|
|
34
|
+
debug(message: string, ...args: unknown[]): void;
|
|
35
|
+
trace(message: string, ...args: unknown[]): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* No-op logger that discards all messages
|
|
39
|
+
*/
|
|
40
|
+
export declare class NullLogger implements Logger {
|
|
41
|
+
error(): void;
|
|
42
|
+
warn(): void;
|
|
43
|
+
info(): void;
|
|
44
|
+
debug(): void;
|
|
45
|
+
trace(): void;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,GAAE,QAAwB,EAAI;IAEhE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI/C;IAED,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;IAED,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;IAED,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI/C;IAED,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI/C;CACF;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,MAAM;IACvC,KAAK,IAAI,IAAI,CAAG;IAChB,IAAI,IAAI,IAAI,CAAG;IACf,IAAI,IAAI,IAAI,CAAG;IACf,KAAK,IAAI,IAAI,CAAG;IAChB,KAAK,IAAI,IAAI,CAAG;CACjB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger interface and implementation
|
|
3
|
+
* Pattern: MCP SDK's logging infrastructure
|
|
4
|
+
*/
|
|
5
|
+
export { LogLevel };
|
|
6
|
+
/**
|
|
7
|
+
* Log levels
|
|
8
|
+
*/
|
|
9
|
+
var LogLevel;
|
|
10
|
+
(function (LogLevel) {
|
|
11
|
+
LogLevel[LogLevel["Error"] = 0] = "Error";
|
|
12
|
+
LogLevel[LogLevel["Warn"] = 1] = "Warn";
|
|
13
|
+
LogLevel[LogLevel["Info"] = 2] = "Info";
|
|
14
|
+
LogLevel[LogLevel["Debug"] = 3] = "Debug";
|
|
15
|
+
LogLevel[LogLevel["Trace"] = 4] = "Trace";
|
|
16
|
+
})(LogLevel || (LogLevel = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Console logger implementation
|
|
19
|
+
*/
|
|
20
|
+
export class ConsoleLogger {
|
|
21
|
+
level;
|
|
22
|
+
constructor(level = LogLevel.Info) {
|
|
23
|
+
this.level = level;
|
|
24
|
+
}
|
|
25
|
+
error(message, ...args) {
|
|
26
|
+
if (this.level >= LogLevel.Error) {
|
|
27
|
+
console.error(`[ERROR] ${message}`, ...args);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
warn(message, ...args) {
|
|
31
|
+
if (this.level >= LogLevel.Warn) {
|
|
32
|
+
console.warn(`[WARN] ${message}`, ...args);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
info(message, ...args) {
|
|
36
|
+
if (this.level >= LogLevel.Info) {
|
|
37
|
+
console.info(`[INFO] ${message}`, ...args);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
debug(message, ...args) {
|
|
41
|
+
if (this.level >= LogLevel.Debug) {
|
|
42
|
+
console.debug(`[DEBUG] ${message}`, ...args);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
trace(message, ...args) {
|
|
46
|
+
if (this.level >= LogLevel.Trace) {
|
|
47
|
+
console.log(`[TRACE] ${message}`, ...args);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* No-op logger that discards all messages
|
|
53
|
+
*/
|
|
54
|
+
export class NullLogger {
|
|
55
|
+
error() { }
|
|
56
|
+
warn() { }
|
|
57
|
+
info() { }
|
|
58
|
+
debug() { }
|
|
59
|
+
trace() { }
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;SAKS,QAAQ;AAHpB;;GAEG;AACH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,yCAAS,CAAA;AAAA,CACX,EANY,QAAQ,KAAR,QAAQ,QAMnB;AAaD;;GAEG;AACH,MAAM,OAAO,aAAa;IACK,KAAK;IAAlC,YAA6B,KAAK,GAAa,QAAQ,CAAC,IAAI,EAAE;qBAAjC,KAAK;IAA6B,CAAC;IAEhE,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe,EAAQ;QAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;IAAA,CACF;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe,EAAQ;QAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IAAA,CACF;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe,EAAQ;QAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IAAA,CACF;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe,EAAQ;QAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;IAAA,CACF;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe,EAAQ;QAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IAAA,CACF;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,KAAK,GAAS,EAAC,CAAC;IAChB,IAAI,GAAS,EAAC,CAAC;IACf,IAAI,GAAS,EAAC,CAAC;IACf,KAAK,GAAS,EAAC,CAAC;IAChB,KAAK,GAAS,EAAC,CAAC;CACjB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending request tracker for correlating request/response lifecycles.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Tracks pending requests with timeouts and cleanup.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PendingRequestTracker<TResponse, TMeta = undefined> {
|
|
8
|
+
private readonly defaultTimeout?;
|
|
9
|
+
private pending;
|
|
10
|
+
constructor(defaultTimeout?: number | undefined);
|
|
11
|
+
/**
|
|
12
|
+
* Create a new pending request.
|
|
13
|
+
*/
|
|
14
|
+
create(timeout?: number, metadata?: TMeta): {
|
|
15
|
+
id: string;
|
|
16
|
+
promise: Promise<TResponse>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a pending request.
|
|
20
|
+
*/
|
|
21
|
+
resolve(id: string, response: TResponse): void;
|
|
22
|
+
/**
|
|
23
|
+
* Reject a pending request.
|
|
24
|
+
*/
|
|
25
|
+
reject(id: string, error: Error): void;
|
|
26
|
+
/**
|
|
27
|
+
* Clear all pending requests.
|
|
28
|
+
*/
|
|
29
|
+
clear(error?: Error): void;
|
|
30
|
+
/**
|
|
31
|
+
* Get metadata associated with a pending request.
|
|
32
|
+
*/
|
|
33
|
+
getMetadata(id: string): TMeta | undefined;
|
|
34
|
+
private clearTimeout;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=pending-request-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-request-tracker.d.ts","sourceRoot":"","sources":["../../src/utils/pending-request-tracker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,qBAAa,qBAAqB,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS;IAGjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAF5C,OAAO,CAAC,OAAO,CAAqD;IAEpE,YAA6B,cAAc,CAAC,oBAAQ,EAAI;IAExD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;KAAE,CAqCtF;IAED;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAO7C;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAOrC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,GAAE,KAA4C,GAAG,IAAI,CAK/D;IAED;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEzC;IAED,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending request tracker for correlating request/response lifecycles.
|
|
3
|
+
*/
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
5
|
+
/**
|
|
6
|
+
* Tracks pending requests with timeouts and cleanup.
|
|
7
|
+
*/
|
|
8
|
+
export class PendingRequestTracker {
|
|
9
|
+
defaultTimeout;
|
|
10
|
+
pending = new Map();
|
|
11
|
+
constructor(defaultTimeout) {
|
|
12
|
+
this.defaultTimeout = defaultTimeout;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a new pending request.
|
|
16
|
+
*/
|
|
17
|
+
create(timeout, metadata) {
|
|
18
|
+
const id = randomUUID();
|
|
19
|
+
const effectiveTimeout = timeout ?? this.defaultTimeout;
|
|
20
|
+
let resolveEntry;
|
|
21
|
+
let rejectEntry;
|
|
22
|
+
const promise = new Promise((resolve, reject) => {
|
|
23
|
+
resolveEntry = resolve;
|
|
24
|
+
rejectEntry = reject;
|
|
25
|
+
});
|
|
26
|
+
void promise.catch(() => undefined);
|
|
27
|
+
const entry = {
|
|
28
|
+
resolve: (value) => {
|
|
29
|
+
this.clearTimeout(id);
|
|
30
|
+
resolveEntry(value);
|
|
31
|
+
},
|
|
32
|
+
reject: (error) => {
|
|
33
|
+
this.clearTimeout(id);
|
|
34
|
+
rejectEntry(error);
|
|
35
|
+
},
|
|
36
|
+
metadata,
|
|
37
|
+
timeoutId: undefined
|
|
38
|
+
};
|
|
39
|
+
this.pending.set(id, entry);
|
|
40
|
+
if (effectiveTimeout && effectiveTimeout > 0) {
|
|
41
|
+
entry.timeoutId = setTimeout(() => {
|
|
42
|
+
this.pending.delete(id);
|
|
43
|
+
entry.reject(new Error('Request timed out'));
|
|
44
|
+
}, effectiveTimeout);
|
|
45
|
+
}
|
|
46
|
+
return { id, promise };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve a pending request.
|
|
50
|
+
*/
|
|
51
|
+
resolve(id, response) {
|
|
52
|
+
const entry = this.pending.get(id);
|
|
53
|
+
if (!entry) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.pending.delete(id);
|
|
57
|
+
entry.resolve(response);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Reject a pending request.
|
|
61
|
+
*/
|
|
62
|
+
reject(id, error) {
|
|
63
|
+
const entry = this.pending.get(id);
|
|
64
|
+
if (!entry) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.pending.delete(id);
|
|
68
|
+
entry.reject(error);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Clear all pending requests.
|
|
72
|
+
*/
|
|
73
|
+
clear(error = new Error('Pending request cleared')) {
|
|
74
|
+
for (const [id, entry] of this.pending.entries()) {
|
|
75
|
+
this.pending.delete(id);
|
|
76
|
+
entry.reject(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get metadata associated with a pending request.
|
|
81
|
+
*/
|
|
82
|
+
getMetadata(id) {
|
|
83
|
+
return this.pending.get(id)?.metadata;
|
|
84
|
+
}
|
|
85
|
+
clearTimeout(id) {
|
|
86
|
+
const entry = this.pending.get(id);
|
|
87
|
+
if (entry?.timeoutId) {
|
|
88
|
+
clearTimeout(entry.timeoutId);
|
|
89
|
+
entry.timeoutId = undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=pending-request-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-request-tracker.js","sourceRoot":"","sources":["../../src/utils/pending-request-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport attachment helper for wiring handlers and cleanup.
|
|
3
|
+
*/
|
|
4
|
+
import type { Message } from '../jsonrpc/messages.js';
|
|
5
|
+
import type { Transport } from '../transport/transport.js';
|
|
6
|
+
import type { Disposable } from './disposable.js';
|
|
7
|
+
/**
|
|
8
|
+
* Handlers for transport events.
|
|
9
|
+
*/
|
|
10
|
+
export interface TransportHandlers {
|
|
11
|
+
onMessage: (message: Message) => void;
|
|
12
|
+
onError: (error: Error) => void;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Manages transport event listeners and disposal.
|
|
17
|
+
*/
|
|
18
|
+
export declare class TransportAttachment {
|
|
19
|
+
private transport;
|
|
20
|
+
private disposables;
|
|
21
|
+
/**
|
|
22
|
+
* Attach to a transport and wire handlers. Returns a disposable to detach.
|
|
23
|
+
*/
|
|
24
|
+
attach(transport: Transport, handlers: TransportHandlers): Disposable;
|
|
25
|
+
/**
|
|
26
|
+
* Detach from the transport and dispose all listeners.
|
|
27
|
+
*/
|
|
28
|
+
detach(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a transport is attached.
|
|
31
|
+
*/
|
|
32
|
+
isAttached(): boolean;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=transport-attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-attachment.d.ts","sourceRoot":"","sources":["../../src/utils/transport-attachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,WAAW,CAAoB;IAEvC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,UAAU,CAgBpE;IAED;;OAEG;IACH,MAAM,IAAI,IAAI,CAWb;IAED;;OAEG;IACH,UAAU,IAAI,OAAO,CAEpB;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport attachment helper for wiring handlers and cleanup.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Manages transport event listeners and disposal.
|
|
6
|
+
*/
|
|
7
|
+
export class TransportAttachment {
|
|
8
|
+
transport;
|
|
9
|
+
disposables = [];
|
|
10
|
+
/**
|
|
11
|
+
* Attach to a transport and wire handlers. Returns a disposable to detach.
|
|
12
|
+
*/
|
|
13
|
+
attach(transport, handlers) {
|
|
14
|
+
this.detach();
|
|
15
|
+
this.transport = transport;
|
|
16
|
+
this.disposables = [
|
|
17
|
+
transport.onMessage(handlers.onMessage),
|
|
18
|
+
transport.onError(handlers.onError),
|
|
19
|
+
transport.onClose(() => {
|
|
20
|
+
handlers.onClose();
|
|
21
|
+
this.detach();
|
|
22
|
+
})
|
|
23
|
+
];
|
|
24
|
+
return {
|
|
25
|
+
dispose: () => this.detach()
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Detach from the transport and dispose all listeners.
|
|
30
|
+
*/
|
|
31
|
+
detach() {
|
|
32
|
+
if (!this.transport) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const disposable of this.disposables) {
|
|
36
|
+
disposable.dispose();
|
|
37
|
+
}
|
|
38
|
+
this.disposables = [];
|
|
39
|
+
this.transport = undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if a transport is attached.
|
|
43
|
+
*/
|
|
44
|
+
isAttached() {
|
|
45
|
+
return Boolean(this.transport);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=transport-attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-attachment.js","sourceRoot":"","sources":["../../src/utils/transport-attachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,SAAS,CAAwB;IACjC,WAAW,GAAiB,EAAE,CAAC;IAEvC;;OAEG;IACH,MAAM,CAAC,SAAoB,EAAE,QAA2B,EAAc;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG;YACjB,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACtB,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YAAA,CACf,CAAC;SACH,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;SAC7B,CAAC;IAAA,CACH;IAED;;OAEG;IACH,MAAM,GAAS;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC5B;IAED;;OAEG;IACH,UAAU,GAAY;QACpB,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAAA,CAChC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lspeasy/core",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Core types, transports, and utilities for LSP SDK",
|
|
5
|
+
"private": false,
|
|
6
|
+
"keywords": [
|
|
7
|
+
"lsp",
|
|
8
|
+
"language-server-protocol",
|
|
9
|
+
"jsonrpc",
|
|
10
|
+
"transport"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/pradeepmouli/lspeasy#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/pradeepmouli/lspeasy/issues"
|
|
15
|
+
},
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"author": "Pradeep Mouli",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/pradeepmouli/lspeasy.git",
|
|
21
|
+
"directory": "packages/core"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./utils": {
|
|
30
|
+
"types": "./dist/utils/index.d.ts",
|
|
31
|
+
"import": "./dist/utils/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./utils/internal": {
|
|
34
|
+
"types": "./dist/utils/internal.d.ts",
|
|
35
|
+
"import": "./dist/utils/internal.js"
|
|
36
|
+
},
|
|
37
|
+
"./protocol": {
|
|
38
|
+
"types": "./dist/protocol/index.d.ts",
|
|
39
|
+
"import": "./dist/protocol/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./protocol/enums": {
|
|
42
|
+
"types": "./dist/protocol/enums.d.ts",
|
|
43
|
+
"import": "./dist/protocol/enums.js"
|
|
44
|
+
},
|
|
45
|
+
"./transport": {
|
|
46
|
+
"types": "./dist/transport/index.d.ts",
|
|
47
|
+
"import": "./dist/transport/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./middleware": {
|
|
50
|
+
"types": "./dist/middleware/index.d.ts",
|
|
51
|
+
"import": "./dist/middleware/index.js"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"main": "./dist/index.js",
|
|
55
|
+
"types": "./dist/index.d.ts",
|
|
56
|
+
"files": [
|
|
57
|
+
"dist",
|
|
58
|
+
"README.md"
|
|
59
|
+
],
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"ws": "^8.19.0",
|
|
65
|
+
"zod": "^3.25.0"
|
|
66
|
+
},
|
|
67
|
+
"peerDependenciesMeta": {
|
|
68
|
+
"ws": {
|
|
69
|
+
"optional": true
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"devDependencies": {
|
|
73
|
+
"@types/ws": "^8.18.1",
|
|
74
|
+
"typescript": "^5.9.3",
|
|
75
|
+
"vscode-languageserver-protocol": "^3.17.5",
|
|
76
|
+
"zod": "^4.3.6"
|
|
77
|
+
},
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": ">=20.0.0"
|
|
80
|
+
},
|
|
81
|
+
"scripts": {
|
|
82
|
+
"build": "tsgo --build",
|
|
83
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
84
|
+
"dev": "tsgo --build --watch",
|
|
85
|
+
"type-check": "tsgo --noEmit"
|
|
86
|
+
}
|
|
87
|
+
}
|