lib/condenser/processors/node_modules/json5/README.md in condenser-0.0.4 vs lib/condenser/processors/node_modules/json5/README.md in condenser-0.0.5
- old
+ new
@@ -1,286 +1,234 @@
-# JSON5 – Modern JSON
+# JSON5 – JSON for Humans
-[![Build Status](https://travis-ci.org/json5/json5.svg)](https://travis-ci.org/json5/json5)
+[![Build Status](https://travis-ci.org/json5/json5.svg)][Build Status]
+[![Coverage
+Status](https://coveralls.io/repos/github/json5/json5/badge.svg)][Coverage
+Status]
-JSON is an excellent data format, but we think it can be better.
+The JSON5 Data Interchange Format (JSON5) is a superset of [JSON] that aims to
+alleviate some of the limitations of JSON by expanding its syntax to include
+some productions from [ECMAScript 5.1].
-**JSON5 is a proposed extension to JSON** that aims to make it easier for
-*humans to write and maintain* by hand. It does this by adding some minimal
-syntax features directly from ECMAScript 5.
+This JavaScript library is the official reference implementation for JSON5
+parsing and serialization libraries.
-JSON5 remains a **strict subset of JavaScript**, adds **no new data types**,
-and **works with all existing JSON content**.
+[Build Status]: https://travis-ci.org/json5/json5
-JSON5 is *not* an official successor to JSON, and JSON5 content may *not*
-work with existing JSON parsers. For this reason, JSON5 files use a new .json5
-extension. *(TODO: new MIME type needed too.)*
+[Coverage Status]: https://coveralls.io/github/json5/json5
-The code here is a **reference JavaScript implementation** for both Node.js
-and all browsers. It’s based directly off of Douglas Crockford’s own [JSON
-implementation][json_parse.js], and it’s both robust and secure.
+[JSON]: https://tools.ietf.org/html/rfc7159
+[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/
-## Why
+## Summary of Features
+The following ECMAScript 5.1 features, which are not supported in JSON, have
+been extended to JSON5.
-JSON isn’t the friendliest to *write*. Keys need to be quoted, objects and
-arrays can’t have trailing commas, and comments aren’t allowed — even though
-none of these are the case with regular JavaScript today.
-
-That was fine when JSON’s goal was to be a great data format, but JSON’s usage
-has expanded beyond *machines*. JSON is now used for writing [configs][ex1],
-[manifests][ex2], even [tests][ex3] — all by *humans*.
-
-[ex1]: http://plovr.com/docs.html
-[ex2]: https://www.npmjs.org/doc/files/package.json.html
-[ex3]: http://code.google.com/p/fuzztester/wiki/JSONFileFormat
-
-There are other formats that are human-friendlier, like YAML, but changing
-from JSON to a completely different format is undesirable in many cases.
-JSON5’s aim is to remain close to JSON and JavaScript.
-
-
-## Features
-
-The following is the exact list of additions to JSON’s syntax introduced by
-JSON5. **All of these are optional**, and **all of these come from ES5**.
-
### Objects
+- Object keys may be an ECMAScript 5.1 _[IdentifierName]_.
+- Objects may have a single trailing comma.
-- Object keys can be unquoted if they’re valid [identifiers][mdn_variables].
- Yes, even reserved keywords (like `default`) are valid unquoted keys in ES5
- [[§11.1.5](http://es5.github.com/#x11.1.5), [§7.6](http://es5.github.com/#x7.6)].
- ([More info](https://mathiasbynens.be/notes/javascript-identifiers))
-
- *(TODO: Unicode characters and escape sequences aren’t yet supported in this
- implementation.)*
-
-- Object keys can also be single-quoted.
-
-- Objects can have trailing commas.
-
-[mdn_variables]: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables
-
### Arrays
+- Arrays may have a single trailing comma.
-- Arrays can have trailing commas.
-
### Strings
+- Strings may be single quoted.
+- Strings may span multiple lines by escaping new line characters.
+- Strings may include character escapes.
-- Strings can be single-quoted.
-
-- Strings can be split across multiple lines; just prefix each newline with a
- backslash. [ES5 [§7.8.4](http://es5.github.com/#x7.8.4)]
-
### Numbers
+- Numbers may be hexadecimal.
+- Numbers may have a leading or trailing decimal point.
+- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN.
+- Numbers may begin with an explicit plus sign.
-- Numbers can be hexadecimal (base 16).
-
-- Numbers can begin or end with a (leading or trailing) decimal point.
-
-- Numbers can include `Infinity`, `-Infinity`, `NaN`, and `-NaN`.
-
-- Numbers can begin with an explicit plus sign.
-
### Comments
+- Single and multi-line comments are allowed.
-- Both inline (single-line) and block (multi-line) comments are allowed.
+### White Space
+- Additional white space characters are allowed.
+[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6
-## Example
+[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
-The following is a contrived example, but it illustrates most of the features:
-
+## Short Example
```js
{
- foo: 'bar',
- while: true,
-
- this: 'is a \
-multi-line string',
-
- // this is an inline comment
- here: 'is another', // inline comment
-
- /* this is a block comment
- that continues on another line */
-
- hex: 0xDEADbeef,
- half: .5,
- delta: +10,
- to: Infinity, // and beyond!
-
- finally: 'a trailing comma',
- oh: [
- "we shouldn't forget",
- 'arrays can have',
- 'trailing commas too',
- ],
+ // comments
+ unquoted: 'and you can quote me on that',
+ singleQuotes: 'I can use "double quotes" here',
+ lineBreaks: "Look, Mom! \
+No \\n's!",
+ hexadecimal: 0xdecaf,
+ leadingDecimalPoint: .8675309, andTrailing: 8675309.,
+ positiveSign: +1,
+ trailingComma: 'in objects', andIn: ['arrays',],
+ "backwardsCompatible": "with JSON",
}
```
-This implementation’s own [package.json5](package.json5) is more realistic:
+## Specification
+For a detailed explanation of the JSON5 format, please read the [official
+specification](https://json5.github.io/json5-spec/).
+## Installation
+### Node.js
+```sh
+npm install json5
+```
+
```js
-// This file is written in JSON5 syntax, naturally, but npm needs a regular
-// JSON file, so compile via `npm run build`. Be sure to keep both in sync!
+const JSON5 = require('json5')
+```
-{
- name: 'json5',
- version: '0.5.0',
- description: 'JSON for the ES5 era.',
- keywords: ['json', 'es5'],
- author: 'Aseem Kishore <aseem.kishore@gmail.com>',
- contributors: [
- // TODO: Should we remove this section in favor of GitHub's list?
- // https://github.com/aseemk/json5/contributors
- 'Max Nanasy <max.nanasy@gmail.com>',
- 'Andrew Eisenberg <andrew@eisenberg.as>',
- 'Jordan Tucker <jordanbtucker@gmail.com>',
- ],
- main: 'lib/json5.js',
- bin: 'lib/cli.js',
- files: ["lib/"],
- dependencies: {},
- devDependencies: {
- gulp: "^3.9.1",
- 'gulp-jshint': "^2.0.0",
- jshint: "^2.9.1",
- 'jshint-stylish': "^2.1.0",
- mocha: "^2.4.5"
- },
- scripts: {
- build: 'node ./lib/cli.js -c package.json5',
- test: 'mocha --ui exports --reporter spec',
- // TODO: Would it be better to define these in a mocha.opts file?
- },
- homepage: 'http://json5.org/',
- license: 'MIT',
- repository: {
- type: 'git',
- url: 'https://github.com/aseemk/json5.git',
- },
-}
+### Browsers
+```html
+<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
```
+This will create a global `JSON5` variable.
-## Community
+## API
+The JSON5 API is compatible with the [JSON API].
-Join the [Google Group](http://groups.google.com/group/json5) if you’re
-interested in JSON5 news, updates, and general discussion.
-Don’t worry, it’s very low-traffic.
+[JSON API]:
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
-The [GitHub wiki](https://github.com/aseemk/json5/wiki) is a good place to track
-JSON5 support and usage. Contribute freely there!
+### JSON5.parse()
+Parses a JSON5 string, constructing the JavaScript value or object described by
+the string. An optional reviver function can be provided to perform a
+transformation on the resulting object before it is returned.
-[GitHub Issues](https://github.com/aseemk/json5/issues) is the place to
-formally propose feature requests and report bugs. Questions and general
-feedback are better directed at the Google Group.
+#### Syntax
+ JSON5.parse(text[, reviver])
+#### Parameters
+- `text`: The string to parse as JSON5.
+- `reviver`: If a function, this prescribes how the value originally produced by
+ parsing is transformed, before being returned.
-## Usage
+#### Return value
+The object corresponding to the given JSON5 text.
-This JavaScript implementation of JSON5 simply provides a `JSON5` object just
-like the native ES5 `JSON` object.
+### JSON5.stringify()
+Converts a JavaScript value to a JSON5 string, optionally replacing values if a
+replacer function is specified, or optionally including only the specified
+properties if a replacer array is specified.
-To use from Node:
+#### Syntax
+ JSON5.stringify(value[, replacer[, space]])
+ JSON5.stringify(value[, options])
-```sh
-npm install json5
-```
+#### Parameters
+- `value`: The value to convert to a JSON5 string.
+- `replacer`: A function that alters the behavior of the stringification
+ process, or an array of String and Number objects that serve as a whitelist
+ for selecting/filtering the properties of the value object to be included in
+ the JSON5 string. If this value is null or not provided, all properties of the
+ object are included in the resulting JSON5 string.
+- `space`: A String or Number object that's used to insert white space into the
+ output JSON5 string for readability purposes. If this is a Number, it
+ indicates the number of space characters to use as white space; this number is
+ capped at 10 (if it is greater, the value is just 10). Values less than 1
+ indicate that no space should be used. If this is a String, the string (or the
+ first 10 characters of the string, if it's longer than that) is used as white
+ space. If this parameter is not provided (or is null), no white space is used.
+ If white space is used, trailing commas will be used in objects and arrays.
+- `options`: An object with the following properties:
+ - `replacer`: Same as the `replacer` parameter.
+ - `space`: Same as the `space` parameter.
+ - `quote`: A String representing the quote character to use when serializing
+ strings.
-```js
-var JSON5 = require('json5');
-```
+#### Return value
+A JSON5 string representing the value.
-To use in the browser (adds the `JSON5` object to the global namespace):
+### Node.js `require()` JSON5 files
+When using Node.js, you can `require()` JSON5 files by adding the following
+statement.
-```html
-<script src="json5.js"></script>
+```js
+require('json5/lib/register')
```
-Then in both cases, you can simply replace native `JSON` calls with `JSON5`:
+Then you can load a JSON5 file with a Node.js `require()` statement. For
+example:
```js
-var obj = JSON5.parse('{unquoted:"key",trailing:"comma",}');
-var str = JSON5.stringify(obj);
+const config = require('./config.json5')
```
-`JSON5.parse` supports all of the JSON5 features listed above (*TODO: except
-Unicode*), as well as the native [`reviver` argument][json-parse].
+## CLI
+Since JSON is more widely used than JSON5, this package includes a CLI for
+converting JSON5 to JSON and for validating the syntax of JSON5 documents.
-[json-parse]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
-
-`JSON5.stringify` mainly avoids quoting keys where possible, but we hope to
-keep expanding it in the future (e.g. to also output trailing commas).
-It supports the native [`replacer` and `space` arguments][json-stringify],
-as well. *(TODO: Any implemented `toJSON` methods aren’t used today.)*
-
-[json-stringify]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
-
-
-### Extras
-
-If you’re running this on Node, you can also register a JSON5 `require()` hook
-to let you `require()` `.json5` files just like you can `.json` files:
-
-```js
-require('json5/lib/require');
-require('./path/to/foo'); // tries foo.json5 after foo.js, foo.json, etc.
-require('./path/to/bar.json5');
+### Installation
+```sh
+npm install --global json5
```
-This module also provides a `json5` executable (requires Node) for converting
-JSON5 files to JSON:
-
+### Usage
```sh
-json5 -c path/to/foo.json5 # generates path/to/foo.json
+json5 [options] <file>
```
+If `<file>` is not provided, then STDIN is used.
-## Development
+#### Options:
+- `-s`, `--space`: The number of spaces to indent or `t` for tabs
+- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT
+- `-v`, `--validate`: Validate JSON5 but do not output JSON
+- `-V`, `--version`: Output the version number
+- `-h`, `--help`: Output usage information
+## Contributing
+### Development
```sh
-git clone git://github.com/aseemk/json5.git
+git clone https://github.com/json5/json5
cd json5
npm install
-npm test
```
-As the `package.json5` file states, be sure to run `npm run build` on changes
-to `package.json5`, since npm requires `package.json`.
+When contributing code, please write relevant tests and run `npm test` and `npm
+run lint` before submitting pull requests. Please use an editor that supports
+[EditorConfig](http://editorconfig.org/).
-Feel free to [file issues](https://github.com/aseemk/json5/issues) and submit
-[pull requests](https://github.com/aseemk/json5/pulls) — contributions are
-welcome. If you do submit a pull request, please be sure to add or update the
-tests, and ensure that `npm test` continues to pass.
+### Issues
+To report bugs or request features regarding the JSON5 data format, please
+submit an issue to the [official specification
+repository](https://github.com/json5/json5-spec).
+To report bugs or request features regarding the JavaScript implentation of
+JSON5, please submit an issue to this repository.
## License
-
MIT. See [LICENSE.md](./LICENSE.md) for details.
-
## Credits
+[Assem Kishore](https://github.com/aseemk) founded this project.
[Michael Bolin](http://bolinfest.com/) independently arrived at and published
-some of these same ideas with awesome explanations and detail.
-Recommended reading:
-[Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
+some of these same ideas with awesome explanations and detail. Recommended
+reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
[Douglas Crockford](http://www.crockford.com/) of course designed and built
-JSON, but his state machine diagrams on the [JSON website](http://json.org/),
-as cheesy as it may sound, gave me motivation and confidence that building a
-new parser to implement these ideas this was within my reach!
-This code is also modeled directly off of Doug’s open-source [json_parse.js][]
-parser. I’m super grateful for that clean and well-documented code.
+JSON, but his state machine diagrams on the [JSON website](http://json.org/), as
+cheesy as it may sound, gave us motivation and confidence that building a new
+parser to implement these ideas was within reach! The original
+implementation of JSON5 was also modeled directly off of Doug’s open-source
+[json_parse.js] parser. We’re grateful for that clean and well-documented
+code.
-[json_parse.js]: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
+[json_parse.js]:
+https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
-supporter, contributing multiple patches and ideas. Thanks Max!
+supporter, contributing multiple patches and ideas.
-[Andrew Eisenberg](https://github.com/aeisenberg) has contributed the
+[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original
`stringify` method.
[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely
-with ES5 and is actively maintaining this project.
+with ES5, wrote the official JSON5 specification, completely rewrote the
+codebase from the ground up, and is actively maintaining this project.