Comparing version 1.4.0 to 1.5.0
@@ -304,2 +304,4 @@ import { CookieSerializeOptions } from 'cookie-es'; | ||
sendStream?: boolean; | ||
cookieDomainRewrite?: string | Record<string, string>; | ||
cookiePathRewrite?: string | Record<string, string>; | ||
} | ||
@@ -352,2 +354,21 @@ declare function proxyRequest(event: H3Event, target: string, opts?: ProxyOptions): Promise<any>; | ||
interface H3CorsOptions { | ||
origin?: "*" | "null" | (string | RegExp)[] | ((origin: string) => boolean); | ||
methods?: "*" | HTTPMethod[]; | ||
allowHeaders?: "*" | string[]; | ||
exposeHeaders?: "*" | string[]; | ||
credentials?: boolean; | ||
maxAge?: string | false; | ||
preflight?: { | ||
statusCode?: number; | ||
}; | ||
} | ||
declare function handleCors(event: H3Event, options: H3CorsOptions): boolean; | ||
declare function isPreflightRequest(event: H3Event): boolean; | ||
declare function isCorsOriginAllowed(origin: ReturnType<typeof getRequestHeaders>["origin"], options: H3CorsOptions): boolean; | ||
declare function appendCorsPreflightHeaders(event: H3Event, options: H3CorsOptions): void; | ||
declare function appendCorsHeaders(event: H3Event, options: H3CorsOptions): void; | ||
type RouterMethod = Lowercase<HTTPMethod>; | ||
@@ -368,2 +389,2 @@ type RouterUse = (path: string, handler: EventHandler, method?: RouterMethod | RouterMethod[]) => Router; | ||
export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, DynamicEventHandler, Encoding, EventHandler, EventHandlerResponse, H3Error, H3Event, H3EventContext, H3Headers, H3Response, HTTPMethod, InputLayer, InputStack, Layer, LazyEventHandler, MIMES, Matcher, NodeEventContext, NodeListener, NodeMiddleware, NodePromisifiedHandler, ProxyOptions, RequestHeaders, Router, RouterMethod, RouterUse, Session, SessionConfig, SessionData, Stack, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearSession, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestHeader, getRequestHeaders, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, handleCacheHeaders, isError, isEvent, isEventHandler, isMethod, isStream, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readMultipartFormData, readRawBody, sealSession, send, sendError, sendNoContent, sendProxy, sendRedirect, sendStream, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, toEventHandler, toNodeListener, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints }; | ||
export { AddRouteShortcuts, App, AppOptions, AppUse, CacheConditions, CreateRouterOptions, DynamicEventHandler, Encoding, EventHandler, EventHandlerResponse, H3CorsOptions, H3Error, H3Event, H3EventContext, H3Headers, H3Response, HTTPMethod, InputLayer, InputStack, Layer, LazyEventHandler, MIMES, Matcher, MultiPartData, NodeEventContext, NodeListener, NodeMiddleware, NodePromisifiedHandler, ProxyOptions, RequestHeaders, Router, RouterMethod, RouterUse, Session, SessionConfig, SessionData, Stack, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearSession, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestHeader, getRequestHeaders, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readMultipartFormData, readRawBody, sealSession, send, sendError, sendNoContent, sendProxy, sendRedirect, sendStream, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, toEventHandler, toNodeListener, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints }; |
{ | ||
"name": "h3", | ||
"version": "1.4.0", | ||
"version": "1.5.0", | ||
"description": "Tiny JavaScript Server", | ||
@@ -24,6 +24,7 @@ "repository": "unjs/h3", | ||
"cookie-es": "^0.5.0", | ||
"defu": "^6.1.2", | ||
"destr": "^1.2.2", | ||
"iron-webcrypto": "^0.4.0", | ||
"iron-webcrypto": "^0.5.0", | ||
"radix3": "^1.0.0", | ||
"ufo": "^1.0.1", | ||
"ufo": "^1.1.0", | ||
"uncrypto": "^0.1.2" | ||
@@ -36,13 +37,13 @@ }, | ||
"@types/supertest": "^2.0.12", | ||
"@vitest/coverage-c8": "^0.28.4", | ||
"@vitest/coverage-c8": "^0.28.5", | ||
"autocannon": "^7.10.0", | ||
"changelogen": "^0.4.1", | ||
"connect": "^3.7.0", | ||
"eslint": "^8.33.0", | ||
"eslint": "^8.34.0", | ||
"eslint-config-unjs": "^0.1.0", | ||
"express": "^4.18.2", | ||
"get-port": "^6.1.2", | ||
"jiti": "^1.16.2", | ||
"jiti": "^1.17.0", | ||
"listhen": "^1.0.2", | ||
"node-fetch-native": "^1.0.1", | ||
"node-fetch-native": "^1.0.2", | ||
"prettier": "^2.8.4", | ||
@@ -52,9 +53,10 @@ "supertest": "^6.3.3", | ||
"unbuild": "^1.1.1", | ||
"vitest": "^0.28.4" | ||
"vitest": "^0.28.5" | ||
}, | ||
"packageManager": "pnpm@7.26.3", | ||
"packageManager": "pnpm@7.27.0", | ||
"scripts": { | ||
"build": "unbuild", | ||
"dev": "vitest", | ||
"lint": "eslint --ext ts,mjs,cjs . && prettier -c src test playground", | ||
"lint": "eslint --cache --ext .ts,.js,.mjs,.cjs . && prettier -c src test playground", | ||
"lint:fix": "eslint --cache --ext .ts,.js,.mjs,.cjs . --fix && prettier -c src test playground -w", | ||
"play": "jiti ./playground/index.ts", | ||
@@ -61,0 +63,0 @@ "profile": "0x -o -D .profile -P 'autocannon -c 100 -p 10 -d 40 http://localhost:$PORT' ./playground/server.cjs", |
[![npm downloads](https://img.shields.io/npm/dm/h3.svg?style=flat-square)](https://npmjs.com/package/h3) | ||
[![version](https://img.shields.io/npm/v/h3/latest.svg?style=flat-square)](https://npmjs.com/package/h3) | ||
[![bundlephobia](https://img.shields.io/bundlephobia/min/h3/latest.svg?style=flat-square)](https://bundlephobia.com/result?p=h3) | ||
[![build status](https://img.shields.io/github/workflow/status/unjs/h3/ci/main?style=flat-square)](https://github.com/unjs/h3/actions) | ||
[![build status](https://img.shields.io/github/actions/workflow/status/unjs/h3/ci.yml?branch=main&style=flat-square)](https://github.com/unjs/h3/actions) | ||
[![coverage](https://img.shields.io/codecov/c/gh/unjs/h3/main?style=flat-square)](https://codecov.io/gh/unjs/h3) | ||
@@ -113,2 +113,15 @@ [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue?style=flat-square)](https://www.jsdocs.io/package/h3) | ||
// We can proxy requests and rewrite cookie's domain and path | ||
app.use('/api', eventHandler((event) => proxyRequest('https://example.com', { | ||
// f.e. keep one domain unchanged, rewrite one domain and remove other domains | ||
cookieDomainRewrite: { | ||
"example.com": "example.com", | ||
"example.com": "somecompany.co.uk", | ||
"*": "", | ||
}, | ||
cookiePathRewrite: { | ||
"/": "/api" | ||
}, | ||
})) | ||
// Legacy middleware with 3rd argument are automatically promisified | ||
@@ -150,4 +163,4 @@ app.use(fromNodeMiddleware((req, res, next) => { req.setHeader('x-foo', 'bar'); next() })) | ||
- `createError({ statusCode, statusMessage, data? })` | ||
- `sendProxy(event, { target, headers?, fetchOptions?, fetch?, sendStream? })` | ||
- `proxyRequest(event, { target, headers?, fetchOptions?, fetch?, sendStream? })` | ||
- `sendProxy(event, { target, ...options })` | ||
- `proxyRequest(event, { target, ...options })` | ||
- `fetchWithEvent(event, req, init, { fetch? }?)` | ||
@@ -166,2 +179,7 @@ - `getProxyRequestHeaders(event)` | ||
- `unsealSession(event, config, sealed)` | ||
- `handleCors(options)` (see [h3-cors](https://github.com/NozomuIkuta/h3-cors) for more detail about options) | ||
- `isPreflightRequest(event)` | ||
- `isCorsOriginAllowed(event)` | ||
- `appendCorsHeaders(event, options)` (see [h3-cors](https://github.com/NozomuIkuta/h3-cors) for more detail about options) | ||
- `appendCorsPreflightHeaders(event, options)` (see [h3-cors](https://github.com/NozomuIkuta/h3-cors) for more detail about options) | ||
@@ -178,5 +196,2 @@ 👉 You can learn more about usage in [JSDocs Documentation](https://www.jsdocs.io/package/h3#package-functions). | ||
- [h3-cors](https://github.com/NozomuIkuta/h3-cors) | ||
- `defineCorsEventHandler(options)` | ||
- `isPreflight(event)` | ||
- [h3-typebox](https://github.com/kevinmarrec/h3-typebox) | ||
@@ -183,0 +198,0 @@ - `validateBody(event, schema)` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
153244
4628
203
7
+ Addeddefu@^6.1.2
+ Addeddefu@6.1.4(transitive)
+ Addediron-webcrypto@0.5.0(transitive)
- Removediron-webcrypto@0.4.0(transitive)
Updatediron-webcrypto@^0.5.0
Updatedufo@^1.1.0