From 42a6af06d4435377b39e73947ee84201506eacc3 Mon Sep 17 00:00:00 2001 From: Maddison Hellstrom Date: Sun, 27 Aug 2017 20:24:24 -0700 Subject: [PATCH] Initial commit --- .gitignore | 64 ++ README.md | 82 +++ conf.js | 903 ++++++++++++++++++++++++ conf.priv.example.js | 29 + gulpfile.js | 30 + package-lock.json | 1601 ++++++++++++++++++++++++++++++++++++++++++ package.json | 25 + 7 files changed, 2734 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 conf.js create mode 100644 conf.priv.example.js create mode 100644 gulpfile.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20dd933 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +*.priv.js + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Build directory +build/ + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8f37c5 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +### Maddy's SurfingKeys Configuration + +This is my personal configuration for the wonderful [SurfingKeys](https://github.com/brookhong/Surfingkeys) Chrome Extension. + + +It currently includes Search Engine auto-completions for 31 sites, +along with some convenience functions and key remappings. + +| Alias | Name | Domain | +| ---- | ------ | ----- | +| `al` | `archlinux` | `www.archlinux.org` | +| `au` | `AUR` | `aur.archlinux.org` | +| `aw` | `archwiki` | `wiki.archlinux.org` | +| `az` | `amazon` | `smile.amazon.com` | +| `cl` | `craigslist` | `craigslist.org` | +| `co` | `crunchbase-orgs` | `www.crunchbase.com` | +| `cp` | `crunchbase-people` | `www.crunchbase.com` | +| `cs` | `chromestore` | `chrome.google.com` | +| `de` | `define` | `onelook.com` | +| `dg` | `duckduckgo` | `duckduckgo.com` | +| `dh` | `dockerhub` | `hub.docker.com` | +| `do` | `domainr` | `domainr.com` | +| `ex` | `hexdocs` | `hex.pm` | +| `gd` | `godoc` | `godoc.org` | +| `gh` | `github` | `github.com` | +| `go` | `google` | `www.google.com` | +| `gs` | `go-search` | `go-search.org` | +| `ha` | `hackage` | `hackage.haskell.org` | +| `hd` | `hexdocs` | `hex.pm` | +| `hn` | `hackernews` | `hn.algolia.com` | +| `ho` | `hoogle` | `www.haskell.org` | +| `hw` | `haskellwiki` | `wiki.haskell.org` | +| `hx` | `hex` | `hex.pm` | +| `hy` | `hayoo` | `hayoo.fh-wedel.de` | +| `md` | `mdn` | `developer.mozilla.org` | +| `np` | `npm` | `www.npmjs.com` | +| `re` | `reddit` | `www.reddit.com` | +| `so` | `stackoverflow` | `stackoverflow.com` | +| `wp` | `wikipedia` | `en.wikipedia.org` | +| `yp` | `yelp` | `www.yelp.com` | +| `yt` | `youtube` | `www.youtube.com` | + +#### Installation + +You'll need `git`, `node`, and `gulp`. + +First, clone the repo: + +```shell +$ git clone http://github.com/b0o/surfingkeys-conf +$ cd surfingkeys-conf +``` + +Next, follow the instructions inside [conf.priv.example.js](conf.priv.example.js). +If you don't want to add any API keys, just copy the file as instructed but leave it as-is: + +```shell +$ cp ./conf.priv.example.js ./conf.priv.js +``` + +Next, run `npm install`: + +```shell +$ npm install +``` + +Run `gulp install`. +This will build the final configuration file and place it in `~/.surfingkeys`. +If you already have a file in that location, make sure you back it up first! + +```shell +$ gulp install +``` + +In order to reference a local file, you need to check __Allow access to file URLs__ in [chrome://extensions/](chrome://extensions/) for the SurfingKeys extension. + +Finally, you'll need to open the SurfingKeys [configuration page](chrome-extension://mffcegbjcdejldmihkogmcnkgbbhioid/pages/options.html) and set the __Load settings from__ option to __"file:///home/YOUR_USERNAME_HERE/.surfingkeys"__. (This is for Unix-like Operating Systems. For Windows, you'll need to figure out the proper path) + +If you make a change to __conf.js__ in the future, simply run `gulp install` again. + +### License +©2017 Maddison Hellstrom - MIT License diff --git a/conf.js b/conf.js new file mode 100644 index 0000000..07725fc --- /dev/null +++ b/conf.js @@ -0,0 +1,903 @@ +// Unmap undesired defaults +var unmaps = [ "sb" , "sw", "ob" + , "ow" , "cp", ";cp" + , ";ap", "spa", "spb" + , "spd", "sps", "spc" + , "spi", "sfr", "zQ" + , "zz" , "zR", "ab" + , "Q" , "q", "ag" + , "af" + ]; + +unmaps.forEach(function(u) { + unmap(u); +}); + +var rmSearchAliases = + { "s" : [ "g", "d", "b" + , "w", "s", "h" ] + }; + +Object.keys(rmSearchAliases).forEach(function(k) { + rmSearchAliases[k].forEach(function(v) { + removeSearchAliasX(v, k); + }); +}); + +// Settings +settings.hintAlign = "left"; +settings.omnibarSuggestionTimeout = 500 +// settings.hintGroups = false + +// Maps +// Left-hand aliases +// Movement +map('w', 'k'); +map('s', 'j'); + +// Right-hand aliases +// Tab Navigation +map('J', 'E'); +map('K', 'R'); + +// History +map('H', 'S'); +map('L', 'D'); + +// Mapkeys +mapkey('=w', "Lookup whois information for domain", whois, { + repeatIgnore: true +}); + +mapkey('=d', "Lookup dns information for domain", dns, { + repeatIgnore: true +}); + +mapkey('=D', "Lookup all information for domain", dnsVerbose, { + repeatIgnore: true +}); + +mapkey(';se', '#11Edit Settings', 'tabOpenLink("/pages/options.html")'); + +mapkey('\\fs', "Run fakespot for the current page (Amazon, Yelp)", fakeSpot, { + repeatIgnore: true, + domain: /(amazon\.com|yelp\.com)/i +}); + +mapkey('\\F', "Toggle fullscreen (YouTube)", ytFullscreen, { + repeatIgnore: true, + domain: /(youtube\.com)/i +}); + +mapkey('\\F', "Toggle fullscreen (Vimeo)", vimeoFullscreen, { + repeatIgnore: true, + domain: /(vimeo\.com)/i +}); + +mapkey('\\s', "Toggle Star (GitHub)", ghToggleStar, { + repeatIgnore: true, + domain: /(github\.com)/i +}); + +mapkey('\\s', "Toggle Star (GitLab)", glToggleStar, { + repeatIgnore: true, + domain: /(gitlab\.com)/i +}); + +mapkey('\\c', "Collapse comment (Reddit)", function() { + Hints.create('a.expand', Hints.dispatchMouseClick) +}, { + domain: /(reddit\.com)/i +}); + +mapkey('\\c', "Collapse comment (HN)", function() { + Hints.create('a.togg', Hints.dispatchMouseClick) +}, { + domain: /(news\.ycombinator\.com)/i +}); + +mapkey('\\v', "Cast vote (Reddit)", function() { + Hints.create('div.arrow', Hints.dispatchMouseClick) +}, { + domain: /(reddit\.com)/i +}); + +mapkey('\\v', "Cast vote (HN)", function() { + Hints.create('div.votearrow', Hints.dispatchMouseClick) +}, { + domain: /(news\.ycombinator\.com)/i +}); + +mapkey('gi', 'Edit current URL with vim editor', vimEditURL); + +// Search & completion +// Search leader +let sl = 'a'; + +// This is a base64-encoded image used as a placeholder for +// the crunchbase Omnibar results if they don't have an image +let blank = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAAAAAByaaZbAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+EICxEMErRVWUQAAABOdEVYdFJhdyBwcm9maWxlIHR5cGUgZXhpZgAKZXhpZgogICAgICAyMAo0NTc4Njk2NjAwMDA0OTQ5MmEwMDA4MDAwMDAwMDAwMDAwMDAwMDAwCnwMkD0AAAGXSURBVEjH1ZRvc4IwDMb7/T8dbVr/sEPlPJQd3g22GzJdmxVOHaQa8N2WN7wwvyZ5Eh/hngzxTwDr0If/TAK67POxbqxnpgCIx9dkrkEvswYnAFiutFSgtQapS4ejwFYqbXQXBmC+QxawuI/MJb0LiCq0DICNHoZRKQdYLKQZEhATcQmwDYD5GR8DDtfqaYAMActvTiVMaUvqhZPVYhYAK2SBAwGMTHngnc4wVmFPW9L6k1PJxbSCkfvhqolKSQhsWSClizNyxwAWdzIADixQRXRmdWSHthsg+TknaztFMZgC3vh/nG/qo68TLAKrCSrUg1ulp3cH+BpItBp3DZf0lFXVOIDnBdwKkLO4D5Q3QMO6HJ+hUb1NKNWMGJn3jf4ejPKn99CXOtsuyab95obGL/rpdZ7oIJK87iPiumG01drbdggoCZuq/f0XaB8/FbG62Ta5cD97XJwuZUT7ONbZTIK5m94hBuQs8535MsL5xxPw6ZoNj0DiyzhhcyMf9BJ0Jk1uRRpNyb4y0UaM9UI7E8+kt/EHgR/R6042JzmiwgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNy0wOC0xMVQxNzoxMjoxOC0wNDowMLy29LgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDgtMTFUMTc6MTI6MTgtMDQ6MDDN60wEAAAAAElFTkSuQmCC"; + +// Search engines +var search = [ + { alias: 'al' + , name: 'archlinux' + , search: 'https://www.archlinux.org/packages/?arch=x86_64&q=' + , compl: '' + , callback: function() {} + }, + { alias: 'au' + , name: 'AUR' + , search: 'https://aur.archlinux.org/packages/?O=0&SeB=nd&outdated=&SB=v&SO=d&PP=100&do_Search=Go&K=' + , compl: 'https://aur.archlinux.org/rpc?type=suggest&arg=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res, function(s) { + return Omnibar.createURLItem({ + title: s, + url: "https://aur.archlinux.org/packages/" + s + }); + }); + } + }, + { alias: 'aw' + , name: 'archwiki' + , search: 'https://wiki.archlinux.org/index.php?go=go&search=' + , compl: 'https://wiki.archlinux.org/api.php?action=opensearch&format=json&formatversion=2&namespace=0&limit=10&suggest=true&search=' + , callback: function(response) { + Omnibar.listWords(JSON.parse(response.text)[1]); + } + }, + { alias: 'az' + , name: 'amazon' + , search: 'https://smile.amazon.com/s/?field-keywords=' + , compl: 'https://completion.amazon.com/search/complete?method=completion&mkt=1&search-alias=aps&q=' + , callback: function(response) { + var res = JSON.parse(response.text)[1]; + Omnibar.listWords(res); + } + }, + { alias: 'cl' + , name: 'craigslist' + , search: 'https://craigslist.org/search/sss?query=' + , compl: 'https://craigslist.org/suggest?v=12&type=search&cat=sss&area=1&term=' + , callback: function(response) { + Omnibar.listWords(JSON.parse(response.text)); + } + }, + { alias: 'co' + , name: 'crunchbase-orgs' + , search: 'https://www.crunchbase.com/app/search/?q=' + , compl: `https://api.crunchbase.com/v/3/odm_organizations?user_key=${keys.crunchbase}&query=%s` + , callback: function(response) { + var res = JSON.parse(response.text)["data"]["items"]; + var orgs = []; + res.map(function(rr){ + var r = rr.properties; + var p = { + name: r["name"], + domain: r["domain"], + desc: r["short_description"], + role: r["primary_role"], + img: blank, + loc: "", + url: "https://www.crunchbase.com/" + r["web_path"] + }; + + p.loc += (r["city_name"] !== null) ? r["city_name"] : ""; + p.loc += (r["region_name"] !== null && p.loc !== "") ? ", " : ""; + p.loc += (r["region_name"] !== null) ? r["region_name"] : ""; + p.loc += (r["country_code"] !== null && p.loc !== "") ? ", " : ""; + p.loc += (r["country_code"] !== null) ? r["country_code"] : ""; + p.loc += (p.loc === "") ? "Earth" : ""; + + if (r["profile_image_url"] !== null) { + var url = r["profile_image_url"] + , path = url.split('/') + , img = path[path.length-1]; + p.img = "http://public.crunchbase.com/t_api_images/v1402944794/c_pad,h_50,w_50/" + img; + } + + orgs.push(p) + }); + + Omnibar.listResults(orgs, function(p) { + var li = $('
  • ').html(` +
    +
    + ${p.name} +
    +
    +
    ${p.name}
    +
    Type: ${p.role}, Domain: ${p.domain}
    +
    ${p.desc}
    +
    ${p.loc}
    +
    +
    + `) + li.data('url', p.url); + return li; + }); + } + }, + { alias: 'cp' + , name: 'crunchbase-people' + , search: 'https://www.crunchbase.com/app/search/?q=' + , compl: `https://api.crunchbase.com/v/3/odm_people?user_key=${keys.crunchbase}&query=%s` + , callback: function(response) { + var res = JSON.parse(response.text)["data"]["items"]; + var people = []; + res.map(function(rr){ + var r = rr.properties; + var p = { + name: r["first_name"] + " " + r["last_name"], + desc: "", + img: blank, + loc: "", + url: "https://www.crunchbase.com/" + r["web_path"] + }; + + p.desc += (r["title"] !== null) ? r["title"] : ""; + p.desc += (r["organization_name"] !== null && p.desc !== "") ? ", " : ""; + p.desc += (r["organization_name"] !== null) ? r["organization_name"] : ""; + p.desc += (p.desc === "") ? "Human" : ""; + + p.loc += (r["city_name"] !== null) ? r["city_name"] : ""; + p.loc += (r["region_name"] !== null && p.loc !== "") ? ", " : ""; + p.loc += (r["region_name"] !== null) ? r["region_name"] : ""; + p.loc += (r["country_code"] !== null && p.loc !== "") ? ", " : ""; + p.loc += (r["country_code"] !== null) ? r["country_code"] : ""; + p.loc += (p.loc === "") ? "Earth" : ""; + + if (r["profile_image_url"] !== null) { + var url = r["profile_image_url"] + , path = url.split('/') + , img = path[path.length-1]; + p.img = "http://public.crunchbase.com/t_api_images/v1402944794/c_pad,h_50,w_50/" + img; + } + + people.push(p) + }); + + Omnibar.listResults(people, function(p) { + var li = $('
  • ').html(` +
    +
    + ${p.name} +
    +
    +
    ${p.name}
    +
    ${p.desc}
    +
    ${p.loc}
    +
    +
    + `) + li.data('url', p.url); + return li; + }); + } + }, + { alias: 'cs' + , name: 'chromestore' + , search: 'https://chrome.google.com/webstore/search/' + , compl: '' + , callback: function() {} + }, + { alias: 'de' + , name: 'define' + , search: 'http://onelook.com/?w=' + , compl: 'https://api.datamuse.com/words?md=d&sp=%s*' + , callback: function(response) { + var res = JSON.parse(response.text); + var defs = []; + res.map(function(r){ + if (!r.defs || r.defs.length === 0) { + defs.push([r.word, "", ""]); + return + } + r.defs.map(function(d) { + d = d.split("\t") + + var sp = "(" + d[0] + ")", + def = d[1]; + + defs.push([r.word, sp, def]); + }); + }); + Omnibar.listResults(defs, function(d) { + var li = $('
  • ').html(`
    ${d[0]} ${d[1]} ${d[2]}
    `) + li.data('url', "http://onelook.com/?w=" + d[0]); + return li; + }); + } + }, + { alias: 'dg' + , name: 'duckduckgo' + , search: 'https://duckduckgo.com/?q=' + , compl: 'https://duckduckgo.com/ac/?q=' + , callback: function(response) { + var res = JSON.parse(response.text).map(function(r){ + return r.phrase; + }); + Omnibar.listWords(res); + } + }, + { alias: 'dh' + , name: 'dockerhub' + , search: 'https://hub.docker.com/search/?page=1&q=' + , compl: 'https://hub.docker.com/v2/search/repositories/?page_size=20&query=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res["results"], function(s) { + var meta = "" + , repo = s["repo_name"]; + meta += "[★" + s["star_count"] + "] "; + meta += "[↓" + s["pull_count"] + "] "; + if (repo.indexOf("/") === -1) { + repo = "_/" + repo + } + var li = $('
  • ').html(` +
    +
    ${s["repo_name"]}
    +
    ${meta}
    +
    ${s["short_description"]}
    +
    + `) + li.data('url', "https://hub.docker.com/r/" + repo); + return li; + }); + } + }, + { alias: 'do' + , name: 'domainr' + , search: 'https://domainr.com/?q=' + , compl: `https://api.domainr.com/v2/search?client_id=${keys.domainr}&query=%s` + , callback: function(response) { + var res = JSON.parse(response.text)["results"]; + var domains = []; + res.map(function(r){ + var d = { + id: r["domain"].replace('.', '-'), + domain: r["domain"] + }; + domains.push(d); + }); + + var domainQuery = domains.map(function(d) { return d.domain }).join(',') + + runtime.command({ + action: 'request', + method: 'get', + url: `https://api.domainr.com/v2/status?client_id=${keys.domainr}&domain=${domainQuery}` + }, function(sresponse) { + var sres = JSON.parse(sresponse.text)["status"]; + sres.map(function(s) { + var id = "#sk-domain-" + s["domain"].replace('.', '-') + , available = s["summary"] === "inactive" + , color = available ? "#23b000" : "#ff4d00" + , symbol = available ? "✔ " : "✘ "; + $(id).text(symbol + $(id).text()).css("color", color) + }) + }); + + Omnibar.listResults(domains, function(d) { + var li = $('
  • ').html(` +
    +
    ${d.domain}
    +
    + `) + li.data('url', `https://domainr.com/${d.domain}`); + return li; + }); + } + }, + { alias: 'ex' // Similar to `hd` but searches inside docs using Google Custom Search + , name: 'exdocs' + , search: 'https://hex.pm/packages?sort=downloads&search=' + , compl: `https://www.googleapis.com/customsearch/v1?key=${keys.google_ex}&cx=${keys.google_ex_cx}&q=` + , callback: function(response) { + var res = JSON.parse(response.text)["items"]; + Omnibar.listResults(res, function(s) { + var snippet = s["htmlSnippet"]; + var hash = ""; + + // Hacky way to extract the desired function's + // signature to use as an anchor because + // Google Custom Search doesn't link to the appropriate + // section of the documentation page + // A regex would probably work better. + (function() { + var openTag = "" + , closeTag = "" + , openArgs = "(" + , closeArgs = ")"; + + var f1 = snippet.indexOf(openTag); + if (f1 === -1) { + return; + } + var f2 = snippet.indexOf(closeTag); + if (f2 === -1) { + return; + } + + f1 += openTag.length; + f3 = f2 + closeTag.length; + fname = snippet.slice(f1, f2); + snippetEnd = snippet.slice(f3); + + var a1 = snippetEnd.indexOf(openArgs); + if (a1 !== 0) { + return; + } + var a2 = snippetEnd.indexOf(closeArgs); + if (a2 === -1) { + return; + } + + a2 += closeArgs.length; + var fargs = snippetEnd.slice(a1, a2) + var fary = fargs.replace(new RegExp(openArgs + closeArgs), '').split(',').length; + hash = fname + '/' + fary; + })(); + + var moduleName = s["title"].split(' –')[0]; + + var subtitle = "" + if (hash) { + var subtitle = ` +
    + ${moduleName}.${hash} +
    ` + } + var li = $('
  • ').html(` +
    +
    ${s["htmlTitle"]}
    + ${subtitle} +
    ${s["htmlSnippet"]}
    +
    + `) + li.data('url', s["link"] + "#" + hash); + return li; + }) + } + }, + { alias: 'gd' + , name: 'godoc' + , search: 'https://godoc.org/?q=' + , compl: 'https://api.godoc.org/search?q=' + , callback: function(response) { + var res = JSON.parse(response.text)["results"]; + Omnibar.listResults(res, function(s) { + var prefix = "" + if (s["import_count"]) { + prefix += "[↓" + s["import_count"] + "] " + } + if (s["stars"]) { + prefix += "[★" + s["stars"] + "] " + } + return Omnibar.createURLItem({ + title: prefix + s["path"], + url: "https://godoc.org/" + s["path"] + }); + }); + } + }, + { alias: 'gh' + , name: 'github' + , search: 'https://github.com/search?q=' + , compl: 'https://api.github.com/search/repositories?sort=stars&order=desc&q=' + , callback: function(response) { + var res = JSON.parse(response.text)["items"]; + Omnibar.listResults(res, function(s) { + var prefix = ""; + if (s["stargazers_count"]) { + prefix += "[★" + s["stargazers_count"] + "] " + } + return Omnibar.createURLItem({ + title: prefix + s["full_name"], + url: s["html_url"] + }); + }); + } + }, + { alias: 'go' + , name: 'google' + , search: 'https://www.google.com/search?q=' + , compl: 'https://www.google.com/complete/search?client=chrome-omni&gs_ri=chrome-ext&oit=1&cp=1&pgcl=7&q=' + , callback: function(response) { + Omnibar.listWords(JSON.parse(response.text)[1]); + } + }, + { alias: 'gs' + , name: 'go-search' + , search: 'http://go-search.org/search?q=' + , compl: 'http://go-search.org/api?action=search&q=' + , callback: function(response) { + var res = JSON.parse(response.text)["hits"] + .map(function(r){ + return r.package; + }); + Omnibar.listWords(res); + } + }, + { alias: 'ha' + , name: 'hackage' + , search: 'https://hackage.haskell.org/packages/search?terms=' + , compl: 'https://hackage.haskell.org/packages/search.json?terms=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res, function(s) { + return Omnibar.createURLItem({ + title: s.name, + url: 'https://hackage.haskell.org/package/' + s.name + }); + }); + } + }, + { alias: 'hd' // Same as hex but links to documentation pages + , name: 'hexdocs' + , search: 'https://hex.pm/packages?sort=downloads&search=' + , compl: 'https://hex.pm/api/packages?sort=downloads&search=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res, function(s) { + var dls = "" + , desc = "" + , liscs = ""; + if (s["downloads"] && s["downloads"]["all"]) { + dls = "[↓" + s["downloads"]["all"] + "] "; + } + if(s["meta"]) { + if (s["meta"]["description"]) { + desc = s["meta"]["description"]; + } + if (s["meta"]["licenses"]) { + s["meta"]["licenses"].forEach(function(l) { + liscs += "[©" + l + "] "; + }) + } + } + var li = $('
  • ').html(` +
    +
    ${s["repository"]}/${s["name"]}
    +
    ${dls}${liscs}
    +
    ${desc}
    +
    + `) + li.data('url', "https://hexdocs.pm/" + s["name"]); + return li; + }); + } + }, + { alias: 'hn' + , name: 'hackernews' + , search: 'https://hn.algolia.com/?query=' + , compl: 'https://hn.algolia.com/api/v1/search?tags=(story,comment)&query=' + , callback: function(response) { + var res = JSON.parse(response.text)["hits"]; + Omnibar.listResults(res, function(s) { + var title = ""; + var prefix = ""; + if (s["points"]) { + prefix += "[↑" + s["points"] + "] "; + } + if (s["num_comments"]) { + prefix += "[↲" + s["num_comments"] + "] "; + } + switch(s._tags[0]) { + case "story": + title = s["title"]; + break; + case "comment": + title = s["comment_text"]; + break; + default: + title = s["objectID"]; + } + return Omnibar.createURLItem({ + title: prefix + title, + url: "https://news.ycombinator.com/item?id=" + s["objectID"] + }); + }); + } + }, + { alias: 'ho' + , name: 'hoogle' + , search: 'https://www.haskell.org/hoogle/?hoogle=' + + encodeURIComponent("+platform +xmonad +xmonad-contrib ") // This tells Hoogle to include these modules in the search - encodeURIComponent is only used for better readability + , compl: 'https://www.haskell.org/hoogle/?mode=json&hoogle=' + + encodeURIComponent("+platform +xmonad +xmonad-contrib ") + , callback: function(response) { + var res = JSON.parse(response.text)["results"]; + Omnibar.listResults(res, function(s) { + return Omnibar.createURLItem({ + title: s.self, + url: s.location + }); + }); + } + }, + { alias: 'hw' + , name: 'haskellwiki' + , search: 'https://wiki.haskell.org/index.php?go=go&search=' + , compl: 'https://wiki.haskell.org/api.php?action=opensearch&format=json&formatversion=2&namespace=0&limit=10&suggest=true&search=' + , callback: function(response) { + Omnibar.listWords(JSON.parse(response.text)[1]); + } + }, + { alias: 'hx' + , name: 'hex' + , search: 'https://hex.pm/packages?sort=downloads&search=' + , compl: 'https://hex.pm/api/packages?sort=downloads&search=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res, function(s) { + var dls = "" + , desc = "" + , liscs = ""; + if (s["downloads"] && s["downloads"]["all"]) { + dls = "[↓" + s["downloads"]["all"] + "] "; + } + if(s["meta"]) { + if (s["meta"]["description"]) { + desc = s["meta"]["description"]; + } + if (s["meta"]["licenses"]) { + s["meta"]["licenses"].forEach(function(l) { + liscs += "[©" + l + "] "; + }) + } + } + var li = $('
  • ').html(` +
    +
    ${s["repository"]}/${s["name"]}
    +
    ${dls}${liscs}
    +
    ${desc}
    +
    + `) + li.data('url', s["html_url"]); + return li; + }); + } + }, + { alias: 'hy' + , name: 'hayoo' + , search: 'http://hayoo.fh-wedel.de/?query=' + , compl: 'http://hayoo.fh-wedel.de/json?query=' + , callback: function(response) { + var res = JSON.parse(response.text)["result"]; + Omnibar.listResults(res, function(s) { + return Omnibar.createURLItem({ + title: "[" + s.resultType + "] " + s.resultName, + url: s.resultUri + }); + }); + } + }, + { alias: 'md' + , name: 'mdn' + , search: 'https://developer.mozilla.org/en-US/search?q=' + , compl: 'https://developer.mozilla.org/en-US/search.json?q=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res["documents"], function(s) { + var excerpt = s["excerpt"] + if(excerpt.length > 240) { + excerpt = excerpt.slice(0, 240) + '…'; + } + res["query"].split(" ").forEach(function(q) { + excerpt = excerpt.replace(new RegExp(q, 'gi'), "$&"); + }); + var li = $('
  • ').html(` +
    +
    ${s["title"]}
    +
    ${s["slug"]}
    +
    ${excerpt}
    +
    + `); + li.data('url', s["url"]); + return li; + }); + } + }, + { alias: 'np' + , name: 'npm' + , search: 'https://www.npmjs.com/search?q=' + , compl: 'https://api.npms.io/v2/search/suggestions?size=20&q=' + , callback: function(response) { + var res = JSON.parse(response.text); + Omnibar.listResults(res, function(s) { + var flags = "" + , desc = "" + , stars = ""; + if (s["package"]["description"]) { + desc = s["package"]["description"]; + } + if(s["score"]) { + if (s["score"]["final"]) { + score = Math.round(s["score"]["final"] * 5); + stars = "★".repeat(score) + "☆".repeat(5-score); + } + } + if (s["flags"]) { + Object.keys(s["flags"]).forEach(function(f) { + flags += "[ " + f + "] "; + }) + } + var li = $('
  • ').html(` +
    + +
    ${s["highlight"]}
    +
    + ${stars} + ${flags} +
    +
    ${desc}
    +
    + `) + li.data('url', s["package"]["links"]["npm"]); + return li; + }); + } + }, + { alias: 're' + , name: 'reddit' + , search: 'https://www.reddit.com/search?sort=relevance&t=all&q=' + , compl: 'https://api.reddit.com/search?syntax=plain&sort=relevance&limit=20&q=' + , callback: function(response) { + var res = JSON.parse(response.text)["data"]["children"]; + Omnibar.listResults(res, function(s) { + var d = s["data"]; + return Omnibar.createURLItem({ + title: "[" + d["score"] + "] " + d["title"], + url: "https://reddit.com" + d["permalink"] + }); + }); + } + }, + { alias: 'so' + , name: 'stackoverflow' + , search: 'https://stackoverflow.com/search?q=' + , compl: 'https://api.stackexchange.com/2.2/search/advanced?pagesize=10&order=desc&sort=relevance&site=stackoverflow&q=' + , callback: function(response) { + var res = JSON.parse(response.text)["items"]; + Omnibar.listResults(res, function(s) { + return Omnibar.createURLItem({ + title: "[" + s["score"] + "] " + s["title"], + url: s["link"] + }); + }); + } + }, + { alias: 'wp' + , name: 'wikipedia' + , search: 'https://en.wikipedia.org/w/index.php?search=' + , compl: 'https://en.wikipedia.org/w/api.php?action=query&format=json&list=prefixsearch&utf8&pssearch=' + , callback: function(response) { + var res = JSON.parse(response.text)["query"]["prefixsearch"] + .map(function(r){ + return r.title; + }); + Omnibar.listWords(res); + } + }, + { alias: 'yp' + , name: 'yelp' + , search: 'https://www.yelp.com/search?find_desc=' + , compl: 'https://www.yelp.com/search_suggest/v2/prefetch?prefix=' + , callback: function(response) { + var res = JSON.parse(response.text)["response"]; + var words = []; + res.map(function(r){ + r["suggestions"].map(function(s) { + var w = s["query"]; + if (words.indexOf(w) === -1) { + words.push(w); + } + }); + }); + Omnibar.listWords(words); + } + }, + { alias: 'yt' + , name: 'youtube' + , search: 'https://www.youtube.com/search?q=' + , compl: `https://www.googleapis.com/youtube/v3/search?maxResults=20&part=snippet&type=video,channel&key=${keys.google_yt}&safeSearch=none&q=` + , callback: function(response) { + var res = JSON.parse(response.text)["items"]; + Omnibar.listResults(res, function(s) { + switch(s["id"]["kind"]) { + case "youtube#channel": + return Omnibar.createURLItem({ + title: s["snippet"]["channelTitle"] + ": " + s["snippet"]["description"], + url: "https://youtube.com/channel/" + s["id"]["channelId"] + }); + break; + case "youtube#video": + return Omnibar.createURLItem({ + title: " ▶ " + s["snippet"]["title"], + url: "https://youtu.be/" + s["id"]["videoId"] + }); + break; + } + }); + } + }, +]; + +for(var i = 0; i < search.length; i++) { + var s = search[i], // Search object + la = sl + s.alias; // Search leader + alias + + addSearchAliasX(s.alias, s.name, s.search, sl, s.compl, s.callback); + mapkey(la, '#8Search ' + s.name, 'Front.openOmnibar({type: "SearchEngine", extra: "' + s.alias + '"})'); +} + +// Functions +function fakeSpot() { + var url = "http://fakespot.com/analyze?url=" + window.location.href; + window.open(url, '_blank').focus(); +} + +function ytFullscreen() { + $('.ytp-fullscreen-button.ytp-button').click(); +} + +function vimeoFullscreen() { + $('.fullscreen-icon').click(); +} + +function ghToggleStar() { + var repo = window.location.pathname.slice(1).split("/").slice(0,2).join("/"); + var cur = $('div.starring-container > form').filter(function() { + return $(this).css("display") === "block"; + }); + + var action = "starred"; + var star = "★"; + if (cur.attr("class") === "starred") { + action = "un" + action + star = "☆" + } + + cur.find("button").click(); + Front.showBanner(star + " Repository " + repo + " " + action); +} + +function glToggleStar() { + var repo = window.location.pathname.slice(1).split("/").slice(0,2).join("/"); + var action = $('.btn.star-btn > span').click().text().toLowerCase() + "red"; + var star = "☆"; + if (action === "starred") { + star = "★"; + } + Front.showBanner(star + " Repository " + repo + " " + action); +} + +function vimEditURL() { + Front.showEditor(window.location.href, function(data) { + window.location.href = data; + }, 'url'); +} + +function whois() { + var url = "http://centralops.net/co/DomainDossier.aspx?dom_whois=true&addr=" + window.location.hostname; + window.open(url, '_blank').focus(); +} + +function dns() { + var url = "http://centralops.net/co/DomainDossier.aspx?dom_dns=true&addr=" + window.location.hostname; + window.open(url, '_blank').focus(); +} + +function dnsVerbose() { + var url = "http://centralops.net/co/DomainDossier.aspx?dom_whois=true&dom_dns=true&traceroute=true&net_whois=true&svc_scan=true&addr=" + window.location.hostname; + window.open(url, '_blank').focus(); +} + +// vim: set ft=javascript expandtab: diff --git a/conf.priv.example.js b/conf.priv.example.js new file mode 100644 index 0000000..b938154 --- /dev/null +++ b/conf.priv.example.js @@ -0,0 +1,29 @@ +// This is a reference for how conf.priv.js should look. +// +// Copy this file to a new file named "conf.priv.js" and update +// the API keys as needed. +// +// You can also place any additional variables here and they will +// be included before the rest of your configuration script. +// Running `gulp build` will generate the final configuration by concatenating +// this file with your main configuration file. +// +// WARNING: Don't `git commit` your actual "conf.priv.js" file if you +// add real API keys to it! Malicious parties frequently scan GitHub for +// these keys and use them for bad stuff. The "conf.priv.js" file is already +// ignored by .gitignore, but just be safe. + +// These are private API keys which are required for certain search completions. +// You can obtain them all for free at the supplied links. +// +// Note: +// The Domainr API is configured for High-Volume usage, not Mashape. +// You will need to modify the code in conf.js to work with the Mashape API if desired. +// Open an issue if you can't figure this out and I'll help out. +var keys = + { crunchbase: "foo" // https://about.crunchbase.com/crunchbase-basic-access/ + , domainr: "bar" // https://domainr.build/docs/overview#section-try-it-for-free + , google_ex: "qux" // https://developers.google.com/custom-search/json-api/v1/overview?hl=en_US + , google_ex_cx: "ham" // This is the Search Engine ID (cx) from your Google Custom Search + , google_yt: "spam" // https://developers.google.com/youtube/v3/docs/ + }; diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..eb05d6f --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,30 @@ +var gulp = require('gulp'); +var concat = require('gulp-concat'); +var del = require('del'); +var os = require('os'); + + +var paths = { + scripts: ['conf.priv.js', 'conf.js'] +}; + +gulp.task('clean', function() { + return del(['build']); +}); + +gulp.task('build', ['clean'], function() { + return gulp.src(paths.scripts) + .pipe(concat('.surfingkeys')) + .pipe(gulp.dest('build')); +}); + +gulp.task('install', ['build'], function() { + return gulp.src('build/.surfingkeys') + .pipe(gulp.dest(os.homedir())); +}) + +gulp.task('watch', function() { + gulp.watch(paths.scripts, ['build']); +}); + +gulp.task('default', ['build']); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cd0b977 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1601 @@ +{ + "name": "surfingkeys-conf", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + }, + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "cloneable-readable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "through2": "2.0.3" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-with-sourcemaps": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", + "integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=", + "requires": { + "source-map": "0.5.7" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "1.0.2" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.1.1", + "pify": "3.0.0", + "rimraf": "2.6.1" + } + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=" + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "requires": { + "readable-stream": "1.1.14" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "requires": { + "once": "1.3.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=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "1.0.1" + } + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "requires": { + "globule": "0.1.0" + } + }, + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "requires": { + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "requires": { + "gaze": "0.5.2" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "requires": { + "find-index": "0.1.1" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.3.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "requires": { + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "requires": { + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=" + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=" + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "requires": { + "sparkles": "1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "requires": { + "natives": "1.1.0" + } + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "requires": { + "archy": "1.0.0", + "chalk": "1.1.3", + "deprecated": "0.0.1", + "gulp-util": "3.0.8", + "interpret": "1.0.3", + "liftoff": "2.3.0", + "minimist": "1.2.0", + "orchestrator": "0.3.8", + "pretty-hrtime": "1.0.3", + "semver": "4.3.6", + "tildify": "1.2.0", + "v8flags": "2.1.1", + "vinyl-fs": "0.3.14" + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "requires": { + "concat-with-sourcemaps": "1.0.4", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.0.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "1.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "requires": { + "sparkles": "1.0.0" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.3.3", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "requires": { + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.4.0" + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=" + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "requires": { + "duplexer2": "0.0.2" + } + }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=" + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "requires": { + "array-each": "1.0.1", + "array-slice": "1.0.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1.0.2" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "requires": { + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "p-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", + "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=" + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "requires": { + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "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=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "1.4.0" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + } + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "requires": { + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=" + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "requires": { + "user-home": "1.1.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "requires": { + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..17ec283 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "surfingkeys-conf", + "version": "1.0.0", + "description": "A custom SurfingKeys configuration which adds some nice features.", + "main": "conf.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "github.com/b0o/surfingkeys-conf" + }, + "keywords": [ + "surfingkeys", + "chrome-extension", + "configuration" + ], + "author": "Maddison Hellstrom", + "license": "MIT", + "dependencies": { + "del": "^3.0.0", + "gulp": "^3.9.1", + "gulp-concat": "^2.6.1" + } +}