├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── bin
└── create-cloudflare-worker
├── package-lock.json
├── package.json
└── template
├── .babelrc
├── .eslintrc.json
├── .gitignore
├── .prettierrc
├── package-lock.json
├── package.json
├── src
├── __tests__
│ └── worker.integration_spec.js
└── index.js
└── webpack.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
63 | /dist
64 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4 |
5 |
6 | ## [1.2.1](https://github.com/gja/create-cloudflare-worker/compare/v1.2.0...v1.2.1) (2019-01-27)
7 |
8 |
9 | ### Bug Fixes
10 |
11 | * **Sample:** The sample worker actually works ([67a7fd9](https://github.com/gja/create-cloudflare-worker/commit/67a7fd9))
12 |
13 |
14 |
15 |
16 | # [1.2.0](https://github.com/gja/create-cloudflare-worker/compare/v1.1.4...v1.2.0) (2019-01-04)
17 |
18 |
19 | ### Features
20 |
21 | * **Worker:** cloudflare-worker-local 1.9, which fixes a waitUntil bug ([541c77b](https://github.com/gja/create-cloudflare-worker/commit/541c77b))
22 |
23 |
24 |
25 |
26 | ## [1.1.4](https://github.com/gja/create-cloudflare-worker/compare/v1.1.3...v1.1.4) (2019-01-04)
27 |
28 |
29 | ### Bug Fixes
30 |
31 | * **Testing:** Upgraded to the latest cloudflare-worker-local, which exposes stores ([8729ee5](https://github.com/gja/create-cloudflare-worker/commit/8729ee5))
32 |
33 |
34 |
35 |
36 | ## [1.1.3](https://github.com/gja/create-cloudflare-worker/compare/v1.1.2...v1.1.3) (2019-01-04)
37 |
38 |
39 |
40 |
41 | ## [1.1.2](https://github.com/gja/create-cloudflare-worker/compare/v1.1.1...v1.1.2) (2019-01-04)
42 |
43 |
44 | ### Bug Fixes
45 |
46 | * **doc:** Updating the steps to create a worker ([f478445](https://github.com/gja/create-cloudflare-worker/commit/f478445))
47 |
48 |
49 |
50 |
51 | ## [1.1.1](https://github.com/gja/create-cloudflare-worker/compare/v1.1.0...v1.1.1) (2019-01-02)
52 |
53 |
54 |
55 |
56 | # [1.1.0](https://github.com/gja/create-cloudflare-worker/compare/v1.0.4...v1.1.0) (2019-01-02)
57 |
58 |
59 | ### Features
60 |
61 | * Start the worker on a local port ([51ab694](https://github.com/gja/create-cloudflare-worker/commit/51ab694))
62 |
63 |
64 |
65 |
66 | ## [1.0.4](https://github.com/gja/create-cloudflare-worker/compare/v1.0.3...v1.0.4) (2019-01-02)
67 |
68 |
69 | ### Bug Fixes
70 |
71 | * fixing a typo so /dist is git ignored ([75c4b1b](https://github.com/gja/create-cloudflare-worker/commit/75c4b1b))
72 |
73 |
74 |
75 |
76 | ## [1.0.3](https://github.com/gja/create-cloudflare-worker/compare/v1.0.2...v1.0.3) (2019-01-02)
77 |
78 |
79 | ### Bug Fixes
80 |
81 | * Git Commit doesn't fail for eslint ([b2f5b68](https://github.com/gja/create-cloudflare-worker/commit/b2f5b68))
82 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | ISC License (ISC)
2 | Copyright 2019 Tejas Dinkar
3 |
4 | Permission to use, copy, modify, and/or distribute this software for any purpose
5 | with or without fee is hereby granted, provided that the above copyright notice
6 | and this permission notice appear in all copies.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
10 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
11 | OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
12 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
13 | ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## create-cloudflare-worker 
2 |
3 | > A Starter Kit for Building a Cloudflare Worker
4 |
5 | ### Creating an App
6 |
7 | To create a new worker with `create-cloudflare-worker`, run the following
8 |
9 | ```bash
10 | npm init cloudflare-worker your-worker-name
11 | ```
12 |
13 | or, with `npx`
14 |
15 | ```bash
16 | npx create-cloudflare-worker your-worker-name
17 | ```
18 |
19 | Once the installation is done, you can open your project folder:
20 |
21 | ```bash
22 | cd my-app
23 | ```
24 |
25 | NOTE: Prerequisites: `create-cloudflare-worker` needs Node v10 or higher.
26 |
27 |
28 | ### Building and testing your new worker
29 |
30 | To build the worker, run
31 |
32 | ```bash
33 | npm run build
34 | ```
35 |
36 | This outputs the worker as `dist/main.js`.
37 |
38 | To continually build the worker on every change, run
39 |
40 | ```bash
41 | npm run watch
42 | ```
43 |
44 | And finally, to execute the integration and unit tests, run
45 |
46 | ```bash
47 | npm test
48 | ```
49 |
50 | ### Running the worker locally
51 |
52 | To run the worker locally, run
53 |
54 | ```bash
55 | npm start
56 | ```
57 |
58 | This will start the worker on port 4000, and forward all requests to the upstream server at `http://localhost:3000`. This will allow you to develop your application in tandem with the worker that will front the application.
59 |
60 | ### Deploying
61 |
62 | This project may be used to deploy your newly built worker to cloudflare as follows:
63 |
64 | ```bash
65 | CF_ACCOUNT=acct-id CF_WORKER_NAME=worker-name CF_EMAIL=you@you.com CF_AUTH_KEY=auth-key npm run deploy
66 | ```
67 |
68 | However, you may also just copy dist/main.js and paste it into the CF worker dashboard (or even terraform it)
69 |
70 | ### Examples
71 |
72 | We will add recipes here
73 | - Building a API service with react-router
74 | - Parsing Cookies
75 |
76 | ### Adding a Key Value Store
77 |
78 | This project can also mock an in memory KV Store. This can be done as follows
79 |
80 | - Add the kv store (ex: MYSTORE) to the list of global variables of the worker
81 | - When running the worker, start the worker with the `KV_NAMESPACES` as follows `KV_NAMESPACES=MYSTORE,OTHER_STORE npm start`
82 | - In tests, namespaces can be created as an option to createTestApp as follows: `const app = createTestApp(workerContents, upstreamApp, { kvStores: ["MYSTORE"] })`. The new store can be accessed in tests as follows: `await app.stores.MYSTORE.put("key", "value")`. `await app.stores.MYSTORE.get("key")`
83 |
84 | When you are ready to deploy your new worker with a KV:
85 |
86 | - run curl to create the worker namespace (this should only be done once)
87 | ```bash
88 | # If this fails, contact support
89 | curl "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/workers/namespaces" \
90 | -X POST \
91 | -H "X-Auth-Email: $CF_EMAIL" \
92 | -H "X-Auth-Key: $AUTH_KEY" \
93 | -H "Content-Type: application/json" \
94 | --data '{"title": "your-namespace"}'
95 | # {"result":{"id": "","title":"your-namespace"}}
96 | ```
97 | - Bind this namespace in the deploy script in package.json. Find the bindings section in the deploy script, and replace it with something like this
98 | ```
99 | \\\"bindings\\\":[{\\\"name\\\":\\\"MYSTORE\\\",\\\"type\\\":\\\"kv_namespace\\\",\\\"namespace_id\\\":\\\"$MYSTORE_ID\\\"}]
100 | ```
101 | - Finally, run your deploy script with the MYSTORE_ID variable set to the id returned by the curl command.
102 |
103 | ### Contributing
104 | - Fork this Repo first
105 | - Clone your Repo
106 | - Install dependencies by `$ npm install`
107 | - Checkout a feature branch
108 | - Feel free to add your features
109 | - Make sure your features are fully tested
110 | - Publish your local branch, Open a pull request
111 | - Enjoy hacking <3
112 |
113 | ### ISC
114 |
115 | This work is licensed under the [ISC license](./LICENSE).
116 |
117 | ---
118 |
--------------------------------------------------------------------------------
/bin/create-cloudflare-worker:
--------------------------------------------------------------------------------
1 | #! /bin/sh -e
2 |
3 | # TODO: Move this to JS?
4 |
5 | DEST="$(pwd)/$1"
6 |
7 | EXEC_PATH="$0"
8 | CODE_PATH="$(cd $(dirname $EXEC_PATH); cd $(dirname $(readlink $EXEC_PATH)); cd ..; pwd)"
9 | cp -r "$CODE_PATH/template" "$DEST"
10 |
11 | cd "$DEST"
12 |
13 | git init
14 |
15 | # npm pack skips .gitignore and package-lock.json, so doing some hacks
16 | cat > .gitignore <=2.2.7 <3"
15 | }
16 | },
17 | "ansi-regex": {
18 | "version": "2.1.1",
19 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
20 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
21 | "dev": true
22 | },
23 | "ansi-styles": {
24 | "version": "2.2.1",
25 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
26 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
27 | "dev": true
28 | },
29 | "array-find-index": {
30 | "version": "1.0.2",
31 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
32 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
33 | "dev": true
34 | },
35 | "array-ify": {
36 | "version": "1.0.0",
37 | "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
38 | "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
39 | "dev": true
40 | },
41 | "arrify": {
42 | "version": "1.0.1",
43 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
44 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
45 | "dev": true
46 | },
47 | "async": {
48 | "version": "2.6.1",
49 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
50 | "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
51 | "dev": true,
52 | "requires": {
53 | "lodash": "^4.17.10"
54 | }
55 | },
56 | "balanced-match": {
57 | "version": "1.0.0",
58 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
59 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
60 | "dev": true
61 | },
62 | "brace-expansion": {
63 | "version": "1.1.11",
64 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
65 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
66 | "dev": true,
67 | "requires": {
68 | "balanced-match": "^1.0.0",
69 | "concat-map": "0.0.1"
70 | }
71 | },
72 | "buffer-from": {
73 | "version": "1.1.1",
74 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
75 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
76 | "dev": true
77 | },
78 | "builtin-modules": {
79 | "version": "1.1.1",
80 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
81 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
82 | "dev": true
83 | },
84 | "camelcase": {
85 | "version": "4.1.0",
86 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
87 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
88 | "dev": true
89 | },
90 | "camelcase-keys": {
91 | "version": "4.2.0",
92 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
93 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
94 | "dev": true,
95 | "requires": {
96 | "camelcase": "^4.1.0",
97 | "map-obj": "^2.0.0",
98 | "quick-lru": "^1.0.0"
99 | }
100 | },
101 | "chalk": {
102 | "version": "1.1.3",
103 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
104 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
105 | "dev": true,
106 | "requires": {
107 | "ansi-styles": "^2.2.1",
108 | "escape-string-regexp": "^1.0.2",
109 | "has-ansi": "^2.0.0",
110 | "strip-ansi": "^3.0.0",
111 | "supports-color": "^2.0.0"
112 | }
113 | },
114 | "cliui": {
115 | "version": "3.2.0",
116 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
117 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
118 | "dev": true,
119 | "requires": {
120 | "string-width": "^1.0.1",
121 | "strip-ansi": "^3.0.1",
122 | "wrap-ansi": "^2.0.0"
123 | },
124 | "dependencies": {
125 | "string-width": {
126 | "version": "1.0.2",
127 | "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
128 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
129 | "dev": true,
130 | "requires": {
131 | "code-point-at": "^1.0.0",
132 | "is-fullwidth-code-point": "^1.0.0",
133 | "strip-ansi": "^3.0.0"
134 | }
135 | }
136 | }
137 | },
138 | "code-point-at": {
139 | "version": "1.1.0",
140 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
141 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
142 | "dev": true
143 | },
144 | "commander": {
145 | "version": "2.17.1",
146 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
147 | "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
148 | "dev": true,
149 | "optional": true
150 | },
151 | "compare-func": {
152 | "version": "1.3.2",
153 | "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
154 | "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
155 | "dev": true,
156 | "requires": {
157 | "array-ify": "^1.0.0",
158 | "dot-prop": "^3.0.0"
159 | }
160 | },
161 | "concat-map": {
162 | "version": "0.0.1",
163 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
164 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
165 | "dev": true
166 | },
167 | "concat-stream": {
168 | "version": "1.6.2",
169 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
170 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
171 | "dev": true,
172 | "requires": {
173 | "buffer-from": "^1.0.0",
174 | "inherits": "^2.0.3",
175 | "readable-stream": "^2.2.2",
176 | "typedarray": "^0.0.6"
177 | }
178 | },
179 | "conventional-changelog": {
180 | "version": "1.1.24",
181 | "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz",
182 | "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==",
183 | "dev": true,
184 | "requires": {
185 | "conventional-changelog-angular": "^1.6.6",
186 | "conventional-changelog-atom": "^0.2.8",
187 | "conventional-changelog-codemirror": "^0.3.8",
188 | "conventional-changelog-core": "^2.0.11",
189 | "conventional-changelog-ember": "^0.3.12",
190 | "conventional-changelog-eslint": "^1.0.9",
191 | "conventional-changelog-express": "^0.3.6",
192 | "conventional-changelog-jquery": "^0.1.0",
193 | "conventional-changelog-jscs": "^0.1.0",
194 | "conventional-changelog-jshint": "^0.3.8",
195 | "conventional-changelog-preset-loader": "^1.1.8"
196 | }
197 | },
198 | "conventional-changelog-angular": {
199 | "version": "1.6.6",
200 | "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
201 | "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
202 | "dev": true,
203 | "requires": {
204 | "compare-func": "^1.3.1",
205 | "q": "^1.5.1"
206 | }
207 | },
208 | "conventional-changelog-atom": {
209 | "version": "0.2.8",
210 | "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz",
211 | "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==",
212 | "dev": true,
213 | "requires": {
214 | "q": "^1.5.1"
215 | }
216 | },
217 | "conventional-changelog-codemirror": {
218 | "version": "0.3.8",
219 | "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz",
220 | "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==",
221 | "dev": true,
222 | "requires": {
223 | "q": "^1.5.1"
224 | }
225 | },
226 | "conventional-changelog-core": {
227 | "version": "2.0.11",
228 | "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz",
229 | "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==",
230 | "dev": true,
231 | "requires": {
232 | "conventional-changelog-writer": "^3.0.9",
233 | "conventional-commits-parser": "^2.1.7",
234 | "dateformat": "^3.0.0",
235 | "get-pkg-repo": "^1.0.0",
236 | "git-raw-commits": "^1.3.6",
237 | "git-remote-origin-url": "^2.0.0",
238 | "git-semver-tags": "^1.3.6",
239 | "lodash": "^4.2.1",
240 | "normalize-package-data": "^2.3.5",
241 | "q": "^1.5.1",
242 | "read-pkg": "^1.1.0",
243 | "read-pkg-up": "^1.0.1",
244 | "through2": "^2.0.0"
245 | }
246 | },
247 | "conventional-changelog-ember": {
248 | "version": "0.3.12",
249 | "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz",
250 | "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==",
251 | "dev": true,
252 | "requires": {
253 | "q": "^1.5.1"
254 | }
255 | },
256 | "conventional-changelog-eslint": {
257 | "version": "1.0.9",
258 | "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz",
259 | "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==",
260 | "dev": true,
261 | "requires": {
262 | "q": "^1.5.1"
263 | }
264 | },
265 | "conventional-changelog-express": {
266 | "version": "0.3.6",
267 | "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz",
268 | "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==",
269 | "dev": true,
270 | "requires": {
271 | "q": "^1.5.1"
272 | }
273 | },
274 | "conventional-changelog-jquery": {
275 | "version": "0.1.0",
276 | "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz",
277 | "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
278 | "dev": true,
279 | "requires": {
280 | "q": "^1.4.1"
281 | }
282 | },
283 | "conventional-changelog-jscs": {
284 | "version": "0.1.0",
285 | "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz",
286 | "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
287 | "dev": true,
288 | "requires": {
289 | "q": "^1.4.1"
290 | }
291 | },
292 | "conventional-changelog-jshint": {
293 | "version": "0.3.8",
294 | "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz",
295 | "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==",
296 | "dev": true,
297 | "requires": {
298 | "compare-func": "^1.3.1",
299 | "q": "^1.5.1"
300 | }
301 | },
302 | "conventional-changelog-preset-loader": {
303 | "version": "1.1.8",
304 | "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz",
305 | "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==",
306 | "dev": true
307 | },
308 | "conventional-changelog-writer": {
309 | "version": "3.0.9",
310 | "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz",
311 | "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==",
312 | "dev": true,
313 | "requires": {
314 | "compare-func": "^1.3.1",
315 | "conventional-commits-filter": "^1.1.6",
316 | "dateformat": "^3.0.0",
317 | "handlebars": "^4.0.2",
318 | "json-stringify-safe": "^5.0.1",
319 | "lodash": "^4.2.1",
320 | "meow": "^4.0.0",
321 | "semver": "^5.5.0",
322 | "split": "^1.0.0",
323 | "through2": "^2.0.0"
324 | }
325 | },
326 | "conventional-commits-filter": {
327 | "version": "1.1.6",
328 | "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz",
329 | "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==",
330 | "dev": true,
331 | "requires": {
332 | "is-subset": "^0.1.1",
333 | "modify-values": "^1.0.0"
334 | }
335 | },
336 | "conventional-commits-parser": {
337 | "version": "2.1.7",
338 | "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz",
339 | "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==",
340 | "dev": true,
341 | "requires": {
342 | "JSONStream": "^1.0.4",
343 | "is-text-path": "^1.0.0",
344 | "lodash": "^4.2.1",
345 | "meow": "^4.0.0",
346 | "split2": "^2.0.0",
347 | "through2": "^2.0.0",
348 | "trim-off-newlines": "^1.0.0"
349 | }
350 | },
351 | "conventional-recommended-bump": {
352 | "version": "1.2.1",
353 | "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz",
354 | "integrity": "sha512-oJjG6DkRgtnr/t/VrPdzmf4XZv8c4xKVJrVT4zrSHd92KEL+EYxSbYoKq8lQ7U5yLMw7130wrcQTLRjM/T+d4w==",
355 | "dev": true,
356 | "requires": {
357 | "concat-stream": "^1.4.10",
358 | "conventional-commits-filter": "^1.1.1",
359 | "conventional-commits-parser": "^2.1.1",
360 | "git-raw-commits": "^1.3.0",
361 | "git-semver-tags": "^1.3.0",
362 | "meow": "^3.3.0",
363 | "object-assign": "^4.0.1"
364 | },
365 | "dependencies": {
366 | "camelcase": {
367 | "version": "2.1.1",
368 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
369 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
370 | "dev": true
371 | },
372 | "camelcase-keys": {
373 | "version": "2.1.0",
374 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
375 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
376 | "dev": true,
377 | "requires": {
378 | "camelcase": "^2.0.0",
379 | "map-obj": "^1.0.0"
380 | }
381 | },
382 | "indent-string": {
383 | "version": "2.1.0",
384 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
385 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
386 | "dev": true,
387 | "requires": {
388 | "repeating": "^2.0.0"
389 | }
390 | },
391 | "map-obj": {
392 | "version": "1.0.1",
393 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
394 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
395 | "dev": true
396 | },
397 | "meow": {
398 | "version": "3.7.0",
399 | "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
400 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
401 | "dev": true,
402 | "requires": {
403 | "camelcase-keys": "^2.0.0",
404 | "decamelize": "^1.1.2",
405 | "loud-rejection": "^1.0.0",
406 | "map-obj": "^1.0.1",
407 | "minimist": "^1.1.3",
408 | "normalize-package-data": "^2.3.4",
409 | "object-assign": "^4.0.1",
410 | "read-pkg-up": "^1.0.1",
411 | "redent": "^1.0.0",
412 | "trim-newlines": "^1.0.0"
413 | }
414 | },
415 | "minimist": {
416 | "version": "1.2.0",
417 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
418 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
419 | "dev": true
420 | },
421 | "redent": {
422 | "version": "1.0.0",
423 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
424 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
425 | "dev": true,
426 | "requires": {
427 | "indent-string": "^2.1.0",
428 | "strip-indent": "^1.0.1"
429 | }
430 | },
431 | "strip-indent": {
432 | "version": "1.0.1",
433 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
434 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
435 | "dev": true,
436 | "requires": {
437 | "get-stdin": "^4.0.1"
438 | }
439 | },
440 | "trim-newlines": {
441 | "version": "1.0.0",
442 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
443 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
444 | "dev": true
445 | }
446 | }
447 | },
448 | "core-util-is": {
449 | "version": "1.0.2",
450 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
451 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
452 | "dev": true
453 | },
454 | "cross-spawn": {
455 | "version": "5.1.0",
456 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
457 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
458 | "dev": true,
459 | "requires": {
460 | "lru-cache": "^4.0.1",
461 | "shebang-command": "^1.2.0",
462 | "which": "^1.2.9"
463 | }
464 | },
465 | "currently-unhandled": {
466 | "version": "0.4.1",
467 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
468 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
469 | "dev": true,
470 | "requires": {
471 | "array-find-index": "^1.0.1"
472 | }
473 | },
474 | "dargs": {
475 | "version": "4.1.0",
476 | "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
477 | "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
478 | "dev": true,
479 | "requires": {
480 | "number-is-nan": "^1.0.0"
481 | }
482 | },
483 | "dateformat": {
484 | "version": "3.0.3",
485 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
486 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
487 | "dev": true
488 | },
489 | "decamelize": {
490 | "version": "1.2.0",
491 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
492 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
493 | "dev": true
494 | },
495 | "decamelize-keys": {
496 | "version": "1.1.0",
497 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
498 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
499 | "dev": true,
500 | "requires": {
501 | "decamelize": "^1.1.0",
502 | "map-obj": "^1.0.0"
503 | },
504 | "dependencies": {
505 | "map-obj": {
506 | "version": "1.0.1",
507 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
508 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
509 | "dev": true
510 | }
511 | }
512 | },
513 | "dot-prop": {
514 | "version": "3.0.0",
515 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
516 | "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
517 | "dev": true,
518 | "requires": {
519 | "is-obj": "^1.0.0"
520 | }
521 | },
522 | "dotgitignore": {
523 | "version": "1.0.3",
524 | "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-1.0.3.tgz",
525 | "integrity": "sha512-eu5XjSstm0WXQsARgo6kPjkINYZlOUW+z/KtAAIBjHa5mUpMPrxJytbPIndWz6GubBuuuH5ljtVcXKnVnH5q8w==",
526 | "dev": true,
527 | "requires": {
528 | "find-up": "^2.1.0",
529 | "minimatch": "^3.0.4"
530 | }
531 | },
532 | "error-ex": {
533 | "version": "1.3.2",
534 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
535 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
536 | "dev": true,
537 | "requires": {
538 | "is-arrayish": "^0.2.1"
539 | }
540 | },
541 | "escape-string-regexp": {
542 | "version": "1.0.5",
543 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
544 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
545 | "dev": true
546 | },
547 | "execa": {
548 | "version": "0.7.0",
549 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
550 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
551 | "dev": true,
552 | "requires": {
553 | "cross-spawn": "^5.0.1",
554 | "get-stream": "^3.0.0",
555 | "is-stream": "^1.1.0",
556 | "npm-run-path": "^2.0.0",
557 | "p-finally": "^1.0.0",
558 | "signal-exit": "^3.0.0",
559 | "strip-eof": "^1.0.0"
560 | }
561 | },
562 | "figures": {
563 | "version": "1.7.0",
564 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
565 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
566 | "dev": true,
567 | "requires": {
568 | "escape-string-regexp": "^1.0.5",
569 | "object-assign": "^4.1.0"
570 | }
571 | },
572 | "find-up": {
573 | "version": "2.1.0",
574 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
575 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
576 | "dev": true,
577 | "requires": {
578 | "locate-path": "^2.0.0"
579 | }
580 | },
581 | "fs-access": {
582 | "version": "1.0.1",
583 | "resolved": "http://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
584 | "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
585 | "dev": true,
586 | "requires": {
587 | "null-check": "^1.0.0"
588 | }
589 | },
590 | "get-caller-file": {
591 | "version": "1.0.3",
592 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
593 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
594 | "dev": true
595 | },
596 | "get-pkg-repo": {
597 | "version": "1.4.0",
598 | "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
599 | "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
600 | "dev": true,
601 | "requires": {
602 | "hosted-git-info": "^2.1.4",
603 | "meow": "^3.3.0",
604 | "normalize-package-data": "^2.3.0",
605 | "parse-github-repo-url": "^1.3.0",
606 | "through2": "^2.0.0"
607 | },
608 | "dependencies": {
609 | "camelcase": {
610 | "version": "2.1.1",
611 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
612 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
613 | "dev": true
614 | },
615 | "camelcase-keys": {
616 | "version": "2.1.0",
617 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
618 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
619 | "dev": true,
620 | "requires": {
621 | "camelcase": "^2.0.0",
622 | "map-obj": "^1.0.0"
623 | }
624 | },
625 | "indent-string": {
626 | "version": "2.1.0",
627 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
628 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
629 | "dev": true,
630 | "requires": {
631 | "repeating": "^2.0.0"
632 | }
633 | },
634 | "map-obj": {
635 | "version": "1.0.1",
636 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
637 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
638 | "dev": true
639 | },
640 | "meow": {
641 | "version": "3.7.0",
642 | "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
643 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
644 | "dev": true,
645 | "requires": {
646 | "camelcase-keys": "^2.0.0",
647 | "decamelize": "^1.1.2",
648 | "loud-rejection": "^1.0.0",
649 | "map-obj": "^1.0.1",
650 | "minimist": "^1.1.3",
651 | "normalize-package-data": "^2.3.4",
652 | "object-assign": "^4.0.1",
653 | "read-pkg-up": "^1.0.1",
654 | "redent": "^1.0.0",
655 | "trim-newlines": "^1.0.0"
656 | }
657 | },
658 | "minimist": {
659 | "version": "1.2.0",
660 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
661 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
662 | "dev": true
663 | },
664 | "redent": {
665 | "version": "1.0.0",
666 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
667 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
668 | "dev": true,
669 | "requires": {
670 | "indent-string": "^2.1.0",
671 | "strip-indent": "^1.0.1"
672 | }
673 | },
674 | "strip-indent": {
675 | "version": "1.0.1",
676 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
677 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
678 | "dev": true,
679 | "requires": {
680 | "get-stdin": "^4.0.1"
681 | }
682 | },
683 | "trim-newlines": {
684 | "version": "1.0.0",
685 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
686 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
687 | "dev": true
688 | }
689 | }
690 | },
691 | "get-stdin": {
692 | "version": "4.0.1",
693 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
694 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
695 | "dev": true
696 | },
697 | "get-stream": {
698 | "version": "3.0.0",
699 | "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
700 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
701 | "dev": true
702 | },
703 | "git-raw-commits": {
704 | "version": "1.3.6",
705 | "resolved": "http://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
706 | "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
707 | "dev": true,
708 | "requires": {
709 | "dargs": "^4.0.1",
710 | "lodash.template": "^4.0.2",
711 | "meow": "^4.0.0",
712 | "split2": "^2.0.0",
713 | "through2": "^2.0.0"
714 | }
715 | },
716 | "git-remote-origin-url": {
717 | "version": "2.0.0",
718 | "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
719 | "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
720 | "dev": true,
721 | "requires": {
722 | "gitconfiglocal": "^1.0.0",
723 | "pify": "^2.3.0"
724 | },
725 | "dependencies": {
726 | "pify": {
727 | "version": "2.3.0",
728 | "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
729 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
730 | "dev": true
731 | }
732 | }
733 | },
734 | "git-semver-tags": {
735 | "version": "1.3.6",
736 | "resolved": "http://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz",
737 | "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==",
738 | "dev": true,
739 | "requires": {
740 | "meow": "^4.0.0",
741 | "semver": "^5.5.0"
742 | }
743 | },
744 | "gitconfiglocal": {
745 | "version": "1.0.0",
746 | "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
747 | "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
748 | "dev": true,
749 | "requires": {
750 | "ini": "^1.3.2"
751 | }
752 | },
753 | "graceful-fs": {
754 | "version": "4.1.15",
755 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
756 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
757 | "dev": true
758 | },
759 | "handlebars": {
760 | "version": "4.0.12",
761 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
762 | "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
763 | "dev": true,
764 | "requires": {
765 | "async": "^2.5.0",
766 | "optimist": "^0.6.1",
767 | "source-map": "^0.6.1",
768 | "uglify-js": "^3.1.4"
769 | }
770 | },
771 | "has-ansi": {
772 | "version": "2.0.0",
773 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
774 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
775 | "dev": true,
776 | "requires": {
777 | "ansi-regex": "^2.0.0"
778 | }
779 | },
780 | "hosted-git-info": {
781 | "version": "2.7.1",
782 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
783 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
784 | "dev": true
785 | },
786 | "indent-string": {
787 | "version": "3.2.0",
788 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
789 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
790 | "dev": true
791 | },
792 | "inherits": {
793 | "version": "2.0.3",
794 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
795 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
796 | "dev": true
797 | },
798 | "ini": {
799 | "version": "1.3.5",
800 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
801 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
802 | "dev": true
803 | },
804 | "invert-kv": {
805 | "version": "1.0.0",
806 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
807 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
808 | "dev": true
809 | },
810 | "is-arrayish": {
811 | "version": "0.2.1",
812 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
813 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
814 | "dev": true
815 | },
816 | "is-builtin-module": {
817 | "version": "1.0.0",
818 | "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
819 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
820 | "dev": true,
821 | "requires": {
822 | "builtin-modules": "^1.0.0"
823 | }
824 | },
825 | "is-finite": {
826 | "version": "1.0.2",
827 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
828 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
829 | "dev": true,
830 | "requires": {
831 | "number-is-nan": "^1.0.0"
832 | }
833 | },
834 | "is-fullwidth-code-point": {
835 | "version": "1.0.0",
836 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
837 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
838 | "dev": true,
839 | "requires": {
840 | "number-is-nan": "^1.0.0"
841 | }
842 | },
843 | "is-obj": {
844 | "version": "1.0.1",
845 | "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
846 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
847 | "dev": true
848 | },
849 | "is-plain-obj": {
850 | "version": "1.1.0",
851 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
852 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
853 | "dev": true
854 | },
855 | "is-stream": {
856 | "version": "1.1.0",
857 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
858 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
859 | "dev": true
860 | },
861 | "is-subset": {
862 | "version": "0.1.1",
863 | "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
864 | "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
865 | "dev": true
866 | },
867 | "is-text-path": {
868 | "version": "1.0.1",
869 | "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
870 | "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
871 | "dev": true,
872 | "requires": {
873 | "text-extensions": "^1.0.0"
874 | }
875 | },
876 | "is-utf8": {
877 | "version": "0.2.1",
878 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
879 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
880 | "dev": true
881 | },
882 | "isarray": {
883 | "version": "1.0.0",
884 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
885 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
886 | "dev": true
887 | },
888 | "isexe": {
889 | "version": "2.0.0",
890 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
891 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
892 | "dev": true
893 | },
894 | "json-parse-better-errors": {
895 | "version": "1.0.2",
896 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
897 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
898 | "dev": true
899 | },
900 | "json-stringify-safe": {
901 | "version": "5.0.1",
902 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
903 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
904 | "dev": true
905 | },
906 | "jsonparse": {
907 | "version": "1.3.1",
908 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
909 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
910 | "dev": true
911 | },
912 | "lcid": {
913 | "version": "1.0.0",
914 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
915 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
916 | "dev": true,
917 | "requires": {
918 | "invert-kv": "^1.0.0"
919 | }
920 | },
921 | "load-json-file": {
922 | "version": "4.0.0",
923 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
924 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
925 | "dev": true,
926 | "requires": {
927 | "graceful-fs": "^4.1.2",
928 | "parse-json": "^4.0.0",
929 | "pify": "^3.0.0",
930 | "strip-bom": "^3.0.0"
931 | }
932 | },
933 | "locate-path": {
934 | "version": "2.0.0",
935 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
936 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
937 | "dev": true,
938 | "requires": {
939 | "p-locate": "^2.0.0",
940 | "path-exists": "^3.0.0"
941 | }
942 | },
943 | "lodash": {
944 | "version": "4.17.11",
945 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
946 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
947 | "dev": true
948 | },
949 | "lodash._reinterpolate": {
950 | "version": "3.0.0",
951 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
952 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
953 | "dev": true
954 | },
955 | "lodash.template": {
956 | "version": "4.4.0",
957 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
958 | "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
959 | "dev": true,
960 | "requires": {
961 | "lodash._reinterpolate": "~3.0.0",
962 | "lodash.templatesettings": "^4.0.0"
963 | }
964 | },
965 | "lodash.templatesettings": {
966 | "version": "4.1.0",
967 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
968 | "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
969 | "dev": true,
970 | "requires": {
971 | "lodash._reinterpolate": "~3.0.0"
972 | }
973 | },
974 | "loud-rejection": {
975 | "version": "1.6.0",
976 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
977 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
978 | "dev": true,
979 | "requires": {
980 | "currently-unhandled": "^0.4.1",
981 | "signal-exit": "^3.0.0"
982 | }
983 | },
984 | "lru-cache": {
985 | "version": "4.1.5",
986 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
987 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
988 | "dev": true,
989 | "requires": {
990 | "pseudomap": "^1.0.2",
991 | "yallist": "^2.1.2"
992 | }
993 | },
994 | "map-obj": {
995 | "version": "2.0.0",
996 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
997 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
998 | "dev": true
999 | },
1000 | "mem": {
1001 | "version": "1.1.0",
1002 | "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
1003 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
1004 | "dev": true,
1005 | "requires": {
1006 | "mimic-fn": "^1.0.0"
1007 | }
1008 | },
1009 | "meow": {
1010 | "version": "4.0.1",
1011 | "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
1012 | "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
1013 | "dev": true,
1014 | "requires": {
1015 | "camelcase-keys": "^4.0.0",
1016 | "decamelize-keys": "^1.0.0",
1017 | "loud-rejection": "^1.0.0",
1018 | "minimist": "^1.1.3",
1019 | "minimist-options": "^3.0.1",
1020 | "normalize-package-data": "^2.3.4",
1021 | "read-pkg-up": "^3.0.0",
1022 | "redent": "^2.0.0",
1023 | "trim-newlines": "^2.0.0"
1024 | },
1025 | "dependencies": {
1026 | "minimist": {
1027 | "version": "1.2.0",
1028 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1029 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1030 | "dev": true
1031 | },
1032 | "read-pkg": {
1033 | "version": "3.0.0",
1034 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
1035 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
1036 | "dev": true,
1037 | "requires": {
1038 | "load-json-file": "^4.0.0",
1039 | "normalize-package-data": "^2.3.2",
1040 | "path-type": "^3.0.0"
1041 | }
1042 | },
1043 | "read-pkg-up": {
1044 | "version": "3.0.0",
1045 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
1046 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
1047 | "dev": true,
1048 | "requires": {
1049 | "find-up": "^2.0.0",
1050 | "read-pkg": "^3.0.0"
1051 | }
1052 | }
1053 | }
1054 | },
1055 | "mimic-fn": {
1056 | "version": "1.2.0",
1057 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
1058 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
1059 | "dev": true
1060 | },
1061 | "minimatch": {
1062 | "version": "3.0.4",
1063 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1064 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1065 | "dev": true,
1066 | "requires": {
1067 | "brace-expansion": "^1.1.7"
1068 | }
1069 | },
1070 | "minimist": {
1071 | "version": "0.0.10",
1072 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
1073 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
1074 | "dev": true
1075 | },
1076 | "minimist-options": {
1077 | "version": "3.0.2",
1078 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
1079 | "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
1080 | "dev": true,
1081 | "requires": {
1082 | "arrify": "^1.0.1",
1083 | "is-plain-obj": "^1.1.0"
1084 | }
1085 | },
1086 | "modify-values": {
1087 | "version": "1.0.1",
1088 | "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
1089 | "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
1090 | "dev": true
1091 | },
1092 | "normalize-package-data": {
1093 | "version": "2.4.0",
1094 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
1095 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
1096 | "dev": true,
1097 | "requires": {
1098 | "hosted-git-info": "^2.1.4",
1099 | "is-builtin-module": "^1.0.0",
1100 | "semver": "2 || 3 || 4 || 5",
1101 | "validate-npm-package-license": "^3.0.1"
1102 | }
1103 | },
1104 | "npm-run-path": {
1105 | "version": "2.0.2",
1106 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
1107 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
1108 | "dev": true,
1109 | "requires": {
1110 | "path-key": "^2.0.0"
1111 | }
1112 | },
1113 | "null-check": {
1114 | "version": "1.0.0",
1115 | "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
1116 | "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
1117 | "dev": true
1118 | },
1119 | "number-is-nan": {
1120 | "version": "1.0.1",
1121 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1122 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
1123 | "dev": true
1124 | },
1125 | "object-assign": {
1126 | "version": "4.1.1",
1127 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1128 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1129 | "dev": true
1130 | },
1131 | "optimist": {
1132 | "version": "0.6.1",
1133 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
1134 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
1135 | "dev": true,
1136 | "requires": {
1137 | "minimist": "~0.0.1",
1138 | "wordwrap": "~0.0.2"
1139 | }
1140 | },
1141 | "os-locale": {
1142 | "version": "2.1.0",
1143 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
1144 | "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
1145 | "dev": true,
1146 | "requires": {
1147 | "execa": "^0.7.0",
1148 | "lcid": "^1.0.0",
1149 | "mem": "^1.1.0"
1150 | }
1151 | },
1152 | "p-finally": {
1153 | "version": "1.0.0",
1154 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
1155 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
1156 | "dev": true
1157 | },
1158 | "p-limit": {
1159 | "version": "1.3.0",
1160 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
1161 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
1162 | "dev": true,
1163 | "requires": {
1164 | "p-try": "^1.0.0"
1165 | }
1166 | },
1167 | "p-locate": {
1168 | "version": "2.0.0",
1169 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
1170 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
1171 | "dev": true,
1172 | "requires": {
1173 | "p-limit": "^1.1.0"
1174 | }
1175 | },
1176 | "p-try": {
1177 | "version": "1.0.0",
1178 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
1179 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
1180 | "dev": true
1181 | },
1182 | "parse-github-repo-url": {
1183 | "version": "1.4.1",
1184 | "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
1185 | "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
1186 | "dev": true
1187 | },
1188 | "parse-json": {
1189 | "version": "4.0.0",
1190 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
1191 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
1192 | "dev": true,
1193 | "requires": {
1194 | "error-ex": "^1.3.1",
1195 | "json-parse-better-errors": "^1.0.1"
1196 | }
1197 | },
1198 | "path-exists": {
1199 | "version": "3.0.0",
1200 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1201 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
1202 | "dev": true
1203 | },
1204 | "path-key": {
1205 | "version": "2.0.1",
1206 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1207 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
1208 | "dev": true
1209 | },
1210 | "path-type": {
1211 | "version": "3.0.0",
1212 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
1213 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
1214 | "dev": true,
1215 | "requires": {
1216 | "pify": "^3.0.0"
1217 | }
1218 | },
1219 | "pify": {
1220 | "version": "3.0.0",
1221 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
1222 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1223 | "dev": true
1224 | },
1225 | "pinkie": {
1226 | "version": "2.0.4",
1227 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
1228 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
1229 | "dev": true
1230 | },
1231 | "pinkie-promise": {
1232 | "version": "2.0.1",
1233 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
1234 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
1235 | "dev": true,
1236 | "requires": {
1237 | "pinkie": "^2.0.0"
1238 | }
1239 | },
1240 | "process-nextick-args": {
1241 | "version": "2.0.0",
1242 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1243 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
1244 | "dev": true
1245 | },
1246 | "pseudomap": {
1247 | "version": "1.0.2",
1248 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
1249 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
1250 | "dev": true
1251 | },
1252 | "q": {
1253 | "version": "1.5.1",
1254 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
1255 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
1256 | "dev": true
1257 | },
1258 | "quick-lru": {
1259 | "version": "1.1.0",
1260 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
1261 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
1262 | "dev": true
1263 | },
1264 | "read-pkg": {
1265 | "version": "1.1.0",
1266 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
1267 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
1268 | "dev": true,
1269 | "requires": {
1270 | "load-json-file": "^1.0.0",
1271 | "normalize-package-data": "^2.3.2",
1272 | "path-type": "^1.0.0"
1273 | },
1274 | "dependencies": {
1275 | "load-json-file": {
1276 | "version": "1.1.0",
1277 | "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
1278 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
1279 | "dev": true,
1280 | "requires": {
1281 | "graceful-fs": "^4.1.2",
1282 | "parse-json": "^2.2.0",
1283 | "pify": "^2.0.0",
1284 | "pinkie-promise": "^2.0.0",
1285 | "strip-bom": "^2.0.0"
1286 | }
1287 | },
1288 | "parse-json": {
1289 | "version": "2.2.0",
1290 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
1291 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
1292 | "dev": true,
1293 | "requires": {
1294 | "error-ex": "^1.2.0"
1295 | }
1296 | },
1297 | "path-type": {
1298 | "version": "1.1.0",
1299 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
1300 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
1301 | "dev": true,
1302 | "requires": {
1303 | "graceful-fs": "^4.1.2",
1304 | "pify": "^2.0.0",
1305 | "pinkie-promise": "^2.0.0"
1306 | }
1307 | },
1308 | "pify": {
1309 | "version": "2.3.0",
1310 | "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1311 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
1312 | "dev": true
1313 | },
1314 | "strip-bom": {
1315 | "version": "2.0.0",
1316 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
1317 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
1318 | "dev": true,
1319 | "requires": {
1320 | "is-utf8": "^0.2.0"
1321 | }
1322 | }
1323 | }
1324 | },
1325 | "read-pkg-up": {
1326 | "version": "1.0.1",
1327 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
1328 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
1329 | "dev": true,
1330 | "requires": {
1331 | "find-up": "^1.0.0",
1332 | "read-pkg": "^1.0.0"
1333 | },
1334 | "dependencies": {
1335 | "find-up": {
1336 | "version": "1.1.2",
1337 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
1338 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
1339 | "dev": true,
1340 | "requires": {
1341 | "path-exists": "^2.0.0",
1342 | "pinkie-promise": "^2.0.0"
1343 | }
1344 | },
1345 | "path-exists": {
1346 | "version": "2.1.0",
1347 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
1348 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
1349 | "dev": true,
1350 | "requires": {
1351 | "pinkie-promise": "^2.0.0"
1352 | }
1353 | }
1354 | }
1355 | },
1356 | "readable-stream": {
1357 | "version": "2.3.6",
1358 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1359 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
1360 | "dev": true,
1361 | "requires": {
1362 | "core-util-is": "~1.0.0",
1363 | "inherits": "~2.0.3",
1364 | "isarray": "~1.0.0",
1365 | "process-nextick-args": "~2.0.0",
1366 | "safe-buffer": "~5.1.1",
1367 | "string_decoder": "~1.1.1",
1368 | "util-deprecate": "~1.0.1"
1369 | }
1370 | },
1371 | "redent": {
1372 | "version": "2.0.0",
1373 | "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
1374 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
1375 | "dev": true,
1376 | "requires": {
1377 | "indent-string": "^3.0.0",
1378 | "strip-indent": "^2.0.0"
1379 | }
1380 | },
1381 | "repeating": {
1382 | "version": "2.0.1",
1383 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
1384 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
1385 | "dev": true,
1386 | "requires": {
1387 | "is-finite": "^1.0.0"
1388 | }
1389 | },
1390 | "require-directory": {
1391 | "version": "2.1.1",
1392 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1393 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
1394 | "dev": true
1395 | },
1396 | "require-main-filename": {
1397 | "version": "1.0.1",
1398 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
1399 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
1400 | "dev": true
1401 | },
1402 | "safe-buffer": {
1403 | "version": "5.1.2",
1404 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1405 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1406 | "dev": true
1407 | },
1408 | "semver": {
1409 | "version": "5.6.0",
1410 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
1411 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
1412 | "dev": true
1413 | },
1414 | "set-blocking": {
1415 | "version": "2.0.0",
1416 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1417 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
1418 | "dev": true
1419 | },
1420 | "shebang-command": {
1421 | "version": "1.2.0",
1422 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1423 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1424 | "dev": true,
1425 | "requires": {
1426 | "shebang-regex": "^1.0.0"
1427 | }
1428 | },
1429 | "shebang-regex": {
1430 | "version": "1.0.0",
1431 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1432 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1433 | "dev": true
1434 | },
1435 | "signal-exit": {
1436 | "version": "3.0.2",
1437 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1438 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1439 | "dev": true
1440 | },
1441 | "source-map": {
1442 | "version": "0.6.1",
1443 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1444 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1445 | "dev": true
1446 | },
1447 | "spdx-correct": {
1448 | "version": "3.1.0",
1449 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
1450 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
1451 | "dev": true,
1452 | "requires": {
1453 | "spdx-expression-parse": "^3.0.0",
1454 | "spdx-license-ids": "^3.0.0"
1455 | }
1456 | },
1457 | "spdx-exceptions": {
1458 | "version": "2.2.0",
1459 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
1460 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
1461 | "dev": true
1462 | },
1463 | "spdx-expression-parse": {
1464 | "version": "3.0.0",
1465 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
1466 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
1467 | "dev": true,
1468 | "requires": {
1469 | "spdx-exceptions": "^2.1.0",
1470 | "spdx-license-ids": "^3.0.0"
1471 | }
1472 | },
1473 | "spdx-license-ids": {
1474 | "version": "3.0.3",
1475 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
1476 | "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==",
1477 | "dev": true
1478 | },
1479 | "split": {
1480 | "version": "1.0.1",
1481 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
1482 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
1483 | "dev": true,
1484 | "requires": {
1485 | "through": "2"
1486 | }
1487 | },
1488 | "split2": {
1489 | "version": "2.2.0",
1490 | "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
1491 | "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
1492 | "dev": true,
1493 | "requires": {
1494 | "through2": "^2.0.2"
1495 | }
1496 | },
1497 | "standard-version": {
1498 | "version": "4.4.0",
1499 | "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-4.4.0.tgz",
1500 | "integrity": "sha512-jJ8FZhnmh9xJRQLnaXiGRLaAUNItIH29lOQZGpL5fd4+jUHto9Ij6SPCYN86h6ZNNXkYq2TYiIVVF7gVyC+pcQ==",
1501 | "dev": true,
1502 | "requires": {
1503 | "chalk": "^1.1.3",
1504 | "conventional-changelog": "^1.1.0",
1505 | "conventional-recommended-bump": "^1.0.0",
1506 | "dotgitignore": "^1.0.3",
1507 | "figures": "^1.5.0",
1508 | "fs-access": "^1.0.0",
1509 | "semver": "^5.1.0",
1510 | "yargs": "^8.0.1"
1511 | }
1512 | },
1513 | "string-width": {
1514 | "version": "2.1.1",
1515 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1516 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1517 | "dev": true,
1518 | "requires": {
1519 | "is-fullwidth-code-point": "^2.0.0",
1520 | "strip-ansi": "^4.0.0"
1521 | },
1522 | "dependencies": {
1523 | "ansi-regex": {
1524 | "version": "3.0.0",
1525 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1526 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
1527 | "dev": true
1528 | },
1529 | "is-fullwidth-code-point": {
1530 | "version": "2.0.0",
1531 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1532 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1533 | "dev": true
1534 | },
1535 | "strip-ansi": {
1536 | "version": "4.0.0",
1537 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1538 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1539 | "dev": true,
1540 | "requires": {
1541 | "ansi-regex": "^3.0.0"
1542 | }
1543 | }
1544 | }
1545 | },
1546 | "string_decoder": {
1547 | "version": "1.1.1",
1548 | "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1549 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1550 | "dev": true,
1551 | "requires": {
1552 | "safe-buffer": "~5.1.0"
1553 | }
1554 | },
1555 | "strip-ansi": {
1556 | "version": "3.0.1",
1557 | "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1558 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1559 | "dev": true,
1560 | "requires": {
1561 | "ansi-regex": "^2.0.0"
1562 | }
1563 | },
1564 | "strip-bom": {
1565 | "version": "3.0.0",
1566 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
1567 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
1568 | "dev": true
1569 | },
1570 | "strip-eof": {
1571 | "version": "1.0.0",
1572 | "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
1573 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
1574 | "dev": true
1575 | },
1576 | "strip-indent": {
1577 | "version": "2.0.0",
1578 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
1579 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
1580 | "dev": true
1581 | },
1582 | "supports-color": {
1583 | "version": "2.0.0",
1584 | "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1585 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1586 | "dev": true
1587 | },
1588 | "text-extensions": {
1589 | "version": "1.9.0",
1590 | "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
1591 | "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
1592 | "dev": true
1593 | },
1594 | "through": {
1595 | "version": "2.3.8",
1596 | "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
1597 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1598 | "dev": true
1599 | },
1600 | "through2": {
1601 | "version": "2.0.5",
1602 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
1603 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
1604 | "dev": true,
1605 | "requires": {
1606 | "readable-stream": "~2.3.6",
1607 | "xtend": "~4.0.1"
1608 | }
1609 | },
1610 | "trim-newlines": {
1611 | "version": "2.0.0",
1612 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
1613 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
1614 | "dev": true
1615 | },
1616 | "trim-off-newlines": {
1617 | "version": "1.0.1",
1618 | "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
1619 | "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
1620 | "dev": true
1621 | },
1622 | "typedarray": {
1623 | "version": "0.0.6",
1624 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1625 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
1626 | "dev": true
1627 | },
1628 | "uglify-js": {
1629 | "version": "3.4.9",
1630 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
1631 | "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
1632 | "dev": true,
1633 | "optional": true,
1634 | "requires": {
1635 | "commander": "~2.17.1",
1636 | "source-map": "~0.6.1"
1637 | }
1638 | },
1639 | "util-deprecate": {
1640 | "version": "1.0.2",
1641 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1642 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1643 | "dev": true
1644 | },
1645 | "validate-npm-package-license": {
1646 | "version": "3.0.4",
1647 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
1648 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
1649 | "dev": true,
1650 | "requires": {
1651 | "spdx-correct": "^3.0.0",
1652 | "spdx-expression-parse": "^3.0.0"
1653 | }
1654 | },
1655 | "which": {
1656 | "version": "1.3.1",
1657 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1658 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1659 | "dev": true,
1660 | "requires": {
1661 | "isexe": "^2.0.0"
1662 | }
1663 | },
1664 | "which-module": {
1665 | "version": "2.0.0",
1666 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
1667 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
1668 | "dev": true
1669 | },
1670 | "wordwrap": {
1671 | "version": "0.0.3",
1672 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
1673 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
1674 | "dev": true
1675 | },
1676 | "wrap-ansi": {
1677 | "version": "2.1.0",
1678 | "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
1679 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
1680 | "dev": true,
1681 | "requires": {
1682 | "string-width": "^1.0.1",
1683 | "strip-ansi": "^3.0.1"
1684 | },
1685 | "dependencies": {
1686 | "string-width": {
1687 | "version": "1.0.2",
1688 | "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
1689 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
1690 | "dev": true,
1691 | "requires": {
1692 | "code-point-at": "^1.0.0",
1693 | "is-fullwidth-code-point": "^1.0.0",
1694 | "strip-ansi": "^3.0.0"
1695 | }
1696 | }
1697 | }
1698 | },
1699 | "xtend": {
1700 | "version": "4.0.1",
1701 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
1702 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
1703 | "dev": true
1704 | },
1705 | "y18n": {
1706 | "version": "3.2.1",
1707 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
1708 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
1709 | "dev": true
1710 | },
1711 | "yallist": {
1712 | "version": "2.1.2",
1713 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1714 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
1715 | "dev": true
1716 | },
1717 | "yargs": {
1718 | "version": "8.0.2",
1719 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
1720 | "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
1721 | "dev": true,
1722 | "requires": {
1723 | "camelcase": "^4.1.0",
1724 | "cliui": "^3.2.0",
1725 | "decamelize": "^1.1.1",
1726 | "get-caller-file": "^1.0.1",
1727 | "os-locale": "^2.0.0",
1728 | "read-pkg-up": "^2.0.0",
1729 | "require-directory": "^2.1.1",
1730 | "require-main-filename": "^1.0.1",
1731 | "set-blocking": "^2.0.0",
1732 | "string-width": "^2.0.0",
1733 | "which-module": "^2.0.0",
1734 | "y18n": "^3.2.1",
1735 | "yargs-parser": "^7.0.0"
1736 | },
1737 | "dependencies": {
1738 | "load-json-file": {
1739 | "version": "2.0.0",
1740 | "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
1741 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
1742 | "dev": true,
1743 | "requires": {
1744 | "graceful-fs": "^4.1.2",
1745 | "parse-json": "^2.2.0",
1746 | "pify": "^2.0.0",
1747 | "strip-bom": "^3.0.0"
1748 | }
1749 | },
1750 | "parse-json": {
1751 | "version": "2.2.0",
1752 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
1753 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
1754 | "dev": true,
1755 | "requires": {
1756 | "error-ex": "^1.2.0"
1757 | }
1758 | },
1759 | "path-type": {
1760 | "version": "2.0.0",
1761 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
1762 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
1763 | "dev": true,
1764 | "requires": {
1765 | "pify": "^2.0.0"
1766 | }
1767 | },
1768 | "pify": {
1769 | "version": "2.3.0",
1770 | "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1771 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
1772 | "dev": true
1773 | },
1774 | "read-pkg": {
1775 | "version": "2.0.0",
1776 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
1777 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
1778 | "dev": true,
1779 | "requires": {
1780 | "load-json-file": "^2.0.0",
1781 | "normalize-package-data": "^2.3.2",
1782 | "path-type": "^2.0.0"
1783 | }
1784 | },
1785 | "read-pkg-up": {
1786 | "version": "2.0.0",
1787 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
1788 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
1789 | "dev": true,
1790 | "requires": {
1791 | "find-up": "^2.0.0",
1792 | "read-pkg": "^2.0.0"
1793 | }
1794 | }
1795 | }
1796 | },
1797 | "yargs-parser": {
1798 | "version": "7.0.0",
1799 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
1800 | "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
1801 | "dev": true,
1802 | "requires": {
1803 | "camelcase": "^4.1.0"
1804 | }
1805 | }
1806 | }
1807 | }
1808 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-cloudflare-worker",
3 | "version": "1.2.1",
4 | "description": "Create a Cloudflare worker",
5 | "repository": {
6 | "type": "git",
7 | "url": "git+https://github.com/gja/create-cloudflare-worker.git"
8 | },
9 | "keywords": [
10 | "cloudflare",
11 | "worker"
12 | ],
13 | "author": "Tejas Dinkar ",
14 | "license": "ISC",
15 | "bugs": {
16 | "url": "https://github.com/gja/create-cloudflare-worker/issues"
17 | },
18 | "bin": "./bin/create-cloudflare-worker",
19 | "homepage": "https://github.com/gja/create-cloudflare-worker#readme",
20 | "devDependencies": {
21 | "standard-version": "^4.4.0"
22 | },
23 | "scripts": {
24 | "prepublishOnly": "npm install && git diff --quiet && npx standard-version && git push --follow-tags origin"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/template/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": ["transform-es2015-modules-commonjs"]
3 | }
4 |
--------------------------------------------------------------------------------
/template/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "standard",
4 | "plugin:jest/recommended",
5 | "plugin:prettier/recommended",
6 | "prettier/standard"
7 | ],
8 | "plugins": [
9 | "standard",
10 | "jest"
11 | ],
12 | "parser": "babel-eslint",
13 | "rules": {
14 | "max-len": ["warn", { "code": 120 }]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/template/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 |
63 | # output of webpack
64 | /dist
65 |
--------------------------------------------------------------------------------
/template/.prettierrc:
--------------------------------------------------------------------------------
1 | printWidth: 120
2 |
--------------------------------------------------------------------------------
/template/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "cloudflare-worker",
4 | "version": "1.0.0",
5 | "description": "A Cloudflare Worker",
6 | "scripts": {
7 | "build": "webpack --mode production",
8 | "deploy": "npm run build && curl \"https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/workers/scripts/$CF_WORKER_NAME\" -X PUT -H \"X-Auth-Email: $CF_EMAIL\" -H \"X-Auth-Key: $CF_AUTH_KEY\" -F 'script=@-;type=application/javascript' -F \"metadata={\\\"body_part\\\": \\\"script\\\", \\\"bindings\\\": []};type=application/json\" < dist/main.js",
9 | "start": "npm run build && npx nodemon --watch dist/main.js --exec \"cloudflare-worker-local dist/main.js localhost:3000 4000\" --signal SIGHUP",
10 | "test": "jest",
11 | "watch": "webpack --mode production --watch"
12 | },
13 | "devDependencies": {
14 | "babel-eslint": "^10.0.1",
15 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
16 | "cloudflare-worker-local": "^1.9.0",
17 | "eslint": "^5.11.1",
18 | "eslint-config-prettier": "^3.3.0",
19 | "eslint-config-standard": "^12.0.0",
20 | "eslint-plugin-import": "^2.14.0",
21 | "eslint-plugin-jest": "^22.1.2",
22 | "eslint-plugin-node": "^8.0.0",
23 | "eslint-plugin-prettier": "^3.0.1",
24 | "eslint-plugin-promise": "^4.0.1",
25 | "eslint-plugin-standard": "^4.0.0",
26 | "express": "^4.16.4",
27 | "husky": "^1.3.1",
28 | "jest": "^23.6.0",
29 | "lint-staged": "^8.1.0",
30 | "nodemon": "^1.18.9",
31 | "prettier": "^1.15.3",
32 | "supertest": "^3.3.0",
33 | "webpack": "^4.28.3",
34 | "webpack-cli": "^3.1.2"
35 | },
36 | "husky": {
37 | "hooks": {
38 | "pre-commit": "lint-staged"
39 | }
40 | },
41 | "lint-staged": {
42 | "*.{js,jsx}": [
43 | "npx eslint --fix",
44 | "git add"
45 | ]
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/template/src/__tests__/worker.integration_spec.js:
--------------------------------------------------------------------------------
1 | import { createTestApp } from "cloudflare-worker-local";
2 | import supertest from "supertest";
3 | import express from "express";
4 | import fs from "fs";
5 |
6 | const workerContent = fs.readFileSync(`${__dirname}/../../dist/main.js`);
7 |
8 | describe("My New Worker", () => {
9 | it("Adds a header on 200 responses", async () => {
10 | const upstreamApp = express();
11 | upstreamApp.get("/route", (req, res) => res.end("Success"));
12 | await supertest(createTestApp(workerContent, upstreamApp))
13 | .get("/route")
14 | .expect("Foo", "Bar")
15 | .expect(200, "Success");
16 | });
17 |
18 | it("Adds a different header on 404", async () => {
19 | // all routes are 404
20 | const upstreamApp = express();
21 |
22 | await supertest(createTestApp(workerContent, upstreamApp))
23 | .get("/route")
24 | .expect("Foo", "Not Bar")
25 | .expect(404);
26 | });
27 | });
28 |
--------------------------------------------------------------------------------
/template/src/index.js:
--------------------------------------------------------------------------------
1 | // Add any more global vars (like Request, Response) to the below list as they are used
2 | /* global addEventListener fetch Headers Response */
3 |
4 | addEventListener("fetch", e => {
5 | e.respondWith(fetchAndAddHeader(e.request));
6 | });
7 |
8 | async function fetchAndAddHeader(request) {
9 | const response = await fetch(request);
10 |
11 | const headers = new Headers(response.headers);
12 |
13 | if (response.status === 200) {
14 | headers.set("Foo", "Bar");
15 | } else {
16 | headers.set("Foo", "Not Bar");
17 | }
18 |
19 | return new Response(response.body, {
20 | headers: headers,
21 | status: response.status,
22 | statusText: response.statusText
23 | });
24 | }
25 |
--------------------------------------------------------------------------------
/template/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | target: "webworker"
3 | };
4 |
--------------------------------------------------------------------------------