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

hono

Package Overview
Dependencies
Maintainers
1
Versions
348
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hono - npm Package Compare versions

Comparing version 3.12.5 to 3.12.6

20

dist/cjs/context.js

@@ -48,2 +48,6 @@ "use strict";

const TEXT_PLAIN = "text/plain; charset=UTF-8";
const setHeaders = (headers, map = {}) => {
Object.entries(map).forEach(([key, value]) => headers.set(key, value));
return headers;
};
class Context {

@@ -120,10 +124,12 @@ constructor(req, options) {

if (arg && typeof arg !== "number") {
this.res = new Response(data, arg);
const headers2 = setHeaders(new Headers(arg.headers), __privateGet(this, _preparedHeaders));
return new Response(data, {
headers: headers2,
status: arg.status
});
}
const status = typeof arg === "number" ? arg : arg ? arg.status : __privateGet(this, _status);
const status = typeof arg === "number" ? arg : __privateGet(this, _status);
__privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
__privateGet(this, _headers) ?? __privateSet(this, _headers, new Headers());
for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
__privateGet(this, _headers).set(k, v);
}
setHeaders(__privateGet(this, _headers), __privateGet(this, _preparedHeaders));
if (__privateGet(this, _res)) {

@@ -133,5 +139,3 @@ __privateGet(this, _res).headers.forEach((v, k) => {

});
for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
__privateGet(this, _headers).set(k, v);
}
setHeaders(__privateGet(this, _headers), __privateGet(this, _preparedHeaders));
}

@@ -138,0 +142,0 @@ headers ?? (headers = {});

14

dist/cjs/middleware/basic-auth/index.js

@@ -57,12 +57,6 @@ "use strict";

for (const user of users) {
const usernameEqual = await (0, import_buffer.timingSafeEqual)(
user.username,
requestUser.username,
options.hashFunction
);
const passwordEqual = await (0, import_buffer.timingSafeEqual)(
user.password,
requestUser.password,
options.hashFunction
);
const [usernameEqual, passwordEqual] = await Promise.all([
(0, import_buffer.timingSafeEqual)(user.username, requestUser.username, options.hashFunction),
(0, import_buffer.timingSafeEqual)(user.password, requestUser.password, options.hashFunction)
]);
if (usernameEqual && passwordEqual) {

@@ -69,0 +63,0 @@ await next();

@@ -45,17 +45,16 @@ "use strict";

const response = await cache3.match(key);
if (!response) {
await next();
if (!c.res.ok) {
return;
}
addHeader(c);
const response2 = c.res.clone();
if (options.wait) {
await cache3.put(key, response2);
} else {
c.executionCtx.waitUntil(cache3.put(key, response2));
}
} else {
if (response) {
return new Response(response.body, response);
}
await next();
if (!c.res.ok) {
return;
}
addHeader(c);
const res = c.res.clone();
if (options.wait) {
await cache3.put(key, res);
} else {
c.executionCtx.waitUntil(cache3.put(key, res));
}
};

@@ -62,0 +61,0 @@ };

@@ -61,5 +61,3 @@ "use strict";

}
if (c.req.method !== "OPTIONS") {
await next();
} else {
if (c.req.method === "OPTIONS") {
if (opts.maxAge != null) {

@@ -90,2 +88,3 @@ set("Access-Control-Max-Age", opts.maxAge.toString());

}
await next();
};

@@ -92,0 +91,0 @@ };

@@ -43,9 +43,9 @@ "use strict";

if (parts.length !== 2) {
const res = new Response("Unauthorized", {
status: 401,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="invalid credentials structure"`
}
throw new import_http_exception.HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_request",
errDescription: "invalid credentials structure"
})
});
throw new import_http_exception.HTTPException(401, { res });
} else {

@@ -58,9 +58,9 @@ token = parts[1];

if (!token) {
const res = new Response("Unauthorized", {
status: 401,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="no authorization included in request"`
}
throw new import_http_exception.HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_request",
errDescription: "no authorization included in request"
})
});
throw new import_http_exception.HTTPException(401, { res });
}

@@ -75,10 +75,10 @@ let payload;

if (!payload) {
const res = new Response("Unauthorized", {
status: 401,
statusText: msg,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_token",error_description="token verification failure"`
}
throw new import_http_exception.HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_token",
statusText: msg,
errDescription: "token verification failure"
})
});
throw new import_http_exception.HTTPException(401, { res });
}

@@ -89,2 +89,11 @@ ctx.set("jwtPayload", payload);

};
function unauthorizedResponse(opts) {
return new Response("Unauthorized", {
status: 401,
statusText: opts.statusText,
headers: {
"WWW-Authenticate": `Bearer realm="${opts.ctx.req.url}",error="${opts.error}",error_description="${opts.errDescription}"`
}
});
}
const verify = import_jwt.Jwt.verify;

@@ -91,0 +100,0 @@ const decode = import_jwt.Jwt.decode;

@@ -25,2 +25,6 @@ var __accessCheck = (obj, member, msg) => {

var TEXT_PLAIN = "text/plain; charset=UTF-8";
var setHeaders = (headers, map = {}) => {
Object.entries(map).forEach(([key, value]) => headers.set(key, value));
return headers;
};
var _status, _executionCtx, _headers, _preparedHeaders, _res, _isFresh;

@@ -98,10 +102,12 @@ var Context = class {

if (arg && typeof arg !== "number") {
this.res = new Response(data, arg);
const headers2 = setHeaders(new Headers(arg.headers), __privateGet(this, _preparedHeaders));
return new Response(data, {
headers: headers2,
status: arg.status
});
}
const status = typeof arg === "number" ? arg : arg ? arg.status : __privateGet(this, _status);
const status = typeof arg === "number" ? arg : __privateGet(this, _status);
__privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
__privateGet(this, _headers) ?? __privateSet(this, _headers, new Headers());
for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
__privateGet(this, _headers).set(k, v);
}
setHeaders(__privateGet(this, _headers), __privateGet(this, _preparedHeaders));
if (__privateGet(this, _res)) {

@@ -111,5 +117,3 @@ __privateGet(this, _res).headers.forEach((v, k) => {

});
for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
__privateGet(this, _headers).set(k, v);
}
setHeaders(__privateGet(this, _headers), __privateGet(this, _preparedHeaders));
}

@@ -116,0 +120,0 @@ headers ?? (headers = {});

@@ -35,12 +35,6 @@ // src/middleware/basic-auth/index.ts

for (const user of users) {
const usernameEqual = await timingSafeEqual(
user.username,
requestUser.username,
options.hashFunction
);
const passwordEqual = await timingSafeEqual(
user.password,
requestUser.password,
options.hashFunction
);
const [usernameEqual, passwordEqual] = await Promise.all([
timingSafeEqual(user.username, requestUser.username, options.hashFunction),
timingSafeEqual(user.password, requestUser.password, options.hashFunction)
]);
if (usernameEqual && passwordEqual) {

@@ -47,0 +41,0 @@ await next();

@@ -23,17 +23,16 @@ // src/middleware/cache/index.ts

const response = await cache3.match(key);
if (!response) {
await next();
if (!c.res.ok) {
return;
}
addHeader(c);
const response2 = c.res.clone();
if (options.wait) {
await cache3.put(key, response2);
} else {
c.executionCtx.waitUntil(cache3.put(key, response2));
}
} else {
if (response) {
return new Response(response.body, response);
}
await next();
if (!c.res.ok) {
return;
}
addHeader(c);
const res = c.res.clone();
if (options.wait) {
await cache3.put(key, res);
} else {
c.executionCtx.waitUntil(cache3.put(key, res));
}
};

@@ -40,0 +39,0 @@ };

@@ -39,5 +39,3 @@ // src/middleware/cors/index.ts

}
if (c.req.method !== "OPTIONS") {
await next();
} else {
if (c.req.method === "OPTIONS") {
if (opts.maxAge != null) {

@@ -68,2 +66,3 @@ set("Access-Control-Max-Age", opts.maxAge.toString());

}
await next();
};

@@ -70,0 +69,0 @@ };

@@ -18,9 +18,9 @@ // src/middleware/jwt/index.ts

if (parts.length !== 2) {
const res = new Response("Unauthorized", {
status: 401,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="invalid credentials structure"`
}
throw new HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_request",
errDescription: "invalid credentials structure"
})
});
throw new HTTPException(401, { res });
} else {

@@ -33,9 +33,9 @@ token = parts[1];

if (!token) {
const res = new Response("Unauthorized", {
status: 401,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_request",error_description="no authorization included in request"`
}
throw new HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_request",
errDescription: "no authorization included in request"
})
});
throw new HTTPException(401, { res });
}

@@ -50,10 +50,10 @@ let payload;

if (!payload) {
const res = new Response("Unauthorized", {
status: 401,
statusText: msg,
headers: {
"WWW-Authenticate": `Bearer realm="${ctx.req.url}",error="invalid_token",error_description="token verification failure"`
}
throw new HTTPException(401, {
res: unauthorizedResponse({
ctx,
error: "invalid_token",
statusText: msg,
errDescription: "token verification failure"
})
});
throw new HTTPException(401, { res });
}

@@ -64,2 +64,11 @@ ctx.set("jwtPayload", payload);

};
function unauthorizedResponse(opts) {
return new Response("Unauthorized", {
status: 401,
statusText: opts.statusText,
headers: {
"WWW-Authenticate": `Bearer realm="${opts.ctx.req.url}",error="${opts.error}",error_description="${opts.errDescription}"`
}
});
}
var verify = Jwt.verify;

@@ -66,0 +75,0 @@ var decode = Jwt.decode;

@@ -19,2 +19,16 @@ import type { Hono } from '../../hono';

}
interface CloudFrontS3Origin {
authMethod: 'origin-access-identity' | 'none';
customHeaders: CloudFrontHeaders;
domainName: string;
path: string;
region: string;
}
type CloudFrontOrigin = {
s3: CloudFrontS3Origin;
custom?: never;
} | {
custom: CloudFrontCustomOrigin;
s3?: never;
};
export interface CloudFrontRequest {

@@ -32,5 +46,3 @@ clientIp: string;

};
origin?: {
custom: CloudFrontCustomOrigin;
};
origin?: CloudFrontOrigin;
}

@@ -37,0 +49,0 @@ export interface CloudFrontResponse {

@@ -155,3 +155,69 @@ import type { Context } from './context';

export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schema = {}, BasePath extends string = '/'> {
<E2 extends Env = E>(...handlers: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>[]): Hono<E, S, BasePath>;
<E2 extends Env = E>(...handlers: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>[]): Hono<IntersectNonAnyTypes<[E, E2]>, S, BasePath>;
<E2 extends Env = E>(handler: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>): Hono<IntersectNonAnyTypes<[E, E2]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>, MiddlewareHandler<E4, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>,
MiddlewareHandler<E7, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>,
MiddlewareHandler<E7, P>,
MiddlewareHandler<E8, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>,
MiddlewareHandler<E7, P>,
MiddlewareHandler<E8, P>,
MiddlewareHandler<E9, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>,
MiddlewareHandler<E7, P>,
MiddlewareHandler<E8, P>,
MiddlewareHandler<E9, P>,
MiddlewareHandler<E10, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, S, BasePath>;
<E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = E, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
MiddlewareHandler<E2, P>,
MiddlewareHandler<E3, P>,
MiddlewareHandler<E4, P>,
MiddlewareHandler<E5, P>,
MiddlewareHandler<E6, P>,
MiddlewareHandler<E7, P>,
MiddlewareHandler<E8, P>,
MiddlewareHandler<E9, P>,
MiddlewareHandler<E10, P>,
MiddlewareHandler<E11, P>
]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>, S, BasePath>;
<P extends string, E2 extends Env = E>(path: P, ...handlers: MiddlewareHandler<E2, MergePath<BasePath, P>>[]): Hono<E, S, BasePath>;

@@ -158,0 +224,0 @@ }

{
"name": "hono",
"version": "3.12.5",
"version": "3.12.6",
"description": "Ultrafast web framework for the Edges",

@@ -14,2 +14,3 @@ "main": "dist/cjs/index.js",

"test": "tsc --noEmit && vitest --run",
"test:watch": "vitest --watch",
"test:deno": "env NAME=Deno deno test --allow-read --allow-env runtime_tests/deno && deno test --no-lock -c runtime_tests/deno-jsx/deno.precompile.json runtime_tests/deno-jsx && deno test --no-lock -c runtime_tests/deno-jsx/deno.react-jsx.json runtime_tests/deno-jsx",

@@ -16,0 +17,0 @@ "test:bun": "env NAME=Bun bun test --jsx-import-source ../../src/jsx runtime_tests/bun/index.test.tsx",

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