1
|
### v1.0.1 [[code][c1.0.1], [diff][d1.0.1]]
|
2
|
|
3
|
[c1.0.1]: https://github.com/json5/json5/tree/v1.0.1
|
4
|
[d1.0.1]: https://github.com/json5/json5/compare/v1.0.0...v1.0.1
|
5
|
|
6
|
This release includes a bug fix and minor change.
|
7
|
|
8
|
- Fix: `parse` throws on unclosed objects and arrays.
|
9
|
|
10
|
- New: `package.json5` has been removed until an easier way to keep it in sync
|
11
|
with `package.json` is found.
|
12
|
|
13
|
|
14
|
### v1.0.0 [[code][c1.0.0], [diff][d1.0.0]]
|
15
|
|
16
|
[c1.0.0]: https://github.com/json5/json5/tree/v1.0.0
|
17
|
[d1.0.0]: https://github.com/json5/json5/compare/v0.5.1...v1.0.0
|
18
|
|
19
|
This release includes major internal changes and public API enhancements.
|
20
|
|
21
|
- **Major** JSON5 officially supports Node.js v4 and later. Support for Node.js
|
22
|
v0.10 and v0.12 have been dropped.
|
23
|
|
24
|
- New: Unicode property names and Unicode escapes in property names are
|
25
|
supported. ([#1])
|
26
|
|
27
|
- New: `stringify` outputs trailing commas in objects and arrays when a `space`
|
28
|
option is provided. ([#66])
|
29
|
|
30
|
- New: JSON5 allows line and paragraph separator characters (U+2028 and U+2029)
|
31
|
in strings in order to be compatible with JSON. However, ES5 does not allow
|
32
|
these characters in strings, so JSON5 gives a warning when they are parsed and
|
33
|
escapes them when they are stringified. ([#70])
|
34
|
|
35
|
- New: `stringify` accepts an options object as its second argument. The
|
36
|
supported options are `replacer`, `space`, and a new `quote` option that
|
37
|
specifies the quote character used in strings. ([#71])
|
38
|
|
39
|
- New: The CLI supports STDIN and STDOUT and adds `--out-file`, `--space`, and
|
40
|
`--validate` options. See `json5 --help` for more information. ([#72], [#84],
|
41
|
and [#108])
|
42
|
|
43
|
- New: In addition to the white space characters space `\t`, `\v`, `\f`, `\n`,
|
44
|
`\r`, and `\xA0`, the additional white space characters `\u2028`, `\u2029`,
|
45
|
and all other characters in the Space Separator Unicode category are allowed.
|
46
|
|
47
|
- New: In addition to the character escapes `\'`, `\"`, `\\`, `\b`, `\f`, `\n`,
|
48
|
`\r`, and `\t`, the additional character escapes `\v` and `\0`, hexadecimal
|
49
|
escapes like `\x0F`, and unnecessary escapes like `\a` are allowed in string
|
50
|
values and string property names.
|
51
|
|
52
|
- New: `stringify` outputs strings with single quotes by default but
|
53
|
intelligently uses double quotes if there are more single quotes than double
|
54
|
quotes inside the string. (i.e. `stringify('Stay here.')` outputs
|
55
|
`'Stay here.'` while `stringify('Let\'s go.')` outputs `"Let's go."`)
|
56
|
|
57
|
- New: When a character is not allowed in a string, `stringify` outputs a
|
58
|
character escape like `\t` when available, a hexadecimal escape like `\x0F`
|
59
|
when the Unicode code point is less than 256, or a Unicode character escape
|
60
|
like `\u01FF`, in that order.
|
61
|
|
62
|
- New: `stringify` checks for a `toJSON5` method on objects and, if it exists,
|
63
|
stringifies its return value instead of the object. `toJSON5` overrides
|
64
|
`toJSON` if they both exist.
|
65
|
|
66
|
- New: To `require` or `import` JSON5 files, use `require('json5/lib/register')`
|
67
|
or `import 'json5/lib/register'`. Previous versions used `json5/lib/require`,
|
68
|
which still exists for backward compatibility but is deprecated and will give
|
69
|
a warning.
|
70
|
|
71
|
- New: To use JSON5 in browsers, use the file at `dist/index.js` or
|
72
|
`https://unpkg.com/json5@^1.0.0`.
|
73
|
|
74
|
- Fix: `stringify` properly outputs `Infinity` and `NaN`. ([#67])
|
75
|
|
76
|
- Fix: `isWord` no longer becomes a property of `JSON5` after calling
|
77
|
`stringify`. ([#68] and [#89])
|
78
|
|
79
|
- Fix: `stringify` no longer throws when an object does not have a `prototype`.
|
80
|
([#154])
|
81
|
|
82
|
- Fix: `stringify` properly handles the `key` argument of `toJSON(key)` methods.
|
83
|
`toJSON5(key)` follows this pattern.
|
84
|
|
85
|
- Fix: `stringify` accepts `Number` and `String` objects as its `space`
|
86
|
argument.
|
87
|
|
88
|
- Fix: In addition to a function, `stringify` also accepts an array of keys to
|
89
|
include in the output as its `replacer` argument. Numbers, `Number` objects,
|
90
|
and `String` objects will be converted to a string if they are given as array
|
91
|
values.
|
92
|
|
93
|
|
94
|
### v0.5.1 [[code][c0.5.1], [diff][d0.5.1]]
|
95
|
|
96
|
[c0.5.1]: https://github.com/json5/json5/tree/v0.5.1
|
97
|
[d0.5.1]: https://github.com/json5/json5/compare/v0.5.0...v0.5.1
|
98
|
|
99
|
This release includes a minor fix for indentations when stringifying empty
|
100
|
arrays.
|
101
|
|
102
|
- Fix: Indents no longer appear in empty arrays when stringified. ([#134])
|
103
|
|
104
|
|
105
|
### v0.5.0 [[code][c0.5.0], [diff][d0.5.0]]
|
106
|
|
107
|
[c0.5.0]: https://github.com/json5/json5/tree/v0.5.0
|
108
|
[d0.5.0]: https://github.com/json5/json5/compare/v0.4.0...v0.5.0
|
109
|
|
110
|
This release includes major internal changes and public API enhancements.
|
111
|
|
112
|
- **Major:** JSON5 officially supports Node.js v4 LTS and v5. Support for
|
113
|
Node.js v0.6 and v0.8 have been dropped, while support for v0.10 and v0.12
|
114
|
remain.
|
115
|
|
116
|
- Fix: YUI Compressor no longer fails when compressing json5.js. ([#97])
|
117
|
|
118
|
- New: `parse` and the CLI provide line and column numbers when displaying error
|
119
|
messages. ([#101]; awesome work by [@amb26].)
|
120
|
|
121
|
|
122
|
### v0.4.0 [[code][c0.4.0], [diff][d0.4.0]]
|
123
|
|
124
|
[c0.4.0]: https://github.com/json5/json5/tree/v0.4.0
|
125
|
[d0.4.0]: https://github.com/json5/json5/compare/v0.2.0...v0.4.0
|
126
|
|
127
|
Note that v0.3.0 was tagged, but never published to npm, so this v0.4.0
|
128
|
changelog entry includes v0.3.0 features.
|
129
|
|
130
|
This is a massive release that adds `stringify` support, among other things.
|
131
|
|
132
|
- **Major:** `JSON5.stringify()` now exists!
|
133
|
This method is analogous to the native `JSON.stringify()`;
|
134
|
it just avoids quoting keys where possible.
|
135
|
See the [usage documentation](./README.md#usage) for more.
|
136
|
([#32]; huge thanks and props [@aeisenberg]!)
|
137
|
|
138
|
- New: `NaN` and `-NaN` are now allowed number literals.
|
139
|
([#30]; thanks [@rowanhill].)
|
140
|
|
141
|
- New: Duplicate object keys are now allowed; the last value is used.
|
142
|
This is the same behavior as JSON. ([#57]; thanks [@jordanbtucker].)
|
143
|
|
144
|
- Fix: Properly handle various whitespace and newline cases now.
|
145
|
E.g. JSON5 now properly supports escaped CR and CRLF newlines in strings,
|
146
|
and JSON5 now accepts the same whitespace as JSON (stricter than ES5).
|
147
|
([#58], [#60], and [#63]; thanks [@jordanbtucker].)
|
148
|
|
149
|
- New: Negative hexadecimal numbers (e.g. `-0xC8`) are allowed again.
|
150
|
(They were disallowed in v0.2.0; see below.)
|
151
|
It turns out they *are* valid in ES5, so JSON5 supports them now too.
|
152
|
([#36]; thanks [@jordanbtucker]!)
|
153
|
|
154
|
|
155
|
### v0.2.0 [[code][c0.2.0], [diff][d0.2.0]]
|
156
|
|
157
|
[c0.2.0]: https://github.com/json5/json5/tree/v0.2.0
|
158
|
[d0.2.0]: https://github.com/json5/json5/compare/v0.1.0...v0.2.0
|
159
|
|
160
|
This release fixes some bugs and adds some more utility features to help you
|
161
|
express data more easily:
|
162
|
|
163
|
- **Breaking:** Negative hexadecimal numbers (e.g. `-0xC8`) are rejected now.
|
164
|
While V8 (e.g. Chrome and Node) supported them, it turns out they're invalid
|
165
|
in ES5. This has been [fixed in V8][v8-hex-fix] (and by extension, Chrome
|
166
|
and Node), so JSON5 officially rejects them now, too. ([#36])
|
167
|
|
168
|
- New: Trailing decimal points in decimal numbers are allowed again.
|
169
|
(They were disallowed in v0.1.0; see below.)
|
170
|
They're allowed by ES5, and differentiating between integers and floats may
|
171
|
make sense on some platforms. ([#16]; thanks [@Midar].)
|
172
|
|
173
|
- New: `Infinity` and `-Infinity` are now allowed number literals.
|
174
|
([#30]; thanks [@pepkin88].)
|
175
|
|
176
|
- New: Plus signs (`+`) in front of numbers are now allowed, since it can
|
177
|
be helpful in some contexts to explicitly mark numbers as positive.
|
178
|
(E.g. when a property represents changes or deltas.)
|
179
|
|
180
|
- Fix: unescaped newlines in strings are rejected now.
|
181
|
([#24]; thanks [@Midar].)
|
182
|
|
183
|
|
184
|
### v0.1.0 [[code][c0.1.0], [diff][d0.1.0]]
|
185
|
|
186
|
[c0.1.0]: https://github.com/json5/json5/tree/v0.1.0
|
187
|
[d0.1.0]: https://github.com/json5/json5/compare/v0.0.1...v0.1.0
|
188
|
|
189
|
This release tightens JSON5 support and adds helpful utility features:
|
190
|
|
191
|
- New: Support hexadecimal numbers. (Thanks [@MaxNanasy].)
|
192
|
|
193
|
- Fix: Reject octal numbers properly now. Previously, they were accepted but
|
194
|
improperly parsed as base-10 numbers. (Thanks [@MaxNanasy].)
|
195
|
|
196
|
- **Breaking:** Reject "noctal" numbers now (base-10 numbers that begin with a
|
197
|
leading zero). These are disallowed by both JSON5 and JSON, as well as by
|
198
|
ES5's strict mode. (Thanks [@MaxNanasy].)
|
199
|
|
200
|
- New: Support leading decimal points in decimal numbers.
|
201
|
(Thanks [@MaxNanasy].)
|
202
|
|
203
|
- **Breaking:** Reject trailing decimal points in decimal numbers now. These
|
204
|
are disallowed by both JSON5 and JSON. (Thanks [@MaxNanasy].)
|
205
|
|
206
|
- **Breaking:** Reject omitted elements in arrays now. These are disallowed by
|
207
|
both JSON5 and JSON.
|
208
|
|
209
|
- Fix: Throw proper `SyntaxError` instances on errors now.
|
210
|
|
211
|
- New: Add Node.js `require()` hook. Register via `json5/lib/require`.
|
212
|
|
213
|
- New: Add Node.js `json5` executable to compile JSON5 files to JSON.
|
214
|
|
215
|
|
216
|
### v0.0.1 [[code][c0.0.1], [diff][d0.0.1]]
|
217
|
|
218
|
[c0.0.1]: https://github.com/json5/json5/tree/v0.0.1
|
219
|
[d0.0.1]: https://github.com/json5/json5/compare/v0.0.0...v0.0.1
|
220
|
|
221
|
This was the first implementation of this JSON5 parser.
|
222
|
|
223
|
- Support unquoted object keys, including reserved words. Unicode characters
|
224
|
and escape sequences sequences aren't yet supported.
|
225
|
|
226
|
- Support single-quoted strings.
|
227
|
|
228
|
- Support multi-line strings.
|
229
|
|
230
|
- Support trailing commas in arrays and objects.
|
231
|
|
232
|
- Support comments, both inline and block.
|
233
|
|
234
|
|
235
|
### v0.0.0 [[code](https://github.com/json5/json5/tree/v0.0.0)]
|
236
|
|
237
|
Let's consider this to be Douglas Crockford's original [json_parse.js] — a
|
238
|
parser for the regular JSON format.
|
239
|
|
240
|
|
241
|
[json_parse.js]: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
|
242
|
[v8-hex-fix]: http://code.google.com/p/v8/issues/detail?id=2240
|
243
|
|
244
|
[@MaxNanasy]: https://github.com/MaxNanasy
|
245
|
[@Midar]: https://github.com/Midar
|
246
|
[@pepkin88]: https://github.com/pepkin88
|
247
|
[@rowanhill]: https://github.com/rowanhill
|
248
|
[@aeisenberg]: https://github.com/aeisenberg
|
249
|
[@jordanbtucker]: https://github.com/jordanbtucker
|
250
|
[@amb26]: https://github.com/amb26
|
251
|
|
252
|
[#1]: https://github.com/json5/json5/issues/1
|
253
|
[#16]: https://github.com/json5/json5/issues/16
|
254
|
[#24]: https://github.com/json5/json5/issues/24
|
255
|
[#30]: https://github.com/json5/json5/issues/30
|
256
|
[#32]: https://github.com/json5/json5/issues/32
|
257
|
[#36]: https://github.com/json5/json5/issues/36
|
258
|
[#57]: https://github.com/json5/json5/issues/57
|
259
|
[#58]: https://github.com/json5/json5/pull/58
|
260
|
[#60]: https://github.com/json5/json5/pull/60
|
261
|
[#63]: https://github.com/json5/json5/pull/63
|
262
|
[#66]: https://github.com/json5/json5/issues/66
|
263
|
[#67]: https://github.com/json5/json5/issues/67
|
264
|
[#68]: https://github.com/json5/json5/issues/68
|
265
|
[#70]: https://github.com/json5/json5/issues/70
|
266
|
[#71]: https://github.com/json5/json5/issues/71
|
267
|
[#72]: https://github.com/json5/json5/issues/72
|
268
|
[#84]: https://github.com/json5/json5/pull/84
|
269
|
[#89]: https://github.com/json5/json5/pull/89
|
270
|
[#97]: https://github.com/json5/json5/pull/97
|
271
|
[#101]: https://github.com/json5/json5/pull/101
|
272
|
[#108]: https://github.com/json5/json5/pull/108
|
273
|
[#134]: https://github.com/json5/json5/pull/134
|
274
|
[#154]: https://github.com/json5/json5/issues/154
|