diff --git a/examples/minimal-vite/README.md b/examples/minimal-vite/README.md
new file mode 100644
index 0000000..ff5796c
--- /dev/null
+++ b/examples/minimal-vite/README.md
@@ -0,0 +1,3 @@
+# Minimal Vite Example
+
+This minimal example shows how `monaco-yaml` can be used with [Vite](https://vitejs.dev).
diff --git a/examples/minimal-vite/index.html b/examples/minimal-vite/index.html
new file mode 100644
index 0000000..e7c0dea
--- /dev/null
+++ b/examples/minimal-vite/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Monaco YAML
+
+
+
+
+
+
diff --git a/examples/minimal-vite/index.js b/examples/minimal-vite/index.js
new file mode 100644
index 0000000..e08bf59
--- /dev/null
+++ b/examples/minimal-vite/index.js
@@ -0,0 +1,67 @@
+import { editor, Uri } from 'monaco-editor';
+import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
+import { setDiagnosticsOptions } from 'monaco-yaml';
+import YamlWorker from 'monaco-yaml/lib/esm/yaml.worker?worker';
+
+window.MonacoEnvironment = {
+ getWorker(moduleId, label) {
+ switch (label) {
+ case 'editorWorkerService':
+ return new EditorWorker();
+ case 'yaml':
+ return new YamlWorker();
+ default:
+ throw new Error(`Unknown label ${label}`);
+ }
+ },
+};
+
+// The uri is used for the schema file match.
+const modelUri = Uri.parse('a://b/foo.yaml');
+
+setDiagnosticsOptions({
+ enableSchemaRequest: true,
+ hover: true,
+ completion: true,
+ validate: true,
+ format: true,
+ schemas: [
+ {
+ // Id of the first schema
+ uri: 'http://myserver/foo-schema.json',
+ // Associate with our model
+ fileMatch: [String(modelUri)],
+ schema: {
+ type: 'object',
+ properties: {
+ p1: {
+ enum: ['v1', 'v2'],
+ },
+ p2: {
+ // Reference the second schema
+ $ref: 'http://myserver/bar-schema.json',
+ },
+ },
+ },
+ },
+ {
+ // Id of the first schema
+ uri: 'http://myserver/bar-schema.json',
+ schema: {
+ type: 'object',
+ properties: {
+ q1: {
+ enum: ['x1', 'x2'],
+ },
+ },
+ },
+ },
+ ],
+});
+
+const value = 'p1: \np2: \n';
+
+editor.create(document.getElementById('editor'), {
+ automaticLayout: true,
+ model: editor.createModel(value, 'yaml', modelUri),
+});
diff --git a/examples/minimal-vite/package.json b/examples/minimal-vite/package.json
new file mode 100644
index 0000000..d2e1b59
--- /dev/null
+++ b/examples/minimal-vite/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "minimal-vite",
+ "version": "1.0.0",
+ "private": true,
+ "scripts": {
+ "start": "vite",
+ "build": "vite build"
+ },
+ "dependencies": {
+ "monaco-editor": "^0.27.0",
+ "monaco-yaml": "file:../..",
+ "vite": "^2.0.8"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 59a2be9..67177b7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -55,6 +55,14 @@
"webpack-dev-server": "^4.0.0"
}
},
+ "examples/minimal-vite": {
+ "version": "1.0.0",
+ "dependencies": {
+ "monaco-editor": "^0.27.0",
+ "monaco-yaml": "file:../..",
+ "vite": "^2.0.8"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.12.11",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -2525,7 +2533,6 @@
"version": "0.12.24",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz",
"integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==",
- "dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -5367,6 +5374,10 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/minimal-vite": {
+ "resolved": "examples/minimal-vite",
+ "link": true
+ },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -7136,6 +7147,20 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rollup": {
+ "version": "2.56.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
+ "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -8195,6 +8220,26 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/vite": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.8.tgz",
+ "integrity": "sha512-2GRsLrmMsFI0u31WTtkGbKvEIJO4I9qDltma3QiyDJEk14IzjM35OCElAFHFs2VlL7h2qX5AdHbwfEhnmwhQgw==",
+ "dependencies": {
+ "esbuild": "^0.12.17",
+ "postcss": "^8.3.6",
+ "resolve": "^1.20.0",
+ "rollup": "^2.38.5"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": ">=12.2.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/vscode-json-languageservice": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.7.tgz",
@@ -10595,8 +10640,7 @@
"esbuild": {
"version": "0.12.24",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz",
- "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==",
- "dev": true
+ "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A=="
},
"escalade": {
"version": "3.1.1",
@@ -12684,6 +12728,14 @@
"schema-utils": "^3.1.0"
}
},
+ "minimal-vite": {
+ "version": "file:examples/minimal-vite",
+ "requires": {
+ "monaco-editor": "^0.27.0",
+ "monaco-yaml": "file:../..",
+ "vite": "^2.0.8"
+ }
+ },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -12728,6 +12780,7 @@
"husky": "^7.0.0",
"js-yaml": "^4.0.0",
"lint-staged": "^11.0.0",
+ "minimal-vite": "file:examples/minimal-vite",
"monaco-editor": "^0.27.0",
"path-browserify": "^1.0.0",
"prettier": "2.0.5",
@@ -14648,8 +14701,7 @@
"esbuild": {
"version": "0.12.24",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz",
- "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==",
- "dev": true
+ "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A=="
},
"escalade": {
"version": "3.1.1",
@@ -16737,6 +16789,14 @@
"schema-utils": "^3.1.0"
}
},
+ "minimal-vite": {
+ "version": "file:examples/minimal-vite",
+ "requires": {
+ "monaco-editor": "^0.27.0",
+ "monaco-yaml": "file:../..",
+ "vite": "^2.0.8"
+ }
+ },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -17994,6 +18054,14 @@
"glob": "^7.1.3"
}
},
+ "rollup": {
+ "version": "2.56.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
+ "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -18815,6 +18883,18 @@
"resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
"integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w=="
},
+ "vite": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.8.tgz",
+ "integrity": "sha512-2GRsLrmMsFI0u31WTtkGbKvEIJO4I9qDltma3QiyDJEk14IzjM35OCElAFHFs2VlL7h2qX5AdHbwfEhnmwhQgw==",
+ "requires": {
+ "esbuild": "^0.12.17",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.3.6",
+ "resolve": "^1.20.0",
+ "rollup": "^2.38.5"
+ }
+ },
"vscode-json-languageservice": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.7.tgz",
@@ -20381,6 +20461,14 @@
"glob": "^7.1.3"
}
},
+ "rollup": {
+ "version": "2.56.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz",
+ "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -21202,6 +21290,18 @@
"resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
"integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w=="
},
+ "vite": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.5.8.tgz",
+ "integrity": "sha512-2GRsLrmMsFI0u31WTtkGbKvEIJO4I9qDltma3QiyDJEk14IzjM35OCElAFHFs2VlL7h2qX5AdHbwfEhnmwhQgw==",
+ "requires": {
+ "esbuild": "^0.12.17",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.3.6",
+ "resolve": "^1.20.0",
+ "rollup": "^2.38.5"
+ }
+ },
"vscode-json-languageservice": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.7.tgz",