tiny-essentials
Version:
Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.
46 lines (36 loc) • 1.65 kB
JavaScript
var escape = require('./escape.cjs');
// @ts-nocheck
/**
* Escapes a given string or number for use in Firebase database paths, with an option to preserve the path structure.
*
* This function encodes the input string or number using a custom encoding defined in the `firebaseEscape.encode()` method.
* If the `keepPath` flag is set to `true`, the function will encode each segment of the path individually.
*
* @param {string|number} text - The text or number to be escaped.
* @param {boolean} [keepPath=false] - Whether to preserve the path structure (encode each path segment separately).
* @returns {string|null} The escaped string or null if the input is neither a string nor a number.
*/
function databaseEscape(text, keepPath = false) {
// Check if the input is a string or number
if (typeof text === 'string' || typeof text === 'number') {
// Convert the value to a string if it's a number
let new_value = text;
if (typeof new_value === 'number') new_value = String(new_value);
// Normal escape (do not preserve path)
if (!keepPath) new_value = escape.encode(new_value);
// Escape path segments individually (preserve path structure)
else {
// Split path into segments
new_value = new_value.split('/');
for (const item in new_value) new_value[item] = escape.encode(new_value[item]);
// Join the segments back into a single string
new_value = new_value.join('/');
}
// Return the escaped value
return new_value;
}
// Return null if the input is neither a string nor a number
else return null;
}
module.exports = databaseEscape;
;