UNPKG

@wevu/web-apis

Version:

Web API polyfills and global installers for mini-program runtimes

73 lines (72 loc) 2.4 kB
//#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.hasOwn(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 };