3.21.7 • Published 10 months ago

@stoplight/json v3.21.7

Weekly downloads
74,628
License
Apache-2.0
Repository
github
Last release
10 months ago

@stoplight/json

Maintainability Test Coverage

Useful functions when working with JSON.

Installation

Supported in modern browsers and node.

# latest stable version
yarn add @stoplight/json

Usage

  • parseWithPointers: Like JSON.parse(val) but also returns parsing errors as well as full ast with line information.
  • pathToPointer: Turns an array of path segments into a json pointer IE ['paths', '/user', 'get'] -> #/paths/~1user/get.
  • pointerToPath: Turns a json pointer into an array of path segments IE #/paths/~1user/get -> ['paths', '/user', 'get'].
  • safeParse: Like JSON.parse(val) but does not throw on invalid JSON.
  • safeStringify: Like JSON.stringify(val) but handles circular references.
  • startsWith: Like native JS x.startsWith(y) but works with strings AND arrays.
  • trimStart: Like lodash.startsWith(x, y) but works with strings AND arrays.
  • getJsonPathForPosition: Computes JSON path for given position.
  • getLocationForJsonPath: Retrieves location of node matching given JSON path.

Example parseWithPointers

import { parseWithPointers } from "@stoplight/json";

const result = parseWithPointers('{"foo": "bar"}');

console.log(result.data); // => the {foo: "bar"} JS object
console.log(result.pointers); // => the source map with a single "#/foo" pointer that has position info for the foo property
// basic example of getJsonPathForPosition and getLocationForJsonPath
import { getJsonPathForPosition, getLocationForJsonPath, parseWithPointers } from "@stoplight/json";

const result = parseWithPointers(`{
  "hello": "world",
  "address": {
    "street": 123
  }
}`);

const path = getJsonPathForPosition(result, { line: 3, character: 15 }); // line and character are 0-based
console.log(path); // -> ["address", "street"];

const position = getLocationForJsonPath(result, ["address"]);
console.log(position.range.start); // { line: 2, character: 13 } line and character are 0-based
console.log(position.range.end); // { line: 4, character: 3 } line and character are 0-based

Contributing

  1. Clone repo.
  2. Create / checkout feature/{name}, chore/{name}, or fix/{name} branch.
  3. Install deps: yarn.
  4. Make your changes.
  5. Run tests: yarn test.prod.
  6. Stage relevant files to git.
  7. Commit: yarn commit. NOTE: Commits that don't follow the conventional format will be rejected. yarn commit creates this format for you, or you can put it together manually and then do a regular git commit.
  8. Push: git push.
  9. Open PR targeting the next branch.
3.21.1

11 months ago

3.21.3

11 months ago

3.21.5

11 months ago

3.21.4

11 months ago

3.21.7

10 months ago

3.21.6

11 months ago

3.20.3

2 years ago

3.21.0

2 years ago

3.20.2

2 years ago

3.20.0

3 years ago

3.20.1

3 years ago

3.19.0

3 years ago

3.18.1

3 years ago

3.18.0

3 years ago

3.17.2

3 years ago

3.17.1

4 years ago

3.17.0

4 years ago

3.16.0

4 years ago

3.15.0

4 years ago

3.14.0

4 years ago

3.13.7

4 years ago

3.13.6

4 years ago

3.13.5

4 years ago

3.13.2

4 years ago

3.13.4

4 years ago

3.13.3

4 years ago

3.13.1

4 years ago

3.13.0

4 years ago

3.12.0

4 years ago

3.11.2

4 years ago

3.11.1

4 years ago

3.11.0

4 years ago

3.10.3

4 years ago

3.10.2

4 years ago

3.10.1

4 years ago

3.10.0

5 years ago

3.9.1

5 years ago

3.9.0

5 years ago

3.8.4

5 years ago

3.8.6

5 years ago

3.8.5

5 years ago

3.8.3

5 years ago

3.8.2

5 years ago

3.8.1

5 years ago

3.8.0

5 years ago

3.7.4

5 years ago

3.7.3

5 years ago

3.7.2

5 years ago

3.7.1

5 years ago

3.7.0

5 years ago

3.6.0

5 years ago

3.5.1

5 years ago

3.5.0

5 years ago

3.4.0

6 years ago

3.3.0

6 years ago

3.2.2

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.4

6 years ago

3.0.3

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.3.3

6 years ago

2.3.2

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.2

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.9.0

6 years ago

1.8.0

6 years ago

1.7.0

6 years ago

1.6.0

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.0.44-alpha.1

7 years ago

0.0.44-alpha.0

7 years ago

0.0.43

7 years ago

0.0.42

7 years ago

0.0.41

7 years ago

0.0.40

7 years ago

0.0.39

7 years ago

0.0.38

7 years ago

0.0.38-alpha.1

7 years ago

0.0.37-beta.1

7 years ago

0.0.37-beta.0

7 years ago

0.0.36

7 years ago

0.0.35

7 years ago

0.0.34

7 years ago

0.0.33

7 years ago

0.0.32

7 years ago

0.0.32-beta.2

7 years ago

0.0.32-beta.1

7 years ago

0.0.32-beta.0

7 years ago