Nervously Proposing Marriage

    ence
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published

    ence NPM Version Build Status NPM Type Definitions

    automation friendly json schemas

    • Deterministic result ideal for diffs and snapshot testing
    • Full address output convenient for grep analysis
    • Missing/inconsistent object key detection
    • Compatible with any tool outputting to stdin

    Syntax

    .items[n].name.en :: null | string
    └────────┬──────┘    └─────┬─────┘
          address           type(s)

    Example

    [{"id": 123456, "abc": 31415}, {"id": "654321"}, null]
     :: array
    [n] :: null | object
    [n].abc :: empty | number
    [n].id :: number | string

    Install

    CLI

    $ npm install --global ence

    Package

    $ npm install ence

    Usage

    CLI

    ence [--help] [--pretty]
    
    # Explore api response data 
    $ curl example.com/data.json | ence
     
    # Analyze local file 
    $ cat ./data.json | ence --pretty
    # Filter top level keys 
    $ ... | ence | grep -P "^\.\w+ ::"
     
    # Filter potentially empty addresses 
    $ ... | ence | grep -P "::.*empty"
     
    # Filter mixed-type arrays 
    $ ... | ence | grep -P "\[n\] ::.*\|"

    API

    // compute schema
    ence(jsonstring, options?: Options)string
     
    const options: Options = {
       // customize syntax strings
       item: "[n]",
       join: " | ",
       key: ".",
       type: " :: ",
     
       // customize type strings
       array: "array",
       boolean: "boolean",
       empty: "empty",
       null: "null",
       number: "number",
       object: "object",
       string: "string",
    }
     
    const ence = require("ence");
     
    ence("[]");                  // => " :: array"
    ence("[]", {array: "list"}); // => " :: list"

    Performance

    Quad core Intel Core i7-8550U @ 1.80GHz
    
    +---------------------------+-----------+------------+
    | Example                   | Time (ms) | Input (kB) |
    +===========================+===========+============+
    | data-bank                 |     42.26 |    1624.44 |
    | data-reddit               |      6.74 |     207.46 |
    | data-government           |      5.44 |     168.95 |
    | array-array-object-empty  |      0.02 |       0.15 |
    | array-object-empty-simple |      0.02 |       0.13 |
    | array-object              |      0.01 |       0.10 |
    | array-object-empty-mixed  |      0.02 |       0.08 |
    | object-array-mixed        |      0.01 |       0.05 |
    | object-simple             |      0.01 |       0.05 |
    | array-simple              |      0.01 |       0.03 |
    | array-mixed               |      0.01 |       0.01 |
    | string                    |      0.00 |       0.01 |
    | boolean                   |      0.00 |       0.01 |
    | null                      |      0.00 |       0.01 |
    | number                    |      0.00 |       0.00 |
    | object                    |      0.00 |       0.00 |
    | array                     |      0.01 |       0.00 |
    +---------------------------+-----------+------------+

    The test cases can be found in this directory.

    License

    MIT

    Keywords

    none

    Install

    npm i ence

    DownloadsWeekly Downloads

    2

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    26 kB

    Total Files

    14

    Last publish

    Collaborators

    • g-harel