use yaml-language-server's ESM and UMD modules; fix formatting

This commit is contained in:
apimastery 2020-09-20 21:23:48 -05:00
parent 4dd5405431
commit 5b6cae33b2
13 changed files with 1356 additions and 1312 deletions

1
.gitignore vendored
View file

@ -2,4 +2,3 @@
/out/
/lib/
*.log
/src/languageservice

1
.prettierignore Normal file
View file

@ -0,0 +1 @@
/lib/esm/_deps/

View file

@ -23,7 +23,6 @@ See `examples` directory for esm and umd examples.
* `git clone https://github.com/pengx17/monaco-yaml`
* `cd monaco-yaml`
* `yarn`
* open `$/monaco-yaml/demo/index.html` in your favorite browser.
A running example:
![demo-image](test-demo.png)
@ -31,12 +30,5 @@ A running example:
## Credits
- 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
[MIT](https://github.com/pengx17/monaco-yaml/blob/master/LICENSE.md)

View file

@ -11,7 +11,7 @@
"bundle:umd": "node ./scripts/bundle-umd",
"bundle:esm": "node ./scripts/bundle-esm",
"build": "yarn compile && yarn bundle",
"prepare": "patch-package &&yarn build",
"prepare": "yarn build",
"lint": "prettier \"{src,test}/**/*.{json,scss,html,ts}\" --write",
"test": "jest --verbose"
},
@ -34,32 +34,26 @@
"bugs": {
"url": "https://github.com/pengx17/monaco-yaml/issues"
},
"optionalDependencies": {
"prettier": "^1.19.1"
},
"dependencies": {
"yaml-language-server": "^0.9.0"
},
"peerDependencies": {
"monaco-editor": "^0.20.0"
"yaml-language-server": "^0.11.0"
},
"devDependencies": {
"@types/jest": "^23.3.10",
"@types/node": "^10.9.3",
"@types/node": "^12.12.6",
"husky": "^1.2.1",
"jest": "^23.6.0",
"lint-staged": "^8.1.0",
"lint-staged": "^10.1.2",
"monaco-editor": "^0.20.0",
"monaco-editor-core": "^0.20.0",
"monaco-languages": "^1.10.0",
"monaco-plugin-helpers": "^1.0.3",
"patch-package": "^6.2.2",
"prettier": "^1.19.1",
"request-light": "^0.2.5",
"requirejs": "^2.3.5",
"requirejs": "^2.3.6",
"rimraf": "^2.6.2",
"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"
},
"prettier": {

View file

@ -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)) {

View file

@ -35,22 +35,32 @@ helpers.packageESM({
REPO_ROOT,
'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,
'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(
REPO_ROOT,
'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,
'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: {
node_modules: '_deps',
'jsonc-parser/lib/esm': 'jsonc-parser',

View file

@ -1,7 +1,7 @@
const requirejs = require('requirejs');
const path = require('path');
const fs = require('fs');
const UglifyES = require('uglify-es');
const uglifyES = require('uglify-es');
const helpers = require('monaco-plugin-helpers');
const REPO_ROOT = path.resolve(__dirname, '..');
@ -33,47 +33,9 @@ function bundleOne(moduleId, exclude) {
exclude: exclude,
paths: {
'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',
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',
location: path.join(
@ -83,15 +45,13 @@ function bundleOne(moduleId, exclude) {
main: 'main',
},
{
name: 'vscode-uri',
location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
name: 'yaml-language-server',
location: path.join(
REPO_ROOT,
'node_modules/yaml-language-server/out/server/src'
),
main: 'index',
},
{
name: 'vscode-nls',
location: path.join(REPO_ROOT, '/out/amd/fillers'),
main: 'vscode-nls',
},
],
},
function() {
@ -100,7 +60,7 @@ function bundleOne(moduleId, exclude) {
const fileContents = fs.readFileSync(devFilePath).toString();
console.log();
console.log(`Minifying ${devFilePath}...`);
const result = UglifyES.minify(fileContents, {
const result = uglifyES.minify(fileContents, {
output: {
comments: 'some',
},

View file

@ -1 +0,0 @@
export const Buffer = null;

View file

@ -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] }));
},
};

View file

@ -16,7 +16,7 @@ import IRange = monaco.IRange;
import Thenable = monaco.Thenable;
import CancellationToken = monaco.CancellationToken;
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>;
@ -305,7 +305,6 @@ export class CompletionAdapter
context: monaco.languages.CompletionContext,
token: CancellationToken
): Thenable<monaco.languages.CompletionList> {
const wordInfo = model.getWordUntilPosition(position);
const resource = model.uri;
return this._worker(resource)
@ -316,6 +315,15 @@ export class CompletionAdapter
if (!info) {
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(
entry => {
const item: monaco.languages.CompletionItem = {
@ -326,11 +334,7 @@ export class CompletionAdapter
documentation: entry.documentation,
detail: entry.detail,
kind: toCompletionItemKind(entry.kind),
range: {
startLineNumber: position.lineNumber,
endLineNumber: position.lineNumber,
...wordInfo,
},
range: wordRange,
};
if (entry.textEdit) {
item.range = toRange(entry.textEdit.range);

View file

@ -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'
);
}

View file

@ -10,7 +10,7 @@ import Thenable = monaco.Thenable;
import IWorkerContext = monaco.worker.IWorkerContext;
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;
if (typeof fetch !== 'undefined') {

2479
yarn.lock

File diff suppressed because it is too large Load diff