Server IP : 162.213.251.212 / Your IP : 52.14.44.232 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/allssztx/www/easybuyer/node_modules/webpack/lib/container/ |
Upload File : |
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; /** @template T @typedef {(string | Record<string, string | string[] | T>)[] | Record<string, string | string[] | T>} ContainerOptionsFormat */ /** * @template T * @template N * @param {ContainerOptionsFormat<T>} options options passed by the user * @param {function(string | string[], string) : N} normalizeSimple normalize a simple item * @param {function(T, string) : N} normalizeOptions normalize a complex item * @param {function(string, N): void} fn processing function * @returns {void} */ const process = (options, normalizeSimple, normalizeOptions, fn) => { const array = items => { for (const item of items) { if (typeof item === "string") { fn(item, normalizeSimple(item, item)); } else if (item && typeof item === "object") { object(item); } else { throw new Error("Unexpected options format"); } } }; const object = obj => { for (const [key, value] of Object.entries(obj)) { if (typeof value === "string" || Array.isArray(value)) { fn(key, normalizeSimple(value, key)); } else { fn(key, normalizeOptions(value, key)); } } }; if (!options) { return; } else if (Array.isArray(options)) { array(options); } else if (typeof options === "object") { object(options); } else { throw new Error("Unexpected options format"); } }; /** * @template T * @template R * @param {ContainerOptionsFormat<T>} options options passed by the user * @param {function(string | string[], string) : R} normalizeSimple normalize a simple item * @param {function(T, string) : R} normalizeOptions normalize a complex item * @returns {[string, R][]} parsed options */ const parseOptions = (options, normalizeSimple, normalizeOptions) => { /** @type {[string, R][]} */ const items = []; process(options, normalizeSimple, normalizeOptions, (key, value) => { items.push([key, value]); }); return items; }; /** * @template T * @param {string} scope scope name * @param {ContainerOptionsFormat<T>} options options passed by the user * @returns {Record<string, string | string[] | T>} options to spread or pass */ const scope = (scope, options) => { /** @type {Record<string, string | string[] | T>} */ const obj = {}; process( options, item => /** @type {string | string[] | T} */ (item), item => /** @type {string | string[] | T} */ (item), (key, value) => { obj[ key.startsWith("./") ? `${scope}${key.slice(1)}` : `${scope}/${key}` ] = value; } ); return obj; }; exports.parseOptions = parseOptions; exports.scope = scope;