@se-oss/safe-get
v1.0.0
Published
Lightweight, secure, and type-safe nested property retriever supporting bracket notation and function context binding.
Maintainers
Readme
@se-oss/safe-get is a lightweight, secure, and type-safe nested property retriever supporting bracket notation and automatic function context binding.
📦 Installation
npm install @se-oss/safe-getpnpm
pnpm add @se-oss/safe-getyarn
yarn add @se-oss/safe-get📖 Usage
Basic Usage
Retrieve nested properties using standard dot-notation path.
import { safeGet } from '@se-oss/safe-get';
const obj = { a: { b: { c: 'hello' } } };
const value = safeGet(obj, 'a.b.c'); // 'hello'Array Bracket Notation
Supports both array bracket notation and standard index dot notation.
const obj = { users: [{ name: 'Alice' }, { name: 'Bob' }] };
safeGet(obj, 'users[0].name'); // 'Alice'
safeGet(obj, 'users.1.name'); // 'Bob'Fallback Default Value
Easily provide a fallback default value if the path resolves to undefined.
const obj = { a: { b: 1 } };
safeGet(obj, 'a.c', 'fallback'); // 'fallback'Secure Prototype Protection
Guaranteed defense against prototype pollution by blacklisting sensitive keys like __proto__, constructor, and prototype.
const obj = {};
safeGet(obj, '__proto__.polluted'); // undefinedFunction Context Binding
Automatically binds the parent object's context when resolving and invoking nested functions.
const obj = {
user: {
firstName: 'John',
lastName: 'Doe',
getFullName() {
return `${this.firstName} ${this.lastName}`;
},
},
};
safeGet(obj, 'user.getFullName'); // 'John Doe'Pure TypeScript Type Safety
Strong type inference for objects and paths, resolving types perfectly.
const obj = { user: { age: 25 } };
// TypeScript infers 'age' as number type automatically!
const age = safeGet(obj, 'user.age');📚 Documentation
For all configuration options, please see the API docs.
🤝 Contributing
Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub.
Thanks again for your support, it is much appreciated! 🙏
License
MIT © Shahrad Elahi and contributors.
