ence
v1.1.0
Published
automation-friendly json schemas
Downloads
17
Readme
ence
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(json: string, 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.