What is @firebase/util?
The @firebase/util package provides a collection of utility functions that are used across the Firebase JavaScript SDK. These utilities include tasks such as encoding and decoding, URL manipulation, and deep object merges. This package is mainly used internally by Firebase, but it can also be used directly to leverage some of its utility functions in your projects.
What are @firebase/util's main functionalities?
Encoding and Decoding Base64
This feature allows you to encode and decode strings to and from Base64. It's useful for encoding data that needs to be safely transmitted over a network.
"use strict";
const { base64Encode, base64Decode } = require('@firebase/util');
const encoded = base64Encode('Firebase');
console.log(encoded); // Output: RmlyZWJhc2U=
const decoded = base64Decode(encoded);
console.log(decoded); // Output: Firebase
Deep Merge Objects
This feature provides functions to deeply copy and merge JavaScript objects. It's particularly useful when you need to combine settings or configurations.
"use strict";
const { deepCopy, deepExtend } = require('@firebase/util');
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { b: { d: 3 }, e: 4 };
const merged = deepExtend(obj1, obj2);
console.log(merged); // Output: { a: 1, b: { c: 2, d: 3 }, e: 4 }
URL Manipulation
This feature allows you to easily construct query strings from objects, which is useful for creating URLs with parameters.
"use strict";
const { querystring } = require('@firebase/util');
const queryString = querystring({ a: 1, b: 'Firebase' });
console.log(queryString); // Output: ?a=1&b=Firebase
Other packages similar to @firebase/util
lodash
Lodash is a comprehensive utility library offering a wide range of functions for tasks such as manipulating objects, arrays, strings, etc. While @firebase/util focuses on utilities needed for Firebase development, lodash provides a broader set of utilities that can be used in a wide range of JavaScript applications.
qs
The qs package is used for query string parsing and stringifying with nested objects support. It offers similar URL manipulation capabilities as @firebase/util but is more focused and comprehensive in handling query strings.
@firebase/util
NOTE: This is specifically tailored for Firebase JS SDK usage, if you are not a
member of the Firebase team, please avoid using this package
This is a wrapper of some Webchannel Features for the Firebase JS SDK.
Usage
ES Modules
import { Deferred } from '@firebase/util';
CommonJS Modules
const utils = require('@firebase/util');