diff --git a/integration/hapi-engine/package.json b/integration/hapi-engine/package.json index a77e657be..a53f7859b 100644 --- a/integration/hapi-engine/package.json +++ b/integration/hapi-engine/package.json @@ -29,7 +29,7 @@ "babel-loader": "^6.4.0", "babel-preset-es2015": "^6.22.0", "concurrently": "3.1.0", - "inert": "^4.2.1", + "inert": "^5.1.0", "protractor": "file:../../node_modules/protractor", "raw-loader": "^0.5.1", "webpack": "^2.2.1" diff --git a/integration/hapi-engine/src/server.ts b/integration/hapi-engine/src/server.ts index 0aaf0ac55..7b200fb2d 100644 --- a/integration/hapi-engine/src/server.ts +++ b/integration/hapi-engine/src/server.ts @@ -11,55 +11,48 @@ import {ngHapiEngine} from '@nguniversal/hapi-engine'; require('zone.js/dist/zone-node.js'); import {enableProdMode} from '@angular/core'; -import * as Hapi from 'hapi'; +import {Server, Request} from 'hapi'; import * as Inert from 'inert'; import {HelloWorldServerModuleNgFactory} from './helloworld/app.server.ngfactory'; -import {Base_Reply} from 'hapi'; const helloworld = require('raw-loader!./helloworld/index.html'); -const server = new Hapi.Server(); -server.connection({ port: 9876, host: 'localhost' }); -server.register(Inert, () => {}); +const server = new Server({ port: 9876, host: 'localhost' }); enableProdMode(); -// Client bundles will be statically served from the built/ directory. -server.route({ - method: 'GET', - path: '/built/{file*}', - handler: { - directory: { - path: 'built' - } - } -}); - // Keep the browser logs free of errors. server.route({ method: 'GET', path: '/favicon.ico', - handler: function (request, reply) { - reply(''); - } + handler: () => '' }); //-----------ADD YOUR SERVER SIDE RENDERED APP HERE ---------------------- server.route({ method: 'GET', path: '/helloworld', - handler: (req: Request, reply: Base_Reply) => { + handler: (req: Request) => ngHapiEngine({ bootstrap: HelloWorldServerModuleNgFactory, req, document: helloworld - } as any).then(html => reply(html)); - } + }) }); -server.start((err) => { - if (err) { - throw err; - } - console.log('Server listening on port 9876!'); -}); +(async() => { + await server.register(Inert); + + // Client bundles will be statically served from the built/ directory. + server.route({ + method: 'GET', + path: '/built/{file*}', + handler: { + directory: { + path: 'built' + } + } + }); + + await server.start(); +})(); diff --git a/modules/express-engine/package.json b/modules/express-engine/package.json index 379d3d603..62d076f4f 100644 --- a/modules/express-engine/package.json +++ b/modules/express-engine/package.json @@ -12,7 +12,7 @@ "@angular/common": "NG_VERSION", "@angular/core": "NG_VERSION", "@angular/platform-server": "NG_VERSION", - "express": "^4.15.2" + "express": "EXPRESS_VERSION" }, "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" diff --git a/modules/hapi-engine/README.md b/modules/hapi-engine/README.md index 1e8585729..bd7a06fdd 100644 --- a/modules/hapi-engine/README.md +++ b/modules/hapi-engine/README.md @@ -9,7 +9,7 @@ This is a Hapi Engine for running Angular Apps on the server for server side ren To use it, set the engine and then route requests to it ```ts -import { Base_Reply, Request, Server } from 'hapi'; +import { Request, Server } from 'hapi'; import { ngHapiEngine } from '@nguniversal/hapi-engine'; const server = new Server(); @@ -18,20 +18,10 @@ server.connection({ port: 8000 }); -// Set the engine -const hapiEngine = ngHapiEngine({ - bootstrap: ServerAppModule // Give it a module to bootstrap -}); - server.route({ method: 'GET', path: '/{path*}', - handler: (req: Request, reply: Base_Reply) => { - hapiEngine({ - req - }).then(html => reply(html)) - .then(err => reply(boom.wrap(err))); - } + handler: (req: Request) => ngHapiEngine({req, bootstrap: ServerAppModule}) }); ``` @@ -44,15 +34,14 @@ is called. To do so, simply pass in a `url` and/or `document` string to the rend server.route({ method: 'GET', path: '/{path*}', - handler: (req: Request, reply: Base_Reply) => { - let url = 'http://someurl.com'; - let doc = 'New doc'; - hapiEngine({ + handler: (req: Request) => { + const url = 'http://someurl.com'; + const document = 'New doc'; + return ngHapiEngine({ req, url, - document: doc - }).then(html => reply(html)) - .then(err => reply(boom.wrap(err))); + document, + }); } }); ``` @@ -80,23 +69,21 @@ The Bootstrap module as well as more providers can be passed on request server.route({ method: 'GET', path: '/{path*}', - handler: (req: Request, reply: Base_Reply) => { - hapiEngine({ + handler: (req: Request) => + ngHapiEngine({ bootstrap: OtherServerAppModule, providers: [ OtherServerService ], req - }).then(html => reply(html)) - .then(err => reply(boom.wrap(err))); - } + }) }); ``` ### Using the Request and Response The Request and Response objects are injected into the app via injection tokens. -You can access them by @Inject +You can access them by `@Inject` ```ts import { Request } from 'hapi'; diff --git a/modules/hapi-engine/package.json b/modules/hapi-engine/package.json index 831fe652f..c52a75b4e 100644 --- a/modules/hapi-engine/package.json +++ b/modules/hapi-engine/package.json @@ -12,7 +12,7 @@ "@angular/common": "NG_VERSION", "@angular/core": "NG_VERSION", "@angular/platform-server": "NG_VERSION", - "hapi": "^16.1.1" + "hapi": "HAPI_VERSION" }, "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" diff --git a/modules/hapi-engine/spec/index.spec.ts b/modules/hapi-engine/spec/index.spec.ts index 9db53d563..5f479f994 100644 --- a/modules/hapi-engine/spec/index.spec.ts +++ b/modules/hapi-engine/spec/index.spec.ts @@ -1,5 +1,69 @@ +import {Component, destroyPlatform, getPlatform, NgModule} from '@angular/core'; +import {ServerModule} from '@angular/platform-server'; +import {ngHapiEngine} from '@nguniversal/hapi-engine'; +import {ServerInjectResponse, Request, Server} from 'hapi'; +import 'zone.js'; +import {BrowserModule} from '@angular/platform-browser'; + +@Component({selector: 'app', template: `Works!`}) +class MyServerApp { +} + + +@NgModule({ + bootstrap: [MyServerApp], + declarations: [MyServerApp], + imports: [ServerModule, BrowserModule.withServerTransition({appId: 'hapi-test'})], +}) +class ExampleModule { +} + + describe('test runner', () => { - it('can run a test', () => { - expect(true).toBe(true); + + const server = new Server({ debug: false }); + server.route([ + { + method: 'GET', + path: '/', + handler: (req: Request) => ngHapiEngine({ + bootstrap: ExampleModule, + req, + document: '' + }) + }, + { + method: 'GET', + path: '/test', + handler: () => 'ok' + }, + ]); + + beforeEach(async () => { + if (getPlatform()) { + destroyPlatform(); + } + }); + + it('should test the server', async () => { + const request = { + method: 'GET', + url: '/test' + }; + + const res = await server.inject(request); + expect(res.result).toBeDefined(); + expect(res.result).toBe('ok' as any); + }); + + it('Returns a reply on successful request', async () => { + const request = { + method: 'GET', + url: '/' + }; + + const res: ServerInjectResponse = await server.inject(request); + expect(res.result).toBeDefined(); + expect(res.result).toContain('Works!'); }); }); diff --git a/modules/hapi-engine/src/main.ts b/modules/hapi-engine/src/main.ts index cb4e4258c..fd3bad07d 100644 --- a/modules/hapi-engine/src/main.ts +++ b/modules/hapi-engine/src/main.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import * as fs from 'fs'; -import { Request, Response } from 'hapi'; +import { Request, ResponseToolkit } from 'hapi'; import { NgModuleFactory, Type, CompilerFactory, Compiler, StaticProvider } from '@angular/core'; import { ResourceLoader } from '@angular/compiler'; @@ -32,7 +32,7 @@ export interface NgSetupOptions { */ export interface RenderOptions extends NgSetupOptions { req: Request; - res?: Response; + res?: ResponseToolkit; url?: string; document?: string; } @@ -90,16 +90,8 @@ export function ngHapiEngine(options: RenderOptions) { ]); getFactory(moduleOrFactory, compiler) - .then(factory => { - return renderModuleFactory(factory, { - extraProviders - }); - }) - .then((html: string) => { - resolve(html); - }, (err) => { - reject(err); - }); + .then(factory => renderModuleFactory(factory, {extraProviders})) + .then(resolve, reject); }); } @@ -128,9 +120,7 @@ function getFactory( .then((factory) => { factoryCacheMap.set(moduleOrFactory, factory); resolve(factory); - }, (err => { - reject(err); - })); + }, reject); } }); } diff --git a/modules/hapi-engine/tokens/tokens.ts b/modules/hapi-engine/tokens/tokens.ts index 4b3c30b53..166075574 100644 --- a/modules/hapi-engine/tokens/tokens.ts +++ b/modules/hapi-engine/tokens/tokens.ts @@ -5,8 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { Request, Response } from 'hapi'; +import { Request, ResponseToolkit } from 'hapi'; import { InjectionToken } from '@angular/core'; export const REQUEST = new InjectionToken('REQUEST'); -export const RESPONSE = new InjectionToken('RESPONSE'); +export const RESPONSE = new InjectionToken('RESPONSE'); diff --git a/package.json b/package.json index b2fa73eb2..3d4c71c22 100644 --- a/package.json +++ b/package.json @@ -87,14 +87,14 @@ "@bazel/ibazel": "^0.3.1", "@types/express": "^4.0.39", "@types/fs-extra": "^4.0.5", - "@types/hapi": "^16.1.2", + "@types/hapi": "^17.0.12", "@types/jasmine": "^2.8.6", "@types/node": "^9.4.6", "camelcase": "^4.1.0", "express": "^4.15.2", "fs-extra": "^3.0.1", "glob": "^7.1.2", - "hapi": "^16.1.1", + "hapi": "^17.5.1", "jasmine-core": "^2.8.0", "karma": "^2.0.0", "karma-chrome-launcher": "^2.2.0", diff --git a/tools/defaults.bzl b/tools/defaults.bzl index e176c3589..a4ce1c219 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -8,6 +8,8 @@ DEFAULT_NODE_MODULES = "//:node_modules" NG_VERSION = "^6.0.0-rc.0" RXJS_VERSION = "^6.0.0-beta.0" +HAPI_VERSION = "^17.0.0" +EXPRESS_VERSION = "^4.15.2" NGUNIVERSAL_SCOPED_PACKAGES = ["@nguniversal/%s" % p for p in [ "aspnetcore-engine", @@ -20,6 +22,8 @@ NGUNIVERSAL_SCOPED_PACKAGES = ["@nguniversal/%s" % p for p in [ PKG_GROUP_REPLACEMENTS = { "NG_VERSION": NG_VERSION, "RXJS_VERSION": RXJS_VERSION, + "HAPI_VERSION": HAPI_VERSION, + "EXPRESS_VERSION": EXPRESS_VERSION, "\"NG_UPDATE_PACKAGE_GROUP\"": """[ %s ]""" % ",\n ".join(["\"%s\"" % s for s in NGUNIVERSAL_SCOPED_PACKAGES]) @@ -39,14 +43,14 @@ GLOBALS = { "@nguniversal/express-engine/tokens": "nguniversal.expressEngine.tokens", "@nguniversal/hapi-engine/tokens": "nguniversal.hapiEngine.tokens", 'tslib': 'tslib', - "rxjs": "Rx", - "rxjs/operators": "Rx.operators", + "rxjs": "rxjs", + "rxjs/operators": "rxjs.operators", "fs": "fs", "express": "express", "hapi": "hapi" } -# TODO: when a better api for defaults is avilable use that isntead of these macros +# TODO(Toxicable): when a better api for defaults is avilable use that instead of these macros def ts_test_library(node_modules=None, **kwargs): ts_library(testonly=1, **kwargs) diff --git a/yarn.lock b/yarn.lock index 75a56298f..3849fe7d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -98,15 +98,13 @@ "@types/connect" "*" "@types/node" "*" -"@types/boom@^4": - version "4.3.10" - resolved "https://registry.yarnpkg.com/@types/boom/-/boom-4.3.10.tgz#39dad8c0614c26b91ef016a57d7eee4ffe4f8a25" +"@types/boom@*": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/boom/-/boom-7.2.0.tgz#19c36cbb5811a7493f0f2e37f31d42b28df1abc1" -"@types/catbox@^7": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@types/catbox/-/catbox-7.1.6.tgz#be44e3cf3137b4c7997998ec60628709d5db904a" - dependencies: - "@types/boom" "^4" +"@types/catbox@*": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/catbox/-/catbox-10.0.0.tgz#1e01e5ad83e224f110cc59f6f57c56558f7eeb61" "@types/connect@*": version "3.4.32" @@ -148,19 +146,25 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/hapi@^16.1.2": - version "16.1.14" - resolved "https://registry.yarnpkg.com/@types/hapi/-/hapi-16.1.14.tgz#cdda84296fc08c02526301f88964fa74ab9090a6" +"@types/hapi@^17.0.12": + version "17.0.12" + resolved "https://registry.yarnpkg.com/@types/hapi/-/hapi-17.0.12.tgz#5751f4d8db4decb4eae6671a4efbeae671278ceb" dependencies: - "@types/boom" "^4" - "@types/catbox" "^7" - "@types/events" "*" + "@types/boom" "*" + "@types/catbox" "*" + "@types/iron" "*" "@types/joi" "*" "@types/mimos" "*" "@types/node" "*" "@types/podium" "*" "@types/shot" "*" +"@types/iron@*": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/iron/-/iron-5.0.1.tgz#5420bbda8623c48ee51b9a78ebad05d7305b4b24" + dependencies: + "@types/node" "*" + "@types/jasmine@^2.8.6": version "2.8.8" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" @@ -254,12 +258,12 @@ abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" -accept@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" +accept@3.x.x: + version "3.0.2" + resolved "https://registry.yarnpkg.com/accept/-/accept-3.0.2.tgz#83e41cec7e1149f3fd474880423873db6c6cc9ac" dependencies: - boom "5.x.x" - hoek "4.x.x" + boom "7.x.x" + hoek "5.x.x" accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" @@ -319,12 +323,11 @@ amdefine@>=0.0.4, amdefine@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -ammo@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" +ammo@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ammo/-/ammo-3.0.1.tgz#c79ceeac36fb4e55085ea3fe0c2f42bfa5f7c914" dependencies: - boom "5.x.x" - hoek "4.x.x" + hoek "5.x.x" amqplib@^0.5.2: version "0.5.2" @@ -534,9 +537,9 @@ axios@^0.15.3: dependencies: follow-redirects "1.0.0" -b64@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.3.tgz#36afeee0d9345f046387ce6de8a6702afe5bb56e" +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" @@ -578,6 +581,10 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" +big-time@2.x.x: + version "2.0.1" + resolved "https://registry.yarnpkg.com/big-time/-/big-time-2.0.1.tgz#68c7df8dc30f97e953f25a67a76ac9713c16c9de" + binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" @@ -648,11 +655,18 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boom@5.x.x, boom@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" +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" + +bounce@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bounce/-/bounce-1.2.0.tgz#e3bac68c73fd256e38096551efc09f504873c8c8" dependencies: - hoek "4.x.x" + boom "7.x.x" + hoek "5.x.x" brace-expansion@^1.1.7: version "1.1.11" @@ -794,12 +808,12 @@ bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -call@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/call/-/call-4.0.2.tgz#df76f5f51ee8dd48b856ac8400f7e69e6d7399c4" +call@5.x.x: + version "5.0.1" + resolved "https://registry.yarnpkg.com/call/-/call-5.0.1.tgz#ac1b5c106d9edc2a17af2a4a4f74dd4f0c06e910" dependencies: - boom "5.x.x" - hoek "4.x.x" + boom "7.x.x" + hoek "5.x.x" callsite@1.0.0: version "1.0.0" @@ -840,19 +854,22 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -catbox-memory@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" +catbox-memory@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-3.1.2.tgz#4aeec1bc994419c0f7e60087f172aaedd9b4911c" dependencies: - hoek "4.x.x" + big-time "2.x.x" + boom "7.x.x" + hoek "5.x.x" -catbox@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.5.tgz#c56f7e8e9555d27c0dc038a96ef73e57d186bb1f" +catbox@10.x.x: + version "10.0.2" + resolved "https://registry.yarnpkg.com/catbox/-/catbox-10.0.2.tgz#e6ac1f35102d1a9bd07915b82e508d12b50a8bfa" dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" + 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" @@ -1051,11 +1068,11 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -content@3.x.x: - version "3.0.7" - resolved "https://registry.yarnpkg.com/content/-/content-3.0.7.tgz#0cbb88e82702d35ccf59800b8add609bb5c1dfc2" +content@4.x.x: + version "4.0.5" + resolved "https://registry.yarnpkg.com/content/-/content-4.0.5.tgz#bc547deabc889ab69bce17faf3585c29f4c41bf2" dependencies: - boom "5.x.x" + boom "7.x.x" conventional-changelog-angular@^1.6.6: version "1.6.6" @@ -1267,11 +1284,11 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x, cryptiles@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" +cryptiles@4.x.x: + version "4.1.1" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-4.1.1.tgz#169256b9df9fe3c73f8085c99e30b32247d4ab46" dependencies: - boom "5.x.x" + boom "7.x.x" crypto-browserify@^3.11.1: version "3.12.0" @@ -2073,28 +2090,27 @@ handlebars@^4.0.1, handlebars@^4.0.2: optionalDependencies: uglify-js "^2.6" -hapi@^16.1.1: - version "16.6.3" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-16.6.3.tgz#ca9ae1d028afb64d98ac07a1219a1b5eff14d01a" - dependencies: - accept "^2.1.4" - ammo "^2.0.4" - boom "^5.2.0" - call "^4.0.2" - catbox "^7.1.5" - catbox-memory "^2.0.4" - cryptiles "^3.1.2" - heavy "^4.0.4" - hoek "^4.2.0" - iron "^4.0.5" - items "^2.1.1" - joi "^11.1.0" - mimos "^3.0.3" - podium "^1.3.0" - shot "^3.4.2" - statehood "^5.0.3" - subtext "^5.0.0" - topo "^2.0.2" +hapi@^17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/hapi/-/hapi-17.5.1.tgz#0e6ca5d3d908c4c96203221c9c246e23fce4b49b" + 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" har-schema@^2.0.0: version "2.0.0" @@ -2167,13 +2183,13 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -heavy@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" +heavy@6.x.x: + version "6.1.0" + resolved "https://registry.yarnpkg.com/heavy/-/heavy-6.1.0.tgz#1bbfa43dc61dd4b543ede3ff87db8306b7967274" dependencies: - boom "5.x.x" - hoek "4.x.x" - joi "10.x.x" + boom "7.x.x" + hoek "5.x.x" + joi "13.x.x" hipchat-notifier@^1.1.0: version "1.1.0" @@ -2194,9 +2210,9 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -hoek@4.x.x, hoek@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" +hoek@5.x.x: + version "5.0.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.3.tgz#b71d40d943d0a95da01956b547f83c4a5b4a34ac" homedir-polyfill@^1.0.1: version "1.0.1" @@ -2370,13 +2386,13 @@ ipaddr.js@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" -iron@4.x.x, iron@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" +iron@5.x.x: + version "5.0.4" + resolved "https://registry.yarnpkg.com/iron/-/iron-5.0.4.tgz#003ed822f656f07c2b62762815f5de3947326867" dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" + boom "7.x.x" + cryptiles "4.x.x" + hoek "5.x.x" is-arrayish@^0.2.1: version "0.2.1" @@ -2544,10 +2560,6 @@ isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" -isemail@2.x.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" - isemail@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.2.tgz#937cf919002077999a73ea8b1951d590e84e01dd" @@ -2587,10 +2599,6 @@ istanbul@0.4.5, istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -items@2.x.x, items@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" - jasmine-core@^2.8.0: version "2.99.1" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz#e6400df1e6b56e130b61c4bcd093daa7f6e8ca15" @@ -2611,22 +2619,13 @@ jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" -joi@10.x.x: - version "10.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" +joi@13.x.x: + version "13.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-13.4.0.tgz#afc359ee3d8bc5f9b9ba6cdc31b46d44af14cecc" dependencies: - hoek "4.x.x" - isemail "2.x.x" - items "2.x.x" - topo "2.x.x" - -joi@^11.1.0: - version "11.4.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" - dependencies: - hoek "4.x.x" + hoek "5.x.x" isemail "3.x.x" - topo "2.x.x" + topo "3.x.x" js-tokens@^3.0.2: version "3.0.2" @@ -3118,11 +3117,11 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -mimos@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" +mimos@4.x.x: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimos/-/mimos-4.0.0.tgz#76e3d27128431cb6482fd15b20475719ad626a5a" dependencies: - hoek "4.x.x" + hoek "5.x.x" mime-db "1.x.x" minimalistic-assert@^1.0.0: @@ -3205,12 +3204,12 @@ netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" -nigel@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" +nigel@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/nigel/-/nigel-3.0.1.tgz#48a08859d65177312f1c25af7252c1e07bb07c2a" dependencies: - hoek "4.x.x" - vise "2.x.x" + hoek "5.x.x" + vise "3.x.x" node-pre-gyp@^0.10.0: version "0.10.0" @@ -3615,15 +3614,15 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pez@2.x.x: - version "2.1.5" - resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.5.tgz#5ec2cc62500cc3eb4236d4a414cf5a17b5eb5007" +pez@4.x.x: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pez/-/pez-4.0.2.tgz#0a7c81b64968e90b0e9562b398f390939e9c4b53" dependencies: - b64 "3.x.x" - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - nigel "2.x.x" + b64 "4.x.x" + boom "7.x.x" + content "4.x.x" + hoek "5.x.x" + nigel "3.x.x" pify@^2.0.0, pify@^2.3.0: version "2.3.0" @@ -3653,13 +3652,12 @@ plugin-error@^0.1.2: arr-union "^2.0.1" extend-shallow "^1.1.2" -podium@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/podium/-/podium-1.3.0.tgz#3c490f54d16f10f5260cbe98641f1cb733a8851c" +podium@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/podium/-/podium-3.1.2.tgz#b701429739cf6bdde6b3015ae6b48d400817ce9e" dependencies: - hoek "4.x.x" - items "2.x.x" - joi "10.x.x" + hoek "5.x.x" + joi "13.x.x" prelude-ls@~1.1.2: version "1.1.2" @@ -4316,12 +4314,12 @@ shelljs@0.7.8: interpret "^1.0.0" rechoir "^0.6.2" -shot@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" +shot@4.x.x: + version "4.0.5" + resolved "https://registry.yarnpkg.com/shot/-/shot-4.0.5.tgz#c7e7455d11d60f6b6cd3c43e15a3b431c17e5566" dependencies: - hoek "4.x.x" - joi "10.x.x" + hoek "5.x.x" + joi "13.x.x" signal-exit@^3.0.0: version "3.0.2" @@ -4542,16 +4540,16 @@ standard-version@^4.3.0: semver "^5.1.0" yargs "^8.0.1" -statehood@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.3.tgz#c07a75620db5379b60d2edd47f538002a8ac7dd6" +statehood@6.x.x: + version "6.0.6" + resolved "https://registry.yarnpkg.com/statehood/-/statehood-6.0.6.tgz#0dbd7c50774d3f61a24e42b0673093bbc81fa5f0" dependencies: - boom "5.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "10.x.x" + boom "7.x.x" + bounce "1.x.x" + cryptiles "4.x.x" + hoek "5.x.x" + iron "5.x.x" + joi "13.x.x" "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": version "1.5.0" @@ -4669,15 +4667,15 @@ strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0 version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -subtext@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/subtext/-/subtext-5.0.0.tgz#9c3f083018bb1586b167ad8cfd87083f5ccdfe0f" +subtext@6.x.x: + version "6.0.7" + resolved "https://registry.yarnpkg.com/subtext/-/subtext-6.0.7.tgz#8e40a67901a734d598142665c90e398369b885f9" dependencies: - boom "5.x.x" - content "3.x.x" - hoek "4.x.x" - pez "2.x.x" - wreck "12.x.x" + boom "7.x.x" + content "4.x.x" + hoek "5.x.x" + pez "4.x.x" + wreck "14.x.x" supports-color@^2.0.0: version "2.0.0" @@ -4713,6 +4711,10 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +teamwork@3.x.x: + version "3.0.1" + resolved "https://registry.yarnpkg.com/teamwork/-/teamwork-3.0.1.tgz#ff38c7161f41f8070b7813716eb6154036ece196" + text-extensions@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" @@ -4779,11 +4781,11 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -topo@2.x.x, topo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" +topo@3.x.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.0.tgz#37e48c330efeac784538e0acd3e62ca5e231fe7a" dependencies: - hoek "4.x.x" + hoek "5.x.x" tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.4" @@ -5023,11 +5025,11 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vise@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" +vise@3.x.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vise/-/vise-3.0.0.tgz#76ad14ab31669c50fbb0817bc0e72fedcbb3bf4c" dependencies: - hoek "4.x.x" + hoek "5.x.x" vlq@^0.2.2: version "0.2.3" @@ -5127,12 +5129,12 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -wreck@12.x.x: - version "12.5.1" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.5.1.tgz#cd2ffce167449e1f0242ed9cf80552e20fb6902a" +wreck@14.x.x: + version "14.0.2" + resolved "https://registry.yarnpkg.com/wreck/-/wreck-14.0.2.tgz#89c17a9061c745ed1c3aebcb66ea181dbaab454c" dependencies: - boom "5.x.x" - hoek "4.x.x" + boom "7.x.x" + hoek "5.x.x" ws@^1.0.1: version "1.1.5"