diff --git a/.gitignore b/.gitignore
index 67045665..f60e0890 100644
--- a/.gitignore
+++ b/.gitignore
@@ -102,3 +102,8 @@ dist
# TernJS port file
.tern-port
+
+vscode
+dist
+demo/lib
+demo/extensions.js
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index c53a2f6d..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Félix B
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
index 0b3111fa..f3ede17f 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,28 @@
-# vscode-web
\ No newline at end of file
+# VSCode Web
+This project is aimed to build a web version of VSCode, this is not a fork, simply a web compilation of the VSCode project.
+
+## Sample
+Sample demo site can be found here :
+[Demo](https://vscode-web-test-playground.azurewebsites.net/)
+
+
+## Build from source
+
+To build from sources, you need same prerequisites as vscode :
+[VSCode Prerequisites](https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites)
+
+Then simply run following commands
+
+```
+yarn
+yarn build
+```
+
+## Run demo
+
+To run the demo you need to build from source, then run de following commands
+
+```
+yarn prepare-demo
+yarn demo
+```
\ No newline at end of file
diff --git a/build.js b/build.js
new file mode 100644
index 00000000..df425a4a
--- /dev/null
+++ b/build.js
@@ -0,0 +1,95 @@
+const process = require("process");
+const child_process = require("child_process");
+const fs = require("fs");
+const fse = require("fs-extra");
+const glob = require("glob");
+
+const vscodeVersion = "1.50.1";
+
+if (!fs.existsSync("vscode")) {
+ child_process.execSync("git clone https://github.com/microsoft/vscode.git", {
+ stdio: "inherit",
+ });
+}
+process.chdir("vscode");
+
+child_process.execSync(`git checkout -q ${vscodeVersion}`, {
+ stdio: "inherit",
+});
+if (!fs.existsSync("node_modules")) {
+ child_process.execSync("yarn", { stdio: "inherit" });
+}
+// Use simple workbench
+fs.copyFileSync(
+ "../workbench.ts",
+ "src/vs/code/browser/workbench/workbench.ts"
+);
+
+// Adapt compilation to web
+const gulpfilePath = "./build/gulpfile.vscode.js";
+let gulpfile = fs.readFileSync(gulpfilePath, { encoding: "utf8", flag: "r" });
+
+gulpfile = gulpfile
+ .replace(
+ /vs\/workbench\/workbench.desktop.main/g,
+ "vs/workbench/workbench.web.api"
+ )
+ .replace(
+ /buildfile.workbenchDesktop/g,
+ "buildfile.workbenchWeb,buildfile.keyboardMaps"
+ );
+
+fs.writeFileSync(gulpfilePath, gulpfile);
+
+// Compile
+child_process.execSync("yarn gulp compile-build", { stdio: "inherit" });
+child_process.execSync("yarn gulp minify-vscode", { stdio: "inherit" });
+child_process.execSync("yarn compile-web", { stdio: "inherit" });
+
+// Remove maps
+const mapFiles = glob.sync("out-vscode-min/**/*.js.map", {});
+mapFiles.forEach((mapFile) => {
+ fs.unlinkSync(mapFile);
+});
+
+// Extract compiled files
+if (fs.existsSync("../dist")) {
+ fs.rmdirSync("../dist", { recursive: true });
+}
+fs.mkdirSync("../dist");
+fse.copySync("out-vscode-min", "../dist/vscode");
+
+const extensionNM = glob.sync("extensions/**/node_modules", {});
+extensionNM.forEach((modules) => {
+ fs.rmdirSync(modules, { recursive: true });
+});
+fse.copySync("extensions", "../dist/extensions");
+
+// Add built in extensions
+const extensions = [];
+
+const extensionsFolderPath = "extensions";
+const extensionsContent = fs.readdirSync(extensionsFolderPath);
+for (const extension of extensionsContent) {
+ const extensionPath = `${extensionsFolderPath}/${extension}`;
+ if (fs.statSync(extensionPath).isDirectory()) {
+ const extensionPackagePath = `${extensionPath}/package.json`;
+
+ if (!fs.existsSync(extensionPackagePath)) {
+ continue;
+ }
+
+ const packageJSON = JSON.parse(fs.readFileSync(extensionPackagePath));
+ extensions.push({
+ packageJSON,
+ extensionPath: extension,
+ });
+ }
+}
+
+const extensionsVar =
+ "var extensions =" + JSON.stringify(extensions, { space: "\t", quote: "" });
+
+fs.writeFileSync("../dist/extensions.js", extensionsVar);
+
+
diff --git a/demo/index.html b/demo/index.html
new file mode 100644
index 00000000..08ab4274
--- /dev/null
+++ b/demo/index.html
@@ -0,0 +1,57 @@
+
+
+
+
+ VSCode Web
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/playground.js b/demo/playground.js
new file mode 100644
index 00000000..85625f46
--- /dev/null
+++ b/demo/playground.js
@@ -0,0 +1 @@
+var playground=[{"packageJSON":{"name":"vscode-web-playground","description":"Web playground for VS Code","version":"0.0.9","publisher":"vscode","license":"MIT","enableProposedApi":true,"private":true,"activationEvents":["onFileSystem:memfs","onFileSystem:github","onFileSystem:codespace","onDebug"],"browser":"./dist/extension","engines":{"vscode":"^1.48.0"},"contributes":{"viewsWelcome":[{"view":"debug","contents":"In order to run and debug you'll need to [create a local workspace](command:vscode.webPlayground.cloneRepository).","when":"github-context"},{"view":"terminal","contents":"In order to use the terminal you'll need to [create a local workspace](command:vscode.webPlayground.cloneRepository).","when":"github-context"}],"menus":{"statusBar/windowIndicator":[{"command":"vscode.webPlayground.cloneRepository","when":"github-context"}]},"commands":[{"command":"vscode.webPlayground.cloneRepository","title":"Clone and Open the Repository in VS Code","enablement":"github-context"}],"taskDefinitions":[{"type":"custombuildscript","required":["flavor"],"properties":{"flavor":{"type":"string","description":"The build flavor. Should be either '32' or '64'."},"flags":{"type":"array","description":"Additional build flags."}}}],"resourceLabelFormatters":[{"scheme":"github","authority":"*","formatting":{"label":"${authority}${path}","separator":"/","workspaceSuffix":"GitHub"}}]},"scripts":{"compile":"yarn webpack-cli --config extension.webpack.config --mode production","watch":"yarn webpack-cli --config extension.webpack.config --mode production --watch --info-verbosity verbose","prepublish":"yarn webpack-cli --config extension.webpack.config --mode production"},"devDependencies":{"@types/vscode":"^1.48.0","ts-loader":"^4.4.2","typescript":"^3.9.7","webpack":"^4.43.0","webpack-cli":"^3.3.12"}},"extensionPath":"vscode-web-playground"}]
\ No newline at end of file
diff --git a/demo/product.json b/demo/product.json
new file mode 100644
index 00000000..561f246a
--- /dev/null
+++ b/demo/product.json
@@ -0,0 +1,13 @@
+{
+ "productConfiguration": {
+ "nameShort": "Code Web",
+ "nameLong": "Code Web",
+ "applicationName": "code-web",
+ "dataFolderName": ".vscode-web",
+ "version": "1.2.3"
+ },
+ "folderUri": {
+ "scheme": "memfs",
+ "path": "/sample-folder"
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..e27e87d8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "vscode-web",
+ "version": "1.0.0",
+ "description": "",
+ "scripts": {
+ "build": "node build.js",
+ "prepare-demo": "node prepare-demo.js",
+ "demo": "http-server ./demo --cors"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/Felx-B/vscode-web.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/Felx-B/vscode-web/issues"
+ },
+ "homepage": "https://github.com/Felx-B/vscode-web#readme",
+ "devDependencies": {
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "semver-umd": "^5.5.7",
+ "vscode-oniguruma": "^1.4.0",
+ "vscode-textmate": "^5.2.0",
+ "http-server": "^0.12.3"
+ },
+ "dependencies": {
+ }
+}
diff --git a/prepare-demo.js b/prepare-demo.js
new file mode 100644
index 00000000..781b5638
--- /dev/null
+++ b/prepare-demo.js
@@ -0,0 +1,39 @@
+var fs = require("fs");
+const fse = require("fs-extra");
+const child_process = require("child_process");
+
+if (fs.existsSync("./demo/dist")) {
+ fs.rmdirSync("./demo/dist", { recursive: true });
+}
+
+if (fs.existsSync("./demo/lib")) {
+ fs.rmdirSync("./demo/lib", { recursive: true });
+}
+
+fse.copySync("./dist", "./demo/dist");
+fse.copySync("./node_modules/semver-umd", "./demo/lib/semver-umd");
+fse.copySync("./node_modules/vscode-oniguruma", "./demo/lib/vscode-oniguruma");
+fse.copySync("./node_modules/vscode-textmate", "./demo/lib/vscode-textmate");
+
+if(fs.existsSync('./demo/dist/extensions/vscode-web-playground')){
+ fs.rmdirSync('./demo/dist/extensions/vscode-web-playground', { recursive: true })
+}
+child_process.execSync('git clone https://github.com/microsoft/vscode-web-playground.git demo/dist/extensions/vscode-web-playground', {stdio: 'inherit'});
+process.chdir('demo/dist/extensions/vscode-web-playground');
+child_process.execSync('yarn', {stdio: 'inherit'});
+child_process.execSync('yarn compile', {stdio: 'inherit'});
+
+process.chdir('../../../..');
+
+// if (fs.existsSync("./demo/dist/extensions.js")) {
+// fs.unlinkSync("./demo/dist/extensions.js");
+// }
+
+const packageJSON = fs.readFileSync(
+ "./demo/dist/extensions/vscode-web-playground/package.json"
+);
+const extensions = [{ packageJSON: JSON.parse(packageJSON), extensionPath: "vscode-web-playground"}]
+
+const content = `var playground=${JSON.stringify(extensions)}`;
+
+fs.writeFileSync("./demo/playground.js", content);
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..653db20f
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "module": "amd",
+ "moduleResolution": "node",
+ "experimentalDecorators": true,
+ "noImplicitReturns": true,
+ "noUnusedLocals": true,
+ "allowUnreachableCode": false,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "baseUrl": ".",
+ "paths": {
+ "vs/*": [
+ "./vscode/src/vs/*"
+ ]
+ },
+ "lib": [
+ "ES2015"
+ ]
+ },
+ "include": ["workbench.ts"]
+}
\ No newline at end of file
diff --git a/workbench.ts b/workbench.ts
new file mode 100644
index 00000000..23599062
--- /dev/null
+++ b/workbench.ts
@@ -0,0 +1,31 @@
+import { create, IWorkbenchConstructionOptions, IWorkspaceProvider } from 'vs/workbench/workbench.web.api';
+import { URI, UriComponents} from 'vs/base/common/uri';
+
+(async function () {
+ // create workbench
+ const result = await fetch('product.json');
+ let config: IWorkbenchConstructionOptions & { folderUri?: UriComponents, workspaceUri?: UriComponents } = await result.json();
+
+
+ if (Array.isArray(config.staticExtensions)) {
+ config.staticExtensions.forEach(extension => {
+ extension.extensionLocation = URI.revive(extension.extensionLocation);
+ });
+ }
+
+ let workspace;
+ if (config.folderUri) {
+ workspace = { folderUri: URI.revive(config.folderUri) };
+ } else if (config.workspaceUri) {
+ workspace = { workspaceUri: URI.revive(config.workspaceUri) };
+ } else {
+ workspace = undefined;
+ }
+
+ if(workspace){
+ const workspaceProvider: IWorkspaceProvider = { workspace, open: async () => {} }
+ config = { ...config, workspaceProvider };
+ }
+
+ create(document.body, config);
+})();
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 00000000..781b6fb8
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,271 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+async@^2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+basic-auth@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884"
+ integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+colors@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+corser@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
+ integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=
+
+debug@^3.1.1:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+ecstatic@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48"
+ integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==
+ dependencies:
+ he "^1.1.1"
+ mime "^1.6.0"
+ minimist "^1.1.0"
+ url-join "^2.0.5"
+
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+follow-redirects@^1.0.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
+ integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
+
+fs-extra@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
+ integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^1.0.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+glob@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
+he@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+http-proxy@^1.18.0:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http-server@^0.12.3:
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.12.3.tgz#ba0471d0ecc425886616cb35c4faf279140a0d37"
+ integrity sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==
+ dependencies:
+ basic-auth "^1.0.3"
+ colors "^1.4.0"
+ corser "^2.0.1"
+ ecstatic "^3.3.2"
+ http-proxy "^1.18.0"
+ minimist "^1.2.5"
+ opener "^1.5.1"
+ portfinder "^1.0.25"
+ secure-compare "3.0.1"
+ union "~0.5.0"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+jsonfile@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
+ integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
+ dependencies:
+ universalify "^1.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+lodash@^4.17.14:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
+mime@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.1.0, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mkdirp@^0.5.5:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+opener@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+portfinder@^1.0.25:
+ version "1.0.28"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
+ dependencies:
+ async "^2.6.2"
+ debug "^3.1.1"
+ mkdirp "^0.5.5"
+
+qs@^6.4.0:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
+ integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+secure-compare@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
+ integrity sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=
+
+semver-umd@^5.5.7:
+ version "5.5.7"
+ resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528"
+ integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg==
+
+union@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075"
+ integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==
+ dependencies:
+ qs "^6.4.0"
+
+universalify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
+ integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
+
+url-join@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728"
+ integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=
+
+vscode-oniguruma@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.4.0.tgz#3795fd1ef9633a4a33f208bce92c008e64a6fc8f"
+ integrity sha512-VvTl/jIAADEqWWpEYRsOI1sXiYOTDA8KYNgK60+Mb3T+an9zPz3Cqc6RVJeYgOx/P5G+4M4jygB3X5xLLfYD0g==
+
+vscode-textmate@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
+ integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=