@lspeasy/core 2.1.2 → 2.2.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.
Files changed (125) hide show
  1. package/dist/index.d.ts +44 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +44 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/jsonrpc/framing.d.ts +28 -3
  6. package/dist/jsonrpc/framing.d.ts.map +1 -1
  7. package/dist/jsonrpc/framing.js +28 -3
  8. package/dist/jsonrpc/framing.js.map +1 -1
  9. package/dist/jsonrpc/messages.d.ts +105 -8
  10. package/dist/jsonrpc/messages.d.ts.map +1 -1
  11. package/dist/jsonrpc/messages.js +36 -0
  12. package/dist/jsonrpc/messages.js.map +1 -1
  13. package/dist/jsonrpc/reader.js.map +1 -1
  14. package/dist/jsonrpc/writer.d.ts +3 -0
  15. package/dist/jsonrpc/writer.d.ts.map +1 -1
  16. package/dist/jsonrpc/writer.js.map +1 -1
  17. package/dist/middleware/compose.d.ts +22 -0
  18. package/dist/middleware/compose.d.ts.map +1 -1
  19. package/dist/middleware/compose.js +22 -0
  20. package/dist/middleware/compose.js.map +1 -1
  21. package/dist/middleware/pipeline.d.ts +22 -0
  22. package/dist/middleware/pipeline.d.ts.map +1 -1
  23. package/dist/middleware/pipeline.js +22 -0
  24. package/dist/middleware/pipeline.js.map +1 -1
  25. package/dist/middleware/scoped.d.ts +28 -0
  26. package/dist/middleware/scoped.d.ts.map +1 -1
  27. package/dist/middleware/scoped.js +28 -0
  28. package/dist/middleware/scoped.js.map +1 -1
  29. package/dist/middleware/typed.d.ts +30 -0
  30. package/dist/middleware/typed.d.ts.map +1 -1
  31. package/dist/middleware/typed.js +30 -0
  32. package/dist/middleware/typed.js.map +1 -1
  33. package/dist/middleware/types.d.ts +173 -0
  34. package/dist/middleware/types.d.ts.map +1 -1
  35. package/dist/protocol/capabilities.d.ts +78 -12
  36. package/dist/protocol/capabilities.d.ts.map +1 -1
  37. package/dist/protocol/capabilities.js +78 -12
  38. package/dist/protocol/capabilities.js.map +1 -1
  39. package/dist/protocol/capability-methods.d.ts +70 -2
  40. package/dist/protocol/capability-methods.d.ts.map +1 -1
  41. package/dist/protocol/capability-methods.js +8 -0
  42. package/dist/protocol/capability-methods.js.map +1 -1
  43. package/dist/protocol/dynamic-registration.d.ts +34 -2
  44. package/dist/protocol/dynamic-registration.d.ts.map +1 -1
  45. package/dist/protocol/dynamic-registration.js +16 -2
  46. package/dist/protocol/dynamic-registration.js.map +1 -1
  47. package/dist/protocol/enums.js +40 -80
  48. package/dist/protocol/enums.js.map +1 -1
  49. package/dist/protocol/infer.d.ts +92 -4
  50. package/dist/protocol/infer.d.ts.map +1 -1
  51. package/dist/protocol/infer.js +46 -4
  52. package/dist/protocol/infer.js.map +1 -1
  53. package/dist/protocol/namespaces.d.ts +327 -327
  54. package/dist/protocol/namespaces.d.ts.map +1 -1
  55. package/dist/protocol/partial-results.d.ts +6 -0
  56. package/dist/protocol/partial-results.d.ts.map +1 -1
  57. package/dist/protocol/partial.d.ts +12 -3
  58. package/dist/protocol/partial.d.ts.map +1 -1
  59. package/dist/protocol/partial.js +12 -3
  60. package/dist/protocol/partial.js.map +1 -1
  61. package/dist/protocol/progress.d.ts +34 -4
  62. package/dist/protocol/progress.d.ts.map +1 -1
  63. package/dist/protocol/progress.js +34 -4
  64. package/dist/protocol/progress.js.map +1 -1
  65. package/dist/protocol/schemas.d.ts +4 -1
  66. package/dist/protocol/schemas.d.ts.map +1 -1
  67. package/dist/protocol/schemas.js +4 -1
  68. package/dist/protocol/schemas.js.map +1 -1
  69. package/dist/protocol/watching.d.ts +18 -7
  70. package/dist/protocol/watching.d.ts.map +1 -1
  71. package/dist/protocol/watching.js +14 -3
  72. package/dist/protocol/watching.js.map +1 -1
  73. package/dist/protocol/workspace.d.ts +10 -2
  74. package/dist/protocol/workspace.d.ts.map +1 -1
  75. package/dist/protocol/workspace.js +10 -2
  76. package/dist/protocol/workspace.js.map +1 -1
  77. package/dist/transport/dedicated-worker.js.map +1 -1
  78. package/dist/transport/events.js.map +1 -1
  79. package/dist/transport/ipc.js.map +1 -1
  80. package/dist/transport/shared-worker.js.map +1 -1
  81. package/dist/transport/stdio.js.map +1 -1
  82. package/dist/transport/tcp.js.map +1 -1
  83. package/dist/transport/transport.d.ts +91 -10
  84. package/dist/transport/transport.d.ts.map +1 -1
  85. package/dist/transport/websocket.d.ts +120 -19
  86. package/dist/transport/websocket.d.ts.map +1 -1
  87. package/dist/transport/websocket.js +95 -8
  88. package/dist/transport/websocket.js.map +1 -1
  89. package/dist/transport/worker-types.d.ts +16 -2
  90. package/dist/transport/worker-types.d.ts.map +1 -1
  91. package/dist/transport/worker-types.js +12 -2
  92. package/dist/transport/worker-types.js.map +1 -1
  93. package/dist/utils/cancellation.d.ts +75 -5
  94. package/dist/utils/cancellation.d.ts.map +1 -1
  95. package/dist/utils/cancellation.js +29 -1
  96. package/dist/utils/cancellation.js.map +1 -1
  97. package/dist/utils/capability-guard.d.ts +32 -1
  98. package/dist/utils/capability-guard.d.ts.map +1 -1
  99. package/dist/utils/capability-guard.js +32 -1
  100. package/dist/utils/capability-guard.js.map +1 -1
  101. package/dist/utils/disposable-event-emitter.d.ts +11 -0
  102. package/dist/utils/disposable-event-emitter.d.ts.map +1 -1
  103. package/dist/utils/disposable-event-emitter.js +11 -0
  104. package/dist/utils/disposable-event-emitter.js.map +1 -1
  105. package/dist/utils/disposable.d.ts +42 -3
  106. package/dist/utils/disposable.d.ts.map +1 -1
  107. package/dist/utils/disposable.js +34 -2
  108. package/dist/utils/disposable.js.map +1 -1
  109. package/dist/utils/document.d.ts +78 -3
  110. package/dist/utils/document.d.ts.map +1 -1
  111. package/dist/utils/document.js +73 -3
  112. package/dist/utils/document.js.map +1 -1
  113. package/dist/utils/errors.d.ts +87 -10
  114. package/dist/utils/errors.d.ts.map +1 -1
  115. package/dist/utils/errors.js +87 -10
  116. package/dist/utils/errors.js.map +1 -1
  117. package/dist/utils/handler-registry.js.map +1 -1
  118. package/dist/utils/logger.d.ts +79 -4
  119. package/dist/utils/logger.d.ts.map +1 -1
  120. package/dist/utils/logger.js +64 -5
  121. package/dist/utils/logger.js.map +1 -1
  122. package/dist/utils/pending-request-tracker.d.ts.map +1 -1
  123. package/dist/utils/pending-request-tracker.js.map +1 -1
  124. package/dist/utils/transport-attachment.js.map +1 -1
  125. package/package.json +6 -7
package/dist/index.d.ts CHANGED
@@ -1,5 +1,48 @@
1
1
  /**
2
- * @lspeasy/core - Core types, transports, and utilities for LSP SDK
2
+ * Core types, transports, and utilities shared by all lspeasy packages.
3
+ *
4
+ * @remarks
5
+ * `@lspeasy/core` is the shared foundation for the lspeasy SDK. It contains
6
+ * everything needed to build custom LSP integrations, and re-exports the
7
+ * most-used pieces from `@lspeasy/client` and `@lspeasy/server`.
8
+ *
9
+ * ### Key areas
10
+ *
11
+ * **JSON-RPC 2.0** — Message types ({@link RequestMessage}, {@link NotificationMessage},
12
+ * {@link ResponseMessage}), framing ({@link parseMessage}, {@link serializeMessage}),
13
+ * and Zod schemas for validation.
14
+ *
15
+ * **Transports** — The {@link Transport} interface plus browser-compatible
16
+ * implementations: {@link WebSocketTransport}, {@link DedicatedWorkerTransport},
17
+ * {@link SharedWorkerTransport}.
18
+ * Node.js transports (`StdioTransport`, `TcpTransport`, `IpcTransport`) are
19
+ * in `@lspeasy/core/node` to avoid importing Node.js builtins in browsers.
20
+ *
21
+ * ### Transport Selection Guide
22
+ *
23
+ * | Need | Transport | Critical Gotcha |
24
+ * |------|-----------|-----------------|
25
+ * | Spawn server as child process | `StdioTransport` | `ConsoleLogger` corrupts stdout — use `NullLogger` |
26
+ * | Browser or remote server | `WebSocketTransport` | Call `send()` only after `isConnected()` is `true` |
27
+ * | Persistent local daemon | `TcpTransport` | Create a new server instance per client reconnect |
28
+ * | In-process browser isolation | `DedicatedWorkerTransport` | Monitor `worker.onerror`; crashes are silent |
29
+ * | Shared worker, multiple tabs | `SharedWorkerTransport` | One worker handles all port connections |
30
+ *
31
+ * **Middleware** — The {@link Middleware} pipeline runs on every
32
+ * client-to-server and server-to-client message. Use {@link createScopedMiddleware}
33
+ * to limit a middleware to specific methods, and {@link createTypedMiddleware}
34
+ * for full param/result type inference.
35
+ *
36
+ * **LSP protocol** — {@link LSPRequest} and {@link LSPNotification} namespaces
37
+ * expose every standard LSP method with its params and result types.
38
+ * {@link LSPRequestMethod} / {@link LSPNotificationMethod} are the union types
39
+ * for string-literal method names.
40
+ *
41
+ * **Utilities** — {@link CancellationTokenSource} for request cancellation,
42
+ * {@link DisposableStore} for lifecycle management, {@link ResponseError} for
43
+ * structured JSON-RPC errors, {@link DocumentVersionTracker} for document sync.
44
+ *
45
+ * @packageDocumentation
3
46
  */
4
47
  export type { BaseMessage, RequestMessage, NotificationMessage, SuccessResponseMessage, ErrorResponseMessage, ResponseMessage, Message } from './jsonrpc/messages.js';
5
48
  export type { ResponseError as ResponseErrorInterface } from './jsonrpc/messages.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,48 @@
1
1
  /**
2
- * @lspeasy/core - Core types, transports, and utilities for LSP SDK
2
+ * Core types, transports, and utilities shared by all lspeasy packages.
3
+ *
4
+ * @remarks
5
+ * `@lspeasy/core` is the shared foundation for the lspeasy SDK. It contains
6
+ * everything needed to build custom LSP integrations, and re-exports the
7
+ * most-used pieces from `@lspeasy/client` and `@lspeasy/server`.
8
+ *
9
+ * ### Key areas
10
+ *
11
+ * **JSON-RPC 2.0** — Message types ({@link RequestMessage}, {@link NotificationMessage},
12
+ * {@link ResponseMessage}), framing ({@link parseMessage}, {@link serializeMessage}),
13
+ * and Zod schemas for validation.
14
+ *
15
+ * **Transports** — The {@link Transport} interface plus browser-compatible
16
+ * implementations: {@link WebSocketTransport}, {@link DedicatedWorkerTransport},
17
+ * {@link SharedWorkerTransport}.
18
+ * Node.js transports (`StdioTransport`, `TcpTransport`, `IpcTransport`) are
19
+ * in `@lspeasy/core/node` to avoid importing Node.js builtins in browsers.
20
+ *
21
+ * ### Transport Selection Guide
22
+ *
23
+ * | Need | Transport | Critical Gotcha |
24
+ * |------|-----------|-----------------|
25
+ * | Spawn server as child process | `StdioTransport` | `ConsoleLogger` corrupts stdout — use `NullLogger` |
26
+ * | Browser or remote server | `WebSocketTransport` | Call `send()` only after `isConnected()` is `true` |
27
+ * | Persistent local daemon | `TcpTransport` | Create a new server instance per client reconnect |
28
+ * | In-process browser isolation | `DedicatedWorkerTransport` | Monitor `worker.onerror`; crashes are silent |
29
+ * | Shared worker, multiple tabs | `SharedWorkerTransport` | One worker handles all port connections |
30
+ *
31
+ * **Middleware** — The {@link Middleware} pipeline runs on every
32
+ * client-to-server and server-to-client message. Use {@link createScopedMiddleware}
33
+ * to limit a middleware to specific methods, and {@link createTypedMiddleware}
34
+ * for full param/result type inference.
35
+ *
36
+ * **LSP protocol** — {@link LSPRequest} and {@link LSPNotification} namespaces
37
+ * expose every standard LSP method with its params and result types.
38
+ * {@link LSPRequestMethod} / {@link LSPNotificationMethod} are the union types
39
+ * for string-literal method names.
40
+ *
41
+ * **Utilities** — {@link CancellationTokenSource} for request cancellation,
42
+ * {@link DisposableStore} for lifecycle management, {@link ResponseError} for
43
+ * structured JSON-RPC errors, {@link DocumentVersionTracker} for document sync.
44
+ *
45
+ * @packageDocumentation
3
46
  */
4
47
  export { isRequestMessage, isNotificationMessage, isResponseMessage, isSuccessResponse, isErrorResponse } from './jsonrpc/messages.js';
5
48
  export { parseMessage, serializeMessage } from './jsonrpc/framing.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAmB9D,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG7E,OAAO,EACL,uBAAuB,EACvB,iBAAiB,IAAI,qBAAqB,EAC3C,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,qBAAqB,CAAC;AAM7B,gFAAgF;AAChF,+EAA+E;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,kCAAkC,CAAC;AAGjD,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,WAAW,EACX,4BAA4B,EAC5B,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,UAAU,EACV,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,eAAe,IAAI,wBAAwB,EAC5C,MAAM,yBAAyB,CAAC;AASjC,OAAO,EACL,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,wBAAwB,CAAC;AAYhC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,oCAAoC,CAAC;AAc5C,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAEnF,cAAc,4BAA4B,CAAC;AAE3C,2DAA2D;AAC3D,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAgBH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAmB9D,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG7E,OAAO,EACL,uBAAuB,EACvB,iBAAiB,IAAI,qBAAqB,EAC3C,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,qBAAqB,CAAC;AAM7B,gFAAgF;AAChF,+EAA+E;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,kCAAkC,CAAC;AAGjD,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,WAAW,EACX,4BAA4B,EAC5B,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,UAAU,EACV,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,eAAe,IAAI,wBAAwB,EAC5C,MAAM,yBAAyB,CAAC;AASjC,OAAO,EACL,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,wBAAwB,CAAC;AAYhC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,oCAAoC,CAAC;AAc5C,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAEnF,cAAc,4BAA4B,CAAC;AAE3C,2DAA2D;AAC3D,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,6BAA6B,CAAC"}
@@ -18,15 +18,40 @@ export declare function parseHeaders(buffer: Buffer): {
18
18
  bodyStart: number;
19
19
  } | null;
20
20
  /**
21
- * Parse a complete message from buffer
22
- * Returns { message, bytesRead } or null if incomplete
21
+ * Parses a single framed JSON-RPC 2.0 message from a raw byte buffer.
22
+ *
23
+ * @remarks
24
+ * This is the low-level framing parser used internally by Node.js transports
25
+ * (`StdioTransport`, `TcpTransport`). The buffer may contain partial data;
26
+ * `null` is returned when more bytes are needed.
27
+ *
28
+ * The framing format is the LSP base protocol:
29
+ * `Content-Length: <n>\r\n\r\n<json-body>`.
30
+ *
31
+ * @param buffer - Raw byte buffer that may contain one or more framed messages.
32
+ * @returns An object with the parsed `message` and `bytesRead`, or `null` if
33
+ * the buffer does not yet contain a complete framed message.
34
+ * @throws If `Content-Length` is missing or the JSON body cannot be parsed.
35
+ *
36
+ * @category JSON-RPC
23
37
  */
24
38
  export declare function parseMessage(buffer: Buffer): {
25
39
  message: Message;
26
40
  bytesRead: number;
27
41
  } | null;
28
42
  /**
29
- * Serialize a message to buffer with headers
43
+ * Serializes a JSON-RPC 2.0 message into a framed byte buffer with
44
+ * `Content-Length` and `Content-Type` headers.
45
+ *
46
+ * @remarks
47
+ * Counterpart of `parseMessage`. Used internally by Node.js transports.
48
+ * The output format is:
49
+ * `Content-Length: <n>\r\nContent-Type: application/vscode-jsonrpc; charset=utf-8\r\n\r\n<json>`.
50
+ *
51
+ * @param message - The JSON-RPC message to serialize.
52
+ * @returns A `Buffer` containing the complete framed message ready for I/O.
53
+ *
54
+ * @category JSON-RPC
30
55
  */
31
56
  export declare function serializeMessage(message: Message): Buffer;
32
57
  //# sourceMappingURL=framing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/framing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,oBAAoB,8CAA8C,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+B5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwC3F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAiBzD"}
1
+ {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/framing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,oBAAoB,8CAA8C,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+B5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwC3F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAiBzD"}
@@ -39,8 +39,22 @@ export function parseHeaders(buffer) {
39
39
  return null; // Incomplete headers
40
40
  }
41
41
  /**
42
- * Parse a complete message from buffer
43
- * Returns { message, bytesRead } or null if incomplete
42
+ * Parses a single framed JSON-RPC 2.0 message from a raw byte buffer.
43
+ *
44
+ * @remarks
45
+ * This is the low-level framing parser used internally by Node.js transports
46
+ * (`StdioTransport`, `TcpTransport`). The buffer may contain partial data;
47
+ * `null` is returned when more bytes are needed.
48
+ *
49
+ * The framing format is the LSP base protocol:
50
+ * `Content-Length: <n>\r\n\r\n<json-body>`.
51
+ *
52
+ * @param buffer - Raw byte buffer that may contain one or more framed messages.
53
+ * @returns An object with the parsed `message` and `bytesRead`, or `null` if
54
+ * the buffer does not yet contain a complete framed message.
55
+ * @throws If `Content-Length` is missing or the JSON body cannot be parsed.
56
+ *
57
+ * @category JSON-RPC
44
58
  */
45
59
  export function parseMessage(buffer) {
46
60
  // Parse headers
@@ -76,7 +90,18 @@ export function parseMessage(buffer) {
76
90
  return { message, bytesRead: totalLength };
77
91
  }
78
92
  /**
79
- * Serialize a message to buffer with headers
93
+ * Serializes a JSON-RPC 2.0 message into a framed byte buffer with
94
+ * `Content-Length` and `Content-Type` headers.
95
+ *
96
+ * @remarks
97
+ * Counterpart of `parseMessage`. Used internally by Node.js transports.
98
+ * The output format is:
99
+ * `Content-Length: <n>\r\nContent-Type: application/vscode-jsonrpc; charset=utf-8\r\n\r\n<json>`.
100
+ *
101
+ * @param message - The JSON-RPC message to serialize.
102
+ * @returns A `Buffer` containing the complete framed message ready for I/O.
103
+ *
104
+ * @category JSON-RPC
80
105
  */
81
106
  export function serializeMessage(message) {
82
107
  // Serialize JSON body
@@ -1 +1 @@
1
- {"version":3,"file":"framing.js","sourceRoot":"","sources":["../../src/jsonrpc/framing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framing.js","sourceRoot":"","sources":["../../src/jsonrpc/framing.ts"],"names":[],"mappings":"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"}
@@ -3,62 +3,159 @@
3
3
  * Custom implementation without vscode-jsonrpc dependency
4
4
  */
5
5
  /**
6
- * Base JSON-RPC 2.0 message
6
+ * Base JSON-RPC 2.0 message discriminant.
7
+ *
8
+ * @remarks
9
+ * All JSON-RPC 2.0 messages carry `"jsonrpc": "2.0"`. Use this as a base
10
+ * when building custom message types or narrowing message unions.
11
+ *
12
+ * @category JSON-RPC
7
13
  */
8
14
  export interface BaseMessage {
15
+ /** JSON-RPC protocol version discriminant — always `"2.0"`. */
9
16
  jsonrpc: '2.0';
10
17
  }
11
18
  /**
12
- * JSON-RPC 2.0 Request Message
19
+ * JSON-RPC 2.0 Request message — expects a response from the peer.
20
+ *
21
+ * @remarks
22
+ * The `id` field uniquely identifies the request within a connection session.
23
+ * Per the JSON-RPC 2.0 spec, `id` may be a `string` or `number` — never
24
+ * assume integers only.
25
+ *
26
+ * @never
27
+ * NEVER assume JSON-RPC IDs are integers. The spec permits strings, and some
28
+ * LSP clients (e.g. VS Code extensions) use string IDs. Always use `String(id)`
29
+ * when keying pending-request maps.
30
+ *
31
+ * @category JSON-RPC
13
32
  */
14
33
  export interface RequestMessage extends BaseMessage {
34
+ /** Unique identifier correlating this request to its eventual response. */
15
35
  id: string | number;
36
+ /** LSP method string, e.g. `'textDocument/hover'`. */
16
37
  method: string;
38
+ /** JSON-RPC protocol version — always `"2.0"` (inherited). */
39
+ jsonrpc: '2.0';
40
+ /** Optional request parameters (method-specific shape). */
17
41
  params?: unknown;
18
42
  }
19
43
  /**
20
- * JSON-RPC 2.0 Notification Message (no response expected)
44
+ * JSON-RPC 2.0 Notification message no response is expected or sent.
45
+ *
46
+ * @remarks
47
+ * Notifications are fire-and-forget. Sending an error response to a
48
+ * notification violates the JSON-RPC 2.0 spec and will be silently dropped
49
+ * by compliant clients.
50
+ *
51
+ * @never
52
+ * NEVER send a notification before the `initialize` response has been sent
53
+ * by the server. The LSP spec requires the server to respond to `initialize`
54
+ * before any other message is exchanged; clients discard early notifications.
55
+ *
56
+ * @category JSON-RPC
21
57
  */
22
58
  export interface NotificationMessage extends BaseMessage {
59
+ /** LSP method string, e.g. `'textDocument/didOpen'`. */
23
60
  method: string;
61
+ /** JSON-RPC protocol version — always `"2.0"` (inherited). */
62
+ jsonrpc: '2.0';
63
+ /** Optional notification parameters (method-specific shape). */
24
64
  params?: unknown;
25
65
  }
26
66
  /**
27
- * JSON-RPC 2.0 Response Error
67
+ * JSON-RPC 2.0 error object embedded in an error response.
68
+ *
69
+ * @category JSON-RPC
28
70
  */
29
71
  export interface ResponseError {
72
+ /** Numeric JSON-RPC error code (see {@link JSONRPCErrorCode} for standard values). */
30
73
  code: number;
74
+ /** Human-readable error description. */
31
75
  message: string;
76
+ /** Optional machine-readable error details for the caller. */
32
77
  data?: unknown;
33
78
  }
34
79
  /**
35
- * JSON-RPC 2.0 Success Response Message
80
+ * JSON-RPC 2.0 success response to a prior request.
81
+ *
82
+ * @category JSON-RPC
36
83
  */
37
84
  export interface SuccessResponseMessage extends BaseMessage {
85
+ /** Identifier matching the originating request's `id`. */
38
86
  id: string | number;
87
+ /** JSON-RPC protocol version — always `"2.0"` (inherited). */
88
+ jsonrpc: '2.0';
89
+ /** The request result payload. */
39
90
  result: unknown;
40
91
  }
41
92
  /**
42
- * JSON-RPC 2.0 Error Response Message
93
+ * JSON-RPC 2.0 error response to a prior request.
94
+ *
95
+ * @category JSON-RPC
43
96
  */
44
97
  export interface ErrorResponseMessage extends BaseMessage {
98
+ /** Identifier matching the originating request's `id`. */
45
99
  id: string | number;
100
+ /** JSON-RPC protocol version — always `"2.0"` (inherited). */
101
+ jsonrpc: '2.0';
102
+ /** Structured error payload. */
46
103
  error: ResponseError;
47
104
  }
48
105
  /**
49
- * JSON-RPC 2.0 Response Message (success or error)
106
+ * JSON-RPC 2.0 Response message — either a success result or an error.
107
+ *
108
+ * @category JSON-RPC
50
109
  */
51
110
  export type ResponseMessage = SuccessResponseMessage | ErrorResponseMessage;
52
111
  /**
53
- * Union of all JSON-RPC message types
112
+ * Union of all JSON-RPC 2.0 message types sent over a transport.
113
+ *
114
+ * @category JSON-RPC
54
115
  */
55
116
  export type Message = RequestMessage | NotificationMessage | ResponseMessage;
56
117
  /**
57
118
  * Type guards for message discrimination
58
119
  */
120
+ /**
121
+ * Returns `true` when `message` is a JSON-RPC request (has `id` + `method`).
122
+ *
123
+ * @param message - The message to test.
124
+ * @returns `true` when `message` is a {@link RequestMessage}.
125
+ * @category JSON-RPC
126
+ */
59
127
  export declare function isRequestMessage(message: Message): message is RequestMessage;
128
+ /**
129
+ * Returns `true` when `message` is a JSON-RPC notification (has `method`,
130
+ * no `id`).
131
+ *
132
+ * @param message - The message to test.
133
+ * @returns `true` when `message` is a {@link NotificationMessage}.
134
+ * @category JSON-RPC
135
+ */
60
136
  export declare function isNotificationMessage(message: Message): message is NotificationMessage;
137
+ /**
138
+ * Returns `true` when `message` is a JSON-RPC response (has `id`, no `method`).
139
+ *
140
+ * @param message - The message to test.
141
+ * @returns `true` when `message` is a {@link ResponseMessage}.
142
+ * @category JSON-RPC
143
+ */
61
144
  export declare function isResponseMessage(message: Message): message is ResponseMessage;
145
+ /**
146
+ * Returns `true` when `response` carries a `result` (success case).
147
+ *
148
+ * @param message - The response message to test.
149
+ * @returns `true` when `message` is a {@link SuccessResponseMessage}.
150
+ * @category JSON-RPC
151
+ */
62
152
  export declare function isSuccessResponse(message: ResponseMessage): message is SuccessResponseMessage;
153
+ /**
154
+ * Returns `true` when `response` carries an `error` (error case).
155
+ *
156
+ * @param message - The response message to test.
157
+ * @returns `true` when `message` is an {@link ErrorResponseMessage}.
158
+ * @category JSON-RPC
159
+ */
63
160
  export declare function isErrorResponse(message: ResponseMessage): message is ErrorResponseMessage;
64
161
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAE7E;;GAEG;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAEtF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,IAAI,sBAAsB,CAE7F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,IAAI,oBAAoB,CAEzF"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,OAAO,EAAE,KAAK,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,2EAA2E;IAC3E,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,0DAA0D;IAC1D,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC;IACf,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,0DAA0D;IAC1D,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,EAAE,KAAK,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAE5E;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAE7E;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAEtF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,IAAI,sBAAsB,CAE7F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,IAAI,oBAAoB,CAEzF"}
@@ -5,18 +5,54 @@
5
5
  /**
6
6
  * Type guards for message discrimination
7
7
  */
8
+ /**
9
+ * Returns `true` when `message` is a JSON-RPC request (has `id` + `method`).
10
+ *
11
+ * @param message - The message to test.
12
+ * @returns `true` when `message` is a {@link RequestMessage}.
13
+ * @category JSON-RPC
14
+ */
8
15
  export function isRequestMessage(message) {
9
16
  return 'id' in message && 'method' in message;
10
17
  }
18
+ /**
19
+ * Returns `true` when `message` is a JSON-RPC notification (has `method`,
20
+ * no `id`).
21
+ *
22
+ * @param message - The message to test.
23
+ * @returns `true` when `message` is a {@link NotificationMessage}.
24
+ * @category JSON-RPC
25
+ */
11
26
  export function isNotificationMessage(message) {
12
27
  return 'method' in message && !('id' in message);
13
28
  }
29
+ /**
30
+ * Returns `true` when `message` is a JSON-RPC response (has `id`, no `method`).
31
+ *
32
+ * @param message - The message to test.
33
+ * @returns `true` when `message` is a {@link ResponseMessage}.
34
+ * @category JSON-RPC
35
+ */
14
36
  export function isResponseMessage(message) {
15
37
  return 'id' in message && !('method' in message);
16
38
  }
39
+ /**
40
+ * Returns `true` when `response` carries a `result` (success case).
41
+ *
42
+ * @param message - The response message to test.
43
+ * @returns `true` when `message` is a {@link SuccessResponseMessage}.
44
+ * @category JSON-RPC
45
+ */
17
46
  export function isSuccessResponse(message) {
18
47
  return 'result' in message;
19
48
  }
49
+ /**
50
+ * Returns `true` when `response` carries an `error` (error case).
51
+ *
52
+ * @param message - The response message to test.
53
+ * @returns `true` when `message` is an {@link ErrorResponseMessage}.
54
+ * @category JSON-RPC
55
+ */
20
56
  export function isErrorResponse(message) {
21
57
  return 'error' in message;
22
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/jsonrpc/messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6DH;;GAEG;AAEH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAA6B;IAC5E,OAAO,IAAI,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,CAAC;AAAA,CAC/C;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAkC;IACtF,OAAO,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;AAAA,CAClD;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAA8B;IAC9E,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;AAAA,CAClD;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAwB,EAAqC;IAC7F,OAAO,QAAQ,IAAI,OAAO,CAAC;AAAA,CAC5B;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB,EAAmC;IACzF,OAAO,OAAO,IAAI,OAAO,CAAC;AAAA,CAC3B"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/jsonrpc/messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0HH;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,IAAI,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,OAAO,QAAQ,IAAI,OAAO,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,OAAO,OAAO,IAAI,OAAO,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/jsonrpc/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/jsonrpc/reader.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,9 @@ export declare class MessageWriter extends EventEmitter {
18
18
  * Write a message to the stream
19
19
  */
20
20
  write(message: Message): Promise<void>;
21
+ /**
22
+ * Flush all queued messages
23
+ */
21
24
  private flush;
22
25
  /**
23
26
  * Write a buffer to the stream
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAKjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAW;IAExB,YAA6B,MAAM,EAAE,QAAQ,EAS5C;IAED;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3C;YAKa,KAAK;IAqBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,KAAK,IAAI,IAAI,CAaZ;IAED;;OAEG;IACH,QAAQ,IAAI,OAAO,CAElB;CACF"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/jsonrpc/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAKjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAW;IAExB,YAA6B,MAAM,EAAE,QAAQ,EAS5C;IAED;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3C;IAED;;OAEG;YACW,KAAK;IAqBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,KAAK,IAAI,IAAI,CAaZ;IAED;;OAEG;IACH,QAAQ,IAAI,OAAO,CAElB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/jsonrpc/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/jsonrpc/writer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,25 @@
1
1
  import type { Middleware } from './types.js';
2
+ /**
3
+ * Combines multiple middleware functions into a single middleware that runs
4
+ * them left-to-right, each delegating to the next via `next()`.
5
+ *
6
+ * @remarks
7
+ * Use `composeMiddleware` when you have a set of independent middleware that
8
+ * you want to treat as a single unit — for example, bundling a logger and a
9
+ * tracer into one reusable package middleware.
10
+ *
11
+ * @param middlewares - The middleware functions to compose, in execution order.
12
+ * @returns A single middleware that chains all provided middlewares.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { composeMiddleware } from '@lspeasy/core';
17
+ *
18
+ * const bundled = composeMiddleware(loggerMiddleware, tracingMiddleware);
19
+ * const server = new LSPServer({ middleware: [bundled] });
20
+ * ```
21
+ *
22
+ * @category Middleware
23
+ */
2
24
  export declare function composeMiddleware(...middlewares: Middleware[]): Middleware;
3
25
  //# sourceMappingURL=compose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/middleware/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAiB1E"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/middleware/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAiB1E"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * Combines multiple middleware functions into a single middleware that runs
3
+ * them left-to-right, each delegating to the next via `next()`.
4
+ *
5
+ * @remarks
6
+ * Use `composeMiddleware` when you have a set of independent middleware that
7
+ * you want to treat as a single unit — for example, bundling a logger and a
8
+ * tracer into one reusable package middleware.
9
+ *
10
+ * @param middlewares - The middleware functions to compose, in execution order.
11
+ * @returns A single middleware that chains all provided middlewares.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { composeMiddleware } from '@lspeasy/core';
16
+ *
17
+ * const bundled = composeMiddleware(loggerMiddleware, tracingMiddleware);
18
+ * const server = new LSPServer({ middleware: [bundled] });
19
+ * ```
20
+ *
21
+ * @category Middleware
22
+ */
1
23
  export function composeMiddleware(...middlewares) {
2
24
  return async (context, next) => {
3
25
  const dispatch = async (index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/middleware/compose.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,GAAG,WAAyB,EAAc;IAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAoC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAoC,EAAE,CAAC;YAC1E,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAAA,CACvD,CAAC;QAEF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAA,CACpB,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/middleware/compose.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG,WAAyB;IAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAoC,EAAE;QAC/D,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAoC,EAAE;YACzE,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,27 @@
1
1
  import type { Middleware, MiddlewareContext, MiddlewareResult, ScopedMiddleware } from './types.js';
2
2
  type MiddlewareRegistration = Middleware | ScopedMiddleware;
3
+ /**
4
+ * Runs the registered middleware chain for a single JSON-RPC message, then
5
+ * calls `finalHandler` if no middleware short-circuits.
6
+ *
7
+ * @remarks
8
+ * This is the core dispatch loop used by `LSPClient` and `LSPServer`. Each
9
+ * middleware receives `context` and a `next` callback; calling `next()` hands
10
+ * control to the following middleware. If a middleware returns a result with
11
+ * `shortCircuit: true` the remaining middleware and `finalHandler` are skipped.
12
+ *
13
+ * Scoped middleware (created with `createScopedMiddleware`) is automatically
14
+ * filtered: it only executes when `matchesFilter` returns `true` for the
15
+ * current message.
16
+ *
17
+ * @param registrations - The list of middleware or scoped-middleware to run.
18
+ * @param context - The shared context for the current message.
19
+ * @param finalHandler - The handler to call after all middleware have run.
20
+ * @returns The result of the first short-circuiting middleware, or the result
21
+ * of `finalHandler`.
22
+ *
23
+ * @category Middleware
24
+ */
3
25
  export declare function executeMiddlewarePipeline(registrations: MiddlewareRegistration[] | undefined, context: MiddlewareContext, finalHandler: () => Promise<void | MiddlewareResult>): Promise<void | MiddlewareResult>;
4
26
  export {};
5
27
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/middleware/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpG,KAAK,sBAAsB,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAsC5D,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,sBAAsB,EAAE,GAAG,SAAS,EACnD,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,GACnD,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,CA6BlC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/middleware/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpG,KAAK,sBAAsB,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAsC5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,sBAAsB,EAAE,GAAG,SAAS,EACnD,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,GACnD,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,CA6BlC"}