Skip to content

Commit

Permalink
chore: upgrade final options gets
Browse files Browse the repository at this point in the history
  • Loading branch information
wenqing committed Dec 25, 2023
1 parent 9a0c12c commit 81a5215
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 16 deletions.
17 changes: 12 additions & 5 deletions lib/index.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -407,15 +407,23 @@ const defaultOption = () => ({
target: '',
enableLogger: true,
});
const getTargetOptions = (req, finalMultiOptions) => {
let path = '';
const finalOptions = finalMultiOptions.find((v) => {
path = getUrlPath(req.url, v.target);
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req });
});
return {
path,
finalOptions,
};
};
const createProxyEventHandler = (options) => {
const multiOptions = Array.isArray(options) ? options : [options];
const finalMultiOptions = multiOptions.map((v) => Object.assign(defaultOption(), v));
return async (event) => {
const { req } = event.node;
const finalOptions = finalMultiOptions.find((v) => {
const path = getUrlPath(req.url, v.target);
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req });
});
const { finalOptions, path } = getTargetOptions(req, finalMultiOptions);
if (finalOptions) {
const { target, pathRewrite, enableLogger, loggerOptions } = finalOptions;
if (!target) {
Expand All @@ -425,7 +433,6 @@ const createProxyEventHandler = (options) => {
enableLogger,
loggerOptions,
});
const path = getUrlPath(req.url, target);
const pathRewriter = createPathRewriter(pathRewrite, logger);
let rewritedPath = path;
if (pathRewriter) {
Expand Down
17 changes: 12 additions & 5 deletions lib/index.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -405,15 +405,23 @@ const defaultOption = () => ({
target: '',
enableLogger: true,
});
const getTargetOptions = (req, finalMultiOptions) => {
let path = '';
const finalOptions = finalMultiOptions.find((v) => {
path = getUrlPath(req.url, v.target);
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req });
});
return {
path,
finalOptions,
};
};
const createProxyEventHandler = (options) => {
const multiOptions = Array.isArray(options) ? options : [options];
const finalMultiOptions = multiOptions.map((v) => Object.assign(defaultOption(), v));
return async (event) => {
const { req } = event.node;
const finalOptions = finalMultiOptions.find((v) => {
const path = getUrlPath(req.url, v.target);
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req });
});
const { finalOptions, path } = getTargetOptions(req, finalMultiOptions);
if (finalOptions) {
const { target, pathRewrite, enableLogger, loggerOptions } = finalOptions;
if (!target) {
Expand All @@ -423,7 +431,6 @@ const createProxyEventHandler = (options) => {
enableLogger,
loggerOptions,
});
const path = getUrlPath(req.url, target);
const pathRewriter = createPathRewriter(pathRewrite, logger);
let rewritedPath = path;
if (pathRewriter) {
Expand Down
25 changes: 19 additions & 6 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import type {
} from './interfaces/core'
import { createPathRewriter } from './pathRewriter'
import { proxyRequest } from 'h3'
import type { NodeIncomingMessage } from 'h3'
import { ERRORS } from './errors'
import { createLogger } from './logger'
import { createProxyRequestOptions } from './proxyRequestStrategy'
Expand All @@ -15,6 +16,23 @@ const defaultOption = (): CreateProxyEventHandlerOptions => ({
enableLogger: true,
})

const getTargetOptions = (
req: NodeIncomingMessage,
finalMultiOptions: CreateProxyEventHandlerOptions[]
) => {
let path = ''

const finalOptions = finalMultiOptions.find((v) => {
path = getUrlPath(req.url, v.target)
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req })
})

return {
path,
finalOptions,
}
}

const createProxyEventHandler: CreateProxyEventHandler = (options) => {
const multiOptions = Array.isArray(options) ? options : [options]

Expand All @@ -25,10 +43,7 @@ const createProxyEventHandler: CreateProxyEventHandler = (options) => {
return async (event) => {
const { req } = event.node

const finalOptions = finalMultiOptions.find((v) => {
const path = getUrlPath(req.url, v.target)
return isTargetFilterPath(path, { pathFilter: v.pathFilter, req })
})
const { finalOptions, path } = getTargetOptions(req, finalMultiOptions)

if (finalOptions) {
const { target, pathRewrite, enableLogger, loggerOptions } = finalOptions
Expand All @@ -42,8 +57,6 @@ const createProxyEventHandler: CreateProxyEventHandler = (options) => {
loggerOptions,
})

const path = getUrlPath(req.url, target)

const pathRewriter = createPathRewriter(pathRewrite, logger)

let rewritedPath = path
Expand Down

0 comments on commit 81a5215

Please sign in to comment.