Fix Hurst fetch URL to use full API_BASE_URL and ensure endpoint returns JSON for all query params
This commit is contained in:
203
node_modules/http-server/lib/core/opts.js
generated
vendored
Normal file
203
node_modules/http-server/lib/core/opts.js
generated
vendored
Normal file
@ -0,0 +1,203 @@
|
||||
'use strict';
|
||||
|
||||
// This is so you can have options aliasing and defaults in one place.
|
||||
|
||||
const defaults = require('./defaults.json');
|
||||
const aliases = require('./aliases.json');
|
||||
|
||||
module.exports = (opts) => {
|
||||
let autoIndex = defaults.autoIndex;
|
||||
let showDir = defaults.showDir;
|
||||
let showDotfiles = defaults.showDotfiles;
|
||||
let humanReadable = defaults.humanReadable;
|
||||
let hidePermissions = defaults.hidePermissions;
|
||||
let si = defaults.si;
|
||||
let cache = defaults.cache;
|
||||
let gzip = defaults.gzip;
|
||||
let brotli = defaults.brotli;
|
||||
let defaultExt = defaults.defaultExt;
|
||||
let handleError = defaults.handleError;
|
||||
const headers = {};
|
||||
let contentType = defaults.contentType;
|
||||
let mimeTypes;
|
||||
let weakEtags = defaults.weakEtags;
|
||||
let weakCompare = defaults.weakCompare;
|
||||
let handleOptionsMethod = defaults.handleOptionsMethod;
|
||||
|
||||
function isDeclared(k) {
|
||||
return typeof opts[k] !== 'undefined' && opts[k] !== null;
|
||||
}
|
||||
|
||||
function setHeader(str) {
|
||||
const m = /^(.+?)\s*:\s*(.*)$/.exec(str);
|
||||
if (!m) {
|
||||
headers[str] = true;
|
||||
} else {
|
||||
headers[m[1]] = m[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (opts) {
|
||||
aliases.autoIndex.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
autoIndex = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.showDir.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
showDir = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.showDotfiles.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
showDotfiles = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.humanReadable.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
humanReadable = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.hidePermissions.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
hidePermissions = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.si.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
si = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
if (opts.defaultExt && typeof opts.defaultExt === 'string') {
|
||||
defaultExt = opts.defaultExt;
|
||||
}
|
||||
|
||||
if (typeof opts.cache !== 'undefined' && opts.cache !== null) {
|
||||
if (typeof opts.cache === 'string') {
|
||||
cache = opts.cache;
|
||||
} else if (typeof opts.cache === 'number') {
|
||||
cache = `max-age=${opts.cache}`;
|
||||
} else if (typeof opts.cache === 'function') {
|
||||
cache = opts.cache;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof opts.gzip !== 'undefined' && opts.gzip !== null) {
|
||||
gzip = opts.gzip;
|
||||
}
|
||||
|
||||
if (typeof opts.brotli !== 'undefined' && opts.brotli !== null) {
|
||||
brotli = opts.brotli;
|
||||
}
|
||||
|
||||
aliases.handleError.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
handleError = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.cors.forEach((k) => {
|
||||
if (isDeclared(k) && opts[k]) {
|
||||
handleOptionsMethod = true;
|
||||
headers['Access-Control-Allow-Origin'] = '*';
|
||||
headers['Access-Control-Allow-Headers'] = 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since';
|
||||
}
|
||||
});
|
||||
|
||||
aliases.headers.forEach((k) => {
|
||||
if (isDeclared(k)) {
|
||||
if (Array.isArray(opts[k])) {
|
||||
opts[k].forEach(setHeader);
|
||||
} else if (opts[k] && typeof opts[k] === 'object') {
|
||||
Object.keys(opts[k]).forEach((key) => {
|
||||
headers[key] = opts[k][key];
|
||||
});
|
||||
} else {
|
||||
setHeader(opts[k]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
aliases.contentType.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
contentType = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.mimeType.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
mimeTypes = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.weakEtags.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
weakEtags = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.weakCompare.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
weakCompare = opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
aliases.handleOptionsMethod.some((k) => {
|
||||
if (isDeclared(k)) {
|
||||
handleOptionsMethod = handleOptionsMethod || opts[k];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
cache,
|
||||
autoIndex,
|
||||
showDir,
|
||||
showDotfiles,
|
||||
humanReadable,
|
||||
hidePermissions,
|
||||
si,
|
||||
defaultExt,
|
||||
baseDir: (opts && opts.baseDir) || '/',
|
||||
gzip,
|
||||
brotli,
|
||||
handleError,
|
||||
headers,
|
||||
contentType,
|
||||
mimeTypes,
|
||||
weakEtags,
|
||||
weakCompare,
|
||||
handleOptionsMethod,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user