ace-linters 0.0.4 → 0.1.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/README.md +86 -18
- package/build/ace-linters.js +41860 -0
- package/build/css-service.js +73636 -0
- package/build/html-service.js +51337 -0
- package/build/json-service.js +41679 -0
- package/build/lua-service.js +3017 -0
- package/build/service-manager.js +1990 -0
- package/build/typescript-service.js +192262 -0
- package/components/description-tooltip.ts +111 -63
- package/css/linters.css +2 -1
- package/index.ts +3 -10
- package/language-provider.ts +200 -116
- package/message-controller-ws.ts +290 -0
- package/message-controller.ts +16 -23
- package/message-types.ts +11 -11
- package/package.json +8 -6
- package/services/base-service.ts +6 -5
- package/services/css/css-service.ts +2 -2
- package/services/html/html-service.ts +2 -2
- package/services/json/json-service.ts +5 -6
- package/services/lua/lua-service.ts +38 -0
- package/services/service-manager.ts +92 -58
- package/services/typescript/typescript-service.ts +2 -2
- package/type-converters/{vscode-converters.ts → lsp-converters.ts} +10 -4
- package/type-converters/typescript-converters.ts +3 -3
- package/{type-converters → types}/converters.d.ts +0 -0
- package/types/index.d.ts +5 -0
- package/{services → types}/language-service.d.ts +5 -6
- package/types/message-controller-interface.d.ts +28 -0
- package/webpack.config.js +11 -13
- package/build/bundle.ace-linters.js +0 -2
- package/build/bundle.ace-linters.js.LICENSE.txt +0 -40
- package/build/bundle.web.worker.worker.js.LICENSE.txt +0 -38
- package/index.d.ts +0 -9
- package/web.worker.ts +0 -54
- package/worker-loader.d.ts +0 -7
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
# Ace Linters
|
|
1
|
+
# Ace Linters (Ace Language Client)
|
|
2
2
|
|
|
3
|
-
Ace linters is a library that brings language-aware features to the Ace editor. It includes a number of language
|
|
3
|
+
Ace linters is a library that brings language-aware features to the Ace editor. It includes a number of language
|
|
4
|
+
services, each of which provides support for a specific language, such as JSON, HTML, CSS, and Typescript.
|
|
5
|
+
|
|
6
|
+
Ace linters works in two modes: **WebSockets** and **WebWorkers**.
|
|
4
7
|
|
|
5
8
|
## Features
|
|
6
9
|
|
|
7
10
|
With Ace linters, you can easily add the following language-aware features to your Ace editor:
|
|
11
|
+
|
|
8
12
|
- Error checking
|
|
9
13
|
- Code completion
|
|
10
14
|
- Type checking
|
|
@@ -13,11 +17,15 @@ With Ace linters, you can easily add the following language-aware features to yo
|
|
|
13
17
|
|
|
14
18
|
## Supported languages
|
|
15
19
|
|
|
16
|
-
Ace linters supports the following languages:
|
|
20
|
+
Ace linters supports the following languages by default with webworkers approach:
|
|
21
|
+
|
|
17
22
|
- JSON, JSON5 (with JsonService)
|
|
18
23
|
- HTML (with HtmlService)
|
|
19
24
|
- CSS, SCSS, LESS (with CssService)
|
|
20
25
|
- Typescript, Javascript, JSX, TSX (with TypescriptService)
|
|
26
|
+
- Lua (with LuaService)
|
|
27
|
+
|
|
28
|
+
For WebSockets you could connect any of your Language Server folowing LSP
|
|
21
29
|
|
|
22
30
|
## Installation
|
|
23
31
|
|
|
@@ -27,20 +35,32 @@ To install Ace linters, you can use the following command:
|
|
|
27
35
|
npm install ace-linters
|
|
28
36
|
```
|
|
29
37
|
|
|
30
|
-
## Usage
|
|
38
|
+
## Usage with WebWorker
|
|
39
|
+
|
|
40
|
+
To use Ace linters with WebWorker, you will first need to include it in your project and create an instance of the Ace
|
|
41
|
+
editor and an instance of LanguageProvider.
|
|
42
|
+
|
|
43
|
+
*client.js*:
|
|
31
44
|
|
|
32
|
-
To use Ace linters, you will first need to include it in your project and create an instance of the Ace editor and an instance of LanguageProvider. Then, LanguageProvider will use the appropriate language service based on the mode being used:
|
|
33
45
|
```javascript
|
|
34
46
|
import * as ace from "ace-code";
|
|
35
47
|
import {Mode as TypescriptMode} from "ace-code/src/mode/typescript";
|
|
36
|
-
import {registerStyles, LanguageProvider
|
|
37
|
-
import {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
|
|
48
|
+
import {registerStyles, LanguageProvider} from "ace-linters";
|
|
49
|
+
import {ScriptTarget, JsxEmit} from "ace-linters/type-converters/typescript-converters";
|
|
50
|
+
|
|
51
|
+
// Create a web worker
|
|
52
|
+
let worker = new Worker(new URL('./webworker.js', import.meta.url));
|
|
53
|
+
|
|
54
|
+
// Create an Ace editor
|
|
55
|
+
let editor = ace.edit("container", {
|
|
56
|
+
mode: new TypescriptMode() // Set the mode of the editor to Typescript
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Create a language provider for web worker
|
|
60
|
+
let languageProvider = LanguageProvider.for(worker);
|
|
61
|
+
|
|
62
|
+
// Set global options for the Typescript service
|
|
63
|
+
languageProvider.setGlobalOptions("typescript", {
|
|
44
64
|
compilerOptions: {
|
|
45
65
|
allowJs: true,
|
|
46
66
|
target: ScriptTarget.ESNext,
|
|
@@ -48,13 +68,61 @@ setLanguageGlobalOptions("typescript", {
|
|
|
48
68
|
}
|
|
49
69
|
});
|
|
50
70
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let provider = new LanguageProvider(editor, {});
|
|
71
|
+
// Register the editor with the language provider
|
|
72
|
+
languageProvider.registerEditor(editor);
|
|
73
|
+
|
|
55
74
|
```
|
|
56
75
|
|
|
57
|
-
|
|
76
|
+
In WebWorkers mode, you need to register
|
|
77
|
+
services on the webworker side. Like this:
|
|
78
|
+
|
|
79
|
+
*webworker.js*
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
import {ServiceManager} from "ace-linters/services/service-manager";
|
|
83
|
+
|
|
84
|
+
let manager = new ServiceManager(self);
|
|
85
|
+
manager.registerService("typescript", {
|
|
86
|
+
module: () => import("ace-linters/services/typescript/typescript-service"),
|
|
87
|
+
className: "TypescriptService",
|
|
88
|
+
modes: "typescript|javascript|tsx|jsx",
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
[Example client](https://github.com/mkslanc/ace-linters/blob/main/packages/demo/webworker-lsp/demo.ts)
|
|
93
|
+
|
|
94
|
+
[Example web worker](https://github.com/mkslanc/ace-linters/blob/main/packages/demo/webworker-lsp/webworker.ts)
|
|
95
|
+
|
|
96
|
+
## Usage with WebSocket
|
|
97
|
+
|
|
98
|
+
In WebSockets mode, you need to start a language server on any port and connect to it.
|
|
99
|
+
|
|
100
|
+
Here's an example client:
|
|
101
|
+
|
|
102
|
+
```javascript
|
|
103
|
+
import * as ace from "ace-code";
|
|
104
|
+
import {Mode as JSONMode} from "ace-code/src/mode/json"; //any mode you want
|
|
105
|
+
import {LanguageProvider} from "ace-linters";
|
|
106
|
+
|
|
107
|
+
// Create a web socket
|
|
108
|
+
const webSocket = new WebSocket("ws://localhost:3000/exampleServer"); // adress of your websocket server
|
|
109
|
+
|
|
110
|
+
// Create an Ace editor
|
|
111
|
+
let editor = ace.edit("container", {
|
|
112
|
+
mode: new JSONMode() // Set the mode of the editor to JSON
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Create a language provider for web socket
|
|
116
|
+
let languageProvider = LanguageProvider.for(webSocket);
|
|
117
|
+
|
|
118
|
+
// Register the editor with the language provider
|
|
119
|
+
languageProvider.registerEditor(editor);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
[Example client](https://github.com/mkslanc/ace-linters/blob/main/packages/demo/websockets-lsp/client.ts)
|
|
123
|
+
|
|
124
|
+
[Example server](https://github.com/mkslanc/ace-linters/tree/main/packages/demo/websockets-lsp/server)
|
|
58
125
|
|
|
59
126
|
## License
|
|
127
|
+
|
|
60
128
|
Ace linters is released under the [MIT License](https://opensource.org/licenses/MIT).
|