diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 83479e8..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - "@typescript-eslint/class-name-casing": "warn", - "@typescript-eslint/semi": "warn", - "curly": "warn", - "eqeqeq": "warn", - "no-throw-literal": "warn", - "semi": "off" - } -} diff --git a/.gitignore b/.gitignore index 35e5e0a..e69de29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +0,0 @@ -**/*.vsix -.vscode -node_modules -notes -src -_source \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore deleted file mode 100644 index 6e94667..0000000 --- a/.vscodeignore +++ /dev/null @@ -1,12 +0,0 @@ -**/*.map -**/*.ts -**/.eslintrc.json -**/tsconfig.json -.gitignore -.vscode-test/** -.vscode/** -notes/** -out/test/** -src/** -vsc-extension-quickstart.md -_source/** diff --git a/dist/extension.js b/dist/extension.js new file mode 100644 index 0000000..4354ecd --- /dev/null +++ b/dist/extension.js @@ -0,0 +1,2 @@ +module.exports=function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=12)}([function(t,e){t.exports=require("path")},function(t,e){t.exports=require("fs")},function(t,e){t.exports=require("vscode")},function(t,e,r){t.exports=u,u.Minimatch=l;var n={sep:"/"};try{n=r(0)}catch(t){}var i=u.GLOBSTAR=l.GLOBSTAR={},o=r(15),s={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},a="().*{}+?[]^$\\!".split("").reduce((function(t,e){return t[e]=!0,t}),{});var c=/\/+/;function h(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach((function(t){r[t]=e[t]})),Object.keys(t).forEach((function(e){r[e]=t[e]})),r}function u(t,e,r){if("string"!=typeof e)throw new TypeError("glob pattern string required");return r||(r={}),!(!r.nocomment&&"#"===e.charAt(0))&&(""===e.trim()?""===t:new l(e,r).match(t))}function l(t,e){if(!(this instanceof l))return new l(t,e);if("string"!=typeof t)throw new TypeError("glob pattern string required");e||(e={}),t=t.trim(),"/"!==n.sep&&(t=t.split(n.sep).join("/")),this.options=e,this.set=[],this.pattern=t,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function f(t,e){if(e||(e=this instanceof l?this.options:{}),void 0===(t=void 0===t?this.pattern:t))throw new TypeError("undefined pattern");return e.nobrace||!t.match(/\{.*\}/)?[t]:o(t)}u.filter=function(t,e){return e=e||{},function(r,n,i){return u(r,t,e)}},u.defaults=function(t){if(!t||!Object.keys(t).length)return u;var e=u,r=function(r,n,i){return e.minimatch(r,n,h(t,i))};return r.Minimatch=function(r,n){return new e.Minimatch(r,h(t,n))},r},l.defaults=function(t){return t&&Object.keys(t).length?u.defaults(t).Minimatch:l},l.prototype.debug=function(){},l.prototype.make=function(){if(this._made)return;var t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate();var r=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error);this.debug(this.pattern,r),r=this.globParts=r.map((function(t){return t.split(c)})),this.debug(this.pattern,r),r=r.map((function(t,e,r){return t.map(this.parse,this)}),this),this.debug(this.pattern,r),r=r.filter((function(t){return-1===t.indexOf(!1)})),this.debug(this.pattern,r),this.set=r},l.prototype.parseNegate=function(){var t=this.pattern,e=!1,r=this.options,n=0;if(r.nonegate)return;for(var i=0,o=t.length;i65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return i;if(""===t)return"";var n,o="",c=!!r.nocase,h=!1,u=[],l=[],f=!1,d=-1,m=-1,g="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",v=this;function y(){if(n){switch(n){case"*":o+="[^/]*?",c=!0;break;case"?":o+="[^/]",c=!0;break;default:o+="\\"+n}v.debug("clearStateChar %j %j",n,o),n=!1}}for(var b,w=0,_=t.length;w<_&&(b=t.charAt(w));w++)if(this.debug("%s\t%s %s %j",t,w,o,b),h&&a[b])o+="\\"+b,h=!1;else switch(b){case"/":return!1;case"\\":y(),h=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s\t%s %s %j <-- stateChar",t,w,o,b),f){this.debug(" in class"),"!"===b&&w===m+1&&(b="^"),o+=b;continue}v.debug("call clearStateChar %j",n),y(),n=b,r.noext&&y();continue;case"(":if(f){o+="(";continue}if(!n){o+="\\(";continue}u.push({type:n,start:w-1,reStart:o.length,open:s[n].open,close:s[n].close}),o+="!"===n?"(?:(?!(?:":"(?:",this.debug("plType %j %j",n,o),n=!1;continue;case")":if(f||!u.length){o+="\\)";continue}y(),c=!0;var E=u.pop();o+=E.close,"!"===E.type&&l.push(E),E.reEnd=o.length;continue;case"|":if(f||!u.length||h){o+="\\|",h=!1;continue}y(),o+="|";continue;case"[":if(y(),f){o+="\\"+b;continue}f=!0,m=w,d=o.length,o+=b;continue;case"]":if(w===m+1||!f){o+="\\"+b,h=!1;continue}if(f){var O=t.substring(m+1,w);try{RegExp("["+O+"]")}catch(t){var S=this.parse(O,p);o=o.substr(0,d)+"\\["+S[0]+"\\]",c=c||S[1],f=!1;continue}}c=!0,f=!1,o+=b;continue;default:y(),h?h=!1:!a[b]||"^"===b&&f||(o+="\\"),o+=b}f&&(O=t.substr(m+1),S=this.parse(O,p),o=o.substr(0,d)+"\\["+S[0],c=c||S[1]);for(E=u.pop();E;E=u.pop()){var k=o.slice(E.reStart+E.open.length);this.debug("setting tail",o,E),k=k.replace(/((?:\\{2}){0,64})(\\?)\|/g,(function(t,e,r){return r||(r="\\"),e+e+r+"|"})),this.debug("tail=%j\n %s",k,k,E,o);var x="*"===E.type?"[^/]*?":"?"===E.type?"[^/]":"\\"+E.type;c=!0,o=o.slice(0,E.reStart)+x+"\\("+k}y(),h&&(o+="\\\\");var N=!1;switch(o.charAt(0)){case".":case"[":case"(":N=!0}for(var j=l.length-1;j>-1;j--){var A=l[j],I=o.slice(0,A.reStart),L=o.slice(A.reStart,A.reEnd-8),C=o.slice(A.reEnd-8,A.reEnd),T=o.slice(A.reEnd);C+=T;var M=I.split("(").length-1,D=T;for(w=0;w=0&&!(i=t[o]);o--);for(o=0;o>> no match, partial?",t,f,e,p),f!==a))}if("string"==typeof u?(h=n.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,h)):(h=l.match(u),this.debug("pattern match",u,l,h)),!h)return!1}if(o===a&&s===c)return!0;if(o===a)return r;if(s===c)return o===a-1&&""===t[o];throw new Error("wtf?")}},function(t,e){t.exports=require("util")},function(t,e,r){"use strict";function n(t){return"/"===t.charAt(0)}function i(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),r=e[1]||"",n=Boolean(r&&":"!==r.charAt(1));return Boolean(e[2]||n)}t.exports="win32"===process.platform?i:n,t.exports.posix=n,t.exports.win32=i},function(t,e,r){t.exports=b;var n=r(1),i=r(7),o=r(3),s=(o.Minimatch,r(18)),a=r(20).EventEmitter,c=r(0),h=r(8),u=r(5),l=r(21),f=r(9),p=(f.alphasort,f.alphasorti,f.setopts),d=f.ownProp,m=r(22),g=(r(4),f.childrenIgnored),v=f.isIgnored,y=r(11);function b(t,e,r){if("function"==typeof e&&(r=e,e={}),e||(e={}),e.sync){if(r)throw new TypeError("callback provided to sync glob");return l(t,e)}return new _(t,e,r)}b.sync=l;var w=b.GlobSync=l.GlobSync;function _(t,e,r){if("function"==typeof e&&(r=e,e=null),e&&e.sync){if(r)throw new TypeError("callback provided to sync glob");return new w(t,e)}if(!(this instanceof _))return new _(t,e,r);p(this,t,e),this._didRealPath=!1;var n=this.minimatch.set.length;this.matches=new Array(n),"function"==typeof r&&(r=y(r),this.on("error",r),this.on("end",(function(t){r(null,t)})));var i=this;if(this._processing=0,this._emitQueue=[],this._processQueue=[],this.paused=!1,this.noprocess)return this;if(0===n)return s();for(var o=0;o1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&d(this.cache,r)){var o=this.cache[r];if(Array.isArray(o)&&(o="DIR"),!i||"DIR"===o)return e(null,o);if(i&&"FILE"===o)return e()}var s=this.statCache[r];if(void 0!==s){if(!1===s)return e(null,s);var a=s.isDirectory()?"DIR":"FILE";return i&&"FILE"===a?e():e(null,a,s)}var c=this,h=m("stat\0"+r,(function(i,o){if(o&&o.isSymbolicLink())return n.stat(r,(function(n,i){n?c._stat2(t,r,null,o,e):c._stat2(t,r,n,i,e)}));c._stat2(t,r,i,o,e)}));h&&n.lstat(r,h)},_.prototype._stat2=function(t,e,r,n,i){if(r&&("ENOENT"===r.code||"ENOTDIR"===r.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=n,"/"===e.slice(-1)&&n&&!n.isDirectory())return i(null,!1,n);var s=!0;return n&&(s=n.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,n)}},function(t,e,r){t.exports=u,u.realpath=u,u.sync=l,u.realpathSync=l,u.monkeypatch=function(){n.realpath=u,n.realpathSync=l},u.unmonkeypatch=function(){n.realpath=i,n.realpathSync=o};var n=r(1),i=n.realpath,o=n.realpathSync,s=process.version,a=/^v[0-5]\./.test(s),c=r(14);function h(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function u(t,e,r){if(a)return i(t,e,r);"function"==typeof e&&(r=e,e=null),i(t,e,(function(n,i){h(n)?c.realpath(t,e,r):r(n,i)}))}function l(t,e){if(a)return o(t,e);try{return o(t,e)}catch(r){if(h(r))return c.realpathSync(t,e);throw r}}},function(t,e){t.exports=require("assert")},function(t,e,r){function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.alphasort=h,e.alphasorti=c,e.setopts=function(t,e,r){r||(r={});if(r.matchBase&&-1===e.indexOf("/")){if(r.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!r.silent,t.pattern=e,t.strict=!1!==r.strict,t.realpath=!!r.realpath,t.realpathCache=r.realpathCache||Object.create(null),t.follow=!!r.follow,t.dot=!!r.dot,t.mark=!!r.mark,t.nodir=!!r.nodir,t.nodir&&(t.mark=!0);t.sync=!!r.sync,t.nounique=!!r.nounique,t.nonull=!!r.nonull,t.nosort=!!r.nosort,t.nocase=!!r.nocase,t.stat=!!r.stat,t.noprocess=!!r.noprocess,t.absolute=!!r.absolute,t.maxLength=r.maxLength||1/0,t.cache=r.cache||Object.create(null),t.statCache=r.statCache||Object.create(null),t.symlinks=r.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]);t.ignore.length&&(t.ignore=t.ignore.map(u))}(t,r),t.changedCwd=!1;var o=process.cwd();n(r,"cwd")?(t.cwd=i.resolve(r.cwd),t.changedCwd=t.cwd!==o):t.cwd=o;t.root=r.root||i.resolve(t.cwd,"/"),t.root=i.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/"));t.cwdAbs=s(t.cwd)?t.cwd:l(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/"));t.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,t.minimatch=new a(e,r),t.options=t.minimatch.options},e.ownProp=n,e.makeAbs=l,e.finish=function(t){for(var e=t.nounique,r=e?[]:Object.create(null),n=0,i=t.matches.length;n{"Select"===t&&a.setupNotes()});let r=n.commands.registerCommand("Notes.deleteNote",t=>{a.deleteNote(t,e)});t.subscriptions.push(r);let i=n.commands.registerCommand("Notes.listNotes",()=>{a.listNotes()});t.subscriptions.push(i);let o=n.commands.registerCommand("Notes.newNote",()=>{a.newNote(e)});t.subscriptions.push(o);let c=n.commands.registerCommand("Notes.openNote",t=>{a.openNote(t)});t.subscriptions.push(c);let h=n.commands.registerCommand("Notes.refreshNotes",()=>{a.refreshNotes(e)});t.subscriptions.push(h);let u=n.commands.registerCommand("Notes.renameNote",t=>{a.renameNote(t,e)});t.subscriptions.push(u);let l=n.commands.registerCommand("Notes.setupNotes",()=>{a.setupNotes()});t.subscriptions.push(l)},e.deactivate=function(){};class a{constructor(t){this.settings=t,this.settings=n.workspace.getConfiguration("vscode-notes")}static getNotesLocation(){return n.workspace.getConfiguration("Notes").get("notesLocation")}static deleteNote(t,e){n.window.showWarningMessage(`Are you sure you want to delete '${t.name}'? This action is permanent and can not be reversed.`,"Yes","No").then(r=>{"Yes"===r&&(i.unlink(o.join(String(t.location),String(t.name)),e=>{if(e)return console.error(e),n.window.showErrorMessage(`Failed to delete ${t.name}.`);n.window.showInformationMessage(`Successfully deleted ${t.name}.`)}),e.refresh())})}static listNotes(){let t=String(a.getNotesLocation());i.readdir(String(t),(e,r)=>{if(e)return console.error(e),n.window.showErrorMessage("Failed to read the notes folder.");n.window.showQuickPick(r).then(e=>{n.window.showTextDocument(n.Uri.file(o.join(String(t),String(e))))})})}static newNote(t){let e=String(a.getNotesLocation());n.window.showInputBox({prompt:"Note name?",value:""}).then(r=>{let s=`${r}`,a=o.join(String(e),`${s.replace(/\:/gi,"")}.md`),c="# "+s+"\n\n",h=i.existsSync(String(a));if(r){if(h)return n.window.showWarningMessage("A note with that name already exists.");i.writeFile(a,c,t=>{if(t)return console.error(t),n.window.showErrorMessage("Failed to create the new note.");{let t=n.Uri.file(a);n.window.showTextDocument(t).then(()=>{n.commands.executeCommand("cursorMove",{to:"viewPortBottom"})})}}),t.refresh()}})}static openNote(t){let e=String(a.getNotesLocation());n.window.showTextDocument(n.Uri.file(o.join(String(e),String(t))))}static refreshNotes(t){t.refresh()}static renameNote(t,e){n.window.showInputBox({prompt:"New note name?",value:t.name}).then(r=>{if(!r||r===t.name)return;let s=r,a=o.join(t.location,s);i.existsSync(a)?n.window.showWarningMessage(`'${s}' already exists.`):(n.window.showInformationMessage(`'${t.name}' renamed to '${s}'.`),i.renameSync(o.join(t.location,t.name),a),e.refresh())})}static setupNotes(){n.window.showOpenDialog({canSelectFiles:!1,canSelectFolders:!0,canSelectMany:!1,openLabel:"Select"}).then(t=>{if(t&&t[0]){n.workspace.getConfiguration("Notes").update("notesLocation",o.normalize(t[0].fsPath),!0).then(()=>{n.window.showWarningMessage("You must reload the window for the storage location change to take effect.","Reload").then(t=>{"Reload"===t&&n.commands.executeCommand("workbench.action.reloadWindow")})})}})}}e.Notes=a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const n=r(2),i=r(1),o=r(6),s=r(0),a=r(23);e.NotesProvider=class{constructor(t){this.notesLocation=t,this._onDidChangeTreeData=new n.EventEmitter,this.onDidChangeTreeData=this._onDidChangeTreeData.event}init(){return this.refresh(),this}refresh(){this._onDidChangeTreeData.fire()}getTreeItem(t){return t}getChildren(t){return this.notesLocation?t?Promise.resolve([]):Promise.resolve(this.getNotes(this.notesLocation)):Promise.resolve([])}getNotes(t){if(this.pathExists(t)){const e=e=>new a.Note(s.basename(e),t,n.TreeItemCollapsibleState.None,{command:"Notes.openNote",title:"",arguments:[e]});return o.sync("*.md",{cwd:t,nodir:!0,nocase:!0}).map(e)}return[]}pathExists(t){try{i.accessSync(t)}catch(t){return!1}return!0}}},function(t,e,r){var n=r(0),i="win32"===process.platform,o=r(1),s=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function a(t){return"function"==typeof t?t:function(){var t;if(s){var e=new Error;t=function(t){t&&(e.message=t.message,r(t=e))}}else t=r;return t;function r(t){if(t){if(process.throwDeprecation)throw t;if(!process.noDeprecation){var e="fs: missing callback "+(t.stack||t.message);process.traceDeprecation?console.trace(e):console.error(e)}}}}()}n.normalize;if(i)var c=/(.*?)(?:[\/\\]+|$)/g;else c=/(.*?)(?:[\/]+|$)/g;if(i)var h=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;else h=/^[\/]*/;e.realpathSync=function(t,e){if(t=n.resolve(t),e&&Object.prototype.hasOwnProperty.call(e,t))return e[t];var r,s,a,u,l=t,f={},p={};function d(){var e=h.exec(t);r=e[0].length,s=e[0],a=e[0],u="",i&&!p[a]&&(o.lstatSync(a),p[a]=!0)}for(d();r=t.length)return e&&(e[p]=t),r(null,t);c.lastIndex=s;var n=c.exec(t);return f=u,u+=n[0],l=f+n[1],s=c.lastIndex,m[l]||e&&e[l]===l?process.nextTick(v):e&&Object.prototype.hasOwnProperty.call(e,l)?w(e[l]):o.lstat(l,y)}function y(t,n){if(t)return r(t);if(!n.isSymbolicLink())return m[l]=!0,e&&(e[l]=l),process.nextTick(v);if(!i){var s=n.dev.toString(32)+":"+n.ino.toString(32);if(d.hasOwnProperty(s))return b(null,d[s],l)}o.stat(l,(function(t){if(t)return r(t);o.readlink(l,(function(t,e){i||(d[s]=e),b(t,e)}))}))}function b(t,i,o){if(t)return r(t);var s=n.resolve(f,i);e&&(e[o]=s),w(s)}function w(e){t=n.resolve(e,t.slice(s)),g()}g()}},function(t,e,r){var n=r(16),i=r(17);t.exports=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return function t(e,r){var o=[],s=i("{","}",e);if(!s||/\$$/.test(s.pre))return[e];var c,h=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(s.body),l=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(s.body),g=h||l,v=s.body.indexOf(",")>=0;if(!g&&!v)return s.post.match(/,.*\}/)?(e=s.pre+"{"+s.body+a+s.post,t(e)):[e];if(g)c=s.body.split(/\.\./);else{if(1===(c=function t(e){if(!e)return[""];var r=[],n=i("{","}",e);if(!n)return e.split(",");var o=n.pre,s=n.body,a=n.post,c=o.split(",");c[c.length-1]+="{"+s+"}";var h=t(a);a.length&&(c[c.length-1]+=h.shift(),c.push.apply(c,h));return r.push.apply(r,c),r}(s.body)).length)if(1===(c=t(c[0],!1).map(f)).length)return(w=s.post.length?t(s.post,!1):[""]).map((function(t){return s.pre+c[0]+t}))}var y,b=s.pre,w=s.post.length?t(s.post,!1):[""];if(g){var _=u(c[0]),E=u(c[1]),O=Math.max(c[0].length,c[1].length),S=3==c.length?Math.abs(u(c[2])):1,k=d;E<_&&(S*=-1,k=m);var x=c.some(p);y=[];for(var N=_;k(N,E);N+=S){var j;if(l)"\\"===(j=String.fromCharCode(N))&&(j="");else if(j=String(N),x){var A=O-j.length;if(A>0){var I=new Array(A+1).join("0");j=N<0?"-"+I+j.slice(1):I+j}}y.push(j)}}else y=n(c,(function(e){return t(e,!1)}));for(var L=0;L=e}},function(t,e){t.exports=function(t,e){for(var n=[],i=0;i=0&&h>0){for(n=[],o=r.length;u>=0&&!a;)u==c?(n.push(u),c=r.indexOf(t,u+1)):1==n.length?a=[n.pop(),h]:((i=n.pop())=0?c:h;n.length&&(a=[o,s])}return a}t.exports=n,n.range=o},function(t,e,r){try{var n=r(4);if("function"!=typeof n.inherits)throw"";t.exports=n.inherits}catch(e){t.exports=r(19)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},function(t,e){t.exports=require("events")},function(t,e,r){t.exports=d,d.GlobSync=m;var n=r(1),i=r(7),o=r(3),s=(o.Minimatch,r(6).Glob,r(4),r(0)),a=r(8),c=r(5),h=r(9),u=(h.alphasort,h.alphasorti,h.setopts),l=h.ownProp,f=h.childrenIgnored,p=h.isIgnored;function d(t,e){if("function"==typeof e||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new m(t,e).found}function m(t,e){if(!t)throw new Error("must provide pattern");if("function"==typeof e||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof m))return new m(t,e);if(u(this,t,e),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var n=0;nthis.maxLength)return!1;if(!this.stat&&l(this.cache,e)){var i=this.cache[e];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return i;if(r&&"FILE"===i)return!1}var o=this.statCache[e];if(!o){var s;try{s=n.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(s&&s.isSymbolicLink())try{o=n.statSync(e)}catch(t){o=s}else o=s}this.statCache[e]=o;i=!0;return o&&(i=o.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||i,(!r||"FILE"!==i)&&i},m.prototype._mark=function(t){return h.mark(this,t)},m.prototype._makeAbs=function(t){return h.makeAbs(this,t)}},function(t,e,r){var n=r(10),i=Object.create(null),o=r(11);function s(t){for(var e=t.length,r=[],n=0;nn?(r.splice(0,n),process.nextTick((function(){e.apply(null,o)}))):delete i[t]}}))}(t))}))},function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});const n=r(2),i=r(0);class o extends n.TreeItem{constructor(e,r,n,o){super(e),this.name=e,this.location=r,this.collapsibleState=n,this.command=o,this.iconPath={light:i.join(t,"..","..","resources","light","note.svg"),dark:i.join(t,"..","..","resources","dark","note.svg")},this.contextValue="note"}get tooltip(){return`${this.name}`}}e.Note=o}).call(this,"/index.js")}]); +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/dist/extension.js.map b/dist/extension.js.map new file mode 100644 index 0000000..56db1e4 --- /dev/null +++ b/dist/extension.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../webpack/bootstrap","../external \"path\"","../external \"fs\"","../external \"vscode\"",".././node_modules/minimatch/minimatch.js","../external \"util\"",".././node_modules/path-is-absolute/index.js",".././node_modules/glob/glob.js",".././node_modules/fs.realpath/index.js","../external \"assert\"",".././node_modules/glob/common.js",".././node_modules/wrappy/wrappy.js",".././node_modules/once/once.js",".././src/extension.ts",".././src/notesProvider.ts",".././node_modules/fs.realpath/old.js",".././node_modules/brace-expansion/index.js",".././node_modules/concat-map/index.js",".././node_modules/balanced-match/index.js",".././node_modules/inherits/inherits.js",".././node_modules/inherits/inherits_browser.js","../external \"events\"",".././node_modules/glob/sync.js",".././node_modules/inflight/inflight.js",".././src/note.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","minimatch","Minimatch","path","sep","er","GLOBSTAR","expand","plTypes","open","close","reSpecials","split","reduce","set","slashSplit","ext","a","b","keys","forEach","k","pattern","options","TypeError","nocomment","charAt","trim","match","this","join","regexp","negate","comment","empty","make","braceExpand","nobrace","filter","list","defaults","def","length","orig","debug","_made","parseNegate","globSet","console","error","globParts","map","si","parse","indexOf","negateOffset","nonegate","substr","isSub","noglobstar","stateChar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","self","clearStateChar","qmark","len","noext","push","type","start","reStart","pl","pop","reEnd","cs","substring","RegExp","sp","SUBPARSE","tail","slice","replace","_","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","partial","filename","file","matchBase","matchOne","flipNegate","fi","pi","fl","hit","fr","pr","swallowee","toLowerCase","Error","posix","win32","result","exec","device","isUnc","Boolean","process","platform","glob","fs","rp","inherits","EE","EventEmitter","assert","isAbsolute","globSync","common","setopts","alphasort","alphasorti","ownProp","inflight","childrenIgnored","isIgnored","once","cb","sync","Glob","GlobSync","_didRealPath","matches","Array","on","_processing","_emitQueue","_processQueue","paused","noprocess","done","_process","_finish","options_","origin","add","extend","j","aborted","realpath","_didRealpath","_realpath","finish","emit","found","_realpathSet","next","index","matchset","_makeAbs","realpathCache","real","syscall","_mark","mark","makeAbs","abort","pause","resume","eq","e","_emitMatch","pq","inGlobStar","prefix","_processSimple","read","remain","abs","_processGlobStar","_processReaddir","_readdir","entries","_processReaddir2","pn","rawGlob","dotOk","matchedEntries","stat","nomount","root","shift","concat","absolute","nodir","cache","isArray","st","statCache","_readdirInGlobStar","follow","lstatcb","lstat","code","isSym","isSymbolicLink","symlinks","isDirectory","readdir","_readdirError","_readdirEntries","readdirCb","cwdAbs","cwd","strict","silent","_processGlobStar2","remainWithoutGlobStar","gspref","noGlobStar","instead","below","_stat","exists","_processSimple2","trail","test","resolve","needDir","maxLength","undefined","statcb","_stat2","realpathSync","monkeypatch","unmonkeypatch","origRealpath","origRealpathSync","version","ok","old","newError","obj","field","nounique","nosort","Infinity","ignore","ignoreMap","setupIgnores","changedCwd","nou","all","apply","literal","sort","notDir","isDir","slash","mabs","some","item","gmatcher","localeCompare","gpattern","matcher","wrappy","fn","wrapper","args","arguments","ret","called","onceStrict","onceError","proto","Function","configurable","context","log","notesTree","NotesProvider","String","Notes","getNotesLocation","vscode","window","registerTreeDataProvider","init","showWarningMessage","then","setupNotes","deleteNoteDisposable","commands","registerCommand","note","deleteNote","subscriptions","listNotesDisposable","listNotes","newNoteDisposable","newNote","openNoteDisposable","openNote","refreshNotesDisposable","refreshNotes","renameNoteDisposable","renameNote","setupNotesDisposable","settings","workspace","getConfiguration","tree","unlink","location","err","showErrorMessage","showInformationMessage","refresh","notesLocation","files","showQuickPick","showTextDocument","Uri","showInputBox","prompt","noteName","fileName","filePath","firstLine","noteExists","existsSync","writeFile","executeCommand","newNoteName","newNotePath","renameSync","showOpenDialog","canSelectFiles","canSelectFolders","canSelectMany","openLabel","fileUri","update","normalize","fsPath","selectedAction","_onDidChangeTreeData","onDidChangeTreeData","event","fire","Promise","getNotes","pathExists","listOfNotes","Note","basename","TreeItemCollapsibleState","None","command","title","gl","accessSync","pathModule","isWindows","DEBUG","env","NODE_DEBUG","maybeCallback","callback","backtrace","message","missingCallback","throwDeprecation","noDeprecation","msg","stack","traceDeprecation","trace","rethrow","nextPartRe","splitRootRe","pos","current","base","previous","original","seenLinks","knownHard","lstatSync","lastIndex","resolvedLink","linkTarget","id","dev","toString","ino","statSync","readlinkSync","nextTick","LOOP","gotResolvedLink","gotStat","gotTarget","readlink","target","concatMap","balanced","str","isTop","expansions","pre","isNumericSequence","body","isAlphaSequence","isSequence","isOptions","post","escClose","parseCommaParts","parts","postParts","embrace","N","x","numeric","y","width","Math","max","incr","lte","gte","pad","isPadded","fromCharCode","need","z","el","expansion","escSlash","escOpen","escComma","escPeriod","escapeBraces","unescapeBraces","random","parseInt","charCodeAt","xs","res","maybeMatch","range","end","reg","begs","beg","left","right","ai","bi","util","ctor","superCtor","super_","constructor","writable","TempCtor","newPattern","readdirSync","reqs","array","RES","cbs","splice","makeres","TreeItem","collapsibleState","super","iconPath","light","__filename","dark","contextValue"],"mappings":"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","file":"extension.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = require(\"path\");","module.exports = require(\"fs\");","module.exports = require(\"vscode\");","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","module.exports = require(\"util\");","'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n","// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n","module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n","module.exports = require(\"assert\");","exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","// figure out how to reload treeview when notes location changes\nimport * as vscode from 'vscode';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { Note } from './note';\nimport { NotesProvider } from './notesProvider';\n\nlet extId = 'vscode-notes';\n\n// activate extension\nexport function activate(context: vscode.ExtensionContext) {\n\n\tconsole.log('\"vscode-notes\" is active.');\n\n\t// register tree view provider\n\tlet notesTree = new NotesProvider(String(Notes.getNotesLocation()));\n\tvscode.window.registerTreeDataProvider('notes', notesTree.init());\n\n\t// prompt user to select a storage location\n\tif (!Notes.getNotesLocation()) {\n\t\tvscode.window.showWarningMessage(`You need to select a notes storage location before you can start using Notes.`, 'Select', 'Cancel').then(result => {\n\t\t\t// if the user answers Select\n\t\t\tif (result === 'Select') {\n\t\t\t\tNotes.setupNotes();\n\t\t\t}\n\t\t});\n\t\treturn;\n\t}\n\n\t/*\n\t* register commands\n\t*/\n\n\t// delete note\n\tlet deleteNoteDisposable = vscode.commands.registerCommand('Notes.deleteNote', (note: Note) => {\n\t\tNotes.deleteNote(note, notesTree);\n\t});\n\tcontext.subscriptions.push(deleteNoteDisposable);\n\n\t// list notes\n\tlet listNotesDisposable = vscode.commands.registerCommand('Notes.listNotes', () => {\n\t\tNotes.listNotes();\n\t});\n\tcontext.subscriptions.push(listNotesDisposable);\n\n\t// new note\n\tlet newNoteDisposable = vscode.commands.registerCommand('Notes.newNote', () => {\n\t\tNotes.newNote(notesTree);\n\t});\n\tcontext.subscriptions.push(newNoteDisposable);\n\n\t// open note\n\tlet openNoteDisposable = vscode.commands.registerCommand('Notes.openNote', (note: Note) => {\n\t\tNotes.openNote(note);\n\t});\n\tcontext.subscriptions.push(openNoteDisposable);\n\n\t// refresh notes\n\tlet refreshNotesDisposable = vscode.commands.registerCommand('Notes.refreshNotes', () => {\n\t\tNotes.refreshNotes(notesTree);\n\t});\n\tcontext.subscriptions.push(refreshNotesDisposable);\n\n\t// rename note\n\tlet renameNoteDisposable = vscode.commands.registerCommand('Notes.renameNote', (note: Note) => {\n\t\tNotes.renameNote(note, notesTree);\n\t});\n\tcontext.subscriptions.push(renameNoteDisposable);\n\n\t// setup notes\n\tlet setupNotesDisposable = vscode.commands.registerCommand('Notes.setupNotes', () => {\n\t\tNotes.setupNotes();\n\t});\n\tcontext.subscriptions.push(setupNotesDisposable);\n\n};\n\n// this method is called when extension is deactivated\nexport function deactivate() {\n\t/*\n\t* everything registered in context.subscriptions,\n\t* so nothing to do here for now\n\t*/\n}\n\nexport class Notes {\n\n\tconstructor(\n\t\tpublic settings: vscode.WorkspaceConfiguration\n\t) {\n\t\tthis.settings = vscode.workspace.getConfiguration(extId);\n\t}\n\n\t// get notes storage location\n\tstatic getNotesLocation() {\n\t\treturn vscode.workspace.getConfiguration('Notes').get('notesLocation');\n\t}\n\n\t// delete note\n\tstatic deleteNote(note: Note, tree: NotesProvider): void {\n\t\t// prompt user for confirmation\n\t\tvscode.window.showWarningMessage(`Are you sure you want to delete '${note.name}'? This action is permanent and can not be reversed.`, 'Yes', 'No').then(result => {\n\t\t\t// if the user answers Yes\n\t\t\tif (result === 'Yes') {\n\t\t\t\t// try to delete the note\n\t\t\t\tfs.unlink(path.join(String(note.location), String(note.name)), (err) => {\n\t\t\t\t\t// if there was an error deleting the note\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\t// report error\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn vscode.window.showErrorMessage(`Failed to delete ${note.name}.`);\n\t\t\t\t\t}\n\t\t\t\t\t// else let the user know the file was deleted successfully\n\t\t\t\t\tvscode.window.showInformationMessage(`Successfully deleted ${note.name}.`);\n\t\t\t\t});\n\t\t\t\t// refresh tree after deleting note\n\t\t\t\ttree.refresh();\n\t\t\t}\n\t\t});\n\t}\n\n\t// list notes\n\tstatic listNotes(): void {\n\t\tlet notesLocation = String(Notes.getNotesLocation());\n\t\t// read files in storage location\n\t\tfs.readdir(String(notesLocation), (err, files) => {\n\t\t\tif (err) {\n\t\t\t\t// report error\n\t\t\t\tconsole.error(err);\n\t\t\t\treturn vscode.window.showErrorMessage('Failed to read the notes folder.');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// show list of notes\n\t\t\t\tvscode.window.showQuickPick(files).then(file => {\n\t\t\t\t\t// open selected note\n\t\t\t\t\tvscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(file))));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// new note\n\tstatic newNote(tree: NotesProvider): void {\n\t\tlet notesLocation = String(Notes.getNotesLocation());\n\t\t// prompt user for a new note name\n\t\tvscode.window.showInputBox({\n\t\t\tprompt: 'Note name?',\n\t\t\tvalue: '',\n\t\t}).then(noteName => {\n\t\t\t// set note name\n\t\t\tlet fileName: string = `${noteName}`;\n\t\t\t// set note path\n\t\t\tlet filePath: string = path.join(String(notesLocation), `${fileName.replace(/\\:/gi, '')}.md`);\n\t\t\t// set note first line\n\t\t\tlet firstLine: string = \"# \" + fileName + \"\\n\\n\";\n\t\t\t// does note exist already?\n\t\t\tlet noteExists = fs.existsSync(String(filePath));\n\t\t\t// if user entered name then create new note\n\t\t\tif(noteName) {\n\t\t\t\t// if a note with name doesn't already exist\n\t\t\t\tif(!noteExists) {\n\t\t\t\t\t// try writing the file to the storage location\n\t\t\t\t\tfs.writeFile(filePath, firstLine, err => {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\t// report error\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn vscode.window.showErrorMessage('Failed to create the new note.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// open file\n\t\t\t\t\t\t\tlet file = vscode.Uri.file(filePath);\n\t\t\t\t\t\t\tvscode.window.showTextDocument(file).then(() => {\n\t\t\t\t\t\t\t\t// go to last line in new file\n\t\t\t\t\t\t\t\tvscode.commands.executeCommand('cursorMove', {'to': 'viewPortBottom'});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t// refresh tree after creating new note\n\t\t\t\t\ttree.refresh();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// report\n\t\t\t\t\treturn vscode.window.showWarningMessage('A note with that name already exists.');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t// open note\n\tstatic openNote(note: Note): void {\n\t\tlet notesLocation = String(Notes.getNotesLocation());\n\t\t// open note at location\n\t\tvscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(note))));\n\t}\n\n\t// refresh notes\n\tstatic refreshNotes(tree: NotesProvider): void {\n\t\t// refresh tree\n\t\ttree.refresh();\n\t}\n\n\t// rename note\n\tstatic renameNote(note: Note, tree: NotesProvider): void {\n\t\t// prompt user for new note name\n\t\tvscode.window.showInputBox({ \n\t\t\tprompt: 'New note name?',\n\t\t\tvalue: note.name \n\t\t}).then(noteName => {\n\t\t\t// if no new note name or note name didn't change\n\t\t\tif (!noteName || noteName === note.name) {\n\t\t\t\t// do nothing\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// set new not name (may do something special with file types in the future)\n\t\t\tlet newNoteName = noteName;\n\n\t\t\t// check for existing note with the same name\n\t\t\tlet newNotePath = path.join(note.location, newNoteName);\n\t\t\tif (fs.existsSync(newNotePath)) {\n\t\t\t\tvscode.window.showWarningMessage(`'${newNoteName}' already exists.`);\n\t\t\t\t// do nothing\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// else save the note\n\t\t\tvscode.window.showInformationMessage(`'${note.name}' renamed to '${newNoteName}'.`);\n\t\t\tfs.renameSync(path.join(note.location, note.name), newNotePath);\n\n\t\t\t// refresh tree after renaming note\n\t\t\ttree.refresh();\n\t\t});\n\t}\n\n\t// setup notes\n\tstatic setupNotes(): void {\n\t\t// dialog options\n\t\tlet openDialogOptions: vscode.OpenDialogOptions = {\n\t\t\tcanSelectFiles: false,\n\t\t\tcanSelectFolders: true,\n\t\t\tcanSelectMany: false,\n\t\t\topenLabel: 'Select'\n\t\t};\n\n\t\t// display open dialog with above options\n\t\tvscode.window.showOpenDialog(openDialogOptions).then(fileUri => {\n\t\t\tif(fileUri && fileUri[0]) {\n\t\t\t\t// get Notes configuration\n\t\t\t\tlet notesConfiguration = vscode.workspace.getConfiguration('Notes');\n\t\t\t\t// update Notes configuration with selected location\n\t\t\t\tnotesConfiguration.update('notesLocation', path.normalize(fileUri[0].fsPath), true).then(() => {\n\t\t\t\t\t// prompt to reload window so storage location change can take effect\n\t\t\t\t\tvscode.window.showWarningMessage(\n\t\t\t\t\t\t`You must reload the window for the storage location change to take effect.`, \n\t\t\t\t\t\t'Reload'\n\t\t\t\t\t).then(selectedAction => {\n\t\t\t\t\t\t// if the user selected to reload the window then reload\n\t\t\t\t\t\tif (selectedAction === 'Reload') {\n\t\t\t\t\t\t\tvscode.commands.executeCommand('workbench.action.reloadWindow');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n}","import * as vscode from 'vscode';\nimport * as fs from 'fs';\nimport * as gl from 'glob';\nimport * as path from 'path';\nimport { Note } from './note';\n\nexport class NotesProvider implements vscode.TreeDataProvider {\n\n\tprivate _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter();\n\treadonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event;\n\n\t// assign notes location passed to NotesProvider\n\tconstructor(private notesLocation: string) {\n\t};\n\n\tpublic init(): NotesProvider {\n\t\tthis.refresh();\n\t\treturn this;\n\t}\n\n\t// refresh tree if tree data changed\n\trefresh(): void {\n\t\tthis._onDidChangeTreeData.fire();\n\t}\n\n\t// get TreeItem representation of a note\n\tgetTreeItem(note: Note): vscode.TreeItem {\n\t\treturn note;\n\t}\n\n\t// get children from notes location\n\tgetChildren(note?: Note): Thenable {\n\t\t// if tree provider wasn't given a notes location to check\n\t\tif (!this.notesLocation) {\n\t\t\treturn Promise.resolve([]);\n\t\t}\n\t\t// if we get a note return resolved promise\n\t\tif (note) {\n\t\t\treturn Promise.resolve([]);\n\t\t}\n\t\t// else return list of notes in notes location\n\t\telse {\n\t\t\treturn Promise.resolve(this.getNotes(this.notesLocation));\n\t\t}\n\t}\n\n\t// get Notes from notes location\n\tgetNotes(notesLocation: string): Note[] {\n\t\t// if the notes location exists\n\t\tif (this.pathExists(notesLocation)) {\n\t\t\t// create a list of Notes called listOfNotes\n\t\t\tconst listOfNotes = (note: string): Note => {\n\t\t\t\t// return a Note, when a note is clicked on in the view, perform a command\n\t\t\t\treturn new Note(path.basename(note), notesLocation, vscode.TreeItemCollapsibleState.None, {\n\t\t\t\t\tcommand: 'Notes.openNote',\n\t\t\t\t\ttitle: '',\n\t\t\t\t\targuments: [note]\n\t\t\t\t});\n\t\t\t};\n\t\t\t// get list of markdown files in notes location and save them in a list called listOfNotes\n\t\t\t// this is markdown focused so markdown is hard coded\n\t\t\tconst notes = gl.sync(`*.md`, { cwd: notesLocation, nodir: true, nocase: true }).map(listOfNotes);\n\t\t\t// return the list of notes\n\t\t\treturn notes;\n\t\t}\n\t\t// if the notes location does not exist\n\t\telse {\n\t\t\t// return an empty list\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// check to see if the given path exists in the file system\n\tprivate pathExists(p: string): boolean {\n\t\t// try accessing the given location\n\t\ttry {\n\t\t\tfs.accessSync(p);\n\t\t// error if we can't access given location\n\t\t} catch (err) {\n\t\t\t// return false if location does not exist\n\t\t\treturn false;\n\t\t}\n\t\t// return true if location exists\n\t\treturn true;\n\t}\n\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = require(\"events\");","module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n","var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n","import * as vscode from 'vscode';\nimport * as path from 'path';\n\nexport class Note extends vscode.TreeItem {\n\n\tconstructor(\n\t\tpublic readonly name: string,\n\t\tpublic readonly location: string,\n\t\tpublic readonly collapsibleState: vscode.TreeItemCollapsibleState,\n\t\tpublic readonly command?: vscode.Command\n\t) {\n\t\tsuper(name);\n\t}\n\n\tget tooltip(): string {\n\t\treturn `${this.name}`;\n\t}\n\n\ticonPath = {\n\t\tlight: path.join(__filename, '..', '..', 'resources', 'light', 'note.svg'),\n\t\tdark: path.join(__filename, '..', '..', 'resources', 'dark', 'note.svg')\n\t};\n\n\tcontextValue = 'note';\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/out/extension.js b/out/extension.js deleted file mode 100644 index 99d3c53..0000000 --- a/out/extension.js +++ /dev/null @@ -1,238 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -// figure out how to reload treeview when notes location changes -const vscode = require("vscode"); -const fs = require("fs"); -const path = require("path"); -const notesProvider_1 = require("./notesProvider"); -let extId = 'vscode-notes'; -// activate extension -function activate(context) { - console.log('"vscode-notes" is active.'); - // register tree view provider - let notesTree = new notesProvider_1.NotesProvider(String(Notes.getNotesLocation())); - vscode.window.registerTreeDataProvider('notes', notesTree.init()); - // prompt user to select a storage location - if (!Notes.getNotesLocation()) { - vscode.window.showWarningMessage(`You need to select a notes storage location before you can start using Notes.`, 'Select', 'Cancel').then(result => { - // if the user answers Select - if (result === 'Select') { - Notes.setupNotes(); - } - }); - return; - } - /* - * register commands - */ - // delete note - let deleteNoteDisposable = vscode.commands.registerCommand('Notes.deleteNote', (note) => { - Notes.deleteNote(note, notesTree); - }); - context.subscriptions.push(deleteNoteDisposable); - // list notes - let listNotesDisposable = vscode.commands.registerCommand('Notes.listNotes', () => { - Notes.listNotes(); - }); - context.subscriptions.push(listNotesDisposable); - // new note - let newNoteDisposable = vscode.commands.registerCommand('Notes.newNote', () => { - Notes.newNote(notesTree); - }); - context.subscriptions.push(newNoteDisposable); - // open note - let openNoteDisposable = vscode.commands.registerCommand('Notes.openNote', (note) => { - Notes.openNote(note); - }); - context.subscriptions.push(openNoteDisposable); - // refresh notes - let refreshNotesDisposable = vscode.commands.registerCommand('Notes.refreshNotes', () => { - Notes.refreshNotes(notesTree); - }); - context.subscriptions.push(refreshNotesDisposable); - // rename note - let renameNoteDisposable = vscode.commands.registerCommand('Notes.renameNote', (note) => { - Notes.renameNote(note, notesTree); - }); - context.subscriptions.push(renameNoteDisposable); - // setup notes - let setupNotesDisposable = vscode.commands.registerCommand('Notes.setupNotes', () => { - Notes.setupNotes(); - }); - context.subscriptions.push(setupNotesDisposable); -} -exports.activate = activate; -; -// this method is called when extension is deactivated -function deactivate() { - /* - * everything registered in context.subscriptions, - * so nothing to do here for now - */ -} -exports.deactivate = deactivate; -class Notes { - constructor(settings) { - this.settings = settings; - this.settings = vscode.workspace.getConfiguration(extId); - } - // get notes storage location - static getNotesLocation() { - return vscode.workspace.getConfiguration('Notes').get('notesLocation'); - } - // delete note - static deleteNote(note, tree) { - // prompt user for confirmation - vscode.window.showWarningMessage(`Are you sure you want to delete '${note.name}'? This action is permanent and can not be reversed.`, 'Yes', 'No').then(result => { - // if the user answers Yes - if (result === 'Yes') { - // try to delete the note - fs.unlink(path.join(String(note.location), String(note.name)), (err) => { - // if there was an error deleting the note - if (err) { - // report error - console.error(err); - return vscode.window.showErrorMessage(`Failed to delete ${note.name}.`); - } - // else let the user know the file was deleted successfully - vscode.window.showInformationMessage(`Successfully deleted ${note.name}.`); - }); - // refresh tree after deleting note - tree.refresh(); - } - }); - } - // list notes - static listNotes() { - let notesLocation = String(Notes.getNotesLocation()); - // read files in storage location - fs.readdir(String(notesLocation), (err, files) => { - if (err) { - // report error - console.error(err); - return vscode.window.showErrorMessage('Failed to read the notes folder.'); - } - else { - // show list of notes - vscode.window.showQuickPick(files).then(file => { - // open selected note - vscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(file)))); - }); - } - }); - } - // new note - static newNote(tree) { - let notesLocation = String(Notes.getNotesLocation()); - // prompt user for a new note name - vscode.window.showInputBox({ - prompt: 'Note name?', - value: '', - }).then(noteName => { - // set note name - let fileName = `${noteName}`; - // set note path - let filePath = path.join(String(notesLocation), `${fileName.replace(/\:/gi, '')}.md`); - // set note first line - let firstLine = "# " + fileName + "\n\n"; - // does note exist already? - let noteExists = fs.existsSync(String(filePath)); - // if user entered name then create new note - if (noteName) { - // if a note with name doesn't already exist - if (!noteExists) { - // try writing the file to the storage location - fs.writeFile(filePath, firstLine, err => { - if (err) { - // report error - console.error(err); - return vscode.window.showErrorMessage('Failed to create the new note.'); - } - else { - // open file - let file = vscode.Uri.file(filePath); - vscode.window.showTextDocument(file).then(() => { - // go to last line in new file - vscode.commands.executeCommand('cursorMove', { 'to': 'viewPortBottom' }); - }); - } - }); - // refresh tree after creating new note - tree.refresh(); - } - else { - // report - return vscode.window.showWarningMessage('A note with that name already exists.'); - } - } - }); - } - // open note - static openNote(note) { - let notesLocation = String(Notes.getNotesLocation()); - // open note at location - vscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(note)))); - } - // refresh notes - static refreshNotes(tree) { - // refresh tree - tree.refresh(); - } - // rename note - static renameNote(note, tree) { - // prompt user for new note name - vscode.window.showInputBox({ - prompt: 'New note name?', - value: note.name - }).then(noteName => { - // if no new note name or note name didn't change - if (!noteName || noteName === note.name) { - // do nothing - return; - } - // set new not name (may do something special with file types in the future) - let newNoteName = noteName; - // check for existing note with the same name - let newNotePath = path.join(note.location, newNoteName); - if (fs.existsSync(newNotePath)) { - vscode.window.showWarningMessage(`'${newNoteName}' already exists.`); - // do nothing - return; - } - // else save the note - vscode.window.showInformationMessage(`'${note.name}' renamed to '${newNoteName}'.`); - fs.renameSync(path.join(note.location, note.name), newNotePath); - // refresh tree after renaming note - tree.refresh(); - }); - } - // setup notes - static setupNotes() { - // dialog options - let openDialogOptions = { - canSelectFiles: false, - canSelectFolders: true, - canSelectMany: false, - openLabel: 'Select' - }; - // display open dialog with above options - vscode.window.showOpenDialog(openDialogOptions).then(fileUri => { - if (fileUri && fileUri[0]) { - // get Notes configuration - let notesConfiguration = vscode.workspace.getConfiguration('Notes'); - // update Notes configuration with selected location - notesConfiguration.update('notesLocation', path.normalize(fileUri[0].fsPath), true).then(() => { - // prompt to reload window so storage location change can take effect - vscode.window.showWarningMessage(`You must reload the window for the storage location change to take effect.`, 'Reload').then(selectedAction => { - // if the user selected to reload the window then reload - if (selectedAction === 'Reload') { - vscode.commands.executeCommand('workbench.action.reloadWindow'); - } - }); - }); - } - }); - } -} -exports.Notes = Notes; -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/out/extension.js.map b/out/extension.js.map deleted file mode 100644 index 5c6c75f..0000000 --- a/out/extension.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/out/note.js b/out/note.js deleted file mode 100644 index 4f932bd..0000000 --- a/out/note.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const vscode = require("vscode"); -const path = require("path"); -class Note extends vscode.TreeItem { - constructor(name, location, collapsibleState, command) { - super(name); - this.name = name; - this.location = location; - this.collapsibleState = collapsibleState; - this.command = command; - this.iconPath = { - light: path.join(__filename, '..', '..', 'resources', 'light', 'note.svg'), - dark: path.join(__filename, '..', '..', 'resources', 'dark', 'note.svg') - }; - this.contextValue = 'note'; - } - get tooltip() { - return `${this.name}`; - } -} -exports.Note = Note; -//# sourceMappingURL=note.js.map \ No newline at end of file diff --git a/out/note.js.map b/out/note.js.map deleted file mode 100644 index 26f77a9..0000000 --- a/out/note.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"note.js","sourceRoot":"","sources":["../src/note.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AACjC,6BAA6B;AAE7B,MAAa,IAAK,SAAQ,MAAM,CAAC,QAAQ;IAExC,YACiB,IAAY,EACZ,QAAgB,EAChB,gBAAiD,EACjD,OAAwB;QAExC,KAAK,CAAC,IAAI,CAAC,CAAC;QALI,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,qBAAgB,GAAhB,gBAAgB,CAAiC;QACjD,YAAO,GAAP,OAAO,CAAiB;QASzC,aAAQ,GAAG;YACV,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC;YAC1E,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC;SACxE,CAAC;QAEF,iBAAY,GAAG,MAAM,CAAC;IAXtB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CAQD;AArBD,oBAqBC"} \ No newline at end of file diff --git a/out/notesProvider.js b/out/notesProvider.js deleted file mode 100644 index 2b5e77d..0000000 --- a/out/notesProvider.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const vscode = require("vscode"); -const fs = require("fs"); -const gl = require("glob"); -const path = require("path"); -const note_1 = require("./note"); -class NotesProvider { - // assign notes location passed to NotesProvider - constructor(notesLocation) { - this.notesLocation = notesLocation; - this._onDidChangeTreeData = new vscode.EventEmitter(); - this.onDidChangeTreeData = this._onDidChangeTreeData.event; - } - ; - init() { - this.refresh(); - return this; - } - // refresh tree if tree data changed - refresh() { - this._onDidChangeTreeData.fire(); - } - // get TreeItem representation of a note - getTreeItem(note) { - return note; - } - // get children from notes location - getChildren(note) { - // if tree provider wasn't given a notes location to check - if (!this.notesLocation) { - return Promise.resolve([]); - } - // if we get a note return resolved promise - if (note) { - return Promise.resolve([]); - } - // else return list of notes in notes location - else { - return Promise.resolve(this.getNotes(this.notesLocation)); - } - } - // get Notes from notes location - getNotes(notesLocation) { - // if the notes location exists - if (this.pathExists(notesLocation)) { - // create a list of Notes called listOfNotes - const listOfNotes = (note) => { - // return a Note, when a note is clicked on in the view, perform a command - return new note_1.Note(path.basename(note), notesLocation, vscode.TreeItemCollapsibleState.None, { - command: 'Notes.openNote', - title: '', - arguments: [note] - }); - }; - // get list of markdown files in notes location and save them in a list called listOfNotes - // this is markdown focused so markdown is hard coded - const notes = gl.sync(`*.md`, { cwd: notesLocation, nodir: true, nocase: true }).map(listOfNotes); - // return the list of notes - return notes; - } - // if the notes location does not exist - else { - // return an empty list - return []; - } - } - // check to see if the given path exists in the file system - pathExists(p) { - // try accessing the given location - try { - fs.accessSync(p); - // error if we can't access given location - } - catch (err) { - // return false if location does not exist - return false; - } - // return true if location exists - return true; - } -} -exports.NotesProvider = NotesProvider; -//# sourceMappingURL=notesProvider.js.map \ No newline at end of file diff --git a/out/notesProvider.js.map b/out/notesProvider.js.map deleted file mode 100644 index f04fe03..0000000 --- a/out/notesProvider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"notesProvider.js","sourceRoot":"","sources":["../src/notesProvider.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AACjC,yBAAyB;AACzB,2BAA2B;AAC3B,6BAA6B;AAC7B,iCAA8B;AAE9B,MAAa,aAAa;IAKzB,gDAAgD;IAChD,YAAoB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;QAJjC,yBAAoB,GAA0C,IAAI,MAAM,CAAC,YAAY,EAAoB,CAAC;QACzG,wBAAmB,GAAmC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAI/F,CAAC;IAAA,CAAC;IAEK,IAAI;QACV,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACb,CAAC;IAED,oCAAoC;IACpC,OAAO;QACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,WAAW,CAAC,IAAU;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,mCAAmC;IACnC,WAAW,CAAC,IAAW;QACtB,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC3B;QACD,2CAA2C;QAC3C,IAAI,IAAI,EAAE;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC3B;QACD,8CAA8C;aACzC;YACJ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SAC1D;IACF,CAAC;IAED,gCAAgC;IAChC,QAAQ,CAAC,aAAqB;QAC7B,+BAA+B;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACnC,4CAA4C;YAC5C,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;gBAC1C,0EAA0E;gBAC1E,OAAO,IAAI,WAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBACzF,OAAO,EAAE,gBAAgB;oBACzB,KAAK,EAAE,EAAE;oBACT,SAAS,EAAE,CAAC,IAAI,CAAC;iBACjB,CAAC,CAAC;YACJ,CAAC,CAAC;YACF,0FAA0F;YAC1F,qDAAqD;YACrD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClG,2BAA2B;YAC3B,OAAO,KAAK,CAAC;SACb;QACD,uCAAuC;aAClC;YACJ,uBAAuB;YACvB,OAAO,EAAE,CAAC;SACV;IACF,CAAC;IAED,2DAA2D;IACnD,UAAU,CAAC,CAAS;QAC3B,mCAAmC;QACnC,IAAI;YACH,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClB,0CAA0C;SACzC;QAAC,OAAO,GAAG,EAAE;YACb,0CAA0C;YAC1C,OAAO,KAAK,CAAC;SACb;QACD,iCAAiC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;CAED;AAhFD,sCAgFC"} \ No newline at end of file diff --git a/out/test/runTest.js b/out/test/runTest.js deleted file mode 100644 index e5fc9b7..0000000 --- a/out/test/runTest.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = require("path"); -const vscode_test_1 = require("vscode-test"); -function main() { - return __awaiter(this, void 0, void 0, function* () { - try { - // The folder containing the Extension Manifest package.json - // Passed to `--extensionDevelopmentPath` - const extensionDevelopmentPath = path.resolve(__dirname, '../../'); - // The path to test runner - // Passed to --extensionTestsPath - const extensionTestsPath = path.resolve(__dirname, './suite/index'); - // Download VS Code, unzip it and run the integration test - yield vscode_test_1.runTests({ extensionDevelopmentPath, extensionTestsPath }); - } - catch (err) { - console.error('Failed to run tests'); - process.exit(1); - } - }); -} -main(); -//# sourceMappingURL=runTest.js.map \ No newline at end of file diff --git a/out/test/runTest.js.map b/out/test/runTest.js.map deleted file mode 100644 index 9583dd6..0000000 --- a/out/test/runTest.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runTest.js","sourceRoot":"","sources":["../../src/test/runTest.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6BAA6B;AAE7B,6CAAuC;AAEvC,SAAe,IAAI;;QAClB,IAAI;YACH,4DAA4D;YAC5D,yCAAyC;YACzC,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEnE,0BAA0B;YAC1B,iCAAiC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAEpE,0DAA0D;YAC1D,MAAM,sBAAQ,CAAC,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,CAAC,CAAC;SACjE;QAAC,OAAO,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;IACF,CAAC;CAAA;AAED,IAAI,EAAE,CAAC"} \ No newline at end of file diff --git a/out/test/suite/extension.test.js b/out/test/suite/extension.test.js deleted file mode 100644 index c391117..0000000 --- a/out/test/suite/extension.test.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const assert = require("assert"); -// You can import and use all API from the 'vscode' module -// as well as import your extension to test it -const vscode = require("vscode"); -// import * as myExtension from '../extension'; -suite('Extension Test Suite', () => { - vscode.window.showInformationMessage('Start all tests.'); - test('Sample test', () => { - assert.equal(-1, [1, 2, 3].indexOf(5)); - assert.equal(-1, [1, 2, 3].indexOf(0)); - }); -}); -//# sourceMappingURL=extension.test.js.map \ No newline at end of file diff --git a/out/test/suite/extension.test.js.map b/out/test/suite/extension.test.js.map deleted file mode 100644 index 399ac70..0000000 --- a/out/test/suite/extension.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extension.test.js","sourceRoot":"","sources":["../../../src/test/suite/extension.test.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AAEjC,0DAA0D;AAC1D,8CAA8C;AAC9C,iCAAiC;AACjC,+CAA+C;AAE/C,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAEzD,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/out/test/suite/index.js b/out/test/suite/index.js deleted file mode 100644 index 8659783..0000000 --- a/out/test/suite/index.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = require("path"); -const Mocha = require("mocha"); -const glob = require("glob"); -function run() { - // Create the mocha test - const mocha = new Mocha({ - ui: 'tdd', - }); - mocha.useColors(true); - const testsRoot = path.resolve(__dirname, '..'); - return new Promise((c, e) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return e(err); - } - // Add files to the test suite - files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); - try { - // Run the mocha test - mocha.run(failures => { - if (failures > 0) { - e(new Error(`${failures} tests failed.`)); - } - else { - c(); - } - }); - } - catch (err) { - console.error(err); - e(err); - } - }); - }); -} -exports.run = run; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/out/test/suite/index.js.map b/out/test/suite/index.js.map deleted file mode 100644 index b84175c..0000000 --- a/out/test/suite/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/suite/index.ts"],"names":[],"mappings":";;AAAA,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAE7B,SAAgB,GAAG;IAClB,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACvB,EAAE,EAAE,KAAK;KACT,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxD,IAAI,GAAG,EAAE;gBACR,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;aACd;YAED,8BAA8B;YAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9D,IAAI;gBACH,qBAAqB;gBACrB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACpB,IAAI,QAAQ,GAAG,CAAC,EAAE;wBACjB,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,gBAAgB,CAAC,CAAC,CAAC;qBAC1C;yBAAM;wBACN,CAAC,EAAE,CAAC;qBACJ;gBACF,CAAC,CAAC,CAAC;aACH;YAAC,OAAO,GAAG,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC,CAAC,GAAG,CAAC,CAAC;aACP;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAjCD,kBAiCC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 60f2d34..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2022 +0,0 @@ -{ - "name": "vscode-notes", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/mkdirp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.0.tgz", - "integrity": "sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", - "dev": true - }, - "@types/node": { - "version": "12.12.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz", - "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==", - "dev": true - }, - "@types/rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-7WhJ0MdpFgYQPXlF4Dx+DhgvlPCfz/x5mHaeDQAKhcenvQP1KCpLQ18JklAqeGMYSAT2PxLpzd0g2/HE7fj7hQ==", - "dev": true, - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, - "@types/vscode": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.43.0.tgz", - "integrity": "sha512-kIaR9qzd80rJOxePKpCB/mdy00mz8Apt2QA5Y6rdrKFn13QNFNeP3Hzmsf37Bwh/3cS7QjtAeGSK7wSqAU0sYQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz", - "integrity": "sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.25.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz", - "integrity": "sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz", - "integrity": "sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.25.0", - "@typescript-eslint/typescript-estree": "2.25.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz", - "integrity": "sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" - } - }, - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "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=", - "dev": true - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", - "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", - "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", - "dev": true, - "requires": { - "estraverse": "^5.0.0" - }, - "dependencies": { - "estraverse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "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-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", - "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.3", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "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" - } - }, - "mkdirp": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", - "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "vscode-test": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz", - "integrity": "sha512-LddukcBiSU2FVTDr3c1D8lwkiOvwlJdDL2hqVbn6gIz+rpTqUCkMZSKYm94Y1v0WXlHSDQBsXyY+tchWQgGVsw==", - "dev": true, - "requires": { - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.4", - "rimraf": "^2.6.3" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } - } - } -} diff --git a/package.json b/package.json index 1578981..d8a2b2c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "onCommand:Notes.renameNote", "onCommand:Notes.setupNotes" ], - "main": "./out/extension.js", + "main": "./dist/extension", "contributes": { "configuration": { "type": "object", @@ -154,12 +154,15 @@ } }, "scripts": { - "vscode:prepublish": "npm run compile", + "vscode:prepublish": "webpack --mode production", "compile": "tsc -p ./", "lint": "eslint src --ext ts", "watch": "tsc -watch -p ./", "pretest": "npm run compile && npm run lint", - "test": "node ./out/test/runTest.js" + "test": "node ./out/test/runTest.js", + "webpack": "webpack --mode development", + "webpack-dev": "webpack --mode development --watch", + "test-compile": "tsc -p ./" }, "devDependencies": { "@types/glob": "^7.1.1", @@ -173,7 +176,10 @@ "eslint": "^6.8.0", "glob": "^7.1.6", "mocha": "^7.0.1", + "ts-loader": "^6.2.2", "typescript": "^3.7.5", - "vscode-test": "^1.3.0" + "vscode-test": "^1.3.0", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" } } diff --git a/src/extension.ts b/src/extension.ts deleted file mode 100644 index f34dc3b..0000000 --- a/src/extension.ts +++ /dev/null @@ -1,267 +0,0 @@ -// figure out how to reload treeview when notes location changes -import * as vscode from 'vscode'; -import * as fs from 'fs'; -import * as path from 'path'; -import { Note } from './note'; -import { NotesProvider } from './notesProvider'; - -let extId = 'vscode-notes'; - -// activate extension -export function activate(context: vscode.ExtensionContext) { - - console.log('"vscode-notes" is active.'); - - // register tree view provider - let notesTree = new NotesProvider(String(Notes.getNotesLocation())); - vscode.window.registerTreeDataProvider('notes', notesTree.init()); - - // prompt user to select a storage location - if (!Notes.getNotesLocation()) { - vscode.window.showWarningMessage(`You need to select a notes storage location before you can start using Notes.`, 'Select', 'Cancel').then(result => { - // if the user answers Select - if (result === 'Select') { - Notes.setupNotes(); - } - }); - return; - } - - /* - * register commands - */ - - // delete note - let deleteNoteDisposable = vscode.commands.registerCommand('Notes.deleteNote', (note: Note) => { - Notes.deleteNote(note, notesTree); - }); - context.subscriptions.push(deleteNoteDisposable); - - // list notes - let listNotesDisposable = vscode.commands.registerCommand('Notes.listNotes', () => { - Notes.listNotes(); - }); - context.subscriptions.push(listNotesDisposable); - - // new note - let newNoteDisposable = vscode.commands.registerCommand('Notes.newNote', () => { - Notes.newNote(notesTree); - }); - context.subscriptions.push(newNoteDisposable); - - // open note - let openNoteDisposable = vscode.commands.registerCommand('Notes.openNote', (note: Note) => { - Notes.openNote(note); - }); - context.subscriptions.push(openNoteDisposable); - - // refresh notes - let refreshNotesDisposable = vscode.commands.registerCommand('Notes.refreshNotes', () => { - Notes.refreshNotes(notesTree); - }); - context.subscriptions.push(refreshNotesDisposable); - - // rename note - let renameNoteDisposable = vscode.commands.registerCommand('Notes.renameNote', (note: Note) => { - Notes.renameNote(note, notesTree); - }); - context.subscriptions.push(renameNoteDisposable); - - // setup notes - let setupNotesDisposable = vscode.commands.registerCommand('Notes.setupNotes', () => { - Notes.setupNotes(); - }); - context.subscriptions.push(setupNotesDisposable); - -}; - -// this method is called when extension is deactivated -export function deactivate() { - /* - * everything registered in context.subscriptions, - * so nothing to do here for now - */ -} - -export class Notes { - - constructor( - public settings: vscode.WorkspaceConfiguration - ) { - this.settings = vscode.workspace.getConfiguration(extId); - } - - // get notes storage location - static getNotesLocation() { - return vscode.workspace.getConfiguration('Notes').get('notesLocation'); - } - - // delete note - static deleteNote(note: Note, tree: NotesProvider): void { - // prompt user for confirmation - vscode.window.showWarningMessage(`Are you sure you want to delete '${note.name}'? This action is permanent and can not be reversed.`, 'Yes', 'No').then(result => { - // if the user answers Yes - if (result === 'Yes') { - // try to delete the note - fs.unlink(path.join(String(note.location), String(note.name)), (err) => { - // if there was an error deleting the note - if (err) { - // report error - console.error(err); - return vscode.window.showErrorMessage(`Failed to delete ${note.name}.`); - } - // else let the user know the file was deleted successfully - vscode.window.showInformationMessage(`Successfully deleted ${note.name}.`); - }); - // refresh tree after deleting note - tree.refresh(); - } - }); - } - - // list notes - static listNotes(): void { - let notesLocation = String(Notes.getNotesLocation()); - // read files in storage location - fs.readdir(String(notesLocation), (err, files) => { - if (err) { - // report error - console.error(err); - return vscode.window.showErrorMessage('Failed to read the notes folder.'); - } - else { - // show list of notes - vscode.window.showQuickPick(files).then(file => { - // open selected note - vscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(file)))); - }); - } - }); - } - - // new note - static newNote(tree: NotesProvider): void { - let notesLocation = String(Notes.getNotesLocation()); - // prompt user for a new note name - vscode.window.showInputBox({ - prompt: 'Note name?', - value: '', - }).then(noteName => { - // set note name - let fileName: string = `${noteName}`; - // set note path - let filePath: string = path.join(String(notesLocation), `${fileName.replace(/\:/gi, '')}.md`); - // set note first line - let firstLine: string = "# " + fileName + "\n\n"; - // does note exist already? - let noteExists = fs.existsSync(String(filePath)); - // if user entered name then create new note - if(noteName) { - // if a note with name doesn't already exist - if(!noteExists) { - // try writing the file to the storage location - fs.writeFile(filePath, firstLine, err => { - if(err) { - // report error - console.error(err); - return vscode.window.showErrorMessage('Failed to create the new note.'); - } - else { - // open file - let file = vscode.Uri.file(filePath); - vscode.window.showTextDocument(file).then(() => { - // go to last line in new file - vscode.commands.executeCommand('cursorMove', {'to': 'viewPortBottom'}); - }); - } - }); - // refresh tree after creating new note - tree.refresh(); - } - else { - // report - return vscode.window.showWarningMessage('A note with that name already exists.'); - } - } - }); - } - - // open note - static openNote(note: Note): void { - let notesLocation = String(Notes.getNotesLocation()); - // open note at location - vscode.window.showTextDocument(vscode.Uri.file(path.join(String(notesLocation), String(note)))); - } - - // refresh notes - static refreshNotes(tree: NotesProvider): void { - // refresh tree - tree.refresh(); - } - - // rename note - static renameNote(note: Note, tree: NotesProvider): void { - // prompt user for new note name - vscode.window.showInputBox({ - prompt: 'New note name?', - value: note.name - }).then(noteName => { - // if no new note name or note name didn't change - if (!noteName || noteName === note.name) { - // do nothing - return; - } - - // set new not name (may do something special with file types in the future) - let newNoteName = noteName; - - // check for existing note with the same name - let newNotePath = path.join(note.location, newNoteName); - if (fs.existsSync(newNotePath)) { - vscode.window.showWarningMessage(`'${newNoteName}' already exists.`); - // do nothing - return; - } - - // else save the note - vscode.window.showInformationMessage(`'${note.name}' renamed to '${newNoteName}'.`); - fs.renameSync(path.join(note.location, note.name), newNotePath); - - // refresh tree after renaming note - tree.refresh(); - }); - } - - // setup notes - static setupNotes(): void { - // dialog options - let openDialogOptions: vscode.OpenDialogOptions = { - canSelectFiles: false, - canSelectFolders: true, - canSelectMany: false, - openLabel: 'Select' - }; - - // display open dialog with above options - vscode.window.showOpenDialog(openDialogOptions).then(fileUri => { - if(fileUri && fileUri[0]) { - // get Notes configuration - let notesConfiguration = vscode.workspace.getConfiguration('Notes'); - // update Notes configuration with selected location - notesConfiguration.update('notesLocation', path.normalize(fileUri[0].fsPath), true).then(() => { - // prompt to reload window so storage location change can take effect - vscode.window.showWarningMessage( - `You must reload the window for the storage location change to take effect.`, - 'Reload' - ).then(selectedAction => { - // if the user selected to reload the window then reload - if (selectedAction === 'Reload') { - vscode.commands.executeCommand('workbench.action.reloadWindow'); - } - }); - }); - } - }); - } - -} \ No newline at end of file diff --git a/src/note.ts b/src/note.ts deleted file mode 100644 index 1b64ff1..0000000 --- a/src/note.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as vscode from 'vscode'; -import * as path from 'path'; - -export class Note extends vscode.TreeItem { - - constructor( - public readonly name: string, - public readonly location: string, - public readonly collapsibleState: vscode.TreeItemCollapsibleState, - public readonly command?: vscode.Command - ) { - super(name); - } - - get tooltip(): string { - return `${this.name}`; - } - - iconPath = { - light: path.join(__filename, '..', '..', 'resources', 'light', 'note.svg'), - dark: path.join(__filename, '..', '..', 'resources', 'dark', 'note.svg') - }; - - contextValue = 'note'; -} \ No newline at end of file diff --git a/src/notesProvider.ts b/src/notesProvider.ts deleted file mode 100644 index 6a5bb03..0000000 --- a/src/notesProvider.ts +++ /dev/null @@ -1,87 +0,0 @@ -import * as vscode from 'vscode'; -import * as fs from 'fs'; -import * as gl from 'glob'; -import * as path from 'path'; -import { Note } from './note'; - -export class NotesProvider implements vscode.TreeDataProvider { - - private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); - readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event; - - // assign notes location passed to NotesProvider - constructor(private notesLocation: string) { - }; - - public init(): NotesProvider { - this.refresh(); - return this; - } - - // refresh tree if tree data changed - refresh(): void { - this._onDidChangeTreeData.fire(); - } - - // get TreeItem representation of a note - getTreeItem(note: Note): vscode.TreeItem { - return note; - } - - // get children from notes location - getChildren(note?: Note): Thenable { - // if tree provider wasn't given a notes location to check - if (!this.notesLocation) { - return Promise.resolve([]); - } - // if we get a note return resolved promise - if (note) { - return Promise.resolve([]); - } - // else return list of notes in notes location - else { - return Promise.resolve(this.getNotes(this.notesLocation)); - } - } - - // get Notes from notes location - getNotes(notesLocation: string): Note[] { - // if the notes location exists - if (this.pathExists(notesLocation)) { - // create a list of Notes called listOfNotes - const listOfNotes = (note: string): Note => { - // return a Note, when a note is clicked on in the view, perform a command - return new Note(path.basename(note), notesLocation, vscode.TreeItemCollapsibleState.None, { - command: 'Notes.openNote', - title: '', - arguments: [note] - }); - }; - // get list of markdown files in notes location and save them in a list called listOfNotes - // this is markdown focused so markdown is hard coded - const notes = gl.sync(`*.md`, { cwd: notesLocation, nodir: true, nocase: true }).map(listOfNotes); - // return the list of notes - return notes; - } - // if the notes location does not exist - else { - // return an empty list - return []; - } - } - - // check to see if the given path exists in the file system - private pathExists(p: string): boolean { - // try accessing the given location - try { - fs.accessSync(p); - // error if we can't access given location - } catch (err) { - // return false if location does not exist - return false; - } - // return true if location exists - return true; - } - -} \ No newline at end of file diff --git a/src/test/runTest.ts b/src/test/runTest.ts deleted file mode 100644 index 1eabfa3..0000000 --- a/src/test/runTest.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as path from 'path'; - -import { runTests } from 'vscode-test'; - -async function main() { - try { - // The folder containing the Extension Manifest package.json - // Passed to `--extensionDevelopmentPath` - const extensionDevelopmentPath = path.resolve(__dirname, '../../'); - - // The path to test runner - // Passed to --extensionTestsPath - const extensionTestsPath = path.resolve(__dirname, './suite/index'); - - // Download VS Code, unzip it and run the integration test - await runTests({ extensionDevelopmentPath, extensionTestsPath }); - } catch (err) { - console.error('Failed to run tests'); - process.exit(1); - } -} - -main(); diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts deleted file mode 100644 index d59ba91..0000000 --- a/src/test/suite/extension.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as assert from 'assert'; - -// You can import and use all API from the 'vscode' module -// as well as import your extension to test it -import * as vscode from 'vscode'; -// import * as myExtension from '../extension'; - -suite('Extension Test Suite', () => { - vscode.window.showInformationMessage('Start all tests.'); - - test('Sample test', () => { - assert.equal(-1, [1, 2, 3].indexOf(5)); - assert.equal(-1, [1, 2, 3].indexOf(0)); - }); -}); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts deleted file mode 100644 index 7d3ac4b..0000000 --- a/src/test/suite/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import * as path from 'path'; -import * as Mocha from 'mocha'; -import * as glob from 'glob'; - -export function run(): Promise { - // Create the mocha test - const mocha = new Mocha({ - ui: 'tdd', - }); - mocha.useColors(true); - - const testsRoot = path.resolve(__dirname, '..'); - - return new Promise((c, e) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return e(err); - } - - // Add files to the test suite - files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); - - try { - // Run the mocha test - mocha.run(failures => { - if (failures > 0) { - e(new Error(`${failures} tests failed.`)); - } else { - c(); - } - }); - } catch (err) { - console.error(err); - e(err); - } - }); - }); -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index b65c745..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "outDir": "out", - "lib": [ - "es6" - ], - "sourceMap": true, - "rootDir": "src", - "strict": true /* enable all strict type-checking options */ - /* Additional Checks */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - }, - "exclude": [ - "node_modules", - ".vscode-test" - ] -}