Socket
Socket
Sign inDemoInstall

@paxperscientiam/dlv.ts

Package Overview
Dependencies
0
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @paxperscientiam/dlv.ts

Safely get a dot-notated property within an object.


Version published
Maintainers
1
Install size
10.6 kB
Created

Readme

Source

Fork notice

This fork is a TypeScript implementation of dlv.

dlv(obj, keypath)

npm (scoped) Travis (.org)

Safely get a dot-notated path within a nested object, with ability to return a default if the full key path does not exist or the value is "undefined".

Why?

Supports ES Modules, CommonJS and globals.

Installation

pnpm i @paxperscientiam/dlv.ts

or ...

npm i @paxperscientiam/dlv.ts

or ...

yarn add @paxperscientiam/dlv.ts

Usage

Available as dlvTs from dist/dlv.umd.js.

@paxperscientiam/dlv.ts uses a default export.

Code:

export default function dlv<T, K extends Extract<keyof T, string>>(obj: T,
                                                                   key: K|K[],
                                                                   def?: any,
                                                                   p: number = 0): any {
    const accessor = (key as string).split ? (key as string).split(".") : (key as string[])
    while (obj && p < accessor.length) {
        obj = obj[accessor[p++]]
    }
    return (obj === undefined || p < accessor.length) ? def : obj
}

delve(object, keypath, [default])

import delve from '@paxperscientiam/dlv.ts';

let obj = {
	a: {
		b: {
			c: 1,
			d: undefined,
			e: null
		}
	}
};

//use string dot notation for keys
delve(obj, 'a.b.c') === 1;

//or use an array key
delve(obj, ['a', 'b', 'c']) === 1;

delve(obj, 'a.b') === obj.a.b;

//returns undefined if the full key path does not exist and no default is specified
delve(obj, 'a.b.c.f') === undefined;

//optional third parameter for default if the full key in path is missing
delve(obj, 'a.b.c.f', 'foo') === 'foo';

//or if the key exists but the value is undefined
delve(obj, 'a.b.c.d', 'foo') === 'foo';

//Non-truthy defined values are still returned if they exist at the full keypath
delve(obj, 'a.b.c.e', 'foo') === null;

//undefined obj or key returns undefined, unless a default is supplied
delve(undefined, 'a.b.c') === undefined;
delve(undefined, 'a.b.c', 'foo') === 'foo';
delve(obj, undefined, 'foo') === 'foo';

Setter Counterparts

  • dset by @lukeed is the spiritual "set" counterpart of dlv and very fast.
  • bury by @kalmbach does the opposite of dlv and is implemented in a very similar manner.

License

MIT

Keywords

FAQs

Last updated on 21 Sep 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc