Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

g-makarov/dot-path-value

Open more actions menu

Repository files navigation

dot-path-value

Safely get and set deep nested properties using dot notation.

npm version npm downloads npm minified bundle size npm gzip minified bundle size npm gzip minified bundle size

Features

  • TypeScript first 🤙
  • Support arrays
  • Tiny
  • No dependencies
  • Utility types Path and PathValue

If you find this library useful, why not

Buy Me A Coffee

Installation

# using npm
npm install dot-path-value
# using pnpm
pnpm install dot-path-value
# using yarn
yarn add dot-path-value

Usage

import { getByPath, setByPath } from 'dot-path-value';

const obj = {
  a: {
    b: 'hello',
    d: [
      {
        e: 'world',
      }
    ],
  },
};

// access through object
getByPath(obj, 'a.b'); // outputs 'hello' with type `string`

// access through array
getByPath(obj, 'a.d.0.e'); // outputs 'world' with type `string`
getByPath(obj, 'a.d.0'); // outputs '{ e: 'world' }' with type `{ e: string }`

// also you can pass array as first argument
getByPath([{ a: 1 }], '0.a'); // outputs '1' with type `number`

// typescript errors
getByPath(obj, 'a.b.c'); // `c` property does not exist


// set a property through an object
setByPath(obj, 'a.b', 'hello there');

Types

dot-path-value exports a few types to ensure the type safety:

Type Description
Path<T> converts nested structure T into a string representation of the paths to its properties
PathValue<T, TPath> returns the type of the value at the specified path

Types usage

import { Path, PathValue } from 'dot-path-value';

const obj = {
  a: {
    b: 'hello',
    d: [
      {
        e: 'world',
      }
    ],
  },
};

type Foo = Path<typeof obj>; // 'a.d' | 'a' | 'a.b' | `a.d.${number}` | `a.d.${number}.e`
type Bar = PathValue<typeof obj, 'a.b'>; // 'string'

About

Safely get and set deep nested properties using dot notation.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  
Morty Proxy This is a proxified and sanitized view of the page, visit original site.