New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hapi

Package Overview
Dependencies
Maintainers
1
Versions
295
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hapi - npm Package Compare versions

Comparing version 16.4.3 to 16.5.0

lib/streams.js

5

lib/auth.js

@@ -538,4 +538,5 @@ 'use strict';

const count = (typeof credentials.scope === 'string' ? (scope[type].indexOf(credentials.scope) !== -1 ? 1 : 0)
: Hoek.intersect(scope[type], credentials.scope).length);
const count = typeof credentials.scope === 'string' ?
(scope[type].indexOf(credentials.scope) !== -1 ? 1 : 0) :
Hoek.intersect(scope[type], credentials.scope).length;

@@ -542,0 +543,0 @@ if (type === 'forbidden') {

2

lib/handler.js

@@ -105,3 +105,3 @@ 'use strict';

result.then(null, (err) => reply(err instanceof Error ? Boom.wrap(err) : Boom.badImplementation('Unhandled rejected promise', err)));
result.then(null, (err) => reply(err instanceof Error ? Boom.boomify(err) : Boom.badImplementation('Unhandled rejected promise', err)));
}

@@ -108,0 +108,0 @@ };

@@ -29,2 +29,3 @@ 'use strict';

this.domain.on('error', this._onError.bind(this));
request.onPodiumError = (err) => this._onError(err);
};

@@ -31,0 +32,0 @@

@@ -108,3 +108,3 @@ 'use strict';

const decoration = this._decorations[method];
reply[method] = (domain ? domain.bind(decoration) : decoration);
reply[method] = (domain && typeof decoration === 'function') ? domain.bind(decoration) : decoration;
}

@@ -111,0 +111,0 @@ }

@@ -19,3 +19,4 @@ 'use strict';

const internals = {
properties: ['connection', 'server', 'url', 'query', 'path', 'method', 'mime', 'setUrl', 'setMethod', 'headers', 'id', 'app', 'plugins', 'route', 'auth', 'pre', 'preResponses', 'info', 'orig', 'params', 'paramsArray', 'payload', 'state', 'jsonp', 'response', 'raw', 'tail', 'addTail', 'domain', 'log', 'getLog', 'generateResponse']
properties: ['connection', 'server', 'url', 'query', 'path', 'method', 'mime', 'setUrl', 'setMethod', 'headers', 'id', 'app', 'plugins', 'route', 'auth', 'pre', 'preResponses', 'info', 'orig', 'params', 'paramsArray', 'payload', 'state', 'jsonp', 'response', 'raw', 'tail', 'addTail', 'domain', 'log', 'getLog', 'generateResponse'],
emitter: new Podium(['finish', { name: 'peek', spread: true }, 'disconnect'])
};

@@ -63,3 +64,3 @@

Podium.call(this, ['finish', { name: 'peek', spread: true }, 'disconnect']);
Podium.decorate(this, internals.emitter);

@@ -66,0 +67,0 @@ // Take measurement as soon as possible

@@ -9,2 +9,3 @@ 'use strict';

const Podium = require('podium');
const Streams = require('./streams');

@@ -63,5 +64,5 @@

return (result instanceof Error ? Boom.wrap(result)
: (result instanceof internals.Response ? result
: new internals.Response(result, request)));
return (result instanceof Error) ?
Boom.boomify(result) :
(result instanceof internals.Response ? result : new internals.Response(result, request));
};

@@ -473,3 +474,3 @@

if (source instanceof Error) {
return next(Boom.wrap(source));
return next(Boom.boomify(source));
}

@@ -491,6 +492,6 @@

err.data = source;
return next(Boom.wrap(err));
return next(Boom.boomify(err));
}
return next(Boom.wrap(source));
return next(Boom.boomify(source));
};

@@ -628,26 +629,18 @@

if (stream instanceof Stream) {
if (stream.close) {
stream.close();
}
else if (stream.destroy) {
stream.destroy();
}
else {
const read = () => {
internals.Response.drain(stream);
}
};
stream.read();
};
const end = () => {
internals.Response.drain = function (stream) {
stream.removeListener('readable', read);
stream.removeListener('error', end);
stream.removeListener('end', end);
};
stream.on('readable', read);
stream.once('error', end);
stream.once('end', end);
}
if (stream.close) {
stream.close();
}
else if (stream.destroy) {
stream.destroy();
}
else {
Streams.drain(stream);
}
};

@@ -654,0 +647,0 @@

@@ -16,2 +16,3 @@ 'use strict';

const Schema = require('./schema');
const Streams = require('./streams');

@@ -233,3 +234,3 @@

if (this._special) {
this._cycle = [Handler.execute];
this._cycle = [internals.drain, Handler.execute];
return;

@@ -416,12 +417,30 @@ }

const failAction = request.route.settings.payload.failAction; // failAction: 'error', 'log', 'ignore'
if (failAction !== 'ignore') {
request._log(['payload', 'error'], err);
// failAction: 'error', 'log', 'ignore', function (request, reply, error)
const failAction = request.route.settings.payload.failAction;
if (failAction === 'ignore') {
return next();
}
if (failAction === 'error') {
request._log(['payload', 'error'], err);
// Log only
if (failAction === 'log') {
return next();
}
// Return error
if (typeof failAction !== 'function') {
return next(err);
}
return next();
// Custom handler
request._protect.run(next, (exit) => {
const reply = request.server._replier.interface(request, request.route.realm, {}, exit);
return failAction(request, reply, err);
});
};

@@ -440,22 +459,17 @@

const stream = request.raw.req;
Streams.drain(request.raw.req, () => {
const read = () => {
request._isPayloadPending = false;
return onParsed(err, parsed);
});
});
};
stream.read();
};
const end = () => {
internals.drain = function (request, next) {
stream.removeListener('readable', read);
stream.removeListener('error', end);
stream.removeListener('end', end);
return Streams.drain(request.raw.req, () => {
request._isPayloadPending = false;
return onParsed(err, parsed);
};
stream.on('readable', read);
stream.once('error', end);
stream.once('end', end);
request._isPayloadPending = false;
return next();
});

@@ -462,0 +476,0 @@ };

@@ -115,3 +115,6 @@ 'use strict';

uploads: Joi.string(),
failAction: Joi.string().valid('error', 'log', 'ignore'),
failAction: [
Joi.string().valid('error', 'log', 'ignore'),
Joi.func()
],
timeout: Joi.number().integer().positive().allow(false),

@@ -136,3 +139,3 @@ defaultContentType: Joi.string(),

.without('modify', 'sample')
.assert('options.stripUnknown', Joi.ref('modify'), 'meet requirement of having peer modify set to true'),
.assert('options.stripUnknown', Joi.when('modify', { is: true, otherwise: Joi.forbidden() }), 'meet requirement of having peer modify set to true'),
security: Joi.object({

@@ -139,0 +142,0 @@ hsts: [

@@ -85,8 +85,10 @@ 'use strict';

if (this._settings.debug.log) {
this._events.on({ name: 'log', filter: this._settings.debug.log }, (event) => debug(null, event));
const filter = this._settings.debug.log.some((tag) => tag === '*') ? undefined : this._settings.debug.log;
this._events.on({ name: 'log', filter }, (event) => debug(null, event));
}
if (this._settings.debug.request) {
this.on({ name: 'request', filter: this._settings.debug.request }, debug);
this.on({ name: 'request-internal', filter: this._settings.debug.request }, debug);
const filter = this._settings.debug.request.some((tag) => tag === '*') ? undefined : this._settings.debug.request;
this.on({ name: 'request', filter }, debug);
this.on({ name: 'request-internal', filter }, debug);
}

@@ -93,0 +95,0 @@ }

@@ -82,3 +82,3 @@ 'use strict';

if (err) {
return next(Boom.wrap(err));
return next(Boom.boomify(err));
}

@@ -240,19 +240,16 @@

// Write payload
// Injection
let hasEnded = false;
const end = (err, event) => {
if (isInjection) {
request.raw.res._hapi = { request };
if (hasEnded) {
return;
if (response.variety === 'plain') {
request.raw.res._hapi.result = response._isPayloadSupported() ? response.source : null;
}
}
hasEnded = true;
// Write payload
if (!request.raw.res.finished &&
event !== 'aborted') {
const end = Hoek.once((err, event) => {
request.raw.res.end();
}
source.removeListener('error', end);

@@ -267,6 +264,19 @@

const tags = (err ? ['response', 'error']
: (event ? ['response', 'error', event]
: ['response']));
if (err) {
request.raw.res.destroy();
if (request.raw.res._hapi) {
request.raw.res._hapi.result = Boom.boomify(err).output.payload; // Force injected response to error
}
source.unpipe();
Response.drain(source);
}
if (!request.raw.res.finished &&
event !== 'aborted') {
request.raw.res.end();
}
if (event || err) {

@@ -276,18 +286,12 @@ request.emit('disconnect');

const tags = (err ? ['response', 'error'] : (event ? ['response', 'error', event] : ['response']));
request._log(tags, err);
return callback();
};
});
source.once('error', end);
const onAborted = () => {
const onAborted = () => end(null, 'aborted');
const onClose = () => end(null, 'close');
return end(null, 'aborted');
};
const onClose = () => {
return end(null, 'close');
};
request.raw.req.once('aborted', onAborted);

@@ -305,12 +309,2 @@ request.raw.req.once('close', onClose);

ranged.pipe(request.raw.res);
// Injection
if (isInjection) {
request.raw.res._hapi = { request };
if (response.variety === 'plain') {
request.raw.res._hapi.result = response._isPayloadSupported() ? response.source : null;
}
}
};

@@ -340,3 +334,3 @@

return Boom.wrap(err);
return Boom.boomify(err);
}

@@ -348,3 +342,3 @@

catch (err) {
return Boom.wrap(err);
return Boom.boomify(err);
}

@@ -383,4 +377,4 @@

const policy = request.route.settings.cache &&
request._route._cache &&
(request.route.settings.cache._statuses[response.statusCode] || (response.statusCode === 304 && request.route.settings.cache._statuses['200']));
request._route._cache &&
(request.route.settings.cache._statuses[response.statusCode] || (response.statusCode === 304 && request.route.settings.cache._statuses['200']));

@@ -441,4 +435,4 @@ if (policy ||

if ((!response._contentType || !postMarshal) &&
response.settings.charset &&
type.match(/^(?:text\/)|(?:application\/(?:json)|(?:javascript))/)) {
response.settings.charset &&
type.match(/^(?:text\/)|(?:application\/(?:json)|(?:javascript))/)) {

@@ -497,3 +491,3 @@ if (!type.match(/; *charset=/)) {

if (err) {
return next(Boom.wrap(err));
return next(Boom.boomify(err));
}

@@ -508,3 +502,3 @@

if (err) {
return next(Boom.wrap(err));
return next(Boom.boomify(err));
}

@@ -511,0 +505,0 @@

@@ -21,6 +21,8 @@ 'use strict';

return (rule === false ? Joi.object({}).allow(null)
: typeof rule === 'function' ? rule
: !rule || rule === true ? null // false tested earlier
: Joi.compile(rule));
return (rule === false) ?
Joi.object({}).allow(null) :
(typeof rule === 'function' ?
rule :
!rule || rule === true ? null : Joi.compile(rule)); // false tested earlier
};

@@ -27,0 +29,0 @@

@@ -5,3 +5,3 @@ {

"homepage": "http://hapijs.com",
"version": "16.4.3",
"version": "16.5.0",
"repository": {

@@ -38,3 +38,3 @@ "type": "git",

"statehood": "5.x.x",
"subtext": "4.x.x",
"subtext": "5.x.x",
"topo": "2.x.x"

@@ -46,3 +46,3 @@ },

"inert": "4.x.x",
"lab": "13.x.x",
"lab": "14.x.x",
"vision": "4.x.x",

@@ -49,0 +49,0 @@ "wreck": "12.x.x"

@@ -11,3 +11,3 @@ <img src="https://raw.github.com/hapijs/hapi/master/images/hapi.png" />

Development version: **16.4.x** ([release notes](https://github.com/hapijs/hapi/issues?labels=release+notes&page=1&state=closed))
Development version: **16.5.x** ([release notes](https://github.com/hapijs/hapi/issues?labels=release+notes&page=1&state=closed))
[![Build Status](https://secure.travis-ci.org/hapijs/hapi.svg?branch=master)](http://travis-ci.org/hapijs/hapi)

@@ -26,5 +26,7 @@

- **Lob**
- **Auth0**
- **CNN Digital**
- **Contentful**
- The product development team at **Creative Artists Agency**

@@ -31,0 +33,0 @@ #### Legacy Supporters

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc