@pedwise/next-firebase-auth-edge
Version:
Next.js 13 Firebase Authentication for Edge and server runtimes. Dedicated for Next 13 server components. Compatible with Next.js middleware.
58 lines (48 loc) • 1.21 kB
text/typescript
export function formatString(str: string, params?: object): string {
let formatted = str;
Object.keys(params || {}).forEach((key) => {
formatted = formatted.replace(
new RegExp("{" + key + "}", "g"),
(params as { [key: string]: string })[key]
);
});
return formatted;
}
export function addReadonlyGetter(obj: object, prop: string, value: any): void {
Object.defineProperty(obj, prop, {
value,
writable: false,
enumerable: true,
});
}
export function deepCopy<T>(value: T): T {
return deepExtend(undefined, value);
}
export function deepExtend(target: any, source: any): any {
if (!(source instanceof Object)) {
return source;
}
switch (source.constructor) {
case Date: {
const dateValue = source as any as Date;
return new Date(dateValue.getTime());
}
case Object:
if (target === undefined) {
target = {};
}
break;
case Array:
target = [];
break;
default:
return source;
}
for (const prop in source) {
if (!Object.prototype.hasOwnProperty.call(source, prop)) {
continue;
}
target[prop] = deepExtend(target[prop], source[prop]);
}
return target;
}