'use strict';
|
|
const httpProxyMiddleware = require('http-proxy-middleware');
|
|
function getProxyEntries(proxyOptions, defaults) {
|
const applyDefaults = (opts) => ({...defaults, ...opts});
|
const normalizeTarget = (input) => typeof input === "object" ? input : {target: input};
|
const proxyEntries = [];
|
if (!proxyOptions) {
|
return proxyEntries;
|
}
|
if (!Array.isArray(proxyOptions)) {
|
for (const key in proxyOptions) {
|
proxyEntries.push({
|
context: key,
|
options: applyDefaults(normalizeTarget(proxyOptions[key]))
|
});
|
}
|
return proxyEntries;
|
}
|
for (const input of proxyOptions) {
|
if (Array.isArray(input)) {
|
proxyEntries.push({
|
context: input[0],
|
options: applyDefaults(normalizeTarget(input[1]))
|
});
|
} else {
|
proxyEntries.push({
|
context: input,
|
options: applyDefaults()
|
});
|
}
|
}
|
return proxyEntries;
|
}
|
|
const proxyModule = function(options2) {
|
const nuxt = this.nuxt;
|
if (!nuxt.options.server || !nuxt.options.proxy) {
|
return;
|
}
|
const defaults = {
|
changeOrigin: true,
|
ws: true,
|
...options2
|
};
|
const proxyEntries = getProxyEntries(nuxt.options.proxy, defaults);
|
for (const proxyEntry of proxyEntries) {
|
this.addServerMiddleware({
|
prefix: false,
|
handler: httpProxyMiddleware.createProxyMiddleware(proxyEntry.context, proxyEntry.options)
|
});
|
}
|
};
|
proxyModule.meta = require("../package.json");
|
|
module.exports = proxyModule;
|