Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dot-path-value

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dot-path-value - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

src/index.test.ts

2

dist/index.d.ts
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
type ArrayKey = number;
type IsTuple<T extends readonly any[]> = number extends T["length"] ? false : true;
type IsTuple<T extends readonly any[]> = number extends T['length'] ? false : true;
type TupleKeys<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;

@@ -5,0 +5,0 @@ export type PathConcat<TKey extends string | number, TValue> = TValue extends Primitive ? `${TKey}` : `${TKey}` | `${TKey}.${Path<TValue>}`;

{
"name": "dot-path-value",
"version": "0.0.2",
"version": "0.0.3",
"description": "Safely get deep nested properties using dot notation",

@@ -28,4 +28,5 @@ "author": "German Makarov <cxdcjs@gmail.com>",

"prettier": "prettier --write src/**/*",
"prepublishOnly": "npm run build",
"postversion": "git push && git push --tags"
"prepublishOnly": "npm run test && npm run build",
"postversion": "git push && git push --tags",
"test": "jest --passWithNoTests"
},

@@ -39,4 +40,7 @@ "sideEffects": false,

"devDependencies": {
"@types/jest": "^29.2.6",
"jest": "^29.3.1",
"microbundle": "^0.15.1",
"prettier": "^2.8.3"
"prettier": "^2.8.3",
"ts-jest": "^29.0.5"
},

@@ -43,0 +47,0 @@ "keywords": [

@@ -24,2 +24,3 @@ # dot-path-value

- No dependencies
- Utility types `Path` and `PathValue`

@@ -40,13 +41,27 @@ ## Installation

```ts
import { getByPath } from "dot-path-value";
import { getByPath } from 'dot-path-value';
const obj = {
a: {
b: {
c: "hello",
},
b: 'hello',
d: [
{
e: 'world',
}
],
},
};
getByPath(obj, "a.b.c"); // outputs 'hello'
// access though object
getByPath(obj, 'a.b'); // outputs 'hello' with type `string`
// access though 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
```

@@ -62,1 +77,17 @@

| `PathValue<T, TPath>` | returns the type of the value at the specified path |
```ts
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'
```

@@ -1,20 +0,10 @@

export type Primitive =
| null
| undefined
| string
| number
| boolean
| symbol
| bigint;
export type Primitive = null | undefined | string | number | boolean | symbol | bigint;
type ArrayKey = number;
type IsTuple<T extends readonly any[]> = number extends T["length"]
? false
: true;
type IsTuple<T extends readonly any[]> = number extends T['length'] ? false : true;
type TupleKeys<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;
export type PathConcat<
TKey extends string | number,
TValue
> = TValue extends Primitive
export type PathConcat<TKey extends string | number, TValue> = TValue extends Primitive
? `${TKey}`

@@ -33,6 +23,3 @@ : `${TKey}` | `${TKey}.${Path<TValue>}`;

type ArrayPathConcat<
TKey extends string | number,
TValue
> = TValue extends Primitive
type ArrayPathConcat<TKey extends string | number, TValue> = TValue extends Primitive
? never

@@ -77,8 +64,5 @@ : TValue extends readonly (infer U)[]

obj: T,
path: TPath
path: TPath,
): PathValue<T, TPath> {
return path.split(".").reduce((acc, key) => acc[key], obj) as PathValue<
T,
TPath
>;
return path.split('.').reduce((acc, key) => acc[key], obj) as PathValue<T, TPath>;
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc