JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 856
  • Score
    100M100P100Q99398F
  • License MIT

Set a query string style field on an object.

Package Exports

  • q-set

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (q-set) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme


Q-Set
API Stability TypeScript Styled with prettier Build status Test Coverage NPM Version Downloads Browser Bundle Size

Set query string style fields on an object.

Installation

npm install q-set
import { deep, shallow } from 'q-set';

API

qset.deep(obj: any, path: string, val: any): any

  • Sets nested paths such as a[b][c].
  • Concats duplicated properties on an object as an array.
  • Supports [] as array push and will be appended to an existing array or create a new one.
import { deep as set } from 'q-set'

// Set a key.
set({}, "a", 1); //-> { a: 1 }

// Set a nested path.
set({}, "a[b]", 1); //-> { a: { b: 1 } }

// Implicit array creation (keys used multiple times).
const obj = {};
set(obj, "a", 1); //-> { a: 1 }
set(obj, "a", 2); //-> { a: [1, 2] }

// Explicit array creation.
const obj = {};
set(obj, "a[]", 1); //-> { a: [1] }
set(obj, "a[]", 2); //-> { a: [1, 2] }

// Will also automatically create an array when the a key is a positive integer.
const obj = {};
set(obj, "a[0]", 1); //-> { a: [1] }
set(obj, "a[1]", 2); //-> { a: [1, 2] }
set({}, "b[2]", 3); //-> { b: [,,3] }

// Nested array creation.
const obj = {};
set(obj, "a[][b]", 1); //-> { a: [{ b: 1 }] }
set(obj, "a[][b]", 2); //-> { a: [{ b: 1 }, { b: 2 }] }

qset.shallow(obj: any, path: string, val: any): any

  • Concats duplicated properties on an object as an array.
  • Will not follow nested query strings.
  • If [] is used it will be converted to an explicit index and flattened.
import { shallow as set } from 'q-set'

// Doesn't unflatten qs syntax but does append to arrays.
const obj = {};
set(obj, "a[1]", 1); //-> { "a[1]": 1 }
set(obj, "a[1]", 2); //-> { "a[1]": [1, 2] }

// Automatically converts array push "[]" to indexes.
const obj = {};
set(obj, "a[]", 1); //-> { "a[0]": 1 }
set(obj, "a[]", 2); //-> { "a[0]": 1, "a[1]": 2 }

Contributions

  • Use npm test to build and run tests.

Please feel free to create a PR!