{"list":[{"title":"arrangeArray","link":"<a href=\"global.html#arrangeArray\">arrangeArray</a>","description":"<p>Reorders items by handling '^' (move to front) and '$' (move to end) prefixes.</p>"},{"title":"createClass","link":"<a href=\"global.html#createClass\">createClass</a>","description":"<p>Creates a dynamic class and optionally extends a parent class.</p>"},{"title":"currentLoc","link":"<a href=\"global.html#currentLoc\">currentLoc</a>","description":"<p>Get current directory &amp; file.\nAn attempt to brings back the old <code>__dirname</code> and <code>__filename</code> to the ES6 era.</p>\n<p>Returns object with the following keys:</p>\n<ul>\n<li><code>__dirname</code> (aliases to <code>dir</code>) - current directory name</li>\n<li><code>__filename</code> (aliases to <code>file</code>) - current file path</li>\n</ul>\n<p>Example:</p>\n<pre class=\"prettyprint source lang-javascript\"><code>const { importModule } = this.app.bajo\nconst currentLoc = await importModule('bajo:/lib/current-loc.js')\n\nconst { __dirname, __filename } = currentLoc(import.meta)\nconsole.log(__dirname, __filename)\n</code></pre>"},{"title":"defaultsDeep","link":"<a href=\"global.html#defaultsDeep\">defaultsDeep</a>","description":"<p>Deep-merges objects while replacing arrays from higher-priority inputs.</p>"},{"title":"delay","link":"<a href=\"global.html#delay\">delay</a>","description":"<p>Waits for a duration and resolves a promise.</p>"},{"title":"extractText","link":"<a href=\"global.html#extractText\">extractText</a>","description":"<p>Extracts text between two boundary patterns.</p>"},{"title":"fillObject","link":"<a href=\"global.html#fillObject\">fillObject</a>","description":"<p>Fill object with keys. <code>defValue</code> is used if the corresponding key doesn't have value</p>"},{"title":"filterDuplicate","link":"<a href=\"global.html#filterDuplicate\">filterDuplicate</a>","description":"<p>Filter array of duplicates</p>"},{"title":"filterIndex","link":"<a href=\"global.html#filterIndex\">filterIndex</a>","description":"<p>Filter array's indexes</p>"},{"title":"formatText","link":"<a href=\"global.html#formatText\">formatText</a>","description":"<p>Format text according using sprintf with extra ability to run its arguments through a serie of modifiers\nModifier must be place right after a token prepended with pipe ``|``` symbols.\nYou can put as many mofifiers as you want.</p>\n<p>E.g:</p>\n<pre class=\"prettyprint source lang-javascript\"><code>const text = 'Collected %s|toLower|upperFirst: %d'\nconst result = this.app.lib.formatText(text, 'iTeMs', 10)\nconsole.log(result) // Collected Items: 10\n</code></pre>"},{"title":"getCallerFilename","link":"<a href=\"global.html#getCallerFilename\">getCallerFilename</a>","description":"<p>Returns the caller file path from the current stack trace.</p>"},{"title":"getIndex","link":"<a href=\"global.html#getIndex\">getIndex</a>","description":"<p>Returns indexes of items that match a predicate.</p>"},{"title":"getKeyByValue","link":"<a href=\"global.html#getKeyByValue\">getKeyByValue</a>","description":"<p>Finds an object key by value.</p>"},{"title":"includes","link":"<a href=\"global.html#includes\">includes</a>","description":"<p>Checks whether at least one matcher value exists in an array.</p>"},{"title":"isClass","link":"<a href=\"global.html#isClass\">isClass</a>","description":"<p>Checks whether a value appears to be a class constructor.</p>"},{"title":"isSet","link":"<a href=\"global.html#isSet\">isSet</a>","description":"<p>Checks whether a value is neither null nor undefined.</p>"},{"title":"mergeObjectsByKey","link":"<a href=\"global.html#mergeObjectsByKey\">mergeObjectsByKey</a>","description":"<p>Merges objects by a shared key, where later objects override earlier fields.</p>"},{"title":"module.exports","link":"<a href=\"module.html#.exports\">exports</a>","description":"<p>Converts seconds (or milliseconds) to HH:MM:SS string.</p>"},{"title":"module:Lib.generateId","link":"<a href=\"module-Lib.html#.generateId\">generateId</a>","description":"<p>Generate unique random characters that can be used as ID. Use {@link https://github.com/ai/nanoid|nanoid} under the hood</p>"},{"title":"paginate","link":"<a href=\"global.html#paginate\">paginate</a>","description":"<p>Paginates and optionally sorts a collection.</p>"},{"title":"parseArgsArgv","link":"<a href=\"global.html#parseArgsArgv\">parseArgsArgv</a>","description":"<p>Parse program arguments (args) &amp; options (argv)</p>"},{"title":"parseDuration","link":"<a href=\"global.html#parseDuration\">parseDuration</a>","description":"<p>Parse duration to its millisecond value. Use {@link https://github.com/vercel/ms|ms} under the hood</p>"},{"title":"parseEnv","link":"<a href=\"global.html#parseEnv\">parseEnv</a>","description":"<p>Parse environment variables</p>"},{"title":"parseKvString","link":"<a href=\"global.html#parseKvString\">parseKvString</a>","description":"<p>Parses key-value text into an object and normalizes primitive types.</p>"},{"title":"parseObject","link":"<a href=\"global.html#parseObject\">parseObject</a>","description":"<p>Parses an object (or JSON string) and recursively normalizes nested values.</p>\n<p>When <code>options.parseValue</code> is enabled, string values are converted using\ndotenv-parse-variables rules (for example booleans, numbers, arrays, and null),\nincluding values inside arrays and nested objects.</p>\n<p>Special key handling:</p>\n<ul>\n<li>Keys ending with <code>Dur</code> are converted to milliseconds using parseDuration.</li>\n<li>Keys ending with <code>Dt</code> are converted to Unix timestamps using Date.parse.</li>\n<li><code>options.translator</code> can translate prefixed keys/values before normalization.</li>\n</ul>"},{"title":"pascalCase","link":"<a href=\"global.html#pascalCase\">pascalCase</a>","description":"<p>Converts text into PascalCase.</p>"},{"title":"randomRange","link":"<a href=\"global.html#randomRange\">randomRange</a>","description":"<p>Generate random value.</p>"},{"title":"resolvePath","link":"<a href=\"global.html#resolvePath\">resolvePath</a>","description":"<p>Resolve file name to filesystem's path. Windows path separator <code>\\</code>\nis normalized to Unix's <code>/</code></p>"},{"title":"round","link":"<a href=\"global.html#round\">round</a>","description":"<p>Rounds a number using decimal precision.</p>"},{"title":"setImmediate","link":"<a href=\"global.html#setImmediate\">setImmediate</a>","description":"<p>Schedules execution on the next immediate cycle and resolves when it runs.</p>"},{"title":"shim","link":"<a href=\"global.html#shim\">shim</a>","description":"<p>Attaches missing String polyfills when they are not available in the current runtime.\nAdds <code>String.prototype.replaceAll</code> and <code>String.prototype.splice</code> if needed.</p>"},{"title":"textToArray","link":"<a href=\"global.html#textToArray\">textToArray</a>","description":"<p>Converts multiline text into a cleaned array and removes comments.</p>"},{"title":"titleize","link":"<a href=\"global.html#titleize\">titleize</a>","description":"<p>Converts text to title case with optional ignore and replacement rules.</p>"},{"title":"without","link":"<a href=\"global.html#without\">without</a>","description":"<p>Returns an array without provided values and empty-like entries.</p>"}]}