@wevu/web-apis
Version:
Web API polyfills and global installers for mini-program runtimes
73 lines (72 loc) • 2.42 kB
JavaScript
//#region src/networkDefaults.ts
const MINI_PROGRAM_REQUEST_OPTION_KEYS = [
"enableCache",
"enableChunked",
"enableHttp2",
"enableHttpDNS",
"enableProfile",
"enableQuic",
"forceCellularNetwork",
"httpDNSServiceId",
"httpDNSTimeout",
"redirect",
"timeout",
"useHighPerformanceMode"
];
const MINI_PROGRAM_SOCKET_OPTION_KEYS = [
"forceCellularNetwork",
"header",
"perMessageDeflate",
"timeout"
];
let miniProgramNetworkDefaults = {};
function hasOwnProperty(source, key) {
return Object.prototype.hasOwnProperty.call(source, key);
}
function isObject(value) {
return typeof value === "object" && value !== null;
}
function normalizeOptions(keys, sources) {
const options = {};
for (const source of sources) {
if (!isObject(source)) continue;
const candidate = source;
for (const key of keys) {
if (!hasOwnProperty(candidate, key)) continue;
const value = candidate[key];
if (value !== void 0) options[key] = value;
}
}
return options;
}
function normalizeRequestMiniProgramOptions(...sources) {
return normalizeOptions(MINI_PROGRAM_REQUEST_OPTION_KEYS, sources);
}
function normalizeWebSocketMiniProgramOptions(...sources) {
return normalizeOptions(MINI_PROGRAM_SOCKET_OPTION_KEYS, sources);
}
function getMiniProgramNetworkDefaults() {
return {
request: normalizeRequestMiniProgramOptions(miniProgramNetworkDefaults.request),
socket: normalizeWebSocketMiniProgramOptions(miniProgramNetworkDefaults.socket)
};
}
function setMiniProgramNetworkDefaults(defaults = {}) {
miniProgramNetworkDefaults = {
request: normalizeRequestMiniProgramOptions(defaults.request),
socket: normalizeWebSocketMiniProgramOptions(defaults.socket)
};
return getMiniProgramNetworkDefaults();
}
function resetMiniProgramNetworkDefaults() {
miniProgramNetworkDefaults = {};
return getMiniProgramNetworkDefaults();
}
function resolveRequestMiniProgramOptions(...sources) {
return normalizeRequestMiniProgramOptions(getMiniProgramNetworkDefaults().request, ...sources);
}
function resolveWebSocketMiniProgramOptions(...sources) {
return normalizeWebSocketMiniProgramOptions(getMiniProgramNetworkDefaults().socket, ...sources);
}
//#endregion
export { getMiniProgramNetworkDefaults, normalizeRequestMiniProgramOptions, normalizeWebSocketMiniProgramOptions, resetMiniProgramNetworkDefaults, resolveRequestMiniProgramOptions, resolveWebSocketMiniProgramOptions, setMiniProgramNetworkDefaults };