Have ideas to improve npm?Join in the discussion! »

    @stoplight/json
    TypeScript icon, indicating that this package has built-in type declarations

    3.11.2 • Public • Published

    @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.

    Install

    npm i @stoplight/json

    DownloadsWeekly Downloads

    82,086

    Version

    3.11.2

    License

    Apache-2.0

    Unpacked Size

    41.8 kB

    Total Files

    61

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar