From 474bd3c2f7e525aa95d8539d026b292ad46b8cc0 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 25 Nov 2018 22:19:02 +0100 Subject: [PATCH] Initial commit --- Client/.vscode/launch.json | 18 + Client/.vscode/tasks.json | 29 + Client/out/extension.js | 82 + Client/out/extension.js.map | 1 + Client/package-lock.json | 2138 +++++++++++++++++ Client/package.json | 64 + Client/src/extension.ts | 91 + Client/tsconfig.json | 12 + Client/vscode-extension-samples | 1 + .../.idea.UpsilonLanguageServer/.idea/vcs.xml | 6 + .../Lib/System.Collections.Immutable.dll | Bin 0 -> 302216 bytes UpsilonLanguageServer/Lib/Upsilon.deps.json | 63 + UpsilonLanguageServer/Lib/Upsilon.dll | Bin 0 -> 111104 bytes UpsilonLanguageServer/Lib/Upsilon.pdb | Bin 0 -> 44252 bytes .../UpsilonLanguageServer.sln | 16 + ...UpsilonLanguageServer.sln.DotSettings.user | 3 + .../DiagnosticsProvider.cs | 90 + .../LanguageServerSession.cs | 118 + .../UpsilonLanguageServer/Program.cs | 104 + .../Services/CompletionItemService.cs | 20 + .../Services/InitializationService.cs | 58 + .../Services/TextDocumentServer.cs | 123 + .../Services/UpsilonLanguageServiceBase.cs | 24 + .../Services/WorkspaceService.cs | 53 + .../UpsilonLanguageServer/Settings.cs | 18 + .../UpsilonLanguageServer.csproj | 24 + .../UpsilonLanguageServer/Utility.cs | 19 + 27 files changed, 3175 insertions(+) create mode 100644 Client/.vscode/launch.json create mode 100644 Client/.vscode/tasks.json create mode 100644 Client/out/extension.js create mode 100644 Client/out/extension.js.map create mode 100644 Client/package-lock.json create mode 100644 Client/package.json create mode 100644 Client/src/extension.ts create mode 100644 Client/tsconfig.json create mode 160000 Client/vscode-extension-samples create mode 100644 UpsilonLanguageServer/.idea/.idea.UpsilonLanguageServer/.idea/vcs.xml create mode 100644 UpsilonLanguageServer/Lib/System.Collections.Immutable.dll create mode 100644 UpsilonLanguageServer/Lib/Upsilon.deps.json create mode 100644 UpsilonLanguageServer/Lib/Upsilon.dll create mode 100644 UpsilonLanguageServer/Lib/Upsilon.pdb create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer.sln create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer.sln.DotSettings.user create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/DiagnosticsProvider.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/LanguageServerSession.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Program.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Services/CompletionItemService.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Services/InitializationService.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Services/UpsilonLanguageServiceBase.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Services/WorkspaceService.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Settings.cs create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/UpsilonLanguageServer.csproj create mode 100644 UpsilonLanguageServer/UpsilonLanguageServer/Utility.cs diff --git a/Client/.vscode/launch.json b/Client/.vscode/launch.json new file mode 100644 index 0000000..13b61b4 --- /dev/null +++ b/Client/.vscode/launch.json @@ -0,0 +1,18 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +{ + "version": "0.2.0", + "configurations": [ + { + "type": "extensionHost", + "request": "launch", + "name": "Launch Client", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceRoot}"], + "outFiles": ["${workspaceRoot}/client/out/**/*.js"], + "preLaunchTask": { + "type": "npm", + "script": "watch" + } + } + ] +} diff --git a/Client/.vscode/tasks.json b/Client/.vscode/tasks.json new file mode 100644 index 0000000..7f5b171 --- /dev/null +++ b/Client/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "compile", + "group": "build", + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": ["$tsc"] + }, + { + "type": "npm", + "script": "watch", + "isBackground": true, + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "panel": "dedicated", + "reveal": "never" + }, + "problemMatcher": ["$tsc-watch"] + } + ] +} diff --git a/Client/out/extension.js b/Client/out/extension.js new file mode 100644 index 0000000..ecd425a --- /dev/null +++ b/Client/out/extension.js @@ -0,0 +1,82 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// The module 'vscode' contains the VS Code extensibility API +// Import the module and reference it with the alias vscode in your code below +const vscode = require("vscode"); +const languageClient = require("vscode-languageclient"); +const path = require("path"); +const fs = require("fs"); +// Defines the search path of your language server DLL. (.NET Core) +const languageServerPaths = [ + "server/DemoLanguageServer.dll", + "../UpsilonLanguageServer/UpsilonLanguageServer/bin/Debug/netcoreapp2.1/UpsilonLanguageServer.dll" +]; +function activateLanguageServer(context) { + // The server is implemented in an executable application. + let serverModule = null; + for (let p of languageServerPaths) { + p = context.asAbsolutePath(p); + // console.log(p); + if (fs.existsSync(p)) { + serverModule = p; + break; + } + } + if (!serverModule) + throw new URIError("Cannot find the language server module."); + let workPath = path.dirname(serverModule); + console.log(`Use ${serverModule} as server module.`); + console.log(`Work path: ${workPath}.`); + // If the extension is launched in debug mode then the debug server options are used + // Otherwise the run options are used + let serverOptions = { + run: { + command: "dotnet", + args: [serverModule], + options: { cwd: workPath } + }, + debug: { + command: "dotnet", + args: [serverModule, "--debug"], + options: { cwd: workPath } + } + }; + // Options to control the language client + let clientOptions = { + // Register the server for plain text documents + documentSelector: [ + { + language: "upsilon", + scheme: "file" + } + ], + synchronize: { + // Synchronize the setting section 'languageServerExample' to the server + configurationSection: "upsilonLanguageServer", + // Notify the server about file changes to '.clientrc files contain in the workspace + fileEvents: [ + vscode.workspace.createFileSystemWatcher("**/.clientrc"), + vscode.workspace.createFileSystemWatcher("**/.yup"), + vscode.workspace.createFileSystemWatcher("**/.lua") + ] + } + }; + // Create the language client and start the client. + let client = new languageClient.LanguageClient("upsilonLanguageServer", "Upsilon Language Server", serverOptions, clientOptions); + let disposable = client.start(); + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation + context.subscriptions.push(disposable); +} +// this method is called when your extension is activated +// your extension is activated the very first time the command is executed +function activate(context) { + console.log("Upsilon extension is now activated."); + activateLanguageServer(context); +} +exports.activate = activate; +// this method is called when your extension is deactivated +function deactivate() { } +exports.deactivate = deactivate; +6; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/Client/out/extension.js.map b/Client/out/extension.js.map new file mode 100644 index 0000000..1ec128d --- /dev/null +++ b/Client/out/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,6DAA6D;AAC7D,8EAA8E;AAE9E,iCAAiC;AACjC,wDAAwD;AACxD,6BAA6B;AAC7B,yBAAyB;AAEzB,mEAAmE;AACnE,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,kGAAkG;CACnG,CAAC;AAEF,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,0DAA0D;IAC1D,IAAI,YAAY,GAAW,IAAI,CAAC;IAChC,KAAK,IAAI,CAAC,IAAI,mBAAmB,EAAE;QACjC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9B,kBAAkB;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpB,YAAY,GAAG,CAAC,CAAC;YACjB,MAAM;SACP;KACF;IACD,IAAI,CAAC,YAAY;QACf,MAAM,IAAI,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IAChE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,oBAAoB,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;IAEvC,oFAAoF;IACpF,qCAAqC;IACrC,IAAI,aAAa,GAAiC;QAChD,GAAG,EAAE;YACH,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;KACF,CAAC;IACF,yCAAyC;IACzC,IAAI,aAAa,GAAyC;QACxD,+CAA+C;QAC/C,gBAAgB,EAAE;YAChB;gBACE,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,MAAM;aACf;SACF;QACD,WAAW,EAAE;YACX,wEAAwE;YACxE,oBAAoB,EAAE,uBAAuB;YAC7C,oFAAoF;YACpF,UAAU,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,cAAc,CAAC;gBACxD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC;aACpD;SACF;KACF,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAC5C,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,aAAa,CACd,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAEhC,iEAAiE;IACjE,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,yDAAyD;AACzD,0EAA0E;AAC1E,SAAgB,QAAQ,CAAC,OAAgC;IACvD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAHD,4BAGC;AAED,2DAA2D;AAC3D,SAAgB,UAAU,KAAI,CAAC;AAA/B,gCAA+B;AAC/B,CAAC,CAAC"} \ No newline at end of file diff --git a/Client/package-lock.json b/Client/package-lock.json new file mode 100644 index 0000000..a4ef69f --- /dev/null +++ b/Client/package-lock.json @@ -0,0 +1,2138 @@ +{ + "name": "upsilon-language-extension", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@types/node": { + "version": "10.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", + "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==", + "dev": true + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-assign": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", + "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", + "requires": { + "is-obj": "^1.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "event-stream": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", + "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", + "requires": { + "duplexer": "^0.1.1", + "flatmap-stream": "^0.1.0", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "requires": { + "kind-of": "^1.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "flatmap-stream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.2.tgz", + "integrity": "sha512-ucyr6WkLXjyMuHPtOUq4l+nSAxgWi7v4QO508eQ9resnGj+lSup26oIsUI5aH8k4Qfpjsxa8dDf9UCKkS2KHzQ==" + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "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" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==" + }, + "gulp-chmod": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz", + "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", + "requires": { + "deep-assign": "^1.0.0", + "stat-mode": "^0.2.0", + "through2": "^2.0.0" + } + }, + "gulp-filter": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz", + "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", + "requires": { + "multimatch": "^2.0.0", + "plugin-error": "^0.1.2", + "streamfilter": "^1.0.5" + } + }, + "gulp-gunzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz", + "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", + "requires": { + "through2": "~0.6.5", + "vinyl": "~0.4.6" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "gulp-remote-src-vscode": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.0.tgz", + "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", + "requires": { + "event-stream": "^3.3.4", + "node.extend": "^1.1.2", + "request": "^2.79.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-symdest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz", + "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", + "requires": { + "event-stream": "^3.3.1", + "mkdirp": "^0.5.1", + "queue": "^3.1.0", + "vinyl-fs": "^2.4.3" + } + }, + "gulp-untar": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz", + "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", + "requires": { + "event-stream": "~3.3.4", + "streamifier": "~0.1.1", + "tar": "^2.2.1", + "through2": "~2.0.3", + "vinyl": "^1.2.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-vinyl-zip": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.1.tgz", + "integrity": "sha512-OPnsZkMwiU8UbH5BMlYRb/SccOAZUnwUW7mQvqYadap8MMdgN7ae0ua1rMEE2s9EyqqijN1Sdvoz29/MbPaq9Q==", + "requires": { + "event-stream": "^3.3.1", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^3.0.3", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "queue": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.0.tgz", + "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==", + "requires": { + "inherits": "~2.0.0" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "requires": { + "mime-db": "~1.37.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "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" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "node.extend": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.7.tgz", + "integrity": "sha512-7Firgqanbd7UtypwBezNTEuo9eHKtEXd+pD96Aj4wai6Q2vM1S38X+MZvR7sQv5E5pj2TZ9j0Am4dLfc6EvKsA==", + "requires": { + "has": "^1.0.3", + "is": "^3.2.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "requires": { + "once": "^1.3.2" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "requires": { + "through": "~2.3" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==" + }, + "queue": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", + "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", + "requires": { + "inherits": "~2.0.0" + } + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, + "sshpk": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=" + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "streamfilter": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", + "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "streamifier": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", + "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + } + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "requires": { + "has-flag": "^2.0.0" + } + }, + "tar": { + "version": "2.2.1", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "requires": { + "through2": "^2.0.3" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "vinyl-source-stream": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", + "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", + "requires": { + "through2": "^2.0.3", + "vinyl": "^0.4.3" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "vscode": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.21.tgz", + "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==", + "requires": { + "glob": "^7.1.2", + "gulp-chmod": "^2.0.0", + "gulp-filter": "^5.0.1", + "gulp-gunzip": "1.0.0", + "gulp-remote-src-vscode": "^0.5.0", + "gulp-symdest": "^1.1.0", + "gulp-untar": "^0.0.7", + "gulp-vinyl-zip": "^2.1.0", + "mocha": "^4.0.1", + "request": "^2.83.0", + "semver": "^5.4.1", + "source-map-support": "^0.5.0", + "url-parse": "^1.4.3", + "vinyl-source-stream": "^1.1.0" + } + }, + "vscode-jsonrpc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" + }, + "vscode-languageclient": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz", + "integrity": "sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q==", + "requires": { + "vscode-languageserver-protocol": "^3.10.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz", + "integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==", + "requires": { + "vscode-jsonrpc": "^4.0.0", + "vscode-languageserver-types": "3.13.0" + } + }, + "vscode-languageserver-types": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", + "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.0.tgz", + "integrity": "sha512-rgptqKwX/f1/7bIRF1FHb4HGsP5k11QyxBpDl1etUDfNpTa7CNjDOYNPFnIaEzZ9dRq0c47IEJS+sy+T39JCLw==", + "requires": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/Client/package.json b/Client/package.json new file mode 100644 index 0000000..215f519 --- /dev/null +++ b/Client/package.json @@ -0,0 +1,64 @@ +{ + "name": "upsilon-language-extension", + "version": "1.0.0", + "engines": { + "vscode": "^1.29.1" + }, + "activationEvents": [ + "onLanguage:upsilon" + ], + "main": "./out/extension", + "contributes": { + "languages": [ + { + "id": "upsilon", + "aliases": [ + "Upsilon" + ], + "extensions": [ + ".yup", + ".lua" + ] + } + ], + "configuration": { + "type": "object", + "title": "Example configuration", + "properties": { + "upsilonLanguageServer.maxNumberOfProblems": { + "type": "number", + "default": 100, + "description": "Controls the maximum number of problems produced by the server." + }, + "upsilonLanguageServer.trace.server": { + "scope": "window", + "type": "string", + "enum": [ + "off", + "messages", + "verbose" + ], + "default": "off", + "description": "Traces the communication between VSCode and the upsilonLanguageServer service." + } + } + } + }, + "scripts": { + "vscode:prepublish": "vscode-install && npm run compile", + "compile": "tsc -b", + "watch": "tsc -b -w", + "postinstall": "cd client && npm install && cd ../server && npm install && cd ..", + "test": "sh ./scripts/e2e.sh" + }, + "dependencies": { + "vscode-languageclient": "^4.1.4", + "vscode": "^1.1.21" + }, + "devDependencies": { + "@types/node": "^10.12.10", + "vscode": "^1.1.21", + "tslint": "^5.11.0", + "typescript": "^3.1.3" + } +} diff --git a/Client/src/extension.ts b/Client/src/extension.ts new file mode 100644 index 0000000..5dcf853 --- /dev/null +++ b/Client/src/extension.ts @@ -0,0 +1,91 @@ +"use strict"; +// The module 'vscode' contains the VS Code extensibility API +// Import the module and reference it with the alias vscode in your code below + +import * as vscode from "vscode"; +import * as languageClient from "vscode-languageclient"; +import * as path from "path"; +import * as fs from "fs"; + +// Defines the search path of your language server DLL. (.NET Core) +const languageServerPaths = [ + "server/DemoLanguageServer.dll", + "../UpsilonLanguageServer/UpsilonLanguageServer/bin/Debug/netcoreapp2.1/UpsilonLanguageServer.dll" +]; + +function activateLanguageServer(context: vscode.ExtensionContext) { + // The server is implemented in an executable application. + let serverModule: string = null; + for (let p of languageServerPaths) { + p = context.asAbsolutePath(p); + // console.log(p); + if (fs.existsSync(p)) { + serverModule = p; + break; + } + } + if (!serverModule) + throw new URIError("Cannot find the language server module."); + let workPath = path.dirname(serverModule); + console.log(`Use ${serverModule} as server module.`); + console.log(`Work path: ${workPath}.`); + + // If the extension is launched in debug mode then the debug server options are used + // Otherwise the run options are used + let serverOptions: languageClient.ServerOptions = { + run: { + command: "dotnet", + args: [serverModule], + options: { cwd: workPath } + }, + debug: { + command: "dotnet", + args: [serverModule, "--debug"], + options: { cwd: workPath } + } + }; + // Options to control the language client + let clientOptions: languageClient.LanguageClientOptions = { + // Register the server for plain text documents + documentSelector: [ + { + language: "upsilon", + scheme: "file" + } + ], + synchronize: { + // Synchronize the setting section 'languageServerExample' to the server + configurationSection: "upsilonLanguageServer", + // Notify the server about file changes to '.clientrc files contain in the workspace + fileEvents: [ + vscode.workspace.createFileSystemWatcher("**/.clientrc"), + vscode.workspace.createFileSystemWatcher("**/.yup"), + vscode.workspace.createFileSystemWatcher("**/.lua") + ] + } + }; + + // Create the language client and start the client. + let client = new languageClient.LanguageClient( + "upsilonLanguageServer", + "Upsilon Language Server", + serverOptions, + clientOptions + ); + let disposable = client.start(); + + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation + context.subscriptions.push(disposable); +} + +// this method is called when your extension is activated +// your extension is activated the very first time the command is executed +export function activate(context: vscode.ExtensionContext) { + console.log("Upsilon extension is now activated."); + activateLanguageServer(context); +} + +// this method is called when your extension is deactivated +export function deactivate() {} +6; diff --git a/Client/tsconfig.json b/Client/tsconfig.json new file mode 100644 index 0000000..cfc53c3 --- /dev/null +++ b/Client/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "rootDir": "src", + "lib": ["es6"], + "sourceMap": true + }, + "include": ["src"], + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/Client/vscode-extension-samples b/Client/vscode-extension-samples new file mode 160000 index 0000000..fc3c2f9 --- /dev/null +++ b/Client/vscode-extension-samples @@ -0,0 +1 @@ +Subproject commit fc3c2f9dae32404e6556cf5bcc0b666fedbc3897 diff --git a/UpsilonLanguageServer/.idea/.idea.UpsilonLanguageServer/.idea/vcs.xml b/UpsilonLanguageServer/.idea/.idea.UpsilonLanguageServer/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/UpsilonLanguageServer/.idea/.idea.UpsilonLanguageServer/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/UpsilonLanguageServer/Lib/System.Collections.Immutable.dll b/UpsilonLanguageServer/Lib/System.Collections.Immutable.dll new file mode 100644 index 0000000000000000000000000000000000000000..049149f17929322dd246d994780d0399a24cf90f GIT binary patch literal 302216 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 E1Ckq}rvLx| literal 0 HcmV?d00001 diff --git a/UpsilonLanguageServer/Lib/Upsilon.deps.json b/UpsilonLanguageServer/Lib/Upsilon.deps.json new file mode 100644 index 0000000..2b86f15 --- /dev/null +++ b/UpsilonLanguageServer/Lib/Upsilon.deps.json @@ -0,0 +1,63 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "7417c30610758d349c0e111cd15f02499f764b67" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "Upsilon/1.0.0": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "System.Collections.Immutable": "1.5.0" + }, + "runtime": { + "Upsilon.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "System.Collections.Immutable/1.5.0": { + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "assemblyVersion": "1.2.3.0", + "fileVersion": "4.6.26515.6" + } + } + } + } + }, + "libraries": { + "Upsilon/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "System.Collections.Immutable/1.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RGxi2aQoXgZ5ge0zxrKqI4PU9LrYYoLC+cnEnWXKsSduCOUhE1GEAAoTexUVT8RZOILQyy1B27HC8Xw/XLGzdQ==", + "path": "system.collections.immutable/1.5.0", + "hashPath": "system.collections.immutable.1.5.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/UpsilonLanguageServer/Lib/Upsilon.dll b/UpsilonLanguageServer/Lib/Upsilon.dll new file mode 100644 index 0000000000000000000000000000000000000000..f8812c599f682a8f8d03f113bf9518c68ad18dec GIT binary patch literal 111104 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õh>S#A^S%QbPv2$VYl`ceUXsnEnSxNG5_T#5Ft)Wl@; z#Q9a42poye z0(}7b9Q2)C7rDAFhJi+c#_IuMGiVs-T+k(;y}CmT3UG*O&}7gI&^%B(=wxl7;-PO-reB;0{PA`espS`_FKFR>fTf59Tz87#^{qd_&GI;StpE%rLyVn66+(4C;i zK%dKSk0=cCAj~5M!Mzi1Io#2p8qkIy<`E(eWB7Uk^epIQ&|4tkGQt8~AtD461xf@B zlg~rN7FVd)1G)xulYAB?eszV3nBXvx4C)KY3uYeSVpVXsI2UvYXfJ5Ld>$b_4~`JJ zJ3<75lI62VQR|Krvq7yK-i24(Jyx^et#yNR&7? zBw9E_qeU{PAE*d47*qk83R(tQ4|)US2#XdoK+T|gKtF@VhDVD#Krewl200?4#YoWg zpa($C$Y{|D+6a0G^a|(~kjEP>;z4K59 z>7q4}I0N#@5dV;V;=aO`)K?^e486@1%}JSJE9gSdm7se-?}NSqB_wBwPEZ$U2k30j zMWEfFBcL}y-+}%EvZrK;I8cAk8qhVM^wca-2xJ;OKwChMgPhqpA{#UbbUo+*s5U1@w1c`p zj(#~}D5wQ=3Fv*$_}mFaF9WI=#PjRcJc%`GYvSAuQ_-3K}hdZMUEc#DgW zwn&u1oe7!`Y5+BX+KY?DJ)lFNW1v?+--CWDE)nBPO2kQ^#h?|S)g`6krV`erR2-D< z0P(Mq0V1??fanV<0u2X^12vWo6d!_q2K@(=GGLIX2Q`B_1`NiSIaoXn_bBL{0cB#) zz%ulWGEok9I_RWe0(}7b z9Q1FHHh7qr1zG@F3fc(TI(WEv8T1yYFladBKU{nO|L364vf(1StXy=1E&yE)+E+G0 zd<^;p^an^EQXwjbREqOJmx8VU-3>Z8q)J2&trAI~kug;w1MUdWn4u%Z&7eb|BcNx7 zjuHcgjS|B^BSGUq4WOHbjTT>m{s8@4I$G$%M~mR$V?+&T8K^mbjA((o2DA~h6?8i2 zJkV938-|Y+zk;0QV?`(^8k7Xe0Of*;L1pFD;w+FpyjomX&i3TLYOxE?t^)m5P%UnN zdj#}7$UR~l>M~B;1NRW<80Zzy+as86ocPdmzm@KIky|ld6obk@6%~v#L7Y)B0b|z$ zu^aBypc_HAgN}k;0=)@xR89~ckQbByN(1G93PDRMYs6mAAOmKQc7v`4-3YpU zG$TzFhep?m|AGR>)QTujA*gapo%jV5IJQp2f>Op#6Z1j0gYE+z20a0K7W6X6Sv^gR z0i9GmUEB_O6m$&qO7#qpGj4|11-b|H^EiXEELi#pI8P(5fhXbWg3=v>e~(DgMc7eV5- znjmox=n&|LKg=bb@%z>IK7X)y<%HpG@#_i0J)&fyFR$adA!762gx_$&@KEv03B$w0 zJ0}be7k{2GJVKOAIv(G?XOUvk3B$dj{)FK%V&w_LLL# zsWsvm@1y?6^5~HYAx)TTH&p&6$zj`Pzkr6$1<}(KFs#b zw%{Bkeh9+)DVXVVE%Ea#IA4j+^aTp;1Kb}q_m$86+(HGjK1B*9f5jGDqF|O?3LIm~ zi|Mg$@MA8T2Z;zjt}$^e;&bDmpNX;G0KGEWzYOw=H}fO^LqI-EeuhG$eYijHFyI6; zKJjqiL=)ctTn?OM;(Xu{(7F^8V{Z*Q--EePRfXJq;T(uYDwy$U4En;!4~;$*kFnsf zN_w^*bykf(-hye2so|8FiYG$jeYg=}lN3z;CM%fbaYFFLC%+uLRm?i7xXyy7S@3iV zo}rZ2iLjXpCO@+jOnzot($BHrxfXnq10)s`osRUOu>x59Hf@dHdFBmB|h_8spL;yn-t9anl0&DEV$KzS1IY4 z|7xW@n17psnSZ+_eTN0FvEa2zdgi}QDUZ6cUct<_oNK}7DVSs1`3h!!7buwh;X(y7{2~S8*h*ZiV2&Nc1>leKJ?)=Mfcu;L{%PV8 z;DzvCVd4S6r^7!PbSdJOnenrMF9RN8;tPQ<2OeeO3rsv7nDV8(cOiU&8GfCKYk|2z zI~=qd;dN&ChbEo}Tn_(W&>n=(H^VuW?gd_8V$NY#053E#<6j9}Z({PZ4|tJ@-!t)2 z;1c-H2VI5m6=pc?*{gw@Ow9HrZUJUnQr^U^zyskYkJkXVnelH1-VfYvV(R;~3T9s- zUWahnHq7HX;Pqzwbl~fOH<+06y8(EUiBo`Y1m0|7=6{odsqZ%fcbVZ{;9C^TzD|59 z!dVx}|5mibb~ApPg4upepxY3>!wk0r9{~9<=d;@__znxc(}M3(^5gh$H!Lz=ezO$J z@@ql&fOeYYv%Gr|--pT1eF}C1-*1Wk09wu$KOSKZDwydHDwzBnvZQ}V31|Al3TFC; z70mRHpnksc7Au(bnFo3lbh=WX$1M1W1wW4beDPV{6AET|Pg>$XWx@Zj;HNG484EsY z!OvRoF^nQUe%cZCoPx>U^9m+^FF@aX@mB-CXu&U8Fvnb9e75&17W}FOzh=R&TksnS z=J@-jf|>tY3TF7*3TF5_3V*EMy9#Fg-cvB+zpr4%|EGc({{scH|9z-n+S?yl@W&SX z3F4^o`P70xv*6E_^z{h)Lc!$kO9hj^uPo`mw%~6p_*)D94*k)`AKTl9ssAfM-y{4C zWjy&o!7TqrkT0C_{K>& znZL*8_NRXo_ECs}IlqJ|m}{wUOL-9rX8(#(^3MjwRUUu-tUs>u^un=9e5Q}H_49{w zzK&Ng`%i*`BY+bXoB^Dq;K{(r3gqF~l1Rl!_q_ObAnreN}yu3**&SBU)lGQ6*X z8IG$(y~49>`F_m#CfkB@6wLJf6wLO>RWQ@%DL5TCU%}Uy_-ypY>F`&X_#EKb@E3v# z5dS>0zupGiU%~G%j)Ez_A_ad4T&!T)U&QAlzf$;bGVuk#)8J1s@rA(Wz)yRp1o1C2 z%YP8EBEAIpe1!Ee!!HHqxX$`9{4!w5J=MgQ11~pmDZ+OF^WQ|!0N~vw=G;QO7nrg; z)5KQ*({^qJ4Mg}pGkzuTAmFP^Onc3T!{P4(8jSF(&2Y-JOu-evLx8U_!)apwqiZr@jvdzTV6)6S!Q#*O~Yxgy+M*0yF~QH=FV209ODXFfrE~ zmB4qJ_(tF=;CoC=nU4g1z{I%jCGkPvkqF~sh981w65zWa#yM=pr~Zz%U|bFB6^<)n zy)dqd^}^$9IFUE=+m8HvnDb2+XgtCnF~c_lPf#%RwMN0*FP^C27~n|?9&6%9kzXkM zVW7zff6UCE?K4Hev`42ZnB!F~@DVdU^CNy-$*&Ih2{WAiVH)t0CT5w_73=|?pp|rvA)TFvpXV6wL8+o`PvR5kCd~Sht-f{s%C}PU`1; zggXgTn^X8LUkW?Rn&H6r{&GrZZvp8)rVKh4CS0uP3t zZLk9IKQrUgz99Y_n7Zr>{{om}E61pn2>;TIPuq|9YhcPN*Tmldp9B9qP!qzxHRJzg z;_rbu_6{)d55TN1iSd5~=Dynq6aNH!J^WnHHzWLKVE)6kQHlQzJOh~e)`IZ=nBkOf ztAg2H#5S8z|5Ouez?JZ`&J4E$uQBl|U>%tM{s~$Q>@YFMk2YYZiOF9(u*<}|fjfXh zO?n*s`Hqf7*`JJp_%436qaa|fWSqBQQS>8T` zZ?cv7G5hx^3f6!(E4Tx=3wij`lizL&-eSR9EqI%fAIF#Nmhc@Ge41^Tzr1L~->G2o zce;XiD463(G3X40N163y{41qoQ!vZ-VfGc4e?G#a zmGUpJjqqdI2p6I}UpV=>$bv6c;*@hVQfBs}$@;_|+DEuCd{!mMI_V-+l!%ziSmto4|*C^1Tk>F^YVz zNB%xcdEQ{bH(Kyb7JM`K^`&R|wHYJ?xdB75Wy9M828|}}Z^1IU#ewPx? z^6yqK>vNBSDbIUt)&BfKfbX~D_n>WpKb+(FK?QSuIiz5we@Ma1|FD8-|2(W<%Ht6Q zbN+bLHpyQe>-U&~sb5DF%=YwQUwb|d{$tJdWPP7N{d}1H@ks?Uzo!&T{rQI_{nJV~ z<3FR|BH*J6Ccn>G(jT+n=al&DKhGeH(VX8x}! znEn5Cr9ATUhJu;?O$&ZY!OZV%1^)s}o5&|`%Ku#pe$Rs6x8Q$T@CQo%l<$WMX89i} zcqH)0mh_)k@Taz9KYy(6X9{M1pDUR1|H6{~OAG$Wg1@%lZ!Gv*h2H|?|DA$a{`U(0 z1o#I9v;IF?^7}~%XZoKNO#Xkteul3-nEqDNIrKW2V-jm?kQzOf2sc$@{}^)`QehU4|N zUKp>n`7!fLQp)Fg2(P*M!kQX$a@O2m1?gI`9%;+Ly!`z!w8^KF8~S*fRvcKk`3N zo9D*}5`z@X_8F{T#xGMa+hd4=9l*mBO#K+HVCGk@V1|!SFvBa*K0f})Po)J{S@1{& zv;5K8LVtSZht~rAnEa1b!kK@yf*C$e!K~kS1=Bv70Gw&ckKhf3kwP=ANQp>c>;(PX?Z&V9Il@f^&gS0?s$fO9!3@TwvmC;Q7G) zP0aEaD469hR50b!pe^;sXZTVDa}Qz}aG{wW<-1(LtZ$=&S)UaOX89`>%=T>38vXe_ z4crV|Wagg(+=5I>6#iSaWs}!6Myc)RFj6WQ>4S0Zw$xpk2$xnxZ$Vd`6~n71U$^d9B)ohuot)+<@v&y z{}yeHA5$J%6VZ|8$wUpV={z=AIXKfZ7;vhm?Z5SL>T@fhU)IQ-22BBZZ2 z%VT~QTks_oe5nOrX2F*ue_wt#AirI}6U_V%0`CT%XkyNfdw?gIn0q#RwNvC9*zn5x zy;lHFF~h^~>`Dc*{r4%DQK^R`U7gr;Es+k|{>uZ2(O?wpvB z=lRBdgikZWXPbDs8O}U!(Y9hw9U0>vL?Lcf@Lu5CEck#0-)_NoD46GOn#nFFvt5R6-<7fQZV^Bszv$pXZg=s@G%R1PQmQ| zFKV&=^pw||T7n;M1^z%w_Tx7cycvGZe_tScrl~JHGw|UZX7~@tZ$a zpMmgN@Z-zB4E6QlR)mqCIra>kDH;6-pW6_N6#N;&S16eEYqMwh<5Rvq%(^hYlTkju z-oSs{Ti>E!@_V|1ncw*eW_>TS5A>&}zFn?h&M&(xc(;PtANMMl>90^Q(_dwu?3roX{H&z~Rd6CbXGe-Y>a!snUtcu>LR@Xr9`3n;mx;C>eu?)8WT=R%DIdMk;*EMb;=7zjj#* zU3>$7fQ;|swp7M{QpRU0P3B;iX?4N00b(qE9Wrg8OzV{V1c{5lgG(4WTrX><{!(td zsZCDEl_r8E&y1sse6&u0h(sKR;BG~r7>Qr(WFZviq%ya25X!IKFfC6d?Kl%=+W#Un zKwK#EH)67;HZc}YG+9%-D>c=fYftCi?9zNb*vb_z9-Zr>~G5w??fq@xCi;zrT**U0{8=PI?Fh$k%pZl zhJJ)6y8MMLF4MAh>hk~@>M-MMlzj3RYjC91WWTdxUBZ00JIFN;pYN0P9l{5K{NQUr zc%q96@EL%8WGO3}nkGEeG>E_1-VB=b23zu3dUbGwun)~9^X>j^%RgnxXliH9W5 z+azx`SuQn1m82$h1{_JrP-hHn(ebq})|dG>qz$JQ)XH=z`ylHLq+78J{x8*PrmK$>#y$2ZTCs#?IW>ukB(s^3lzj za)hzTzNX2&QM);YJR-}bp6fD)0Ffi};Rp~YZ?5w!oM~A)zKI3DU9k0a**gLx=T4c5 zrzVWavmMPGX*uHQVljRLrDU9vAD3BcLvCzk+}M{K8vbtSH`?8hOd{fF;u|T4_wZ|s zQNHoH3QzczDN5duCs;7sT9Yk~uY*Zh8Nci`%g3{BJ` ztzDGLx)}4(<+4WX>9|V+e}MdTh%P({6qn=IDehvR>_0FR8h%(%NaYJyWBa|<$Ii*&6(Y(!d%3@IZ3b-plO%l%>#SyR-v`XT#(QRdLiPtA=gL^7yyTr?DPJ_D>L~G?mtpY30u~=TWYubX&2CyGsnQAH-_yVKLtR1Xf|sW99WOR$KqX3hPU(qJF^2 zN!Yg718k?;-L~`Xv9=rR!?gqU5!!?H1=^$bo!Ve%?>)9z@^`)by-)t8uF*x=RIyeU z-BT;p>*DLFU=WwH>N19v4_>gKsdaIEQ+uIU+}hk+UnJHR8NOn%7XM2`b3@1S)+M9r zJL*OIBC(`#u~@pM1wZwTO$|%L+WMx(C88PBx~ieAzGaD6*@&N}`u2{I%x_HV8o)Iz zi=->#bhNfjlzEz2i-wjZ6B;_#wYDK0dGUe97N2iPtIxN%skObKs;z!;0}E_1d}~_j z+d3z+eB?c)tzmJ)l7<$cg?`-L)Uq7jJNrPzNPt%(E8TDFLWUVi!4w)YW(6C4Q~Tvy#|q5TMXRT($dgoc-v(%hBr*>Lz0*tx?psw>K_pX>MrgnAWAbtFpuyqxBZ&Onp8b&m>pcJ;Dziw4)8k?3hv>^q* zqU%HTZEZfUPtnKuB`JHl0()dEq*6{^2PGA2+8f$9f*AdNimwAv57spFKz|1Hu)LwY zv0aWHDsEW42BV-%H>DNv*R(M%y)6yv=&T~uw;{@!dL%T40Qt!0ZC$jYVR1)0)xD#E zU8P;&e6kEQ_~59uvZ2F2g3;g9u(U(8H7;9@--dQ{FJF_Hd5H$7ew{C8--tTK9GrRr z{DmuB)>j*`yuN)@!{Wx~`lczZjV&F2ZI=#Kv8QNwksp2+V?38lEtWR6!OKwsrzOqx z>y<&EPL8oX)i*JRw{dJwqgB~v^_?7|IGIq1F?eIB=G@THDQ70}Rdnp1^KT5BxZ~H> zaf`Q>F8poL)Dcevz7&3Lop^Zi)!M$*?_KeA=V@cdp8e8)=f6Ab)3D@gZ)kqDINbX zM&I^=#qB};h0WoKPL9s=M!xv=tyQv|t=eM4`L-#n*MBTQwJq zY;9^no1+r#1!EhanvILY&D;yB>M>SP0YiLGpf>0TZXcWmA-Zh!wvD!~vu#~_xVc#u z92AW2&tmzMs5=9(rt733Ioj*-`uqiPo*Vb)AVARg5tKTO-JObk~KRV6&AdXoqb}Amki0y`!-S zLuW&KG>rk{d*NeR+nONKNN!D+F?tP?B{SOg~ z0$`TAJPxiMbX;fR;t*_VoAITh&3QU%*{q8Y9lHtF@URUgYB=2N$0D%@qzRA7ajd>s=k0=Ya_1F+ zoi#d~=?-CYPvtTqB;KQgLuUXtUF;%W?+g)M&54H9I`JW3Q5}lAK4r_%4DKwCCK9m; z#)>645CxZ-u(zP&W5)P;xMrjs$Wqey4Ehix67)_N#N^be6in_S1WOUKSL-6K(3e4u z-sz>Nsa`1)Aa-1%nIawUbm_#+kxupkPk4`*s7k#>we?r;?|&4Xav=EXJHNQ|sqX9R zLNa$GB<6Ba77_?$!o4in;iMV|bCoZ2w^Zr~PeL$7U$?5hrFWj&rh3PG`&IRZmIvNG zrT)M(pC>kbo*Dl9P=B6~cTb+~B<307NuU!S?uqq{1O9=cVA7iAMGbA4e+{Tx+}60N zgQLl~7U=0x*uU+;&<>0p+xFYGJrs@!pk+yY8w|=tZLrrG+QX4+<6__Zz>&?b+1tK9 z)$YB%Wm4vvl+b4<1YGmR`lhA}TfNR^^6d%pc*J1c86|A`YI2$$C&gQsBAv{>o+zwy zy}6KBG;~Q6QOEP0vU#%0JdPl|kvIY^VT_Np4NJ}OG5)WWnr>PJ90O17MpaI|z*DoP z-l#&Sh2#6Zr+3dPTm0Lz&(wGxEgksut)G1RZASZfb)gR{O=xIk?n1`FA@bWx|T zbMkVZE|%y{EU9&&txI)?h={2`*upTwr8 zpjXC4ga;aZcbMK8&i?M;y}1B96AVvIMR*+hwj~_>I10<%!Fe8+z*c8<0DAcpk$@Y7 z7{s#5pad9mLog0N`q=80GmU1ecNjBWSdSTN*aFd2^-HYJP>B%Vn7gBE$BrGBde?RQ zl0M?YCkM{Cb=03{)TST2F(pXuL&pZ@1wdE2_QXM0up0h0tM|QkEju_j=##r_|62LL z?Sa9cG*lhRSd@b4VX?o>Fth~X(kOl~!3>l$6xuW)EKjy%M7DGy<=(gM%}Md8$w({{ z|E~Pg=6HwC^j3ab@SYa_di(yNI|j@>_vlIKGRL3->9`ChxLhK4e<$jP_U_u#*CuRT zyF;K^u?~#k*h@EuDBQnv;!+mAlf}sttoDh`OYm{^w;X-vJ$K8S111g%x}kjNIUh9- zp7+Lc$I90k92qqZmd8Q5Ctp4c$tti3ZABRPNOt~}56I0)C34~#Sr11^NqMo-;`=*x zc5d-Lwf(90X4c*DWNrBHYYvEzhGh5n7i7s!Loz{zdEv^D4})_vAeSK?pID@MAsY{h z>BL<(Y+RXQiH|YrlWydbVYFc1Y_@(&7BgUv1@C6-<5bI^Hm!eNd`%+;+WNn3-MM5Yz{eE_rk3W346D);PxOC9M6I= zFPNpny6~%Me7I5NNTWx2%Vf=?a$=|df4cG+H+ye+>9w!l2t0HwyY-kWe#05N>Xv5i zibugySmP*vji+g%!mk6NMw#JR3BJvmzf;LGBfM8c*|)cy@yL36M8>45hi`6m&i>x$ z6M^}((TB34Qh9JR8tyA9DKsylXB{jz7}Vi;N7tEay(982dv5FA)7EaNxZ}%T!ak`! z;4Nw31XAP-4aNkr$!{w}h2*(8yJIAv)w;)7!_}}QzvsPSr%$Y1_R*{-`)-cA}w>rz~o2rKe*eS-7tut-d>xDyu%Yg?4-B2tXtPmgaL;dok{zXH4EF1zyUsw?Nm6j=!VWN)PE!_Qa^vj+On;Hg3w7{_)aK4ee7_zQ z8LK-}Fm!hY3jDp4VG+z`KeEYYHn^fMnS-g!;*mqqhRzsK<;DPktmSAQAhL9)Q}l<` zO-+!q0<3_pJwe9Y+FKdUe%pJ}*oWSBe;2#!?!jB{eJOWUV&I+6%KPRMLZJ-dY*JMj z`o(~mT053azUv)kCF>&Vo`%=1|8d^s~4E52{MJqZ!ihw}%9yRSm-0 z5h9ni)fOQJwANAFA${pg#?c+%I8p$UAJ zM_)c=o#yDw!4p;aYLwAUDF#y}0erCh6Zol1Qx!ZD`k>Y_IrF>z2+)O9h| z-)N*z^6A7+XEn}lMs-~Y;h-F>YgiaoThiy`0@%)HcABVIG3n4pD5q>$7cSqU)FPB> z!~9u}!-gSUccXSC)LQgF56|opMG}^o!o3DsTND8w{$Noc69pN`Q8AaT4aej-I~v;c zG}s%?{86FfiK&KMKntA)KW?^XN%QJZF(MXqMK6oQ8wSX*>j6!yz$}*B^&u8_c}x|@ z<`}Mb2H~9q6z(fUjuq1Gu5ma+xny^U3@7Yu_=1#D<~FZRJYFdYVx=xp6R^_gwnHgr zY9dY)Q??6qbZ_Y^g4K!$gSx}fnzDxs(PWZ2-Er88Ku?jQ9R8q`1L=w!oldSXhoQX^ zy0gJPbS1_K4T|7sg;okhOJg0{U(-TRjm^Ojh!%=BBQ^)wW~^M@U*He4EWznpYWGlI z-Akyl>FmyE#t1Qh&Df|rF-+0)E!0sWln2@=M~FbYg#nPg0jgW(f?UyLP8!f2QR;yF zWEIfj;W*wa?LG-jh8B@kpO}oTi|z(bxD9F;C{nqY9?8UL6tj+a7RX$~an&Esq8tc? z?H$Cy+eJ0UT*4vS9W9n(GbXBgt7nABbA$!rRV}cGyFjK7Yuvv)%kqcD`+Y^+(~#xM z49YnEVqlQ71q>X=Y95G<=)MjMN65A^74MvM--3q1(%^U+h>mL7jIu{a4K#EkUIf_| zqO_Cy!FF7IkbvurjN}$a9;&;pU=Z@6fe-DiTlm{JK{%M?c>8g0S<_0@5{0-fw{DI22d1o!xRGW+t_g-d5Ma(*SiUW_lk>demi`@=2fTN^ z^7-YR|Gx0pTUR_#`1D8LlsH9Qu1lwwOOSqKZ(FpFJvl84@g$rL-CxtTH%QohA1>+EJZosue_IE_<<3@~_TfH{|t^hr0i7CBAHc zcU1C&kL+G?(`_$4)%W}v_GOoDJhiD>a^RA6(cQ-4(o;}^@#!#6Y123NzX?+z@3%RyB4(x{i8L1uwTjWZ#tP zgL*i*ukK_^slEup9zDb~;1_msW?pPEX2-f;N$zA0j|6X&1>BD)ZyjY_0xTj#x zVDBxC7k54PQ}wckE`(@Kx7JJ8g zza86o_xd%b2TciibIbMvGh;7#=7uq{y&`1yb4T=-C^Exva-`!;Gn_1)hdBxUrM-EM zgCh_&$lj~Fw^6LqDL^S!Ic7ozd|I98ds?VW4v}eiY7=t6s?5Zn%*19*u16lWnd7~g zJiZu)y0jD{xcKvGoueW7_#t>YgG2FTE^CT)EOiD`Z+ypvY5Hat4-F!?NaS(h44l%5 z2`*6ivmYjxUtq4;6-$~Xvj>&m@j=;NMjJySD%9DVQXM^2Wn2d zHK29k51~22WF-7CUEPR|&!YK##eUx;zYlv$W(sUDnZ6-@A5Mk?kv*i+^Gy0|jz+Eu z3b1OII#f>9u|IQ?=tmZYaw`YR91pjs@b^^xP(DMM9=-LhzCbxxZOFpcv%6RBgu)s{MwftCPmj^J($JHJOhkklUS^b z+!JLI`y`5$Q83aTCkl2VWE9D~B?_ux7NkZgaCUmweqr1e?3>S3*Z@ODST6A_914l) z!U116)eUeux@T_pNW{V_(SyHdjad|u%Fs858=EK?`6I*>9f#IZgVEE&xFLu?0<^M% zdpQ`5Z1J=4u8YH&>CZJBWtVl&^Tgw&4~!90_0D44hfVHYnui@tYV>qW+&nInsu;o{ zMEcS+aHXv&#D$Bn%2FuI#O^i>S}+!IsY*hiZ|<$%7K8Zw_6GMzQcb|6D+ z3IySf42rAa#vz2>Gyr?pTLMvKB#PjMK?FAp0?cn~gpkE62C}eh6gHNEEFd>vI6>q%92naJ(5-PB z939jx7V>cxccW6c93QVav*E)=^H9y14v3>znZJWGSJGlkYqm7>2xN#M3-t;zPNsX$ zJl8zweevZNj^?hq?v=)pMN6ix|IV2auKh<&D`AG28)?{o-t0Kvp*t);%k=NQ9ME|z=fb%ggn57)_7#-r1VW6O!Bj4(VY2Bs zp-=-^~mN45BhO8s!V~L4HWxCT4m`-&h|F+%zpLAm3OAx_JH`j7SvWgpI8O)6 z1s7V=VVv*>8IIbh*Isn(Zg26?>6eV%cj-IBFQ|Y1w5~PZoZ0=KS+Y?>8`FWhUAQsI_fX7_N;?bD$-pv49RK4JLGMBPa~BFjPv~9_9S=+ISHm%`nB}&XF{~ zYKGumQw}ENaIF?{4L}=JIx)4Z3x~MMF|4rZrUzkeUKatG7Y5n7?sASx=NyUqORb}D zkQ5@SqXz_Y2dZi)X4IjcMp5nv!(S%nM2VN_&|Ua5kUyBj&1tlnJ{d*+K!@F8fMd1H zVy>qiGX%02%t)BLJv>12;GP10Fz1_@$sBzFAtD>50Qg*;G7RraZ^GzX$-xAzVTaN> z(`bU?1r|qVU%cLs)^$1};8fj1!zRgyg$|u<%$8&H&e?bY!rOHTv_x(N!qmY9dK>nd z!ys|y1dvXv#sG5e?*W*xOn~Kw>4Qm#TNsYj)SZm3yF6W2j-WMiKNzW|-b8cTw-PD_ z9;)Ps?-f&dWP%Z2?pJ6VN-;0EN29M%8?m?y=gx1et?Mb>IhE2uCVHovmH{npm)xJn zB;}>*%l+sO_GFI;T(=yHIQ(66Q4u!VYwNn6CSYHthb<#_StG@C*Xq;?C`Z?q7{Xx` zqW^P*Ml*-Q2Er&dgxv|od)KdsP^5{jZIv+Yy8b|Yq!~U;!?_&}rEzjVTV^7UywD?X z8oVCP7a?MiYc=0&$><)9#>U7l zCmR=zQY+*yS9u)!*}mNQ8=`4adLNyc|6;#;Mf+bm*Rw!^;m#&H+@|s2S2%Q&yq8- zjUHC#74xZtb!K_8sYBV+9HUm_{-G0RDOmEksI2mesD=Y(XB_tu62&N&VXAjO0~Sg( zv9OwlIxnCHW9q~~9_tTQ9LD-qiqxZ3Nv33m6J55m#+^;;C)=!H8toCHTYK6 zmL#m&U}J_G2R|5@+&t*R5Xm2?imbX5^C{GJgod*ZsTL@1*hJ{pmICM(j4u2YNNtQ% z+h{Q{kZK!ZjB;3WvvCFoiLq|%CrXhmhV5L%S9FYvRlav=dQVcflzQ79y!xqmcSVhj zN&RqHQBcJC{Bu9&d%{8wmG=qsFk^Weo+2McWXQ8?9$Oo874HTQ<0hKimWZSVfgAIJ zFa`vM&*kb?hRYx{oeY)z@4St+*%mcH`J{J9|q-(f{vLF2JOs0ZSdk99=DDwm`Yo)VtRjlRWR zPaX|M55BC`nFkG$cLvCu&=ZY4%VcAxAq6%&9;OyYSa|&lQ-6BbZz()*?w+QQ%q4{n zZ9Hwws_G9PxRyqk%UO!$f}Wc!v+$j4^uFw7&F;1;@5%Qx-GB9u*%=2zUP^rIvLRDf z?ce>hWX3hz$y+RxAgvCUCmEZkItB}(Y2$%XLmN&cR)EOylm88Q+V?|J??+ed4|1oh|mYM>m~2YmAt5*@EY?$DBGLQSujL zY|OiiQxsPb-@|mdyS9BTM2-CB;*ZzxO$j!*Q%B_>-Ky!|57 z!}3|5@ZNM@4>ncEkf7zJ+F#0i-Fsum7c1`D5n49tiK_SGLXX~wvhVT^)(hZ!7NuC!S>yyIl= z;Ie{8`@ZpK%Z7#}`|G}4|K!i}?6SioJEh1M1ViLyiXQ1mVyeKJ$d{Y&4PilZ%?095mf7y#hZvXI}Icrb<;kPYW^6cx^^vjKO zh6h&{wR4Qg;jx4~8No(?T-osHOrA{kTu($n9PX;(Fk8cxpg$r7^RD?kDFbU!_^C7* zIoOhpb;7#r;_1gH0Qr_PE{I>;0!z`5DcCNo+l0tH& z9*6&}9_w+#%+h-u!COneJJb8?u??SIa>KD#4nE%hr|fC(IJ+|A&X-d~-~g1X=diaX z1xvLZ9pXuYO$kw8q)3pJ?HQK;XASQ@)jMj+_VY(P>j->#NLTvGe=d6R!ltn&Gv73$ zJB$uSzH(+jzOv?F(`3!tWzExNNxsSII478YsnxgMQG3=MO&PfUrSlvUhOOF@`P@Jr?)l~0FHF{RawNKEk=Z?sdLHMz-CF8B&EBuRytA%5_paN& z3ZHb&t{eOIJ@?J1@v>CsQ0WB8<6_;F<)F@V?U8-nGZ*LQ`r(E^UNP!DLZ^A@o>KqZmnvoPzmB-A zg1Il!n}6$Ads?5;x#Pai|6s?crnAO9QDU4W2N_M}l9z#{K@)8?XtE+D13lBQzdIb~ zH2W`QU+8V!dCS4cU&nX67~Pp(-sg$$qHpOgG?dfW*>f6`cW@rAD+yOfEACV2hlk6# z%#^%b@nEOIc;${gDMpHaZal;;5b*==#lB4~)L|3)wD#wX%<{^Y$FY$ma3ycPcjYU6WfJK*Na8BMZZgjD16{mH!8Vz0=>x zEL;7?_yOk@MhrXWsw2nV8yWDmF}}gjvg!FLGKc?hlKz+cCVJ!Aa$ehCa>L}Rn=ig# zr}x`F$!{DmlsC{Y5}eu65)OtXoJYk$EBV>aG;ID>+WeKhI|+nj7`(o@yl0&I3lpz- zk45%d8?@=o`O9GollEJk}4 zp4dJxmzzCTF0n-!jW;B5C@mMBlcePvs3!#(bFr^!jn5!JfNtNLQP*B{@D6Wn?esl( zjbiZCQ;z=nsN?C=hV2+MT=q04X2VqdurV9TX7$|0;o0)?N#bP-7t#Cf{zK+a{Ah*+ecsVuhnNTx6}YM7G5j$tCHI#4R()5io$Eys(O@UH`I8yF)>+& zrKfuwFz8~lJ+U-C4WkV&CT@GkIF`rTcj3L?6;xa3&;t+6_HOy{@oyhHcK;)%&3P~9 z$lTL@zw^10>nRXVh-AVYEeq0S7z$1Y`-klA`ssh*Ov9}bVZw?gpO|=eOkHx@%{lP(DriV2a zYUFLaG>+W;v(%vn9u^fdz0c0LWc{8u@OiZS^Ga_2?YwytUYm0%Ytx4}6jhxJ4mWht zD+`Q{^TbcbetELTjE&h&*FOXDKGi-F^(JWuWn$f(Fu$S+lSc=Qi9gjWrS zrHf5Vy0eV8cXKPHPUnu18RQ!8Pv;u%PkW5_r~A$El*~joT!>rG*nu@)-i8KZD_TR> z?8l>hxfds&;RP7Hhah*yL|VHi#E^-c9<3s&T3vZ;P8Ao|xxF`Uo z%6Z@clQRr@9G8zEoHHbF7008y;UzfsLL1;MKZAGgFe#GZ<2<|vjXo|5_trHwufi8; zjQ6eiN}RP)RYSZVFV3*9ITF+zwCvB18*`rhYW>_Lzmw|{YOUO6N1+AylvSh`OT%O* z&WW&D?J>@W`te<9aA}^iyB+9rkq&u3Iy6U`x4HR}GgqOka#)E(@q;}Pe|@Jo*!Hlf zdX)k^^@4ETC>q(?vbLd(pXB)q-#>d>P91V`^!_>f5(nS9wfUp_CI{@f^0WzaAgo}# z-Ya+4UE0L1Zua>^9&W*vd#2z}o?^l6!%59>5iT#gv7u0zF8r4B*I+lorwQY^S$p*nfCDENms{wU-I0Bv%PH>|9Ab| z8o58g$y91d6*u`!1^0MlnK2j(=HbvX**NXU3w-)qS+^U2j4sj!t{x=E8H3a>pYyv)H`uxfKy-*!l6<=3tZfR`wF6OFt%D}+tGH> zxD`4*O&*!Mi*Y&)N!hVSz8Qn=C+$8>4CdAu zj2Nvo)gg*wr%HLtew}RGluR+!*Qq1q!#?HGNh>Q^f^|YBw&HM!3P-p+sKMc1814k% z6m5Wx%9hiISFyryD2;1jlN_DH8*qnwD6TZXdWpnrhEw1|ilvYzzBs9L8VN`6p3Wkk zx0Z6>P6pugJ!&bwJ6H?ro<@^#4!y#7T744u=y_V_=!{lnS&hp!P4a!+zl>|uZQh?8 zuHp+`yx383&8E@g2j0?t$60khhb_Z-PcT{v^Q;sIO&V`FW)CzY1rTmnj_rX#a&s3u z;#BEawN&3?hqtW%TJC4wJD>RG<1fAIYM)xRVQzEF(a&any6yJW%h4y&(Uf?R%8AoV z*nw{O5sd(&0b})bU7w2nPE4s%k4yL}nDiC;eFaY6Gx?&J48>g!GafE{U^+%~PmIMi zx?$tu8!=CgGp^Cdn%YF21E;GP!pc|RdgF8iL9fsw90TP{!`pebjrzJ&-fanjuhZ}e zZFM%JgzE#|akBrEGI`_il0!3aCZ3?7uNvRkK_Zut$YFeP#kA}UV3ptae)uM1k#|O7Xld5t_T5Wr>%M%DO%oiL$!*{y4~m|xp(+Vfu?6(WtAz73XEMGB+bJW( z{(mB+|9>JC{7ocw{*WQiecXnMz@A!X{7UFp6;k1(Gle#07%mmS=P_7InMm`KXXzhBJ|&yt0~M3@;(`@gR>q5)Yz$wl}|GGpcosVLkQIMapu* zI`68coS#1Jzw5&rF8Sl7!*h;|$voZjgY4&l#){FI>otv?u}!Uu@Quln<%bUgFgHz* zuej?xr_9oE{@}N(n=txey$h$*=q#ZL#$>~{+wnegUr(gUUrlSvvg5UMO^nxeN`CgD zPmaFo&5wAf?!$B}o;t-(jUkyo4<;^P#@ZoZg(*2_A@7XQyWg`bQV z$s)>Y#6T_kY?Nt|OgX^Nkhx(a+Lvp|DKZ9ZDfuK=%aC=zty#XXZ`OZvbQ}!V#lAH0 zU0q0&gO|LGM80fMU_{pz1mUk*M)-N~wMw`rzUx$(E;jKv>2}C;_|}uJl!&gK)~vF+ z&cLI50dDzn96r2+)`^uj{pHO7U(#t^XCdBj5!=VeEl5*a#$PM6OpI={40aM^VjL1m z*C&6aYE!$;k(ovfHZt`^^|`(zshlfe=g55IB?*kC5=3z#jy3`A^YrgJ4>=ZzxSA8^ zINf|7Dy{1Rqxz>9@qHyK>NKqDBAI1;vJoY?mp=Pz4t-A24SiN>xTNb6Bp%0YI?1mu z$fuOPPJ)S7hQm^jF8JVE%0?wIqSJ=(*BA#R@>3epl^Svx3W0|7XlYv4E?KW6Qwe?L z_{v8rpAs3n0HJf__Hgz|(#f1Joe>M=Nk`}~#bUS%myGAH0$+sNZBUAhv=|Y-~+d*Ol<#4u554GFilJ zEH^Get;6f^xaF}aBLzk|?n{Y`u6>A?EP^T`q%D9K8*n1V?Ww_GV4)r>Hs@?V&&W#f zf)LtI + True + True \ No newline at end of file diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/DiagnosticsProvider.cs b/UpsilonLanguageServer/UpsilonLanguageServer/DiagnosticsProvider.cs new file mode 100644 index 0000000..894acdc --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/DiagnosticsProvider.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using LanguageServer.VsCode.Contracts; +using LanguageServer.VsCode.Server; +using Upsilon; +using Upsilon.Evaluator; + +namespace UpsilonLanguageServer +{ + public class DiagnosticProvider + { + + public DiagnosticProvider() + { + + } + + + public static async Task> LintDocument(TextDocument document, SessionDocument session, + int maxNumberOfProblems) + { + var diag = new List(); + var content = document.Content; + if (string.IsNullOrWhiteSpace(content)) + { + diag.Add(new Diagnostic(DiagnosticSeverity.Hint, + new Range(new Position(0, 0), document.PositionAt(content?.Length ?? 0)), + "DLS", "DLS0001", "Empty document. Try typing something, such as \".net core\".")); + return diag; + } + + var task = RealLint(document, maxNumberOfProblems, session, content, diag); + // either wait until the script is linted, or until a second has passed (timeout) + await Task.WhenAny(task, Task.Delay(1000)); + return diag; + } + + private static async Task RealLint(TextDocument document, int maxNumberOfProblems, SessionDocument session, + string content, List diag) + { + try + { + using (var script = new Script(content)) + { + session.SourceText = script.ScriptString; + if (script.Diagnostics.Messages.Count > 0) + { + foreach (var error in script.Diagnostics.Messages) + { + diag.Add(ConvertToVsCodeDiagnostic(error)); + } + + return; + } + + var bound = script.Bind(); + foreach (var error in script.Diagnostics.Messages) + { + diag.Add(ConvertToVsCodeDiagnostic(error)); + } + + if (script.Diagnostics.Messages.Count == 0) + { + session.Bound = bound; + } + } + } + catch (Exception e) + { + diag.Add(new Diagnostic(DiagnosticSeverity.Error, + new Range(new Position(0, 0), document.PositionAt(content?.Length ?? 0)), + "DLS", "DLS0001", e.ToString())); + } + } + + private static Diagnostic ConvertToVsCodeDiagnostic(DiagnosticsMessage error) + { + var (startPosition, startPositionOnLine) = error.GetStartLine(); + var (endPosition, endPositionOnLine) = error.GetEndLine(); + var sourceString = error.Diagnostics.ScriptString; + if (endPosition >= sourceString.GetLineCount()) + endPosition = sourceString.GetLineCount(); + + var range = new Range(startPosition, startPositionOnLine, endPosition, + endPositionOnLine); + return new Diagnostic(DiagnosticSeverity.Error, range, error.AtError(), "ERR001", error.Message); + } + } +} diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/LanguageServerSession.cs b/UpsilonLanguageServer/UpsilonLanguageServer/LanguageServerSession.cs new file mode 100644 index 0000000..b61cde6 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/LanguageServerSession.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using JsonRpc.DynamicProxy.Client; +using JsonRpc.Standard.Client; +using JsonRpc.Standard.Contracts; +using LanguageServer.VsCode.Contracts; +using LanguageServer.VsCode.Contracts.Client; +using LanguageServer.VsCode.Server; +using Upsilon.Binder; +using Upsilon.Text; + +namespace UpsilonLanguageServer +{ + public class LanguageServerSession + { + private readonly CancellationTokenSource _cts = new CancellationTokenSource(); + + public LanguageServerSession(JsonRpcClient rpcClient, IJsonRpcContractResolver contractResolver) + { + RpcClient = rpcClient ?? throw new ArgumentNullException(nameof(rpcClient)); + var builder = new JsonRpcProxyBuilder {ContractResolver = contractResolver}; + Client = new ClientProxy(builder, rpcClient); + Documents = new ConcurrentDictionary(); + DiagnosticProvider = new DiagnosticProvider(); + } + + public CancellationToken CancellationToken => _cts.Token; + + public JsonRpcClient RpcClient { get; } + + public ClientProxy Client { get; } + + public ConcurrentDictionary Documents { get; } + + public DiagnosticProvider DiagnosticProvider { get; } + + public LanguageServerSettings Settings { get; set; } = new LanguageServerSettings(); + + public void StopServer() + { + _cts.Cancel(); + } + + } + + public class SessionDocument + { + /// + /// Actually makes the changes to the inner document per this milliseconds. + /// + private const int RenderChangesDelay = 100; + + public SessionDocument(TextDocumentItem doc) + { + Document = TextDocument.Load(doc); + } + + private Task _updateChangesDelayTask; + + private readonly object _syncLock = new object(); + + private List _impendingChanges = new List(); + + public event EventHandler DocumentChanged; + + public TextDocument Document { get; set; } + + public BoundScript Bound { get; set; } + public SourceText SourceText { get; set; } + + public void NotifyChanges(IEnumerable changes) + { + lock (_syncLock) + { + if (_impendingChanges == null) + _impendingChanges = changes.ToList(); + else + _impendingChanges.AddRange(changes); + } + if (_updateChangesDelayTask == null || _updateChangesDelayTask.IsCompleted) + { + _updateChangesDelayTask = Task.Delay(RenderChangesDelay); + _updateChangesDelayTask.ContinueWith(t => Task.Run((Action)MakeChanges)); + } + } + + private void MakeChanges() + { + List localChanges; + lock (_syncLock) + { + localChanges = _impendingChanges; + if (localChanges == null || localChanges.Count == 0) return; + _impendingChanges = null; + } + Document = Document.ApplyChanges(localChanges); + if (_impendingChanges == null) + { + localChanges.Clear(); + lock (_syncLock) + { + if (_impendingChanges == null) + _impendingChanges = localChanges; + } + } + OnDocumentChanged(); + } + + protected virtual void OnDocumentChanged() + { + DocumentChanged?.Invoke(this, EventArgs.Empty); + } + } +} \ No newline at end of file diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Program.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Program.cs new file mode 100644 index 0000000..07647d0 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Program.cs @@ -0,0 +1,104 @@ +// #define WAIT_FOR_DEBUGGER + +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading; +using JsonRpc.Standard.Client; +using JsonRpc.Standard.Contracts; +using JsonRpc.Standard.Server; +using JsonRpc.Streams; +using LanguageServer.VsCode; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Debug; + +namespace UpsilonLanguageServer +{ + static class Program + { + static void Main(string[] args) + { + var debugMode = args.Any(a => a.Equals("--debug", StringComparison.OrdinalIgnoreCase)); +#if WAIT_FOR_DEBUGGER + while (!Debugger.IsAttached) Thread.Sleep(1000); + Debugger.Break(); +#endif + StreamWriter logWriter = null; + if (debugMode) + { + logWriter = File.CreateText("messages-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log"); + logWriter.AutoFlush = true; + } + using (logWriter) + using (var cin = Console.OpenStandardInput()) + using (var bcin = new BufferedStream(cin)) + using (var cout = Console.OpenStandardOutput()) + using (var reader = new PartwiseStreamMessageReader(bcin)) + using (var writer = new PartwiseStreamMessageWriter(cout)) + { + var contractResolver = new JsonRpcContractResolver + { + NamingStrategy = new CamelCaseJsonRpcNamingStrategy(), + ParameterValueConverter = new CamelCaseJsonValueConverter(), + }; + var clientHandler = new StreamRpcClientHandler(); + var client = new JsonRpcClient(clientHandler); + if (debugMode) + { + // We want to capture log all the LSP server-to-client calls as well + clientHandler.MessageSending += (_, e) => + { + lock (logWriter) logWriter.WriteLine("{0} + { + lock (logWriter) logWriter.WriteLine("{0} >C{1}", Utility.GetTimeStamp(), e.Message); + }; + } + // Configure & build service host + var session = new LanguageServerSession(client, contractResolver); + var host = BuildServiceHost(logWriter, contractResolver, debugMode); + var serverHandler = new StreamRpcServerHandler(host, + StreamRpcServerHandlerOptions.ConsistentResponseSequence | + StreamRpcServerHandlerOptions.SupportsRequestCancellation); + serverHandler.DefaultFeatures.Set(session); + // If we want server to stop, just stop the "source" + using (serverHandler.Attach(reader, writer)) + using (clientHandler.Attach(reader, writer)) + { + // Wait for the "stop" request. + session.CancellationToken.WaitHandle.WaitOne(); + } + logWriter?.WriteLine("Exited"); + } + } + + private static IJsonRpcServiceHost BuildServiceHost(TextWriter logWriter, + IJsonRpcContractResolver contractResolver, bool debugMode) + { + var loggerFactory = new LoggerFactory(); + loggerFactory.AddProvider(new DebugLoggerProvider(null)); + var builder = new JsonRpcServiceHostBuilder + { + ContractResolver = contractResolver, + LoggerFactory = loggerFactory + }; + builder.UseCancellationHandling(); + builder.Register(typeof(Program).GetTypeInfo().Assembly); + if (debugMode) + { + // Log all the client-to-server calls. + builder.Intercept(async (context, next) => + { + lock (logWriter) logWriter.WriteLine("{0} > {1}", Utility.GetTimeStamp(), context.Request); + await next(); + lock (logWriter) logWriter.WriteLine("{0} < {1}", Utility.GetTimeStamp(), context.Response); + }); + } + return builder.Build(); + } + + } +} \ No newline at end of file diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/CompletionItemService.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/CompletionItemService.cs new file mode 100644 index 0000000..a89a71b --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/CompletionItemService.cs @@ -0,0 +1,20 @@ +using JsonRpc.Standard.Contracts; +using LanguageServer.VsCode.Contracts; + +namespace UpsilonLanguageServer.Services +{ + [JsonRpcScope(MethodPrefix = "completionItem/")] + public class CompletionItemService : UpsilonLanguageServiceBase + { + // The request is sent from the client to the server to resolve additional information + // for a given completion item. + [JsonRpcMethod(AllowExtensionData = true)] + public CompletionItem Resolve() + { + var item = RequestContext.Request.Parameters.ToObject(Utility.CamelCaseJsonSerializer); + // Add a pair of square brackets around the inserted text. + item.InsertText = $"[{item.Label}]"; + return item; + } + } +} diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/InitializationService.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/InitializationService.cs new file mode 100644 index 0000000..57de099 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/InitializationService.cs @@ -0,0 +1,58 @@ +using System; +using System.Threading.Tasks; +using JsonRpc.Standard; +using JsonRpc.Standard.Contracts; +using JsonRpc.Standard.Server; +using LanguageServer.VsCode.Contracts; +using Newtonsoft.Json.Linq; +// ReSharper disable UnusedMember.Global + +namespace UpsilonLanguageServer.Services +{ + public class InitializationService : UpsilonLanguageServiceBase + { + + [JsonRpcMethod(AllowExtensionData = true)] + public InitializeResult Initialize(int processId, Uri rootUri, ClientCapabilities capabilities, + JToken initializationOptions = null, string trace = null) + { + return new InitializeResult(new ServerCapabilities + { + HoverProvider = true, + SignatureHelpProvider = new SignatureHelpOptions("()"), + CompletionProvider = new CompletionOptions(true, "."), + TextDocumentSync = new TextDocumentSyncOptions + { + OpenClose = true, + WillSave = true, + Change = TextDocumentSyncKind.Incremental + }, + }); + } + + [JsonRpcMethod(IsNotification = true)] + public async Task Initialized() + { + await Client.Window.ShowMessage(MessageType.Info, "Upsilon Language Server Initialized"); + } + + [JsonRpcMethod] + public void Shutdown() + { + + } + + [JsonRpcMethod(IsNotification = true)] + public void Exit() + { + Client.Window.ShowMessage(MessageType.Info, "Upsilon Language Server exited"); + Session.StopServer(); + } + + [JsonRpcMethod("$/cancelRequest", IsNotification = true)] + public void CancelRequest(MessageId id) + { + RequestContext.Features.Get().TryCancel(id); + } + } +} diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs new file mode 100644 index 0000000..8dace7b --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/TextDocumentServer.cs @@ -0,0 +1,123 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using JsonRpc.Standard.Contracts; +using LanguageServer.VsCode; +using LanguageServer.VsCode.Contracts; +using LanguageServer.VsCode.Server; +using Upsilon.Binder; + +namespace UpsilonLanguageServer.Services +{ + [JsonRpcScope(MethodPrefix = "textDocument/")] + public class TextDocumentService : UpsilonLanguageServiceBase + { + [JsonRpcMethod] + public async Task Hover(TextDocumentIdentifier textDocument, Position position, CancellationToken ct) + { + // Note that Hover is cancellable. + //await Task.Delay(1000, ct); + if (Session.Documents.TryGetValue(textDocument.Uri, out var doc)) + { + if (doc.Bound != null && doc.SourceText != null) + { + var linePos = doc.SourceText.GetLineStartPos(position.Line); + var findNode = doc.Bound.GetNodeAtPosition(linePos + position.Character); + if (findNode != null) + { + var contents = $"Kind: {findNode.Kind}"; + if (findNode is BoundExpression expression) + { + contents += $"\n\nType: {expression.Type}"; + } + + return new Hover() + { + Contents = contents + }; + } + } + } + + return new Hover(); + } + + [JsonRpcMethod] + public SignatureHelp SignatureHelp(TextDocumentIdentifier textDocument, Position position) + { + return new SignatureHelp(new List + { + new SignatureInformation("**Function1**", "Documentation1"), + new SignatureInformation("**Function2** test", "Documentation2"), + }); + } + + [JsonRpcMethod(IsNotification = true)] + public async Task DidOpen(TextDocumentItem textDocument) + { + var doc = new SessionDocument(textDocument); + var session = Session; + doc.DocumentChanged += async (sender, args) => + { + // Lint the document when it's changed. + var sessionDocument = ((SessionDocument) sender); + var doc1 = sessionDocument.Document; + var diag1 = DiagnosticProvider.LintDocument(doc1, sessionDocument, session.Settings.MaxNumberOfProblems); + if (session.Documents.ContainsKey(doc1.Uri)) + { + // In case the document has been closed when we were linting… + await session.Client.Document.PublishDiagnostics(doc1.Uri, await diag1); + } + }; + Session.Documents.TryAdd(textDocument.Uri, doc); + var diag = DiagnosticProvider.LintDocument(doc.Document, doc, Session.Settings.MaxNumberOfProblems); + await Client.Document.PublishDiagnostics(textDocument.Uri, await diag); + } + + [JsonRpcMethod(IsNotification = true)] + public void DidChange(TextDocumentIdentifier textDocument, + ICollection contentChanges) + { + Session.Documents[textDocument.Uri].NotifyChanges(contentChanges); + } + + [JsonRpcMethod(IsNotification = true)] + public void WillSave(TextDocumentIdentifier textDocument, TextDocumentSaveReason reason) + { + //Client.Window.LogMessage(MessageType.Log, "-----------"); + //Client.Window.LogMessage(MessageType.Log, Documents[textDocument].Content); + } + + [JsonRpcMethod(IsNotification = true)] + public async Task DidClose(TextDocumentIdentifier textDocument) + { + if (textDocument.Uri.IsUntitled()) + { + await Client.Document.PublishDiagnostics(textDocument.Uri, new Diagnostic[0]); + } + Session.Documents.TryRemove(textDocument.Uri, out _); + } + + private static readonly CompletionItem[] PredefinedCompletionItems = + { + new CompletionItem(".NET", CompletionItemKind.Keyword, + "Keyword1", + "Short for **.NET Framework**, a software framework by Microsoft (possibly its subsets) or later open source .NET Core.", + null), + new CompletionItem(".NET Standard", CompletionItemKind.Keyword, + "Keyword2", + "The .NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.", + null), + new CompletionItem(".NET Framework", CompletionItemKind.Keyword, + "Keyword3", + ".NET Framework (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows.", null), + }; + + [JsonRpcMethod] + public async Task Completion(TextDocumentIdentifier textDocument, Position position, CompletionContext context) + { + return new CompletionList(PredefinedCompletionItems, false); + } + + } +} diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/UpsilonLanguageServiceBase.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/UpsilonLanguageServiceBase.cs new file mode 100644 index 0000000..7f621c8 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/UpsilonLanguageServiceBase.cs @@ -0,0 +1,24 @@ +using System; +using JsonRpc.Standard.Server; +using LanguageServer.VsCode.Contracts; +using LanguageServer.VsCode.Contracts.Client; +using LanguageServer.VsCode.Server; + +namespace UpsilonLanguageServer.Services +{ + public class UpsilonLanguageServiceBase : JsonRpcService + { + protected LanguageServerSession Session => RequestContext.Features.Get(); + + protected ClientProxy Client => Session.Client; + + protected TextDocument GetDocument(Uri uri) + { + if (Session.Documents.TryGetValue(uri, out var sd)) + return sd.Document; + return null; + } + + protected TextDocument GetDocument(TextDocumentIdentifier id) => GetDocument(id.Uri); + } +} \ No newline at end of file diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Services/WorkspaceService.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Services/WorkspaceService.cs new file mode 100644 index 0000000..4e134d6 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Services/WorkspaceService.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using JsonRpc.Standard.Contracts; +using LanguageServer.VsCode.Contracts; + +namespace UpsilonLanguageServer.Services +{ + [JsonRpcScope(MethodPrefix = "workspace/")] + public class WorkspaceService : UpsilonLanguageServiceBase + { + [JsonRpcMethod(IsNotification = true)] + public async Task DidChangeConfiguration(SettingsRoot settings) + { + Session.Settings = settings.UpsilonLanguageServer; + foreach (var doc in Session.Documents.Values) + { + var diag = await DiagnosticProvider.LintDocument(doc.Document, doc, Session.Settings.MaxNumberOfProblems); + await Client.Document.PublishDiagnostics(doc.Document.Uri, diag); + } + } + + [JsonRpcMethod(IsNotification = true)] + public async Task DidChangeWatchedFiles(ICollection changes) + { + foreach (var change in changes) + { + if (!change.Uri.IsFile) continue; + var localPath = change.Uri.AbsolutePath; + if (string.Equals(Path.GetExtension(localPath), ".yup", StringComparison.InvariantCultureIgnoreCase)) + { + // If the file has been removed, we will clear the lint result about it. + // Note that pass null to PublishDiagnostics may mess up the client. + if (change.Type == FileChangeType.Deleted) + { + await Client.Document.PublishDiagnostics(change.Uri, new Diagnostic[0]); + } + } + else if (string.Equals(Path.GetExtension(localPath), ".lua", StringComparison.InvariantCultureIgnoreCase)) + { + // If the file has been removed, we will clear the lint result about it. + // Note that pass null to PublishDiagnostics may mess up the client. + if (change.Type == FileChangeType.Deleted) + { + await Client.Document.PublishDiagnostics(change.Uri, new Diagnostic[0]); + } + } + + } + } + } +} diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Settings.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Settings.cs new file mode 100644 index 0000000..e2a2cc1 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Settings.cs @@ -0,0 +1,18 @@ +namespace UpsilonLanguageServer +{ + public class SettingsRoot + { + public LanguageServerSettings UpsilonLanguageServer { get; set; } + } + + public class LanguageServerSettings + { + public int MaxNumberOfProblems { get; set; } = 10; + + public LanguageServerTraceSettings Trace { get; } = new LanguageServerTraceSettings(); + } + + public class LanguageServerTraceSettings + { + public string Server { get; set; } + }} \ No newline at end of file diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/UpsilonLanguageServer.csproj b/UpsilonLanguageServer/UpsilonLanguageServer/UpsilonLanguageServer.csproj new file mode 100644 index 0000000..c14b0d8 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/UpsilonLanguageServer.csproj @@ -0,0 +1,24 @@ + + + + Exe + netcoreapp2.1 + + + + + + + + + + + + + ..\Lib\System.Collections.Immutable.dll + + + ..\Lib\Upsilon.dll + + + diff --git a/UpsilonLanguageServer/UpsilonLanguageServer/Utility.cs b/UpsilonLanguageServer/UpsilonLanguageServer/Utility.cs new file mode 100644 index 0000000..483e8d4 --- /dev/null +++ b/UpsilonLanguageServer/UpsilonLanguageServer/Utility.cs @@ -0,0 +1,19 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace UpsilonLanguageServer +{ + public static class Utility + { + public static readonly JsonSerializer CamelCaseJsonSerializer = new JsonSerializer + { + ContractResolver = new CamelCasePropertyNamesContractResolver() + }; + + public static string GetTimeStamp() + { + return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + } + } +} \ No newline at end of file