diff --git a/docs/cheatsheet/web/index.html b/docs/cheatsheet/web/index.html index d2634912..e7cf3da1 100644 --- a/docs/cheatsheet/web/index.html +++ b/docs/cheatsheet/web/index.html @@ -40,7 +40,7 @@

Setup

Install

-
npm install syncano-client --save
+
npm install @syncano/client --save

or

<script src="https://unpkg.com/syncano-client"></script>
@@ -107,7 +107,7 @@

Listen for changes on public channel

endpoints:
   messages:
     channel: messages
-
import {channel} from 'syncano-server'
+      
import {channel} from '@syncano/core'
 channel.publish(`messages`, message)
s.subscribe('chat/messages', res => {})

Listen for changes on channel room

@@ -143,10 +143,10 @@

Unsubscribe from channel changes

-->

Setup

Install

-
npm install syncano-server --save
+
npm install @syncano/core --save

Usage

-
import Syncano from β€˜syncano-server’
+      
import Syncano from β€˜@syncano/core’
 
 export default (ctx) => {
   const {data} = new Syncano(ctx)
@@ -458,121 +458,121 @@ 

Helper methods

Basics

Install

-
npm install --global yarn
-npm install -g syncano-cli
+

+npm install @syncano/cli

s is alias for syncano-cli

Output usage information

-
s --help
+
npx s --help

Output the version number

-
s --version
+
npx s --version

Initiate project

-
s init
+      
npx s init
 
 # init with given instance nam
 s init -i 

Login to/register Syncano account

-
s login
+
npx s login

Logout (delete account keys from this computer)

-
s logout
+
npx s logout

Attach project to the chosen Instance

-
s attach --instance my_instance_name
+
npx s attach --instance my_instance_name

Deploy

Deploy whole project

-
s deploy
+
npx s deploy

Deploy whole project (with instance creation)

s deploy --create-instance <new instance name>

Deploy whole project

-
s deploy <socket name>
+
npx s deploy <socket name>

πŸ”₯ Hot deploy (deploy every change in the source code right away)

-
s hot 
+
npx s hot 

πŸ”₯ Hot deploy chooses Socket

-
s hot <socket name>
+
npx s hot <socket name>

Call Socket endpoint:

-
s call <socket name>/<endpoint>
+
npx s call <socket name>/<endpoint>

Traces

Trace all Socket calls

-
s trace
+
npx s trace

Trace chosen Socket calls

-
s trace <socket name>
+
npx s trace <socket name>

Sockets

List Sockets

-
s list
+
npx s list

Socket details

-
s list <socket name>
+
npx s list <socket name>

Adding socket from the Sockets Registry (last version)

-
s add <socket name>
+
npx s add <socket name>

Remove Socket

-
s remove <socket name>
+
npx s remove <socket name>

Create new Socket

-
s create <socket name>
+
npx s create <socket name>

Full configuration of given Socket

config:
   API_KEY:
     description: Slack API key
-
s config <socket name>
+
npx s config <socket name>

Show configuration of given socket

-
s config-show <socket name>
+
npx s config-show <socket name>

Change single configuration option

-
s config-set <socket name> <option name> <value>
+
npx s config-set <socket name> <option name> <value>

Registry

Search for Sockets

-
s search <keyword>
+
npx s search <keyword>

Submit your Socket to the registry

-
s submit  <socket name>
+      
npx s submit  <socket name>
 
 # bump version of the Socket (e.g. major, minor, patch)
 s submit  <socket name> -b patch

Make you private Socket public

-
s publish <socket name>
+
npx s publish <socket name>

Hosting

Add new hosting

-
s hosting add <local path>
+
npx s hosting add <local path>

Delete hosting

-
s hosting delete <hosting name>
+
npx s hosting delete <hosting name>

List all hostinngs

-
s hosting list
+
npx s hosting list

List files of given hosting

-
s hosting files <hosting name>
+
npx s hosting files <hosting name>

Synchronize files of given hosting

-
s hosting sync <hosting name>
+
npx s hosting sync <hosting name>

Configure hosting options

-
s hosting config <hosting name> --cname <domain name>
+      
npx s hosting config <hosting name> --cname <domain name>
 s hosting config <hosting name> --remove-cname <domain name>

Basics

Create socket

-
syncano-cli create <socket-name>
+    
npx syncano-cli create <socket-name>
 # This will create socket configuration at:
 # ./syncano/socket-name/socket.yml

Basic definition

diff --git a/docs/cookbook/package-lock.json b/docs/cookbook/package-lock.json new file mode 100644 index 00000000..531cd9f6 --- /dev/null +++ b/docs/cookbook/package-lock.json @@ -0,0 +1,2938 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "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==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "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": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "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=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "clipboard": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "dev": true, + "optional": true, + "requires": { + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "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 + }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "connect": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", + "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-livereload": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.0.tgz", + "integrity": "sha1-+fAJh0rWg3GDr7FwtMTjhXodfOs=", + "dev": true + }, + "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=", + "dev": true + }, + "cp-file": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-4.2.0.tgz", + "integrity": "sha1-cVNhZjtx7eC23dvDyA4roC5yXsM=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "nested-error-stacks": "2.0.0", + "pify": "2.3.0", + "safe-buffer": "5.1.1" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "dev": true, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "docsify": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/docsify/-/docsify-4.5.9.tgz", + "integrity": "sha512-vmDua8eVPQcUsvLtFpM6R31jai2+iOUrPY2nTd4CYPwrLm1cELg8bROoJK684uQAKJdzPAvZMepfIj/ghSp7Og==", + "dev": true, + "requires": { + "marked": "0.3.12", + "medium-zoom": "0.2.0", + "prismjs": "1.11.0", + "tinydate": "1.0.0", + "tweezer.js": "1.4.0" + } + }, + "docsify-cli": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/docsify-cli/-/docsify-cli-4.2.0.tgz", + "integrity": "sha512-c8V8nO3M3SYm/uXgsXsOQu6PzFGgMT5VyN4oNouBx24zoesou2rJ5Qb0UDIRmzyw1eA7L7ZFfvOx1TGP+Wuj2w==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "connect": "3.6.5", + "connect-livereload": "0.6.0", + "cp-file": "4.2.0", + "docsify": "4.5.9", + "docsify-server-renderer": "4.5.9", + "fs-extra": "2.1.2", + "livereload": "0.6.3", + "lru-cache": "4.1.1", + "open": "0.0.5", + "serve-static": "1.13.2", + "update-notifier": "2.3.0", + "y18n": "3.2.1", + "yargonaut": "1.1.2", + "yargs": "7.1.0" + } + }, + "docsify-server-renderer": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/docsify-server-renderer/-/docsify-server-renderer-4.5.9.tgz", + "integrity": "sha512-dIrK1j09HRLF79IKaE1cupT45ee89L+AdgcE0pDWfsxGcX7zwWKbygDq83PBPye+tIpLrxWnX13V6BiRoBsgEA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "node-fetch": "1.7.3", + "resolve-pathname": "2.2.0" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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 + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "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=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "figlet": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.0.tgz", + "integrity": "sha1-bEZTc3j6tkkUa1phQ92gGbQwtBA=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0" + } + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dev": true, + "optional": true, + "requires": { + "delegate": "3.2.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "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=", + "dev": true, + "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=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "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 + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "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=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "livereload": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.6.3.tgz", + "integrity": "sha512-5SVeqHbKQWB69himud5GNRS8w1RgnMrYBnuIeZMiQ5ZctsIvhFfhKJclihxUS3NkOV7354rnA9rRz1IQBsgaNQ==", + "dev": true, + "requires": { + "chokidar": "1.7.0", + "opts": "1.2.6", + "ws": "1.1.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "marked": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz", + "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==", + "dev": true + }, + "medium-zoom": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-0.2.0.tgz", + "integrity": "sha512-2595M4GDwjoyZVDtkw6JWY8JxkhZVumqPjvM8coyRcULPZpoij2bQJ1/syqtx4XiflaqTva0cAch1kzqk0ir9Q==", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "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.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "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.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "nested-error-stacks": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.0.tgz", + "integrity": "sha1-mLL/rvtGEPo5NvHnFDXTBwDeKEA=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "opts": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.6.tgz", + "integrity": "sha1-0YXAQlz9652h0YKQi2W1wCOP67M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "parent-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", + "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "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-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=", + "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 + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prismjs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.11.0.tgz", + "integrity": "sha1-KXrvM+t5Qhv9sZJzpQkspRWXDSk=", + "dev": true, + "requires": { + "clipboard": "1.7.1" + } + }, + "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=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "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=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "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==", + "dev": true, + "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" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.5", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.5" + } + }, + "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=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "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 + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "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.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "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" + }, + "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 + }, + "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" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==", + "dev": true, + "optional": true + }, + "tinydate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.0.0.tgz", + "integrity": "sha1-IPMXVqE5We+MV+wTO6KbWt4ELKw=", + "dev": true + }, + "tweezer.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.4.0.tgz", + "integrity": "sha1-IG/1aK00zw5WoEMH2Z/8Uhk9UEU=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargonaut": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.2.tgz", + "integrity": "sha1-7nuJ6YEho/JB+pJqKm4bZkHIGz8=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "figlet": "1.2.0", + "parent-require": "1.0.0" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/docs/cookbook/web/_sidebar.md b/docs/cookbook/web/_sidebar.md index ca075f4f..2d06e492 100644 --- a/docs/cookbook/web/_sidebar.md +++ b/docs/cookbook/web/_sidebar.md @@ -21,6 +21,5 @@ - [Creating project template](/deployment/create-project-template) - [Using multiple Syncano accounts](/deployment/multiple-accounts) - [Support](/common/support) -- [Contributing](/common/contributing) - [License](/common/license) - [Changelog](/common/changelog) diff --git a/docs/cookbook/web/basics/custom-http-status-code.md b/docs/cookbook/web/basics/custom-http-status-code.md index 998a22bd..677cdef2 100644 --- a/docs/cookbook/web/basics/custom-http-status-code.md +++ b/docs/cookbook/web/basics/custom-http-status-code.md @@ -15,7 +15,7 @@ Create empty `hello-world` Socket and `hello` endpoint with custom response. #### Create Socket ```sh -syncano-cli create hello-world --template example +npx syncano-cli create hello-world --template example ``` #### Edit endpoint file @@ -24,7 +24,7 @@ syncano-cli create hello-world --template example Edit file `syncano/hello-world/src/hello.js` and change its content to: ```js -import Syncano from 'syncano-server' +import Syncano from '@syncano/core' export default (ctx) => { const {response} = Syncano(ctx) @@ -34,7 +34,7 @@ export default (ctx) => { ### How it works? -Now you can find URL for `hello` endpoint by typing `syncano-cli list hello-world`: +Now you can find URL for `hello` endpoint by typing `npx syncano-cli list hello-world`: ``` socket: hello-world diff --git a/docs/cookbook/web/basics/custom-mime-type.md b/docs/cookbook/web/basics/custom-mime-type.md index a32f51a1..eca3c9b3 100644 --- a/docs/cookbook/web/basics/custom-mime-type.md +++ b/docs/cookbook/web/basics/custom-mime-type.md @@ -15,7 +15,7 @@ Create empty `hello-world` Socket and `hello` endpoint with custom response. #### Create Socket ```sh -syncano-cli create hello-world --template example +npx syncano-cli create hello-world --template example ``` #### Edit endpoint file @@ -24,7 +24,7 @@ syncano-cli create hello-world --template example Edit file `syncano/hello-world/src/hello.js` and change its content to: ```js -import Syncano from 'syncano-server' +import Syncano from '@syncano/core' export default (ctx) => { const {response} = Syncano(ctx) @@ -37,7 +37,7 @@ export default (ctx) => { ### How it works? -Now you can find URL for `hello` endpoint by typing `syncano-cli list hello-world`: +Now you can find URL for `hello` endpoint by typing `npx syncano-cli list hello-world`: ``` socket: hello-world diff --git a/docs/cookbook/web/basics/hello-world.md b/docs/cookbook/web/basics/hello-world.md index 456b054b..37b7dbd9 100644 --- a/docs/cookbook/web/basics/hello-world.md +++ b/docs/cookbook/web/basics/hello-world.md @@ -15,13 +15,13 @@ Create `hello-world` Socket and `hello` endpoint with simple response. #### Create Hello World Socket ```sh -syncano-cli create hello-world --template empty +npx syncano-cli create hello-world --template empty ``` #### Create endpoint file ```sh -syncano-cli deploy hello-world +npx syncano-cli deploy hello-world ``` ``` socket synced: 17:10:06 hello-world 3943 ms @@ -29,7 +29,7 @@ socket synced: 17:10:06 hello-world 3943 ms ### How it works? -Now you can find URL for `hello` endpoint by typing `syncano-cli list hello-world`: +Now you can find URL for `hello` endpoint by typing `npx syncano-cli list hello-world`: ``` socket: hello-world diff --git a/docs/cookbook/web/common/contributing.md b/docs/cookbook/web/common/contributing.md deleted file mode 100644 index 334df479..00000000 --- a/docs/cookbook/web/common/contributing.md +++ /dev/null @@ -1,173 +0,0 @@ -# How to Contribute - -Syncano CLI welcomes contributions in form of pull requests, as main purpose of open sourcing is to make it better and easier to use. -We also want to give our community a way to be a part of this project and create features they actually want. - - -## Reporting Bugs - -### Known Issues - -Please check our [GitHub Issues](https://github.com/Syncano/syncano-node-cli/issues) as this is the main place for reported bugs. -If the same type of bug affects you, just add your information to already existing one. - -### New Issues - -Before creating new issues, check [Known Issues](https://github.com/Syncano/syncano-node-cli/issues). -If it's a new bug add it to our issues, with additional data, like your node/npm/yarn version, OS or snippet of code. - - -## Contact - - * Slack: https://syncano.io/#/slack-invite - * Email: [support@syncano.com](mailto:support@syncano.com) - - -## Testing - -#### End-to-end -To be able to run end-to-end tests set those environment variables: - -```sh -# set test mode -export NODE_ENV="test" - -# if you want to see verbose output from the tests (optional) -export SYNCANO_E2E_DEBUG - -# to have separate account file for the testing purposes (recommended) -export SYNCANO_ACCOUNT_FILE=syncano-test - -# to have separate account file for the testing purposes -export E2E_CLI_EMAIL="" -export E2E_CLI_PASSWORD="" -export E2E_CLI_ACCOUNT_KEY="" -export E2E_CLI_TEMP_EMAIL="syncano.bot@syncano.com" -``` - -To run a test use: - -```sh -# Run basic set of the e2e tests -npm run e2e - -# Run single tutorial -npm run e2e:tutorial -- src/tests/e2e/tutorials/quickstart.test-e2e.js -``` - -## Pull requests - -#### Prerequisites - - * You have `node` v7.0.0+ installed and `yarn` at v0.17.10+ (as we use it for development) - * You are familiar with `npm`/`yarn` - * You are familiar with `git`, `github` and proper branching flow - * You know how to set `ENV` variables on your OS - * You know `JavaScript` - -#### Before you submit a pull request - - * Fork our repository and create a branch from `devel` - * If you have added or changed existing code, add `unit tests`! - * If you have changed the way `CLI` works, update `README.md` - * If you have changed/bumped package update and commit `yarn.lock` - * Ensure that all `unit tests` passes (`yarn test`) - * Check that your code lints (`yarn lint`/`yarn lint-tests`) - * Check that your code passes all tests on `CI` - -#### Branching flow - -We branch our work from `devel`. -After merging your changes, they (changes) will wait for our `devel` tests to pass and then automatically merged into `beta` branch. -It will be submitted to npm with `@beta` tag. From there we will merge it into `master` that will bump proper version of `CLI`. - -#### Waiting for review - -Our team is keeping an eye on pull requests. -We will review your pull requests as soon as possible. -Next, we will give you feedback and either request changes, merge or close it. - - -## Style guide - - * Use `es6` syntax - * Use semicolons `;` - * 2 space indention (no tabs) - * Prefer `'` over `"` - * Prefer template strings - * 120 character length limit - * Do not use `console.log`, etc in code (expect debugging locally) - * Always add exact versions of packages `3.2.0` instead of `^3.2.0` - - -## Committing - -We use [commitizen](https://github.com/commitizen/cz-cli) as a tool that helps us write meaningful commit messages. - -To use it, run the following command **instead** of `git commit`: -```sh -npm run commit -``` -Follow the prompt questions with these guidelines: - -#### 1. Change type - -As prompted - -#### 2. Change scope - -Scope examples: `commands`, `constants`, `program`, `settings`, `utils`, `release`, `templates`, `configuration`, `ci`, `tests` - -#### 3. Short description - -For community contributors - GitHub issue id and title, for example: - -`#123 syncano-cli list command doesn't list remote sockets` - -For in-house developers - id and title of JIRA issue, for example: - -`[CLI-123] Update all prompts and command descriptions` - -#### 4. Long description (optional) - -Longer explanation of an issue. - -#### 5. Breaking changes (optional) - -Breaking change is a one that introduces backwards incompatibility. -If a commit changes how users would interact with an already existing interface, then it's a breaking change and should be listed as such. - -## The Release Process - -We are using [`semantic-release`](https://github.com/semantic-release/semantic-release) for the release management. It's a tool for automatic version detection based on the commit message history. It also generates the change log and adds it to github. Current set up works as follows: -1. Beta Versions - * Commit containing a fix/feature/breaking change is merged to devel from a feature branch - * Tests pass on the CI tool - * During deployment phase, `semantic-release` determines the next correct version to bump and changes it in the `package.json` file - * Version is published to `npm` with the `beta` tag. It's available with `npm i -g syncano-cli@beta` - * `semantic-release` generates a change log and sends it to GitHub (to be implemented: the changelog should have a `pre-release` or `draft` flag) - -2. Official release - * A pull request is merged from the devel to master branch. - * Tests pass on the CI tool - * During deployment phase, a `latest` tag is set on the current beta version. It's now available with `npm i -g syncano-cli` - -## Documentation - -We are using [docsify](https://docsify.js.org) to work with our documentation. Docs are stored in the `./docs` folder and published to github pages. To start working on the documentation run the following command: - -```js -npm run docs:watch -``` - -This will start docs local server. Open it under `http://localhost:3000` - -> Notes: -- see the [`docsify`](https://docsify.js.org) page for details regarding the documentation setup -- `docs/index.html` contains the configuration defined in the `window.$docsify` object -- `_sidebar.md` is for sidebar menu configuration -- `_coverpage.md` contains the docs landing page code - - - -Once you finish making changes in the `./docs` folder, simply commit the changes. Doc gremlins will do the rest. diff --git a/docs/cookbook/web/database/creating-objects.md b/docs/cookbook/web/database/creating-objects.md index 749a3481..36761efa 100644 --- a/docs/cookbook/web/database/creating-objects.md +++ b/docs/cookbook/web/database/creating-objects.md @@ -10,12 +10,12 @@ You want to create two object of different classes. ### Solution -Create empty `hello-world` Socket and `hello` endpoint, use `data` from `syncano-server` library. +Create empty `hello-world` Socket and `hello` endpoint, use `data` from `@syncano/core` library. #### Create Socket ```sh -syncano-cli create hello-world --template example +npx syncano-cli create hello-world --template example ``` #### Add data class @@ -37,7 +37,7 @@ classes: Edit file `syncano/hello-world/src/hello.js` and change its content to: ```js -import Syncano from 'syncano-server' +import Syncano from '@syncano/core' export default (ctx) => { const {data, response} = Syncano(ctx) @@ -59,7 +59,7 @@ Now you can call URL for `hello` endpoint using browser: ``` https://.syncano.space/hello-world/hello/ ``` -> You can find URL for `hello` endpoint by typing `syncano-cli list hello-world` +> You can find URL for `hello` endpoint by typing `npx syncano-cli list hello-world` You will get a response JSON response like this one: diff --git a/docs/cookbook/web/deployment/circle-ci.md b/docs/cookbook/web/deployment/circle-ci.md index aeb86694..64b8997d 100644 --- a/docs/cookbook/web/deployment/circle-ci.md +++ b/docs/cookbook/web/deployment/circle-ci.md @@ -25,7 +25,7 @@ machine: dependencies: override: - - yarn global add syncano-cli + - npm install @syncano/cli test: override: @@ -35,7 +35,7 @@ deployment: production: branch: master commands: - - syncano-cli deploy + - npx syncano-cli deploy ``` Now add this file to your repository: diff --git a/docs/cookbook/web/deployment/create-project-template.md b/docs/cookbook/web/deployment/create-project-template.md index 545ddbab..2d47d97c 100644 --- a/docs/cookbook/web/deployment/create-project-template.md +++ b/docs/cookbook/web/deployment/create-project-template.md @@ -37,4 +37,4 @@ If you template was submitted to [NPM](https://www.npm.com) you can install it a yarn add --dev syncano-template-project-my-template ``` -Now you will be able to find your template on the list of templates while executing `syncano-cli init` command. +Now you will be able to find your template on the list of templates while executing `npx syncano-cli init` command. diff --git a/docs/cookbook/web/solutions/weather-bot.md b/docs/cookbook/web/solutions/weather-bot.md index af7b9928..28489438 100644 --- a/docs/cookbook/web/solutions/weather-bot.md +++ b/docs/cookbook/web/solutions/weather-bot.md @@ -22,7 +22,7 @@ Our solution is based on two Sockets. [openweathermap](https://syncano.io/#/sock To install `openweathermap` type: ```sh -$ syncano-cli socket install openweathermap +$ npx syncano-cli socket install openweathermap ``` Now you have to provide API key for the OpenWeatherMap Service: @@ -34,12 +34,12 @@ Now you have to provide API key for the OpenWeatherMap Service: API keys section at (https://home.openweathermap.org/api_keys). Type in value: bf0a7ccf140879bc0098a85f3b8b2c94 - Your socket is ready to use! Type syncano-cli socket list openweathermap to see docs. + Your socket is ready to use! Type npx syncano-cli socket list openweathermap to see docs. ``` To install `messenger-bot` type: ```sh -$ syncano-cli socket install messenger-bot +$ npx syncano-cli socket install messenger-bot ``` To properly configure the Socket you will need create Facebook Page and Facebook Application. @@ -51,7 +51,7 @@ Then you have to provide `Page Token`, follow the instructions to get it from Fa To find the token, go to the 'Messenger > Settings > Token Generation' section in your Facebook Application settings panel at https://developers.facebook.com. Type in value: EAAbvRMZClZC4YBAL63OHJLSMWwbSKg9BM1eojt2VU0fv95vkgURMjqDqKPUVZCuN3HjNE8fjt2TJfK8Jt68fwVAAltb8JnQjgpcbMHF9eqh2OiH4ZC0ftsJz3h5ZA7wKOWacDOQGte9b9Lhl3KKuvdrJJhIgjZAAeXKgUXmSkEdgZDZD - Your socket is ready to use! Type syncano-cli socket list messenger-bot to see docs. + Your socket is ready to use! Type npx syncano-cli socket list messenger-bot to see docs. ``` #### Creating a "responder" Socket @@ -66,7 +66,7 @@ We need to only create a logic which will be responsible for the data flow: We will create new Socket called `responder`: ```sh -$ syncano-cli socket create responder +$ npx syncano-cli socket create responder ``` Choose empty project for this Socket: @@ -103,7 +103,7 @@ event_handlers: Next step is to create actual script to: ```javascript -import { endpoint, event } from 'syncano-server' +import { endpoint, event } from '@syncano/core' const city = ARGS.text // Getting a city name from the input argument diff --git a/docs/cookbook/web/users-groups/creating-user-account.md b/docs/cookbook/web/users-groups/creating-user-account.md index 161535a6..cb529984 100644 --- a/docs/cookbook/web/users-groups/creating-user-account.md +++ b/docs/cookbook/web/users-groups/creating-user-account.md @@ -10,13 +10,13 @@ You want to create user account inside the Socket script. ### Solution -Create empty `hello-world` Socket and `hello` endpoint, use `user` from `syncano-server` library. +Create empty `hello-world` Socket and `hello` endpoint, use `user` from `@syncano/core` library. `username` is given, but the `password` is going to be generated. #### Create Socket ```sh -syncano-cli create hello-world --template example +npx syncano-cli create hello-world --template example ``` #### Edit endpoint file @@ -26,7 +26,7 @@ Edit file `syncano/hello-world/src/hello.js` and change its content to: ```js import crypto -import Syncano from 'syncano-server' +import Syncano from '@syncano/core' export default (ctx) => { const {user, response} = Syncano(ctx) @@ -48,7 +48,7 @@ Now you can call URL for `hello` endpoint using browser: ``` https://.syncano.space/hello-world/hello/ ``` -> You can find URL for `hello` endpoint by typing `syncano-cli list hello-world` +> You can find URL for `hello` endpoint by typing `npx syncano-cli list hello-world` You will get a response JSON response like this one: diff --git a/docs/docs/_coverpage.md b/docs/docs/_coverpage.md index b664b52f..5a899c42 100644 --- a/docs/docs/_coverpage.md +++ b/docs/docs/_coverpage.md @@ -27,10 +27,9 @@
-

- β¬’ $ npm install -g yarn
- β¬’ $ npm install -g syncano-cli
- β¬’ $ syncano-cli init +

+ β¬’ $ npm install @syncano/cli
+ β¬’ $ npx syncano-cli init

...
New project? Exciting! πŸŽ‰

@@ -44,9 +43,9 @@

diff --git a/docs/docs/_navbar.md b/docs/docs/_navbar.md index 54f2690c..efad296c 100644 --- a/docs/docs/_navbar.md +++ b/docs/docs/_navbar.md @@ -1,9 +1,7 @@ -- Getting started - - [Quick Start](getting-started/quickstart.md) - - [Building Sockets](building-sockets/config-options.md) - - [Using Sockets](using-sockets/config-options.md) - - Resources - - [Syncano CLI](https://github.com/Syncano/syncano-node-cli) - - [Syncano Client library](https://github.com/Syncano/syncano-client-js) - - [Syncano Server library](https://github.com/Syncano/syncano-server-js) + - [Cheatsheet](https://cheatsheet.syncano.io/#/) + - [Cookbook](https://cookbook.syncano.io/#/) + +- Canary version + - [v. 0.6](https://syncano.github.io/syncano-node-cli/#/) + - [Legacy version](https://docs.syncano.io/) diff --git a/docs/docs/_sidebar.md b/docs/docs/_sidebar.md index 84276b61..9059ff42 100644 --- a/docs/docs/_sidebar.md +++ b/docs/docs/_sidebar.md @@ -1,6 +1,7 @@ - Getting started - [Quickstart Guide](/getting-started/quickstart) - [Syncano Ecosystem](/getting-started/intro) + - [Windows Development Guide](/getting-started/windows) - Starting a Project - [Overview](/project/overview) - [Hosting](/project/hosting) @@ -22,6 +23,7 @@ - CLI Reference Guide - [Installation](/cli-reference/installation) - [Commands](/cli-reference/commands) + - [Config Files](/cli-reference/config-files) - [Advanced](/cli-reference/advanced) - [Development](/cli-reference/development) - Client Lib Reference diff --git a/docs/docs/building-sockets/basics.md b/docs/docs/building-sockets/basics.md index 8a7fd429..e04b1ca3 100644 --- a/docs/docs/building-sockets/basics.md +++ b/docs/docs/building-sockets/basics.md @@ -15,42 +15,45 @@ You can think of Syncano Sockets as an [npm](https://www.npmjs.com/) for buildin What differs Syncano Sockets from an npm workflow, is that you have more control over your configuration. Scripts that come with Sockets are not bundled and can be easily configured. Integration between `modules` (the Syncano Sockets) relies on events that they emit to the Syncano eventloop. You can set listeners in the Syncano Sockets that will catch those events and execute an appropriate Socket. More on that in the sections below. -## Syncano Socket Structure +## Syncano Socket File Structure Syncano Sockets are represented by folders that are located in the `/syncano/` directory of your project. A typical Socket directory structure will look like this: ``` syncano β”œβ”€β”€ hello +| β”œβ”€β”€ bin +β”‚ β”‚ └──compile +β”‚ β”‚ └──compile-env β”‚Β Β  β”œβ”€β”€ package.json -β”‚Β Β  β”œβ”€β”€ scripts +β”‚Β Β  β”œβ”€β”€ src β”‚Β Β  β”‚Β Β  └── hello.js β”‚Β Β  └── socket.yml └── syncano.yml ``` -> .dist & .bundles folders +> .dist folder > -> When you run `syncano-cli deploy` command, two system folders will be created: +> When you run `npx syncano-cli deploy` command, one additional folder will be created: > - .dist - contains zipped socket.yml files. syncano-cli is using these files to update your Instance configuration. -> - .bundles - syncano-cli bundles the scripts with their dependencies before syncing them with your Instance. This is the folder where those scripts are being held. ## Creating a Syncano Socket ```sh -syncano-cli create +npx syncano-cli create ``` Example: ```sh -syncano-cli create hello-world +npx syncano-cli create hello-world ``` Later, you will be asked to choose the template: ``` ? Choose template for your Socket (Use arrow keys) - empty - Empty Socket -❯ example - Example Socket with one mocked endpoint (recommended) + Vanilla JS Socket - (@syncano/template-socket-vanilla) +❯ ES6 Socket - (@syncano/template-socket-es6) + Your Socket configuration is stored at /Users/qk/my_project/syncano/hello-world ``` @@ -58,48 +61,75 @@ Your Socket configuration is stored at /Users/qk/my_project/syncano/hello-world Now you can check if it was installed correctly, by typing: ```sh -syncano-cli list hello-world +npx syncano-cli list hello-world ``` ```yaml -socket: hello-world +name: hello-world description: Description of hello-world -status: not synced +version: 0.0.1 +runtime: nodejs_v8 - endpoint: hello-world/hello +endpoints: + hello: description: Hello world! - url: https://rough-dew-3551.syncano.link/hello-world/hello/ - status: not synced - - params: - - name: firstname + parameters: + firstname: + type: string description: First name of the person you want to greet example: Tyler - - name: lastname + lastname: + type: string description: Last name of the person you want to greet example: Durden - - response: text/plain - + response: + success: description: Success - exit code: 200 - example: - Hello Tyler Durden! - + parameters: + message: + description: Hello message + example: + { + "message": "Hello Tyler Durden!" + } + fail: + exit_code: 400 description: Failed - exit code: 400 - example: - No first name or last name provided :( + parameters: + message: + description: Error message + + example: + { + "message": "You have to send "firstname" and "lastname" arguments!" + } + ``` -Currently it has `not synced` status which means you should sync this Socket before using it in your app. -To sync type: +Currently it has `not synced` status which means you should deploy this Socket before using it in your app. + +## Syncano Socket Deployment + + +To deploy a socket type: ```sh -syncano-cli deploy hello-world +npx syncano-cli deploy hello-world ``` ``` socket synced: 17:10:06 hello-world 3943 ms ``` + +## Syncano Socket Hot Deployment + +You can use a hot deployment feature which watches your socket's files and deploys it on change (you need to deploy your socket first in order to use this feature). If no socket name is provided it watches all of your sockets. + +```sh +npx syncano-cli hot +``` +``` + πŸ”₯ Hot deploy started (Hit Ctrl-C to stop) + + project synced: 15:25:48 1 ms + +``` \ No newline at end of file diff --git a/docs/docs/building-sockets/data-classes.md b/docs/docs/building-sockets/data-classes.md index 1018f2a0..3c5b62e0 100644 --- a/docs/docs/building-sockets/data-classes.md +++ b/docs/docs/building-sockets/data-classes.md @@ -31,7 +31,7 @@ classes: type: boolean - name: author type: reference - target: author + target: author ``` The `name` is the name of the field, and `type` is what kind of field it is such as `string`, `integer`, or even `file`! You'll also notice `target`. This field is actually a reference or relation to another Data Class. diff --git a/docs/docs/building-sockets/socket-file-structure.md b/docs/docs/building-sockets/socket-file-structure.md index fd6da240..147aed98 100644 --- a/docs/docs/building-sockets/socket-file-structure.md +++ b/docs/docs/building-sockets/socket-file-structure.md @@ -1,12 +1,12 @@ # Sockets File Structure ## Intro -You can think of Syncano Sockets as an [npm](https://www.npmjs.com/) for building your API. With `syncano-node-cli` you can search for Syncano Sockets and install them into the `syncano` folder. In this case, the `syncano` folder would be an equivalent of `node_modules` directory. Going further with the `npm` analogy, `syncano.yml` is somewhat similar to the `package.json` file. It stores info about necessary dependencies and configuration. Sockets are like single modules in the `node_modules` directory. +You can think of Syncano Sockets as an [npm](https://www.npmjs.com/) for building your API. With `syncano-cli` you can search for Syncano Sockets and install them into the `syncano` folder. In this case, the `syncano` folder would be an equivalent of `node_modules` directory. Going further with the `npm` analogy, `syncano.yml` is somewhat similar to the `package.json` file. It stores info about necessary dependencies and configuration. Sockets are like single modules in the `node_modules` directory. What differs Syncano Sockets from an npm workflow, is that you have more control over your configuration. Scripts that come with Sockets are not bundled and can be easily configured. Integration between `modules` relies on events that they emit. You can set listeners that will catch those events and execute an appropriate Socket. More on that in the sections below. ## File structure -When you do a `syncano init` from the Syncano CLI, a `syncano` folder will be created in your current directory. It has a following structure: +When you do a `npx syncano-cli init` from the Syncano CLI, a `syncano` folder will be created in your current directory. It has a following structure: ![File structure](building-sockets/syncano-socket-structure.png) @@ -19,8 +19,7 @@ When you do a `syncano init` from the Syncano CLI, a `syncano` folder will be cr |socket.yml|Socket configuration file. It contains socket specific information like:
-endpoints definitions
-class schema configuration
-hosting configuration| -> .dist && .bundles folders +> .dist folders -> When you run `syncano-cli deploy` command, two system folders will be created by syncano-cli: +> When you run `npx syncano-cli deploy` command, two system folders will be created by syncano-cli: - .dist - contains zipped socket.yml files. syncano-cli is using these files to update your Instance configuration. -- .bundles - syncano-cli bundles the scripts with their dependencies before syncing them with your Instance. This is the folder where those scripts are being held. diff --git a/docs/docs/cli-reference/commands.md b/docs/docs/cli-reference/commands.md index 754f9d61..0f9640e1 100644 --- a/docs/docs/cli-reference/commands.md +++ b/docs/docs/cli-reference/commands.md @@ -4,7 +4,7 @@ To start the Syncano project use: ```sh -syncano-cli init +npx syncano-cli init ``` What will happen? @@ -13,14 +13,14 @@ What will happen? If you have an Instance already, you can initiate project using it, instead of creating it: ```sh -syncano-cli init -i +npx syncano-cli init -i ``` ### attach To attach project from the current folder the Syncano Instance use: ```sh -syncano-cli attach +npx syncano-cli attach ``` What will happen? @@ -28,18 +28,18 @@ What will happen? You can also use flag: ```sh -syncano-cli attach --instance +npx syncano-cli attach --instance ``` ### login ```sh -syncano-cli login +npx syncano-cli login ``` Provide login and password of your account to log you in. ### logout ```sh -syncano-cli logout +npx syncano-cli logout ``` Your account keys will be removed from your machine. @@ -49,9 +49,9 @@ Your account keys will be removed from your machine. Hot deploy to make your project continuously synced to the Syncano cloud: ```sh -syncano-cli hot +npx syncano-cli hot ``` -> `syncano-cli hot` is an alias to `syncano-cli deploy --hot --trace` +> `npx syncano-cli hot` is an alias to `npx syncano-cli deploy --hot --trace` It compiles and deploys all global configuration and Syncano Sockets in your project right away. @@ -59,7 +59,7 @@ It compiles and deploys all global configuration and Syncano Sockets in your pro To deploy your backend execute: ```sh -syncano-cli deploy +npx syncano-cli deploy ``` It compiles and deploys all global configuration and Syncano Sockets in your project. From now on, you can call every endpoint from every Socket in your project. Dependencies will be also deployed in that process. @@ -72,35 +72,35 @@ syncano-cli deploy --create-instance To deploy single Socket provide socket name as an additional argument: ```sh -syncano-cli deploy +npx syncano-cli deploy ``` #### Hot deploy When you are developing your Socket you probably do not want to deploy it manually every time you make a change. To make it more efficient, you can use `--hot` flag to track changes in your Socket scripts and configuration. Every time you change something, it will be deployed automatically. ```sh -syncano-cli deploy --hot -syncano-cli deploy --hot +npx syncano-cli deploy --hot +npx syncano-cli deploy --hot ``` In `hot` deploy mode you can also use `trace`: ```sh -syncano-cli deploy --hot --trace -syncano-cli deploy --hot --trace +npx syncano-cli deploy --hot --trace +npx syncano-cli deploy --hot --trace ``` ### call You can test your Socket by calling it: ```sh -syncano-cli call / +npx syncano-cli call / ``` If your Socket has any parameters, you will be asked about them. Next, you will get a response from your script. -You can also call your Socket's endpoint by making a HTTP request to an URL that you can find by running `syncano-cli list `. +You can also call your Socket's endpoint by making a HTTP request to an URL that you can find by running `npx syncano-cli list `. ### trace You can trace your Socket call by using: ```sh -syncano-cli trace [socket_name] +npx syncano-cli trace [socket_name] ``` If you will not provide any particular Socket name, all the socket will be traced. @@ -111,7 +111,7 @@ If you will not provide any particular Socket name, all the socket will be trace To list all your Syncano Sockets: ```sh -syncano-cli list +npx syncano-cli list ``` Example response: ``` @@ -170,7 +170,7 @@ description: Test Socket ### add ```sh -syncano-cli add +npx syncano-cli add ``` This command allows you to `add` a Syncano Socket from the Syncano Registry. It's a place where Syncano Sockets made by other developers are stored, so that you can use them in your own project. Some Sockets need a configuration (e.g. API keys, usernames etc.) - you will be asked to provide configuration options during `deploy`. @@ -192,12 +192,12 @@ You will not be asked to provide values for config options if it will be set in ### create To create a Socket execute: ```sh -syncano-cli create +npx syncano-cli create ``` Example: ```sh -syncano-cli create my_new_socket +npx syncano-cli create my_new_socket ``` You will be asked to choose a template: @@ -216,28 +216,28 @@ After that you can start working with your new Socket. Currently it has got 'not To configure a given Socket use: ```sh -syncano-cli config +npx syncano-cli config ``` ### config-set To configure chosen option of a given Socket use: ```sh -syncano-cli config-set +npx syncano-cli config-set ``` ### config-show To preview configuration options of a given Socket use: ```sh -syncano-cli config-show +npx syncano-cli config-show ``` ### remove To remove the Syncano Socket from your configuration ```sh -syncano-cli remove +npx syncano-cli remove ``` This command deletes your Socket only from local config. To apply changes you have to deploy your configuration. @@ -245,21 +245,21 @@ This command deletes your Socket only from local config. To apply changes you ha ### search ```sh -syncano-cli search +npx syncano-cli search ``` Sockets will be searched by name, description and tags, so you will find Sockets matching only your search term. When you find a Syncano Socket that interests you, you use its name to install it. ### info (coming soon) Use Socket name and `info` command to print detailed information about it (from the Sockets Registry): ```sh -syncano-cli info +npx syncano-cli info ``` ### submit If you want to submit your Socket to the `Syncano Sockets Registry` use: ```sh -syncano-cli submit +npx syncano-cli submit ``` Where the `` is the name of your Socket available locally. @@ -269,7 +269,7 @@ Where the `` is the name of your Socket available locally. Publishing Socket mean to make it available for everyone. To do it use: ```sh -syncano-cli publish +npx syncano-cli publish ``` Where the `` is the name of your Socket you already submitted to the Registry. You cannot reverse this action. @@ -277,7 +277,7 @@ Where the `` is the name of your Socket you already submitted to th ### add ```sh -syncano-cli hosting add [hosting_path] +npx syncano-cli hosting add [hosting_path] ``` Later, you will be asked to provide some info: * Please choose for which socket you want to list hostings @@ -291,13 +291,13 @@ After proceeding with these prompts, hosting will be added to your configuration Thanks to the `config` command you can configure CNAME for the given hosting: ```sh -syncano-cli config --cname +npx syncano-cli config --cname ``` ### sync To synchronize all the hosting files execute: ```sh -syncano-cli hosting sync +npx syncano-cli hosting sync ``` After running this command all the hosting files will be uploaded to the server. You can find all of them in URL printed after successful synchronization. @@ -317,14 +317,14 @@ Example: #### Synchronizing files of specific Hosting ```sh -syncano-cli hosting sync +npx syncano-cli hosting sync ``` ### list To list Hosting configuration: ```sh -syncano-cli hosting list -syncano-cli hosting list +npx syncano-cli hosting list +npx syncano-cli hosting list ``` Example response: @@ -337,7 +337,7 @@ Example response: ### list files ```sh -syncano-cli hosting files +npx syncano-cli hosting files ``` Example response: ``` @@ -353,7 +353,7 @@ Example response: ### delete To delete Hosting configuration: ```sh -syncano-cli hosting delete +npx syncano-cli hosting delete ``` !> After that your Hosting will be deleted from the configuration but folder with files will still be available in your local directory. -Hosting will be removed from your backend during the next `syncano-cli deploy`. +Hosting will be removed from your backend during the next `npx syncano-cli deploy`. diff --git a/docs/docs/cli-reference/config-files.md b/docs/docs/cli-reference/config-files.md new file mode 100644 index 00000000..cd2001f6 --- /dev/null +++ b/docs/docs/cli-reference/config-files.md @@ -0,0 +1,2 @@ +#Config files + diff --git a/docs/docs/cli-reference/installation.md b/docs/docs/cli-reference/installation.md index f899b417..546f1f80 100644 --- a/docs/docs/cli-reference/installation.md +++ b/docs/docs/cli-reference/installation.md @@ -3,57 +3,59 @@ # Installing the Syncano CLI -```sh -npm install -g yarn -npm install -g syncano-cli +```sh +npm install @syncano/cli ``` -Now you can use `syncano-cli`: +Now you can use `npx syncano-cli`: ```sh -syncano-cli +npx syncano-cli ``` ``` -Usage: syncano-cli [options] [command] + Usage: syncano-cli [options] [command] + + Current Instance: your-instance-1234 -Basics: + Basics: - init [options] Start a Syncano project in the current directory - attach [options] Attach project to the chosen Instance - login Login to your account - logout Logout from your current account + init [options] Start a Syncano project in the current directory + attach [options] Attach project to the chosen Instance + login Login to your account + logout Logout from your current account -Project: + Project: - hot [socket_name] Hot deploy to make your project continuously synced to the Syncano cloud - deploy [options] [socket_name] Synchronize your project to Syncano - call [options] / Call Socket's endpoint - trace [socket_name] Trace Socket calls + hot [socket_name] Hot deploy to make your project continuously synced to the Syncano cloud + deploy [options] [socket_name] Synchronize your project to Syncano + call [options] / Call Socket's endpoint + trace [socket_name] Trace Socket calls -Sockets: + Sockets: - list [options] [socket_name] List the installed Sockets - add [options] Add a Socket as a dependency of your project or local Socket - remove Remove a Socket from your project - create Create a new Socket for your project - config Configure a given Socket - config-set Configure a config option of a given Socket - config-show Show config options of a Socket + list [options] [socket_name] List the installed Sockets + add [options] Add a Socket as a dependency of your project or local Socket + remove Remove a Socket from your project + create Create a new Socket for your project + config Configure a given Socket + config-set Configure a config option of a given Socket + config-show Show config options of a Socket -Registry: + Registry: - search [options] [keyword] Search for a specific Socket in the Sockets Registry - submit [options] Submit a Socket to Socket Registry - publish [options] Publish a Socket in a Socket Registry + search [options] [keyword] Search for a specific Socket in the Sockets Registry + submit [options] Submit a Socket to Socket Registry + publish [options] Publish a Socket in a Socket Registry -Other: + Other: - hosting Manage your web assets and host them on Syncano + hosting Manage your web assets and host them on Syncano + component Manage your Socket components -Options: + Options: - -h, --help output usage information - -V, --version output the version number + -V, --version output the version number + -h, --help output usage information ``` Go and check documentation for all the [commands](cli-reference/commands). diff --git a/docs/docs/client-lib-reference/installation.md b/docs/docs/client-lib-reference/installation.md index c6ab6da8..cc826cf0 100644 --- a/docs/docs/client-lib-reference/installation.md +++ b/docs/docs/client-lib-reference/installation.md @@ -10,7 +10,7 @@ The `Syncano Client` side library enables you to interact with the Syncano Socke Installing from NPM: ```sh -npm install syncano-client --save +npm install @syncano/client -D ``` Library is also at [JSDELIVR](http://www.jsdelivr.com/projects/syncano-client-js): @@ -21,13 +21,13 @@ Library is also at [JSDELIVR](http://www.jsdelivr.com/projects/syncano-client-js When the library is installed you can import it. The library supports the CommonJS syntax: ```js -var Syncano = require('syncano-client'); +var Syncano = require('@syncano/client'); ``` You can also use it with ES6 modules: ```js -import Syncano from 'syncano-client'; +import Syncano from '@syncano/client'; ``` ## Connection diff --git a/docs/docs/common/contributing.md b/docs/docs/common/contributing.md index 3e89d8ec..9a43226f 100644 --- a/docs/docs/common/contributing.md +++ b/docs/docs/common/contributing.md @@ -75,11 +75,6 @@ npm run e2e:tutorial -- src/tests/e2e/tutorials/quickstart.test-e2e.js * Check that your code lints (`yarn lint`/`yarn lint-tests`) * Check that your code passes all tests on `CI` -#### Branching flow - -We branch our work from `devel`. -After merging your changes, they (changes) will wait for our `devel` tests to pass and then automatically merged into `beta` branch. -It will be submitted to npm with `@beta` tag. From there we will merge it into `master` that will bump proper version of `CLI`. #### Waiting for review @@ -100,43 +95,6 @@ Next, we will give you feedback and either request changes, merge or close it. * Always add exact versions of packages `3.2.0` instead of `^3.2.0` -## Committing - -We use [commitizen](https://github.com/commitizen/cz-cli) as a tool that helps us write meaningful commit messages. - -To use it, run the following command **instead** of `git commit`: -```sh -npm run commit -``` -Follow the prompt questions with these guidelines: - -#### 1. Change type - -As prompted - -#### 2. Change scope - -Scope examples: `commands`, `constants`, `program`, `settings`, `utils`, `release`, `templates`, `configuration`, `ci`, `tests` - -#### 3. Short description - -For community contributors - GitHub issue id and title, for example: - -`#123 syncano-cli list command doesn't list remote sockets` - -For in-house developers - id and title of JIRA issue, for example: - -`[CLI-123] Update all prompts and command descriptions` - -#### 4. Long description (optional) - -Longer explanation of an issue. - -#### 5. Breaking changes (optional) - -Breaking change is a one that introduces backwards incompatibility. -If a commit changes how users would interact with an already existing interface, then it's a breaking change and should be listed as such. - ## The Release Process We are using [`semantic-release`](https://github.com/semantic-release/semantic-release) for the release management. It's a tool for automatic version detection based on the commit message history. It also generates the change log and adds it to github. Current set up works as follows: @@ -144,13 +102,13 @@ We are using [`semantic-release`](https://github.com/semantic-release/semantic-r * Commit containing a fix/feature/breaking change is merged to devel from a feature branch * Tests pass on the CI tool * During deployment phase, `semantic-release` determines the next correct version to bump and changes it in the `package.json` file - * Version is published to `npm` with the `beta` tag. It's available with `npm i -g syncano-cli@beta` + * Version is published to `npm` with the `canary` tag. It's available with `npm i @syncano/cli@canary` * `semantic-release` generates a change log and sends it to GitHub (to be implemented: the changelog should have a `pre-release` or `draft` flag) 2. Official release * A pull request is merged from the devel to master branch. * Tests pass on the CI tool - * During deployment phase, a `latest` tag is set on the current beta version. It's now available with `npm i -g syncano-cli` + * During deployment phase, a `latest` tag is set on the current beta version. It's now available with `npm i @syncano/cli` ## Documentation diff --git a/docs/docs/getting-started/intro.md b/docs/docs/getting-started/intro.md index 9fe10ffc..ee4d1975 100644 --- a/docs/docs/getting-started/intro.md +++ b/docs/docs/getting-started/intro.md @@ -15,12 +15,12 @@ So, starting from the very top of the diagram: The Syncano chain of tools currently consists: - `CLI` - command-line interface to operate whole platform -- `Client Library` (*syncano-client*) - library used on the client-side (application, website etc.) -- `Server-side Library` (*syncano-server*) - used inside the Socket's scripts for communication with Core Syncano Services (e.g. build-in database) +- `Client Library` (*@syncano/lib-js-client*) - library used on the client-side (application, website etc.) +- `Server-side Library` (*@syncano/lib-js-core*) - used inside the Socket's scripts for communication with Core Syncano Services (e.g. build-in database) ### The Syncano CLI -Use the Syncano Command Line interface (CLI) to manage the whole build and deploy process. You can get it from npm with `npm install syncano-cli -g` command (it requires Node and Yarn to be installed). It's a powerful terminal tool, so you won't have to leave your working environment. The whole synchronization and deployment process happens automatically and seamlessly. +Use the Syncano Command Line interface (CLI) to manage the whole build and deploy process. You can get it from npm with `npm install @syncano/cli` command (it requires Node to be installed). It's a powerful terminal tool, so you won't have to leave your working environment. The whole synchronization and deployment process happens automatically and seamlessly. See the [Syncano CLI Reference](/cli-reference/installation) for more information about the commands and possible options. @@ -37,7 +37,7 @@ The Server Library is used to communicate with the Syncano Cloud OS. The scripts In order to use the Syncano Server Library, simply include it in your server side scripts, like so: ```javascript -import server from 'syncano-server-js' +import server from '@syncano/core' const { data } = server() ``` @@ -62,7 +62,7 @@ A very lightweight front-end library that was created to call the endpoints whic ```javascript