safe-object-path
v0.2.0
Published
A lightweight TypeScript library for safe object path access
Downloads
6
Maintainers
Readme
Safe Object Path
A lightweight TypeScript library for safe object path access with zero dependencies.
Features
- 🚀 Lightweight: < 1KB minified + gzipped
- 🛡️ Safe: Never throws errors, returns undefined instead
- 💪 TypeScript: Full type safety and IntelliSense support
- 🔄 Zero Dependencies: No external dependencies
- 🌐 Universal: Works in Browser, Node.js, Deno, and Bun
- ✅ Well Tested: 100% test coverage
Installation
npm install safe-object-pathQuick Start
import { get, has } from 'safe-object-path';
const user = {
profile: {
name: 'John Doe',
settings: {
theme: 'dark'
}
},
posts: [
{ id: 1, title: 'Hello World' },
{ id: 2, title: 'TypeScript Tips' }
]
};
// Dot notation
const name = get(user, 'profile.name'); // 'John Doe'
const theme = get(user, 'profile.settings.theme'); // 'dark'
// Array access
const firstPost = get(user, 'posts[0].title'); // 'Hello World'
// With default values
const email = get(user, 'profile.email', '[email protected]');
// Check if path exists
const hasName = has(user, 'profile.name'); // true
const hasEmail = has(user, 'profile.email'); // falseAPI
get(object, path, defaultValue?)
Safely gets a value from an object using a path.
Parameters:
object- The object to get the value frompath- The path to the property (string or array)defaultValue- The value to return if the path doesn't exist
Returns: The value at the path or defaultValue/undefined
has(object, path)
Checks if a path exists in an object.
Parameters:
object- The object to checkpath- The path to check (string or array)
Returns: true if the path exists, false otherwise
Path Formats
// Dot notation
get(obj, 'user.profile.name')
// Bracket notation
get(obj, 'users[0].name')
// Mixed notation
get(obj, 'users[0].settings.theme')
// Array paths
get(obj, ['user', 'profile', 'name'])Why Safe Object Path?
vs lodash.get
- Size: ~70KB vs <1KB
- Dependencies: Many vs Zero
- Performance: Slower vs Faster
vs Optional Chaining (?.)
- Dynamic paths: ❌ vs ✅
- String paths: ❌ vs ✅
- Default values: ❌ vs ✅
License
MIT
