mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-07-05 11:00:53 +00:00
use yaml-language-server's ESM and UMD modules; fix formatting
This commit is contained in:
parent
4dd5405431
commit
5b6cae33b2
13 changed files with 1356 additions and 1312 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,4 +2,3 @@
|
||||||
/out/
|
/out/
|
||||||
/lib/
|
/lib/
|
||||||
*.log
|
*.log
|
||||||
/src/languageservice
|
|
||||||
|
|
|
||||||
1
.prettierignore
Normal file
1
.prettierignore
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/lib/esm/_deps/
|
||||||
|
|
@ -23,7 +23,6 @@ See `examples` directory for esm and umd examples.
|
||||||
* `git clone https://github.com/pengx17/monaco-yaml`
|
* `git clone https://github.com/pengx17/monaco-yaml`
|
||||||
* `cd monaco-yaml`
|
* `cd monaco-yaml`
|
||||||
* `yarn`
|
* `yarn`
|
||||||
* open `$/monaco-yaml/demo/index.html` in your favorite browser.
|
|
||||||
|
|
||||||
A running example:
|
A running example:
|
||||||

|

|
||||||
|
|
@ -31,12 +30,5 @@ A running example:
|
||||||
## Credits
|
## Credits
|
||||||
- https://github.com/redhat-developer/yaml-language-server
|
- https://github.com/redhat-developer/yaml-language-server
|
||||||
|
|
||||||
### Maintain
|
|
||||||
Manually clone dependencies list below and update the project files accordingly:
|
|
||||||
- `src/languageservice`: https://github.com/redhat-developer/yaml-language-server
|
|
||||||
- `cp yaml-language-server/src/languageservice monaco-yaml/src/languageservice`
|
|
||||||
- Modify the import paths, go to the test page and see if it still works
|
|
||||||
- `src/yaml-ast-parser-custom-tags`: https://github.com/JPinkney/yaml-ast-parser/tree/master/src
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
[MIT](https://github.com/pengx17/monaco-yaml/blob/master/LICENSE.md)
|
[MIT](https://github.com/pengx17/monaco-yaml/blob/master/LICENSE.md)
|
||||||
|
|
|
||||||
22
package.json
22
package.json
|
|
@ -11,7 +11,7 @@
|
||||||
"bundle:umd": "node ./scripts/bundle-umd",
|
"bundle:umd": "node ./scripts/bundle-umd",
|
||||||
"bundle:esm": "node ./scripts/bundle-esm",
|
"bundle:esm": "node ./scripts/bundle-esm",
|
||||||
"build": "yarn compile && yarn bundle",
|
"build": "yarn compile && yarn bundle",
|
||||||
"prepare": "patch-package &&yarn build",
|
"prepare": "yarn build",
|
||||||
"lint": "prettier \"{src,test}/**/*.{json,scss,html,ts}\" --write",
|
"lint": "prettier \"{src,test}/**/*.{json,scss,html,ts}\" --write",
|
||||||
"test": "jest --verbose"
|
"test": "jest --verbose"
|
||||||
},
|
},
|
||||||
|
|
@ -34,32 +34,26 @@
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/pengx17/monaco-yaml/issues"
|
"url": "https://github.com/pengx17/monaco-yaml/issues"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
|
||||||
"prettier": "^1.19.1"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"yaml-language-server": "^0.9.0"
|
"yaml-language-server": "^0.11.0"
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"monaco-editor": "^0.20.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^23.3.10",
|
"@types/jest": "^23.3.10",
|
||||||
"@types/node": "^10.9.3",
|
"@types/node": "^12.12.6",
|
||||||
"husky": "^1.2.1",
|
"husky": "^1.2.1",
|
||||||
"jest": "^23.6.0",
|
"jest": "^23.6.0",
|
||||||
"lint-staged": "^8.1.0",
|
"lint-staged": "^10.1.2",
|
||||||
"monaco-editor": "^0.20.0",
|
"monaco-editor": "^0.20.0",
|
||||||
"monaco-editor-core": "^0.20.0",
|
"monaco-editor-core": "^0.20.0",
|
||||||
"monaco-languages": "^1.10.0",
|
"monaco-languages": "^1.10.0",
|
||||||
"monaco-plugin-helpers": "^1.0.3",
|
"monaco-plugin-helpers": "^1.0.3",
|
||||||
"patch-package": "^6.2.2",
|
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^1.19.1",
|
||||||
"request-light": "^0.2.5",
|
"requirejs": "^2.3.6",
|
||||||
"requirejs": "^2.3.5",
|
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"ts-jest": "^23.10.5",
|
"ts-jest": "^23.10.5",
|
||||||
"typescript": "^3.7.4",
|
"typescript": "^3.8.3",
|
||||||
|
"typescript-tslint-plugin": "^0.5.5",
|
||||||
|
"eslint": "^6.8.0",
|
||||||
"uglify-es": "^3.3.9"
|
"uglify-es": "^3.3.9"
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/node_modules/monaco-plugin-helpers/lib/packageESM.js b/node_modules/monaco-plugin-helpers/lib/packageESM.js
|
|
||||||
index 3c333a4..ebec9d2 100644
|
|
||||||
--- a/node_modules/monaco-plugin-helpers/lib/packageESM.js
|
|
||||||
+++ b/node_modules/monaco-plugin-helpers/lib/packageESM.js
|
|
||||||
@@ -79,7 +79,7 @@ function _packageESM(options) {
|
|
||||||
while (queue.length > 0) {
|
|
||||||
var filePath = queue.shift();
|
|
||||||
var fileContents = fs.readFileSync(filePath).toString();
|
|
||||||
- var info = ts.preProcessFile(fileContents);
|
|
||||||
+ var info = ts.preProcessFile(fileContents,true,true);
|
|
||||||
for (var i = info.importedFiles.length - 1; i >= 0; i--) {
|
|
||||||
var importText = info.importedFiles[i].fileName;
|
|
||||||
if (shouldSkipImport(importText)) {
|
|
||||||
|
|
@ -35,22 +35,32 @@ helpers.packageESM({
|
||||||
REPO_ROOT,
|
REPO_ROOT,
|
||||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonSchemaService.js'
|
'node_modules/vscode-json-languageservice/lib/esm/services/jsonSchemaService.js'
|
||||||
),
|
),
|
||||||
'yaml-language-server/out/server/src/languageservice/yamlLanguageService': path.join(
|
|
||||||
|
'vscode-json-languageservice/lib/umd/services/jsonCompletion': path.join(
|
||||||
REPO_ROOT,
|
REPO_ROOT,
|
||||||
'node_modules/yaml-language-server/out/server/src/languageservice/yamlLanguageService.js'
|
'node_modules/vscode-json-languageservice/lib/esm/services/jsonCompletion.js'
|
||||||
),
|
),
|
||||||
'vscode-json-languageservice/lib/umd/services/jsonDefinition': path.join(
|
'vscode-json-languageservice/lib/umd/services/jsonDefinition': path.join(
|
||||||
REPO_ROOT,
|
REPO_ROOT,
|
||||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonDefinition.js'
|
'node_modules/vscode-json-languageservice/lib/esm/services/jsonDefinition.js'
|
||||||
),
|
),
|
||||||
'vscode-json-languageservice/lib/umd/services/jsonCompletion': path.join(
|
'yaml-language-server': path.join(
|
||||||
REPO_ROOT,
|
REPO_ROOT,
|
||||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonCompletion.js'
|
'node_modules/yaml-language-server/lib/esm/languageservice/yamlLanguageService.js'
|
||||||
|
),
|
||||||
|
prettier: path.join(REPO_ROOT, 'node_modules/prettier/standalone.js'),
|
||||||
|
'prettier/parser-yaml': path.join(
|
||||||
|
REPO_ROOT,
|
||||||
|
'node_modules/prettier/parser-yaml.js'
|
||||||
),
|
),
|
||||||
buffer: path.join(REPO_ROOT, 'out/esm/fillers/buffer.js'),
|
|
||||||
prettier: path.join(REPO_ROOT, 'out/esm/fillers/prettier.js'),
|
|
||||||
},
|
},
|
||||||
resolveSkip: ['monaco-editor', 'monaco-editor-core', 'js-yaml', 'prettier/standalone', 'prettier/parser-yaml'],
|
resolveSkip: [
|
||||||
|
'monaco-editor',
|
||||||
|
'monaco-editor-core',
|
||||||
|
'js-yaml',
|
||||||
|
|
||||||
|
'yaml-ast-parser-custom-tags',
|
||||||
|
],
|
||||||
destinationFolderSimplification: {
|
destinationFolderSimplification: {
|
||||||
node_modules: '_deps',
|
node_modules: '_deps',
|
||||||
'jsonc-parser/lib/esm': 'jsonc-parser',
|
'jsonc-parser/lib/esm': 'jsonc-parser',
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
const requirejs = require('requirejs');
|
const requirejs = require('requirejs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const UglifyES = require('uglify-es');
|
const uglifyES = require('uglify-es');
|
||||||
const helpers = require('monaco-plugin-helpers');
|
const helpers = require('monaco-plugin-helpers');
|
||||||
|
|
||||||
const REPO_ROOT = path.resolve(__dirname, '..');
|
const REPO_ROOT = path.resolve(__dirname, '..');
|
||||||
|
|
@ -33,47 +33,9 @@ function bundleOne(moduleId, exclude) {
|
||||||
exclude: exclude,
|
exclude: exclude,
|
||||||
paths: {
|
paths: {
|
||||||
'vs/language/yaml': REPO_ROOT + '/out/amd',
|
'vs/language/yaml': REPO_ROOT + '/out/amd',
|
||||||
'yaml-language-server/out/server/src/languageservice/yamlLanguageService':
|
|
||||||
REPO_ROOT +
|
|
||||||
'/node_modules/yaml-language-server/out/server/src/languageservice/yamlLanguageService',
|
|
||||||
},
|
},
|
||||||
optimize: 'none',
|
optimize: 'none',
|
||||||
packages: [
|
packages: [
|
||||||
{
|
|
||||||
name: 'js-yaml',
|
|
||||||
location: path.join(REPO_ROOT, 'node_modules/js-yaml/dist'),
|
|
||||||
main: 'js-yaml',
|
|
||||||
},
|
|
||||||
// The following is required by YAML language service
|
|
||||||
{
|
|
||||||
name: 'vscode-json-languageservice',
|
|
||||||
location: path.join(
|
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/vscode-json-languageservice'
|
|
||||||
),
|
|
||||||
main: 'lib/umd/jsonLanguageService',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'vscode-languageserver-textdocument',
|
|
||||||
location: path.join(
|
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/vscode-languageserver-textdocument'
|
|
||||||
),
|
|
||||||
main: 'lib/umd/main',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'yaml-ast-parser-custom-tags',
|
|
||||||
location: path.join(
|
|
||||||
REPO_ROOT,
|
|
||||||
'node_modules/yaml-ast-parser-custom-tags'
|
|
||||||
),
|
|
||||||
main: 'dist/src/index',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'jsonc-parser',
|
|
||||||
location: path.join(REPO_ROOT, 'node_modules/jsonc-parser/lib/umd'),
|
|
||||||
main: 'main',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'vscode-languageserver-types',
|
name: 'vscode-languageserver-types',
|
||||||
location: path.join(
|
location: path.join(
|
||||||
|
|
@ -83,15 +45,13 @@ function bundleOne(moduleId, exclude) {
|
||||||
main: 'main',
|
main: 'main',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'vscode-uri',
|
name: 'yaml-language-server',
|
||||||
location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
|
location: path.join(
|
||||||
|
REPO_ROOT,
|
||||||
|
'node_modules/yaml-language-server/out/server/src'
|
||||||
|
),
|
||||||
main: 'index',
|
main: 'index',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: 'vscode-nls',
|
|
||||||
location: path.join(REPO_ROOT, '/out/amd/fillers'),
|
|
||||||
main: 'vscode-nls',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
function() {
|
function() {
|
||||||
|
|
@ -100,7 +60,7 @@ function bundleOne(moduleId, exclude) {
|
||||||
const fileContents = fs.readFileSync(devFilePath).toString();
|
const fileContents = fs.readFileSync(devFilePath).toString();
|
||||||
console.log();
|
console.log();
|
||||||
console.log(`Minifying ${devFilePath}...`);
|
console.log(`Minifying ${devFilePath}...`);
|
||||||
const result = UglifyES.minify(fileContents, {
|
const result = uglifyES.minify(fileContents, {
|
||||||
output: {
|
output: {
|
||||||
comments: 'some',
|
comments: 'some',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export const Buffer = null;
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
const prettier = require('prettier/standalone');
|
|
||||||
const parser = require('prettier/parser-yaml');
|
|
||||||
|
|
||||||
export default {
|
|
||||||
format(text: string, options) {
|
|
||||||
prettier.format(text, Object.assign(options, { plugins: [parser] }));
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
@ -16,7 +16,7 @@ import IRange = monaco.IRange;
|
||||||
import Thenable = monaco.Thenable;
|
import Thenable = monaco.Thenable;
|
||||||
import CancellationToken = monaco.CancellationToken;
|
import CancellationToken = monaco.CancellationToken;
|
||||||
import IDisposable = monaco.IDisposable;
|
import IDisposable = monaco.IDisposable;
|
||||||
import { CustomFormatterOptions } from 'yaml-language-server/out/server/src/languageservice/yamlLanguageService';
|
import { CustomFormatterOptions } from 'yaml-language-server';
|
||||||
|
|
||||||
export type WorkerAccessor = (...more: Uri[]) => Thenable<YAMLWorker>;
|
export type WorkerAccessor = (...more: Uri[]) => Thenable<YAMLWorker>;
|
||||||
|
|
||||||
|
|
@ -305,7 +305,6 @@ export class CompletionAdapter
|
||||||
context: monaco.languages.CompletionContext,
|
context: monaco.languages.CompletionContext,
|
||||||
token: CancellationToken
|
token: CancellationToken
|
||||||
): Thenable<monaco.languages.CompletionList> {
|
): Thenable<monaco.languages.CompletionList> {
|
||||||
const wordInfo = model.getWordUntilPosition(position);
|
|
||||||
const resource = model.uri;
|
const resource = model.uri;
|
||||||
|
|
||||||
return this._worker(resource)
|
return this._worker(resource)
|
||||||
|
|
@ -316,6 +315,15 @@ export class CompletionAdapter
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wordInfo = model.getWordUntilPosition(position);
|
||||||
|
const wordRange = new Range(
|
||||||
|
position.lineNumber,
|
||||||
|
wordInfo.startColumn,
|
||||||
|
position.lineNumber,
|
||||||
|
wordInfo.endColumn
|
||||||
|
);
|
||||||
|
|
||||||
const items: monaco.languages.CompletionItem[] = info.items.map(
|
const items: monaco.languages.CompletionItem[] = info.items.map(
|
||||||
entry => {
|
entry => {
|
||||||
const item: monaco.languages.CompletionItem = {
|
const item: monaco.languages.CompletionItem = {
|
||||||
|
|
@ -326,11 +334,7 @@ export class CompletionAdapter
|
||||||
documentation: entry.documentation,
|
documentation: entry.documentation,
|
||||||
detail: entry.detail,
|
detail: entry.detail,
|
||||||
kind: toCompletionItemKind(entry.kind),
|
kind: toCompletionItemKind(entry.kind),
|
||||||
range: {
|
range: wordRange,
|
||||||
startLineNumber: position.lineNumber,
|
|
||||||
endLineNumber: position.lineNumber,
|
|
||||||
...wordInfo,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
if (entry.textEdit) {
|
if (entry.textEdit) {
|
||||||
item.range = toRange(entry.textEdit.range);
|
item.range = toRange(entry.textEdit.range);
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
import { NotificationType, RequestType } from 'vscode-languageserver';
|
|
||||||
|
|
||||||
export namespace SchemaAssociationNotification {
|
|
||||||
export const type: NotificationType<{}, {}> = new NotificationType(
|
|
||||||
'json/schemaAssociations'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace DynamicCustomSchemaRequestRegistration {
|
|
||||||
export const type: NotificationType<{}, {}> = new NotificationType(
|
|
||||||
'yaml/registerCustomSchemaRequest'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace VSCodeContentRequest {
|
|
||||||
export const type: RequestType<{}, {}, {}, {}> = new RequestType(
|
|
||||||
'vscode/content'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace CustomSchemaContentRequest {
|
|
||||||
export const type: RequestType<{}, {}, {}, {}> = new RequestType(
|
|
||||||
'custom/schema/content'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace CustomSchemaRequest {
|
|
||||||
export const type: RequestType<{}, {}, {}, {}> = new RequestType(
|
|
||||||
'custom/schema/request'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace ColorSymbolRequest {
|
|
||||||
export const type: RequestType<{}, {}, {}, {}> = new RequestType(
|
|
||||||
'json/colorSymbols'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -10,7 +10,7 @@ import Thenable = monaco.Thenable;
|
||||||
import IWorkerContext = monaco.worker.IWorkerContext;
|
import IWorkerContext = monaco.worker.IWorkerContext;
|
||||||
|
|
||||||
import * as ls from 'vscode-languageserver-types';
|
import * as ls from 'vscode-languageserver-types';
|
||||||
import * as yamlService from 'yaml-language-server/out/server/src/languageservice/yamlLanguageService';
|
import * as yamlService from 'yaml-language-server';
|
||||||
|
|
||||||
let defaultSchemaRequestService;
|
let defaultSchemaRequestService;
|
||||||
if (typeof fetch !== 'undefined') {
|
if (typeof fetch !== 'undefined') {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue