UNPKG

44 kBMarkdownView Raw
1## Change Log
2
3**1.0.0** <small>_Sep 13, 2019_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.15.1...1.0.0)
4
5#### Breaking changes
6
7- This version requires Node.js 8+ **if** using a Knex version greater than 0.18.4, otherwise Node.js 6 is still supported: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
8- Make `require: true` the default for Model#fetch: [#2006](https://github.com/bookshelf/bookshelf/pull/2006)
9- Remove some Model and Collection lodash based methods: [#2005](https://github.com/bookshelf/bookshelf/pull/2005)
10- Change Collection#where so it behaves like Model#where: [#2001](https://github.com/bookshelf/bookshelf/pull/2001)
11- Move all plugins to their own repositories: [#2000](https://github.com/bookshelf/bookshelf/pull/2000)
12- Promote some useful plugins to core: [#1992](https://github.com/bookshelf/bookshelf/pull/1992), [#1993](https://github.com/bookshelf/bookshelf/pull/1993), [#1996](https://github.com/bookshelf/bookshelf/pull/1996)
13
14#### Enhancements
15
16- Refresh model attributes after a save operation: [#2012](https://github.com/bookshelf/bookshelf/pull/2012)
17
18#### Bug fixes
19
20- Fix missing columns after save: [#2012](https://github.com/bookshelf/bookshelf/pull/2012)
21- Fix Case Converter plugin overriding any previously defined parse methods: [#2000](https://github.com/bookshelf/bookshelf/pull/2000), [case-converter-plugin@1.0.0](https://github.com/bookshelf/case-converter-plugin/releases/tag/v1.0.0)
22- Fix registry saving models inadvertently across different bookshelf instances: [#1996](https://github.com/bookshelf/bookshelf/pull/1996)
23
24#### Documentation
25
26- Add example of how to use custom collections: [#2015](https://github.com/bookshelf/bookshelf/pull/2015)
27- Improve documentation related to debug mode: [#2014](https://github.com/bookshelf/bookshelf/pull/2014)
28- Add note that count methods return String with Postgres: [#2013](https://github.com/bookshelf/bookshelf/pull/2013)
29- Fix typo in Readme: [#1998](https://github.com/bookshelf/bookshelf/pull/1998)
30- Better Plugin Docs: [#1992](https://github.com/bookshelf/bookshelf/pull/1992), [#1993](https://github.com/bookshelf/bookshelf/pull/1993), [#1996](https://github.com/bookshelf/bookshelf/pull/1996), [#2000](https://github.com/bookshelf/bookshelf/pull/2000)
31
32#### Dependencies
33
34- Update lint-staged to version 9.1.0: [#1994](https://github.com/bookshelf/bookshelf/pull/1994)
35- Update bluebird to 3.5.5: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
36- Update lodash to 4.17.14: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
37- Update mocha to version 6.1.4: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
38- Update mysql to version 2.17.1: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
39- Update pg to version 7.11.0: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
40- Update sinon to version 7.3.2: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
41- Update sinon-chai to version 3.3.0: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
42- Update sqlite3 to version 4.0.9: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
43- Update uuid to version 3.3.2: [#1991](https://github.com/bookshelf/bookshelf/pull/1991)
44- Update eslint-config-prettier to 6.0.0: [#1957](https://github.com/bookshelf/bookshelf/pull/1987)
45- Update eslint to version 6.0.0: [#1986](https://github.com/bookshelf/bookshelf/pull/1986)
46
47**0.15.1** <small>_Jun 13, 2019_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.15.0...0.15.1)
48
49- Update husky to version 2.4.1: [#1984](https://github.com/bookshelf/bookshelf/pull/1984)
50- Bump supported knex version to 0.17: [#1982](https://github.com/bookshelf/bookshelf/pull/1982)
51
52**0.15.0** <small>_Jun 13, 2019_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.14.2...0.15.0)
53
54#### Breaking changes
55
56- This version requires Node.js 6+
57- Remove code that has been deprecated for a long time: [#1956](https://github.com/bookshelf/bookshelf/pull/1956)
58
59#### Bug fixes
60
61- `once` removes all events after it has been triggered: [#1972](https://github.com/bookshelf/bookshelf/pull/1972)
62- Pagination details are wrong when selecting distinct values of a column: [#1950](https://github.com/bookshelf/bookshelf/pull/1950)
63- Fix missing attributes in some events: [#1934](https://github.com/bookshelf/bookshelf/pull/1934)
64
65#### Test Suite
66
67- Fix Docker-compose.yml default postgres user: [#1972](https://github.com/bookshelf/bookshelf/pull/1972)
68- Fix JSON tests on PostgreSQL 10+: [#1955](https://github.com/bookshelf/bookshelf/pull/1955)
69
70#### Documentation
71
72- Update and fix a lot of doclets: [#1951](https://github.com/bookshelf/bookshelf/pull/1951)
73- Update README.md: [#1940](https://github.com/bookshelf/bookshelf/pull/1940)
74
75#### Dependencies
76
77- Update mocha to version 6.1.1: [#1968](https://github.com/bookshelf/bookshelf/pull/1968)
78- Update eslint-config-prettier to 4.1.0: [#1957](https://github.com/bookshelf/bookshelf/pull/1957)
79- Update sinon to version 7.2.4: [#1947](https://github.com/bookshelf/bookshelf/pull/1947)
80- Update eslint to version 5.1.0: [#1930](https://github.com/bookshelf/bookshelf/pull/1930)
81
82**0.14.2** <small>_Dec 17, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.14.1...0.14.2)
83
84#### Bug fixes
85
86- Fix crash when using `groupBy` with table qualifier in pagination plugin: [#1928](https://github.com/bookshelf/bookshelf/pull/1928)
87- Fix `undefined` transaction object with Knex 0.15+: [#1926](https://github.com/bookshelf/bookshelf/pull/1926)
88
89#### Refactoring
90
91- Refactor logic behind `.timestamp()`'s decision for when to update the `updated_at` column: [#1892](https://github.com/bookshelf/bookshelf/pull/1892)
92
93**0.14.1** <small>_Dec 09, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.14.0...0.14.1)
94
95#### Enhancements
96
97- Allow passing custom options to the pagination plugin's internal count method. This is useful for better interoperability with other plugins: [#1914](https://github.com/bookshelf/bookshelf/pull/1914)
98
99#### Bug fixes
100
101- Fix `withRelated` fetch option not always grouping properly when using binary primary keys: [#1918](https://github.com/bookshelf/bookshelf/pull/1918)
102
103#### Documentation
104
105- Add a basic Events guide and fix some issues with the events doclets: [#1917](https://github.com/bookshelf/bookshelf/pull/1917)
106
107**0.14.0** <small>_Dec 09, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.13.3...0.14.0)
108
109#### Breaking changes
110
111- The `previous()` and `previousAttributes()` methods were changed so that whenever a model is saved or destroyed the previous attributes are no longer reset to the current attributes. Since the old behavior wasn't very useful it's likely this won't cause issues for many people. There's a [migration guide](https://github.com/bookshelf/bookshelf/wiki/Migrating-from-0.13.3-to-0.14.0#previous-and-previousattributes) in case you are affected by this change. [#1848](https://github.com/bookshelf/bookshelf/pull/1848)
112- Fix incorrect results in collection when models have duplicate ids. Checkout the [migration guide](https://github.com/bookshelf/bookshelf/wiki/Migrating-from-0.13.3-to-0.14.0#passing-merge-false-remove-false-to-collectionset-and-default-behavior-with-duplicates) in case you are affected by this. [#1846](https://github.com/bookshelf/bookshelf/pull/1846)
113- Empty `hasOne` relation will now return `null` instead of `{}` when serialized: [#1839](https://github.com/bookshelf/bookshelf/pull/1839). There's a [migration guide](https://github.com/bookshelf/bookshelf/wiki/Migrating-from-0.13.3-to-0.14.0#return-value-for-empty-hasone-relation) in the rare event this causes you problems.
114- Add more helpful error messages on bad or insufficient `morphTo` data: [#1824](https://github.com/bookshelf/bookshelf/pull/1824). There's a [migration guide](https://github.com/bookshelf/bookshelf/wiki/Migrating-from-0.13.3-to-0.14.0#new-error-messages-on-bad-or-insufficient-morphto-data) in case you are affected by this.
115- Changed the existing functionality so that saving a model that hasn't changed will not update its `updated_at` attribute: [#1798](https://github.com/bookshelf/bookshelf/pull/1798). Checkout the [migration guide](https://github.com/bookshelf/bookshelf/wiki/Migrating-from-0.13.3-to-0.14.0#saving-a-model-that-hasnt-changed-wont-update-updated_at) in case you are affected by this.
116
117#### Enhancements
118
119- Make collections iterable using `for ... of` loops: [#1830](https://github.com/bookshelf/bookshelf/pull/1830)
120- Add row-level locking options: [#1810](https://github.com/bookshelf/bookshelf/pull/1810)
121
122#### Bug fixes
123
124- Return clones of nested objects in `previousAttributes()`: [#1876](https://github.com/bookshelf/bookshelf/pull/1876)
125- Fix incorrect `rowCount` value when using `groupBy` with `fetchPage()`: [#1852](https://github.com/bookshelf/bookshelf/pull/1852)
126- Fix eager loading of relations when using `parse`/`format`: [#1838](https://github.com/bookshelf/bookshelf/pull/1838)
127- Fix inability to install bookshelf from git commit: [#1835](https://github.com/bookshelf/bookshelf/pull/1835)
128- Fix `timestamp()` setting a key named `"null"` in some cases: [#1820](https://github.com/bookshelf/bookshelf/pull/1820)
129- Fix performance of including relationships: [#1800](https://github.com/bookshelf/bookshelf/pull/1800)
130
131#### Test Suite
132
133- Add test to check for adding `withRelated` inside events: [#1853](https://github.com/bookshelf/bookshelf/pull/1853)
134- Add Node.js 10 to the Travis config: [#1829](https://github.com/bookshelf/bookshelf/pull/1829)
135- Fix incorrect output ordering in tests in some cases: [#1825](https://github.com/bookshelf/bookshelf/pull/1825)
136
137#### Documentation
138
139- Change the JSDoc theme to add a Guides section (this was already released): [#1909](https://github.com/bookshelf/bookshelf/pull/1909)
140- Fix `hasOne`'s doc: [#1890](https://github.com/bookshelf/bookshelf/pull/1890)
141- Fix many-to-many tutorial code: [#1888](https://github.com/bookshelf/bookshelf/pull/1888)
142- Add code syntax highlighting for tutorials: [#1850](https://github.com/bookshelf/bookshelf/pull/1850)
143- Fix a few issues with the collection documentation: [#1836](https://github.com/bookshelf/bookshelf/pull/1836)
144- Fix `Model.load()` relations param: [#1834](https://github.com/bookshelf/bookshelf/pull/1834)
145- Fix incorrect docs for collection:fetching event: [#1831](https://github.com/bookshelf/bookshelf/pull/1831)
146- Add note on needing the Pagination plugin to use `fetchPage()`: [#1803](https://github.com/bookshelf/bookshelf/pull/1803)
147- Fix incorrect data types and undocumented Model property: [#1797](https://github.com/bookshelf/bookshelf/pull/1797)
148
149#### Dependencies
150
151- Replace turbocolor with colorette: [#1904](https://github.com/bookshelf/bookshelf/pull/1904)
152- Use prettier to format all `js` and `json` files: [#1883](https://github.com/bookshelf/bookshelf/pull/1883)
153- Replace chalk with turbocolor: [#1878](https://github.com/bookshelf/bookshelf/pull/1878)
154- Update some insecure dependencies: [#1841](https://github.com/bookshelf/bookshelf/pull/1841)
155- Replace Babel with Node 4 compatible JavaScript: [#1835](https://github.com/bookshelf/bookshelf/pull/1835)
156- Update sinon to the latest version: [#1833](https://github.com/bookshelf/bookshelf/pull/1833)
157
158**0.13.3** <small>_Mar 26, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.13.2...0.13.3)
159
160#### Potentially breaking changes
161- Saving a model that hasn't changed will not update its `updated_at` attribute. This was included in a patch release because the chances of any applications depending on this behavior are very small: [#1798](https://github.com/bookshelf/bookshelf/pull/1798)
162
163#### Bug fixes
164- Clean up automatic timestamps feature: [#1798](https://github.com/bookshelf/bookshelf/pull/1798)
165
166#### Documentation
167- Expand documentation of the automatic timestamps feature: [#1798](https://github.com/bookshelf/bookshelf/pull/1798)
168
169**0.13.2** <small>_Mar 23, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.13.0...0.13.2)
170
171#### Bug fixes
172- Fix timestamps set with Invalid Date in some cases: [#1796](https://github.com/bookshelf/bookshelf/pull/1796)
173
174#### Documentation
175- Fix incorrect data types and undocumented Model#defaults property: [#1797](https://github.com/bookshelf/bookshelf/pull/1797)
176
177**0.13.0** <small>_Mar 18, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.12.1...0.13.0)
178
179#### Breaking changes
180
181- Make `require: true` the default when deleting models: [#1779](https://github.com/bookshelf/bookshelf/pull/1779)
182- Remove the second argument to the model's destroyed event handler: [#1777](https://github.com/bookshelf/bookshelf/pull/1777)
183- Events are now triggered sequentially even when the handlers execute asynchronous code: [#1768](https://github.com/bookshelf/bookshelf/pull/1768)
184- Drop support for Node versions older than 4: [#1696](https://github.com/bookshelf/bookshelf/pull/1696)
185- Reorder `saving` and `creating` events to reflect the documentation: [#1142](https://github.com/bookshelf/bookshelf/pull/1142)
186
187#### Enhancements
188
189- Only request `returning` attribute if client supports `returning`: [#1770](https://github.com/bookshelf/bookshelf/pull/1770)
190- Throw error if user doesn't pass a valid Knex instance on initialize: [#1756](https://github.com/bookshelf/bookshelf/pull/1756)
191- Add parameterized virtual properties to virtuals plugin: [#1755](https://github.com/bookshelf/bookshelf/pull/1755)
192- Add individual attribute processor plugin to core: [#1741](https://github.com/bookshelf/bookshelf/pull/1741)
193- Format `idAttribute` on save and delete: [#1680](https://github.com/bookshelf/bookshelf/pull/1680)
194- Add `withSchema` option to all database operations: [#1638](https://github.com/bookshelf/bookshelf/pull/1638)
195- Add a case converter plugin to core: [#1093](https://github.com/bookshelf/bookshelf/pull/1093)
196
197#### Bug fixes
198- Fix inconsistent timestamp values between save and fetch: [#1784](https://github.com/bookshelf/bookshelf/pull/1784)
199- Set `model.id` if attributes being `.set()` contain a parsed version of `idAttribute`: [#1760](https://github.com/bookshelf/bookshelf/pull/1760)
200- Fix pagination plugin's `fetchPage()` ignoring or hanging with transactions: [#1625](https://github.com/bookshelf/bookshelf/pull/1625)
201- Fix `fetchPage()` from pagination plugin not working for relation collections: [#1561](https://github.com/bookshelf/bookshelf/pull/1561)
202- Don't try to update `idAttribute` if it hasn't changed: [#1260](https://github.com/bookshelf/bookshelf/pull/1260)
203
204#### Test suite
205
206- Increase timeout of the large arrays test: [#1778](https://github.com/bookshelf/bookshelf/pull/1778)
207- Add test to verify that `parentId` is not undefined when using `fetchAll` with relations: [#1769](https://github.com/bookshelf/bookshelf/pull/1769)
208- Fixes and general improvements to the test suite: [#1753](https://github.com/bookshelf/bookshelf/pull/1753)
209- Remove OracleDB tests: [#1744](https://github.com/bookshelf/bookshelf/pull/1744)
210- Fix invalid test related to dirty attributes: [#1312](https://github.com/bookshelf/bookshelf/pull/1312)
211
212#### Documentation
213- Improve docs about running tests: [#1761](https://github.com/bookshelf/bookshelf/pull/1761)
214- Fix typo on parse-and-format tutorial: [#1748](https://github.com/bookshelf/bookshelf/pull/1748)
215- Add Bookshelf Manager to list of community plugins: [#1747](https://github.com/bookshelf/bookshelf/pull/1747)
216
217#### Dependencies
218
219- Update some dependencies: [#1787](https://github.com/bookshelf/bookshelf/pull/1787), [#1782](https://github.com/bookshelf/bookshelf/pull/1782), [#1780](https://github.com/bookshelf/bookshelf/pull/1780), [#1767](https://github.com/bookshelf/bookshelf/pull/1767) [#1746](https://github.com/bookshelf/bookshelf/pull/1746), [#1730](https://github.com/bookshelf/bookshelf/pull/1730)
220
221**0.12.1** <small>_Jan 8, 2018_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.12.0...0.12.1)
222
223#### Documentation
224- Fix incorrect value of second argument to model event handlers: [#1723](https://github.com/bookshelf/bookshelf/pull/1723)
225- Fix incorrect return value from `.detach()`: [#1720](https://github.com/bookshelf/bookshelf/pull/1720)
226- Fix incorrect return value from `model.has()`: [#1712](https://github.com/bookshelf/bookshelf/pull/1712)
227- Fix `fetching:collection` and `fetched:collection` not being generated or visible on the navigation bar: [#1114](https://github.com/bookshelf/bookshelf/pull/1114)
228- Update contributing document and issue templates: [#1736](https://github.com/bookshelf/bookshelf/pull/1736)
229- Add more information and links to Parse and Format docs: [#1727](https://github.com/bookshelf/bookshelf/pull/1727)
230- Add bookshelf-ez-fetch to Community Plugins: [#1708](https://github.com/bookshelf/bookshelf/pull/1708)
231- Add bookshelf-default-select to Community Plugins: [#1706](https://github.com/bookshelf/bookshelf/pull/1706)
232- Add information and examples about calling `super()` on model's `initialize()`: [#1529](https://github.com/bookshelf/bookshelf/pull/1529)
233- Add npm version badge to readme: [f4dd792](https://github.com/bookshelf/bookshelf/commit/f4dd79267ad8267a7073dd5c9f0661f6591ae96f)
234
235#### Bug fixes
236- Fix inability to attach belongsToMany relation to models fetched with `fetchAll()`: [#1716](https://github.com/bookshelf/bookshelf/pull/1716)
237- Fix foreign key = 0 not fetching related object: [#1639](https://github.com/bookshelf/bookshelf/pull/1639)
238- Fix unparsed `previousAttributes` for related models: [#1457](https://github.com/bookshelf/bookshelf/pull/1457)
239
240#### Dependencies
241- Update some dependencies: [#1734](https://github.com/bookshelf/bookshelf/pull/1734), [#1733](https://github.com/bookshelf/bookshelf/pull/1733), [#1732](https://github.com/bookshelf/bookshelf/pull/1732), [#1728](https://github.com/bookshelf/bookshelf/pull/1728), [#1726](https://github.com/bookshelf/bookshelf/pull/1726)
242
243**0.12.0** <small>_Nov 27, 2017_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.11.1...0.12.0)
244
245- Skip visibility-plugin `hidden` and `visible` attributes [#1699](https://github.com/bookshelf/bookshelf/pull/1699).
246 - Used w/ `<model>.toJSON({ visibility: false })`
247- Updated knex peer dependency version to 0.14.x [#1694](https://github.com/bookshelf/bookshelf/pull/1694).
248- Documentation typo fixes [#1693](https://github.com/bookshelf/bookshelf/pull/1693).
249- Now caching `node_modules` to speed up travis-ci builds [#1695](https://github.com/bookshelf/bookshelf/pull/1695).
250- Use Docker containers for test runs [#1674](https://github.com/bookshelf/bookshelf/pull/1674).
251- Make `postpublish` work regardless of git remote config [#1697](https://github.com/bookshelf/bookshelf/pull/1697).
252
253**0.11.1** <small>_Nov 15, 2017_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.11.0...0.11.1)
254
255- Fixed regression #1691: File missing on `postinstall`
256 - npm `postinstall` script can be run as a part of npm `prepublish` script.
257
258**0.11.0** <small>_Nov 15, 2017_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.10.4...0.11.0)
259
260- Moved `.babelrc` -> `src/.babelrc` [#1470](https://github.com/bookshelf/bookshelf/pull/1470)
261- Timestamp on save now utilizes a date option for timestamp updates on insert and update. [#1592](https://github.com/bookshelf/bookshelf/pull/1592)
262 - Used in options on save like so: ```m.save({item: 'test'}, { date: dateInThePast })```
263- Added `morphValues` for `morphTo` relation. [#1326](https://github.com/bookshelf/bookshelf/pull/1326)
264- Added ability to also set timestamps as model attributes in save.
265- Removed non-production files from packaging / added them to .npmignore [#1679](https://github.com/bookshelf/bookshelf/pull/1679)
266- Development Facing:
267 - Oracle tests only run when oracle is installed.
268 - Refactoring on the registry plugin.
269 - Updated a lot of documents related to repo organization.
270
271**0.10.4** - <small>_Jul 17, 2017_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.10.3...0.10.4)
272
273- Allow knex 0.13.x.
274- Use uuid instead of node-uuid.
275- Test Bookshelf with Node v7.
276- Updated Author info in `package.json`.
277- Remove lodash from build script.
278- Add OracleDB integration tests.
279- Add opportunity to override `visible` and `hidden` behavior for toJSON function.
280- Do not load `belongsTo` if `foreignKey` is `null`.
281- Optimise `timestamp` function: respect updated_at/created_at being part of the query.
282- Fix `fetchPage` on Collection (pagination plugin).
283- Fixing virtuals when `omitNew=true`.
284- Lot's of typo fixes and documentation updates.
285
286**0.10.3** - <small>_Jan 21, 2017_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.10.2...0.10.3)
287
288- Drop Node support for 0.10 and 0.12.
289- Trigger creating event for attached models.
290- Add support for uninstantiated models relations.
291- Add `foreignKeyTarget` to relation methods.
292
293**0.10.2** - <small>_Sept 22, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.10.1...0.10.2)
294
295- Fixes memory leak introduced in 0.10.0 caused by binding `this.listeners` in `triggerThen`.
296- Fixes Bluebird warning when a Promise was internally rejected with a non-error.
297
298**0.10.1** - <small>_Sept 14, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.10.0...0.10.1)
299
300- Allows using knex 0.12 as a peerDependency.
301- knex instance used by bookshelf may be swapped out.
302
303**0.10.0** — <small>_Jun 29, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.5...0.10.0)
304
305#### Breaking Changes
306- Removal/renaming of certain lodash functions from Model and Collection that were removed in lodash 4:
307 - Collection Methods
308 - removed `CollectionBase#collect` => use `CollectionBase#map` instead
309 - removed `CollectionBase#foldl` => use `CollectionBase#reduce` instead
310 - removed `CollectionBase#inject` => use `CollectionBase#reduce` instead
311 - removed `CollectionBase#foldr` => use `CollectionBase#reduceRight` instead
312 - removed `CollectionBase#detect` => use `CollectionBase#find` instead
313 - removed `CollectionBase#select` => use `CollectionBase#filter` instead
314 - removed `CollectionBase#all` => use `CollectionBase#every` instead
315 - removed `CollectionBase#any` => use `CollectionBase#some` instead
316 - removed `CollectionBase#include` => use `CollectionBase#includes` instead
317 - removed `CollectionBase#contains` => use `CollectionBase#includes` instead
318 - removed `CollectionBase#rest` => use `CollectionBase#tail instead`
319 - renamed `CollectionBase#invoke` => `CollectionBase#invokeMap`
320 - split `CollectionBase#max` into `CollectionBase#maxBy` - see the [lodash docs](https://lodash.com/docs/#max) for more explanation
321 - split `CollectionBase#min` into `CollectionBase#minBy` - see the [lodash docs](https://lodash.com/docs/#min) for more explanation
322 - Model Methods
323 - renamed `ModelBase#pairs` => `ModelBase#toPairs`
324
325#### Other changes
326- Update to Lodash 4. #1287
327- Registry plugin: Better support for custom relations. #1294
328
329**0.9.5** — <small>_May 15, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.4...0.9.5)
330
331- Add pagination plugin. #1183
332- Fire {@link Model#event:fetched} on eagerly loaded relations. #1206
333- Correct cloning of {@link Model#belongsToMany} decorated relations. #1222
334- Update Knex to 0.11.x. #1227
335- Update minimum lodash version. #1230
336
337**0.9.4** — <small>_April 3, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.3...0.9.4)
338
339- Include `babel-runtime` as a dependency. #1188
340
341**0.9.3** — <small>_April 3, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.2...0.9.3)
342
343- Bugfix: Restore support for `camelCase` and `colon:separated` event names. #1184
344
345**0.9.2** — <small>_February 17, 2016_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.1...0.9.2)
346
347- Permit up to Knex 0.11.0 via `peerDependencies`.
348- `Model.forge` works for ES6 classes. #924
349- Fix `Collection#count` for `hasMany` relations. #1115
350
351**0.9.1** — <small>_November 4, 2015_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.9.0...0.9.1)
352
353- {@link Events#off} can now unregister multiple methods at once. #983
354- Permit Knex 0.10.0 via `peerDependencies`. #998
355
356**0.9.0** — <small>_November 1, 2015_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.8.2...0.9.0)
357
358- Repo no longer includes built source or generated documentation. Release script updated to include these only in the tagged release commit. #950.
359- {@link Model#previous} returned `undefined` instead of `null` for non-existent attributes.
360- Update tests and documentation to confirm that `null` (rather than `undefined`) is returned from {@link Model#fetch} and {@link Collection#fetchOne}.
361- Fix error in virtuals plugin - #936
362- Correct error updating parsed/formatted {@link Model#idAttribute} after successful `insert` operation. #955
363- Many documentation fixes.
364
365**0.8.2** — <small>_August 20, 2015_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.8.1...0.8.2)
366
367- ES6/7: Move code base to `/src` — code is now compiled into `/lib` via [Babel](https://babeljs.io/).
368- Add `collection.count`, `model.count` and `Model.count`.
369- Add `model.refresh`. #796
370- Prevent `fetch` and `refresh` from trying to add JSON attributes to a `where` clause. #550 #778
371- Virtuals plugin now supports `{patch: true}` argument to `model.save`. #542
372- Restored `model.clone` and `collection.clone`, which were not previously working. #744
373- Allow `bookshelf.Collection` to be modified and extended by plugins (so that relations and `fetchAll` operations will return the extended instance). #681 #688
374- Fix `model.timestamps` behavior which deviated from documentation. Also ensure that `createdAt` is set when `{method: "insert"}` is passed explicitly. #787
375- Calling `create` on a `through` relationship no longer tries to make a pivot object. Previously this would attempt to create an object with invalid foreign keys. #768
376- Parse foreign keys set during `create` in a relation. #770
377
378**0.8.1** — <small>_May 12, 2015_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.8.0...0.8.1)
379
380- Fix for regression in `initialize` not being called in Collection constructor, #737.
381- Fix for regression, removing `omitPivot` in 0.8 #721
382- Added `serialize`, a method which contains toJSON logic for easier customization.
383
384**0.8.0** — <small>_May 1, 2015_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.9...0.8.0)
385
386- Dropped Backbone dependency.
387- More specific errors throughout, #522
388- Support `{require: true}` for model.destroy #617
389- Add lifecycle events on pivot models for `belongsToMany`, `.through` #578
390- Allows for select/column calls in the query builder closure, #633.
391- Added per-constructor error classes #694 (note: this will not work in CoffeeScript).
392
393#### Breaking Changes
394
395- Removed the `__super__` internal property on the constructor, this shouldn't have been something you were relying on anyway.
396
397**0.7.9** — <small>_Oct 28, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.8...0.7.9)
398
399- Fix for regression in columns / eager fetch query constraints, (#510).
400
401**0.7.8** — <small>_Oct 28, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.7...0.7.8)
402
403- Timestamp `created_at` is now saved with any insert.
404- Fix for regression created by #429.
405- New events, `attaching`, `attached`, `detaching`, `detached` #452.
406- Ability to specify custom column names in morphTo, #454
407- Fix for stack overflow with model list as arguments, #482
408- Modified location of eager fetch query constraints internally.
409
410**0.7.7** — <small>_July 23, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.6...0.7.7)
411
412- Fix for formatting on polymorphic keys, (#429).
413- Added a resolve method for specifying a custom resolver function for the registry plugin.
414
415**0.7.6** — <small>_June 29, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.5...0.7.6)
416
417- Add `omitPivot` flag on toJSON options for omitting the `_pivot_` keys in `through` and `belongsToMany` relations (#404).
418
419**0.7.5** — <small>_June 23, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.4...0.7.5)
420
421- Fix missing `NotFoundError` & `EmptyError` on Model & Collection, respectively (#389, #399).
422
423**0.7.4** — <small>_June 18, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.3...0.7.4)
424
425- Added `bookshelf.model(name, protoProps, [staticProps])` syntax for registry plugin.
426
427**0.7.3** — <small>_June 17, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.2...0.7.3)
428
429- Fix for collection dropping models early in set, #376.
430
431**0.7.2** — <small>_June 12, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.1...0.7.2)
432
433- Pass a cloned copy of the model's attributes to `format` rather than the original, related to #315.
434
435**0.7.1** — <small>_June 10, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.7.0...0.7.1)
436
437- Ensure the knex version >= 0.6.10, where a major regression affecting column names was fixed.
438
439**0.7.0** — <small>_June 9, 2014_</small>
440
441- Added {@link Model#fetchAll}, for fetching a collection of models from a model.
442- Added {@link Model#where}, as a shortcut for the most commonly used {@linkplain Model#query query method}.
443- Initializing via a plain options object is deprecated, you must now pass in an initialized knex instance.
444- Adding typed errors (#221).
445- Upgrade to support knex 0.6.x
446
447**0.6.12** — <small>_June 5, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.11...0.6.12)
448
449- Fix for eager loaded `belongsTo` relation bug with custom parse/format (#377).
450
451**0.6.11** — <small>_June 4, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.10...0.6.11)
452
453- Temporarily add knex to `peerDependencies` until 0.7 is released to support knex 0.6 and there exists a better internal method of doing a semver check.
454- Fix for `belongsTo` relation bug (#353).
455
456**0.6.10** — <small>_April 3, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.9...0.6.10)
457
458- Bumping dependencies, including upgrading to Bluebird 1.2, trigger-then 0.3, fixing an erroneous "unhandledRejection" (#310).
459- `fetchOne` properly resets the query on the collection, (#300).
460
461**0.6.9** — <small>_April 3, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.8...0.6.9)
462
463- Only prefix model fields with the "tableName" after format has been called, (#308).
464
465**0.6.8** — <small>_March 6, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.7...0.6.8)
466
467- Virtuals plugin may now accept a hash of attributes to set.
468- Properly fix issue addressed in 0.6.7.
469
470**0.6.7** — <small>_March 2, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.6...0.6.7)
471
472- Bugfix for edge case for eager loaded relations and `relatedData` settings.
473
474**0.6.6** — <small>_March 1, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.5...0.6.6)
475
476- Bugfix for registry plugin, resolving correct models for "through" relations. (#260)
477
478**0.6.5** — <small>_February 28, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.4...0.6.5)
479
480- Added {@link Collection#reduceThen} as a passthrough to Bluebird's "reduce" method with models.
481- Options are now passed to "plugin" method. (#254)
482- Bugfix for registry plugin. (#259)
483
484**0.6.4** — <small>_February 11, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.3...0.6.4)
485
486- Adds static method {@link Model.collection Model.collection()} as a shortcut for creating a collection with the current model.
487
488**0.6.3** — <small>_February 9, 2014_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.2...0.6.3)
489
490- Added an` Relation#updatePivot` method for updating tables on a "belongsToMany" relation. (#134, #230)
491- Allow mutating the options for passing constraints to eager loaded relations. (#151)
492- All keys of an object passed into sync are properly prefixed before sync. (#177)
493- Clearer error messages for debugging. (#204, #197)
494- Fixed error message for updates that don't affect rows. (#228)
495- Group by the correct key on "belongsTo.through" relations. (#214)
496- Ability to only use `created_at` or `updated_at` as timestamp properties. (#158)
497- Numerous documentation corrections, clarifications, enhancements.
498- Bumped Bluebird dependency to ~1.0.0.
499
500**Plugins:**
501
502- Added the `registry` plugin for registering models as strings, helping with the circular dependency problem.
503- Added the `virtuals` plugin for getting/setting virtual (computed) properties on the model.
504- Added the `visibility` plugin for specifying a whitelist/blacklist of keys when a model is serialized with toJSON.
505
506**0.6.2** — <small>_December 18, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.1...0.6.2)
507
508- Debug may now be passed as an option in any sync method, to log queries, including relations.
509- Save now triggers an error in updates with no affected rows. (#119)
510- The `model.id` attribute is only set on insert if it's empty. (#130)
511- Ensure eager loaded relations can use attach/detach. (#120)
512
513**0.6.1** — <small>_November 26, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.6.0...0.6.1)
514
515- Fixes bug with promise code and saving event firing, where promises are not properly resolved with ".all" during saving events.
516
517**0.6.0** — <small>_November 25, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.8...0.6.0)
518
519- Updating dependency to knex.js 0.5.x.
520- Switched from when.js to [bluebird](https://github.com/petkaantonov/bluebird) for promise implementation, with shim for backward compatibility.
521- Switched from underscore to lodash, for semver reliability.
522
523**0.5.8** — <small>_November 24, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.7...0.5.8)
524
525- Parse models after all relations have been eager loaded, for appropriate column name matching (thanks [@benesch](https://github.com/benesch)) (#97)
526- Specify table for `withRelated` fetches to prevent column naming conflicts (#96).
527- Fix for polymorphic relation loading (#95).
528- Other documentation tweaks and other internal code cleanup.
529
530**0.5.7** — <small>_October 11, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.6...0.5.7)
531
532- The "fetching" event is now fired on eager loaded relation fetches.
533
534**0.5.6** — <small>_October 10, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.5...0.5.6)
535
536- The `options.query` now contains the appropriate `knex` instance during the "fetching" event handler.
537
538**0.5.5** — <small>_October 1, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.4...0.5.5)
539
540- An eager loaded [morphTo](#Model-morphTo) relation may now have child relations nested beneath it that are properly eager loaded, depending on the parent.
541
542**0.5.4** — <small>_October 1, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.3...0.5.4)
543
544- Fix issue where the `relatedData` context was not appropriately maintained for subsequent {@link Collection#create} calls after an eager load (#77).
545- Documentation improvements, encouraging the use of {@link Model#related} rather than calling a relation method directly, to keep association with the parent model's {@link Model#relations relations} hash.
546
547**0.5.3** — <small>_September 26, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.2...0.5.3)
548
549- The `columns` explicitly specified in a fetch are no-longer passed along when eager loading relations, fixes (#70).
550
551**0.5.2** — <small>_September 22, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.1...0.5.2)
552
553- Fixed incorrect eager loading in `belongsTo` relations (#65).
554
555**0.5.1** — <small>_September 21, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.5.0...0.5.1)
556
557- Fixed incorrect eager loading in `hasOne` relations (#63).
558
559**0.5.0** — <small>_September 20, 2013_</small> — [Diff](https://github.com/bookshelf/bookshelf/compare/0.3.1...0.5.0)
560
561#### Major Breaking Changes
562
563- Global state is no longer stored in the library, an instance is returned from `Bookshelf.initialize`, so you will need to call this once and then reference this `Bookshelf` client elsewhere in your application.
564- Lowercasing of `bookshelf.initialize`, `bookshelf.knex`, `bookshelf.transaction`.
565- During the lifecycle events, such as "fetching", "saving", or "destroying", the model no-longer contains the active query builder instance at the time it is saved. If you need to modify the query builder chain inside of an event handler, you may now use `options.query` inside the event handlers.
566
567#### Other changes
568
569- Added `tableName` for all queries, so joins use the correct id (#61).
570- The `attach` & `detach` now remove models from the associated collection, as appropriate (#59).
571- A `withPivot` no longer accepts an object to specify the keys for the returned pivot items, if you wish to specify how these pivot objects are defined on the object, a custom [toJSON](#Model-toJSON) is your best bet.
572- Added {@link Collection#invokeThen} and {@link Collection#mapThen} as convenience helpers for `Promise.all(collection.invoke(method, args*))` and `Promise.all(collection.map(method, iterator, [context]))`, respectively.
573- Added a `Bookshelf.plugin` method, for a standard way to extend Bookshelf instances.
574- A re-written modular architecture, to move the library toward becoming a database agnostic "data mapper" foundation, with the ablitiy to form relations between different data stores and types, not just SQL (although SQL is the primary focus for now). Also, support for AMD, for eventual use outside of Node.js runtime (with webSQL and likewise).
575
576**0.3.1** — <small>_August 29, 2013_</small> - [Diff](https://github.com/bookshelf/bookshelf/compare/0.3.0...0.3.1)
577
578- [Docs](http://htmlpreview.github.com/?https://raw.github.com/bookshelf/bookshelf/0.3.0/index.html)
579- Fixed regression in `belongsToMany` custom column name order.
580
581**0.3.0** — <small>_August 28, 2013_</small>
582
583- Support for a {@link Model#through} clause on various model relations.
584- Creating a model from a related collection maintains the appropriate relation data (#35).
585- Support for a `{patch: true}` flag on save, to only update specific saved attributes.
586- Added a `fetchOne` method, for pulling out a single model from a collection, mostly useful for related collection instances.
587- Updated to Knex "0.2.x" syntax for insert / returning.
588- Ability to specify a `morphValue` on {@link Model#morphOne} or {@link Model#morphMany} relations.
589- Internal refactor of relations for more consistent behavior.
590
591**0.2.8** — <small>_August 26, 2013_</small>
592
593- Some minor fixes to make the `Sync` methods more consistent in their behavior when called directly, (#53).
594
595**0.2.7** — <small>_August 21, 2013_</small>
596
597- Timestamp for `created_at` is not set during an "update" query, and the update where clause does not include the `idAttribute` if it isn't present (#51).
598
599**0.2.6** — <small>_August 21, 2013_</small>
600
601- Fixes bug with query function feature added in `0.2.5`, mentioned in (#51).
602
603**0.2.5** — <small>_August 19, 2013_</small>
604
605- The {@link Model#query} method may now accept a function, for even more dynamic query building (#45).
606- Fix for relations not allowing `0` as a valid foreign key value (#49).
607
608**0.2.4** — <small>_July 30, 2013_</small>
609
610- More consistent query resetting, fixing query issues on post-query event handlers.
611- The `toJSON` is only called on a related model if the method exists, allowing for objects or arrays to be manually specified on the `relations` hash and serialized properly on the parent's `toJSON`.
612
613**0.2.3** — <small>_July 7, 2013_</small>
614
615- Fixing bug where `triggerThen` wasn't actually being used for several of the events as noted in 0.2.1 release.
616
617**0.2.2** — <small>_July 2, 2013_</small>
618
619- The Model's `related` method is now a no-op if the model doesn't have the related method.
620- Any `withPivot` columns on many-to-many relations are now prefixed with `_pivot` rather than `pivot` unless named otherwise, for consistency.
621- The `_reset` is not called until after all triggered events so that `hasChanged` can be used on the current model state in the "created", "updated", "saved", and "destroyed" events.
622- Eager queries may be specified as an object with a function, to constrain the eager queries:
623
624
625 user.fetch({withRelated: ['accounts', {
626 'accounts.settings': function(qb) { qb.where('status', 'enabled'); }
627 }, 'other_data']}).then(...
628
629**0.2.1** — <small>_June 26, 2013_</small>
630
631- Using `triggerThen` instead of `trigger` for "created", "updated", "saved", "destroyed", and "fetched" events - if any async operations are needed _after_ the model is created but before resolving the original promise.
632
633**0.2.0** — <small>_June 24, 2013_</small>
634
635- Resolve Model's `fetch` promise with `null` rather than `undefined`.
636- An object of `query` constraints (e.g. `{where: {...}, orWhere: {...}}`may be passed to the query method (#30).
637- Fix for empty eager relation responses not providing an empty model or collection instance on the `model.relations` object.
638
639**0.1.9** — <small>_June 19, 2013_</small>
640
641- Resolve Model's `fetch` promise with `undefined` if no model was returned.
642- An array of "created at" and "updated at" values may be used for `hasTimestamps`.
643- Format is called on the `Model#fetch` method.
644- Added an `exec` plugin to provide a node callback style interface for any of the promise methods.
645
646**0.1.8** — <small>_June 18, 2013_</small>
647
648- Added support for polymorphic associations, with `morphOne`, `morphMany`, and `morphTo` model methods.
649
650**0.1.7** — <small>_June 15, 2013_</small>
651
652- Bugfix where `detach` may be used with no parameters to detach all related items (#19).
653
654**0.1.6** — <small>_June 15, 2013_</small>
655
656- Fixing bug allowing custom `idAttribute` values to be used in eager loaded many-to-many relations (#18).
657
658**0.1.5** — <small>_June 11, 2013_</small>
659
660- Ensuring each of the `_previousAttribute` and `changed` values are properly reset on related models after sync actions.
661
662**0.1.4** — <small>_June 10, 2013_</small>
663
664- Fixing issue with `idAttribute` not being assigned after database inserts.
665- Removing various aliases {@link Events} methods for clarity.
666
667**0.1.3** — <small>_June 10, 2013_</small>
668
669- Added {@link Model#hasChanged}, {@link Model#previous}, and {@link Model#previousAttributes} methods, for getting the previous value of the model since the last sync.
670- Using `Object.create(null)` for various internal model objects dealing with user values.
671- Calling {@link Model#related} on a model will now create an empty related object if one is not present on the `relations` object.
672- Removed the `{patch: true}` option on save, instead only applying defaults if the object `isNew`, or if `{defaults: true}` is passed.
673- Fix for `model.clone`'s relation responses.
674
675**0.1.2** — <small>_May 17, 2013_</small>
676
677- Added `triggerThen` and `emitThen` for promise based events, used internally in the "creating", "updating", "saving", and "destroying" events.
678- Docs updates, fixing `{patch: true}` on `update` to have intended functionality.
679- A model's `toJSON` is now correctly called on any related properties.
680
681**0.1.1** — <small>_May 16, 2013_</small>
682
683- Fixed bug with eager loaded `belongsTo` relations (#14).
684
685**0.1.0** — <small>_May 13, 2013_</small>
686
687- Initial Bookshelf release.
688
\No newline at end of file