UNPKG

prostgles-types

Version:

Shared TypeScript object definitions for prostgles-client and prostgles-server

36 lines 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.safeGetKeys = exports.safeGetProperty = exports.safeHasOwn = void 0; const DANGEROUS_PROTO_PROPS = ["__proto__", "constructor", "prototype"]; /** * Safely check if an object has a property (works with __proto__ and constructor) */ const safeHasOwn = (obj, key) => { return Object.prototype.hasOwnProperty.call(obj, key); }; exports.safeHasOwn = safeHasOwn; /** * Safely get a property value without triggering prototype chain issues */ const safeGetProperty = (obj, key) => { if (DANGEROUS_PROTO_PROPS.includes(key)) { // Use Object.getOwnPropertyDescriptor to safely access these properties const descriptor = Object.getOwnPropertyDescriptor(obj, key); return descriptor?.value; } return obj[key]; }; exports.safeGetProperty = safeGetProperty; const safeGetKeys = (obj) => { const keys = Object.keys(obj); // Object.keys already returns own enumerable properties // But we need to also check for dangerous props that might be own properties for (const prop of DANGEROUS_PROTO_PROPS) { if ((0, exports.safeHasOwn)(obj, prop) && !keys.includes(prop)) { keys.push(prop); } } return keys; }; exports.safeGetKeys = safeGetKeys; //# sourceMappingURL=utils.js.map