mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-07-06 19:40:55 +00:00
Merge pull request #126 from remcohaszing/update-dependencies
Update dependencies
This commit is contained in:
commit
545e6a6bc4
12 changed files with 2750 additions and 11715 deletions
|
|
@ -16,6 +16,7 @@ files:
|
||||||
- Document Symbols
|
- Document Symbols
|
||||||
- Automatically load remote schema files (by enabling DiagnosticsOptions.enableSchemaRequest)
|
- Automatically load remote schema files (by enabling DiagnosticsOptions.enableSchemaRequest)
|
||||||
- Links from JSON references.
|
- Links from JSON references.
|
||||||
|
- Links and hover effects from YAML anchors.
|
||||||
|
|
||||||
Schemas can also be provided by configuration. See
|
Schemas can also be provided by configuration. See
|
||||||
[here](https://github.com/remcohaszing/monaco-yaml/blob/main/index.d.ts) for the API that the plugin
|
[here](https://github.com/remcohaszing/monaco-yaml/blob/main/index.d.ts) for the API that the plugin
|
||||||
|
|
|
||||||
4
build.js
4
build.js
|
|
@ -28,13 +28,13 @@ fs.rm(join(__dirname, 'lib'), { force: true, recursive: true })
|
||||||
}));
|
}));
|
||||||
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
||||||
// vscode-languageserver.
|
// vscode-languageserver.
|
||||||
onResolve({ filter: /^vscode-languageserver$/ }, () => ({
|
onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({
|
||||||
path: 'vscode-languageserver-types/lib/esm/main.js',
|
path: 'vscode-languageserver-types/lib/esm/main.js',
|
||||||
external: true,
|
external: true,
|
||||||
}));
|
}));
|
||||||
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
||||||
// vscode-languageserver.
|
// vscode-languageserver.
|
||||||
onResolve({ filter: /^vscode-languageserver-types$/ }, () => ({
|
onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({
|
||||||
path: 'vscode-languageserver-types/lib/esm/main.js',
|
path: 'vscode-languageserver-types/lib/esm/main.js',
|
||||||
external: true,
|
external: true,
|
||||||
}));
|
}));
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,6 @@ const defaultSchema: SchemasSettings = {
|
||||||
};
|
};
|
||||||
|
|
||||||
setDiagnosticsOptions({
|
setDiagnosticsOptions({
|
||||||
validate: true,
|
|
||||||
enableSchemaRequest: true,
|
|
||||||
format: true,
|
|
||||||
hover: true,
|
|
||||||
completion: true,
|
|
||||||
schemas: [defaultSchema],
|
schemas: [defaultSchema],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -100,6 +95,14 @@ pointer:
|
||||||
$ref: '#/array'
|
$ref: '#/array'
|
||||||
|
|
||||||
|
|
||||||
|
# This anchor can be referenced
|
||||||
|
anchorRef: &anchor can be clicked as well
|
||||||
|
|
||||||
|
|
||||||
|
# Press control while hovering over the anchor
|
||||||
|
anchorPointer: *anchor
|
||||||
|
|
||||||
|
|
||||||
formatting: Formatting is supported too! Under the hood this is powered by Prettier. Just press Ctrl+Shift+I or right click and press Format to format this document.
|
formatting: Formatting is supported too! Under the hood this is powered by Prettier. Just press Ctrl+Shift+I or right click and press Format to format this document.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
1
examples/demo/src/types.d.ts
vendored
1
examples/demo/src/types.d.ts
vendored
|
|
@ -6,7 +6,6 @@ declare module 'monaco-editor/esm/vs/base/common/cancellation' {
|
||||||
|
|
||||||
declare module 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols' {
|
declare module 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols' {
|
||||||
import { ITextModel, languages } from 'monaco-editor';
|
import { ITextModel, languages } from 'monaco-editor';
|
||||||
// eslint-disable-next-line import/order
|
|
||||||
import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation';
|
import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation';
|
||||||
|
|
||||||
export function getDocumentSymbols(
|
export function getDocumentSymbols(
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,6 @@ module.exports = {
|
||||||
devtool: 'source-map',
|
devtool: 'source-map',
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.mjs', '.js', '.ts'],
|
extensions: ['.mjs', '.js', '.ts'],
|
||||||
fallback: {
|
|
||||||
// Yaml-ast-parser-custom-tags imports buffer. This can be omitted safely.
|
|
||||||
buffer: false,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
|
|
||||||
78
index.d.ts
vendored
78
index.d.ts
vendored
|
|
@ -29,44 +29,76 @@ declare module 'monaco-editor/esm/vs/editor/editor.api' {
|
||||||
export interface DiagnosticsOptions {
|
export interface DiagnosticsOptions {
|
||||||
/**
|
/**
|
||||||
* If set, enable schema based autocompletion.
|
* If set, enable schema based autocompletion.
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
*/
|
*/
|
||||||
readonly completion?: boolean;
|
readonly completion?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of custom tags.
|
||||||
|
*
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
readonly customTags?: string[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set, the schema service would load schema content on-demand with 'fetch' if available
|
||||||
|
*
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
readonly enableSchemaRequest?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, formatting using Prettier is enabled. Setting this to `false` does **not** exclude
|
||||||
|
* Prettier from the bundle.
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
readonly format?: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If set, enable hover typs based the JSON schema.
|
* If set, enable hover typs based the JSON schema.
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
*/
|
*/
|
||||||
readonly hover?: boolean;
|
readonly hover?: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If set, the validator will be enabled and perform syntax validation as well as schema
|
* If true, a different diffing algorithm is used to generate error messages.
|
||||||
* based validation.
|
*
|
||||||
*/
|
* @default false
|
||||||
readonly validate?: boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A list of known schemas and/or associations of schemas to file names.
|
|
||||||
*/
|
|
||||||
readonly schemas?: SchemasSettings[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If set, the schema service would load schema content on-demand with 'fetch' if available
|
|
||||||
*/
|
|
||||||
readonly enableSchemaRequest?: boolean;
|
|
||||||
/**
|
|
||||||
* If specified, this prefix will be added to all on demand schema requests
|
|
||||||
*/
|
|
||||||
readonly prefix?: string;
|
|
||||||
/**
|
|
||||||
* Whether or not kubernetes yaml is supported
|
|
||||||
*/
|
*/
|
||||||
readonly isKubernetes?: boolean;
|
readonly isKubernetes?: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of custom tags.
|
* If specified, this prefix will be added to all on demand schema requests
|
||||||
|
*
|
||||||
|
* @default undefined
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
readonly customTags?: string[];
|
readonly prefix?: string;
|
||||||
|
|
||||||
readonly format?: boolean;
|
/**
|
||||||
|
* A list of known schemas and/or associations of schemas to file names.
|
||||||
|
*
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
readonly schemas?: SchemasSettings[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If set, the validator will be enabled and perform syntax validation as well as schema
|
||||||
|
* based validation.
|
||||||
|
*
|
||||||
|
* @default true
|
||||||
|
*/
|
||||||
|
readonly validate?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The YAML version to use for parsing.
|
||||||
|
*
|
||||||
|
* @default '1.2'
|
||||||
|
*/
|
||||||
|
readonly yamlVersion?: '1.1' | '1.2';
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LanguageServiceDefaults {
|
export interface LanguageServiceDefaults {
|
||||||
|
|
|
||||||
14290
package-lock.json
generated
14290
package-lock.json
generated
File diff suppressed because it is too large
Load diff
13
package.json
13
package.json
|
|
@ -39,28 +39,27 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.0",
|
"@types/json-schema": "^7.0.0",
|
||||||
"js-yaml": "^4.0.0",
|
"jsonc-parser": "^3.0.0",
|
||||||
"path-browserify": "^1.0.0",
|
"path-browserify": "^1.0.0",
|
||||||
"prettier": "2.0.5",
|
"prettier": "2.0.5",
|
||||||
"vscode-languageserver-textdocument": "^1.0.0",
|
"vscode-languageserver-textdocument": "^1.0.0",
|
||||||
"vscode-languageserver-types": "^3.0.0",
|
"vscode-languageserver-types": "^3.0.0",
|
||||||
"yaml-language-server-parser": "^0.1.0"
|
"yaml": "2.0.0-8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"monaco-editor": ">=0.30"
|
"monaco-editor": ">=0.30"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
||||||
"@typescript-eslint/parser": "^4.0.0",
|
"esbuild": "^0.13.0",
|
||||||
"esbuild": "^0.12.0",
|
|
||||||
"eslint": "^7.0.0",
|
"eslint": "^7.0.0",
|
||||||
"eslint-config-remcohaszing": "^3.0.0",
|
"eslint-config-remcohaszing": "^3.0.0",
|
||||||
"husky": "^7.0.0",
|
"husky": "^7.0.0",
|
||||||
"lint-staged": "^11.0.0",
|
"lint-staged": "^12.0.0",
|
||||||
"monaco-editor": "^0.30.0",
|
"monaco-editor": "^0.30.0",
|
||||||
"type-fest": "^2.0.0",
|
"type-fest": "^2.0.0",
|
||||||
"typescript": "^4.0.0",
|
"typescript": "^4.0.0",
|
||||||
"yaml-language-server": "^0.22.0"
|
"yaml-language-server": "^1.0.0"
|
||||||
},
|
},
|
||||||
"resolutions": {},
|
"resolutions": {},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,26 @@ export function createCompletionItemProvider(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- definition ------
|
||||||
|
|
||||||
|
export function createDefinitionProvider(getWorker: WorkerAccessor): languages.DefinitionProvider {
|
||||||
|
return {
|
||||||
|
async provideDefinition(model, position) {
|
||||||
|
const resource = model.uri;
|
||||||
|
|
||||||
|
const worker = await getWorker(resource);
|
||||||
|
const definitions = await worker.doDefinition(String(resource), fromPosition(position));
|
||||||
|
|
||||||
|
return definitions?.map((definition) => ({
|
||||||
|
originSelectionRange: definition.originSelectionRange,
|
||||||
|
range: toRange(definition.targetRange),
|
||||||
|
targetSelectionRange: definition.targetSelectionRange,
|
||||||
|
uri: Uri.parse(definition.targetUri),
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// --- hover ------
|
// --- hover ------
|
||||||
|
|
||||||
export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider {
|
export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,18 @@ import { setupMode } from './yamlMode';
|
||||||
|
|
||||||
// --- YAML configuration and defaults ---------
|
// --- YAML configuration and defaults ---------
|
||||||
|
|
||||||
|
const diagnosticDefault: languages.yaml.DiagnosticsOptions = {
|
||||||
|
completion: true,
|
||||||
|
customTags: [],
|
||||||
|
enableSchemaRequest: false,
|
||||||
|
format: true,
|
||||||
|
isKubernetes: false,
|
||||||
|
hover: true,
|
||||||
|
schemas: [],
|
||||||
|
validate: true,
|
||||||
|
yamlVersion: '1.2',
|
||||||
|
};
|
||||||
|
|
||||||
export function createLanguageServiceDefaults(
|
export function createLanguageServiceDefaults(
|
||||||
initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions,
|
initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions,
|
||||||
): languages.yaml.LanguageServiceDefaults {
|
): languages.yaml.LanguageServiceDefaults {
|
||||||
|
|
@ -25,7 +37,7 @@ export function createLanguageServiceDefaults(
|
||||||
},
|
},
|
||||||
|
|
||||||
setDiagnosticsOptions(options) {
|
setDiagnosticsOptions(options) {
|
||||||
diagnosticsOptions = options || {};
|
diagnosticsOptions = { ...diagnosticDefault, ...options };
|
||||||
onDidChange.fire(languageServiceDefaults);
|
onDidChange.fire(languageServiceDefaults);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -33,12 +45,6 @@ export function createLanguageServiceDefaults(
|
||||||
return languageServiceDefaults;
|
return languageServiceDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
const diagnosticDefault: languages.yaml.DiagnosticsOptions = {
|
|
||||||
validate: true,
|
|
||||||
schemas: [],
|
|
||||||
enableSchemaRequest: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
const yamlDefaults = createLanguageServiceDefaults(diagnosticDefault);
|
const yamlDefaults = createLanguageServiceDefaults(diagnosticDefault);
|
||||||
|
|
||||||
// Export API
|
// Export API
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import { languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||||
import { languageId } from './constants';
|
import { languageId } from './constants';
|
||||||
import {
|
import {
|
||||||
createCompletionItemProvider,
|
createCompletionItemProvider,
|
||||||
|
createDefinitionProvider,
|
||||||
createDiagnosticsAdapter,
|
createDiagnosticsAdapter,
|
||||||
createDocumentFormattingEditProvider,
|
createDocumentFormattingEditProvider,
|
||||||
createDocumentSymbolProvider,
|
createDocumentSymbolProvider,
|
||||||
|
|
@ -48,6 +49,7 @@ export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): voi
|
||||||
|
|
||||||
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker));
|
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker));
|
||||||
languages.registerHoverProvider(languageId, createHoverProvider(worker));
|
languages.registerHoverProvider(languageId, createHoverProvider(worker));
|
||||||
|
languages.registerDefinitionProvider(languageId, createDefinitionProvider(worker));
|
||||||
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker));
|
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker));
|
||||||
languages.registerDocumentFormattingEditProvider(
|
languages.registerDocumentFormattingEditProvider(
|
||||||
languageId,
|
languageId,
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ export interface YAMLWorker {
|
||||||
|
|
||||||
doComplete: (uri: string, position: ls.Position) => Promisable<ls.CompletionList>;
|
doComplete: (uri: string, position: ls.Position) => Promisable<ls.CompletionList>;
|
||||||
|
|
||||||
|
doDefinition: (uri: string, position: ls.Position) => Promisable<ls.LocationLink[]>;
|
||||||
|
|
||||||
doHover: (uri: string, position: ls.Position) => Promisable<ls.Hover>;
|
doHover: (uri: string, position: ls.Position) => Promisable<ls.Hover>;
|
||||||
|
|
||||||
format: (uri: string, options: CustomFormatterOptions) => Promisable<ls.TextEdit[]>;
|
format: (uri: string, options: CustomFormatterOptions) => Promisable<ls.TextEdit[]>;
|
||||||
|
|
@ -34,15 +36,11 @@ export interface YAMLWorker {
|
||||||
|
|
||||||
export function createYAMLWorker(
|
export function createYAMLWorker(
|
||||||
ctx: worker.IWorkerContext,
|
ctx: worker.IWorkerContext,
|
||||||
{ enableSchemaRequest, isKubernetes = false, languageSettings, prefix = '' }: ICreateData,
|
{ enableSchemaRequest, languageSettings, prefix = '' }: ICreateData,
|
||||||
): YAMLWorker {
|
): YAMLWorker {
|
||||||
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
||||||
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
||||||
languageService.configure({
|
languageService.configure(languageSettings);
|
||||||
...languageSettings,
|
|
||||||
hover: true,
|
|
||||||
isKubernetes,
|
|
||||||
});
|
|
||||||
|
|
||||||
const getTextDocument = (uri: string): TextDocument => {
|
const getTextDocument = (uri: string): TextDocument => {
|
||||||
const models = ctx.getMirrorModels();
|
const models = ctx.getMirrorModels();
|
||||||
|
|
@ -58,14 +56,19 @@ export function createYAMLWorker(
|
||||||
doValidation(uri) {
|
doValidation(uri) {
|
||||||
const document = getTextDocument(uri);
|
const document = getTextDocument(uri);
|
||||||
if (document) {
|
if (document) {
|
||||||
return languageService.doValidation(document, isKubernetes);
|
return languageService.doValidation(document, languageSettings.isKubernetes);
|
||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
|
|
||||||
doComplete(uri, position) {
|
doComplete(uri, position) {
|
||||||
const document = getTextDocument(uri);
|
const document = getTextDocument(uri);
|
||||||
return languageService.doComplete(document, position, isKubernetes);
|
return languageService.doComplete(document, position, languageSettings.isKubernetes);
|
||||||
|
},
|
||||||
|
|
||||||
|
doDefinition(uri, position) {
|
||||||
|
const document = getTextDocument(uri);
|
||||||
|
return languageService.doDefinition(document, { position, textDocument: { uri } });
|
||||||
},
|
},
|
||||||
|
|
||||||
doHover(uri, position) {
|
doHover(uri, position) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue