source: node_modules/minim/CHANGELOG.md

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 16.7 KB
Line 
1# Minim Changelog
2
3## 0.23.8 (2020-06-12)
4
5### Enhancements
6
7- `ArrayElement`'s `contains` method has been renamed to `includes` to be
8 consistent with `Array.includes`. `ArrayElement.contains` has been
9 deprecated, and remains for compatibility.
10
11### Bug Fixes
12
13- Prevent throwing an error when calling `toValue()` on an element with a key
14 value pair which does not have a value.
15
16## 0.23.7 (2020-04-27)
17
18### Bug Fixes
19
20- Prevents the JSON serializer from serializing an empty object (`{}`) under
21 meta and attributes under the case where none of the meta or attribute
22 member's have a value. This prevents `{}` from being present under meta or
23 attributes when setting a member with an undefined key.
24
25## 0.23.6 (2019-09-10)
26
27### Bug Fixes
28
29- Fixes a JSON 0.6 serialisation bug where httpRequest and similar array-based
30 elements with undefined content would be serialised with undefined content
31 instead of an empty array as content.
32
33## 0.23.5 (2019-07-02)
34
35This release brings some performance improvements, namely to serialising with
36the JSON serialisers.
37
38## 0.23.4 (2019-06-11)
39
40### Bug Fixes
41
42- Fixes serialisation of default values in enumerations in
43 Refract JSON 0.6 serialisation.
44
45## 0.23.3 (2019-04-06)
46
47### Enhancements
48
49- Added support for IE11 in the included web distribution of minim
50 (`dist/minim.js`).
51
52## 0.23.2 (2019-03-15)
53
54### Bug Fixes
55
56- Fixes serialisation of array and object sample values in enumerations in
57 Refract JSON 0.6 serialisation.
58
59## 0.23.1 (2019-02-25)
60
61### Bug Fixes
62
63- Restores documentation coverage for all elements, some was unintentionally
64 removed in 0.23.0.
65
66## 0.23.0 (2019-02-22)
67
68### Breaking
69
70- Support for Node 4 has been removed. Minim now supports Node >= 6.
71- Minim no longer uses [uptown](http://github.com/smizell/uptown) and thus the
72 `extend` API has been removed.
73
74### Enhancements
75
76- Calling `.freeze()` on a frozen element is now supported. Previously you may
77 see an error thrown while freeze was trying to attach parents to any child
78 elements.
79
80## 0.22.1 (2018-12-10)
81
82### Bug Fixes
83
84- Fixes serialising an element with an undefined meta or attributes value. For
85 example if a meta value (`id`) was set to `undefined`, then it should not be
86 serialised. Previously the serialiser would throw an exception that
87 undefined was not an element.
88
89## 0.22.0
90
91### Enhancements
92
93- `ArrayElement` now conforms to parts of the [Fantasy
94 Land](https://github.com/fantasyland/fantasy-land) 3.5 specification.
95 `Functor`, `Semigroup`, `Monoid`, `Filterable`, `Chain`, and `Foldable` are
96 now supported.
97
98## 0.21.1
99
100### Bug Fixes
101
102- Empty parseResult and link arrays are serialised in JSON 06 Serialiser, a
103 regression of 0.21.0 caused these to not be serialised.
104
105## 0.21.0
106
107### Breaking
108
109- Minim no longer supports importing files directly from the minim package.
110 Importing the JSON 0.6 serialiser via
111 `require('minim/lib/serialisers/json-0.6')` is not supported, it is now
112 recommended to import `JSON06Serialiser` and other APIs from minim directly.
113
114 ```js
115 const { JSON06Serialiser } = require('minim');
116 ```
117
118- `flatMap` in `ArraySlice` no longer removes empty items. Instead `flatMap` is
119 aligned with
120 [`Array.flatMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap)
121 which first maps each element using a mapping function, then flattens the
122 result into a new array.
123
124 Existing `flatMap` behaviour is now available under the method `compactMap`.
125
126### Enhancements
127
128- Object Element can now be created with an array of member elements.
129
130- You can now create an element from an ArraySlice or ObjectSlice, for example,
131 passing the result of a `filter` operation into a new element.
132
133 ```
134 const numbers = new ArrayElement([1, 2, 3, 4])
135 new ArrayElement(numbers.filter((e) => e.toValue() % 2))
136 ```
137
138- Adds `compactMap` functionality to Array and Object elements allowing you to
139 returns an array containing the truthy results of calling the given
140 transformation with each element of this sequence.
141
142- Added `flatMap` to `ArrayElement`.
143
144### Bug Fixes
145
146- The default content value of an element is undefined. Whereas before the
147 default value was `null`.
148
149- Setting the `content` property on an Element now behaves the same as passing
150 content in to the constructor. For example, the following two elements are
151 identical:
152
153 ```js
154 new ArrayElement([1])
155
156 const element = new ArrayElement()
157 element.content = [1]
158 ```
159
160 Passing `[1]` to an `ArrayElement` constructor would produce an array of
161 number elements, whereas setting the content to `[1]` resulted in setting the
162 content to be an array of non-elements which is invalid.
163
164- The serialisation of the `variable` attribute in the JSON 0.6 serialisation
165 is updated to reflect API Elements 1.0. The `variable` attribute is now
166 present on a member element instead of the key of a member element.
167
168- Empty arrays are no longer serialised in JSON 06 Serialiser.
169
170## 0.20.7
171
172### Bug Fixes
173
174- Fixes a regression from 0.20.6 where `metadata` became an `ObjectElement`
175 instead of `ArrayElement` as it was in the past.
176
177## 0.20.6
178
179### Bug Fixes
180
181- JSON 0.6 deserialiser will now correct deserialise an API Categories `meta`
182 attribute into `metadata`.
183
184- JSON Serialisers will now use elements from the given namespace during
185 serialisation checks and deserialisation.
186
187## 0.20.5
188
189### Bug Fixes
190
191- JSON 0.6 enum serialisation will now remove `fixed` typeAttributes which are
192 now present in API Elements 1.0 enumerations. These are removed for
193 consistent serialisation of the 0.6 serialiser.
194
195## 0.20.4
196
197- Further performance improvements have been made to JSON Serialisation. The
198 serialiser can now deserialise deep structures substantially faster.
199
200## 0.20.3
201
202### Enhancements
203
204- Minim NPM package now contains a browser distribution in `dist/minim.js`.
205- Performance improvements have been made to JSON Serialisation. The serialiser
206 can now serialise deep structures a little faster.
207
208## 0.20.2
209
210### Bug Fixes
211
212- The JSON 0.6 serialiser will now serialise empty content arrays. A regression
213 caused in 0.20.1 because of the logic was applied to both Refract JSON 1.0
214 and 0.6 serialisers.
215
216## 0.20.1
217
218### Bug Fixes
219
220- Prevent de-serialising `undefined` if the default element's content is not
221 null.
222- No longer serialise an empty array in the JSON serialisers, instead the
223 content can be removed for consistency with other tools.
224
225## 0.20.0
226
227### Enhancements
228
229- Adds a `reject` method to `ArrayElement`, `ObjectElement`, `ArraySlice`,
230 and `ObjectSlice` which complements the `filter` method providing the ability
231 to exclude vs filter matched elements.
232
233### Breaking
234
235- The Refract JSON 0.6 serialiser will de-serialise enum elements into the form
236 in the API Elements 1.0 specification. This is a breaking change on the
237 layout of the enum. Default and sample values will now be an `enum` element
238 themselves.
239
240### Bug Fixes
241
242- JSON deserialisers will now prevent overriding default element content
243 values with undefined. This could cause problems where internal state of
244 array or object element would have undefined as content and thus cause other
245 Element methods to later fail such as `toValue` or `get`.
246
247## 0.19.2
248
249### Enhancements
250
251- ArraySlice now provides a `find` method allowing you to find the first
252 element satisfying the given value.
253- ArraySlice.filter now accepts element names or element classes to filter.
254- ArraySlice now provides `flatMap` allowing you to map and then flatten the
255 results.
256
257### Bug Fixes
258
259- Accessing lazy meta accessors on frozen elements such as `title` will now
260 return a frozen default value. Previously this would raise an exception
261 trying to mutate the element.
262
263## 0.19.1
264
265### Enhancements
266
267- Serialisers will now throw TypeError with straight forward messages when you
268 try to serialise a non-element type.
269
270### Bug Fixes
271
272- While accessing meta or attributes of a frozen element that does not contain
273 meta or attributes, an exception was raised because these accessors would
274 lazy load and attempt to mutate the element.
275
276 These accessors will now return an empty frozen `ObjectElement` in these
277 cases now to prevent mutation.
278- Fixes JSON 0.6 Deserialiser to correct deserialise enum elements.
279 - When multiple sample values were present additional values were being discarded.
280 - Deserialised enum content contained duplicate enumeration values.
281
282## 0.19.0
283
284### Breaking
285
286- Updated enum serialization/deserialization in the JSON 0.6 serializer to match
287 https://github.com/apiaryio/api-elements/pull/28
288- `Element.children` and `Element.recursiveChildren` now return `ArraySlice`
289 instead of an `ArrayElement`.
290- `ArrayElement.filter` and `ArrayElement.find*` now return `ArraySlice`
291 instead of an `ArrayElement`.
292- The `first`, `second` and `last` methods on `ArrayElement` are now properties
293 instead of methods.
294- `ObjectElement.filter` now returns an `ObjectSlice` instead of an
295 `ObjectElement`.
296- When providing multiple element names to `Element.findRecursive` you must
297 call `freeze` on the element beforehand so that the element has access to the
298 parent of the element.
299
300### Enhancements
301
302- Introduced JSDoc documentation to public interfaces
303- `Element` now contains a `freeze` method to freeze and prevent an element
304 from being mutated, this also adds a parent property on all child elements.
305
306### Bug Fixes
307
308- Handle serializing key-value pair without value
309- Deserialize `dataStructure` containing an array correctly
310
311## 0.18.1
312
313### Bug Fixes
314
315- Prevent JSON Serialisers from throwing exception when serialising a key value
316 pair without any value.
317
318## 0.18.0
319
320### Breaking
321
322- JSON Serialisation now follows the JSON Refract serialisation rules defined at
323 https://github.com/refractproject/refract-spec/blob/master/formats/json-refract.md.
324
325 Existing serialiser is available during a transition period to aid migration
326 to the new format.
327
328 ```js
329 const JSONSerialiser = require('minim/serialisers/json-0.6');
330 const serialiser = new JSONSerialiser();
331 const element = serialiser.deserialise('Hello');
332 serialiser.serialise(element);
333 ```
334
335### Enhancements
336
337- ArrayElement high-order functions, `map`, `filter` and `forEach` now accept
338 `thisArg` like the equivalent functionality in `Array`.
339
340## 0.17.1 (2016-07-29)
341
342### Bug Fixes
343
344- Initialising an Element with given meta or attributes as ObjectElement is now
345 supported.
346- When converting JavaScript values to Refract, objects are now supported.
347- Adds a special case to serialise sourceMap elements as values.
348
349## 0.17.0 (2017-06-16)
350
351### Breaking
352
353- `Element.toRefract()` and `Element.fromRefract()` have been removed. JSON
354 Serialisation is now decoupled from the Element model. A minim namespace
355 provides a convenience `toRefract(element)` and `fromRefract(object)`
356 methods.
357
358- `ArrayElement` `children` method has been replaced by a `children` property
359 on all elements. You may now chain children in conjunction with `filter` to
360 get the existing behaviour.
361
362 Before:
363
364 ```js
365 const numbers = doc.children((element) => element.element == 'number');
366 ```
367
368 After:
369
370 ```js
371 const numbers = doc.children.filter((element) => element.element == 'number');
372 ```
373
374 *OR*
375
376 ```js
377 const numbers = doc.children.findByElement('number');
378 ```
379
380- `BaseElement` has been renamed to `Element`.
381
382- Embedded Refract support has been removed.
383
384### Enhancements
385
386- All elements now contain a `children` and `recursiveChildren` properties that
387 return an ArrayElement of the respective children elements.
388- JSON Serialiser will no longer serialise empty `meta` and `attributes` into
389 JSON objects.
390- Minim now contains a `RefElement`.
391- Element now contains a `toRef()` function to create a ref element referencing
392 the element.
393
394## 0.16.0 (2017-05-04)
395
396### Breaking
397
398- Node 0.10 and 0.12 are no longer supported.
399- Elements `name` property was removed. There is no longer a name property in
400 Refract specification.
401
402### Enhancements
403
404- Elements now provide a `findRecursive` method allowing you to recursively
405 find matching elements.
406- Added function for remove key in an Object element and Array element
407
408#### Array Element
409
410- New `isEmpty` convenience property for determining if an array is empty.
411
412## 0.15.0 (2017-04-03)
413
414- Getters of link element will now return an element
415- Meta convenience methods will now return an element
416
417## 0.14.2 (2016-08-19)
418
419- Update Lodash version
420
421## 0.14.1 (2016-08-17)
422
423- Update Uptown to 0.4.1
424
425## 0.14.0 (2016-04-28)
426
427- **BREAKING** The public interface of the `minim` module has changed significantly. List of changes:
428
429 - Removed `toCompactRefract` and `fromCompactRefract`
430 - Improved the default refract serialization such that when an element in `attributes` has its own metadata or attributes defined then it will now be refracted when calling `toRefract`
431
432## 0.13.0 (2015-12-03)
433
434- Added support for hyperlinks per [RFC 0008](https://github.com/refractproject/rfcs/blob/b6e390f7bbc960808ba053e172cccd9e4a81a04a/text/0008-add-hyperlinks.md)
435- Upgraded Lodash to 3.10.1
436- Refract elements will be automatically parsed when found in arrays in `meta`
437
438## 0.12.3 (2015-11-30)
439
440- When an element in `meta` has its own metadata or attributes defined then it will now be refracted when calling `toRefract` or `toCompactRefract`.
441- When loading from refract or compact refract, if an item in `meta` looks like an element it will be loaded as such. This may cause false positives.
442
443## 0.12.2 (2015-11-24)
444
445- Fix a bug related to setting the default key names that should be treated as refracted elements in element attributes. This is now accomplished via the namespace: `namespace._elementAttributeKeys.push('my-value');`. This fixes bugs related to overwriting the `namespace.BaseElement`.
446
447## 0.12.1 (2015-11-24)
448
449- Fix a bug when loading refracted attributes from compact refract.
450
451## 0.12.0 (2015-11-23)
452
453- Provide a way for elements to mark attributes as unrefracted arrays of
454 refracted elements. Subclassed elements can push onto the
455 `_attributeElementArrayKeys` property to use this feature. **Note**: in the
456 future this feature may go away.
457- Allow `load` to be used for plugins where a namespace is not being used
458- Add an `elements` property to the `Namespace` class which returns an object of PascalCased element name keys to registered element class values. This allows for ES6 use cases like:
459
460 ```js
461 const {StringElement, ArrayElement, ObjectElement} = namespace.elements;
462 ```
463
464- Add functionality for Embedded Refract
465
466## 0.11.0 (2015-09-07)
467
468### Breaking
469
470The public interface of the `minim` module has changed significantly. List of changes:
471
472 - `ElementRegistry` has been renamed to `Namespace`.
473 - `minim` has only one public method, called `namespace`, which creates a new `Namespace` instance.
474 - `minim.convertToElement` is now `namespace.toElement`
475 - `minim.convertFromRefract` is now `namespace.fromRefract`
476 - `minim.convertFromCompactRefract` is now `namespace.fromCompactRefract`
477 - `minim.*Element` are removed (except for `namespace.BaseElement`). These should be accessed via `namespace.getElementClass('name')` now.
478 - The `Namespace` has a new method `use` which loads a plugin namespace and is chainable, e.g. `namespace.use(plugin1).use(plugin2)`.
479 - A `Namespace` can be initialized without any default elements by passing an options object with `noDefault` set to `false` to the constructor. They can be initialized later via the `useDefault` method.
480
481 Before:
482
483 ```js
484 var minim = require('minim');
485 minim.convertToElement([1, 2, 3]);
486 ```
487
488 After:
489
490 ```js
491 var minim = require('minim');
492 var namespace = minim.namespace();
493 namespace.toElement([1, 2, 3]);
494 ```
495
496- Add a `.toValue()` method to member elements which returns a hash with the key
497 and value and their respective values.
498
499## 0.10.0 (2015-08-18)
500
501- Rename the `class` metadata property to `classes`. The convenience property
502 is also now called `classes`, e.g. `element.classes.contains('abc')`.
503
504## 0.9.0 (2015-07-28)
505
506- Allow the iterator protocol to be used with arrays and objects if the runtime
507 supports it. This enables using `for ... of` loops on elements as well as
508 rest operators, destructuring, `yield*`, etc.
509- Convenience properties for simple types now return the value result. Instead
510 of `element.title.toValue()` you now use `element.title`.
511- Add array indexes to `#forEach`.
512- Add a `#clone` method.
513- Add a `#reduce` method.
514- Fix a serialization bug when initializing using falsey values
515 (`null`, `0`, `false`).
516
517## 0.8.0 (2015-07-09)
518
519- Allow `#set` to take an object for Object Elements
520- Convert `meta` to be Minim Object Elements
521- Convert `attributes` to be Minim Object Elements
522- Sync class and method names with Refract 0.2.0 spec
523- Add convenience methods for `meta` attributes, such as `id` or `class`
524- Add finder functions, such as `findByElement` and `findByClass`
525- Upgrade to use Uptown 0.4.0
526- Organize code
Note: See TracBrowser for help on using the repository browser.