mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-05-19 04:08:48 +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
|
||||
- Automatically load remote schema files (by enabling DiagnosticsOptions.enableSchemaRequest)
|
||||
- Links from JSON references.
|
||||
- Links and hover effects from YAML anchors.
|
||||
|
||||
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
|
||||
|
|
|
|||
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
|
||||
// vscode-languageserver.
|
||||
onResolve({ filter: /^vscode-languageserver$/ }, () => ({
|
||||
onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({
|
||||
path: 'vscode-languageserver-types/lib/esm/main.js',
|
||||
external: true,
|
||||
}));
|
||||
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
||||
// vscode-languageserver.
|
||||
onResolve({ filter: /^vscode-languageserver-types$/ }, () => ({
|
||||
onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({
|
||||
path: 'vscode-languageserver-types/lib/esm/main.js',
|
||||
external: true,
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -44,11 +44,6 @@ const defaultSchema: SchemasSettings = {
|
|||
};
|
||||
|
||||
setDiagnosticsOptions({
|
||||
validate: true,
|
||||
enableSchemaRequest: true,
|
||||
format: true,
|
||||
hover: true,
|
||||
completion: true,
|
||||
schemas: [defaultSchema],
|
||||
});
|
||||
|
||||
|
|
@ -100,6 +95,14 @@ pointer:
|
|||
$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.
|
||||
|
||||
|
||||
|
|
|
|||
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' {
|
||||
import { ITextModel, languages } from 'monaco-editor';
|
||||
// eslint-disable-next-line import/order
|
||||
import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation';
|
||||
|
||||
export function getDocumentSymbols(
|
||||
|
|
|
|||
|
|
@ -9,10 +9,6 @@ module.exports = {
|
|||
devtool: 'source-map',
|
||||
resolve: {
|
||||
extensions: ['.mjs', '.js', '.ts'],
|
||||
fallback: {
|
||||
// Yaml-ast-parser-custom-tags imports buffer. This can be omitted safely.
|
||||
buffer: false,
|
||||
},
|
||||
},
|
||||
module: {
|
||||
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 {
|
||||
/**
|
||||
* If set, enable schema based autocompletion.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
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.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
readonly hover?: boolean;
|
||||
|
||||
/**
|
||||
* If set, the validator will be enabled and perform syntax validation as well as schema
|
||||
* based validation.
|
||||
*/
|
||||
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
|
||||
* If true, a different diffing algorithm is used to generate error messages.
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
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 {
|
||||
|
|
|
|||
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": {
|
||||
"@types/json-schema": "^7.0.0",
|
||||
"js-yaml": "^4.0.0",
|
||||
"jsonc-parser": "^3.0.0",
|
||||
"path-browserify": "^1.0.0",
|
||||
"prettier": "2.0.5",
|
||||
"vscode-languageserver-textdocument": "^1.0.0",
|
||||
"vscode-languageserver-types": "^3.0.0",
|
||||
"yaml-language-server-parser": "^0.1.0"
|
||||
"yaml": "2.0.0-8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"monaco-editor": ">=0.30"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
||||
"@typescript-eslint/parser": "^4.0.0",
|
||||
"esbuild": "^0.12.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
||||
"esbuild": "^0.13.0",
|
||||
"eslint": "^7.0.0",
|
||||
"eslint-config-remcohaszing": "^3.0.0",
|
||||
"husky": "^7.0.0",
|
||||
"lint-staged": "^11.0.0",
|
||||
"lint-staged": "^12.0.0",
|
||||
"monaco-editor": "^0.30.0",
|
||||
"type-fest": "^2.0.0",
|
||||
"typescript": "^4.0.0",
|
||||
"yaml-language-server": "^0.22.0"
|
||||
"yaml-language-server": "^1.0.0"
|
||||
},
|
||||
"resolutions": {},
|
||||
"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 ------
|
||||
|
||||
export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,18 @@ import { setupMode } from './yamlMode';
|
|||
|
||||
// --- 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(
|
||||
initialDiagnosticsOptions: languages.yaml.DiagnosticsOptions,
|
||||
): languages.yaml.LanguageServiceDefaults {
|
||||
|
|
@ -25,7 +37,7 @@ export function createLanguageServiceDefaults(
|
|||
},
|
||||
|
||||
setDiagnosticsOptions(options) {
|
||||
diagnosticsOptions = options || {};
|
||||
diagnosticsOptions = { ...diagnosticDefault, ...options };
|
||||
onDidChange.fire(languageServiceDefaults);
|
||||
},
|
||||
};
|
||||
|
|
@ -33,12 +45,6 @@ export function createLanguageServiceDefaults(
|
|||
return languageServiceDefaults;
|
||||
}
|
||||
|
||||
const diagnosticDefault: languages.yaml.DiagnosticsOptions = {
|
||||
validate: true,
|
||||
schemas: [],
|
||||
enableSchemaRequest: false,
|
||||
};
|
||||
|
||||
const yamlDefaults = createLanguageServiceDefaults(diagnosticDefault);
|
||||
|
||||
// Export API
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
|||
import { languageId } from './constants';
|
||||
import {
|
||||
createCompletionItemProvider,
|
||||
createDefinitionProvider,
|
||||
createDiagnosticsAdapter,
|
||||
createDocumentFormattingEditProvider,
|
||||
createDocumentSymbolProvider,
|
||||
|
|
@ -48,6 +49,7 @@ export function setupMode(defaults: languages.yaml.LanguageServiceDefaults): voi
|
|||
|
||||
languages.registerCompletionItemProvider(languageId, createCompletionItemProvider(worker));
|
||||
languages.registerHoverProvider(languageId, createHoverProvider(worker));
|
||||
languages.registerDefinitionProvider(languageId, createDefinitionProvider(worker));
|
||||
languages.registerDocumentSymbolProvider(languageId, createDocumentSymbolProvider(worker));
|
||||
languages.registerDocumentFormattingEditProvider(
|
||||
languageId,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ export interface YAMLWorker {
|
|||
|
||||
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>;
|
||||
|
||||
format: (uri: string, options: CustomFormatterOptions) => Promisable<ls.TextEdit[]>;
|
||||
|
|
@ -34,15 +36,11 @@ export interface YAMLWorker {
|
|||
|
||||
export function createYAMLWorker(
|
||||
ctx: worker.IWorkerContext,
|
||||
{ enableSchemaRequest, isKubernetes = false, languageSettings, prefix = '' }: ICreateData,
|
||||
{ enableSchemaRequest, languageSettings, prefix = '' }: ICreateData,
|
||||
): YAMLWorker {
|
||||
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
||||
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
||||
languageService.configure({
|
||||
...languageSettings,
|
||||
hover: true,
|
||||
isKubernetes,
|
||||
});
|
||||
languageService.configure(languageSettings);
|
||||
|
||||
const getTextDocument = (uri: string): TextDocument => {
|
||||
const models = ctx.getMirrorModels();
|
||||
|
|
@ -58,14 +56,19 @@ export function createYAMLWorker(
|
|||
doValidation(uri) {
|
||||
const document = getTextDocument(uri);
|
||||
if (document) {
|
||||
return languageService.doValidation(document, isKubernetes);
|
||||
return languageService.doValidation(document, languageSettings.isKubernetes);
|
||||
}
|
||||
return [];
|
||||
},
|
||||
|
||||
doComplete(uri, position) {
|
||||
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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue