mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-05-19 04:08:48 +00:00
Merge branch 'main' into flatten-output-paths
This commit is contained in:
commit
ef35d1be2b
21 changed files with 120 additions and 58 deletions
|
|
@ -8,6 +8,7 @@ rules:
|
|||
'@typescript-eslint/no-shadow': off
|
||||
'@typescript-eslint/no-unnecessary-condition': off
|
||||
|
||||
import/extensions: off
|
||||
import/no-extraneous-dependencies: off
|
||||
import/no-unresolved: off
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# Contributing
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The following are required to start working on this project:
|
||||
|
||||
- [Git](https://git-scm.com)
|
||||
- [NodeJS](https://nodejs.org) 16 or higher
|
||||
- [npm](https://github.com/npm/cli) 8.1.2 or higher
|
||||
|
||||
## Getting started
|
||||
|
||||
To get started with contributing, clone the repository and install its dependencies.
|
||||
|
||||
```sh
|
||||
|
|
@ -8,16 +18,19 @@ cd monaco-yaml
|
|||
npm ci
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
To build the repository, run:
|
||||
|
||||
```sh
|
||||
npm prepack
|
||||
npm run prepack
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
To test it, run one of the
|
||||
[examples](https://github.com/remcohaszing/monaco-yaml/tree/main/examples).
|
||||
|
||||
```sh
|
||||
cd examples/webpack-worker-loader
|
||||
npm start
|
||||
npm --workspace demo start
|
||||
```
|
||||
|
|
|
|||
22
build.js
22
build.js
|
|
@ -3,7 +3,7 @@ const { build } = require('esbuild');
|
|||
const { dependencies, peerDependencies } = require('./package.json');
|
||||
|
||||
build({
|
||||
entryPoints: ['src/index.ts', 'src/yaml.worker.ts'],
|
||||
entryPoints: ['src/monaco.contribution.ts', 'src/yaml.worker.ts'],
|
||||
bundle: true,
|
||||
external: Object.keys({ ...dependencies, ...peerDependencies }),
|
||||
logLevel: 'info',
|
||||
|
|
@ -17,20 +17,8 @@ build({
|
|||
setup({ onResolve }) {
|
||||
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
||||
// vscode-languageserver.
|
||||
onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({
|
||||
path: 'vscode-languageserver-textdocument/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(\/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-(protocol|types)$/ }, () => ({
|
||||
path: 'vscode-languageserver-types/lib/esm/main.js',
|
||||
onResolve({ filter: /^vscode-languageserver(\/node|-protocol)?$/ }, () => ({
|
||||
path: 'vscode-languageserver-types',
|
||||
external: true,
|
||||
}));
|
||||
// The yaml language service uses path. We can stub it using path-browserify.
|
||||
|
|
@ -40,8 +28,8 @@ build({
|
|||
}));
|
||||
// The main prettier entry point contains all of Prettier.
|
||||
// The standalone bundle is smaller and works fine for us.
|
||||
onResolve({ filter: /^prettier$/ }, () => ({
|
||||
path: 'prettier/standalone',
|
||||
onResolve({ filter: /^prettier/ }, ({ path }) => ({
|
||||
path: path === 'prettier' ? 'prettier/standalone.js' : `${path}.js`,
|
||||
external: true,
|
||||
}));
|
||||
// This tiny filler implementation serves all our needs.
|
||||
|
|
|
|||
|
|
@ -2,10 +2,30 @@
|
|||
|
||||
This demo is deployed to [monaco-yaml.js.org](https://monaco-yaml.js.org). It shows how
|
||||
`monaco-editor` and `monaco-yaml` can be used with
|
||||
[Webpack 5](https://webpack.js.org/concepts/entry-points). To start it, simply run:
|
||||
[Webpack 5](https://webpack.js.org/concepts/entry-points).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [NodeJS](https://nodejs.org) 16 or higher
|
||||
- [npm](https://github.com/npm/cli) 8.1.2 or higher
|
||||
|
||||
## Setup
|
||||
|
||||
To run the project locally, clone the repository and set it up:
|
||||
|
||||
```sh
|
||||
npm start
|
||||
git clone https://github.com/remcohaszing/monaco-yaml
|
||||
cd monaco-yaml
|
||||
npm ci
|
||||
npm run prepack
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
To start it, simply run:
|
||||
|
||||
```sh
|
||||
npm --workspace demo start
|
||||
```
|
||||
|
||||
The demo will open in your browser.
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@ ed.onDidChangeCursorPosition(async (event) => {
|
|||
breadcrumb.setAttribute('role', 'button');
|
||||
breadcrumb.classList.add('breadcrumb');
|
||||
breadcrumb.textContent = symbol.name;
|
||||
breadcrumb.title = symbol.detail;
|
||||
if (symbol.kind === languages.SymbolKind.Array) {
|
||||
breadcrumb.classList.add('array');
|
||||
} else if (symbol.kind === languages.SymbolKind.Module) {
|
||||
|
|
|
|||
2
examples/demo/src/types.d.ts
vendored
2
examples/demo/src/types.d.ts
vendored
|
|
@ -15,7 +15,7 @@ declare module 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymb
|
|||
): Promise<languages.DocumentSymbol[]>;
|
||||
}
|
||||
|
||||
declare module 'monaco-editor/esm/vs/editor/editor.worker' {
|
||||
declare module 'monaco-editor/esm/vs/editor/editor.worker.js' {
|
||||
import { worker } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
|
||||
export function initialize(
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
# Minimal Vite Example
|
||||
|
||||
This minimal example shows how `monaco-yaml` can be used with [Vite](https://vitejs.dev).
|
||||
|
|
@ -7,8 +7,28 @@ Example is based on
|
|||
[link](https://github.com/microsoft/monaco-editor-samples/tree/main/browser-esm-webpack-monaco-plugin).
|
||||
To start it, simply run:
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [NodeJS](https://nodejs.org) 16 or higher
|
||||
- [npm](https://github.com/npm/cli) 8.1.2 or higher
|
||||
|
||||
## Setup
|
||||
|
||||
To run the project locally, clone the repository and set it up:
|
||||
|
||||
```sh
|
||||
npm start
|
||||
git clone https://github.com/remcohaszing/monaco-yaml
|
||||
cd monaco-yaml
|
||||
npm ci
|
||||
npm run prepack
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
To start it, simply run:
|
||||
|
||||
```sh
|
||||
npm --workspace monaco-editor-webpack-plugin-example start
|
||||
```
|
||||
|
||||
The demo will open in your browser.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// eslint-disable-next-line import/extensions
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
// eslint-disable-next-line import/extensions
|
||||
export { editor } from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
export { setDiagnosticsOptions } from 'monaco-yaml';
|
||||
export default monaco;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ boolean: true
|
|||
`;
|
||||
|
||||
async function create() {
|
||||
// eslint-disable-next-line import/extensions
|
||||
const monaco = await import('./main.js');
|
||||
|
||||
monaco.editor.create(document.querySelector('.editor'), {
|
||||
|
|
|
|||
29
examples/vite-example/README.md
Normal file
29
examples/vite-example/README.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Vite Example
|
||||
|
||||
This minimal example shows how `monaco-yaml` can be used with [Vite](https://vitejs.dev).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [NodeJS](https://nodejs.org) 16 or higher
|
||||
- [npm](https://github.com/npm/cli) 8.1.2 or higher
|
||||
|
||||
## Setup
|
||||
|
||||
To run the project locally, clone the repository and set it up:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/remcohaszing/monaco-yaml
|
||||
cd monaco-yaml
|
||||
npm ci
|
||||
npm run prepack
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
To start it, simply run:
|
||||
|
||||
```sh
|
||||
npm --workspace vite-example start
|
||||
```
|
||||
|
||||
The demo will be available on http://localhost:3000.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "minimal-vite",
|
||||
"name": "vite-example",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
8
index.d.ts
vendored
8
index.d.ts
vendored
|
|
@ -70,14 +70,6 @@ declare module 'monaco-editor/esm/vs/editor/editor.api' {
|
|||
*/
|
||||
readonly isKubernetes?: boolean;
|
||||
|
||||
/**
|
||||
* If specified, this prefix will be added to all on demand schema requests
|
||||
*
|
||||
* @default undefined
|
||||
* @deprecated
|
||||
*/
|
||||
readonly prefix?: string;
|
||||
|
||||
/**
|
||||
* A list of known schemas and/or associations of schemas to file names.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import { Emitter, languages } from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
import { languageId } from './constants';
|
||||
import { setupMode } from './yamlMode';
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ import {
|
|||
Position,
|
||||
Range,
|
||||
Uri,
|
||||
} from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
} from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
import * as ls from 'vscode-languageserver-types';
|
||||
import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||
import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService.js';
|
||||
|
||||
import { languageId } from './constants';
|
||||
import { YAMLWorker } from './yamlWorker';
|
||||
|
|
@ -140,7 +140,7 @@ function toRange(range: ls.Range): Range {
|
|||
);
|
||||
}
|
||||
|
||||
function toCompletionItemKind(kind: languages.CompletionItemKind): languages.CompletionItemKind {
|
||||
function toCompletionItemKind(kind: ls.CompletionItemKind): languages.CompletionItemKind {
|
||||
const mItemKind = languages.CompletionItemKind;
|
||||
|
||||
switch (kind) {
|
||||
|
|
@ -341,7 +341,7 @@ function toSymbolKind(kind: ls.SymbolKind): languages.SymbolKind {
|
|||
|
||||
function toDocumentSymbol(item: ls.DocumentSymbol): languages.DocumentSymbol {
|
||||
return {
|
||||
detail: '',
|
||||
detail: item.detail || '',
|
||||
range: toRange(item.range),
|
||||
name: item.name,
|
||||
kind: toSymbolKind(item.kind),
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { editor, languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import { editor, languages } from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
import { WorkerAccessor } from './languageFeatures';
|
||||
import { YAMLWorker } from './yamlWorker';
|
||||
|
|
@ -48,7 +48,6 @@ export function createWorkerManager(
|
|||
createData: {
|
||||
languageSettings: defaults.diagnosticsOptions,
|
||||
enableSchemaRequest: defaults.diagnosticsOptions.enableSchemaRequest,
|
||||
prefix: defaults.diagnosticsOptions.prefix,
|
||||
isKubernetes: defaults.diagnosticsOptions.isKubernetes,
|
||||
customTags: defaults.diagnosticsOptions.customTags,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker';
|
||||
import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker.js';
|
||||
|
||||
import { createYAMLWorker, ICreateData } from './yamlWorker';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { languages } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import { languages } from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
|
||||
import { languageId } from './constants';
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { worker } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import { worker } from 'monaco-editor/esm/vs/editor/editor.api.js';
|
||||
import { Promisable } from 'type-fest';
|
||||
import { TextDocument } from 'vscode-languageserver-textdocument';
|
||||
import * as ls from 'vscode-languageserver-types';
|
||||
|
|
@ -6,14 +6,16 @@ import {
|
|||
CustomFormatterOptions,
|
||||
getLanguageService,
|
||||
LanguageSettings,
|
||||
} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||
} from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService.js';
|
||||
|
||||
import { languageId } from './constants';
|
||||
|
||||
let defaultSchemaRequestService: (url: string) => Promise<string>;
|
||||
|
||||
if (typeof fetch !== 'undefined') {
|
||||
defaultSchemaRequestService = (url) => fetch(url).then((response) => response.text());
|
||||
async function schemaRequestService(uri: string): Promise<string> {
|
||||
const response = await fetch(uri);
|
||||
if (response.ok) {
|
||||
return response.text();
|
||||
}
|
||||
throw new Error(`Schema request failed for ${uri}`);
|
||||
}
|
||||
|
||||
export interface YAMLWorker {
|
||||
|
|
@ -36,10 +38,14 @@ export interface YAMLWorker {
|
|||
|
||||
export function createYAMLWorker(
|
||||
ctx: worker.IWorkerContext,
|
||||
{ enableSchemaRequest, languageSettings, prefix = '' }: ICreateData,
|
||||
{ enableSchemaRequest, languageSettings }: ICreateData,
|
||||
): YAMLWorker {
|
||||
const service = (url: string): Promise<string> => defaultSchemaRequestService(`${prefix}${url}`);
|
||||
const languageService = getLanguageService(enableSchemaRequest && service, null, null, null);
|
||||
const languageService = getLanguageService(
|
||||
enableSchemaRequest ? schemaRequestService : null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
);
|
||||
languageService.configure(languageSettings);
|
||||
|
||||
const getTextDocument = (uri: string): TextDocument => {
|
||||
|
|
@ -100,6 +106,5 @@ export function createYAMLWorker(
|
|||
export interface ICreateData {
|
||||
languageSettings: LanguageSettings;
|
||||
enableSchemaRequest: boolean;
|
||||
prefix?: string;
|
||||
isKubernetes?: boolean;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue