@codingame/monaco-vscode-api 1.68.2 → 1.68.5

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 CHANGED
@@ -42,3 +42,26 @@ import * as vscode from 'vscode'
42
42
  const range = new new vscode.Range(...)
43
43
  vscode.languages.registerCompletionItemProvider(...)
44
44
  ```
45
+
46
+ ### History
47
+
48
+ This project was mainly created to make the implementation of [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient) more robust and maintainable.
49
+
50
+ monaco-languageclient uses [vscode-languageclient](https://www.npmjs.com/package/vscode-languageclient) which was built to run inside a VSCode extension. VSCode extensions communicate with the editor via an [API](https://www.npmjs.com/package/@types/vscode) they can import into their code.
51
+
52
+ [The VSCode api](https://code.visualstudio.com/api/references/vscode-api) exports:
53
+ - Some functions to interact with the IDE ([language feature registrations](https://code.visualstudio.com/api/references/vscode-api#languages), [command execution](https://code.visualstudio.com/api/references/vscode-api#commands)...)
54
+ - A lot of utility classes (Range, Position...)
55
+
56
+ The first implementations of [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient) were using a fake VSCode api implementation. The vscode-languageclient was hacked so the VSCode<->protocol object converters were mainly bypassed, so the fake VSCode api was receiving [Language Server Protocol](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/) objects. Then the objects were transformed using custom transformers into [Monaco](https://www.npmjs.com/package/monaco-editor) objects to communicate with the monaco api.
57
+
58
+ This approach has some disadvantages:
59
+ - There is a lot of code to transform LSP objects into Monaco objects
60
+ - It's hard to follow the updates of VSCode and the language server protocol
61
+ - It doesn't behave exactly the same as in VSCode
62
+
63
+ With this library, it would be possible to plug vscode-languageclient directly on top of monaco, monaco-languageclient still helps to do so by:
64
+ - Adding some tweaks to the VSCode LanguageClient (Removing unsupported features...)
65
+ - Providing a default implementations of the required fallback services (`vscode/services`)
66
+ - Providing some examples on how to build an app using it
67
+ - Adding some tools (DisposableCollection)
package/dist/api.amd.js CHANGED
@@ -8767,7 +8767,9 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
8767
8767
  },
8768
8768
  registerCodeLensProvider(documentSelector, provider) {
8769
8769
  const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
8770
- return monaco__namespace.languages.registerCodeLensProvider(documentSelector, {
8770
+ const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
8771
+ const monacoProvider = {
8772
+ onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
8771
8773
  provideCodeLenses: async (model, token) => {
8772
8774
  const listDto = await adapter.provideCodeLenses(model.uri, token);
8773
8775
  if (listDto == null) {
@@ -8781,7 +8783,8 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
8781
8783
  resolveCodeLens: (_model, codeLens, token) => {
8782
8784
  return adapter.resolveCodeLens(codeLens, token);
8783
8785
  }
8784
- });
8786
+ };
8787
+ return monaco__namespace.languages.registerCodeLensProvider(documentSelector, monacoProvider);
8785
8788
  },
8786
8789
  registerDefinitionProvider(documentSelector, provider) {
8787
8790
  const adapter = new DefinitionAdapter(extHostDocuments, provider);
@@ -8996,6 +8999,7 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
8996
8999
  const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
8997
9000
  return monaco__namespace.languages.registerDocumentSemanticTokensProvider(documentSelector, {
8998
9001
  getLegend: () => legend,
9002
+ onDidChange: provider.onDidChangeSemanticTokens,
8999
9003
  provideDocumentSemanticTokens: async (model, lastResultId, token) => {
9000
9004
  const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
9001
9005
  const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
@@ -9051,6 +9055,7 @@ define(['exports', 'monaco-editor/esm/vs/base/common/errors.js', 'monaco-editor/
9051
9055
  const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
9052
9056
  return monaco__namespace.languages.registerInlayHintsProvider(documentSelector, {
9053
9057
  displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
9058
+ onDidChangeInlayHints: provider.onDidChangeInlayHints,
9054
9059
  provideInlayHints: async (model, range, token) => {
9055
9060
  const result = await adapter.provideInlayHints(model.uri, range, token);
9056
9061
  if (result == null) {
package/dist/api.cjs CHANGED
@@ -8810,7 +8810,9 @@ const workspace$2 = {
8810
8810
  },
8811
8811
  registerCodeLensProvider(documentSelector, provider) {
8812
8812
  const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
8813
- return monaco__namespace.languages.registerCodeLensProvider(documentSelector, {
8813
+ const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
8814
+ const monacoProvider = {
8815
+ onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
8814
8816
  provideCodeLenses: async (model, token) => {
8815
8817
  const listDto = await adapter.provideCodeLenses(model.uri, token);
8816
8818
  if (listDto == null) {
@@ -8824,7 +8826,8 @@ const workspace$2 = {
8824
8826
  resolveCodeLens: (_model, codeLens, token) => {
8825
8827
  return adapter.resolveCodeLens(codeLens, token);
8826
8828
  }
8827
- });
8829
+ };
8830
+ return monaco__namespace.languages.registerCodeLensProvider(documentSelector, monacoProvider);
8828
8831
  },
8829
8832
  registerDefinitionProvider(documentSelector, provider) {
8830
8833
  const adapter = new DefinitionAdapter(extHostDocuments, provider);
@@ -9039,6 +9042,7 @@ const workspace$2 = {
9039
9042
  const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
9040
9043
  return monaco__namespace.languages.registerDocumentSemanticTokensProvider(documentSelector, {
9041
9044
  getLegend: () => legend,
9045
+ onDidChange: provider.onDidChangeSemanticTokens,
9042
9046
  provideDocumentSemanticTokens: async (model, lastResultId, token) => {
9043
9047
  const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
9044
9048
  const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
@@ -9094,6 +9098,7 @@ const workspace$2 = {
9094
9098
  const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
9095
9099
  return monaco__namespace.languages.registerInlayHintsProvider(documentSelector, {
9096
9100
  displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
9101
+ onDidChangeInlayHints: provider.onDidChangeInlayHints,
9097
9102
  provideInlayHints: async (model, range, token) => {
9098
9103
  const result = await adapter.provideInlayHints(model.uri, range, token);
9099
9104
  if (result == null) {
package/dist/api.js CHANGED
@@ -8788,7 +8788,9 @@ const workspace$2 = {
8788
8788
  },
8789
8789
  registerCodeLensProvider(documentSelector, provider) {
8790
8790
  const adapter = new CodeLensAdapter(extHostDocuments, extHostCommands.converter, provider);
8791
- return monaco.languages.registerCodeLensProvider(documentSelector, {
8791
+ const onDidChangeCodeLenses = provider.onDidChangeCodeLenses;
8792
+ const monacoProvider = {
8793
+ onDidChange: onDidChangeCodeLenses != null ? listener => onDidChangeCodeLenses(() => listener(monacoProvider)) : undefined,
8792
8794
  provideCodeLenses: async (model, token) => {
8793
8795
  const listDto = await adapter.provideCodeLenses(model.uri, token);
8794
8796
  if (listDto == null) {
@@ -8802,7 +8804,8 @@ const workspace$2 = {
8802
8804
  resolveCodeLens: (_model, codeLens, token) => {
8803
8805
  return adapter.resolveCodeLens(codeLens, token);
8804
8806
  }
8805
- });
8807
+ };
8808
+ return monaco.languages.registerCodeLensProvider(documentSelector, monacoProvider);
8806
8809
  },
8807
8810
  registerDefinitionProvider(documentSelector, provider) {
8808
8811
  const adapter = new DefinitionAdapter(extHostDocuments, provider);
@@ -9017,6 +9020,7 @@ const workspace$2 = {
9017
9020
  const adapter = new DocumentSemanticTokensAdapter(extHostDocuments, provider);
9018
9021
  return monaco.languages.registerDocumentSemanticTokensProvider(documentSelector, {
9019
9022
  getLegend: () => legend,
9023
+ onDidChange: provider.onDidChangeSemanticTokens,
9020
9024
  provideDocumentSemanticTokens: async (model, lastResultId, token) => {
9021
9025
  const nLastResultId = lastResultId != null ? parseInt(lastResultId, 10) : 0;
9022
9026
  const encodedDto = await adapter.provideDocumentSemanticTokens(model.uri, nLastResultId, token);
@@ -9072,6 +9076,7 @@ const workspace$2 = {
9072
9076
  const adapter = new InlayHintsAdapter(extHostDocuments, extHostCommands.converter, provider, extHostLogService, extensionDescription);
9073
9077
  return monaco.languages.registerInlayHintsProvider(documentSelector, {
9074
9078
  displayName: ExtHostLanguageFeatures._extLabel(extensionDescription),
9079
+ onDidChangeInlayHints: provider.onDidChangeInlayHints,
9075
9080
  provideInlayHints: async (model, range, token) => {
9076
9081
  const result = await adapter.provideInlayHints(model.uri, range, token);
9077
9082
  if (result == null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-api",
3
- "version": "1.68.2",
3
+ "version": "1.68.5",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor",
6
6
  "keywords": [],
@@ -53,9 +53,15 @@
53
53
  "scripts": {
54
54
  "build": "rm -rf dist/ && npm run lint && npm run compile && npm run generate-types",
55
55
  "compile": "rollup --config rollup/rollup.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}'",
56
- "preprepare": "./scripts/install-vscode",
56
+ "preprepare": "./scripts/install-vscode ${npm_package_config_vscode_version}",
57
57
  "lint": "eslint --ext ts src",
58
- "generate-types": "tsc --project tsconfig.types.json && rollup --config rollup/rollup.types.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}' && rm -rf ./dist/types"
58
+ "generate-types": "tsc --project tsconfig.types.json && rollup --config rollup/rollup.types.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup.json`}' && rm -rf ./dist/types",
59
+ "release": "node --loader ts-node/esm release.ts ${npm_package_config_vscode_version}"
60
+ },
61
+ "config": {
62
+ "vscode": {
63
+ "version": "1.68.0"
64
+ }
59
65
  },
60
66
  "devDependencies": {
61
67
  "@babel/core": "^7.18.2",
@@ -65,9 +71,11 @@
65
71
  "@babel/preset-typescript": "^7.17.12",
66
72
  "@codingame/eslint-config": "^1.1.2",
67
73
  "@codingame/tsconfig": "^1.0.5",
74
+ "@octokit/rest": "^18.12.0",
68
75
  "@rollup/plugin-node-resolve": "^13.3.0",
69
76
  "@rollup/plugin-typescript": "^8.3.2",
70
77
  "@types/babel__core": "^7.1.19",
78
+ "@types/semver": "^7.3.10",
71
79
  "@types/vscode": "^1.68.0",
72
80
  "@typescript-eslint/eslint-plugin": "^5.27.1",
73
81
  "@typescript-eslint/parser": "^5.27.1",
@@ -81,15 +89,14 @@
81
89
  "recast": "^0.21.1",
82
90
  "rollup": "^2.75.6",
83
91
  "rollup-plugin-dts": "^4.2.2",
84
- "typescript": "^4.7.3"
92
+ "semver": "^7.3.7",
93
+ "ts-node": "^10.8.1",
94
+ "typescript": "^4.7.3",
95
+ "zx": "^7.0.0"
85
96
  },
86
97
  "dependencies": {
87
98
  "monaco-editor": "^0.33.0"
88
99
  },
89
- "engines": {
90
- "node": ">=16.0.0",
91
- "npm": ">=7.10.0"
92
- },
93
100
  "volta": {
94
101
  "node": "16.15.0",
95
102
  "npm": "8.11.0"