From dc3b71a4ab61e34450a07012eb68fd7f94ae6b12 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 24 May 2018 13:40:46 +0300 Subject: [PATCH 01/92] Update README.md Notes about compatibility with hapi v17.x.x --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b855a2..e24c2af 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Autoloads hapi routes. ## Installation +**Actually hapi-auto-routes doesn't support hapi v17.x.x**. The next release [dev-2.0.0](https://github.com/sitrakary/hapi-auto-route/tree/dev-2.0.0) will be compatible with hapi v17.x.x. + Just type `yarn add hapi-auto-route` or `npm i -S hapi-auto-route`. ## Code Example @@ -62,4 +64,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.txt) file for details. \ No newline at end of file +This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.txt) file for details. From c5ca80904396cf2eb29e035b55a966215f916768 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 May 2018 22:32:59 +0300 Subject: [PATCH 02/92] Updates README --- README.md | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5716b68..a51ab1d 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,6 @@ hapi-auto-route is a hapi plugin that lets you load route objects automatically ## Installation -<<<<<<< HEAD -**Actually hapi-auto-routes doesn't support hapi v17.x.x**. The next release [dev-2.0.0](https://github.com/sitrakary/hapi-auto-route/tree/dev-2.0.0) will be compatible with hapi v17.x.x. - -Just type `yarn add hapi-auto-route` or `npm i -S hapi-auto-route`. -======= For Hapi `v17.x.x`: ```bash @@ -27,7 +22,6 @@ For Hapi `v16.x.x`: npm i -S hapi-auto-route@1.1.0 ``` ->>>>>>> dev-2.0.0 ## Code Example @@ -82,9 +76,9 @@ Now, you can start the server and see `Hello` at `http://localhost:3000`. ## API -- `routes_dir`: directory where routes are located. `routes_dir` should be relative to `process.cwd()`. Defaults to `'routes'`. +- `routes_dir`: directory where routes are located. `routes_dir` must be relatives from `process.cwd()`. Defaults to `'routes'`. - `pattern`: glob pattern used to find route files. Defaults to `**/!(_)*.js`. -- `use_prefix`: Use directory tree as prefix. Defaults to `true`. +- `use_prefix`: Use directory tree as prefix. Defaults to `false`. ## Contributing @@ -92,8 +86,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -<<<<<<< HEAD -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.txt) file for details. -======= This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. ->>>>>>> dev-2.0.0 From 805a4b858a7f8a04ca67055176727fb3e9c497a6 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 May 2018 22:32:59 +0300 Subject: [PATCH 03/92] Updates README --- README.md | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 5716b68..bf8116d 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,6 @@ hapi-auto-route is a hapi plugin that lets you load route objects automatically ## Installation -<<<<<<< HEAD -**Actually hapi-auto-routes doesn't support hapi v17.x.x**. The next release [dev-2.0.0](https://github.com/sitrakary/hapi-auto-route/tree/dev-2.0.0) will be compatible with hapi v17.x.x. - -Just type `yarn add hapi-auto-route` or `npm i -S hapi-auto-route`. -======= For Hapi `v17.x.x`: ```bash @@ -27,7 +22,6 @@ For Hapi `v16.x.x`: npm i -S hapi-auto-route@1.1.0 ``` ->>>>>>> dev-2.0.0 ## Code Example @@ -82,9 +76,9 @@ Now, you can start the server and see `Hello` at `http://localhost:3000`. ## API -- `routes_dir`: directory where routes are located. `routes_dir` should be relative to `process.cwd()`. Defaults to `'routes'`. +- `routes_dir`: directory where routes are located. `routes_dir` must be relatives from `process.cwd()`. Defaults to `'routes'`. - `pattern`: glob pattern used to find route files. Defaults to `**/!(_)*.js`. -- `use_prefix`: Use directory tree as prefix. Defaults to `true`. +- `use_prefix`: Use directory tree as prefix. Defaults to `false`. ## Contributing @@ -92,8 +86,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -<<<<<<< HEAD -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.txt) file for details. -======= -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. ->>>>>>> dev-2.0.0 +This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. From fec038b602cc510e2514d40a8343ae7a65151e79 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 May 2018 22:37:13 +0300 Subject: [PATCH 04/92] Fix readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 78bdef0..bf8116d 100644 --- a/README.md +++ b/README.md @@ -86,8 +86,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -<<<<<<< HEAD This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. -======= -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. ->>>>>>> bf8ca8593398d4851224e82c664bdeb553f53b53 From d7094a15a16fec6c2f0fc7ce592d2aba3557c382 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 May 2018 22:42:48 +0300 Subject: [PATCH 05/92] 2.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c4db06f..35b29fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "1.1.0", + "version": "2.0.0", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 9e5acb8837f89cc4df4068232b220c441d8ec440 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Sat, 26 May 2018 20:02:57 +0300 Subject: [PATCH 06/92] Fix package files --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 35b29fe..cc98aab 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "files": [ "lib/", "LICENCE.txt", + "index.js", "README.md" ], "devDependencies": { From af21f95d54b96f262a22017556a8b2b23fed5fe9 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Sat, 26 May 2018 20:03:36 +0300 Subject: [PATCH 07/92] 2.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc98aab..9a4fff9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.0", + "version": "2.0.1", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 5c42aff720d919150ccabe4fd33f237c9b3b7400 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 21:50:56 +0300 Subject: [PATCH 08/92] Reset --- index.js | 27 -------- lib/option.js | 22 ------- lib/route.js | 35 ----------- test/fixtures/routes/auth/login.js | 10 --- test/fixtures/routes/auth/logout.js | 10 --- test/fixtures/routes/index.js | 20 ------ test/fixtures/routes/pages/page1.js | 10 --- test/fixtures/routes/pages/page2.js | 10 --- test/option_test.js | 40 ------------ test/plugin_test.js | 77 ----------------------- test/route_test.js | 96 ----------------------------- 11 files changed, 357 deletions(-) delete mode 100644 index.js delete mode 100644 lib/option.js delete mode 100644 lib/route.js delete mode 100644 test/fixtures/routes/auth/login.js delete mode 100644 test/fixtures/routes/auth/logout.js delete mode 100644 test/fixtures/routes/index.js delete mode 100644 test/fixtures/routes/pages/page1.js delete mode 100644 test/fixtures/routes/pages/page2.js delete mode 100644 test/option_test.js delete mode 100644 test/plugin_test.js delete mode 100644 test/route_test.js diff --git a/index.js b/index.js deleted file mode 100644 index 2033efd..0000000 --- a/index.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -const { promisify } = require('util'); -const Route = require('./lib/route.js'); -const Option = require('./lib/option'); - -exports.plugin = { - pkg: require('./package.json'), - register: async (server, options) => { - - let routes = []; - const valideOptions = Option.validate(options); - const getAllRoute = promisify(Route.getAll); - const files = await getAllRoute(valideOptions); - files.forEach((file) => { - - routes = Route.load(valideOptions, file); - if (valideOptions.use_prefix) { - routes.forEach((route) => { - - route.path = Route.getPathPrefix(valideOptions, file) + route.path; - }); - } - server.route(routes); - }); - } -}; diff --git a/lib/option.js b/lib/option.js deleted file mode 100644 index 3474f9b..0000000 --- a/lib/option.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -const Joi = require('joi'); - -const internals = {}; - -internals.schema = Joi.object().keys({ - routes_dir: Joi.string().default('routes'), - pattern: Joi.string().default('**/!(_)*.js'), - use_prefix: Joi.boolean().default(false) -}); - -exports.validate = (options) => { - - return Joi.validate(options, internals.schema, (error, value) => { - - if (error !== null) { - throw error; - } - return value; - }); -}; diff --git a/lib/route.js b/lib/route.js deleted file mode 100644 index 2626f55..0000000 --- a/lib/route.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -const Glob = require('glob'); -const Path = require('path'); - -exports.getAll = (options, callback) => { - - const baseDir = Path.join(options.routes_dir); - const glob = Path.join(baseDir, options.pattern); - Glob(glob, callback); -}; - -exports.getPathPrefix = (options, routeFilePath) => { - - const pathPrefix = Path.dirname(Path.relative(options.routes_dir, routeFilePath)); - if (options.use_prefix) { - if (pathPrefix === '.') { - return ''; - } - return '/' + pathPrefix; - } - return ''; -}; - -exports.load = (options, routeFilePath) => { - - const routes = []; - const absolutePath = Path.resolve(process.cwd(), routeFilePath); - const routeContent = require(absolutePath); - if (Array.isArray(routeContent)) { - return routeContent; - } - routes.push(routeContent); - return routes; -}; diff --git a/test/fixtures/routes/auth/login.js b/test/fixtures/routes/auth/login.js deleted file mode 100644 index a848956..0000000 --- a/test/fixtures/routes/auth/login.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/login', - handler: (request, h) => { - - return '/login'; - } -}; diff --git a/test/fixtures/routes/auth/logout.js b/test/fixtures/routes/auth/logout.js deleted file mode 100644 index 324a727..0000000 --- a/test/fixtures/routes/auth/logout.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/logout', - handler: (request, h) => { - - return '/logout'; - } -}; diff --git a/test/fixtures/routes/index.js b/test/fixtures/routes/index.js deleted file mode 100644 index 954fdd1..0000000 --- a/test/fixtures/routes/index.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -module.exports = [ - { - method: 'GET', - path: '/', - handler: (request, h) => { - - return '/'; - } - }, - { - method: 'POST', - path: '/', - handler: (request, h) => { - - return '/'; - } - } -]; diff --git a/test/fixtures/routes/pages/page1.js b/test/fixtures/routes/pages/page1.js deleted file mode 100644 index 784dc3b..0000000 --- a/test/fixtures/routes/pages/page1.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/page1', - handler: (request, h) => { - - return '/page1'; - } -}; diff --git a/test/fixtures/routes/pages/page2.js b/test/fixtures/routes/pages/page2.js deleted file mode 100644 index a1a0ff0..0000000 --- a/test/fixtures/routes/pages/page2.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/page2', - handler: (request, h) => { - - return '/page2'; - } -}; diff --git a/test/option_test.js b/test/option_test.js deleted file mode 100644 index b6e0703..0000000 --- a/test/option_test.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -const { expect } = require('code'); -const lab = exports.lab = require('lab').script(); - -const Option = require('../lib/option.js'); - -lab.experiment('options', () => { - - lab.it('Apply default options on empty object', () => { - - const option = Option.validate({}); - expect(option.routes_dir).to.be.equal('routes'); - expect(option.pattern).to.be.equal('**/!(_)*.js'); - expect(option.use_prefix).to.be.false(); - }); - - lab.it('Apply default options on empty field.', () => { - - const option = Option.validate({ - routes_dir: 'r', - use_prefix: true - }); - expect(option.routes_dir).to.be.equal('r'); - expect(option.pattern).to.be.equal('**/!(_)*.js'); - expect(option.use_prefix).to.be.true(); - }); - - lab.it('Prevent the input of unused option key.', () => { - - const throws = () => { - - Option.validate({ - routes_dir: 'r', - d: true - }); - }; - expect(throws).to.throw(Error); - }); -}); diff --git a/test/plugin_test.js b/test/plugin_test.js deleted file mode 100644 index 6f45da3..0000000 --- a/test/plugin_test.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -const HapiAutoRoute = require('../index.js'); -const Hapi = require('hapi'); - -const { expect } = require('code'); -const lab = exports.lab = require('lab').script(); - -lab.experiment('plugin', () => { - - let server = null; - let plugin = null; - let hapiAutoRouteOptions = null; - - lab.beforeEach(() => { - - server = Hapi.Server({ port: 3000 }); - plugin = HapiAutoRoute.plugin; - hapiAutoRouteOptions = { - routes_dir: 'test/fixtures/routes', - pattern: '**/*.js', - use_prefix: true - }; - }); - - lab.afterEach(() => { - - server = null; - }); - - lab.it('pluging.pkg should set with package.json', () => { - - expect(plugin).to.not.undefined(); - expect(plugin.pkg).to.not.undefined(); - expect(plugin.pkg).include(['name', 'version', 'description']); - }); - - lab.it('Should have register function', () => { - - expect(plugin.register).to.not.undefined(); - expect(plugin.register).to.be.function(); - }); - - lab.it('Register route to the server', async () => { - - hapiAutoRouteOptions.use_prefix = false; - await server.register({ - plugin: HapiAutoRoute, - options: hapiAutoRouteOptions - }); - const result = await server.inject('/'); - expect(result.statusCode).to.be.equal(200); - }); - - lab.it('Apply default options', async () => { - - delete hapiAutoRouteOptions.use_prefix; - delete hapiAutoRouteOptions.pattern; - await server.register({ - plugin: HapiAutoRoute, - options: hapiAutoRouteOptions - }); - const result = await server.inject('/'); - expect(result.statusCode).to.be.equal(200); - }); - - - lab.it('Change route path if use_prefix is true', async () => { - - await server.register({ - plugin: HapiAutoRoute, - options: hapiAutoRouteOptions - }); - const result = await server.inject('/auth/login'); - expect(result.statusCode).to.be.equal(200); - }); -}); diff --git a/test/route_test.js b/test/route_test.js deleted file mode 100644 index ac770f9..0000000 --- a/test/route_test.js +++ /dev/null @@ -1,96 +0,0 @@ -'use strict'; - -const { expect } = require('code'); -const lab = exports.lab = require('lab').script(); - -const Route = require('../lib/route.js'); - -lab.experiment('route path', () => { - - lab.it('should return all route path', () => { - - const options = { - routes_dir: 'test/fixtures/routes', - pattern: '**/!(_)*.js' - }; - - Route.getAll(options, (err, files) => { - - if (err) { - throw err; - } - expect(files.length).to.be.above(1); - //console.log(files); - }); - }); -}); - -lab.experiment('getPathPrefix', () => { - - lab.it('does not add prefix if use_prefix options is false', () => { - - const options = { - routes_dir: 'test/fixtures/routes', - pattern: '**/!(_)*.js', - use_prefix: false - }; - - // These files exists in fixtures. - let routeFilePath = 'test/fixtures/routes/index.js'; - expect(Route.getPathPrefix(options, routeFilePath)).to.be.equal(''); - - routeFilePath = 'test/fixtures/routes/auth/login.js'; - expect(Route.getPathPrefix(options, routeFilePath)).to.be.equal(''); - - }); - - lab.it('add prefix if use_prefix is true', () => { - - const options = { - routes_dir: 'test/fixtures/routes', - pattern: '**/!(_)*.js', - use_prefix: true - }; - - // These files exists in fixtures. - let routeFilePath = 'test/fixtures/routes/index.js'; - expect(Route.getPathPrefix(options, routeFilePath)).to.be.equal(''); - - routeFilePath = 'test/fixtures/routes/auth/login.js'; - expect(Route.getPathPrefix(options, routeFilePath)).to.be.equal('/auth'); - - routeFilePath = 'test/fixtures/routes/auth/v2/login.js'; - expect(Route.getPathPrefix(options, routeFilePath)).to.be.equal('/auth/v2'); - - }); -}); - -lab.experiment('load', () => { - - lab.it('return or an array of route object from route file', () => { - - const routeFilePath = 'test/fixtures/routes/auth/login.js'; - const options = { - routes_dir: 'test/fixtures/routes', - pattern: '**/!(_)*.js', - use_prefix: false - }; - const routes = Route.load(options, routeFilePath); - expect(routes).to.be.array(); - expect(routes[0]).to.include(['method', 'path', 'handler']); - }); - - lab.it('Return an array of route object if the route \ - file contains an array of route objects.', () => { - - const routeFilePath = 'test/fixtures/routes/index.js'; - const options = { - routes_dir: 'test/fixtures/routes', - pattern: '**/!(_)*.js', - use_prefix: false - }; - const routes = Route.load(options, routeFilePath); - expect(routes).to.be.array(); - expect(routes[0]).to.include(['method', 'path', 'handler']); - }); -}); From f6f76d4653cae5787902aa56ba027d354598598f Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 21:51:16 +0300 Subject: [PATCH 09/92] Don't ignore yarn.lock --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8bdf36f..eaf0e20 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules/ -yarn.lock -coverage.html \ No newline at end of file +coverage.html From 6f336f35086626b15f603340571ba4485201d392 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 21:51:53 +0300 Subject: [PATCH 10/92] Remove unused .labrc.js --- .labrc.js | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .labrc.js diff --git a/.labrc.js b/.labrc.js deleted file mode 100644 index ccbb0b5..0000000 --- a/.labrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - coverage: true, - threshold: 90, - lint: true -}; From ad0bbee86c1cce0b0898a1f05a968b0c70a22b13 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 21:59:57 +0300 Subject: [PATCH 11/92] Update dependencies. --- package.json | 5 +- yarn.lock | 1090 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1092 insertions(+), 3 deletions(-) create mode 100644 yarn.lock diff --git a/package.json b/package.json index 9a4fff9..b3de377 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,8 @@ "README.md" ], "devDependencies": { - "code": "^5.1.2", - "hapi": "^17.5.0", - "lab": "^15.2.1" + "code": "^5.2.0", + "lab": "^15.4.5" }, "dependencies": { "glob": "^7.1.2", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fe21d32 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1090 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +boom@7.x.x: + version "7.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.0.tgz#2bff24a55565767fde869ec808317eb10c48e966" + dependencies: + hoek "5.x.x" + +bossy@4.x.x: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bossy/-/bossy-4.0.1.tgz#2a57c904988ca869954f2060b96fa0ecb12262ba" + dependencies: + boom "7.x.x" + hoek "5.x.x" + joi "13.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" + dependencies: + hoek "5.x.x" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +diff@3.5.x: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +eslint-config-hapi@11.x.x: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-11.1.0.tgz#9e22136ff678deb8121d58c31f9a083a4a4a6f12" + +eslint-plugin-hapi@4.x.x: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz#ca6b97b7621ae45cf70ab92f8c847a85414a56c9" + dependencies: + hapi-capitalize-modules "1.x.x" + hapi-for-you "1.x.x" + hapi-no-var "1.x.x" + hapi-scope-start "2.x.x" + no-arrowception "1.x.x" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@4.19.x: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@3.5.x, espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +find-rc@3.0.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1: + version "11.5.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +handlebars@4.x.x: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +hapi-capitalize-modules@1.x.x: + version "1.1.6" + resolved "https://registry.yarnpkg.com/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz#7991171415e15e6aa3231e64dda73c8146665318" + +hapi-for-you@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hapi-for-you/-/hapi-for-you-1.0.0.tgz#d362fbee8d7bda9c2c7801e207e5a5cd1a0b6a7b" + +hapi-no-var@1.x.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hapi-no-var/-/hapi-no-var-1.0.1.tgz#e9d87fd4de6149104a3fca797ef5c2ef5c182342" + +hapi-scope-start@2.x.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +hoek@5.x.x: + version "5.0.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" + +iconv-lite@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^3.3.3: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isemail@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" + dependencies: + punycode "2.x.x" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +joi@13.x.x, joi@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" + dependencies: + hoek "5.x.x" + isemail "3.x.x" + topo "3.x.x" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.9.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stable-stringify@1.x.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@5.x.x: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +lab@^15.4.5: + version "15.4.5" + resolved "https://registry.yarnpkg.com/lab/-/lab-15.4.5.tgz#dab1ddcb43d9fbb9d818ecbaf5af83abfffc8059" + dependencies: + bossy "4.x.x" + diff "3.5.x" + eslint "4.19.x" + eslint-config-hapi "11.x.x" + eslint-plugin-hapi "4.x.x" + espree "3.5.x" + find-rc "3.0.x" + handlebars "4.x.x" + hoek "5.x.x" + json-stable-stringify "1.x.x" + json-stringify-safe "5.x.x" + mkdirp "0.5.x" + seedrandom "2.4.x" + source-map "0.6.x" + source-map-support "0.5.x" + supports-color "4.4.x" + will-call "1.x.x" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash@^4.17.4, lodash@^4.3.0: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +lru-cache@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.5.x, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +no-arrowception@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@2.x.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +readable-stream@^2.2.2: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@^2.2.8: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +seedrandom@2.4.x: + version "2.4.3" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" + +semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +source-map-support@0.5.x: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.x, source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@4.4.x: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +topo@3.x.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.0.tgz#37e48c330efeac784538e0acd3e62ca5e231fe7a" + dependencies: + hoek "5.x.x" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +will-call@1.x.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/will-call/-/will-call-1.0.1.tgz#9b37561ea7156aaba21b28fdf635b80fe78bf166" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From a77522176dd177ad12cde21325a0d9dd23c602ed Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 22:02:18 +0300 Subject: [PATCH 12/92] Fix spelling. --- LICENCE.md => LICENSE.txt | 0 README.md | 2 +- package.json | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename LICENCE.md => LICENSE.txt (100%) diff --git a/LICENCE.md b/LICENSE.txt similarity index 100% rename from LICENCE.md rename to LICENSE.txt diff --git a/README.md b/README.md index bf8116d..06730b8 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENCE.md) file for details. +This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENSE.txt) file for details. diff --git a/package.json b/package.json index b3de377..dc2d8f8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "files": [ "lib/", - "LICENCE.txt", + "LICENSE.txt", "index.js", "README.md" ], From 5a4bf2a4fa6f0eb89e97fb346a0de3a8edb00c6f Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 22:15:35 +0300 Subject: [PATCH 13/92] Configure tests. --- package.json | 5 ++--- test/simple_test.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 test/simple_test.js diff --git a/package.json b/package.json index dc2d8f8..95949a8 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,8 @@ "bugs": "https://github.com/sitrakay/hapi-auto-route/issues", "license": "MIT", "scripts": { - "test": "lab ", - "test-debug": "lab -a code", - "test-cov-html": "lab -r html -o coverage.html -a code" + "test": "lab --coverage --lint", + "html-coverage": "lab --reporter html --output coverage.html" }, "files": [ "lib/", diff --git a/test/simple_test.js b/test/simple_test.js new file mode 100644 index 0000000..f5e4cbb --- /dev/null +++ b/test/simple_test.js @@ -0,0 +1,12 @@ +'use strict'; + +const Lab = require('lab'); + +const { expect } = require('code'); + +const lab = exports.lab = Lab.script(); + +lab.test('simple test', () => { + + expect(1 + 1).to.be.equal(2); +}); From 79c59c26ccd5a86d50f631de6ec8e42856545da0 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 23:01:34 +0300 Subject: [PATCH 14/92] Plugin exists. --- index.js | 3 +++ test/plugin_test.js | 18 ++++++++++++++++++ test/simple_test.js | 12 ------------ 3 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 index.js create mode 100644 test/plugin_test.js delete mode 100644 test/simple_test.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..d2b3f53 --- /dev/null +++ b/index.js @@ -0,0 +1,3 @@ +'use strict'; + +exports.plugin = {}; diff --git a/test/plugin_test.js b/test/plugin_test.js new file mode 100644 index 0000000..2fa9d81 --- /dev/null +++ b/test/plugin_test.js @@ -0,0 +1,18 @@ +'use strict'; + +const Lab = require('lab'); + +const { expect } = require('code'); + +// The hapi-auto-route plugin +const { plugin } = require('../index.js'); + +const lab = exports.lab = Lab.script(); + +lab.describe('plugin', () => { + + lab.it('Exports plugin.', () => { + + expect(plugin).to.be.not.undefined(); + }); +}); diff --git a/test/simple_test.js b/test/simple_test.js deleted file mode 100644 index f5e4cbb..0000000 --- a/test/simple_test.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const Lab = require('lab'); - -const { expect } = require('code'); - -const lab = exports.lab = Lab.script(); - -lab.test('simple test', () => { - - expect(1 + 1).to.be.equal(2); -}); From 6ab485e9d6a8b6af4335c998103917258f2dfae3 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Tue, 29 May 2018 23:17:13 +0300 Subject: [PATCH 15/92] Create plugin interface. --- index.js | 5 ++++- test/plugin_test.js | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index d2b3f53..ad728f3 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,6 @@ 'use strict'; -exports.plugin = {}; +exports.plugin = { + pkg: require('./package.json'), + register: async (server, options) => {} +}; diff --git a/test/plugin_test.js b/test/plugin_test.js index 2fa9d81..d57b87a 100644 --- a/test/plugin_test.js +++ b/test/plugin_test.js @@ -15,4 +15,16 @@ lab.describe('plugin', () => { expect(plugin).to.be.not.undefined(); }); + + lab.it('use package.json file as plugin informations', () => { + + expect(plugin.pkg).to.be.not.undefined(); + expect(plugin.pkg).to.include(['name', 'version', 'description']); + }); + + lab.it('Has function register', () => { + + expect(plugin.register).to.be.not.undefined(); + expect(plugin.register).to.be.a.function(); + }); }); From a118270764600c5df4b87fc1899faaf5e2c68a12 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 00:43:55 +0300 Subject: [PATCH 16/92] Create basic plugin. --- lib/auto-route.js | 34 ++++++++++++++++ test/auto-route.js | 53 +++++++++++++++++++++++++ test/{plugin_test.js => plugin-test.js} | 0 3 files changed, 87 insertions(+) create mode 100644 lib/auto-route.js create mode 100644 test/auto-route.js rename test/{plugin_test.js => plugin-test.js} (100%) diff --git a/lib/auto-route.js b/lib/auto-route.js new file mode 100644 index 0000000..1eb48be --- /dev/null +++ b/lib/auto-route.js @@ -0,0 +1,34 @@ +'use strict'; + +const Hoek = require('hoek'); +const Joi = require('joi'); + +const internals = {}; + +internals.schema = {}; + +// plugin options schema. +internals.schema.plugin = Joi.object().keys({ + routes_dir: Joi.string(), + pattern: Joi.string(), + use_prefix: Joi.boolean() +}); + +internals.validatePluginOptions = (options) => { + + const result = Joi.validate(options, internals.schema.plugin); + Hoek.assert(result.error === null, + new Error('Invalide hapi-auto-route options')); +}; + +exports.Configuration = class { + constructor(routerSetting, pluginOptions) { + + internals.validatePluginOptions(pluginOptions); + + // routerSetting is always set by the server so it don't need to + // to be checked. + this.router = Hoek.clone(routerSetting); + this.plugin = Hoek.clone(pluginOptions); + } +}; diff --git a/test/auto-route.js b/test/auto-route.js new file mode 100644 index 0000000..69b597b --- /dev/null +++ b/test/auto-route.js @@ -0,0 +1,53 @@ +'use strict'; + +const Lab = require('lab'); + +const { expect } = require('code'); + +// The hapi-auto-route plugin +const { Configuration } = require('../lib/auto-route.js'); + +const lab = exports.lab = Lab.script(); + +lab.describe('Option', () => { + + lab.it('Options is an object', () => { + + expect(Configuration).to.be.not.undefined() + .and.to.be.an.function(); // a class. + }); + + lab.it('Has a merged property of routerSetting and options', () => { + + const routerSetting = { + isCaseSensitive: true, + stripTrailingSlash: false + }; + const options = { + routes_dir: 'sd', + pattern: 'df', + use_prefix: false + }; + const config = new Configuration(routerSetting, options); + expect(config.router).to.be.an.object().and.include([ + 'isCaseSensitive', 'stripTrailingSlash' + ]); + expect(config.plugin).to.be.an.object().and.include([ + 'routes_dir', 'pattern', 'use_prefix' + ]); + }); + + lab.it('Throw an error when options is not valid', () => { + + const options = { + routes_dir: 34, // should be a string + pattern: 55, // should be a string + use_prefix: 'blabla' // should be a boolean (true or false) + }; + + expect(() => { + + new Configuration(null, options); + }).to.throw(); + }); +}); diff --git a/test/plugin_test.js b/test/plugin-test.js similarity index 100% rename from test/plugin_test.js rename to test/plugin-test.js From b4d8dae792876e3d3ce2b3688acaa7eab0a5491c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 00:58:39 +0300 Subject: [PATCH 17/92] Validate params. --- lib/auto-route.js | 19 ++++++++++++++++--- test/auto-route.js | 13 +++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 1eb48be..107d5cc 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -14,20 +14,33 @@ internals.schema.plugin = Joi.object().keys({ use_prefix: Joi.boolean() }); +// router settings schema. +internals.schema.routerSettings = Joi.object().keys({ + isCaseSensitive: Joi.boolean().required(), + stripTrailingSlash: Joi.boolean().required() +}); + internals.validatePluginOptions = (options) => { const result = Joi.validate(options, internals.schema.plugin); Hoek.assert(result.error === null, - new Error('Invalide hapi-auto-route options')); + new Error('Invalid hapi-auto-route options')); +}; + + +internals.validateRouterSettings = (settings) => { + + const result = Joi.validate(settings, internals.schema.routerSettings); + Hoek.assert(result.error === null, + new Error('Invalid server router settings')); }; exports.Configuration = class { constructor(routerSetting, pluginOptions) { + internals.validateRouterSettings(routerSetting); internals.validatePluginOptions(pluginOptions); - // routerSetting is always set by the server so it don't need to - // to be checked. this.router = Hoek.clone(routerSetting); this.plugin = Hoek.clone(pluginOptions); } diff --git a/test/auto-route.js b/test/auto-route.js index 69b597b..f556ad6 100644 --- a/test/auto-route.js +++ b/test/auto-route.js @@ -50,4 +50,17 @@ lab.describe('Option', () => { new Configuration(null, options); }).to.throw(); }); + + lab.it('Throws an error when router settings are invalid', () => { + + const options = { + routes_dir: 'sd', + pattern: 'df', + use_prefix: false + }; + expect(() => { + + new Configuration({}, options); + }).to.throw(); + }); }); From 65bfb5eee0cd035056b1fbc7f6799697d46437fe Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 01:04:42 +0300 Subject: [PATCH 18/92] Refactor --- lib/auto-route.js | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 107d5cc..cd7f4b5 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -20,28 +20,16 @@ internals.schema.routerSettings = Joi.object().keys({ stripTrailingSlash: Joi.boolean().required() }); -internals.validatePluginOptions = (options) => { - - const result = Joi.validate(options, internals.schema.plugin); - Hoek.assert(result.error === null, - new Error('Invalid hapi-auto-route options')); -}; - - -internals.validateRouterSettings = (settings) => { - - const result = Joi.validate(settings, internals.schema.routerSettings); - Hoek.assert(result.error === null, - new Error('Invalid server router settings')); -}; - exports.Configuration = class { constructor(routerSetting, pluginOptions) { - internals.validateRouterSettings(routerSetting); - internals.validatePluginOptions(pluginOptions); + const settings = Joi.validate(routerSetting, internals.schema.routerSettings); + const options = Joi.validate(pluginOptions, internals.schema.plugin); + + Hoek.assert(settings.error === null, new Error('Invalid server router settings')); + Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); - this.router = Hoek.clone(routerSetting); - this.plugin = Hoek.clone(pluginOptions); + this.router = Hoek.clone(settings.value); + this.plugin = Hoek.clone(options.value); } }; From 829e721a68e25e3a029d67929a5564edc09de83c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 01:13:23 +0300 Subject: [PATCH 19/92] Apply default value to plugin options. --- lib/auto-route.js | 6 +++--- test/auto-route.js | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index cd7f4b5..8392d0d 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -9,9 +9,9 @@ internals.schema = {}; // plugin options schema. internals.schema.plugin = Joi.object().keys({ - routes_dir: Joi.string(), - pattern: Joi.string(), - use_prefix: Joi.boolean() + routes_dir: Joi.string().default('routes'), + pattern: Joi.string().default('**/*.js'), + use_prefix: Joi.boolean().default(false) }); // router settings schema. diff --git a/test/auto-route.js b/test/auto-route.js index f556ad6..48108c3 100644 --- a/test/auto-route.js +++ b/test/auto-route.js @@ -63,4 +63,16 @@ lab.describe('Option', () => { new Configuration({}, options); }).to.throw(); }); + + lab.it('applies default plugin options when "options" is undifined.', () => { + + const routerSetting = { + isCaseSensitive: true, + stripTrailingSlash: false + }; + const config = new Configuration(routerSetting, {}); + expect(config.plugin.routes_dir).to.be.equal('routes'); + expect(config.plugin.pattern).to.be.equal('**/*.js'); + expect(config.plugin.use_prefix).to.be.false(); + }); }); From 51251230ada08c5f5a862ede14c69449f273ec44 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 01:17:40 +0300 Subject: [PATCH 20/92] Reorganize project folders. --- index.js | 34 ++++++++++++++++++ lib/auto-route.js | 35 ------------------- package.json | 1 - test/{auto-route.js => configuration-test.js} | 2 +- 4 files changed, 35 insertions(+), 37 deletions(-) delete mode 100644 lib/auto-route.js rename test/{auto-route.js => configuration-test.js} (97%) diff --git a/index.js b/index.js index ad728f3..ec92629 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,39 @@ 'use strict'; +const Hoek = require('hoek'); +const Joi = require('joi'); + +const internals = {}; + +internals.schema = {}; + +// plugin options schema. +internals.schema.plugin = Joi.object().keys({ + routes_dir: Joi.string().default('routes'), + pattern: Joi.string().default('**/*.js'), + use_prefix: Joi.boolean().default(false) +}); + +// router settings schema. +internals.schema.routerSettings = Joi.object().keys({ + isCaseSensitive: Joi.boolean().required(), + stripTrailingSlash: Joi.boolean().required() +}); + +exports.Configuration = class { + constructor(routerSetting, pluginOptions) { + + const settings = Joi.validate(routerSetting, internals.schema.routerSettings); + const options = Joi.validate(pluginOptions, internals.schema.plugin); + + Hoek.assert(settings.error === null, new Error('Invalid server router settings')); + Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); + + this.router = Hoek.clone(settings.value); + this.plugin = Hoek.clone(options.value); + } +}; + exports.plugin = { pkg: require('./package.json'), register: async (server, options) => {} diff --git a/lib/auto-route.js b/lib/auto-route.js deleted file mode 100644 index 8392d0d..0000000 --- a/lib/auto-route.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -const Hoek = require('hoek'); -const Joi = require('joi'); - -const internals = {}; - -internals.schema = {}; - -// plugin options schema. -internals.schema.plugin = Joi.object().keys({ - routes_dir: Joi.string().default('routes'), - pattern: Joi.string().default('**/*.js'), - use_prefix: Joi.boolean().default(false) -}); - -// router settings schema. -internals.schema.routerSettings = Joi.object().keys({ - isCaseSensitive: Joi.boolean().required(), - stripTrailingSlash: Joi.boolean().required() -}); - -exports.Configuration = class { - constructor(routerSetting, pluginOptions) { - - const settings = Joi.validate(routerSetting, internals.schema.routerSettings); - const options = Joi.validate(pluginOptions, internals.schema.plugin); - - Hoek.assert(settings.error === null, new Error('Invalid server router settings')); - Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); - - this.router = Hoek.clone(settings.value); - this.plugin = Hoek.clone(options.value); - } -}; diff --git a/package.json b/package.json index 95949a8..76217d6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "html-coverage": "lab --reporter html --output coverage.html" }, "files": [ - "lib/", "LICENSE.txt", "index.js", "README.md" diff --git a/test/auto-route.js b/test/configuration-test.js similarity index 97% rename from test/auto-route.js rename to test/configuration-test.js index 48108c3..ba32781 100644 --- a/test/auto-route.js +++ b/test/configuration-test.js @@ -5,7 +5,7 @@ const Lab = require('lab'); const { expect } = require('code'); // The hapi-auto-route plugin -const { Configuration } = require('../lib/auto-route.js'); +const { Configuration } = require('../index.js'); const lab = exports.lab = Lab.script(); From 76fe352c55ee32029133ce6ede1e85cdcf1ccb4d Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 01:24:58 +0300 Subject: [PATCH 21/92] Refactor --- test/configuration-test.js | 122 +++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/test/configuration-test.js b/test/configuration-test.js index ba32781..b745dda 100644 --- a/test/configuration-test.js +++ b/test/configuration-test.js @@ -4,75 +4,77 @@ const Lab = require('lab'); const { expect } = require('code'); -// The hapi-auto-route plugin const { Configuration } = require('../index.js'); const lab = exports.lab = Lab.script(); -lab.describe('Option', () => { +lab.describe('Configuration', () => { - lab.it('Options is an object', () => { + lab.it('is a class', () => { expect(Configuration).to.be.not.undefined() .and.to.be.an.function(); // a class. }); - lab.it('Has a merged property of routerSetting and options', () => { - - const routerSetting = { - isCaseSensitive: true, - stripTrailingSlash: false - }; - const options = { - routes_dir: 'sd', - pattern: 'df', - use_prefix: false - }; - const config = new Configuration(routerSetting, options); - expect(config.router).to.be.an.object().and.include([ - 'isCaseSensitive', 'stripTrailingSlash' - ]); - expect(config.plugin).to.be.an.object().and.include([ - 'routes_dir', 'pattern', 'use_prefix' - ]); - }); - - lab.it('Throw an error when options is not valid', () => { - - const options = { - routes_dir: 34, // should be a string - pattern: 55, // should be a string - use_prefix: 'blabla' // should be a boolean (true or false) - }; - - expect(() => { - - new Configuration(null, options); - }).to.throw(); - }); - - lab.it('Throws an error when router settings are invalid', () => { - - const options = { - routes_dir: 'sd', - pattern: 'df', - use_prefix: false - }; - expect(() => { - - new Configuration({}, options); - }).to.throw(); - }); - - lab.it('applies default plugin options when "options" is undifined.', () => { - - const routerSetting = { - isCaseSensitive: true, - stripTrailingSlash: false - }; - const config = new Configuration(routerSetting, {}); - expect(config.plugin.routes_dir).to.be.equal('routes'); - expect(config.plugin.pattern).to.be.equal('**/*.js'); - expect(config.plugin.use_prefix).to.be.false(); + lab.describe('#constructor()', () => { + + lab.it('stores router settings and plugin options', () => { + + const routerSetting = { + isCaseSensitive: true, + stripTrailingSlash: false + }; + const options = { + routes_dir: 'sd', + pattern: 'df', + use_prefix: false + }; + const config = new Configuration(routerSetting, options); + expect(config.router).to.be.an.object().and.include([ + 'isCaseSensitive', 'stripTrailingSlash' + ]); + expect(config.plugin).to.be.an.object().and.include([ + 'routes_dir', 'pattern', 'use_prefix' + ]); + }); + + lab.it('ensure that plugin options are valid', () => { + + const options = { + routes_dir: 34, // should be a string + pattern: 55, // should be a string + use_prefix: 'blabla' // should be a boolean (true or false) + }; + + expect(() => { + + new Configuration(null, options); + }).to.throw(); + }); + + lab.it('ensure that router settings are valid', () => { + + const options = { + routes_dir: 'sd', + pattern: 'df', + use_prefix: false + }; + expect(() => { + + new Configuration({}, options); + }).to.throw(); + }); + + lab.it('applies default plugin options when they are not specified.', () => { + + const routerSetting = { + isCaseSensitive: true, + stripTrailingSlash: false + }; + const config = new Configuration(routerSetting, {}); + expect(config.plugin.routes_dir).to.be.equal('routes'); + expect(config.plugin.pattern).to.be.equal('**/*.js'); + expect(config.plugin.use_prefix).to.be.false(); + }); }); }); From 265bcbe0be6939ffe2e7f1808e9b55cc7883e58a Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 14:50:30 +0300 Subject: [PATCH 22/92] Add config property. --- index.js | 9 ++++++++- test/auto-route-test.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 test/auto-route-test.js diff --git a/index.js b/index.js index ec92629..a9b9393 100644 --- a/index.js +++ b/index.js @@ -20,7 +20,7 @@ internals.schema.routerSettings = Joi.object().keys({ stripTrailingSlash: Joi.boolean().required() }); -exports.Configuration = class { +exports.Configuration = class { constructor(routerSetting, pluginOptions) { const settings = Joi.validate(routerSetting, internals.schema.routerSettings); @@ -34,6 +34,13 @@ exports.Configuration = class { } }; +exports.AutoRoute = class { + constructor(config) { + + this.config = config; + } +}; + exports.plugin = { pkg: require('./package.json'), register: async (server, options) => {} diff --git a/test/auto-route-test.js b/test/auto-route-test.js new file mode 100644 index 0000000..698e147 --- /dev/null +++ b/test/auto-route-test.js @@ -0,0 +1,31 @@ +'use strict'; + +const Lab = require('lab'); + +const { expect } = require('code'); + +const { AutoRoute, Configuration } = require('../index.js'); + +const lab = exports.lab = Lab.script(); + +lab.describe('AutoRoute', () => { + + const routerSetting = { + isCaseSensitive: true, + stripTrailingSlash: false + }; + + lab.it('is a class', () => { + + expect(AutoRoute).to.be.a.function(); // a class + }); + + lab.describe('#constructor(config)', () => { + + lab.it('set configuration', () => { + + const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); + expect(autoRoute.config).to.be.instanceof(Configuration); + }); + }); +}); From 7e8422cbb5262bc7b46b35b580f2e3d8609c4a40 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 14:53:41 +0300 Subject: [PATCH 23/92] Add property routes. --- index.js | 1 + test/auto-route-test.js | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/index.js b/index.js index a9b9393..329ea0e 100644 --- a/index.js +++ b/index.js @@ -38,6 +38,7 @@ exports.AutoRoute = class { constructor(config) { this.config = config; + this.routes = []; } }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 698e147..8497fd0 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -27,5 +27,11 @@ lab.describe('AutoRoute', () => { const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); expect(autoRoute.config).to.be.instanceof(Configuration); }); + + lab.it('set property routes which is an array', () => { + + const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); + expect(autoRoute.routes).to.be.an.array(); + }); }); }); From d9fe02bbe5ca7d8c1c63d93d3711e13ebe44def7 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 15:23:09 +0300 Subject: [PATCH 24/92] returns routes file path and set AutoRoute routes property. --- index.js | 14 +++++++++++++- test/auto-route-test.js | 19 ++++++++++++++++++- test/fixtures/routes/index.js | 1 + 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/routes/index.js diff --git a/index.js b/index.js index 329ea0e..1dc30e3 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,8 @@ const Hoek = require('hoek'); const Joi = require('joi'); +const Glob = require('glob'); +const { promisify } = require('util'); const internals = {}; @@ -38,7 +40,17 @@ exports.AutoRoute = class { constructor(config) { this.config = config; - this.routes = []; + this.routes = { + files: [] + }; + } + + async loadFiles() { + + const glob = promisify(Glob); + + this.routes.files = await glob(this.config.plugin.routes_dir); + return Hoek.clone(this.routes.files); } }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 8497fd0..3a13b67 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -15,6 +15,10 @@ lab.describe('AutoRoute', () => { stripTrailingSlash: false }; + const options = { + routes_dir: './test/fixtures/routes' + }; + lab.it('is a class', () => { expect(AutoRoute).to.be.a.function(); // a class @@ -31,7 +35,20 @@ lab.describe('AutoRoute', () => { lab.it('set property routes which is an array', () => { const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); - expect(autoRoute.routes).to.be.an.array(); + expect(autoRoute.routes).to.be.an.object().and.include(['files']); + }); + }); + + lab.describe('#loadFiles()', () => { + + lab.it('returns routes file path and set AutoRoute routes property', async () => { + + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + const files = await autoRoute.loadFiles(); + expect(files).to.be.an.array(); + expect(files.length).to.be.above(0); + expect(autoRoute.routes.files).to.be.an.array(); + expect(autoRoute.routes.files.length).to.be.above(0); }); }); }); diff --git a/test/fixtures/routes/index.js b/test/fixtures/routes/index.js new file mode 100644 index 0000000..ad9a93a --- /dev/null +++ b/test/fixtures/routes/index.js @@ -0,0 +1 @@ +'use strict'; From c0d2af51a6d7febf289fe903911cee092e232309 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 15:57:13 +0300 Subject: [PATCH 25/92] Load route objects. And fix loadFiles bug. --- index.js | 14 ++++++++++++-- test/auto-route-test.js | 12 ++++++++++++ test/fixtures/routes/index.js | 6 ++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 1dc30e3..e753a31 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,8 @@ const Hoek = require('hoek'); const Joi = require('joi'); const Glob = require('glob'); +const Path = require('path'); + const { promisify } = require('util'); const internals = {}; @@ -41,17 +43,25 @@ exports.AutoRoute = class { this.config = config; this.routes = { - files: [] + files: [], + objects: [] }; } async loadFiles() { const glob = promisify(Glob); + const pattern = Path.join(process.cwd(), this.config.plugin.routes_dir, this.config.plugin.pattern); - this.routes.files = await glob(this.config.plugin.routes_dir); + const files = await glob(pattern); + this.routes.files = files; return Hoek.clone(this.routes.files); } + + loadRouteObjects() { + + this.routes.objects = this.routes.files.map(require); + } }; exports.plugin = { diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 3a13b67..52a41d9 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -51,4 +51,16 @@ lab.describe('AutoRoute', () => { expect(autoRoute.routes.files.length).to.be.above(0); }); }); + + lab.describe('#loadHapiRoutes()', () => { + + lab.it('return hapi routes objecs and set routes objects', async () => { + + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + expect(autoRoute.routes.objects).to.be.an.array(); + expect(autoRoute.routes.objects[0]).to.include(['method', 'path', 'handler']); + }); + }); }); diff --git a/test/fixtures/routes/index.js b/test/fixtures/routes/index.js index ad9a93a..606c4a7 100644 --- a/test/fixtures/routes/index.js +++ b/test/fixtures/routes/index.js @@ -1 +1,7 @@ 'use strict'; + +module.exports = { + method: 'GET', + path: '/', + handler: (request, h) => 'Home' +}; From f5872e8b4ae4c8f47eec1d734613029acd88ef98 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 16:54:52 +0300 Subject: [PATCH 26/92] Add method to load prefix. --- index.js | 12 ++++++++++++ test/auto-route-test.js | 29 +++++++++++++++++++++++++++++ test/fixtures/routes/pages/page1.js | 7 +++++++ 3 files changed, 48 insertions(+) create mode 100644 test/fixtures/routes/pages/page1.js diff --git a/index.js b/index.js index e753a31..1e2df01 100644 --- a/index.js +++ b/index.js @@ -62,6 +62,18 @@ exports.AutoRoute = class { this.routes.objects = this.routes.files.map(require); } + + loadPrefix() { + + if (this.config.plugin.use_prefix) { + + this.routes.prefix = this.routes.files.map((file) => { + + const relativePath = Path.relative(this.config.plugin.routes_dir, file); + return Path.dirname(relativePath); // Removes file basename and extension + }); + } + } }; exports.plugin = { diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 52a41d9..86100ea 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -63,4 +63,33 @@ lab.describe('AutoRoute', () => { expect(autoRoute.routes.objects[0]).to.include(['method', 'path', 'handler']); }); }); + + lab.describe('#loadPrefix()', () => { + + lab.it('set prefix if use_prefix is true.', async () => { + + options.pattern = 'pages/page1.js'; + options.use_prefix = true; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + autoRoute.loadPrefix(); + + expect(autoRoute.routes.prefix).to.be.an.array(); + expect(autoRoute.routes.prefix[0]).to.equal('pages'); + }); + + lab.it('doesn\'t set routes.prefix if use prefix is false', async () => { + + options.pattern = 'pages/page1.js'; + options.use_prefix = false; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + autoRoute.loadPrefix(); + + expect(autoRoute.routes.prefix).to.be.undefined(); + }); + }); + }); diff --git a/test/fixtures/routes/pages/page1.js b/test/fixtures/routes/pages/page1.js new file mode 100644 index 0000000..7af2228 --- /dev/null +++ b/test/fixtures/routes/pages/page1.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + method: 'GET', + path: '/page1', + handler: (request, h) => 'page1' +}; From dbe4e1205c5fa835ef61f302ad3253cf41110bab Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 17:09:30 +0300 Subject: [PATCH 27/92] Split prefix by os specific directory separator. --- index.js | 2 +- test/auto-route-test.js | 8 +++++++- test/fixtures/routes/pages/index.js | 11 +++++++++++ test/fixtures/routes/pages/pages2.js | 7 +++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/routes/pages/index.js create mode 100644 test/fixtures/routes/pages/pages2.js diff --git a/index.js b/index.js index 1e2df01..db2863f 100644 --- a/index.js +++ b/index.js @@ -70,7 +70,7 @@ exports.AutoRoute = class { this.routes.prefix = this.routes.files.map((file) => { const relativePath = Path.relative(this.config.plugin.routes_dir, file); - return Path.dirname(relativePath); // Removes file basename and extension + return Path.dirname(relativePath).split(Path.sep); // Removes file basename and extension }); } } diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 86100ea..551ca1f 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -56,9 +56,13 @@ lab.describe('AutoRoute', () => { lab.it('return hapi routes objecs and set routes objects', async () => { + options.use_prefix = true; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); + autoRoute.loadPrefix(); + expect(autoRoute.routes.objects).to.be.an.array(); expect(autoRoute.routes.objects[0]).to.include(['method', 'path', 'handler']); }); @@ -76,7 +80,9 @@ lab.describe('AutoRoute', () => { autoRoute.loadPrefix(); expect(autoRoute.routes.prefix).to.be.an.array(); - expect(autoRoute.routes.prefix[0]).to.equal('pages'); + expect(autoRoute.routes.prefix[0]).to.an.array(); + expect(autoRoute.routes.prefix[0][0]).to.be.equal('pages'); + }); lab.it('doesn\'t set routes.prefix if use prefix is false', async () => { diff --git a/test/fixtures/routes/pages/index.js b/test/fixtures/routes/pages/index.js new file mode 100644 index 0000000..366cf6f --- /dev/null +++ b/test/fixtures/routes/pages/index.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = [{ + method: 'GET', + path: '/ListPage1', + handler: (request, h) => 'page1' +}, { + method: 'GET', + path: '/ListPage2', + handler: (request, h) => 'page1' +}]; diff --git a/test/fixtures/routes/pages/pages2.js b/test/fixtures/routes/pages/pages2.js new file mode 100644 index 0000000..1d78049 --- /dev/null +++ b/test/fixtures/routes/pages/pages2.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + method: 'GET', + path: '/page2', + handler: (request, h) => 'page2' +}; From 43d52682bc2785a54060cf81b218e428589d83f6 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 17:20:49 +0300 Subject: [PATCH 28/92] Refactor --- index.js | 8 +++++--- test/auto-route-test.js | 15 +++++++-------- test/fixtures/routes/pages/deep/index.js | 7 +++++++ 3 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/routes/pages/deep/index.js diff --git a/index.js b/index.js index db2863f..03d29ea 100644 --- a/index.js +++ b/index.js @@ -44,7 +44,9 @@ exports.AutoRoute = class { this.config = config; this.routes = { files: [], - objects: [] + objects: [], + // this will be set as an array of prefix if the plugin option use_prefix is true. + prefixes: undefined }; } @@ -63,11 +65,11 @@ exports.AutoRoute = class { this.routes.objects = this.routes.files.map(require); } - loadPrefix() { + loadPrefixes() { if (this.config.plugin.use_prefix) { - this.routes.prefix = this.routes.files.map((file) => { + this.routes.prefixes = this.routes.files.map((file) => { const relativePath = Path.relative(this.config.plugin.routes_dir, file); return Path.dirname(relativePath).split(Path.sep); // Removes file basename and extension diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 551ca1f..da86dcb 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -61,7 +61,6 @@ lab.describe('AutoRoute', () => { const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); - autoRoute.loadPrefix(); expect(autoRoute.routes.objects).to.be.an.array(); expect(autoRoute.routes.objects[0]).to.include(['method', 'path', 'handler']); @@ -77,24 +76,24 @@ lab.describe('AutoRoute', () => { const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); - autoRoute.loadPrefix(); + autoRoute.loadPrefixes(); - expect(autoRoute.routes.prefix).to.be.an.array(); - expect(autoRoute.routes.prefix[0]).to.an.array(); - expect(autoRoute.routes.prefix[0][0]).to.be.equal('pages'); + expect(autoRoute.routes.prefixes).to.be.an.array(); + expect(autoRoute.routes.prefixes[0]).to.an.array(); + expect(autoRoute.routes.prefixes[0][0]).to.be.equal('pages'); }); - lab.it('doesn\'t set routes.prefix if use prefix is false', async () => { + lab.it('doesn\'t set routes.prefixes if use prefix is false', async () => { options.pattern = 'pages/page1.js'; options.use_prefix = false; const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); - autoRoute.loadPrefix(); + autoRoute.loadPrefixes(); - expect(autoRoute.routes.prefix).to.be.undefined(); + expect(autoRoute.routes.prefixes).to.be.undefined(); }); }); diff --git a/test/fixtures/routes/pages/deep/index.js b/test/fixtures/routes/pages/deep/index.js new file mode 100644 index 0000000..1ec121c --- /dev/null +++ b/test/fixtures/routes/pages/deep/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + method: 'GET', + path: '/deep', + handler: (request, h) => 'page1' +}; From bcdf80070f58393a899933da849405b74a456d16 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 17:34:40 +0300 Subject: [PATCH 29/92] Replace '.' prefix with empty string --- index.js | 6 +++++- test/auto-route-test.js | 12 ++++++++++++ test/fixtures/routes/pages/deep/index.js | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 03d29ea..565ab46 100644 --- a/index.js +++ b/index.js @@ -72,7 +72,11 @@ exports.AutoRoute = class { this.routes.prefixes = this.routes.files.map((file) => { const relativePath = Path.relative(this.config.plugin.routes_dir, file); - return Path.dirname(relativePath).split(Path.sep); // Removes file basename and extension + let prefix = Path.dirname(relativePath); + if (prefix === '.') { + prefix = ''; + } + return prefix.split(Path.sep); // Removes file basename and extension }); } } diff --git a/test/auto-route-test.js b/test/auto-route-test.js index da86dcb..e6379dd 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -95,6 +95,18 @@ lab.describe('AutoRoute', () => { expect(autoRoute.routes.prefixes).to.be.undefined(); }); + + lab.it('replace dot whit an empty string', async () => { + + options.pattern = 'index.js'; + options.use_prefix = true; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + autoRoute.loadPrefixes(); + + expect(autoRoute.routes.prefixes[0][0]).to.be.a.string().and.to.empty(); + }); }); }); diff --git a/test/fixtures/routes/pages/deep/index.js b/test/fixtures/routes/pages/deep/index.js index 1ec121c..5599fd6 100644 --- a/test/fixtures/routes/pages/deep/index.js +++ b/test/fixtures/routes/pages/deep/index.js @@ -3,5 +3,5 @@ module.exports = { method: 'GET', path: '/deep', - handler: (request, h) => 'page1' + handler: (request, h) => 'deep' }; From f3fa7ae4d5150c91ab1b17b03b9c9cc60c35a6bb Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 20:56:53 +0300 Subject: [PATCH 30/92] Add getPrefix function --- index.js | 10 +++------- lib/prefix.js | 19 +++++++++++++++++++ test/prefix-test.js | 27 +++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 lib/prefix.js create mode 100644 test/prefix-test.js diff --git a/index.js b/index.js index 565ab46..3eac49a 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const Hoek = require('hoek'); const Joi = require('joi'); const Glob = require('glob'); const Path = require('path'); +const { getPrefix } = require('./lib/prefix'); const { promisify } = require('util'); @@ -67,16 +68,11 @@ exports.AutoRoute = class { loadPrefixes() { + const absoluteRoutesPath = Path.join(process.cwd(), this.config.plugin.routes_dir); if (this.config.plugin.use_prefix) { - this.routes.prefixes = this.routes.files.map((file) => { - const relativePath = Path.relative(this.config.plugin.routes_dir, file); - let prefix = Path.dirname(relativePath); - if (prefix === '.') { - prefix = ''; - } - return prefix.split(Path.sep); // Removes file basename and extension + return getPrefix(absoluteRoutesPath, file); }); } } diff --git a/lib/prefix.js b/lib/prefix.js new file mode 100644 index 0000000..179132b --- /dev/null +++ b/lib/prefix.js @@ -0,0 +1,19 @@ +'use strict'; + +const Path = require('path'); + +module.exports = { + getPrefix: (route_dir, file) => { + + const prefix = Path.dirname(Path.relative(route_dir, file)); + + return prefix.split(Path.sep).map((e) => { + + return e === '.' ? '' : e; + }); + }, + mergePrefixAndRoutePath: (prefix, routePath) => { + + + } +}; diff --git a/test/prefix-test.js b/test/prefix-test.js new file mode 100644 index 0000000..bed971b --- /dev/null +++ b/test/prefix-test.js @@ -0,0 +1,27 @@ +'use strict'; + +const Lab = require('lab'); + +const { expect } = require('code'); + +// The hapi-auto-route plugin +const { getPrefix } = require('../lib/prefix.js'); + +const lab = exports.lab = Lab.script(); + +lab.describe('Prefix', () => { + + lab.describe('#getPrefix(route_dir, filePath)', () => { + + lab.it('return an array of folder tree', () => { + + expect(getPrefix('/a', '/a/b/c/1.js')).to.be.an.array().include(['b', 'c']); + expect(getPrefix('/a', '/a/b/c/1.js')).to.not.include(['1.js']); + }); + + lab.it('replace dot with empty string', () => { + + expect(getPrefix('/a', '/a/1.js')).to.not.include(['.']).and.include(['']); + }); + }); +}); From 40f425fc02f399cd076e7a37cb8027aca328a3a2 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 21:52:41 +0300 Subject: [PATCH 31/92] Big refactoring --- index.js | 78 -------------------------------------- lib/auto-route.js | 53 ++++++++++++++++++++++++++ lib/configuration.js | 35 +++++++++++++++++ lib/prefix.js | 4 -- package.json | 9 +++-- test/auto-route-test.js | 8 +++- test/configuration-test.js | 2 +- 7 files changed, 101 insertions(+), 88 deletions(-) create mode 100644 lib/auto-route.js create mode 100644 lib/configuration.js diff --git a/index.js b/index.js index 3eac49a..ad728f3 100644 --- a/index.js +++ b/index.js @@ -1,83 +1,5 @@ 'use strict'; -const Hoek = require('hoek'); -const Joi = require('joi'); -const Glob = require('glob'); -const Path = require('path'); -const { getPrefix } = require('./lib/prefix'); - -const { promisify } = require('util'); - -const internals = {}; - -internals.schema = {}; - -// plugin options schema. -internals.schema.plugin = Joi.object().keys({ - routes_dir: Joi.string().default('routes'), - pattern: Joi.string().default('**/*.js'), - use_prefix: Joi.boolean().default(false) -}); - -// router settings schema. -internals.schema.routerSettings = Joi.object().keys({ - isCaseSensitive: Joi.boolean().required(), - stripTrailingSlash: Joi.boolean().required() -}); - -exports.Configuration = class { - constructor(routerSetting, pluginOptions) { - - const settings = Joi.validate(routerSetting, internals.schema.routerSettings); - const options = Joi.validate(pluginOptions, internals.schema.plugin); - - Hoek.assert(settings.error === null, new Error('Invalid server router settings')); - Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); - - this.router = Hoek.clone(settings.value); - this.plugin = Hoek.clone(options.value); - } -}; - -exports.AutoRoute = class { - constructor(config) { - - this.config = config; - this.routes = { - files: [], - objects: [], - // this will be set as an array of prefix if the plugin option use_prefix is true. - prefixes: undefined - }; - } - - async loadFiles() { - - const glob = promisify(Glob); - const pattern = Path.join(process.cwd(), this.config.plugin.routes_dir, this.config.plugin.pattern); - - const files = await glob(pattern); - this.routes.files = files; - return Hoek.clone(this.routes.files); - } - - loadRouteObjects() { - - this.routes.objects = this.routes.files.map(require); - } - - loadPrefixes() { - - const absoluteRoutesPath = Path.join(process.cwd(), this.config.plugin.routes_dir); - if (this.config.plugin.use_prefix) { - this.routes.prefixes = this.routes.files.map((file) => { - - return getPrefix(absoluteRoutesPath, file); - }); - } - } -}; - exports.plugin = { pkg: require('./package.json'), register: async (server, options) => {} diff --git a/lib/auto-route.js b/lib/auto-route.js new file mode 100644 index 0000000..f356154 --- /dev/null +++ b/lib/auto-route.js @@ -0,0 +1,53 @@ +'use strict'; + +const Hoek = require('hoek'); +const Glob = require('glob'); +const Path = require('path'); +const { getPrefix } = require('./prefix'); +const { promisify } = require('util'); + +module.exports = class { + constructor(config) { + + this.config = config; + this.routes = { + files: [], + objects: [], + // this will be set as an array of prefix if the plugin option use_prefix is true. + prefixes: undefined + }; + } + + async run() { + + await this.loadFiles(); + this.loadRouteObjects(); + this.loadPrefixes(); + } + + async loadFiles() { + + const glob = promisify(Glob); + const pattern = Path.join(process.cwd(), this.config.plugin.routes_dir, this.config.plugin.pattern); + + const files = await glob(pattern); + this.routes.files = files; + return Hoek.clone(this.routes.files); + } + + loadRouteObjects() { + + this.routes.objects = this.routes.files.map(require); + } + + loadPrefixes() { + + const absoluteRoutesPath = Path.join(process.cwd(), this.config.plugin.routes_dir); + if (this.config.plugin.use_prefix) { + this.routes.prefixes = this.routes.files.map((file) => { + + return getPrefix(absoluteRoutesPath, file); + }); + } + } +}; diff --git a/lib/configuration.js b/lib/configuration.js new file mode 100644 index 0000000..e71d4f0 --- /dev/null +++ b/lib/configuration.js @@ -0,0 +1,35 @@ +'use strict'; + +const Hoek = require('hoek'); +const Joi = require('joi'); + +const internals = {}; + +internals.schema = {}; + +// plugin options schema. +internals.schema.plugin = Joi.object().keys({ + routes_dir: Joi.string().default('routes'), + pattern: Joi.string().default('**/*.js'), + use_prefix: Joi.boolean().default(false) +}); + +// router settings schema. +internals.schema.routerSettings = Joi.object().keys({ + isCaseSensitive: Joi.boolean().required(), + stripTrailingSlash: Joi.boolean().required() +}); + +module.exports = class { + constructor(routerSetting, pluginOptions) { + + const settings = Joi.validate(routerSetting, internals.schema.routerSettings); + const options = Joi.validate(pluginOptions, internals.schema.plugin); + + Hoek.assert(settings.error === null, new Error('Invalid server router settings')); + Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); + + this.router = Hoek.clone(settings.value); + this.plugin = Hoek.clone(options.value); + } +}; diff --git a/lib/prefix.js b/lib/prefix.js index 179132b..64557f1 100644 --- a/lib/prefix.js +++ b/lib/prefix.js @@ -11,9 +11,5 @@ module.exports = { return e === '.' ? '' : e; }); - }, - mergePrefixAndRoutePath: (prefix, routePath) => { - - } }; diff --git a/package.json b/package.json index 76217d6..f8ab2f0 100644 --- a/package.json +++ b/package.json @@ -18,15 +18,16 @@ }, "files": [ "LICENSE.txt", + "lib/", "index.js", "README.md" ], "devDependencies": { - "code": "^5.2.0", - "lab": "^15.4.5" + "code": "^5.x.x", + "lab": "^15.x.x" }, "dependencies": { - "glob": "^7.1.2", - "joi": "^13.3.0" + "glob": "^7.x.x", + "joi": "^13.x.x" } } diff --git a/test/auto-route-test.js b/test/auto-route-test.js index e6379dd..e1e666e 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -1,10 +1,11 @@ 'use strict'; const Lab = require('lab'); +const AutoRoute = require('../lib/auto-route'); +const Configuration = require('../lib/configuration.js'); const { expect } = require('code'); -const { AutoRoute, Configuration } = require('../index.js'); const lab = exports.lab = Lab.script(); @@ -109,4 +110,9 @@ lab.describe('AutoRoute', () => { }); }); + lab.it('#run()', async () => { + + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.run(); + }); }); diff --git a/test/configuration-test.js b/test/configuration-test.js index b745dda..4c8c4ea 100644 --- a/test/configuration-test.js +++ b/test/configuration-test.js @@ -1,10 +1,10 @@ 'use strict'; const Lab = require('lab'); +const Configuration = require('../lib/configuration'); const { expect } = require('code'); -const { Configuration } = require('../index.js'); const lab = exports.lab = Lab.script(); From 7a8bc014957f793e0dc3f40b87dc66c10412f286 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 22:52:27 +0300 Subject: [PATCH 32/92] Fix dependencies versions --- package.json | 8 ++++---- yarn.lock | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index f8ab2f0..015ccbc 100644 --- a/package.json +++ b/package.json @@ -23,11 +23,11 @@ "README.md" ], "devDependencies": { - "code": "^5.x.x", - "lab": "^15.x.x" + "code": "5.x.x", + "lab": "15.x.x" }, "dependencies": { - "glob": "^7.x.x", - "joi": "^13.x.x" + "glob": "7.x.x", + "joi": "13.x.x" } } diff --git a/yarn.lock b/yarn.lock index fe21d32..d219cdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -193,7 +193,7 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" -code@^5.2.0: +code@5.x.x: version "5.2.0" resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" dependencies: @@ -427,7 +427,7 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: +glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -591,7 +591,7 @@ isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" -joi@13.x.x, joi@^13.3.0: +joi@13.x.x: version "13.3.0" resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" dependencies: @@ -638,7 +638,7 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" -lab@^15.4.5: +lab@15.x.x: version "15.4.5" resolved "https://registry.yarnpkg.com/lab/-/lab-15.4.5.tgz#dab1ddcb43d9fbb9d818ecbaf5af83abfffc8059" dependencies: From 2bb5c83b822d215bfc0183dd44ec72a14edd2149 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 30 May 2018 23:59:41 +0300 Subject: [PATCH 33/92] Prefix route paths --- lib/auto-route.js | 22 +++++++++++++++------- lib/prefix.js | 20 ++++++++++++++++++++ test/auto-route-test.js | 22 ++++++++++++++++++++-- test/prefix-test.js | 17 +++++++++++++++++ 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index f356154..de664af 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -3,7 +3,7 @@ const Hoek = require('hoek'); const Glob = require('glob'); const Path = require('path'); -const { getPrefix } = require('./prefix'); +const Prefix = require('./prefix'); const { promisify } = require('util'); module.exports = class { @@ -14,7 +14,7 @@ module.exports = class { files: [], objects: [], // this will be set as an array of prefix if the plugin option use_prefix is true. - prefixes: undefined + prefixes: [] }; } @@ -43,11 +43,19 @@ module.exports = class { loadPrefixes() { const absoluteRoutesPath = Path.join(process.cwd(), this.config.plugin.routes_dir); - if (this.config.plugin.use_prefix) { - this.routes.prefixes = this.routes.files.map((file) => { + this.routes.prefixes = this.routes.files.map((file) => { - return getPrefix(absoluteRoutesPath, file); - }); - } + return this.config.plugin.use_prefix ? Prefix.getPrefix(absoluteRoutesPath, file) : ''; + }); + } + + applyRoutePrefixes() { + + this.routes.objects = this.routes.objects.map((route, index) => { + + this.routes.objects[index].path = Prefix.apply(this.routes.prefixes[index], route.path, this.config.router.stripTrailingSlash); + return this.routes.objects[index]; + }); + return this.routes.objects; } }; diff --git a/lib/prefix.js b/lib/prefix.js index 64557f1..788157e 100644 --- a/lib/prefix.js +++ b/lib/prefix.js @@ -11,5 +11,25 @@ module.exports = { return e === '.' ? '' : e; }); + }, + apply: (prefixes, routePath, stripTrailingSlash) => { + + const newPath = prefixes.reduce((acc, current, index) => { + + if (current === '') { + return acc; + } + return acc + '/' + current; + }, '') + routePath; + + + if (newPath === '/') { + return newPath; + } + + if (stripTrailingSlash && newPath.endsWith('/')) { + return newPath.slice(0, newPath.length - 1); + } + return newPath; } }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index e1e666e..e7830cc 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -85,7 +85,7 @@ lab.describe('AutoRoute', () => { }); - lab.it('doesn\'t set routes.prefixes if use prefix is false', async () => { + lab.it('set prefixes to be an array of empty string if plugin do not use prefix', async () => { options.pattern = 'pages/page1.js'; options.use_prefix = false; @@ -94,7 +94,8 @@ lab.describe('AutoRoute', () => { autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); - expect(autoRoute.routes.prefixes).to.be.undefined(); + expect(autoRoute.routes.prefixes).to.be.an.array(); + expect(autoRoute.routes.prefixes[0]).to.be.a.string().and.empty(); }); lab.it('replace dot whit an empty string', async () => { @@ -110,6 +111,23 @@ lab.describe('AutoRoute', () => { }); }); + lab.describe('#applyRoutePrefix()', () => { + + lab.it('apply route prefix if plugin use prefixes', async () => { + + options.pattern = 'pages/page1.js'; + options.use_prefix = true; + routerSetting.stripTrailingSlash = true; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + autoRoute.loadPrefixes(); + autoRoute.applyRoutePrefixes(); + + expect(autoRoute.routes.objects[0].path).to.be.equal('/pages/page1'); + }); + }); + lab.it('#run()', async () => { const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); diff --git a/test/prefix-test.js b/test/prefix-test.js index bed971b..6dfb73f 100644 --- a/test/prefix-test.js +++ b/test/prefix-test.js @@ -1,6 +1,7 @@ 'use strict'; const Lab = require('lab'); +const Prefix = require('../lib/prefix'); const { expect } = require('code'); @@ -24,4 +25,20 @@ lab.describe('Prefix', () => { expect(getPrefix('/a', '/a/1.js')).to.not.include(['.']).and.include(['']); }); }); + + lab.describe('#apply(prefixes, routePath, stripTrailingSlash)', () => { + + lab.it('create a new path based on prefix and route path', () => { + + expect(Prefix.apply(['a', 'b'], '/')).to.be.equal('/a/b/'); + expect(Prefix.apply(['a'], '/b')).to.be.equal('/a/b'); + expect(Prefix.apply([''], '/')).to.be.equal('/'); + }); + + lab.it('handle it remove trailing slash if stripTrailingSlash is true', () => { + + expect(Prefix.apply(['a', 'b'], '/', true)).to.be.equal('/a/b'); + expect(Prefix.apply([''], '/', true)).to.be.equal('/'); + }); + }); }); From 980da969dd7e1a02d0f9abf8ca01bdeb798a1956 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 31 May 2018 00:22:38 +0300 Subject: [PATCH 34/92] apply prefix on an array of route objects --- lib/auto-route.js | 15 ++++++++++++--- test/auto-route-test.js | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index de664af..64570eb 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -51,11 +51,20 @@ module.exports = class { applyRoutePrefixes() { + const stripTrailingSlash = this.config.router.stripTrailingSlash; + const routes = this.routes; this.routes.objects = this.routes.objects.map((route, index) => { - this.routes.objects[index].path = Prefix.apply(this.routes.prefixes[index], route.path, this.config.router.stripTrailingSlash); - return this.routes.objects[index]; + if (Array.isArray(route)) { + routes.objects[index].map((innerRoute, position) => { + + routes.objects[index][position].path = Prefix.apply(routes.prefixes[index], innerRoute.path, stripTrailingSlash); + return routes.objects[index][position]; + }); + } + routes.objects[index].path = Prefix.apply(routes.prefixes[index], route.path, stripTrailingSlash); + return routes.objects[index]; }); - return this.routes.objects; + return routes.objects; } }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index e7830cc..3b7fa3d 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -126,6 +126,22 @@ lab.describe('AutoRoute', () => { expect(autoRoute.routes.objects[0].path).to.be.equal('/pages/page1'); }); + + lab.it('apply prefix on an array of route objects', async () => { + + options.pattern = 'pages/index.js'; + options.use_prefix = true; + routerSetting.stripTrailingSlash = true; + const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + await autoRoute.loadFiles(); + autoRoute.loadRouteObjects(); + autoRoute.loadPrefixes(); + autoRoute.applyRoutePrefixes(); + + expect(autoRoute.routes.objects[0][0].path).to.be.equal('/pages/ListPage1'); + expect(autoRoute.routes.objects[0][1].path).to.be.equal('/pages/ListPage2'); + + }); }); lab.it('#run()', async () => { From 71f9f7df71951d4c37109b659721bb737bf26aec Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 31 May 2018 00:38:25 +0300 Subject: [PATCH 35/92] Change AutoRoute constructor interface. --- lib/auto-route.js | 6 +- package.json | 1 + test/auto-route-test.js | 83 +++++++++++++++--- yarn.lock | 182 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 259 insertions(+), 13 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 64570eb..516a758 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -4,18 +4,20 @@ const Hoek = require('hoek'); const Glob = require('glob'); const Path = require('path'); const Prefix = require('./prefix'); +const Configuration = require('./configuration'); const { promisify } = require('util'); module.exports = class { - constructor(config) { + constructor(server, options) { - this.config = config; + this.config = new Configuration(server.settings.router, options); this.routes = { files: [], objects: [], // this will be set as an array of prefix if the plugin option use_prefix is true. prefixes: [] }; + this.server = server; } async run() { diff --git a/package.json b/package.json index 015ccbc..fbb1c7a 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ ], "devDependencies": { "code": "5.x.x", + "hapi": "17.x.x", "lab": "15.x.x" }, "dependencies": { diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 3b7fa3d..1e80636 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -1,6 +1,7 @@ 'use strict'; const Lab = require('lab'); +const Hapi = require('hapi'); const AutoRoute = require('../lib/auto-route'); const Configuration = require('../lib/configuration.js'); @@ -25,26 +26,48 @@ lab.describe('AutoRoute', () => { expect(AutoRoute).to.be.a.function(); // a class }); - lab.describe('#constructor(config)', () => { + lab.describe('#constructor(server, options)', () => { lab.it('set configuration', () => { - const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, {}); expect(autoRoute.config).to.be.instanceof(Configuration); }); lab.it('set property routes which is an array', () => { - const autoRoute = new AutoRoute(new Configuration(routerSetting, {})); + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, {}); expect(autoRoute.routes).to.be.an.object().and.include(['files']); }); + + lab.it('has a server attached to it.', () => { + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, {}); + expect(autoRoute.server).to.be.an.object(); + }); }); lab.describe('#loadFiles()', () => { lab.it('returns routes file path and set AutoRoute routes property', async () => { - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); const files = await autoRoute.loadFiles(); expect(files).to.be.an.array(); expect(files.length).to.be.above(0); @@ -59,7 +82,11 @@ lab.describe('AutoRoute', () => { options.use_prefix = true; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); @@ -74,7 +101,13 @@ lab.describe('AutoRoute', () => { options.pattern = 'pages/page1.js'; options.use_prefix = true; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + options.use_prefix = true; + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); @@ -89,7 +122,12 @@ lab.describe('AutoRoute', () => { options.pattern = 'pages/page1.js'; options.use_prefix = false; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); @@ -102,7 +140,12 @@ lab.describe('AutoRoute', () => { options.pattern = 'index.js'; options.use_prefix = true; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); @@ -118,7 +161,13 @@ lab.describe('AutoRoute', () => { options.pattern = 'pages/page1.js'; options.use_prefix = true; routerSetting.stripTrailingSlash = true; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + options.use_prefix = true; + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); @@ -132,7 +181,13 @@ lab.describe('AutoRoute', () => { options.pattern = 'pages/index.js'; options.use_prefix = true; routerSetting.stripTrailingSlash = true; - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + options.use_prefix = true; + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.loadFiles(); autoRoute.loadRouteObjects(); autoRoute.loadPrefixes(); @@ -146,7 +201,13 @@ lab.describe('AutoRoute', () => { lab.it('#run()', async () => { - const autoRoute = new AutoRoute(new Configuration(routerSetting, options)); + options.use_prefix = true; + + const server = Hapi.server({ + router: routerSetting + }); + + const autoRoute = new AutoRoute(server, options); await autoRoute.run(); }); }); diff --git a/yarn.lock b/yarn.lock index d219cdc..5a6b450 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +accept@3.x.x: + version "3.0.2" + resolved "https://registry.yarnpkg.com/accept/-/accept-3.0.2.tgz#83e41cec7e1149f3fd474880423873db6c6cc9ac" + dependencies: + boom "7.x.x" + hoek "5.x.x" + acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -41,6 +48,12 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ammo@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ammo/-/ammo-3.0.1.tgz#c79ceeac36fb4e55085ea3fe0c2f42bfa5f7c914" + dependencies: + hoek "5.x.x" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -87,6 +100,10 @@ async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +b64@4.x.x: + version "4.0.0" + resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" + babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -99,6 +116,10 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +big-time@2.x.x: + version "2.0.1" + resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" + boom@7.x.x: version "7.2.0" resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.0.tgz#2bff24a55565767fde869ec808317eb10c48e966" @@ -113,6 +134,13 @@ bossy@4.x.x: hoek "5.x.x" joi "13.x.x" +bounce@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bounce/-/bounce-1.2.0.tgz#e3bac68c73fd256e38096551efc09f504873c8c8" + dependencies: + boom "7.x.x" + hoek "5.x.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -124,6 +152,13 @@ buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" +call@5.x.x: + version "5.0.1" + resolved "https://registry.yarnpkg.com/call/-/call-5.0.1.tgz#ac1b5c106d9edc2a17af2a4a4f74dd4f0c06e910" + dependencies: + boom "7.x.x" + hoek "5.x.x" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -138,6 +173,23 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +catbox-memory@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" + dependencies: + big-time "2.x.x" + boom "7.x.x" + hoek "5.x.x" + +catbox@10.x.x: + version "10.0.2" + resolved "https://registry.yarnpkg.com/catbox/-/catbox-10.0.2.tgz#e6ac1f35102d1a9bd07915b82e508d12b50a8bfa" + dependencies: + boom "7.x.x" + bounce "1.x.x" + hoek "5.x.x" + joi "13.x.x" + center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -222,6 +274,12 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +content@4.x.x: + version "4.0.5" + resolved "https://registry.yarnpkg.com/content/-/content-4.0.5.tgz#bc547deabc889ab69bce17faf3585c29f4c41bf2" + dependencies: + boom "7.x.x" + core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -234,6 +292,12 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cryptiles@4.x.x: + version "4.1.1" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-4.1.1.tgz#169256b9df9fe3c73f8085c99e30b32247d4ab46" + dependencies: + boom "7.x.x" + debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -483,6 +547,28 @@ hapi-scope-start@2.x.x: version "2.1.1" resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" +hapi@17.x.x: + version "17.5.0" + resolved "https://registry.yarnpkg.com/hapi/-/hapi-17.5.0.tgz#9fc33f10d6f563d0203853937b60dd13a59b51ce" + dependencies: + accept "3.x.x" + ammo "3.x.x" + boom "7.x.x" + bounce "1.x.x" + call "5.x.x" + catbox "10.x.x" + catbox-memory "3.x.x" + heavy "6.x.x" + hoek "5.x.x" + joi "13.x.x" + mimos "4.x.x" + podium "3.x.x" + shot "4.x.x" + statehood "6.x.x" + subtext "6.x.x" + teamwork "3.x.x" + topo "3.x.x" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -497,6 +583,14 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +heavy@6.x.x: + version "6.1.0" + resolved "https://registry.yarnpkg.com/heavy/-/heavy-6.1.0.tgz#1bbfa43dc61dd4b543ede3ff87db8306b7967274" + dependencies: + boom "7.x.x" + hoek "5.x.x" + joi "13.x.x" + hoek@5.x.x: version "5.0.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" @@ -545,6 +639,14 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" +iron@5.x.x: + version "5.0.4" + resolved "https://registry.yarnpkg.com/iron/-/iron-5.0.4.tgz#003ed822f656f07c2b62762815f5de3947326867" + dependencies: + boom "7.x.x" + cryptiles "4.x.x" + hoek "5.x.x" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -686,10 +788,21 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +mime-db@1.x.x: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" +mimos@4.x.x: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimos/-/mimos-4.0.0.tgz#76e3d27128431cb6482fd15b20475719ad626a5a" + dependencies: + hoek "5.x.x" + mime-db "1.x.x" + minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -722,6 +835,13 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nigel@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/nigel/-/nigel-3.0.1.tgz#48a08859d65177312f1c25af7252c1e07bb07c2a" + dependencies: + hoek "5.x.x" + vise "3.x.x" + no-arrowception@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" @@ -772,6 +892,16 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +pez@4.x.x: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pez/-/pez-4.0.2.tgz#0a7c81b64968e90b0e9562b398f390939e9c4b53" + dependencies: + b64 "4.x.x" + boom "7.x.x" + content "4.x.x" + hoek "5.x.x" + nigel "3.x.x" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -790,6 +920,13 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" +podium@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/podium/-/podium-3.1.2.tgz#b701429739cf6bdde6b3015ae6b48d400817ce9e" + dependencies: + hoek "5.x.x" + joi "13.x.x" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -902,6 +1039,13 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shot@4.x.x: + version "4.0.5" + resolved "https://registry.yarnpkg.com/shot/-/shot-4.0.5.tgz#c7e7455d11d60f6b6cd3c43e15a3b431c17e5566" + dependencies: + hoek "5.x.x" + joi "13.x.x" + signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -937,6 +1081,17 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +statehood@6.x.x: + version "6.0.6" + resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" + dependencies: + boom "7.x.x" + bounce "1.x.x" + cryptiles "4.x.x" + hoek "5.x.x" + iron "5.x.x" + joi "13.x.x" + string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -966,6 +1121,16 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +subtext@6.x.x: + version "6.0.7" + resolved "https://registry.yarnpkg.com/subtext/-/subtext-6.0.7.tgz#8e40a67901a734d598142665c90e398369b885f9" + dependencies: + boom "7.x.x" + content "4.x.x" + hoek "5.x.x" + pez "4.x.x" + wreck "14.x.x" + supports-color@4.4.x: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" @@ -993,6 +1158,10 @@ table@4.0.2: slice-ansi "1.0.0" string-width "^2.1.1" +teamwork@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" + text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -1040,6 +1209,12 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +vise@3.x.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vise/-/vise-3.0.0.tgz#76ad14ab31669c50fbb0817bc0e72fedcbb3bf4c" + dependencies: + hoek "5.x.x" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -1070,6 +1245,13 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +wreck@14.x.x: + version "14.0.2" + resolved "https://registry.yarnpkg.com/wreck/-/wreck-14.0.2.tgz#89c17a9061c745ed1c3aebcb66ea181dbaab454c" + dependencies: + boom "7.x.x" + hoek "5.x.x" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" From 40524c1dbca09883c420d125eaf2cee20ae8e183 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 31 May 2018 19:27:31 +0300 Subject: [PATCH 36/92] Rebase --- lib/auto-route.js | 72 -------- lib/configuration.js | 35 ---- lib/prefix.js | 35 ---- test/auto-route-test.js | 213 ----------------------- test/configuration-test.js | 80 --------- test/fixtures/routes/index.js | 7 - test/fixtures/routes/pages/deep/index.js | 7 - test/fixtures/routes/pages/index.js | 11 -- test/fixtures/routes/pages/page1.js | 7 - test/fixtures/routes/pages/pages2.js | 7 - test/plugin-test.js | 30 ---- test/prefix-test.js | 44 ----- 12 files changed, 548 deletions(-) delete mode 100644 lib/auto-route.js delete mode 100644 lib/configuration.js delete mode 100644 lib/prefix.js delete mode 100644 test/auto-route-test.js delete mode 100644 test/configuration-test.js delete mode 100644 test/fixtures/routes/index.js delete mode 100644 test/fixtures/routes/pages/deep/index.js delete mode 100644 test/fixtures/routes/pages/index.js delete mode 100644 test/fixtures/routes/pages/page1.js delete mode 100644 test/fixtures/routes/pages/pages2.js delete mode 100644 test/plugin-test.js delete mode 100644 test/prefix-test.js diff --git a/lib/auto-route.js b/lib/auto-route.js deleted file mode 100644 index 516a758..0000000 --- a/lib/auto-route.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -const Hoek = require('hoek'); -const Glob = require('glob'); -const Path = require('path'); -const Prefix = require('./prefix'); -const Configuration = require('./configuration'); -const { promisify } = require('util'); - -module.exports = class { - constructor(server, options) { - - this.config = new Configuration(server.settings.router, options); - this.routes = { - files: [], - objects: [], - // this will be set as an array of prefix if the plugin option use_prefix is true. - prefixes: [] - }; - this.server = server; - } - - async run() { - - await this.loadFiles(); - this.loadRouteObjects(); - this.loadPrefixes(); - } - - async loadFiles() { - - const glob = promisify(Glob); - const pattern = Path.join(process.cwd(), this.config.plugin.routes_dir, this.config.plugin.pattern); - - const files = await glob(pattern); - this.routes.files = files; - return Hoek.clone(this.routes.files); - } - - loadRouteObjects() { - - this.routes.objects = this.routes.files.map(require); - } - - loadPrefixes() { - - const absoluteRoutesPath = Path.join(process.cwd(), this.config.plugin.routes_dir); - this.routes.prefixes = this.routes.files.map((file) => { - - return this.config.plugin.use_prefix ? Prefix.getPrefix(absoluteRoutesPath, file) : ''; - }); - } - - applyRoutePrefixes() { - - const stripTrailingSlash = this.config.router.stripTrailingSlash; - const routes = this.routes; - this.routes.objects = this.routes.objects.map((route, index) => { - - if (Array.isArray(route)) { - routes.objects[index].map((innerRoute, position) => { - - routes.objects[index][position].path = Prefix.apply(routes.prefixes[index], innerRoute.path, stripTrailingSlash); - return routes.objects[index][position]; - }); - } - routes.objects[index].path = Prefix.apply(routes.prefixes[index], route.path, stripTrailingSlash); - return routes.objects[index]; - }); - return routes.objects; - } -}; diff --git a/lib/configuration.js b/lib/configuration.js deleted file mode 100644 index e71d4f0..0000000 --- a/lib/configuration.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -const Hoek = require('hoek'); -const Joi = require('joi'); - -const internals = {}; - -internals.schema = {}; - -// plugin options schema. -internals.schema.plugin = Joi.object().keys({ - routes_dir: Joi.string().default('routes'), - pattern: Joi.string().default('**/*.js'), - use_prefix: Joi.boolean().default(false) -}); - -// router settings schema. -internals.schema.routerSettings = Joi.object().keys({ - isCaseSensitive: Joi.boolean().required(), - stripTrailingSlash: Joi.boolean().required() -}); - -module.exports = class { - constructor(routerSetting, pluginOptions) { - - const settings = Joi.validate(routerSetting, internals.schema.routerSettings); - const options = Joi.validate(pluginOptions, internals.schema.plugin); - - Hoek.assert(settings.error === null, new Error('Invalid server router settings')); - Hoek.assert(options.error === null, new Error('Invalid hapi-auto-route options')); - - this.router = Hoek.clone(settings.value); - this.plugin = Hoek.clone(options.value); - } -}; diff --git a/lib/prefix.js b/lib/prefix.js deleted file mode 100644 index 788157e..0000000 --- a/lib/prefix.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -const Path = require('path'); - -module.exports = { - getPrefix: (route_dir, file) => { - - const prefix = Path.dirname(Path.relative(route_dir, file)); - - return prefix.split(Path.sep).map((e) => { - - return e === '.' ? '' : e; - }); - }, - apply: (prefixes, routePath, stripTrailingSlash) => { - - const newPath = prefixes.reduce((acc, current, index) => { - - if (current === '') { - return acc; - } - return acc + '/' + current; - }, '') + routePath; - - - if (newPath === '/') { - return newPath; - } - - if (stripTrailingSlash && newPath.endsWith('/')) { - return newPath.slice(0, newPath.length - 1); - } - return newPath; - } -}; diff --git a/test/auto-route-test.js b/test/auto-route-test.js deleted file mode 100644 index 1e80636..0000000 --- a/test/auto-route-test.js +++ /dev/null @@ -1,213 +0,0 @@ -'use strict'; - -const Lab = require('lab'); -const Hapi = require('hapi'); -const AutoRoute = require('../lib/auto-route'); -const Configuration = require('../lib/configuration.js'); - -const { expect } = require('code'); - - -const lab = exports.lab = Lab.script(); - -lab.describe('AutoRoute', () => { - - const routerSetting = { - isCaseSensitive: true, - stripTrailingSlash: false - }; - - const options = { - routes_dir: './test/fixtures/routes' - }; - - lab.it('is a class', () => { - - expect(AutoRoute).to.be.a.function(); // a class - }); - - lab.describe('#constructor(server, options)', () => { - - lab.it('set configuration', () => { - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, {}); - expect(autoRoute.config).to.be.instanceof(Configuration); - }); - - lab.it('set property routes which is an array', () => { - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, {}); - expect(autoRoute.routes).to.be.an.object().and.include(['files']); - }); - - lab.it('has a server attached to it.', () => { - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, {}); - expect(autoRoute.server).to.be.an.object(); - }); - }); - - lab.describe('#loadFiles()', () => { - - lab.it('returns routes file path and set AutoRoute routes property', async () => { - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - const files = await autoRoute.loadFiles(); - expect(files).to.be.an.array(); - expect(files.length).to.be.above(0); - expect(autoRoute.routes.files).to.be.an.array(); - expect(autoRoute.routes.files.length).to.be.above(0); - }); - }); - - lab.describe('#loadHapiRoutes()', () => { - - lab.it('return hapi routes objecs and set routes objects', async () => { - - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - - expect(autoRoute.routes.objects).to.be.an.array(); - expect(autoRoute.routes.objects[0]).to.include(['method', 'path', 'handler']); - }); - }); - - lab.describe('#loadPrefix()', () => { - - lab.it('set prefix if use_prefix is true.', async () => { - - options.pattern = 'pages/page1.js'; - options.use_prefix = true; - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - autoRoute.loadPrefixes(); - - expect(autoRoute.routes.prefixes).to.be.an.array(); - expect(autoRoute.routes.prefixes[0]).to.an.array(); - expect(autoRoute.routes.prefixes[0][0]).to.be.equal('pages'); - - }); - - lab.it('set prefixes to be an array of empty string if plugin do not use prefix', async () => { - - options.pattern = 'pages/page1.js'; - options.use_prefix = false; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - autoRoute.loadPrefixes(); - - expect(autoRoute.routes.prefixes).to.be.an.array(); - expect(autoRoute.routes.prefixes[0]).to.be.a.string().and.empty(); - }); - - lab.it('replace dot whit an empty string', async () => { - - options.pattern = 'index.js'; - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - autoRoute.loadPrefixes(); - - expect(autoRoute.routes.prefixes[0][0]).to.be.a.string().and.to.empty(); - }); - }); - - lab.describe('#applyRoutePrefix()', () => { - - lab.it('apply route prefix if plugin use prefixes', async () => { - - options.pattern = 'pages/page1.js'; - options.use_prefix = true; - routerSetting.stripTrailingSlash = true; - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - autoRoute.loadPrefixes(); - autoRoute.applyRoutePrefixes(); - - expect(autoRoute.routes.objects[0].path).to.be.equal('/pages/page1'); - }); - - lab.it('apply prefix on an array of route objects', async () => { - - options.pattern = 'pages/index.js'; - options.use_prefix = true; - routerSetting.stripTrailingSlash = true; - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.loadFiles(); - autoRoute.loadRouteObjects(); - autoRoute.loadPrefixes(); - autoRoute.applyRoutePrefixes(); - - expect(autoRoute.routes.objects[0][0].path).to.be.equal('/pages/ListPage1'); - expect(autoRoute.routes.objects[0][1].path).to.be.equal('/pages/ListPage2'); - - }); - }); - - lab.it('#run()', async () => { - - options.use_prefix = true; - - const server = Hapi.server({ - router: routerSetting - }); - - const autoRoute = new AutoRoute(server, options); - await autoRoute.run(); - }); -}); diff --git a/test/configuration-test.js b/test/configuration-test.js deleted file mode 100644 index 4c8c4ea..0000000 --- a/test/configuration-test.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -const Lab = require('lab'); -const Configuration = require('../lib/configuration'); - -const { expect } = require('code'); - - -const lab = exports.lab = Lab.script(); - -lab.describe('Configuration', () => { - - lab.it('is a class', () => { - - expect(Configuration).to.be.not.undefined() - .and.to.be.an.function(); // a class. - }); - - lab.describe('#constructor()', () => { - - lab.it('stores router settings and plugin options', () => { - - const routerSetting = { - isCaseSensitive: true, - stripTrailingSlash: false - }; - const options = { - routes_dir: 'sd', - pattern: 'df', - use_prefix: false - }; - const config = new Configuration(routerSetting, options); - expect(config.router).to.be.an.object().and.include([ - 'isCaseSensitive', 'stripTrailingSlash' - ]); - expect(config.plugin).to.be.an.object().and.include([ - 'routes_dir', 'pattern', 'use_prefix' - ]); - }); - - lab.it('ensure that plugin options are valid', () => { - - const options = { - routes_dir: 34, // should be a string - pattern: 55, // should be a string - use_prefix: 'blabla' // should be a boolean (true or false) - }; - - expect(() => { - - new Configuration(null, options); - }).to.throw(); - }); - - lab.it('ensure that router settings are valid', () => { - - const options = { - routes_dir: 'sd', - pattern: 'df', - use_prefix: false - }; - expect(() => { - - new Configuration({}, options); - }).to.throw(); - }); - - lab.it('applies default plugin options when they are not specified.', () => { - - const routerSetting = { - isCaseSensitive: true, - stripTrailingSlash: false - }; - const config = new Configuration(routerSetting, {}); - expect(config.plugin.routes_dir).to.be.equal('routes'); - expect(config.plugin.pattern).to.be.equal('**/*.js'); - expect(config.plugin.use_prefix).to.be.false(); - }); - }); -}); diff --git a/test/fixtures/routes/index.js b/test/fixtures/routes/index.js deleted file mode 100644 index 606c4a7..0000000 --- a/test/fixtures/routes/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/', - handler: (request, h) => 'Home' -}; diff --git a/test/fixtures/routes/pages/deep/index.js b/test/fixtures/routes/pages/deep/index.js deleted file mode 100644 index 5599fd6..0000000 --- a/test/fixtures/routes/pages/deep/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/deep', - handler: (request, h) => 'deep' -}; diff --git a/test/fixtures/routes/pages/index.js b/test/fixtures/routes/pages/index.js deleted file mode 100644 index 366cf6f..0000000 --- a/test/fixtures/routes/pages/index.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -module.exports = [{ - method: 'GET', - path: '/ListPage1', - handler: (request, h) => 'page1' -}, { - method: 'GET', - path: '/ListPage2', - handler: (request, h) => 'page1' -}]; diff --git a/test/fixtures/routes/pages/page1.js b/test/fixtures/routes/pages/page1.js deleted file mode 100644 index 7af2228..0000000 --- a/test/fixtures/routes/pages/page1.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/page1', - handler: (request, h) => 'page1' -}; diff --git a/test/fixtures/routes/pages/pages2.js b/test/fixtures/routes/pages/pages2.js deleted file mode 100644 index 1d78049..0000000 --- a/test/fixtures/routes/pages/pages2.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - method: 'GET', - path: '/page2', - handler: (request, h) => 'page2' -}; diff --git a/test/plugin-test.js b/test/plugin-test.js deleted file mode 100644 index d57b87a..0000000 --- a/test/plugin-test.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const Lab = require('lab'); - -const { expect } = require('code'); - -// The hapi-auto-route plugin -const { plugin } = require('../index.js'); - -const lab = exports.lab = Lab.script(); - -lab.describe('plugin', () => { - - lab.it('Exports plugin.', () => { - - expect(plugin).to.be.not.undefined(); - }); - - lab.it('use package.json file as plugin informations', () => { - - expect(plugin.pkg).to.be.not.undefined(); - expect(plugin.pkg).to.include(['name', 'version', 'description']); - }); - - lab.it('Has function register', () => { - - expect(plugin.register).to.be.not.undefined(); - expect(plugin.register).to.be.a.function(); - }); -}); diff --git a/test/prefix-test.js b/test/prefix-test.js deleted file mode 100644 index 6dfb73f..0000000 --- a/test/prefix-test.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -const Lab = require('lab'); -const Prefix = require('../lib/prefix'); - -const { expect } = require('code'); - -// The hapi-auto-route plugin -const { getPrefix } = require('../lib/prefix.js'); - -const lab = exports.lab = Lab.script(); - -lab.describe('Prefix', () => { - - lab.describe('#getPrefix(route_dir, filePath)', () => { - - lab.it('return an array of folder tree', () => { - - expect(getPrefix('/a', '/a/b/c/1.js')).to.be.an.array().include(['b', 'c']); - expect(getPrefix('/a', '/a/b/c/1.js')).to.not.include(['1.js']); - }); - - lab.it('replace dot with empty string', () => { - - expect(getPrefix('/a', '/a/1.js')).to.not.include(['.']).and.include(['']); - }); - }); - - lab.describe('#apply(prefixes, routePath, stripTrailingSlash)', () => { - - lab.it('create a new path based on prefix and route path', () => { - - expect(Prefix.apply(['a', 'b'], '/')).to.be.equal('/a/b/'); - expect(Prefix.apply(['a'], '/b')).to.be.equal('/a/b'); - expect(Prefix.apply([''], '/')).to.be.equal('/'); - }); - - lab.it('handle it remove trailing slash if stripTrailingSlash is true', () => { - - expect(Prefix.apply(['a', 'b'], '/', true)).to.be.equal('/a/b'); - expect(Prefix.apply([''], '/', true)).to.be.equal('/'); - }); - }); -}); From 1add7228b9fe60eac23cc046bc1c654df69b09bb Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 14:52:33 +0300 Subject: [PATCH 37/92] Done. --- index.js | 24 ++- lib/auto-route.js | 73 +++++++ lib/prefix.js | 27 +++ package.json | 2 +- test/auto-route-test.js | 120 ++++++++++++ test/fixtures/routes/index.js | 7 + test/fixtures/routes/pages/deep/deep.js | 7 + test/fixtures/routes/pages/index.js | 7 + test/fixtures/routes/pages/list.js | 11 ++ test/fixtures/routes/pages/pages1.js | 7 + test/plugin-test.js | 50 +++++ test/prefix-test.js | 74 ++++++++ yarn.lock | 242 +++++++++++++++++++++++- 13 files changed, 644 insertions(+), 7 deletions(-) create mode 100644 lib/auto-route.js create mode 100644 lib/prefix.js create mode 100644 test/auto-route-test.js create mode 100644 test/fixtures/routes/index.js create mode 100644 test/fixtures/routes/pages/deep/deep.js create mode 100644 test/fixtures/routes/pages/index.js create mode 100644 test/fixtures/routes/pages/list.js create mode 100644 test/fixtures/routes/pages/pages1.js create mode 100644 test/plugin-test.js create mode 100644 test/prefix-test.js diff --git a/index.js b/index.js index ad728f3..6f6a22f 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,28 @@ 'use strict'; +const Path = require('path'); + +const AutoRoute = require('./lib/auto-route'); + exports.plugin = { pkg: require('./package.json'), - register: async (server, options) => {} + register: async (server, options) => { + + const opts = AutoRoute.validateOptions(options); + + let prefixes = []; + + const files = await AutoRoute.getFiles(opts.routes_dir, opts.pattern); + let routes = AutoRoute.getRoutes(files); + + if (opts.use_prefix) { + prefixes = AutoRoute.getPrefixes(files, Path.join(process.cwd(), opts.routes_dir)); + routes = AutoRoute.updatePaths(prefixes, routes); + } + + routes.forEach((route) => { + + server.route(route); + }); + } }; diff --git a/lib/auto-route.js b/lib/auto-route.js new file mode 100644 index 0000000..c69441a --- /dev/null +++ b/lib/auto-route.js @@ -0,0 +1,73 @@ +'use strict'; + +const Glob = require('glob'); +const Hoek = require('hoek'); +const Joi = require('joi'); +const Path = require('path'); +const Util = require('util'); +const Prefix = require('./prefix'); + +module.exports.getFiles = (baseDir, pattern) => { + + const absolutePattern = Path.join( baseDir, pattern); + const glob = Util.promisify(Glob); + return glob(absolutePattern, {}); +}; + +module.exports.getRoutes = (files) => { + + return files.map((file) => { + + return Hoek.clone(require(Path.join(process.cwd(), file))); + }); +}; + +module.exports.getPrefixes = (files, baseDir) => { + + return files.map((file) => { + + return Prefix.parse(file, baseDir).reduce((current, next) => { + + return current + '/' + next; + }, ''); + }); +}; + +module.exports.updatePaths = (prefixes, routes) => { + + const update = (route, index) => { + + const newRoute = Hoek.clone(route); + + if (prefixes[index] === '/') { + return newRoute; + } + newRoute.path = prefixes[index] + route.path; + return newRoute; + }; + + return routes.map((route, index) => { + + if (Array.isArray(route)) { + return route.map((innerRoute, _index) => { + + return update(innerRoute, index); + }); + } + + return update(route, index); + }); +}; + +module.exports.validateOptions = (options) => { + + const optionsSchema = Joi.object().keys({ + routes_dir: Joi.string().default('routes'), + pattern: Joi.string().default('**/!(_)*.js'), + use_prefix: Joi.boolean().default(false) + }); + + const { error, value } = Joi.validate(options, optionsSchema); + Hoek.assert(error === null, 'Invalid options are passed to hapi-auto-route'); + return value; +}; diff --git a/lib/prefix.js b/lib/prefix.js new file mode 100644 index 0000000..e03f1e9 --- /dev/null +++ b/lib/prefix.js @@ -0,0 +1,27 @@ +'use strict'; + +const Path = require('path'); +const Hoek = require('hoek'); + +module.exports.parse = (file, baseDir) => { + + Hoek.assert(Path.isAbsolute(baseDir), 'baseDir must be an absolute path'); + + const absolutePath = Path.dirname(Path.relative(baseDir, file)); + const prefixes = absolutePath.split(Path.sep); + return prefixes.map((prefix) => { + + return prefix === '.' ? '' : prefix; + }); +}; + +module.exports.joinPrefix = (prefixes) => { + + return prefixes.reduce((joined, prefix) => { + + if (prefix === '') { + return ''; + } + return joined + '/' + prefix; + }, ''); +}; diff --git a/package.json b/package.json index fbb1c7a..4d7cd44 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ }, "dependencies": { "glob": "7.x.x", - "joi": "13.x.x" + "joi": "13.x.x", } } diff --git a/test/auto-route-test.js b/test/auto-route-test.js new file mode 100644 index 0000000..1e6c1ca --- /dev/null +++ b/test/auto-route-test.js @@ -0,0 +1,120 @@ +'use strict'; + +const Lab = require('lab'); +const Path = require('path'); +const AutoRoute = require('../lib/auto-route'); + +const { expect } = require('code'); + +const lab = exports.lab = Lab.script(); + +// These files exist in fixtures. +const getFiles = () => { + + const routeDir = './test/fixtures/routes'; + + const files = [ + 'index.js' + ]; + return files.map((file) => { + + return Path.join(routeDir, file); + }); +}; + +lab.describe('AutoRoute', () => { + + const routeDir = './test/fixtures/routes'; + + lab.describe('loadFiles', () => { + + lab.it('load files in an array', () => { + + AutoRoute.getFiles(routeDir, '**/*.js').then((files) => { + + expect(files.length).to.be.above(0); + }); + }); + }); + + lab.describe('getRoutes', () => { + + lab.it('return route objects in a file', () => { + + expect(AutoRoute.getRoutes(getFiles())).to.be.an.array(); + expect(AutoRoute.getRoutes(getFiles())[0]).to.include(['method', 'path', 'handler']); + }); + }); + + lab.describe('getPrefixes()', () => { + + lab.it('return an array of prefix', () => { + + const files = [ + '/a/1.js', + '/a/b/2.js', + '/a/b/c/3.js' + ]; + + const baseDir = '/a'; + + expect(AutoRoute.getPrefixes(files, baseDir).length).to.be.equal(3); + expect(AutoRoute.getPrefixes(files, baseDir)).to.include(['/', '/b', '/b/c']); + }); + }); + + lab.describe('updatePaths(prefixes, routes)', () => { + + lab.it('returns an array of routes', () => { + + const prefixes = [ + '/', + '/b', + '/b/c' + ]; + const routes = [{ path: '/1' }, { path: '/2' }, { path: '/3' }]; + expect(AutoRoute.updatePaths(prefixes, routes)).to.be.an.array(); + expect(AutoRoute.updatePaths(prefixes, routes)[0].path).to.be.equal('/1'); + expect(AutoRoute.updatePaths(prefixes, routes)[1].path).to.be.equal('/b/2'); + expect(AutoRoute.updatePaths(prefixes, routes)[2].path).to.be.equal('/b/c/3'); + }); + + lab.it('work with an an array of inner routes', () => { + + const prefixes = [ + '/', + '/b', + '/b/c' + ]; + const routes = [{ path: '/1' }, [{ path: '/2' }, { path: '/3' }, { path: '/4' }], { path: '/5' }]; + expect(AutoRoute.updatePaths(prefixes, routes)).to.be.an.array(); + expect(AutoRoute.updatePaths(prefixes, routes)[0].path).to.be.equal('/1'); + expect(AutoRoute.updatePaths(prefixes, routes)[1][0].path).to.be.equal('/b/2'); + expect(AutoRoute.updatePaths(prefixes, routes)[1][1].path).to.be.equal('/b/3'); + expect(AutoRoute.updatePaths(prefixes, routes)[1][2].path).to.be.equal('/b/4'); + expect(AutoRoute.updatePaths(prefixes, routes)[2].path).to.be.equal('/b/c/5'); + + }); + }); + + lab.describe('validateOptions(options)', () => { + + lab.it('returns options when they are valid', () => { + + const validOptions = AutoRoute.validateOptions({}); + expect(validOptions.routes_dir).to.be.equal('routes'); + expect(validOptions.pattern).to.be.equal('**/!(_)*.js'); + expect(validOptions.use_prefix).to.be.equal(false); + + }); + + lab.it('throw an error when they are invalid', () => { + + const itThrow = () => { + + AutoRoute.validateOptions({ not_in_props: '' }); + }; + expect(itThrow).to.throw(); + }); + }); +}); diff --git a/test/fixtures/routes/index.js b/test/fixtures/routes/index.js new file mode 100644 index 0000000..ee06863 --- /dev/null +++ b/test/fixtures/routes/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/routes/pages/deep/deep.js b/test/fixtures/routes/pages/deep/deep.js new file mode 100644 index 0000000..48c4fde --- /dev/null +++ b/test/fixtures/routes/pages/deep/deep.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/deep', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/routes/pages/index.js b/test/fixtures/routes/pages/index.js new file mode 100644 index 0000000..ee06863 --- /dev/null +++ b/test/fixtures/routes/pages/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/routes/pages/list.js b/test/fixtures/routes/pages/list.js new file mode 100644 index 0000000..c048698 --- /dev/null +++ b/test/fixtures/routes/pages/list.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = [{ + 'method': 'GET', + 'path': '/page1', + handler: (request, h) => 'index.js' +}, { + 'method': 'GET', + 'path': '/page2', + handler: (request, h) => 'index.js' +}]; diff --git a/test/fixtures/routes/pages/pages1.js b/test/fixtures/routes/pages/pages1.js new file mode 100644 index 0000000..d08a515 --- /dev/null +++ b/test/fixtures/routes/pages/pages1.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/p1.view', + handler: (request, h) => 'index.js' +}; diff --git a/test/plugin-test.js b/test/plugin-test.js new file mode 100644 index 0000000..e4a4b62 --- /dev/null +++ b/test/plugin-test.js @@ -0,0 +1,50 @@ +'use strict'; + +const Lab = require('lab'); +const Hapi = require('hapi'); +const HapiAutoRoute = require('..'); +const { expect } = require('code'); + +const lab = exports.lab = Lab.script(); + +lab.describe('hapi-auto-route', () => { + + lab.it('register route to the server', async () => { + + const server = Hapi.Server({ port: 3000 }); + await server.register({ + plugin: HapiAutoRoute, + options: { + routes_dir: './test/fixtures/routes' + } + }); + let result = await server.inject('/'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/page1'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/p1.view'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/deep'); + expect(result.statusCode).to.be.equal(200); + }); + + lab.it('apply prefix', async () => { + + const server = Hapi.Server({ port: 3000 }); + await server.register({ + plugin: HapiAutoRoute, + options: { + routes_dir: './test/fixtures/routes', + use_prefix: true + } + }); + let result = await server.inject('/'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/pages/page1'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/pages/p1.view'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/pages/deep/deep'); + expect(result.statusCode).to.be.equal(200); + }); +}); diff --git a/test/prefix-test.js b/test/prefix-test.js new file mode 100644 index 0000000..90829b3 --- /dev/null +++ b/test/prefix-test.js @@ -0,0 +1,74 @@ +'use strict'; + +const Lab = require('lab'); +const Prefix = require('../lib/prefix'); +const { expect } = require('code'); + +const lab = exports.lab = Lab.script(); + +lab.describe('Prefix', () => { + + const files = [ + '/a/1.js', + '/a/b/2.js', + '/a/b/c/3.js' + ]; + + const baseDir = '/a'; + + lab.describe('#parse()', () => { + + lab.it('returns an array', () => { + + expect(Prefix.parse(files[0], baseDir)).to.be.an.array(); + }); + + lab.it('relative path from baseDir to file', () => { + + expect(Prefix.parse(files[0], baseDir)).to.not.include(['a']); + expect(Prefix.parse(files[1], baseDir)).to.not.include(['a']); + expect(Prefix.parse(files[2], baseDir)).to.not.include(['a']); + }); + + lab.it('removes filename', () => { + + expect(Prefix.parse(files[0], baseDir)).to.not.include(['1.js']); + expect(Prefix.parse(files[1], baseDir)).to.not.include(['2.js']); + expect(Prefix.parse(files[2], baseDir)).to.not.include(['3.js']); + }); + + lab.it('returned prefixes do not contain dot', () => { + + expect(Prefix.parse(files[0], baseDir)).to.not.include(['.']); + expect(Prefix.parse(files[1], baseDir)).to.not.include(['.']); + expect(Prefix.parse(files[2], baseDir)).to.not.include(['.']); + }); + + lab.it('return prefix in an array of string', () => { + + expect(Prefix.parse(files[0], baseDir)).to.only.include(['']); + expect(Prefix.parse(files[1], baseDir)).to.only.include(['b']); + expect(Prefix.parse(files[2], baseDir)).to.only.include(['b', 'c']); + }); + + lab.it('throw an error if baseDir is relative path', () => { + + const itThrow = () => { + + const relativeBaseDir = 'a'; + Prefix.parse(files[0], relativeBaseDir); + }; + expect(itThrow).to.throw(); + }); + }); + + lab.describe('joinPrefix()', () => { + + lab.it('join prefixes', () => { + + expect(Prefix.joinPrefix([''])).to.be.equal(''); + expect(Prefix.joinPrefix(['b'])).to.be.equal('/b'); + expect(Prefix.joinPrefix(['b', 'c'])).to.be.equal('/b/c'); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index 5a6b450..772550a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27,7 +27,7 @@ ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" -ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -96,10 +96,37 @@ arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + dependencies: + follow-redirects "^1.3.0" + is-buffer "^1.1.5" + b64@4.x.x: version "4.0.0" resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" @@ -116,6 +143,12 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + big-time@2.x.x: version "2.0.1" resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" @@ -173,6 +206,10 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + catbox-memory@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" @@ -261,6 +298,12 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +combined-stream@1.0.6, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -280,7 +323,7 @@ content@4.x.x: dependencies: boom "7.x.x" -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -298,6 +341,12 @@ cryptiles@4.x.x: dependencies: boom "7.x.x" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -324,6 +373,10 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + diff@3.5.x: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -334,6 +387,12 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -437,6 +496,10 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + external-editor@^2.0.4: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" @@ -445,6 +508,14 @@ external-editor@^2.0.4: iconv-lite "^0.4.17" tmp "^0.0.33" +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" @@ -483,6 +554,24 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" +follow-redirects@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" + dependencies: + debug "^3.1.0" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -491,6 +580,12 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -569,6 +664,17 @@ hapi@17.x.x: teamwork "3.x.x" topo "3.x.x" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -595,6 +701,14 @@ hoek@5.x.x: version "5.0.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + iconv-lite@^0.4.17: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -605,6 +719,10 @@ ignore@^3.3.3: version "3.3.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" +immutable@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -679,6 +797,10 @@ is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -693,6 +815,10 @@ isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + joi@13.x.x: version "13.3.0" resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" @@ -712,10 +838,18 @@ js-yaml@^3.9.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -726,7 +860,7 @@ json-stable-stringify@1.x.x: dependencies: jsonify "~0.0.0" -json-stringify-safe@5.x.x: +json-stringify-safe@5.x.x, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -734,6 +868,15 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -788,10 +931,16 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -mime-db@1.x.x: +mime-db@1.x.x, mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" +mime-types@^2.1.12, mime-types@~2.1.17: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -846,6 +995,10 @@ no-arrowception@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" +oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -892,6 +1045,10 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + pez@4.x.x: version "4.0.2" resolved "https://registry.yarnpkg.com/pez/-/pez-4.0.2.tgz#0a7c81b64968e90b0e9562b398f390939e9c4b53" @@ -947,6 +1104,14 @@ punycode@2.x.x: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.5.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + readable-stream@^2.2.2: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -967,6 +1132,31 @@ repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +request@^2.87.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + dependencies: + aws-sign2 "~0.7.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.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -1013,7 +1203,7 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -1081,6 +1271,20 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + statehood@6.x.x: version "6.0.6" resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" @@ -1182,6 +1386,22 @@ topo@3.x.x: dependencies: hoek "5.x.x" +tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -1209,6 +1429,18 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vise@3.x.x: version "3.0.0" resolved "https://registry.yarnpkg.com/vise/-/vise-3.0.0.tgz#76ad14ab31669c50fbb0817bc0e72fedcbb3bf4c" From 77b921f486d623bc82f72fd8b9d4b84875aec112 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 14:53:13 +0300 Subject: [PATCH 38/92] Fix package.json file --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d7cd44..fbb1c7a 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ }, "dependencies": { "glob": "7.x.x", - "joi": "13.x.x", + "joi": "13.x.x" } } From 3ea1b5be3aaa4b788ba58bcdc183c834240ff51c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 14:54:15 +0300 Subject: [PATCH 39/92] Remove unnecessary file --- test/fixtures/routes/pages/index.js | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 test/fixtures/routes/pages/index.js diff --git a/test/fixtures/routes/pages/index.js b/test/fixtures/routes/pages/index.js deleted file mode 100644 index ee06863..0000000 --- a/test/fixtures/routes/pages/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - 'method': 'GET', - 'path': '/', - handler: (request, h) => 'index.js' -}; From 9e00795fa075330291424111239c9bb9a0c6da5e Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 15:22:29 +0300 Subject: [PATCH 40/92] Fix issue #5 --- index.js | 2 +- lib/auto-route.js | 11 ++++++---- test/auto-route-test.js | 16 ++++++++++++++ test/fixtures/with-trailing-slash/index.js | 7 +++++++ .../with-trailing-slash/pages/index.js | 7 +++++++ test/plugin-test.js | 21 +++++++++++++++++++ 6 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/with-trailing-slash/index.js create mode 100644 test/fixtures/with-trailing-slash/pages/index.js diff --git a/index.js b/index.js index 6f6a22f..fe61094 100644 --- a/index.js +++ b/index.js @@ -17,7 +17,7 @@ exports.plugin = { if (opts.use_prefix) { prefixes = AutoRoute.getPrefixes(files, Path.join(process.cwd(), opts.routes_dir)); - routes = AutoRoute.updatePaths(prefixes, routes); + routes = AutoRoute.updatePaths(prefixes, routes, server.settings.router.stripTrailingSlash); } routes.forEach((route) => { diff --git a/lib/auto-route.js b/lib/auto-route.js index c69441a..f34d982 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -33,9 +33,9 @@ module.exports.getPrefixes = (files, baseDir) => { }); }; -module.exports.updatePaths = (prefixes, routes) => { +module.exports.updatePaths = (prefixes, routes, stripTrailingSlash) => { - const update = (route, index) => { + const update = (route, index, removeTrailingSlash) => { const newRoute = Hoek.clone(route); @@ -43,6 +43,9 @@ module.exports.updatePaths = (prefixes, routes) => { return newRoute; } newRoute.path = prefixes[index] + route.path; + if (removeTrailingSlash && newRoute.path.endsWith('/')) { + newRoute.path = newRoute.path.slice(0, -1); + } return newRoute; }; @@ -51,11 +54,11 @@ module.exports.updatePaths = (prefixes, routes) => { if (Array.isArray(route)) { return route.map((innerRoute, _index) => { - return update(innerRoute, index); + return update(innerRoute, index, stripTrailingSlash); }); } - return update(route, index); + return update(route, index, stripTrailingSlash); }); }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 1e6c1ca..8e6e440 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -95,6 +95,22 @@ lab.describe('AutoRoute', () => { expect(AutoRoute.updatePaths(prefixes, routes)[2].path).to.be.equal('/b/c/5'); }); + + lab.it('strip trailing slash', () => { + + const prefixes = [ + '/', + '/b', + '/b/c' + ]; + const routes = [{ path: '/' }, [{ path: '/' }, { path: '/3/' }, { path: '/4' }], { path: '/5/' }]; + expect(AutoRoute.updatePaths(prefixes, routes, true)).to.be.an.array(); + expect(AutoRoute.updatePaths(prefixes, routes, true)[0].path).to.be.equal('/'); + expect(AutoRoute.updatePaths(prefixes, routes, true)[1][0].path).to.be.equal('/b'); + expect(AutoRoute.updatePaths(prefixes, routes, true)[1][1].path).to.be.equal('/b/3'); + expect(AutoRoute.updatePaths(prefixes, routes, true)[1][2].path).to.be.equal('/b/4'); + expect(AutoRoute.updatePaths(prefixes, routes, true)[2].path).to.be.equal('/b/c/5'); + }); }); lab.describe('validateOptions(options)', () => { diff --git a/test/fixtures/with-trailing-slash/index.js b/test/fixtures/with-trailing-slash/index.js new file mode 100644 index 0000000..ee06863 --- /dev/null +++ b/test/fixtures/with-trailing-slash/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/with-trailing-slash/pages/index.js b/test/fixtures/with-trailing-slash/pages/index.js new file mode 100644 index 0000000..ee06863 --- /dev/null +++ b/test/fixtures/with-trailing-slash/pages/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/', + handler: (request, h) => 'index.js' +}; diff --git a/test/plugin-test.js b/test/plugin-test.js index e4a4b62..52157a3 100644 --- a/test/plugin-test.js +++ b/test/plugin-test.js @@ -47,4 +47,25 @@ lab.describe('hapi-auto-route', () => { result = await server.inject('/pages/deep/deep'); expect(result.statusCode).to.be.equal(200); }); + + lab.it('stripTrailingSlash', async () => { + + const server = Hapi.Server({ + port: 3000, + router: { + stripTrailingSlash: true + } + }); + await server.register({ + plugin: HapiAutoRoute, + options: { + routes_dir: './test/fixtures/with-trailing-slash', + use_prefix: true + } + }); + let result = await server.inject('/'); + expect(result.statusCode).to.be.equal(200); + result = await server.inject('/pages'); + expect(result.statusCode).to.be.equal(200); + }); }); From 0df3e4a5454bc05c090853b09c114bd940233d55 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 15:31:42 +0300 Subject: [PATCH 41/92] Keep changelog and update read me. --- CHANGELOG.md | 9 +++++++++ LICENSE.txt => LICENSE | 0 README.md | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md rename LICENSE.txt => LICENSE (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a0e6e5c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +# hapi-auto-route Change Log + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). + +## 2.0.2 + +- Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE diff --git a/README.md b/README.md index 06730b8..2bf8520 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,4 @@ If you find a bug in the source code or a mistake in the documentation, you can ## Licence -This project is licensed under the MIT License - see the [LICENSE.txt](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENSE.txt) file for details. +This project is licensed under the MIT License - see the [LICENSE](https://github.com/sitrakay/hapi-auto-route/blob/master/LICENSE) file for details. diff --git a/package.json b/package.json index fbb1c7a..fed1354 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "html-coverage": "lab --reporter html --output coverage.html" }, "files": [ - "LICENSE.txt", + "LICENSE", "lib/", "index.js", "README.md" From 877927fd447dfaa63bc01baac3e6196dbd3ae2ad Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 1 Jun 2018 15:42:40 +0300 Subject: [PATCH 42/92] 2.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fed1354..aca30eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.1", + "version": "2.0.2", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From f7ea34954e09cef0b1562d52983a1fe9cd4738b0 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 27 Aug 2018 10:53:05 +0300 Subject: [PATCH 43/92] Fixes #10 --- package.json | 2 +- yarn.lock | 541 ++++++++++++--------------------------------------- 2 files changed, 128 insertions(+), 415 deletions(-) diff --git a/package.json b/package.json index aca30eb..de27323 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "devDependencies": { "code": "5.x.x", "hapi": "17.x.x", - "lab": "15.x.x" + "lab": "16.x.x" }, "dependencies": { "glob": "7.x.x", diff --git a/yarn.lock b/yarn.lock index 772550a..0e324ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,32 +9,28 @@ accept@3.x.x: boom "7.x.x" hoek "5.x.x" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" dependencies: - acorn "^3.0.4" + acorn "^5.0.3" -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +acorn@^5.0.3, acorn@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" -acorn@^5.5.0: - version "5.5.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" - -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" +ajv-keywords@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" -ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" +ajv@^6.0.1, ajv@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" + fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" @@ -96,42 +92,15 @@ arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" - -axios@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" - dependencies: - follow-redirects "^1.3.0" - is-buffer "^1.1.5" - b64@4.x.x: version "4.0.0" resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" -babel-code-frame@^6.22.0: +babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -143,12 +112,6 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - big-time@2.x.x: version "2.0.1" resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" @@ -206,10 +169,6 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - catbox-memory@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" @@ -278,10 +237,6 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - code@5.x.x: version "5.2.0" resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" @@ -298,40 +253,23 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -combined-stream@1.0.6, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - content@4.x.x: version "4.0.5" resolved "https://registry.yarnpkg.com/content/-/content-4.0.5.tgz#bc547deabc889ab69bce17faf3585c29f4c41bf2" dependencies: boom "7.x.x" -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: - lru-cache "^4.0.1" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" shebang-command "^1.2.0" which "^1.2.9" @@ -341,12 +279,6 @@ cryptiles@4.x.x: dependencies: boom "7.x.x" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -373,10 +305,6 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - diff@3.5.x: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -387,19 +315,13 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -eslint-config-hapi@11.x.x: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-11.1.0.tgz#9e22136ff678deb8121d58c31f9a083a4a4a6f12" +eslint-config-hapi@12.x.x: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-12.0.0.tgz#2bcacc0e050d6734f95df077dc921fa755576d7e" eslint-plugin-hapi@4.x.x: version "4.1.0" @@ -411,72 +333,76 @@ eslint-plugin-hapi@4.x.x: hapi-scope-start "2.x.x" no-arrowception "1.x.x" -eslint-scope@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@4.19.x: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" +eslint@5.4.x: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" + ajv "^6.5.0" + babel-code-frame "^6.26.0" chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" + cross-spawn "^6.0.5" debug "^3.1.0" doctrine "^2.1.0" - eslint-scope "^3.7.1" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" + globals "^11.7.0" + ignore "^4.0.2" imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" + lodash "^4.17.5" + minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" pluralize "^7.0.0" progress "^2.0.0" - regexpp "^1.0.1" + regexpp "^2.0.0" require-uncached "^1.0.3" - semver "^5.3.0" + semver "^5.5.0" strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" -espree@3.5.x, espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" +espree@4.0.x, espree@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" + acorn "^5.6.0" + acorn-jsx "^4.1.1" esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -esquery@^1.0.0: +esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" dependencies: @@ -496,11 +422,7 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -external-editor@^2.0.4: +external-editor@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" dependencies: @@ -508,17 +430,9 @@ external-editor@^2.0.4: iconv-lite "^0.4.17" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -554,24 +468,6 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -follow-redirects@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" - dependencies: - debug "^3.1.0" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -580,12 +476,6 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -597,9 +487,9 @@ glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.0.1: - version "11.5.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" +globals@^11.7.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" globby@^5.0.0: version "5.0.0" @@ -664,17 +554,6 @@ hapi@17.x.x: teamwork "3.x.x" topo "3.x.x" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -701,27 +580,15 @@ hoek@5.x.x: version "5.0.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - iconv-lite@^0.4.17: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^3.3.3: - version "3.3.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" - -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" +ignore@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" imurmurhash@^0.1.4: version "0.1.4" @@ -734,25 +601,24 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" - external-editor "^2.0.4" + external-editor "^2.1.0" figures "^2.0.0" lodash "^4.3.0" mute-stream "0.0.7" run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" + rxjs "^5.5.2" string-width "^2.1.0" strip-ansi "^4.0.0" through "^2.3.6" @@ -793,18 +659,10 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-resolvable@^1.0.0: +is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - isemail@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" @@ -815,10 +673,6 @@ isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - joi@13.x.x: version "13.3.0" resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" @@ -831,24 +685,16 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.9.1: - version "3.11.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" +js-yaml@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -860,7 +706,7 @@ json-stable-stringify@1.x.x: dependencies: jsonify "~0.0.0" -json-stringify-safe@5.x.x, json-stringify-safe@~5.0.1: +json-stringify-safe@5.x.x: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -868,31 +714,22 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: is-buffer "^1.1.5" -lab@15.x.x: - version "15.4.5" - resolved "https://registry.yarnpkg.com/lab/-/lab-15.4.5.tgz#dab1ddcb43d9fbb9d818ecbaf5af83abfffc8059" +lab@16.x.x: + version "16.0.0" + resolved "https://registry.yarnpkg.com/lab/-/lab-16.0.0.tgz#1cb83cbae8d6ffe4d898cd8a9c1f203fdb123b19" dependencies: bossy "4.x.x" diff "3.5.x" - eslint "4.19.x" - eslint-config-hapi "11.x.x" + eslint "5.4.x" + eslint-config-hapi "12.x.x" eslint-plugin-hapi "4.x.x" - espree "3.5.x" + espree "4.0.x" find-rc "3.0.x" handlebars "4.x.x" hoek "5.x.x" @@ -916,7 +753,7 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lodash@^4.17.4, lodash@^4.3.0: +lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -924,23 +761,10 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -lru-cache@^4.0.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -mime-db@1.x.x, mime-db@~1.33.0: +mime-db@1.x.x: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.17: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - dependencies: - mime-db "~1.33.0" - mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -952,7 +776,7 @@ mimos@4.x.x: hoek "5.x.x" mime-db "1.x.x" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -984,6 +808,10 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + nigel@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/nigel/-/nigel-3.0.1.tgz#48a08859d65177312f1c25af7252c1e07bb07c2a" @@ -995,10 +823,6 @@ no-arrowception@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1045,9 +869,9 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" pez@4.x.x: version "4.0.2" @@ -1088,75 +912,22 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -punycode@2.x.x: +punycode@2.x.x, punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@~6.5.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -readable-stream@^2.2.2: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" +regexpp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -request@^2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - dependencies: - aws-sign2 "~0.7.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.3.1" - har-validator "~5.0.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -1193,19 +964,11 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" +rxjs@^5.5.2: + version "5.5.11" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + symbol-observable "1.0.1" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" @@ -1215,9 +978,9 @@ seedrandom@2.4.x: version "2.4.3" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" -semver@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@^5.5.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" shebang-command@^1.2.0: version "1.2.0" @@ -1271,20 +1034,6 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -sshpk@^1.7.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - statehood@6.x.x: version "6.0.6" resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" @@ -1303,12 +1052,6 @@ string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -1321,7 +1064,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -1351,12 +1094,16 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" + ajv "^6.0.1" + ajv-keywords "^3.0.0" chalk "^2.1.0" lodash "^4.17.4" slice-ansi "1.0.0" @@ -1366,7 +1113,7 @@ teamwork@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" -text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -1386,32 +1133,12 @@ topo@3.x.x: dependencies: hoek "5.x.x" -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" dependencies: prelude-ls "~1.1.2" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -1425,21 +1152,11 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + punycode "^2.1.0" vise@3.x.x: version "3.0.0" @@ -1490,10 +1207,6 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 9ae61cea84e954d36570fce07f5aceb4ba8c20d6 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 27 Aug 2018 10:57:13 +0300 Subject: [PATCH 44/92] Fixes linting --- lib/auto-route.js | 2 ++ lib/prefix.js | 1 + test/auto-route-test.js | 1 + test/prefix-test.js | 1 + 4 files changed, 5 insertions(+) diff --git a/lib/auto-route.js b/lib/auto-route.js index f34d982..e352d63 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -42,10 +42,12 @@ module.exports.updatePaths = (prefixes, routes, stripTrailingSlash) => { if (prefixes[index] === '/') { return newRoute; } + newRoute.path = prefixes[index] + route.path; if (removeTrailingSlash && newRoute.path.endsWith('/')) { newRoute.path = newRoute.path.slice(0, -1); } + return newRoute; }; diff --git a/lib/prefix.js b/lib/prefix.js index e03f1e9..4e75916 100644 --- a/lib/prefix.js +++ b/lib/prefix.js @@ -22,6 +22,7 @@ module.exports.joinPrefix = (prefixes) => { if (prefix === '') { return ''; } + return joined + '/' + prefix; }, ''); }; diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 8e6e440..f34b9c9 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -130,6 +130,7 @@ lab.describe('AutoRoute', () => { AutoRoute.validateOptions({ not_in_props: '' }); }; + expect(itThrow).to.throw(); }); }); diff --git a/test/prefix-test.js b/test/prefix-test.js index 90829b3..d14db2f 100644 --- a/test/prefix-test.js +++ b/test/prefix-test.js @@ -58,6 +58,7 @@ lab.describe('Prefix', () => { const relativeBaseDir = 'a'; Prefix.parse(files[0], relativeBaseDir); }; + expect(itThrow).to.throw(); }); }); From 833f4cd2beda7fb581e41b34fd97012c636ad882 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 27 Aug 2018 11:15:24 +0300 Subject: [PATCH 45/92] ignore logs --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index eaf0e20..aff5b05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ coverage.html +*.log From 7e6a0df90c321fa5c530e67577883a974267b078 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 27 Aug 2018 11:20:03 +0300 Subject: [PATCH 46/92] Release v2.0.3 --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0e6e5c..6fec343 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## 2.0.3 + +- Fix issues [#10](https://github.com/sitrakary/hapi-auto-route/issues/10). +- Fix lint errors. ## 2.0.2 - Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). diff --git a/package.json b/package.json index de27323..ccb2253 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.2", + "version": "2.0.3", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 95ace904d0d1c6cc8be2f1aa4e24952108ef5062 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 19 Sep 2018 11:10:59 +0300 Subject: [PATCH 47/92] Update node version to be compatible with version required by eslint --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index e3f76f3..7f6758e 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -8.9.4 +8.10.0 From 942012cec63e84472d7beb0584352f54d22b8972 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 26 Sep 2018 16:11:56 +0300 Subject: [PATCH 48/92] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2bf8520..a0f1f0a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![NPM](https://nodei.co/npm/hapi-auto-route.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/hapi-auto-route/) -hapi-auto-route is a hapi plugin that lets you load route objects automatically from a directory. +hapi-auto-route is a hapi plugin that lets you load route objects automatically from a directory. And allow routes path to be prefixed. ## Installation From 76dd08db440c3416a4a676bee7a474c1b36ef032 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 17 Oct 2018 10:34:22 +0300 Subject: [PATCH 49/92] Upgrade joi --- package.json | 2 +- yarn.lock | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ccb2253..8df5f54 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ }, "dependencies": { "glob": "7.x.x", - "joi": "13.x.x" + "joi": "14.x.x" } } diff --git a/yarn.lock b/yarn.lock index 0e324ee..bdc6275 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,7 @@ accept@3.x.x: version "3.0.2" resolved "https://registry.yarnpkg.com/accept/-/accept-3.0.2.tgz#83e41cec7e1149f3fd474880423873db6c6cc9ac" + integrity sha512-bghLXFkCOsC1Y2TZ51etWfKDs6q249SAoHTZVfzWWdlZxoij+mgkj9AmUJWQpDY48TfnrTDIe43Xem4zdMe7mQ== dependencies: boom "7.x.x" hoek "5.x.x" @@ -12,20 +13,24 @@ accept@3.x.x: acorn-jsx@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" + integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== dependencies: acorn "^5.0.3" acorn@^5.0.3, acorn@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" + integrity sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw== ajv-keywords@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= ajv@^6.0.1, ajv@^6.5.0: version "6.5.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -35,6 +40,7 @@ ajv@^6.0.1, ajv@^6.5.0: align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= dependencies: kind-of "^3.0.2" longest "^1.0.1" @@ -43,66 +49,80 @@ align-text@^0.1.1, align-text@^0.1.3: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ammo@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/ammo/-/ammo-3.0.1.tgz#c79ceeac36fb4e55085ea3fe0c2f42bfa5f7c914" + integrity sha512-4UqoM8xQjwkQ78oiU4NbBK0UgYqeKMAKmwE4ec7Rz3rGU8ZEBFxzgF2sUYKOAlqIXExBDYLN6y1ShF5yQ4hwLQ== dependencies: hoek "5.x.x" ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= b64@4.x.x: version "4.0.0" resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" + integrity sha512-EhmUQodKB0sdzPPrbIWbGqA5cQeTWxYrAgNeeT1rLZWtD3tbNTnphz8J4vkXI3cPgBNlXBjzEbzDzq0Nwi4f9A== babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -111,20 +131,24 @@ babel-code-frame@^6.26.0: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= big-time@2.x.x: version "2.0.1" resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" + integrity sha1-aMffjcMPl+lT8lpnp2rJcTwWyd4= boom@7.x.x: version "7.2.0" resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.0.tgz#2bff24a55565767fde869ec808317eb10c48e966" + integrity sha1-K/8kpVVldn/ehp7ICDF+sQxI6WY= dependencies: hoek "5.x.x" bossy@4.x.x: version "4.0.1" resolved "https://registry.yarnpkg.com/bossy/-/bossy-4.0.1.tgz#2a57c904988ca869954f2060b96fa0ecb12262ba" + integrity sha512-IrXZdXnDrjfk9ZVtnnmehlcTGK/KRqUJuNZJteMGU2/cJdXC6yWf2yhkAAbAgjOTsJJHXdlYloTeFH1ZgRNllw== dependencies: boom "7.x.x" hoek "5.x.x" @@ -133,6 +157,7 @@ bossy@4.x.x: bounce@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/bounce/-/bounce-1.2.0.tgz#e3bac68c73fd256e38096551efc09f504873c8c8" + integrity sha512-8syCGe8B2/WC53118/F/tFy5aW00j+eaGPXmAUP7iBhxc+EBZZxS1vKelWyBCH6IqojgS2t1gF0glH30qAJKEw== dependencies: boom "7.x.x" hoek "5.x.x" @@ -140,6 +165,7 @@ bounce@1.x.x: brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -147,10 +173,12 @@ brace-expansion@^1.1.7: buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + integrity sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA== call@5.x.x: version "5.0.1" resolved "https://registry.yarnpkg.com/call/-/call-5.0.1.tgz#ac1b5c106d9edc2a17af2a4a4f74dd4f0c06e910" + integrity sha512-ollfFPSshiuYLp7AsrmpkQJ/PxCi6AzV81rCjBwWhyF2QGyUY/vPDMzoh4aUcWyucheRglG2LaS5qkIEfLRh6A== dependencies: boom "7.x.x" hoek "5.x.x" @@ -158,20 +186,24 @@ call@5.x.x: caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= dependencies: callsites "^0.2.0" callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= catbox-memory@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" + integrity sha512-lhWtutLVhsq3Mucxk2McxBPPibJ34WcHuWFz3xqub9u9Ve/IQYpZv3ijLhQXfQped9DXozURiaq9O3aZpP91eg== dependencies: big-time "2.x.x" boom "7.x.x" @@ -180,6 +212,7 @@ catbox-memory@3.x.x: catbox@10.x.x: version "10.0.2" resolved "https://registry.yarnpkg.com/catbox/-/catbox-10.0.2.tgz#e6ac1f35102d1a9bd07915b82e508d12b50a8bfa" + integrity sha512-cTQTQeKMhWHU0lX8CADE3g1koGJu+AlcWFzAjMX/8P+XbkScGYw3tJsQpe2Oh8q68vOQbOLacz9k+6V/F3Z9DA== dependencies: boom "7.x.x" bounce "1.x.x" @@ -189,6 +222,7 @@ catbox@10.x.x: center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= dependencies: align-text "^0.1.3" lazy-cache "^1.0.3" @@ -196,6 +230,7 @@ center-align@^0.1.1: chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -206,6 +241,7 @@ chalk@^1.1.3: chalk@^2.0.0, chalk@^2.1.0: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -214,24 +250,29 @@ chalk@^2.0.0, chalk@^2.1.0: chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= dependencies: center-align "^0.1.1" right-align "^0.1.1" @@ -240,32 +281,38 @@ cliui@^2.1.0: code@5.x.x: version "5.2.0" resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" + integrity sha512-Ul69Vhv+L/sewD9azem9xvj6W+dW7XJ6UYust04KDEYQwyCb9M3ZkUjS7udFNSdvnYvbokBYDoXQXUg0P4DN5g== dependencies: hoek "5.x.x" color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== dependencies: color-name "^1.1.1" color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= content@4.x.x: version "4.0.5" resolved "https://registry.yarnpkg.com/content/-/content-4.0.5.tgz#bc547deabc889ab69bce17faf3585c29f4c41bf2" + integrity sha512-wDP6CTWDpwCf791fNxlCCkZGRkrNzSEU/8ju9Hnr3Uc5mF/gFR5W+fcoGm6zUSlVPdSXYn5pCbySADKj7YM4Cg== dependencies: boom "7.x.x" cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -276,26 +323,31 @@ cross-spawn@^6.0.5: cryptiles@4.x.x: version "4.1.1" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-4.1.1.tgz#169256b9df9fe3c73f8085c99e30b32247d4ab46" + integrity sha512-YuQUPbcOmaZsdvxJZ25DCA1W+lLIRoPJKBDKin+St1RCYEERSfoe1d25B1MvWNHN3e8SpFSVsqYvEUjp8J9H2w== dependencies: boom "7.x.x" debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" decamelize@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -308,24 +360,29 @@ del@^2.0.2: diff@3.5.x: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= eslint-config-hapi@12.x.x: version "12.0.0" resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-12.0.0.tgz#2bcacc0e050d6734f95df077dc921fa755576d7e" + integrity sha512-vHjuIIgbjsBU9y4SLAvxzrP38em32tlmzEJPMRZn2QR2id4bHettmFZdobx5k6P3j25Q9+hPfm0VT+zWDsIEWw== eslint-plugin-hapi@4.x.x: version "4.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz#ca6b97b7621ae45cf70ab92f8c847a85414a56c9" + integrity sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ== dependencies: hapi-capitalize-modules "1.x.x" hapi-for-you "1.x.x" @@ -336,6 +393,7 @@ eslint-plugin-hapi@4.x.x: eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -343,14 +401,17 @@ eslint-scope@^4.0.0: eslint-utils@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== eslint@5.4.x: version "5.4.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== dependencies: ajv "^6.5.0" babel-code-frame "^6.26.0" @@ -394,6 +455,7 @@ eslint@5.4.x: espree@4.0.x, espree@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" + integrity sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg== dependencies: acorn "^5.6.0" acorn-jsx "^4.1.1" @@ -401,30 +463,36 @@ espree@4.0.x, espree@^4.0.0: esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw== esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= external-editor@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== dependencies: chardet "^0.4.0" iconv-lite "^0.4.17" @@ -433,24 +501,29 @@ external-editor@^2.1.0: fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -458,10 +531,12 @@ file-entry-cache@^2.0.0: find-rc@3.0.x: version "3.0.1" resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" + integrity sha1-VKQXg3DxC8k3H6jRssKAmir6DM4= flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= dependencies: circular-json "^0.3.1" del "^2.0.2" @@ -471,14 +546,17 @@ flat-cache@^1.2.1: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -490,10 +568,12 @@ glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: globals@^11.7.0: version "11.7.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -505,10 +585,12 @@ globby@^5.0.0: graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= handlebars@4.x.x: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= dependencies: async "^1.4.0" optimist "^0.6.1" @@ -519,22 +601,27 @@ handlebars@4.x.x: hapi-capitalize-modules@1.x.x: version "1.1.6" resolved "https://registry.yarnpkg.com/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz#7991171415e15e6aa3231e64dda73c8146665318" + integrity sha1-eZEXFBXhXmqjIx5k3ac8gUZmUxg= hapi-for-you@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/hapi-for-you/-/hapi-for-you-1.0.0.tgz#d362fbee8d7bda9c2c7801e207e5a5cd1a0b6a7b" + integrity sha1-02L77o172pwseAHiB+WlzRoLans= hapi-no-var@1.x.x: version "1.0.1" resolved "https://registry.yarnpkg.com/hapi-no-var/-/hapi-no-var-1.0.1.tgz#e9d87fd4de6149104a3fca797ef5c2ef5c182342" + integrity sha512-kk2xyyTzI+eQ/oA1rO4eVdCpYsrPHVERHa6+mTHD08XXFLaAkkaEs6reMg1VyqGh2o5xPt//DO4EhCacLx/cRA== hapi-scope-start@2.x.x: version "2.1.1" resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" + integrity sha1-dJWnJv5yt7yo3izcwdh82M5qtPI= hapi@17.x.x: version "17.5.0" resolved "https://registry.yarnpkg.com/hapi/-/hapi-17.5.0.tgz#9fc33f10d6f563d0203853937b60dd13a59b51ce" + integrity sha512-/btV0jpXb8ldoywsAt+FZg3qUVCx2ZjeA29Mluo3w/gcCJtzUnZfGALS8xR3d2ssVySm7JXVqeepy37Z02gJLQ== dependencies: accept "3.x.x" ammo "3.x.x" @@ -557,20 +644,24 @@ hapi@17.x.x: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= heavy@6.x.x: version "6.1.0" resolved "https://registry.yarnpkg.com/heavy/-/heavy-6.1.0.tgz#1bbfa43dc61dd4b543ede3ff87db8306b7967274" + integrity sha512-TKS9DC9NOTGulHQI31Lx+bmeWmNOstbJbGMiN3pX6bF+Zc2GKSpbbym4oasNnB6yPGkqJ9TQXXYDGohqNSJRxA== dependencies: boom "7.x.x" hoek "5.x.x" @@ -579,24 +670,29 @@ heavy@6.x.x: hoek@5.x.x: version "5.0.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" + integrity sha512-Bmr56pxML1c9kU+NS51SMFkiVQAb+9uFfXwyqR2tn4w2FPvmPt65eZ9aCcEfRXd9G74HkZnILC6p967pED4aiw== iconv-lite@^0.4.17: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" ignore@^4.0.2: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -604,10 +700,12 @@ inflight@^1.0.4: inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inquirer@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -626,6 +724,7 @@ inquirer@^5.2.0: iron@5.x.x: version "5.0.4" resolved "https://registry.yarnpkg.com/iron/-/iron-5.0.4.tgz#003ed822f656f07c2b62762815f5de3947326867" + integrity sha512-7iQ5/xFMIYaNt9g2oiNiWdhrOTdRUMFaWENUd0KghxwPUhrIH8DUY8FEyLNTTzf75jaII+jMexLdY/2HfV61RQ== dependencies: boom "7.x.x" cryptiles "4.x.x" @@ -634,48 +733,67 @@ iron@5.x.x: is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== isemail@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" + integrity sha512-zfRhJn9rFSGhzU5tGZqepRSAj3+g6oTOHxMGGriWNJZzyLPUK8H7VHpqKntegnW8KLyGA9zwuNaCoopl40LTpg== dependencies: punycode "2.x.x" isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= joi@13.x.x: version "13.3.0" resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" + integrity sha512-iF6jEYVfBIoYXztYymia1JfuoVbxBNuOcwdbsdoGin9/jjhBLhonKmfTQOvePss8r8v4tU4JOcNmYPHZzKEFag== + dependencies: + hoek "5.x.x" + isemail "3.x.x" + topo "3.x.x" + +joi@14.x.x: + version "14.0.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-14.0.0.tgz#05a206b259e702f426eb2b2e523d642fb383e6ad" + integrity sha512-jEu+bPFcsgdPr85hVyjb5D5grxLEZniT6AB1vjewrRDbuYxe2r5quyxs3E32dF8fCXcaJnlRSy4jehSpDuNMNg== dependencies: hoek "5.x.x" isemail "3.x.x" @@ -684,10 +802,12 @@ joi@13.x.x: js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -695,34 +815,41 @@ js-yaml@^3.11.0: json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stable-stringify@1.x.x: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= dependencies: jsonify "~0.0.0" json-stringify-safe@5.x.x: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" lab@16.x.x: version "16.0.0" resolved "https://registry.yarnpkg.com/lab/-/lab-16.0.0.tgz#1cb83cbae8d6ffe4d898cd8a9c1f203fdb123b19" + integrity sha512-RiJYiGzaphEkQeoaENJevdBArwuQOil4p7azwGtLDz58/g/TtbAAODsP/ECQPmXkNORkkHd2WK8CNf9hG8iI+g== dependencies: bossy "4.x.x" diff "3.5.x" @@ -745,10 +872,12 @@ lab@16.x.x: lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -756,22 +885,27 @@ levn@^0.3.0, levn@~0.3.0: lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= mime-db@1.x.x: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimos@4.x.x: version "4.0.0" resolved "https://registry.yarnpkg.com/mimos/-/mimos-4.0.0.tgz#76e3d27128431cb6482fd15b20475719ad626a5a" + integrity sha512-JvlvRLqGIlk+AYypWrbrDmhsM+6JVx/xBM5S3AMwTBz1trPCEoPN/swO2L4Wu653fL7oJdgk8DMQyG/Gq3JkZg== dependencies: hoek "5.x.x" mime-db "1.x.x" @@ -779,42 +913,51 @@ mimos@4.x.x: minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= mkdirp@0.5.x, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nigel@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/nigel/-/nigel-3.0.1.tgz#48a08859d65177312f1c25af7252c1e07bb07c2a" + integrity sha512-kCVtUG9JyD//tsYrZY+/Y+2gUrANVSba8y23QkM5Znx0FOxlnl9Z4OVPBODmstKWTOvigfTO+Va1VPOu3eWSOQ== dependencies: hoek "5.x.x" vise "3.x.x" @@ -822,26 +965,31 @@ nigel@3.x.x: no-arrowception@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" + integrity sha1-W/PpXrnEG1c4SoBTM9qjtzTuMno= object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -849,6 +997,7 @@ optimist@^0.6.1: optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -860,22 +1009,27 @@ optionator@^0.8.2: os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= pez@4.x.x: version "4.0.2" resolved "https://registry.yarnpkg.com/pez/-/pez-4.0.2.tgz#0a7c81b64968e90b0e9562b398f390939e9c4b53" + integrity sha512-HuPxmGxHsEFPWhdkwBs2gIrHhFqktIxMtudISTFN95RQ85ZZAOl8Ki6u3nnN/X8OUaGlIGldk/l8p2IR4/i76w== dependencies: b64 "4.x.x" boom "7.x.x" @@ -886,24 +1040,29 @@ pez@4.x.x: pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== podium@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/podium/-/podium-3.1.2.tgz#b701429739cf6bdde6b3015ae6b48d400817ce9e" + integrity sha512-18VrjJAduIdPv7d9zWsfmKxTj3cQTYC5Pv5gtKxcWujYBpGbV+mhNSPYhlHW5xeWoazYyKfB9FEsPT12r5rY1A== dependencies: hoek "5.x.x" joi "13.x.x" @@ -911,26 +1070,32 @@ podium@3.x.x: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= punycode@2.x.x, punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== regexpp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" + integrity sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA== repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -938,10 +1103,12 @@ require-uncached@^1.0.3: resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -949,52 +1116,62 @@ restore-cursor@^2.0.0: right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= dependencies: align-text "^0.1.1" rimraf@^2.2.8: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" rxjs@^5.5.2: version "5.5.11" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" + integrity sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA== dependencies: symbol-observable "1.0.1" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== seedrandom@2.4.x: version "2.4.3" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" + integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw= semver@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shot@4.x.x: version "4.0.5" resolved "https://registry.yarnpkg.com/shot/-/shot-4.0.5.tgz#c7e7455d11d60f6b6cd3c43e15a3b431c17e5566" + integrity sha1-x+dFXRHWD2ts08Q+FaO0McF+VWY= dependencies: hoek "5.x.x" joi "13.x.x" @@ -1002,16 +1179,19 @@ shot@4.x.x: signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== dependencies: is-fullwidth-code-point "^2.0.0" source-map-support@0.5.x: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + integrity sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -1019,24 +1199,29 @@ source-map-support@0.5.x: source-map@0.6.x, source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= dependencies: amdefine ">=0.0.4" source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= statehood@6.x.x: version "6.0.6" resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" + integrity sha512-jR45n5ZMAkasw0xoE9j9TuLmJv4Sa3AkXe+6yIFT6a07kXYHgSbuD2OVGECdZGFxTmvNqLwL1iRIgvq6O6rq+A== dependencies: boom "7.x.x" bounce "1.x.x" @@ -1048,6 +1233,7 @@ statehood@6.x.x: string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -1055,22 +1241,26 @@ string-width@^2.1.0, string-width@^2.1.1: strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= subtext@6.x.x: version "6.0.7" resolved "https://registry.yarnpkg.com/subtext/-/subtext-6.0.7.tgz#8e40a67901a734d598142665c90e398369b885f9" + integrity sha512-IcJUvRjeR+NB437Iq+LORFNJW4L6Knqkj3oQrBrkdhIaS2VKJvx/9aYEq7vi+PEx5/OuehOL/40SkSZotLi/MA== dependencies: boom "7.x.x" content "4.x.x" @@ -1081,26 +1271,31 @@ subtext@6.x.x: supports-color@4.4.x: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== dependencies: has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== dependencies: has-flag "^3.0.0" symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= table@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== dependencies: ajv "^6.0.1" ajv-keywords "^3.0.0" @@ -1112,36 +1307,43 @@ table@^4.0.3: teamwork@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" + integrity sha512-hEkJIpDOfOYe9NYaLFk00zQbzZeKNCY8T2pRH3I13Y1mJwxaSQ6NEsjY5rCp+11ezCiZpWGoGFTbOuhg4qKevQ== text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" topo@3.x.x: version "3.0.0" resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.0.tgz#37e48c330efeac784538e0acd3e62ca5e231fe7a" + integrity sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw== dependencies: hoek "5.x.x" type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -1151,52 +1353,63 @@ uglify-js@^2.6: uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" vise@3.x.x: version "3.0.0" resolved "https://registry.yarnpkg.com/vise/-/vise-3.0.0.tgz#76ad14ab31669c50fbb0817bc0e72fedcbb3bf4c" + integrity sha512-kBFZLmiL1Vm3rHXphkhvvAcsjgeQXRrOFCbJb0I50YZZP4HGRNH+xGzK3matIMcpbsfr3I02u9odj4oCD0TWgA== dependencies: hoek "5.x.x" which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" will-call@1.x.x: version "1.0.1" resolved "https://registry.yarnpkg.com/will-call/-/will-call-1.0.1.tgz#9b37561ea7156aaba21b28fdf635b80fe78bf166" + integrity sha512-1hEeV8SfBYhNRc/bNXeQfyUBX8Dl9SCYME3qXh99iZP9wJcnhnlBsoBw8Y0lXVZ3YuPsoxImTzBiol1ouNR/hg== window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= wreck@14.x.x: version "14.0.2" resolved "https://registry.yarnpkg.com/wreck/-/wreck-14.0.2.tgz#89c17a9061c745ed1c3aebcb66ea181dbaab454c" + integrity sha512-QCm3omWNJUseqrSzwX2QZi1rBbmCfbFHJAXputLLyZ37VSiFnSYQB0ms/mPnSvrlIu7GVm89Y/gBNhSY26uVIQ== dependencies: boom "7.x.x" hoek "5.x.x" @@ -1204,12 +1417,14 @@ wreck@14.x.x: write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= dependencies: mkdirp "^0.5.1" yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= dependencies: camelcase "^1.0.2" cliui "^2.1.0" From 681a1803deb2906ef48a8a98a0b4089b79297602 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 17 Oct 2018 10:34:50 +0300 Subject: [PATCH 50/92] v2.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8df5f54..2e5a9f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.3", + "version": "2.0.4", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From c20b67286705eb1a2e2fa401269da79ec8c61dc1 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 13 Feb 2019 15:45:29 +0300 Subject: [PATCH 51/92] Fix #11 --- CHANGELOG.md | 4 + README.md | 2 +- package.json | 4 +- yarn.lock | 517 ++++++++++++++++++++++++++------------------------- 4 files changed, 269 insertions(+), 258 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fec343..08b9819 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,3 +11,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ## 2.0.2 - Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). + +## 2.0.3 + +- Update dependencies. diff --git a/README.md b/README.md index a0f1f0a..1ba82e4 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ hapi-auto-route is a hapi plugin that lets you load route objects automatically ## Installation -For Hapi `v17.x.x`: +For Hapi `>= v17`: ```bash npm i -S hapi-auto-route diff --git a/package.json b/package.json index 2e5a9f8..30b235c 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ ], "devDependencies": { "code": "5.x.x", - "hapi": "17.x.x", - "lab": "16.x.x" + "hapi": "18.x.x", + "lab": "18.x.x" }, "dependencies": { "glob": "7.x.x", diff --git a/yarn.lock b/yarn.lock index bdc6275..2729cff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,22 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + accept@3.x.x: version "3.0.2" resolved "https://registry.yarnpkg.com/accept/-/accept-3.0.2.tgz#83e41cec7e1149f3fd474880423873db6c6cc9ac" @@ -10,27 +26,20 @@ accept@3.x.x: boom "7.x.x" hoek "5.x.x" -acorn-jsx@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" - integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== - dependencies: - acorn "^5.0.3" - -acorn@^5.0.3, acorn@^5.6.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" - integrity sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw== +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -ajv-keywords@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= +acorn@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" + integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== -ajv@^6.0.1, ajv@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" - integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== +ajv@^6.5.3, ajv@^6.9.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" + integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -58,27 +67,22 @@ ammo@3.x.x: dependencies: hoek "5.x.x" -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -109,6 +113,11 @@ arrify@^1.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -119,25 +128,11 @@ b64@4.x.x: resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" integrity sha512-EhmUQodKB0sdzPPrbIWbGqA5cQeTWxYrAgNeeT1rLZWtD3tbNTnphz8J4vkXI3cPgBNlXBjzEbzDzq0Nwi4f9A== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -big-time@2.x.x: - version "2.0.1" - resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" - integrity sha1-aMffjcMPl+lT8lpnp2rJcTwWyd4= - boom@7.x.x: version "7.2.0" resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.0.tgz#2bff24a55565767fde869ec808317eb10c48e966" @@ -183,31 +178,23 @@ call@5.x.x: boom "7.x.x" hoek "5.x.x" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= +callsites@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" + integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= -catbox-memory@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" - integrity sha512-lhWtutLVhsq3Mucxk2McxBPPibJ34WcHuWFz3xqub9u9Ve/IQYpZv3ijLhQXfQped9DXozURiaq9O3aZpP91eg== +catbox-memory@4.x.x: + version "4.0.1" + resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-4.0.1.tgz#3371ae0dd91bbf5d9dd88dcab5332470354cbd1f" + integrity sha512-ZmqNiLsYCIu9qvBJ/MQbznDV2bFH5gFiH67TgIJgSSffJFtTXArT+MM3AvJQlby9NSkLHOX4eH/uuUqnch/Ldw== dependencies: - big-time "2.x.x" boom "7.x.x" - hoek "5.x.x" + hoek "6.x.x" catbox@10.x.x: version "10.0.2" @@ -227,17 +214,6 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.1.0: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" @@ -247,10 +223,19 @@ chalk@^2.0.0, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== circular-json@^0.3.1: version "0.3.3" @@ -327,12 +312,12 @@ cryptiles@4.x.x: dependencies: boom "7.x.x" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: - ms "2.0.0" + ms "^2.1.1" decamelize@^1.0.0: version "1.2.0" @@ -357,10 +342,10 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -diff@3.5.x: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@4.x.x: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== doctrine@^2.1.0: version "2.1.0" @@ -369,7 +354,12 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -408,32 +398,32 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@5.4.x: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" - integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== +eslint@5.x.x: + version "5.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" + integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg== dependencies: - ajv "^6.5.0" - babel-code-frame "^6.26.0" + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" chalk "^2.1.0" cross-spawn "^6.0.5" - debug "^3.1.0" + debug "^4.0.1" doctrine "^2.1.0" eslint-scope "^4.0.0" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^4.0.0" + espree "^5.0.0" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" glob "^7.1.2" globals "^11.7.0" - ignore "^4.0.2" + ignore "^4.0.6" + import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^5.2.0" - is-resolvable "^1.1.0" - js-yaml "^3.11.0" + inquirer "^6.1.0" + js-yaml "^3.12.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.5" @@ -442,23 +432,22 @@ eslint@5.4.x: natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" - pluralize "^7.0.0" progress "^2.0.0" - regexpp "^2.0.0" - require-uncached "^1.0.3" - semver "^5.5.0" + regexpp "^2.0.1" + semver "^5.5.1" strip-ansi "^4.0.0" strip-json-comments "^2.0.1" - table "^4.0.3" + table "^5.0.2" text-table "^0.2.0" -espree@4.0.x, espree@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" - integrity sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg== +espree@5.x.x, espree@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" + integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== dependencies: - acorn "^5.6.0" - acorn-jsx "^4.1.1" + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" esprima@^4.0.0: version "4.0.0" @@ -489,13 +478,13 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= -external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== +external-editor@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" + chardet "^0.7.0" + iconv-lite "^0.4.24" tmp "^0.0.33" fast-deep-equal@^2.0.1: @@ -528,10 +517,10 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -find-rc@3.0.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-3.0.1.tgz#54a4178370f10bc9371fa8d1b2c2809a2afa0cce" - integrity sha1-VKQXg3DxC8k3H6jRssKAmir6DM4= +find-rc@4.x.x: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-4.0.0.tgz#99e43c5a0c75e9d3887d21ecb31ef74923572aa3" + integrity sha512-jvkAF340j/ntR8cBRPLg/ElqWodgjfInY4SwLqDVqrmYDJormOIfM4lbtIcLZ0x8W5xWyrUy+mdoMwyo6OYuaQ== flat-cache@^1.2.1: version "1.3.0" @@ -618,10 +607,10 @@ hapi-scope-start@2.x.x: resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" integrity sha1-dJWnJv5yt7yo3izcwdh82M5qtPI= -hapi@17.x.x: - version "17.5.0" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-17.5.0.tgz#9fc33f10d6f563d0203853937b60dd13a59b51ce" - integrity sha512-/btV0jpXb8ldoywsAt+FZg3qUVCx2ZjeA29Mluo3w/gcCJtzUnZfGALS8xR3d2ssVySm7JXVqeepy37Z02gJLQ== +hapi@18.x.x: + version "18.1.0" + resolved "https://registry.yarnpkg.com/hapi/-/hapi-18.1.0.tgz#98a2a5a8f37a41eb196bdad9727f66b1fbca5fec" + integrity sha512-nSU1VLyTAgp7P5gy47QzJIP2JAb+wOFvJIV3gnL0lFj/mD+HuTXhyUsDYXjF/dhADMVXVEz31z6SUHBJhtsvGA== dependencies: accept "3.x.x" ammo "3.x.x" @@ -629,30 +618,19 @@ hapi@17.x.x: bounce "1.x.x" call "5.x.x" catbox "10.x.x" - catbox-memory "3.x.x" + catbox-memory "4.x.x" heavy "6.x.x" - hoek "5.x.x" - joi "13.x.x" + hoek "6.x.x" + joi "14.x.x" mimos "4.x.x" podium "3.x.x" shot "4.x.x" + somever "2.x.x" statehood "6.x.x" subtext "6.x.x" teamwork "3.x.x" topo "3.x.x" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -672,18 +650,31 @@ hoek@5.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" integrity sha512-Bmr56pxML1c9kU+NS51SMFkiVQAb+9uFfXwyqR2tn4w2FPvmPt65eZ9aCcEfRXd9G74HkZnILC6p967pED4aiw== -iconv-lite@^0.4.17: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== +hoek@6.x.x: + version "6.1.2" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.2.tgz#99e6d070561839de74ee427b61aa476bd6bddfd6" + integrity sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^4.0.2: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +import-fresh@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -702,23 +693,23 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -inquirer@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== +inquirer@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" + integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" + ansi-escapes "^3.2.0" + chalk "^2.4.2" cli-cursor "^2.1.0" cli-width "^2.0.0" - external-editor "^2.1.0" + external-editor "^3.0.3" figures "^2.0.0" - lodash "^4.3.0" + lodash "^4.17.11" mute-stream "0.0.7" run-async "^2.2.0" - rxjs "^5.5.2" + rxjs "^6.4.0" string-width "^2.1.0" - strip-ansi "^4.0.0" + strip-ansi "^5.0.0" through "^2.3.6" iron@5.x.x: @@ -764,11 +755,6 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - isemail@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" @@ -799,15 +785,15 @@ joi@14.x.x: isemail "3.x.x" topo "3.x.x" -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== +js-yaml@^3.12.0: + version "3.12.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" + integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -846,27 +832,27 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" -lab@16.x.x: - version "16.0.0" - resolved "https://registry.yarnpkg.com/lab/-/lab-16.0.0.tgz#1cb83cbae8d6ffe4d898cd8a9c1f203fdb123b19" - integrity sha512-RiJYiGzaphEkQeoaENJevdBArwuQOil4p7azwGtLDz58/g/TtbAAODsP/ECQPmXkNORkkHd2WK8CNf9hG8iI+g== +lab@18.x.x: + version "18.0.2" + resolved "https://registry.yarnpkg.com/lab/-/lab-18.0.2.tgz#6e1682106f573694700c545c1a1bdc5f68be5b27" + integrity sha512-b/BuQr/rqOVyO+kRcEJVqKcIZS9ypcO5CJjR1y4UAz/P2UFd5qjtbCt/BJ9vre/0EJt3Mb2m72V6jNBCwsOxxA== dependencies: bossy "4.x.x" - diff "3.5.x" - eslint "5.4.x" + diff "4.x.x" + eslint "5.x.x" eslint-config-hapi "12.x.x" eslint-plugin-hapi "4.x.x" - espree "4.0.x" - find-rc "3.0.x" + espree "5.x.x" + find-rc "4.x.x" handlebars "4.x.x" - hoek "5.x.x" + hoek "6.x.x" json-stable-stringify "1.x.x" json-stringify-safe "5.x.x" mkdirp "0.5.x" - seedrandom "2.4.x" - source-map "0.6.x" + seedrandom "2.x.x" + source-map "0.7.x" source-map-support "0.5.x" - supports-color "4.4.x" + supports-color "6.x.x" will-call "1.x.x" lazy-cache@^1.0.3: @@ -882,7 +868,12 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.17.11: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@^4.17.5: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== @@ -934,10 +925,10 @@ mkdirp@0.5.x, mkdirp@^0.5.1: dependencies: minimist "0.0.8" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== mute-stream@0.0.7: version "0.0.7" @@ -1011,6 +1002,13 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +parent-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" + integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== + dependencies: + callsites "^3.0.0" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1054,11 +1052,6 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - podium@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/podium/-/podium-3.1.2.tgz#b701429739cf6bdde6b3015ae6b48d400817ce9e" @@ -1082,28 +1075,20 @@ punycode@2.x.x, punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -regexpp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" - integrity sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA== +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== restore-cursor@^2.0.0: version "2.0.0" @@ -1134,28 +1119,33 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -rxjs@^5.5.2: - version "5.5.11" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" - integrity sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA== +rxjs@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== dependencies: - symbol-observable "1.0.1" + tslib "^1.9.0" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -seedrandom@2.4.x: - version "2.4.3" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" - integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw= +seedrandom@2.x.x: + version "2.4.4" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" + integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== semver@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== +semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -1181,13 +1171,23 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +somever@2.x.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/somever/-/somever-2.0.0.tgz#7bdbed3bee8ece2c7c8a2e7d9a1c022bd98d6c89" + integrity sha512-9JaIPP+HxwYGqCDqqK3tRaTqdtQHoK6Qy3IrXhIt2q5x8fs8RcfU7BMWlFTCOgFazK8p88zIv1tHQXvAwtXMyw== + dependencies: + bounce "1.x.x" + hoek "6.x.x" + source-map-support@0.5.x: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" @@ -1196,10 +1196,10 @@ source-map-support@0.5.x: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.x, source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@0.7.x: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== source-map@^0.4.4: version "0.4.4" @@ -1208,6 +1208,11 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -1230,7 +1235,7 @@ statehood@6.x.x: iron "5.x.x" joi "13.x.x" -string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -1238,12 +1243,14 @@ string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +string-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1" + integrity sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew== dependencies: - ansi-regex "^2.0.0" + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.0.0" strip-ansi@^4.0.0: version "4.0.0" @@ -1252,6 +1259,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -1268,17 +1282,12 @@ subtext@6.x.x: pez "4.x.x" wreck "14.x.x" -supports-color@4.4.x: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== +supports-color@6.x.x: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: - has-flag "^2.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + has-flag "^3.0.0" supports-color@^5.3.0: version "5.4.0" @@ -1287,22 +1296,15 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -table@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== +table@^5.0.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" + integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" teamwork@3.x.x: version "3.0.1" @@ -1333,6 +1335,11 @@ topo@3.x.x: dependencies: hoek "5.x.x" +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" From dd79ebaa89c9b61ea29e549d4dd800293a7beaf3 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 13 Feb 2019 15:45:34 +0300 Subject: [PATCH 52/92] 2.0.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 30b235c..ce137dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.4", + "version": "2.0.5", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 1717f4193f9508cb53ddfb9245ec52201c5deb5c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 14 Feb 2019 12:51:10 +0300 Subject: [PATCH 53/92] Update repos --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index ce137dd..6580bfc 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,15 @@ "name": "hapi-auto-route", "version": "2.0.5", "description": "Autoloads hapi routes", - "author": "Sitraka Ratsimba ", + "author": "Sitraka Ratsimba ", "main": "lib/index.js", "keywords": [ "hapi", "route", "autoload" ], - "repository": "https://github.com/sitrakay/hapi-auto-route.git", - "bugs": "https://github.com/sitrakay/hapi-auto-route/issues", + "repository": "https://github.com/hsitraka/hapi-auto-route.git", + "bugs": "https://github.com/hsitraka/hapi-auto-route/issues", "license": "MIT", "scripts": { "test": "lab --coverage --lint", From d1824931e676d9cc9d6ad08f0725c08dfe579f0d Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 14 Feb 2019 12:57:11 +0300 Subject: [PATCH 54/92] 2.0.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6580bfc..ccb3279 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.5", + "version": "2.0.6", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 4dbb688b35361d9993df08925275af9532772e0c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 14 Feb 2019 13:18:13 +0300 Subject: [PATCH 55/92] update README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1ba82e4..d358120 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ hapi-auto-route is a hapi plugin that lets you load route objects automatically from a directory. And allow routes path to be prefixed. +Maintainer: [Sitraka Ratsimba](https://github.com/hsitraka) + ## Installation For Hapi `>= v17`: From bd251165ac35ff5ace6b362a6903092bd6d2d7a8 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 6 Jun 2019 11:20:40 +0300 Subject: [PATCH 56/92] Fixes #13: Update deprecated package from hapi :arrow_up: --- .gitignore | 2 + lib/auto-route.js | 4 +- lib/prefix.js | 2 +- package.json | 8 +- test/auto-route-test.js | 4 +- test/plugin-test.js | 6 +- test/prefix-test.js | 4 +- yarn.lock | 1439 --------------------------------------- 8 files changed, 16 insertions(+), 1453 deletions(-) delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index aff5b05..dfe93fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules/ coverage.html *.log +yarn.lock +package-lock.json diff --git a/lib/auto-route.js b/lib/auto-route.js index e352d63..9124c88 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -1,8 +1,8 @@ 'use strict'; const Glob = require('glob'); -const Hoek = require('hoek'); -const Joi = require('joi'); +const Hoek = require('@hapi/hoek'); +const Joi = require('@hapi/joi'); const Path = require('path'); const Util = require('util'); const Prefix = require('./prefix'); diff --git a/lib/prefix.js b/lib/prefix.js index 4e75916..88b7f11 100644 --- a/lib/prefix.js +++ b/lib/prefix.js @@ -1,7 +1,7 @@ 'use strict'; const Path = require('path'); -const Hoek = require('hoek'); +const Hoek = require('@hapi/hoek'); module.exports.parse = (file, baseDir) => { diff --git a/package.json b/package.json index ccb3279..d9a1f9f 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,12 @@ "README.md" ], "devDependencies": { - "code": "5.x.x", - "hapi": "18.x.x", - "lab": "18.x.x" + "@hapi/code": "5.x.x", + "@hapi/hapi": "18.x.x", + "@hapi/lab": "18.x.x" }, "dependencies": { "glob": "7.x.x", - "joi": "14.x.x" + "@hapi/joi": "15.x.x" } } diff --git a/test/auto-route-test.js b/test/auto-route-test.js index f34b9c9..4ac21e4 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -1,10 +1,10 @@ 'use strict'; -const Lab = require('lab'); +const Lab = require('@hapi/lab'); const Path = require('path'); const AutoRoute = require('../lib/auto-route'); -const { expect } = require('code'); +const { expect } = require('@hapi/code'); const lab = exports.lab = Lab.script(); diff --git a/test/plugin-test.js b/test/plugin-test.js index 52157a3..4e05cea 100644 --- a/test/plugin-test.js +++ b/test/plugin-test.js @@ -1,9 +1,9 @@ 'use strict'; -const Lab = require('lab'); -const Hapi = require('hapi'); +const Lab = require('@hapi/lab'); +const Hapi = require('@hapi/hapi'); const HapiAutoRoute = require('..'); -const { expect } = require('code'); +const { expect } = require('@hapi/code'); const lab = exports.lab = Lab.script(); diff --git a/test/prefix-test.js b/test/prefix-test.js index d14db2f..a8ce207 100644 --- a/test/prefix-test.js +++ b/test/prefix-test.js @@ -1,8 +1,8 @@ 'use strict'; -const Lab = require('lab'); +const Lab = require('@hapi/lab'); const Prefix = require('../lib/prefix'); -const { expect } = require('code'); +const { expect } = require('@hapi/code'); const lab = exports.lab = Lab.script(); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 2729cff..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1439 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -accept@3.x.x: - version "3.0.2" - resolved "https://registry.yarnpkg.com/accept/-/accept-3.0.2.tgz#83e41cec7e1149f3fd474880423873db6c6cc9ac" - integrity sha512-bghLXFkCOsC1Y2TZ51etWfKDs6q249SAoHTZVfzWWdlZxoij+mgkj9AmUJWQpDY48TfnrTDIe43Xem4zdMe7mQ== - dependencies: - boom "7.x.x" - hoek "5.x.x" - -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== - -acorn@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" - integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== - -ajv@^6.5.3, ajv@^6.9.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" - integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ammo@3.x.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ammo/-/ammo-3.0.1.tgz#c79ceeac36fb4e55085ea3fe0c2f42bfa5f7c914" - integrity sha512-4UqoM8xQjwkQ78oiU4NbBK0UgYqeKMAKmwE4ec7Rz3rGU8ZEBFxzgF2sUYKOAlqIXExBDYLN6y1ShF5yQ4hwLQ== - dependencies: - hoek "5.x.x" - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" - integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -b64@4.x.x: - version "4.0.0" - resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" - integrity sha512-EhmUQodKB0sdzPPrbIWbGqA5cQeTWxYrAgNeeT1rLZWtD3tbNTnphz8J4vkXI3cPgBNlXBjzEbzDzq0Nwi4f9A== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -boom@7.x.x: - version "7.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-7.2.0.tgz#2bff24a55565767fde869ec808317eb10c48e966" - integrity sha1-K/8kpVVldn/ehp7ICDF+sQxI6WY= - dependencies: - hoek "5.x.x" - -bossy@4.x.x: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bossy/-/bossy-4.0.1.tgz#2a57c904988ca869954f2060b96fa0ecb12262ba" - integrity sha512-IrXZdXnDrjfk9ZVtnnmehlcTGK/KRqUJuNZJteMGU2/cJdXC6yWf2yhkAAbAgjOTsJJHXdlYloTeFH1ZgRNllw== - dependencies: - boom "7.x.x" - hoek "5.x.x" - joi "13.x.x" - -bounce@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bounce/-/bounce-1.2.0.tgz#e3bac68c73fd256e38096551efc09f504873c8c8" - integrity sha512-8syCGe8B2/WC53118/F/tFy5aW00j+eaGPXmAUP7iBhxc+EBZZxS1vKelWyBCH6IqojgS2t1gF0glH30qAJKEw== - dependencies: - boom "7.x.x" - hoek "5.x.x" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-from@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" - integrity sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA== - -call@5.x.x: - version "5.0.1" - resolved "https://registry.yarnpkg.com/call/-/call-5.0.1.tgz#ac1b5c106d9edc2a17af2a4a4f74dd4f0c06e910" - integrity sha512-ollfFPSshiuYLp7AsrmpkQJ/PxCi6AzV81rCjBwWhyF2QGyUY/vPDMzoh4aUcWyucheRglG2LaS5qkIEfLRh6A== - dependencies: - boom "7.x.x" - hoek "5.x.x" - -callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - -catbox-memory@4.x.x: - version "4.0.1" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-4.0.1.tgz#3371ae0dd91bbf5d9dd88dcab5332470354cbd1f" - integrity sha512-ZmqNiLsYCIu9qvBJ/MQbznDV2bFH5gFiH67TgIJgSSffJFtTXArT+MM3AvJQlby9NSkLHOX4eH/uuUqnch/Ldw== - dependencies: - boom "7.x.x" - hoek "6.x.x" - -catbox@10.x.x: - version "10.0.2" - resolved "https://registry.yarnpkg.com/catbox/-/catbox-10.0.2.tgz#e6ac1f35102d1a9bd07915b82e508d12b50a8bfa" - integrity sha512-cTQTQeKMhWHU0lX8CADE3g1koGJu+AlcWFzAjMX/8P+XbkScGYw3tJsQpe2Oh8q68vOQbOLacz9k+6V/F3Z9DA== - dependencies: - boom "7.x.x" - bounce "1.x.x" - hoek "5.x.x" - joi "13.x.x" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^2.0.0, chalk@^2.1.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -code@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/code/-/code-5.2.0.tgz#fb3a5e247afc17e3d65c49e7ce0f69ebe51a75b5" - integrity sha512-Ul69Vhv+L/sewD9azem9xvj6W+dW7XJ6UYust04KDEYQwyCb9M3ZkUjS7udFNSdvnYvbokBYDoXQXUg0P4DN5g== - dependencies: - hoek "5.x.x" - -color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" - integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -content@4.x.x: - version "4.0.5" - resolved "https://registry.yarnpkg.com/content/-/content-4.0.5.tgz#bc547deabc889ab69bce17faf3585c29f4c41bf2" - integrity sha512-wDP6CTWDpwCf791fNxlCCkZGRkrNzSEU/8ju9Hnr3Uc5mF/gFR5W+fcoGm6zUSlVPdSXYn5pCbySADKj7YM4Cg== - dependencies: - boom "7.x.x" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@4.x.x: - version "4.1.1" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-4.1.1.tgz#169256b9df9fe3c73f8085c99e30b32247d4ab46" - integrity sha512-YuQUPbcOmaZsdvxJZ25DCA1W+lLIRoPJKBDKin+St1RCYEERSfoe1d25B1MvWNHN3e8SpFSVsqYvEUjp8J9H2w== - dependencies: - boom "7.x.x" - -debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -diff@4.x.x: - version "4.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" - integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-config-hapi@12.x.x: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-hapi/-/eslint-config-hapi-12.0.0.tgz#2bcacc0e050d6734f95df077dc921fa755576d7e" - integrity sha512-vHjuIIgbjsBU9y4SLAvxzrP38em32tlmzEJPMRZn2QR2id4bHettmFZdobx5k6P3j25Q9+hPfm0VT+zWDsIEWw== - -eslint-plugin-hapi@4.x.x: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz#ca6b97b7621ae45cf70ab92f8c847a85414a56c9" - integrity sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ== - dependencies: - hapi-capitalize-modules "1.x.x" - hapi-for-you "1.x.x" - hapi-no-var "1.x.x" - hapi-scope-start "2.x.x" - no-arrowception "1.x.x" - -eslint-scope@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" - integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== - -eslint@5.x.x: - version "5.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" - integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.5.3" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^2.1.0" - eslint-scope "^4.0.0" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.0" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.1.0" - js-yaml "^3.12.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.5" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.0.2" - text-table "^0.2.0" - -espree@5.x.x, espree@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" - integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== - dependencies: - acorn "^6.0.2" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw== - -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -find-rc@4.x.x: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-rc/-/find-rc-4.0.0.tgz#99e43c5a0c75e9d3887d21ecb31ef74923572aa3" - integrity sha512-jvkAF340j/ntR8cBRPLg/ElqWodgjfInY4SwLqDVqrmYDJormOIfM4lbtIcLZ0x8W5xWyrUy+mdoMwyo6OYuaQ== - -flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -glob@7.x.x, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.7.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= - -handlebars@4.x.x: - version "4.0.11" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" - integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -hapi-capitalize-modules@1.x.x: - version "1.1.6" - resolved "https://registry.yarnpkg.com/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz#7991171415e15e6aa3231e64dda73c8146665318" - integrity sha1-eZEXFBXhXmqjIx5k3ac8gUZmUxg= - -hapi-for-you@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hapi-for-you/-/hapi-for-you-1.0.0.tgz#d362fbee8d7bda9c2c7801e207e5a5cd1a0b6a7b" - integrity sha1-02L77o172pwseAHiB+WlzRoLans= - -hapi-no-var@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hapi-no-var/-/hapi-no-var-1.0.1.tgz#e9d87fd4de6149104a3fca797ef5c2ef5c182342" - integrity sha512-kk2xyyTzI+eQ/oA1rO4eVdCpYsrPHVERHa6+mTHD08XXFLaAkkaEs6reMg1VyqGh2o5xPt//DO4EhCacLx/cRA== - -hapi-scope-start@2.x.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz#7495a726fe72b7bca8de2cdcc1d87cd8ce6ab4f2" - integrity sha1-dJWnJv5yt7yo3izcwdh82M5qtPI= - -hapi@18.x.x: - version "18.1.0" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-18.1.0.tgz#98a2a5a8f37a41eb196bdad9727f66b1fbca5fec" - integrity sha512-nSU1VLyTAgp7P5gy47QzJIP2JAb+wOFvJIV3gnL0lFj/mD+HuTXhyUsDYXjF/dhADMVXVEz31z6SUHBJhtsvGA== - dependencies: - accept "3.x.x" - ammo "3.x.x" - boom "7.x.x" - bounce "1.x.x" - call "5.x.x" - catbox "10.x.x" - catbox-memory "4.x.x" - heavy "6.x.x" - hoek "6.x.x" - joi "14.x.x" - mimos "4.x.x" - podium "3.x.x" - shot "4.x.x" - somever "2.x.x" - statehood "6.x.x" - subtext "6.x.x" - teamwork "3.x.x" - topo "3.x.x" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -heavy@6.x.x: - version "6.1.0" - resolved "https://registry.yarnpkg.com/heavy/-/heavy-6.1.0.tgz#1bbfa43dc61dd4b543ede3ff87db8306b7967274" - integrity sha512-TKS9DC9NOTGulHQI31Lx+bmeWmNOstbJbGMiN3pX6bF+Zc2GKSpbbym4oasNnB6yPGkqJ9TQXXYDGohqNSJRxA== - dependencies: - boom "7.x.x" - hoek "5.x.x" - joi "13.x.x" - -hoek@5.x.x: - version "5.0.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" - integrity sha512-Bmr56pxML1c9kU+NS51SMFkiVQAb+9uFfXwyqR2tn4w2FPvmPt65eZ9aCcEfRXd9G74HkZnILC6p967pED4aiw== - -hoek@6.x.x: - version "6.1.2" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.2.tgz#99e6d070561839de74ee427b61aa476bd6bddfd6" - integrity sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q== - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inquirer@^6.1.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - -iron@5.x.x: - version "5.0.4" - resolved "https://registry.yarnpkg.com/iron/-/iron-5.0.4.tgz#003ed822f656f07c2b62762815f5de3947326867" - integrity sha512-7iQ5/xFMIYaNt9g2oiNiWdhrOTdRUMFaWENUd0KghxwPUhrIH8DUY8FEyLNTTzf75jaII+jMexLdY/2HfV61RQ== - dependencies: - boom "7.x.x" - cryptiles "4.x.x" - hoek "5.x.x" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -isemail@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" - integrity sha512-zfRhJn9rFSGhzU5tGZqepRSAj3+g6oTOHxMGGriWNJZzyLPUK8H7VHpqKntegnW8KLyGA9zwuNaCoopl40LTpg== - dependencies: - punycode "2.x.x" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -joi@13.x.x: - version "13.3.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-13.3.0.tgz#4defd4333b539c5d10e444ab44f5a5583480f17c" - integrity sha512-iF6jEYVfBIoYXztYymia1JfuoVbxBNuOcwdbsdoGin9/jjhBLhonKmfTQOvePss8r8v4tU4JOcNmYPHZzKEFag== - dependencies: - hoek "5.x.x" - isemail "3.x.x" - topo "3.x.x" - -joi@14.x.x: - version "14.0.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-14.0.0.tgz#05a206b259e702f426eb2b2e523d642fb383e6ad" - integrity sha512-jEu+bPFcsgdPr85hVyjb5D5grxLEZniT6AB1vjewrRDbuYxe2r5quyxs3E32dF8fCXcaJnlRSy4jehSpDuNMNg== - dependencies: - hoek "5.x.x" - isemail "3.x.x" - topo "3.x.x" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.12.0: - version "3.12.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" - integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@5.x.x: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -lab@18.x.x: - version "18.0.2" - resolved "https://registry.yarnpkg.com/lab/-/lab-18.0.2.tgz#6e1682106f573694700c545c1a1bdc5f68be5b27" - integrity sha512-b/BuQr/rqOVyO+kRcEJVqKcIZS9ypcO5CJjR1y4UAz/P2UFd5qjtbCt/BJ9vre/0EJt3Mb2m72V6jNBCwsOxxA== - dependencies: - bossy "4.x.x" - diff "4.x.x" - eslint "5.x.x" - eslint-config-hapi "12.x.x" - eslint-plugin-hapi "4.x.x" - espree "5.x.x" - find-rc "4.x.x" - handlebars "4.x.x" - hoek "6.x.x" - json-stable-stringify "1.x.x" - json-stringify-safe "5.x.x" - mkdirp "0.5.x" - seedrandom "2.x.x" - source-map "0.7.x" - source-map-support "0.5.x" - supports-color "6.x.x" - will-call "1.x.x" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lodash@^4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -lodash@^4.17.5: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - -mime-db@1.x.x: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimos@4.x.x: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimos/-/mimos-4.0.0.tgz#76e3d27128431cb6482fd15b20475719ad626a5a" - integrity sha512-JvlvRLqGIlk+AYypWrbrDmhsM+6JVx/xBM5S3AMwTBz1trPCEoPN/swO2L4Wu653fL7oJdgk8DMQyG/Gq3JkZg== - dependencies: - hoek "5.x.x" - mime-db "1.x.x" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -mkdirp@0.5.x, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nigel@3.x.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/nigel/-/nigel-3.0.1.tgz#48a08859d65177312f1c25af7252c1e07bb07c2a" - integrity sha512-kCVtUG9JyD//tsYrZY+/Y+2gUrANVSba8y23QkM5Znx0FOxlnl9Z4OVPBODmstKWTOvigfTO+Va1VPOu3eWSOQ== - dependencies: - hoek "5.x.x" - vise "3.x.x" - -no-arrowception@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/no-arrowception/-/no-arrowception-1.0.0.tgz#5bf3e95eb9c41b57384a805333daa3b734ee327a" - integrity sha1-W/PpXrnEG1c4SoBTM9qjtzTuMno= - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -parent-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" - integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== - dependencies: - callsites "^3.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.1, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -pez@4.x.x: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pez/-/pez-4.0.2.tgz#0a7c81b64968e90b0e9562b398f390939e9c4b53" - integrity sha512-HuPxmGxHsEFPWhdkwBs2gIrHhFqktIxMtudISTFN95RQ85ZZAOl8Ki6u3nnN/X8OUaGlIGldk/l8p2IR4/i76w== - dependencies: - b64 "4.x.x" - boom "7.x.x" - content "4.x.x" - hoek "5.x.x" - nigel "3.x.x" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -podium@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/podium/-/podium-3.1.2.tgz#b701429739cf6bdde6b3015ae6b48d400817ce9e" - integrity sha512-18VrjJAduIdPv7d9zWsfmKxTj3cQTYC5Pv5gtKxcWujYBpGbV+mhNSPYhlHW5xeWoazYyKfB9FEsPT12r5rY1A== - dependencies: - hoek "5.x.x" - joi "13.x.x" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= - -punycode@2.x.x, punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@^2.2.8: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== - dependencies: - glob "^7.0.5" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - -rxjs@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" - integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== - dependencies: - tslib "^1.9.0" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -seedrandom@2.x.x: - version "2.4.4" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" - integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== - -semver@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== - -semver@^5.5.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shot@4.x.x: - version "4.0.5" - resolved "https://registry.yarnpkg.com/shot/-/shot-4.0.5.tgz#c7e7455d11d60f6b6cd3c43e15a3b431c17e5566" - integrity sha1-x+dFXRHWD2ts08Q+FaO0McF+VWY= - dependencies: - hoek "5.x.x" - joi "13.x.x" - -signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -somever@2.x.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/somever/-/somever-2.0.0.tgz#7bdbed3bee8ece2c7c8a2e7d9a1c022bd98d6c89" - integrity sha512-9JaIPP+HxwYGqCDqqK3tRaTqdtQHoK6Qy3IrXhIt2q5x8fs8RcfU7BMWlFTCOgFazK8p88zIv1tHQXvAwtXMyw== - dependencies: - bounce "1.x.x" - hoek "6.x.x" - -source-map-support@0.5.x: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" - integrity sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.7.x: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -statehood@6.x.x: - version "6.0.6" - resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" - integrity sha512-jR45n5ZMAkasw0xoE9j9TuLmJv4Sa3AkXe+6yIFT6a07kXYHgSbuD2OVGECdZGFxTmvNqLwL1iRIgvq6O6rq+A== - dependencies: - boom "7.x.x" - bounce "1.x.x" - cryptiles "4.x.x" - hoek "5.x.x" - iron "5.x.x" - joi "13.x.x" - -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1" - integrity sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" - integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== - dependencies: - ansi-regex "^4.0.0" - -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -subtext@6.x.x: - version "6.0.7" - resolved "https://registry.yarnpkg.com/subtext/-/subtext-6.0.7.tgz#8e40a67901a734d598142665c90e398369b885f9" - integrity sha512-IcJUvRjeR+NB437Iq+LORFNJW4L6Knqkj3oQrBrkdhIaS2VKJvx/9aYEq7vi+PEx5/OuehOL/40SkSZotLi/MA== - dependencies: - boom "7.x.x" - content "4.x.x" - hoek "5.x.x" - pez "4.x.x" - wreck "14.x.x" - -supports-color@6.x.x: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== - dependencies: - has-flag "^3.0.0" - -table@^5.0.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== - dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -teamwork@3.x.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" - integrity sha512-hEkJIpDOfOYe9NYaLFk00zQbzZeKNCY8T2pRH3I13Y1mJwxaSQ6NEsjY5rCp+11ezCiZpWGoGFTbOuhg4qKevQ== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -topo@3.x.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.0.tgz#37e48c330efeac784538e0acd3e62ca5e231fe7a" - integrity sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw== - dependencies: - hoek "5.x.x" - -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -uglify-js@^2.6: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -vise@3.x.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/vise/-/vise-3.0.0.tgz#76ad14ab31669c50fbb0817bc0e72fedcbb3bf4c" - integrity sha512-kBFZLmiL1Vm3rHXphkhvvAcsjgeQXRrOFCbJb0I50YZZP4HGRNH+xGzK3matIMcpbsfr3I02u9odj4oCD0TWgA== - dependencies: - hoek "5.x.x" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -will-call@1.x.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/will-call/-/will-call-1.0.1.tgz#9b37561ea7156aaba21b28fdf635b80fe78bf166" - integrity sha512-1hEeV8SfBYhNRc/bNXeQfyUBX8Dl9SCYME3qXh99iZP9wJcnhnlBsoBw8Y0lXVZ3YuPsoxImTzBiol1ouNR/hg== - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -wreck@14.x.x: - version "14.0.2" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-14.0.2.tgz#89c17a9061c745ed1c3aebcb66ea181dbaab454c" - integrity sha512-QCm3omWNJUseqrSzwX2QZi1rBbmCfbFHJAXputLLyZ37VSiFnSYQB0ms/mPnSvrlIu7GVm89Y/gBNhSY26uVIQ== - dependencies: - boom "7.x.x" - hoek "5.x.x" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" From dee480956fb6d43b84f6ea12709f10b029fe8e98 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Thu, 6 Jun 2019 11:56:56 +0300 Subject: [PATCH 57/92] 2.0.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d9a1f9f..d375a42 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.6", + "version": "2.0.7", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From bdaceb5c440f2ccd74e44d9d9ae7bd8524d2a0fa Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 19 Jun 2019 16:44:18 +0300 Subject: [PATCH 58/92] Update LICENSE --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index a671385..038bc9f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2018 Sitraka Ratsimba +Copyright (c) 2019 Sitraka Ratsimba Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 35dfe2291e213b37b5daef0f9aae93afbebef172 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 14 Aug 2019 09:06:07 +0300 Subject: [PATCH 59/92] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d358120..5879514 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # hapi-auto-route -[![Semver](http://img.shields.io/SemVer/2.0.0.png)](http://semver.org/spec/v2.0.0.html) +![npm](https://img.shields.io/npm/v/hapi-auto-route) [![Dependency Status](https://david-dm.org/sitrakary/hapi-auto-route.svg)](https://david-dm.org/sitrakary/hapi-auto-route) [![devDependency Status](https://david-dm.org/sitrakay/hapi-auto-route/dev-status.svg)](https://david-dm.org/sitrakay/hapi-auto-route#info=devDependencies) From 0099ac3bc5e38e1ee8ada18f077113ec93871b3d Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 14 Aug 2019 09:07:31 +0300 Subject: [PATCH 60/92] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 5879514..419ca48 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # hapi-auto-route ![npm](https://img.shields.io/npm/v/hapi-auto-route) -[![Dependency Status](https://david-dm.org/sitrakary/hapi-auto-route.svg)](https://david-dm.org/sitrakary/hapi-auto-route) -[![devDependency Status](https://david-dm.org/sitrakay/hapi-auto-route/dev-status.svg)](https://david-dm.org/sitrakay/hapi-auto-route#info=devDependencies) +![Travis (.org)](https://img.shields.io/travis/hsitraka/hapi-auto-route) [![NPM](https://nodei.co/npm/hapi-auto-route.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/hapi-auto-route/) From f24e29bd37075d3672dbb1b711da51fb3f9afd88 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Wed, 14 Aug 2019 09:08:42 +0300 Subject: [PATCH 61/92] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 419ca48..c6f990e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # hapi-auto-route -![npm](https://img.shields.io/npm/v/hapi-auto-route) -![Travis (.org)](https://img.shields.io/travis/hsitraka/hapi-auto-route) +![npm](https://img.shields.io/npm/v/hapi-auto-route?style=for-the-badge) +![Travis (.org)](https://img.shields.io/travis/hsitraka/hapi-auto-route?style=for-the-badge) [![NPM](https://nodei.co/npm/hapi-auto-route.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/hapi-auto-route/) From 76a47694ef0937797572acafd213d3b9956dd9a8 Mon Sep 17 00:00:00 2001 From: zhaoyao91 Date: Fri, 30 Aug 2019 00:12:01 +0800 Subject: [PATCH 62/92] feat: support absolute routes_dir --- .gitignore | 1 + index.js | 2 +- lib/auto-route.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index dfe93fa..1e1901c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ coverage.html *.log yarn.lock package-lock.json +/.idea/ diff --git a/index.js b/index.js index fe61094..5b985c3 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ exports.plugin = { let routes = AutoRoute.getRoutes(files); if (opts.use_prefix) { - prefixes = AutoRoute.getPrefixes(files, Path.join(process.cwd(), opts.routes_dir)); + prefixes = AutoRoute.getPrefixes(files, Path.resolve(opts.routes_dir)); routes = AutoRoute.updatePaths(prefixes, routes, server.settings.router.stripTrailingSlash); } diff --git a/lib/auto-route.js b/lib/auto-route.js index 9124c88..e1255a4 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -18,7 +18,7 @@ module.exports.getRoutes = (files) => { return files.map((file) => { - return Hoek.clone(require(Path.join(process.cwd(), file))); + return Hoek.clone(require(Path.resolve(file))); }); }; From c91473772c764b76c4facd1f7c81ae65bea4afc6 Mon Sep 17 00:00:00 2001 From: Yao Zhao Date: Fri, 30 Aug 2019 15:08:11 +0800 Subject: [PATCH 63/92] Update .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1e1901c..dfe93fa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ coverage.html *.log yarn.lock package-lock.json -/.idea/ From 8f4d803a379aa87a09a00fe222ab572f5b7635f0 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 10:16:17 +0300 Subject: [PATCH 64/92] Updates dependencies and documentation --- README.md | 2 +- package.json | 4 ++-- test/plugin-test.js | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c6f990e..0f2cffd 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ Now, you can start the server and see `Hello` at `http://localhost:3000`. ## API -- `routes_dir`: directory where routes are located. `routes_dir` must be relatives from `process.cwd()`. Defaults to `'routes'`. +- `routes_dir`: absolute path to routes directory. - `pattern`: glob pattern used to find route files. Defaults to `**/!(_)*.js`. - `use_prefix`: Use directory tree as prefix. Defaults to `false`. diff --git a/package.json b/package.json index d375a42..abb215e 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,9 @@ "README.md" ], "devDependencies": { - "@hapi/code": "5.x.x", + "@hapi/code": "6.x.x", "@hapi/hapi": "18.x.x", - "@hapi/lab": "18.x.x" + "@hapi/lab": "20.x.x" }, "dependencies": { "glob": "7.x.x", diff --git a/test/plugin-test.js b/test/plugin-test.js index 4e05cea..1395865 100644 --- a/test/plugin-test.js +++ b/test/plugin-test.js @@ -1,5 +1,6 @@ 'use strict'; +const Path = require('path'); const Lab = require('@hapi/lab'); const Hapi = require('@hapi/hapi'); const HapiAutoRoute = require('..'); @@ -15,7 +16,7 @@ lab.describe('hapi-auto-route', () => { await server.register({ plugin: HapiAutoRoute, options: { - routes_dir: './test/fixtures/routes' + routes_dir: Path.resolve(__dirname, 'fixtures/routes') } }); let result = await server.inject('/'); From 458a3fcb8f4aac82b2295e75e0fb3bef11ae1f6a Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 10:33:53 +0300 Subject: [PATCH 65/92] Make routes_dir option required --- README.md | 2 +- lib/auto-route.js | 2 +- test/auto-route-test.js | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0f2cffd..1d708a4 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ Now, you can start the server and see `Hello` at `http://localhost:3000`. ## API -- `routes_dir`: absolute path to routes directory. +- `routes_dir`: absolute path to routes directory. `required` - `pattern`: glob pattern used to find route files. Defaults to `**/!(_)*.js`. - `use_prefix`: Use directory tree as prefix. Defaults to `false`. diff --git a/lib/auto-route.js b/lib/auto-route.js index e1255a4..354d99b 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -67,7 +67,7 @@ module.exports.updatePaths = (prefixes, routes, stripTrailingSlash) => { module.exports.validateOptions = (options) => { const optionsSchema = Joi.object().keys({ - routes_dir: Joi.string().default('routes'), + routes_dir: Joi.string().required(), pattern: Joi.string().default('**/!(_)*.js'), use_prefix: Joi.boolean().default(false) }); diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 4ac21e4..9ef5cfb 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -117,8 +117,10 @@ lab.describe('AutoRoute', () => { lab.it('returns options when they are valid', () => { - const validOptions = AutoRoute.validateOptions({}); - expect(validOptions.routes_dir).to.be.equal('routes'); + const routes_dir = Path.resolve(__dirname, 'fixtures/routes'); + + const validOptions = AutoRoute.validateOptions({ routes_dir }); + expect(validOptions.routes_dir).to.be.equal(routes_dir); expect(validOptions.pattern).to.be.equal('**/!(_)*.js'); expect(validOptions.use_prefix).to.be.equal(false); From ebf334f8b02a7d6f87d3cdc692c77b6021bf269f Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 10:39:01 +0300 Subject: [PATCH 66/92] Update test --- test/auto-route-test.js | 2 +- test/plugin-test.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 9ef5cfb..737468e 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -11,7 +11,7 @@ const lab = exports.lab = Lab.script(); // These files exist in fixtures. const getFiles = () => { - const routeDir = './test/fixtures/routes'; + const routeDir = Path.resolve(__dirname, 'fixtures/routes'); const files = [ 'index.js' diff --git a/test/plugin-test.js b/test/plugin-test.js index 1395865..a4572ec 100644 --- a/test/plugin-test.js +++ b/test/plugin-test.js @@ -35,7 +35,7 @@ lab.describe('hapi-auto-route', () => { await server.register({ plugin: HapiAutoRoute, options: { - routes_dir: './test/fixtures/routes', + routes_dir: Path.resolve(__dirname, 'fixtures/routes'), use_prefix: true } }); @@ -60,7 +60,7 @@ lab.describe('hapi-auto-route', () => { await server.register({ plugin: HapiAutoRoute, options: { - routes_dir: './test/fixtures/with-trailing-slash', + routes_dir: Path.resolve(__dirname, 'fixtures/with-trailing-slash'), use_prefix: true } }); From 552eec0f9c5fa6bfdaaf764c1804c47fc9eb1e3c Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 10:43:54 +0300 Subject: [PATCH 67/92] 3.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index abb215e..5ca377c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "2.0.7", + "version": "3.0.0", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 76e5c2fc6b89e8ed09b03ae98c19a6b1dc41b28f Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:25:48 +0300 Subject: [PATCH 68/92] Update package.json Transfer the repository to @sitraka-hq --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5ca377c..d038588 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,15 @@ "name": "hapi-auto-route", "version": "3.0.0", "description": "Autoloads hapi routes", - "author": "Sitraka Ratsimba ", + "author": "Sitraka Ratsimba ", "main": "lib/index.js", "keywords": [ "hapi", "route", "autoload" ], - "repository": "https://github.com/hsitraka/hapi-auto-route.git", - "bugs": "https://github.com/hsitraka/hapi-auto-route/issues", + "repository": "https://github.com/sitraka-hq/hapi-auto-route.git", + "bugs": "https://github.com/sitraka-hq/hapi-auto-route/issues", "license": "MIT", "scripts": { "test": "lab --coverage --lint", From 83604c7823f4e8114619b6dbea7cab950d9d1135 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:27:37 +0300 Subject: [PATCH 69/92] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d708a4..787afe0 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # hapi-auto-route ![npm](https://img.shields.io/npm/v/hapi-auto-route?style=for-the-badge) -![Travis (.org)](https://img.shields.io/travis/hsitraka/hapi-auto-route?style=for-the-badge) +![Travis (.org)](https://img.shields.io/travis/sitraka-hq/hapi-auto-route?style=for-the-badge) [![NPM](https://nodei.co/npm/hapi-auto-route.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/hapi-auto-route/) hapi-auto-route is a hapi plugin that lets you load route objects automatically from a directory. And allow routes path to be prefixed. -Maintainer: [Sitraka Ratsimba](https://github.com/hsitraka) +Maintainer: [Sitraka Ratsimba](https://github.com/sitraka-hq) ## Installation From 23a26094cbe75be65696bd14284118f8bebce47f Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:40:09 +0300 Subject: [PATCH 70/92] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 787afe0..6800146 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ module.exports = { // server.js 'use strict'; +const Path = require('path'); const Hapi = require('hapi'); const server = Hapi.Server({ @@ -59,7 +60,10 @@ const server = Hapi.Server({ }); const init = async () => { - await server.register(require('hapi-auto-route')); + await server.register({ + plugin: require('hapi-auto-route'), + options: Path.join(__dirname,'routes') + }); await server.start(); console.log(`Server is running at: ${server.info.uri}`); }; From ac2f0f18db1fc50358b58cddadae409328fc5e67 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:43:27 +0300 Subject: [PATCH 71/92] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6800146..2daf698 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,8 @@ const server = Hapi.Server({ const init = async () => { await server.register({ plugin: require('hapi-auto-route'), - options: Path.join(__dirname,'routes') + options: { + routes_dir: Path.join(__dirname,'routes') }); await server.start(); console.log(`Server is running at: ${server.info.uri}`); From c541e2b8c91d72d6239eb55337d353dcd2bec9c2 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:45:51 +0300 Subject: [PATCH 72/92] Updates changelog --- CHANGELOG.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08b9819..f3a5b94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,14 +4,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## 2.0.3 +### 2.0.3 - Fix issues [#10](https://github.com/sitrakary/hapi-auto-route/issues/10). - Fix lint errors. -## 2.0.2 + +### 2.0.2 - Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). -## 2.0.3 +### 2.0.3 - Update dependencies. + +## 3.0.0 + +- `routes_dir` requires an absolute path and must set in plugin registration. +- Updates dependencies. +- Updates documentation. + +### 3.0.1 + +- Updates documentation. From 7e0b8ddcf018efb6e75c190a33ecfa61eb7a7877 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:46:13 +0300 Subject: [PATCH 73/92] 3.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d038588..d7a4eff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.0", + "version": "3.0.1", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From bc074ee63da8dd76b411de0932d2bd7929a3457b Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:48:49 +0300 Subject: [PATCH 74/92] Fix basic usage --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2daf698..81f6add 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,8 @@ const init = async () => { await server.register({ plugin: require('hapi-auto-route'), options: { - routes_dir: Path.join(__dirname,'routes') + routes_dir: Path.join(__dirname, 'routes') + } }); await server.start(); console.log(`Server is running at: ${server.info.uri}`); From 4582b56841f8d1e14bb29ba02dd4148fd1783f27 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 30 Aug 2019 11:48:59 +0300 Subject: [PATCH 75/92] 3.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7a4eff..95e8cf9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.1", + "version": "3.0.2", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 1ce876c5f9e96cb8fa540397f2e9f68aee5e6b6b Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Wed, 11 Sep 2019 14:14:20 -0500 Subject: [PATCH 76/92] Fix issue #17, add dependency on @hapi/hoek --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 95e8cf9..a6f2d89 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,8 @@ "@hapi/lab": "20.x.x" }, "dependencies": { - "glob": "7.x.x", - "@hapi/joi": "15.x.x" + "@hapi/hoek": "^8.2.4", + "@hapi/joi": "15.x.x", + "glob": "7.x.x" } } From e7c04ce076bde7b5f3065c129433f828fc6c40c1 Mon Sep 17 00:00:00 2001 From: Cole Date: Sat, 14 Sep 2019 12:18:57 -0500 Subject: [PATCH 77/92] Use wildcard for versioning hoek dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a6f2d89..70fb599 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@hapi/lab": "20.x.x" }, "dependencies": { - "@hapi/hoek": "^8.2.4", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x", "glob": "7.x.x" } From b73fbce83dd4ff7ddd4c44d7e673503a1a9ec070 Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Mon, 21 Oct 2019 14:33:15 -0500 Subject: [PATCH 78/92] 3.0.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a6f2d89..02c2158 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.2", + "version": "3.0.3", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From e0c6041b927060704e4227738e3b6dc75f8716da Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 Oct 2019 11:38:12 +0300 Subject: [PATCH 79/92] Update docs --- CHANGELOG.md | 8 ++++++++ README.md | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3a5b94..2df3a29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,3 +26,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### 3.0.1 - Updates documentation. + +### 3.0.2 + +- add dependency on @hapi/hoek + +### 3.0.3 + +- Update documentation diff --git a/README.md b/README.md index 81f6add..88982d7 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ package.json ```javascript // routes/home.js 'use strict'; - + module.exports = { method: 'GET', path: '/', - handler: (request, h) => 'Hello'; -} + handler: (request, h) => 'Hello' +}; ``` ```javascript @@ -52,7 +52,7 @@ module.exports = { 'use strict'; const Path = require('path'); -const Hapi = require('hapi'); +const Hapi = require('@hapi/hapi'); const server = Hapi.Server({ port: 3000, From 9b8d1113a49d3438b9b6cddcde7a85b473639846 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 Oct 2019 11:40:44 +0300 Subject: [PATCH 80/92] Reverse for easy versionning --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 81ad0f7..70fb599 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.3", + "version": "3.0.2", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From 7376dd2c5b8a3782f04bded16085ef029647c0fe Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 Oct 2019 11:40:51 +0300 Subject: [PATCH 81/92] 3.0.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70fb599..81ad0f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.2", + "version": "3.0.3", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From b94a7c9205d66a7112967eb4e455f8e876ec427e Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 Oct 2019 11:42:09 +0300 Subject: [PATCH 82/92] 3.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 81ad0f7..6038414 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.3", + "version": "3.0.4", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From c8f207f4707a0a9e568e44cc0f05b2fb2c1ad6ad Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Fri, 25 Oct 2019 11:43:26 +0300 Subject: [PATCH 83/92] release v3.0.4 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2df3a29..c3bddc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,3 +34,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### 3.0.3 - Update documentation + +### 3.0.4 + +- Fix unpublished version \ No newline at end of file From 27e9a77d6632be0483e1743e0877d0ad1e0aafdf Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Thu, 12 Dec 2019 18:25:33 -0600 Subject: [PATCH 84/92] Include undeclared dev dep --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 81ad0f7..5e4d346 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "devDependencies": { "@hapi/code": "6.x.x", "@hapi/hapi": "18.x.x", + "@hapi/eslint-plugin-hapi": "4.x.x", "@hapi/lab": "20.x.x" }, "dependencies": { From c67ac21dd006b2a3f1388c874f939db4308d10dc Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Thu, 12 Dec 2019 18:26:11 -0600 Subject: [PATCH 85/92] Allow routes_dir to be an array of base dirs --- lib/auto-route.js | 9 +++++++-- test/auto-route-test.js | 24 +++++++++++++++++++----- test/fixtures/routes2/index.js | 7 +++++++ test/fixtures/routes2/pages/deep/deep.js | 7 +++++++ test/fixtures/routes2/pages/list.js | 11 +++++++++++ test/fixtures/routes2/pages/pages1.js | 7 +++++++ 6 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/routes2/index.js create mode 100644 test/fixtures/routes2/pages/deep/deep.js create mode 100644 test/fixtures/routes2/pages/list.js create mode 100644 test/fixtures/routes2/pages/pages1.js diff --git a/lib/auto-route.js b/lib/auto-route.js index 354d99b..62fbe63 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -9,7 +9,12 @@ const Prefix = require('./prefix'); module.exports.getFiles = (baseDir, pattern) => { - const absolutePattern = Path.join( baseDir, pattern); + if (Array.isArray(baseDir)) { + const files = baseDir.map(async (d) => await this.getFiles(d, pattern)); + return Promise.resolve(files); + } + + const absolutePattern = Path.join(baseDir, pattern); const glob = Util.promisify(Glob); return glob(absolutePattern, {}); }; @@ -67,7 +72,7 @@ module.exports.updatePaths = (prefixes, routes, stripTrailingSlash) => { module.exports.validateOptions = (options) => { const optionsSchema = Joi.object().keys({ - routes_dir: Joi.string().required(), + routes_dir: Joi.alternatives(Joi.string(), Joi.array().items(Joi.string())).required(), pattern: Joi.string().default('**/!(_)*.js'), use_prefix: Joi.boolean().default(false) }); diff --git a/test/auto-route-test.js b/test/auto-route-test.js index 737468e..5177c9d 100644 --- a/test/auto-route-test.js +++ b/test/auto-route-test.js @@ -28,13 +28,21 @@ lab.describe('AutoRoute', () => { lab.describe('loadFiles', () => { - lab.it('load files in an array', () => { + lab.it('loads files in an array when given a single base directory', () => { AutoRoute.getFiles(routeDir, '**/*.js').then((files) => { expect(files.length).to.be.above(0); }); }); + + lab.it('loads files in an array when given an array of base directories', () => { + + AutoRoute.getFiles([routeDir, `${routeDir}2`], '**/*.js').then((files) => { + + expect(files.length).to.be.above(0); + }); + }); }); lab.describe('getRoutes', () => { @@ -119,10 +127,16 @@ lab.describe('AutoRoute', () => { const routes_dir = Path.resolve(__dirname, 'fixtures/routes'); - const validOptions = AutoRoute.validateOptions({ routes_dir }); - expect(validOptions.routes_dir).to.be.equal(routes_dir); - expect(validOptions.pattern).to.be.equal('**/!(_)*.js'); - expect(validOptions.use_prefix).to.be.equal(false); + const validOptionsForSingleDir = AutoRoute.validateOptions({ routes_dir }); + expect(validOptionsForSingleDir.routes_dir).to.be.equal(routes_dir); + expect(validOptionsForSingleDir.pattern).to.be.equal('**/!(_)*.js'); + expect(validOptionsForSingleDir.use_prefix).to.be.equal(false); + + const multi_routes_dir = [routes_dir, `${routes_dir}2`]; + const validOptionsForMultiDir = AutoRoute.validateOptions({ routes_dir: multi_routes_dir }); + expect(validOptionsForMultiDir.routes_dir).to.be.equal(multi_routes_dir); + expect(validOptionsForMultiDir.pattern).to.be.equal('**/!(_)*.js'); + expect(validOptionsForMultiDir.use_prefix).to.be.equal(false); }); diff --git a/test/fixtures/routes2/index.js b/test/fixtures/routes2/index.js new file mode 100644 index 0000000..ee06863 --- /dev/null +++ b/test/fixtures/routes2/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/routes2/pages/deep/deep.js b/test/fixtures/routes2/pages/deep/deep.js new file mode 100644 index 0000000..48c4fde --- /dev/null +++ b/test/fixtures/routes2/pages/deep/deep.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/deep', + handler: (request, h) => 'index.js' +}; diff --git a/test/fixtures/routes2/pages/list.js b/test/fixtures/routes2/pages/list.js new file mode 100644 index 0000000..c048698 --- /dev/null +++ b/test/fixtures/routes2/pages/list.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = [{ + 'method': 'GET', + 'path': '/page1', + handler: (request, h) => 'index.js' +}, { + 'method': 'GET', + 'path': '/page2', + handler: (request, h) => 'index.js' +}]; diff --git a/test/fixtures/routes2/pages/pages1.js b/test/fixtures/routes2/pages/pages1.js new file mode 100644 index 0000000..d08a515 --- /dev/null +++ b/test/fixtures/routes2/pages/pages1.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + 'method': 'GET', + 'path': '/p1.view', + handler: (request, h) => 'index.js' +}; From 0e90ae9e1dfee130116ae42d8a9ba259691e360f Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Thu, 12 Dec 2019 18:36:05 -0600 Subject: [PATCH 86/92] 3.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e4d346..643bd66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-auto-route", - "version": "3.0.3", + "version": "3.1.0", "description": "Autoloads hapi routes", "author": "Sitraka Ratsimba ", "main": "lib/index.js", From a11d706f68aabaaa68a5ac3a1c3c7a9d7362e8d3 Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Thu, 12 Dec 2019 18:36:16 -0600 Subject: [PATCH 87/92] Update documentation --- CHANGELOG.md | 5 +++++ README.md | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3a5b94..14101f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,3 +26,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### 3.0.1 - Updates documentation. + +### 3.1.0 + +- `routes_dir` accepts an array of parameters. +- Updates documentation. diff --git a/README.md b/README.md index 81f6add..096599b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![NPM](https://nodei.co/npm/hapi-auto-route.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/hapi-auto-route/) -hapi-auto-route is a hapi plugin that lets you load route objects automatically from a directory. And allow routes path to be prefixed. +hapi-auto-route is a hapi plugin that lets you load route objects automatically by specifying the root directory/directories containing the routes. And allow routes path to be prefixed. Maintainer: [Sitraka Ratsimba](https://github.com/sitraka-hq) @@ -80,10 +80,12 @@ init(); Now, you can start the server and see `Hello` at `http://localhost:3000`. +You can also provide an array of absolute paths if you want to auto-import from multiple base directories. + ## API -- `routes_dir`: absolute path to routes directory. `required` +- `routes_dir`: absolute path(s) to routes directory/directories. `required` - `pattern`: glob pattern used to find route files. Defaults to `**/!(_)*.js`. - `use_prefix`: Use directory tree as prefix. Defaults to `false`. From f355f9bbb368f4c17c8004b66f65e393ec8c1261 Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Mon, 16 Dec 2019 10:57:51 -0600 Subject: [PATCH 88/92] Fix the way promises are handled here. --- lib/auto-route.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 62fbe63..47a981b 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -10,8 +10,12 @@ const Prefix = require('./prefix'); module.exports.getFiles = (baseDir, pattern) => { if (Array.isArray(baseDir)) { - const files = baseDir.map(async (d) => await this.getFiles(d, pattern)); - return Promise.resolve(files); + const promise = new Promise((resolve, reject) => { + Promise.all(baseDir.map((d) => this.getFiles(d, pattern))) + .then((value) => resolve(Hoek.flatten(value))) + .catch((reason) => reject(reason)); + }) + return promise; } const absolutePattern = Path.join(baseDir, pattern); From 30b3d4cb30af6ed09f6ead653fa864cb254f6ce9 Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Mon, 16 Dec 2019 11:07:57 -0600 Subject: [PATCH 89/92] Only add valid routes --- lib/auto-route.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 47a981b..34949f9 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -23,12 +23,24 @@ module.exports.getFiles = (baseDir, pattern) => { return glob(absolutePattern, {}); }; -module.exports.getRoutes = (files) => { +module.exports.getRoutes = (filepaths) => { - return files.map((file) => { + const routeSchema = Joi.object().keys({ + method: Joi.string().required(), + path: Joi.string().required(), + // Technically handler is required as well, either in the method or in its options, but that gets sticky with plugins. + }).xor('handler', 'options').unknown(true); - return Hoek.clone(require(Path.resolve(file))); - }); + const multipleRoutesAllowed = Joi.alternatives(routeSchema, Joi.array().items(routeSchema)); + + const files = filepaths.map(p => require(Path.resolve(p))); + + const routes = files.filter(file => { + const { error } = Joi.validate(file, multipleRoutesAllowed); + return error === null; + }) + + return routes.map((file) => Hoek.clone(file)); }; module.exports.getPrefixes = (files, baseDir) => { From 73d49fa086a999e29149cf6cc93dd7632b53dbbe Mon Sep 17 00:00:00 2001 From: Cole Panike Date: Mon, 16 Dec 2019 11:17:50 -0600 Subject: [PATCH 90/92] Test compliance --- lib/auto-route.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/auto-route.js b/lib/auto-route.js index 34949f9..8ae4ffd 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -11,10 +11,10 @@ module.exports.getFiles = (baseDir, pattern) => { if (Array.isArray(baseDir)) { const promise = new Promise((resolve, reject) => { + Promise.all(baseDir.map((d) => this.getFiles(d, pattern))) - .then((value) => resolve(Hoek.flatten(value))) - .catch((reason) => reject(reason)); - }) + .then((value) => resolve(Hoek.flatten(value))); + }); return promise; } @@ -27,18 +27,19 @@ module.exports.getRoutes = (filepaths) => { const routeSchema = Joi.object().keys({ method: Joi.string().required(), - path: Joi.string().required(), + path: Joi.string().required() // Technically handler is required as well, either in the method or in its options, but that gets sticky with plugins. }).xor('handler', 'options').unknown(true); const multipleRoutesAllowed = Joi.alternatives(routeSchema, Joi.array().items(routeSchema)); - const files = filepaths.map(p => require(Path.resolve(p))); + const files = filepaths.map((p) => require(Path.resolve(p))); + + const routes = files.filter((file) => { - const routes = files.filter(file => { const { error } = Joi.validate(file, multipleRoutesAllowed); return error === null; - }) + }); return routes.map((file) => Hoek.clone(file)); }; From fc589403c6373b7d7caf6e41415349e53e1ed906 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 22 Apr 2024 18:06:53 +0300 Subject: [PATCH 91/92] Upgrade dependencies --- .github/workflows/test.yml | 20 ++++++++++++++++++++ .gitignore | 1 + lib/auto-route.js | 19 ++++++++++--------- package.json | 20 ++++++++++---------- 4 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d04cfab --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,20 @@ +name: Build And Test + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['14.21.3', '21.7.3'] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' + - run: npm install + - run: npm test \ No newline at end of file diff --git a/.gitignore b/.gitignore index dfe93fa..becd4b2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ coverage.html *.log yarn.lock package-lock.json +.idea \ No newline at end of file diff --git a/lib/auto-route.js b/lib/auto-route.js index 8ae4ffd..444d88f 100644 --- a/lib/auto-route.js +++ b/lib/auto-route.js @@ -2,7 +2,7 @@ const Glob = require('glob'); const Hoek = require('@hapi/hoek'); -const Joi = require('@hapi/joi'); +const Joi = require('joi'); const Path = require('path'); const Util = require('util'); const Prefix = require('./prefix'); @@ -10,12 +10,11 @@ const Prefix = require('./prefix'); module.exports.getFiles = (baseDir, pattern) => { if (Array.isArray(baseDir)) { - const promise = new Promise((resolve, reject) => { + return new Promise((resolve) => { Promise.all(baseDir.map((d) => this.getFiles(d, pattern))) .then((value) => resolve(Hoek.flatten(value))); }); - return promise; } const absolutePattern = Path.join(baseDir, pattern); @@ -37,8 +36,8 @@ module.exports.getRoutes = (filepaths) => { const routes = files.filter((file) => { - const { error } = Joi.validate(file, multipleRoutesAllowed); - return error === null; + const result = multipleRoutesAllowed.validate(file); + return !Object.keys(result).includes('error'); }); return routes.map((file) => Hoek.clone(file)); @@ -89,12 +88,14 @@ module.exports.updatePaths = (prefixes, routes, stripTrailingSlash) => { module.exports.validateOptions = (options) => { const optionsSchema = Joi.object().keys({ - routes_dir: Joi.alternatives(Joi.string(), Joi.array().items(Joi.string())).required(), + routes_dir: Joi.alternatives().try(Joi.string(), Joi.array().items(Joi.string())).required(), pattern: Joi.string().default('**/!(_)*.js'), use_prefix: Joi.boolean().default(false) }); - const { error, value } = Joi.validate(options, optionsSchema); - Hoek.assert(error === null, 'Invalid options are passed to hapi-auto-route'); - return value; + const result = optionsSchema.validate(options); + + Hoek.assert(!Object.keys(result).includes('error'), 'Invalid options are passed to hapi-auto-route'); + + return result.value; }; diff --git a/package.json b/package.json index 643bd66..f34afe6 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,15 @@ "name": "hapi-auto-route", "version": "3.1.0", "description": "Autoloads hapi routes", - "author": "Sitraka Ratsimba ", - "main": "lib/index.js", + "author": "Sitraka Ratsimba ", + "main": "index.js", "keywords": [ "hapi", "route", "autoload" ], - "repository": "https://github.com/sitraka-hq/hapi-auto-route.git", - "bugs": "https://github.com/sitraka-hq/hapi-auto-route/issues", + "repository": "https://github.com/cooxe/hapi-auto-route.git", + "bugs": "https://github.com/cooxe/hapi-auto-route/issues", "license": "MIT", "scripts": { "test": "lab --coverage --lint", @@ -23,14 +23,14 @@ "README.md" ], "devDependencies": { - "@hapi/code": "6.x.x", - "@hapi/hapi": "18.x.x", - "@hapi/eslint-plugin-hapi": "4.x.x", - "@hapi/lab": "20.x.x" + "@hapi/code": "9.x.x", + "@hapi/hapi": "21.x.x", + "@hapi/eslint-plugin": "6.x.x", + "@hapi/lab": "25.x.x" }, "dependencies": { - "@hapi/hoek": "8.x.x", - "@hapi/joi": "15.x.x", + "@hapi/hoek": "11.x.x", + "joi": "17.x.x", "glob": "7.x.x" } } From 5029bce4d0fae6633d7b40a547573505dab402b9 Mon Sep 17 00:00:00 2001 From: Sitraka Ratsimba Date: Mon, 22 Apr 2024 18:22:43 +0300 Subject: [PATCH 92/92] Update Licenses and readme --- .nvmrc | 1 - CHANGELOG.md | 33 +++++++++++++++++---------------- LICENSE | 2 +- README.md | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) delete mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 7f6758e..0000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -8.10.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index ba532c4..d9a5680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,25 +4,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -### 2.0.3 - -- Fix issues [#10](https://github.com/sitrakary/hapi-auto-route/issues/10). -- Fix lint errors. - -### 2.0.2 - -- Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). - -### 2.0.3 - -- Update dependencies. - ## 3.0.0 - `routes_dir` requires an absolute path and must set in plugin registration. - Updates dependencies. - Updates documentation. +### 3.1.0 + +- `routes_dir` accepts an array of parameters. +- Updates documentation. + ### 3.0.1 - Updates documentation. @@ -39,7 +31,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p - Fix unpublished version -### 3.1.0 -- `routes_dir` accepts an array of parameters. -- Updates documentation. +### 2.0.3 + +- Fix issues [#10](https://github.com/sitrakary/hapi-auto-route/issues/10). +- Fix lint errors. + +### 2.0.2 + +- Fix issues [#5](https://github.com/sitrakary/hapi-auto-route/issues/5). + +### 2.0.1 + +- Update dependencies. diff --git a/LICENSE b/LICENSE index 038bc9f..30e426b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2019 Sitraka Ratsimba +Copyright (c) 2024 Sitraka Ratsimba Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/README.md b/README.md index 7eccddf..5a376ee 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ hapi-auto-route is a hapi plugin that lets you load route objects automatically by specifying the root directory/directories containing the routes. And allow routes path to be prefixed. -Maintainer: [Sitraka Ratsimba](https://github.com/sitraka-hq) +Maintainer: [Sitraka Ratsimba](https://github.com/cooxe) ## Installation