mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-06-19 06:21:04 +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/
|
||||
/lib/
|
||||
*.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`
|
||||
* `cd monaco-yaml`
|
||||
* `yarn`
|
||||
* open `$/monaco-yaml/demo/index.html` in your favorite browser.
|
||||
|
||||
A running example:
|
||||

|
||||
|
|
@ -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)
|
||||
|
|
|
|||
22
package.json
22
package.json
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
'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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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 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);
|
||||
|
|
|
|||
|
|
@ -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 * 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') {
|
||||
|
|
|
|||
Loading…
Reference in a new issue