@tanstack/start-client-core
Version:
Modern and scalable routing for React applications
35 lines (34 loc) • 999 B
JavaScript
//#region src/safeObjectMerge.ts
function isSafeKey(key) {
return key !== "__proto__" && key !== "constructor" && key !== "prototype";
}
/**
* Merge target and source into a new null-proto object, filtering dangerous keys.
*/
function safeObjectMerge(target, source) {
const result = Object.create(null);
if (target) {
const keys = Object.keys(target);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
if (isSafeKey(key)) result[key] = target[key];
}
}
if (source && typeof source === "object") {
const keys = Object.keys(source);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
if (isSafeKey(key)) result[key] = source[key];
}
}
return result;
}
/**
* Create a null-prototype object, optionally copying from source.
*/
function createNullProtoObject(source) {
return source ? safeObjectMerge(source, void 0) : Object.create(null);
}
//#endregion
export { createNullProtoObject, safeObjectMerge };
//# sourceMappingURL=safeObjectMerge.js.map