New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

mapq

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mapq

Object Mapping with JSONPath

latest
Source
npmnpm
Version
0.1.2
Version published
Weekly downloads
3
-25%
Maintainers
1
Weekly downloads
 
Created
Source

MapQ

Object mapping with JSONPath qeries.

async? mapq(rules: object, source: object, context?: any): object

Map the source object using the mapping rules.

If any transformation returns a Promise, the function returns a Promise.

Rules

The rules object defines the structure of the resulting object and contains JSONPath expressions that are applied to the source object to obtain the corresponding value for each leaf.

import mapq from 'mapq'

const rules = { foo: { bar: '$.a.b' } }
const source = { a: { b: 'hello' } }
const result = mapq(rules, source)

console.log(result) // { foo: { bar: 'hello' } }

Transformations

Rules can include transformation functions that follow the signature (value: any, source: object, context: any) => any. The value parameter corresponds to the value of the node being transformed. The source and context are values that were originally passed to the map function.

Transformations are defined by using an array [string, function], where the first element is an expression to get the value from the source, and the second is a transformation function.

function increment (value) { return value + 1 }

const rules = { foo: ['$.bar', increment] }
const source = { bar: 1 }
const result = mapq(rules, source)

console.log(result) // { foo: 2 }

Constants

If a leaf does not conform to either JSONPath expression or a transformation, then it is considered as a desired value.

const rules = {
  a: 1,
  b: 'hello',
  c: ['foo', 'bar']
}

const source = {}
const result = mapq(rules, source)

console.log(result) // { a: 1, b: 'hello', c: ['foo', 'bar'] }

Arrays

Rules may form arrays.

const rules = { foo: ['$.bar', '$.baz'] }
const source = { bar: 'hello', baz: 'world' }
const result = mapq(rules, source)

console.log(result) // { foo: ['hello', 'world'] }

Transformations are also supported for arrays.

const transform = (value) => value + 10
const rules = { foo: [['$.bar', transform], ['$.baz', transform]] }
const source = { bar: 1, baz: 2 }
const result = mapq(rules, source)

console.log(result) // { foo: [11, 12] }

FAQs

Package last updated on 15 May 2023

Related posts