UNPKG

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
'use strict'; 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;