@difizen/libro-lsp 0.1.2

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 (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/es/adapters/adapter.d.ts +255 -0
  4. package/es/adapters/adapter.d.ts.map +1 -0
  5. package/es/adapters/adapter.js +647 -0
  6. package/es/adapters/notebook-adapter.d.ts +150 -0
  7. package/es/adapters/notebook-adapter.d.ts.map +1 -0
  8. package/es/adapters/notebook-adapter.js +588 -0
  9. package/es/adapters/status-message.d.ts +48 -0
  10. package/es/adapters/status-message.d.ts.map +1 -0
  11. package/es/adapters/status-message.js +110 -0
  12. package/es/connection-manager.d.ts +199 -0
  13. package/es/connection-manager.d.ts.map +1 -0
  14. package/es/connection-manager.js +685 -0
  15. package/es/connection.d.ts +149 -0
  16. package/es/connection.d.ts.map +1 -0
  17. package/es/connection.js +591 -0
  18. package/es/extractors/index.d.ts +4 -0
  19. package/es/extractors/index.d.ts.map +1 -0
  20. package/es/extractors/index.js +6 -0
  21. package/es/extractors/manager.d.ts +31 -0
  22. package/es/extractors/manager.d.ts.map +1 -0
  23. package/es/extractors/manager.js +90 -0
  24. package/es/extractors/text-extractor.d.ts +56 -0
  25. package/es/extractors/text-extractor.d.ts.map +1 -0
  26. package/es/extractors/text-extractor.js +72 -0
  27. package/es/extractors/types.d.ts +68 -0
  28. package/es/extractors/types.d.ts.map +1 -0
  29. package/es/extractors/types.js +1 -0
  30. package/es/feature.d.ts +29 -0
  31. package/es/feature.d.ts.map +1 -0
  32. package/es/feature.js +85 -0
  33. package/es/index.d.ts +19 -0
  34. package/es/index.d.ts.map +1 -0
  35. package/es/index.js +21 -0
  36. package/es/lsp-app-contribution.d.ts +19 -0
  37. package/es/lsp-app-contribution.d.ts.map +1 -0
  38. package/es/lsp-app-contribution.js +155 -0
  39. package/es/lsp-protocol.d.ts +10 -0
  40. package/es/lsp-protocol.d.ts.map +1 -0
  41. package/es/lsp-protocol.js +1 -0
  42. package/es/lsp.d.ts +136 -0
  43. package/es/lsp.d.ts.map +1 -0
  44. package/es/lsp.js +141 -0
  45. package/es/manager.d.ts +142 -0
  46. package/es/manager.d.ts.map +1 -0
  47. package/es/manager.js +423 -0
  48. package/es/module.d.ts +3 -0
  49. package/es/module.d.ts.map +1 -0
  50. package/es/module.js +21 -0
  51. package/es/plugin.d.ts +56 -0
  52. package/es/plugin.d.ts.map +1 -0
  53. package/es/plugin.js +0 -0
  54. package/es/positioning.d.ts +66 -0
  55. package/es/positioning.d.ts.map +1 -0
  56. package/es/positioning.js +96 -0
  57. package/es/schema.d.ts +240 -0
  58. package/es/schema.d.ts.map +1 -0
  59. package/es/schema.js +0 -0
  60. package/es/tokens.d.ts +677 -0
  61. package/es/tokens.d.ts.map +1 -0
  62. package/es/tokens.js +183 -0
  63. package/es/utils.d.ts +33 -0
  64. package/es/utils.d.ts.map +1 -0
  65. package/es/utils.js +168 -0
  66. package/es/virtual/document.d.ts +546 -0
  67. package/es/virtual/document.d.ts.map +1 -0
  68. package/es/virtual/document.js +1263 -0
  69. package/es/ws-connection/server-capability-registration.d.ts +19 -0
  70. package/es/ws-connection/server-capability-registration.d.ts.map +1 -0
  71. package/es/ws-connection/server-capability-registration.js +51 -0
  72. package/es/ws-connection/types.d.ts +76 -0
  73. package/es/ws-connection/types.d.ts.map +1 -0
  74. package/es/ws-connection/types.js +1 -0
  75. package/es/ws-connection/ws-connection.d.ts +105 -0
  76. package/es/ws-connection/ws-connection.d.ts.map +1 -0
  77. package/es/ws-connection/ws-connection.js +301 -0
  78. package/package.json +67 -0
  79. package/src/adapters/adapter.ts +611 -0
  80. package/src/adapters/notebook-adapter.ts +463 -0
  81. package/src/adapters/status-message.ts +93 -0
  82. package/src/connection-manager.ts +626 -0
  83. package/src/connection.ts +570 -0
  84. package/src/extractors/index.ts +6 -0
  85. package/src/extractors/manager.ts +82 -0
  86. package/src/extractors/text-extractor.ts +94 -0
  87. package/src/extractors/types.ts +78 -0
  88. package/src/feature.ts +60 -0
  89. package/src/index.spec.ts +10 -0
  90. package/src/index.ts +21 -0
  91. package/src/lsp-app-contribution.ts +83 -0
  92. package/src/lsp-protocol.ts +10 -0
  93. package/src/lsp.ts +160 -0
  94. package/src/manager.ts +358 -0
  95. package/src/module.ts +32 -0
  96. package/src/plugin.ts +62 -0
  97. package/src/positioning.ts +121 -0
  98. package/src/schema.ts +249 -0
  99. package/src/tokens.ts +843 -0
  100. package/src/utils.ts +109 -0
  101. package/src/virtual/document.ts +1250 -0
  102. package/src/ws-connection/server-capability-registration.ts +77 -0
  103. package/src/ws-connection/types.ts +102 -0
  104. package/src/ws-connection/ws-connection.ts +320 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-present Difizen Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
File without changes
@@ -0,0 +1,255 @@
1
+ import type { NotebookView } from '@difizen/libro-core';
2
+ import { Emitter } from '@difizen/mana-app';
3
+ import type { Disposable, Event, View } from '@difizen/mana-app';
4
+ import type { LanguageIdentifier } from '../lsp.js';
5
+ import type { IVirtualPosition } from '../positioning.js';
6
+ import type { Document, IDocumentConnectionData, ILSPCodeExtractorsManager, ILSPDocumentConnectionManager, ILSPFeatureManager } from '../tokens.js';
7
+ import type { VirtualDocument } from '../virtual/document.js';
8
+ export interface IEditorChangedData {
9
+ /**
10
+ * The CM editor invoking the change event.
11
+ */
12
+ editor: Document.IEditor;
13
+ }
14
+ export interface IAdapterOptions {
15
+ /**
16
+ * The LSP document and connection manager instance.
17
+ */
18
+ connectionManager: ILSPDocumentConnectionManager;
19
+ /**
20
+ * The LSP feature manager instance.
21
+ */
22
+ featureManager: ILSPFeatureManager;
23
+ /**
24
+ * The LSP foreign code extractor manager.
25
+ */
26
+ foreignCodeExtractorsManager: ILSPCodeExtractorsManager;
27
+ }
28
+ /**
29
+ * Foreign code: low level adapter is not aware of the presence of foreign languages;
30
+ * it operates on the virtual document and must not attempt to infer the language dependencies
31
+ * as this would make the logic of inspections caching impossible to maintain, thus the WidgetAdapter
32
+ * has to handle that, keeping multiple connections and multiple virtual documents.
33
+ */
34
+ export declare abstract class WidgetLSPAdapter<T extends NotebookView> implements Disposable {
35
+ widget: T;
36
+ protected options: IAdapterOptions;
37
+ constructor(widget: T, options: IAdapterOptions);
38
+ /**
39
+ * Check if the adapter is disposed
40
+ */
41
+ get disposed(): boolean;
42
+ /**
43
+ * Check if the document contains multiple editors
44
+ */
45
+ get hasMultipleEditors(): boolean;
46
+ /**
47
+ * Get the ID of the internal widget.
48
+ */
49
+ get widgetId(): string;
50
+ /**
51
+ * Get the language identifier of the document
52
+ */
53
+ get language(): LanguageIdentifier;
54
+ /**
55
+ * Signal emitted when the adapter is connected.
56
+ */
57
+ get adapterConnected(): Event<IDocumentConnectionData>;
58
+ /**
59
+ * Signal emitted when the active editor have changed.
60
+ */
61
+ get activeEditorChanged(): Event<IEditorChangedData>;
62
+ /**
63
+ * Signal emitted when the adapter is disposed.
64
+ */
65
+ get onDispose(): Event<void>;
66
+ /**
67
+ * Signal emitted when the an editor is changed.
68
+ */
69
+ get editorAdded(): Event<IEditorChangedData>;
70
+ /**
71
+ * Signal emitted when the an editor is removed.
72
+ */
73
+ get editorRemoved(): Event<IEditorChangedData>;
74
+ /**
75
+ * Get the inner HTMLElement of the document widget.
76
+ */
77
+ abstract get wrapperElement(): HTMLElement;
78
+ /**
79
+ * Get current path of the document.
80
+ */
81
+ abstract get documentPath(): string;
82
+ /**
83
+ * Get the mime type of the document.
84
+ */
85
+ abstract get mimeType(): string;
86
+ /**
87
+ * Get the file extension of the document.
88
+ */
89
+ abstract get languageFileExtension(): string | undefined;
90
+ /**
91
+ * Get the activated CM editor.
92
+ */
93
+ abstract get activeEditor(): Document.IEditor | undefined;
94
+ /**
95
+ * Get the list of CM editors in the document, there is only one editor
96
+ * in the case of file editor.
97
+ */
98
+ abstract get editors(): Document.ICodeBlockOptions[];
99
+ /**
100
+ * Promise that resolves once the adapter is initialized
101
+ */
102
+ abstract get ready(): Promise<void>;
103
+ /**
104
+ * The virtual document is connected or not
105
+ */
106
+ get isConnected(): boolean;
107
+ /**
108
+ * The LSP document and connection manager instance.
109
+ */
110
+ get connectionManager(): ILSPDocumentConnectionManager;
111
+ /**
112
+ * Promise that resolves once the document is updated
113
+ */
114
+ get updateFinished(): Promise<void>;
115
+ /**
116
+ * Internal virtual document of the adapter.
117
+ */
118
+ get virtualDocument(): VirtualDocument | null;
119
+ /**
120
+ * Callback on connection closed event.
121
+ */
122
+ onConnectionClosed(_: ILSPDocumentConnectionManager, { virtualDocument }: IDocumentConnectionData): void;
123
+ /**
124
+ * Dispose the adapter.
125
+ */
126
+ dispose(): void;
127
+ /**
128
+ * Disconnect virtual document from the language server.
129
+ */
130
+ disconnect(): void;
131
+ /**
132
+ * Update the virtual document.
133
+ */
134
+ updateDocuments(): Promise<void>;
135
+ /**
136
+ * Callback called on the document changed event.
137
+ */
138
+ documentChanged(virtualDocument: VirtualDocument): void;
139
+ /**
140
+ * (re)create virtual document using current path and language
141
+ */
142
+ protected abstract createVirtualDocument(): VirtualDocument;
143
+ /**
144
+ * Get the index of editor from the cursor position in the virtual
145
+ * document. Since there is only one editor, this method always return
146
+ * 0
147
+ *
148
+ * @param position - the position of cursor in the virtual document.
149
+ * @return - index of the virtual editor
150
+ */
151
+ abstract getEditorIndexAt(position: IVirtualPosition): number;
152
+ /**
153
+ * Get the index of input editor
154
+ *
155
+ * @param ceEditor - instance of the code editor
156
+ */
157
+ abstract getEditorIndex(ceEditor: Document.IEditor): number;
158
+ /**
159
+ * Get the index of input editor
160
+ *
161
+ * @param ceEditor - instance of the code editor
162
+ */
163
+ abstract getCellEditor(cell: View): Document.IEditor | undefined;
164
+ /**
165
+ * Get the wrapper of input editor.
166
+ *
167
+ * @param ceEditor
168
+ */
169
+ abstract getEditorWrapper(ceEditor: Document.IEditor): HTMLElement | undefined;
170
+ protected reloadConnection(): void;
171
+ /**
172
+ * Callback on document saved event.
173
+ */
174
+ protected onSaveState: () => void;
175
+ /**
176
+ * Connect the virtual document with the language server.
177
+ */
178
+ protected onConnected(data: IDocumentConnectionData): Promise<void>;
179
+ /**
180
+ * Opens a connection for the document. The connection may or may
181
+ * not be initialized, yet, and depending on when this is called, the client
182
+ * may not be fully connected.
183
+ *
184
+ * @param virtualDocument a VirtualDocument
185
+ * @param sendOpen whether to open the document immediately
186
+ */
187
+ protected connectDocument(virtualDocument: VirtualDocument, sendOpen?: boolean): Promise<void>;
188
+ /**
189
+ * Create the virtual document using current path and language.
190
+ */
191
+ protected initVirtual(): void;
192
+ /**
193
+ * Handler for opening a document contained in a parent document. The assumption
194
+ * is that the editor already exists for this, and as such the document
195
+ * should be queued for immediate opening.
196
+ *
197
+ * @param host the VirtualDocument that contains the VirtualDocument in another language
198
+ * @param context information about the foreign VirtualDocument
199
+ */
200
+ protected onForeignDocumentOpened(context: Document.IForeignContext): Promise<void>;
201
+ /**
202
+ * Signal emitted when the adapter is connected.
203
+ */
204
+ protected _adapterConnected: Emitter<IDocumentConnectionData>;
205
+ /**
206
+ * Signal emitted when the active editor have changed.
207
+ */
208
+ protected _activeEditorChanged: Emitter<IEditorChangedData>;
209
+ /**
210
+ * Signal emitted when an editor is changed.
211
+ */
212
+ protected _editorAdded: Emitter<IEditorChangedData>;
213
+ /**
214
+ * Signal emitted when an editor is removed.
215
+ */
216
+ protected _editorRemoved: Emitter<IEditorChangedData>;
217
+ /**
218
+ * Signal emitted when the adapter is disposed.
219
+ */
220
+ protected _disposed: Emitter<void>;
221
+ protected _isDisposed: boolean;
222
+ protected readonly _connectionManager: ILSPDocumentConnectionManager;
223
+ protected _isConnected: boolean;
224
+ protected _updateFinished: Promise<void>;
225
+ protected _virtualDocument: VirtualDocument | null;
226
+ /**
227
+ * Callback called when a foreign document is closed,
228
+ * the associated signals with this virtual document
229
+ * are disconnected.
230
+ */
231
+ protected _onForeignDocumentClosed(context: Document.IForeignContext): void;
232
+ /**
233
+ * Detect the capabilities for the document type then
234
+ * open the websocket connection with the language server.
235
+ */
236
+ protected _connect(virtualDocument: VirtualDocument): Promise<{
237
+ connection: import("../tokens.js").ILSPConnection;
238
+ virtualDocument: VirtualDocument;
239
+ } | undefined>;
240
+ /**
241
+ * Handle content changes and update all virtual documents after a change.
242
+ *
243
+ * #### Notes
244
+ * Update to the state of a notebook may be done without a notice on the
245
+ * CodeMirror level, e.g. when a cell is deleted. Therefore a
246
+ * JupyterLab-specific signal is watched instead.
247
+ *
248
+ * While by not using the change event of CodeMirror editors we lose an easy
249
+ * way to send selective (range) updates this can be still implemented by
250
+ * comparison of before/after states of the virtual documents, which is
251
+ * more resilient and editor-independent.
252
+ */
253
+ protected _onContentChanged(): Promise<void>;
254
+ }
255
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"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"}