UNPKG

90.1 kBMarkdownView Raw
1# Lux Changelog
2
3### v1.1.4 (Jan 19, 2017)
4
5##### Commits
6
7* [[`d1c5e8d00e`](https://github.com/postlight/lux/commit/d1c5e8d00e)] - **fix**: cli and compilation errors (#649) (Zachary Golba)
8* [[`06d9fc7f65`](https://github.com/postlight/lux/commit/06d9fc7f65)] - **fix**: make sure result is an instance of query in resource enhancer (#648) (Nick Schot)
9* [[`4f4bd16c12`](https://github.com/postlight/lux/commit/4f4bd16c12)] - **deps**: update nyc to version 10.1.2 (#646) (Greenkeeper)
10* [[`d6c9ab49fc`](https://github.com/postlight/lux/commit/d6c9ab49fc)] - **release**: v1.1.3 🔧 (#644) (Zachary Golba)
11
12### v1.1.3 (Jan 17, 2017)
13
14##### Upgrading
15
16Due to a change in the way the cli modules are bundled, you may need to uninstall
17and reinstall lux globally before upgrading your application.
18
19```bash
20npm uninstall -g lux-framework
21npm cache clean
22npm install -g lux-framework@latest
23```
24
25##### Commits
26
27* [[`89dff6162c`](https://github.com/postlight/lux/commit/89dff6162c)] - **fix**: we should check for lux under the dependency key in package.json not root (#643) (Zachary Golba)
28* [[`b7c66cb41f`](https://github.com/postlight/lux/commit/b7c66cb41f)] - **fix**: make sure dates are correctly validated & parsed (#639) (Nick Schot)
29* [[`00273c8279`](https://github.com/postlight/lux/commit/00273c8279)] - **deps**: update ora to version 1.0.0 (#641) (Greenkeeper)
30* [[`fe2b860abd`](https://github.com/postlight/lux/commit/fe2b860abd)] - **deps**: update source-map-support to version 0.4.10 (#642) (Greenkeeper)
31* [[`f41fc048b9`](https://github.com/postlight/lux/commit/f41fc048b9)] - **deps**: integrate rollup-plugin-lux (#632) (Zachary Golba)
32* [[`e4ed011b0a`](https://github.com/postlight/lux/commit/e4ed011b0a)] - **deps**: update eslint-plugin-flowtype to version 2.30.0 (#636) (Greenkeeper)
33* [[`df95938f3f`](https://github.com/postlight/lux/commit/df95938f3f)] - **deps**: update source-map-support to version 0.4.9 (#634) (Greenkeeper)
34* [[`ebbcf577bd`](https://github.com/postlight/lux/commit/ebbcf577bd)] - **fix**: migration generator indexes (#625) (Nick Schot)
35* [[`93aa5c47bd`](https://github.com/postlight/lux/commit/93aa5c47bd)] - **fix**: make pages consistent when using sort on non-unique attributes (#633) (Nick Schot)
36* [[`d1589ab8f3`](https://github.com/postlight/lux/commit/d1589ab8f3)] - **test**: allow appveyor builds to fail with pg driver (#635) (Zachary Golba)
37* [[`682d6fef56`](https://github.com/postlight/lux/commit/682d6fef56)] - **chore**: improve ci config and process (#627) (Zachary Golba)
38* [[`d0795c36fa`](https://github.com/postlight/lux/commit/d0795c36fa)] - **deps**: update rollup to version 0.41.4 (#630) (Greenkeeper)
39* [[`20d6f0dbe7`](https://github.com/postlight/lux/commit/20d6f0dbe7)] - **deps**: update ansi-regex to version 2.1.1 (#629) (Greenkeeper)
40* [[`016938c401`](https://github.com/postlight/lux/commit/016938c401)] - **deps**: update rollup to version 0.41.3 (#628) (Greenkeeper)
41* [[`e7d069ffe7`](https://github.com/postlight/lux/commit/e7d069ffe7)] - **deps**: update rollup to version 0.41.1 (#616) (Greenkeeper)
42* [[`1626cd882c`](https://github.com/postlight/lux/commit/1626cd882c)] - **deps**: update ora to version 0.4.1 (#623) (Greenkeeper)
43* [[`60b33a6a33`](https://github.com/postlight/lux/commit/60b33a6a33)] - **deps**: update eslint to version 3.13.1 (#622) (Greenkeeper)
44* [[`b050cfaf03`](https://github.com/postlight/lux/commit/b050cfaf03)] - **deps**: update eslint-config-airbnb-base to version 11.0.1 (#619) (Greenkeeper)
45* [[`5a879d467e`](https://github.com/postlight/lux/commit/5a879d467e)] - **deps**: update eslint to version 3.13.0 (#615) (Greenkeeper)
46* [[`fbbf198e2b`](https://github.com/postlight/lux/commit/fbbf198e2b)] - **deps**: update babel-plugin-istanbul to version 3.1.2 (#611) (Greenkeeper)
47* [[`4c5e326afa`](https://github.com/postlight/lux/commit/4c5e326afa)] - **release**: v1.1.2 🔧 (#609) (Zachary Golba)
48
49### v1.1.2 (Jan 3, 2017)
50
51:tada: Happy New Year!
52
53##### Commits
54
55* [[`f828e8effa`](https://github.com/postlight/lux/commit/f828e8effa)] - **fix**: database is undefined when using the postgresql driver (#605) (Zachary Golba)
56* [[`46ed68b35a`](https://github.com/postlight/lux/commit/46ed68b35a)] - **deps**: update third party type definitions (#604) (Zachary Golba)
57* [[`914a4b831d`](https://github.com/postlight/lux/commit/914a4b831d)] - **deps**: update sinon to version 1.17.7 (#602) (Greenkeeper)
58* [[`d3ffda9156`](https://github.com/postlight/lux/commit/d3ffda9156)] - **deps**: update eslint-plugin-flowtype to version 2.29.2 (#595) (Greenkeeper)
59* [[`f5b002e3dd`](https://github.com/postlight/lux/commit/f5b002e3dd)] - **release**: v1.1.1 🔧 (#594) (Zachary Golba)
60
61### v1.1.1 (Dec 28, 2016)
62
63##### Commits
64
65* [[`c54cc20844`](https://github.com/postlight/lux/commit/c54cc20844)] - **fix**: options request does not work with query params (#573) (Zachary Golba)
66* [[`93df71f3c9`](https://github.com/postlight/lux/commit/93df71f3c9)] - **deps**: update babel-plugin-istanbul to version 3.0.0 (#591) (Greenkeeper)
67* [[`0f724109fa`](https://github.com/postlight/lux/commit/0f724109fa)] - **deps**: update source-map-support to version 0.4.8 🚀 (#590) (Greenkeeper)
68* [[`fdb7a9e7fc`](https://github.com/postlight/lux/commit/fdb7a9e7fc)] - **deps**: update flow-bin to version 0.37.4 🚀 (#587) (Greenkeeper)
69* [[`302a10fd61`](https://github.com/postlight/lux/commit/302a10fd61)] - **docs**: remove irrelevant doc comments from query class (#578) (Zachary Golba)
70* [[`ccb645c0f0`](https://github.com/postlight/lux/commit/ccb645c0f0)] - **refactor**: lint binary and scripts (#576) (Zachary Golba)
71* [[`20c381fd75`](https://github.com/postlight/lux/commit/20c381fd75)] - **deps**: update test-app dependencies (#577) (Zachary Golba)
72* [[`4fad8cbdf5`](https://github.com/postlight/lux/commit/4fad8cbdf5)] - **deps**: update babel-preset-lux to version 2.0.1 (#570) (Zachary Golba)
73* [[`ac08ca4fea`](https://github.com/postlight/lux/commit/ac08ca4fea)] - **deps**: update ora to version 0.4.0 (#575) (Greenkeeper)
74* [[`557e2c2805`](https://github.com/postlight/lux/commit/557e2c2805)] - **deps**: update babel-core to version 6.21.0 (#567) (Greenkeeper)
75* [[`c94b2597df`](https://github.com/postlight/lux/commit/c94b2597df)] - **deps**: update remark-lint to version 5.4.0 (#572) (Greenkeeper)
76* [[`8ab08b3bba`](https://github.com/postlight/lux/commit/8ab08b3bba)] - **deps**: update eslint to version 3.12.1 (#564) (Greenkeeper)
77* [[`a139b81b8e`](https://github.com/postlight/lux/commit/a139b81b8e)] - **deps**: update eslint-config-airbnb-base to version 11.0.0 🚀 (#560) (Greenkeeper)
78* [[`821a2c49af`](https://github.com/postlight/lux/commit/821a2c49af)] - **deps**: update rollup to version 0.37.0 (#561) (Greenkeeper)
79* [[`7eab2633d0`](https://github.com/postlight/lux/commit/7eab2633d0)] - **deps**: update flow-bin to version 0.37.0 🚀 (#563) (Greenkeeper)
80* [[`ae4c4df189`](https://github.com/postlight/lux/commit/ae4c4df189)] - **deps**: update rollup-plugin-babel to version 2.7.1 (#565) (Greenkeeper)
81* [[`f94ac5234c`](https://github.com/postlight/lux/commit/f94ac5234c)] - **docs**: add more api docs and improve existing content (#559) (Zachary Golba)
82
83### 1.1.0 (Dec 10, 2016)
84
85##### Features
86
87###### Transactions
88
89This release introduces a public transaction api to the model class. Changes are
90backwards compatible with the previous model api.
91
92Internally, all methods that modify the state of the database are wrapped in
93transactions. If the transaction fails, all calls to `create`, `save`, or
94`update` will be rolled back to the state before the transaction began.
95
96**Example:**
97
98```javascript
99import User from 'app/models/user';
100
101// This internally uses a transaction.
102await User.create({
103 firstName: 'New',
104 lastName: 'User'
105});
106```
107
108### Working With Transactions
109
110You have the ability to manually specify the transaction that will be used for a
111`create`, `update`, or `save` call with the static and instance method, `transacting`.
112
113**Example:**
114
115```javascript
116import { Model } from 'lux-framework';
117
118import Profile from 'app/models/profile';
119
120class User extends Model {
121 static hasOne = {
122 profile: {
123 inverse: 'user'
124 }
125 };
126
127 static hooks = {
128 async beforeCreate(user, trx) {
129 // If the transaction fails the profile instance will not be persisted.
130 user.profile = await Profile
131 .transacting(trx)
132 .create();
133 }
134 };
135}
136```
137
138You can also manually trigger create a transaction if you plan on creating many
139model instances as once.
140
141**Example:**
142
143```javascript
144import User from 'app/models/user';
145
146User.transaction(trx => (
147 Promise.all([
148 User
149 .transacting(trx)
150 .create({
151 firstName: 'New',
152 lastName: 'User'
153 }),
154 User
155 .transacting(trx)
156 .create({
157 firstName: 'New',
158 lastName: 'User'
159 }),
160 User
161 .transacting(trx)
162 .create({
163 firstName: 'New',
164 lastName: 'User'
165 })
166 ])
167));
168```
169
170##### Commits
171
172* [[`3f15362600`](https://github.com/postlight/lux/commit/3f15362600)] - **deps**: update babel-core to version 6.20.0 (#556) (Greenkeeper)
173* [[`9a20c5ce11`](https://github.com/postlight/lux/commit/9a20c5ce11)] - **deps**: update eslint to version 3.12.0 (#557) (Greenkeeper)
174* [[`7f53cd230c`](https://github.com/postlight/lux/commit/7f53cd230c)] - **docs**: fix broken logo in readme (#555) (Zachary Golba)
175* [[`590956ed52`](https://github.com/postlight/lux/commit/590956ed52)] - **docs**: add preliminary guide files (#554) (Zachary Golba)
176* [[`16d224b4e7`](https://github.com/postlight/lux/commit/16d224b4e7)] - **feat**: use transactions when writing to the database (#527) (Zachary Golba)
177* [[`9e89b042cd`](https://github.com/postlight/lux/commit/9e89b042cd)] - **deps**: update eslint-plugin-flowtype to version 2.29.1 (#549) (Greenkeeper)
178* [[`5b3e91e5f9`](https://github.com/postlight/lux/commit/5b3e91e5f9)] - **deps**: update eslint to version 3.11.1 (#547) (Greenkeeper)
179* [[`4eb0c9b926`](https://github.com/postlight/lux/commit/4eb0c9b926)] - **deps**: update eslint-plugin-flowtype to version 2.28.2 (#546) (Greenkeeper)
180* [[`42f1707ac8`](https://github.com/postlight/lux/commit/42f1707ac8)] - **deps**: update eslint to version 3.11.0 🚀 (#539) (Greenkeeper)
181* [[`39adf76c3a`](https://github.com/postlight/lux/commit/39adf76c3a)] - **deps**: update rollup to version 0.36.4 (#536) (Greenkeeper)
182* [[`23189f535b`](https://github.com/postlight/lux/commit/23189f535b)] - **deps**: update flow-bin to version 0.36.0 🚀 (#537) (Greenkeeper)
183* [[`394d3132e7`](https://github.com/postlight/lux/commit/394d3132e7)] - **deps**: update nyc to version 10.0.0 (#535) (Greenkeeper)
184* [[`ef33526860`](https://github.com/postlight/lux/commit/ef33526860)] - **deps**: update mocha to version 3.2.0 (#538) (Greenkeeper)
185* [[`760ae5f68c`](https://github.com/postlight/lux/commit/760ae5f68c)] - **release**: 1.0.5 🔧 (#534) (Zachary Golba)
186
187### 1.0.5 (Nov 20, 2016)
188
189##### Commits
190
191* [[`45c18600c4`](https://github.com/postlight/lux/commit/45c18600c4)] - **deps**: update babel-eslint to version 7.1.1 (#533) (Greenkeeper)
192* [[`0720dda77f`](https://github.com/postlight/lux/commit/0720dda77f)] - **deps**: update eslint to version 3.10.2 (#532) (Greenkeeper)
193* [[`dbdcc5a2de`](https://github.com/postlight/lux/commit/dbdcc5a2de)] - **fix**: query parameters are not added to custom routes (#528) (Nick Schot)
194* [[`4530d0ce8d`](https://github.com/postlight/lux/commit/4530d0ce8d)] - **deps**: update nyc to version 9.0.1 (#530) (Greenkeeper)
195* [[`8d36091058`](https://github.com/postlight/lux/commit/8d36091058)] - **deps**: update eslint to version 3.10.1 (#529) (Greenkeeper)
196* [[`c586f350f6`](https://github.com/postlight/lux/commit/c586f350f6)] - **docs**: use master branch for appveyor badge (#526) (Zachary Golba)
197* [[`e93b45ca4b`](https://github.com/postlight/lux/commit/e93b45ca4b)] - **deps**: update test-app dependencies (#525) (Zachary Golba)
198* [[`0bbb7af65c`](https://github.com/postlight/lux/commit/0bbb7af65c)] - **release**: 1.0.4 🔧 (#524) (Zachary Golba)
199
200### 1.0.4 (Nov 12, 2016)
201
202##### Commits
203
204* [[`7d2ff0d316`](https://github.com/postlight/lux/commit/7d2ff0d316)] - **fix**: ids in json payloads should be cast to number (#523) (Zachary Golba)
205* [[`8cca55e756`](https://github.com/postlight/lux/commit/8cca55e756)] - **fix**: empty 1:1 relationships are not returned in correct format (#521) (Zachary Golba)
206* [[`6919517b37`](https://github.com/postlight/lux/commit/6919517b37)] - **test**: prevent ci builds from failing due to time constraints (#520) (Zachary Golba)
207* [[`090f871f18`](https://github.com/postlight/lux/commit/090f871f18)] - **fix**: passing value null in post to type number throws type error (#516) (Zachary Golba)
208* [[`6cd3e68b6e`](https://github.com/postlight/lux/commit/6cd3e68b6e)] - **deps**: update flow-bin to version 0.35.0 🚀 (#517) (Greenkeeper)
209* [[`cd4f63fe4a`](https://github.com/postlight/lux/commit/cd4f63fe4a)] - **deps**: update eslint to version 3.10.0 (#518) (Greenkeeper)
210* [[`b97d093c9a`](https://github.com/postlight/lux/commit/b97d093c9a)] - **fix**: default values override all falsy attribute values (#515) (Zachary Golba)
211* [[`6f4e17078c`](https://github.com/postlight/lux/commit/6f4e17078c)] - **dx**: use flow-typed instead of custom type declarations when possible (#514) (Zachary Golba)
212* [[`44b88250a2`](https://github.com/postlight/lux/commit/44b88250a2)] - **docs**: use shields.io for project status badges in readme (#513) (Zachary Golba)
213* [[`2e9c3353b1`](https://github.com/postlight/lux/commit/2e9c3353b1)] - **release**: 1.0.3 🔧 (#512) (Zachary Golba)
214
215### 1.0.3 (Nov 10, 2016)
216
217##### Commits
218
219* [[`53378f622b`](https://github.com/postlight/lux/commit/53378f622b)] - **fix**: dynamic segments are not parsed on model-less resources (#510) (Zachary Golba)
220* [[`56321bb7df`](https://github.com/postlight/lux/commit/56321bb7df)] - **fix**: small typos in model initialize-class.js (#505) (Nick Schot)
221* [[`7769865731`](https://github.com/postlight/lux/commit/7769865731)] - **chore**: use codecov bash uploader (#511) (Zachary Golba)
222* [[`edb4635b8c`](https://github.com/postlight/lux/commit/edb4635b8c)] - **fix**: some strings in request body cast to another type (#506) (Zachary Golba)
223* [[`dea08354ab`](https://github.com/postlight/lux/commit/dea08354ab)] - **deps**: update eslint-config-airbnb-base to version 10.0.1 🚀 (#503) (Greenkeeper)
224* [[`b7435570fc`](https://github.com/postlight/lux/commit/b7435570fc)] - **deps**: update eslint-plugin-import to version 2.2.0 (#504) (Greenkeeper)
225* [[`18ba638610`](https://github.com/postlight/lux/commit/18ba638610)] - **deps**: update babel-plugin-transform-es2015-modules-commonjs to version 6.18.0 (#500) (Zachary Golba)
226* [[`59a16f19ca`](https://github.com/postlight/lux/commit/59a16f19ca)] - **deps**: update eslint to version 3.9.1 (#501) (Zachary Golba)
227* [[`e12eb406d2`](https://github.com/postlight/lux/commit/e12eb406d2)] - **deps**: update eslint-plugin-import to version 2.1.0 (#498) (Greenkeeper)
228* [[`7b1c48b4aa`](https://github.com/postlight/lux/commit/7b1c48b4aa)] - **deps**: update eslint to version 3.9.0 🚀 (#489) (Greenkeeper)
229* [[`61c37cc4de`](https://github.com/postlight/lux/commit/61c37cc4de)] - **deps**: update source-map-support to version 0.4.6 (#492) (Greenkeeper)
230* [[`055bf5f5fe`](https://github.com/postlight/lux/commit/055bf5f5fe)] - **deps**: update babel-core to version 6.18.2 (#496) (Greenkeeper)
231* [[`63db399c8c`](https://github.com/postlight/lux/commit/63db399c8c)] - **deps**: update nyc to version 8.4.0 (#497) (Greenkeeper)
232* [[`26ba4e5a21`](https://github.com/postlight/lux/commit/26ba4e5a21)] - **deps**: update remark-lint to version 5.2.0 (#494) (Greenkeeper)
233* [[`46f223b77f`](https://github.com/postlight/lux/commit/46f223b77f)] - **deps**: update flow-bin to version 0.34.0 (#490) (Greenkeeper)
234* [[`71214e17ff`](https://github.com/postlight/lux/commit/71214e17ff)] - **deps**: update remark-cli to version 2.1.0 (#488) (Greenkeeper)
235* [[`748b26b577`](https://github.com/postlight/lux/commit/748b26b577)] - **deps**: update babel-eslint to version 7.1.0 (#487) (Greenkeeper)
236* [[`d98139e08c`](https://github.com/postlight/lux/commit/d98139e08c)] - **deps**: update eslint-plugin-flowtype to version 2.25.0 (#486) (Greenkeeper)
237* [[`40bea0b2d1`](https://github.com/postlight/lux/commit/40bea0b2d1)] - **deps**: update eslint-plugin-flowtype to version 2.24.0 (#485) (Greenkeeper)
238* [[`edaec79e12`](https://github.com/postlight/lux/commit/edaec79e12)] - **deps**: update babel-core to version 6.18.0 (#483) (Greenkeeper)
239* [[`ce25efdad7`](https://github.com/postlight/lux/commit/ce25efdad7)] - **deps**: update eslint-plugin-flowtype to version 2.23.1 (#484) (Greenkeeper)
240* [[`be7fef2034`](https://github.com/postlight/lux/commit/be7fef2034)] - **deps**: update eslint-plugin-flowtype to version 2.22.0 (#481) (Greenkeeper)
241* [[`3e578257f9`](https://github.com/postlight/lux/commit/3e578257f9)] - **release**: 1.0.2 🔧 (#480) (Zachary Golba)
242
243### 1.0.2 (Oct 24, 2016)
244
245##### Commits
246
247* [[`bbf68000ea`](https://github.com/postlight/lux/commit/bbf68000ea)] - **fix**: controllers are not properly resolving for resources with custom paths (#478) (Zachary Golba)
248* [[`1a52cc1cec`](https://github.com/postlight/lux/commit/1a52cc1cec)] - **deps**: update eslint-plugin-flowtype to version 2.21.0 (#479) (Greenkeeper)
249* [[`fe35b45935`](https://github.com/postlight/lux/commit/fe35b45935)] - **release**: 1.0.1 🔧 (#477) (Zachary Golba)
250
251### 1.0.1 (Oct 20, 2016)
252
253##### Commits
254
255* [[`f27eab4e66`](https://github.com/postlight/lux/commit/f27eab4e66)] - **fix**: readdir error is causing cli commands to fail (#476) (Zachary Golba)
256* [[`2deea84ab9`](https://github.com/postlight/lux/commit/2deea84ab9)] - **release**: 1.0.0 🎉 (#472) (Zachary Golba)
257
258### 1.0.0 (Oct 20, 2016)
259
260##### Commits
261
262* [[`34d9478323`](https://github.com/postlight/lux/commit/34d9478323)] - **deps**: update test-app dependencies (#475) (Zachary Golba)
263* [[`71dc913fb8`](https://github.com/postlight/lux/commit/71dc913fb8)] - **chore**: add markdown linter (#474) (Zachary Golba)
264* [[`0f1aa9fe69`](https://github.com/postlight/lux/commit/0f1aa9fe69)] - **deps**: update nyc to version 8.3.2 (#473) (Greenkeeper)
265* [[`0ca4477935`](https://github.com/postlight/lux/commit/0ca4477935)] - **docs**: fix link to guides in readme (#471) (Chris Watts)
266* [[`ea471aad7f`](https://github.com/postlight/lux/commit/ea471aad7f)] - **fix**: eslint config in compiler inherits from lux .eslintrc.json (#469) (Zachary Golba)
267* [[`2c74a0cc9c`](https://github.com/postlight/lux/commit/2c74a0cc9c)] - **docs**: add logo to readme (#470) (Zachary Golba)
268* [[`6656b9aca5`](https://github.com/postlight/lux/commit/6656b9aca5)] - **docs**: finalize public api docs for 1.0 release (#418) (Zachary Golba)
269* [[`7af75be54f`](https://github.com/postlight/lux/commit/7af75be54f)] - **deps**: update source-map-support to version 0.4.5 (#468) (Greenkeeper)
270* [[`362b196db3`](https://github.com/postlight/lux/commit/362b196db3)] - **deps**: update eslint to version 3.8.1 (#467) (Greenkeeper)
271* [[`d8833a9968`](https://github.com/postlight/lux/commit/d8833a9968)] - **deps**: update eslint-config-airbnb-base to version 9.0.0 🚀 (#464) (Greenkeeper)
272* [[`e0cde3bc20`](https://github.com/postlight/lux/commit/e0cde3bc20)] - **deps**: update babel-plugin-istanbul to version 2.0.3 (#465) (Greenkeeper)
273* [[`0b9b017a26`](https://github.com/postlight/lux/commit/0b9b017a26)] - **test**: improve logger test coverage (#452) (Zachary Golba)
274* [[`a343f87273`](https://github.com/postlight/lux/commit/a343f87273)] - **refactor**: ensure tableName is statically evaluated (#462) (Zachary Golba)
275* [[`fd60ff7b77`](https://github.com/postlight/lux/commit/fd60ff7b77)] - **deps**: update source-map-support to version 0.4.4 (#463) (Greenkeeper)
276* [[`b86a4cbe3d`](https://github.com/postlight/lux/commit/b86a4cbe3d)] - **deps**: update test-app dependencies (#461) (Zachary Golba)
277* [[`54db513fa3`](https://github.com/postlight/lux/commit/54db513fa3)] - **feat**: expose controller and action in public request api (#460) (Zachary Golba)
278* [[`e289ffc142`](https://github.com/postlight/lux/commit/e289ffc142)] - **feat**: add after-action middleware hook to controller (#459) (Zachary Golba)
279* [[`b74b52ff75`](https://github.com/postlight/lux/commit/b74b52ff75)] - **deps**: update mocha to version 3.1.2 (#458) (Zachary Golba)
280* [[`c14625a38c`](https://github.com/postlight/lux/commit/c14625a38c)] - **deps**: update eslint to version 3.8.0 🚀 (#457) (Greenkeeper)
281* [[`0a6c953345`](https://github.com/postlight/lux/commit/0a6c953345)] - **fix**: namespaced resources without root controllers/serializers is not… (#454) (Zachary Golba)
282* [[`a2bee41294`](https://github.com/postlight/lux/commit/a2bee41294)] - **fix**: compiler does not properly format class names for nested namespaces (#449) (Zachary Golba)
283* [[`adc723040c`](https://github.com/postlight/lux/commit/adc723040c)] - **deps**: update eslint-plugin-import to version 2.0.1 (#451) (Greenkeeper)
284* [[`c8995a2f75`](https://github.com/postlight/lux/commit/c8995a2f75)] - **test**: add unit tests for route definitions (#443) (Zachary Golba)
285* [[`ec18b7ac96`](https://github.com/postlight/lux/commit/ec18b7ac96)] - **deps**: update mocha to version 3.1.1 (#448) (Greenkeeper)
286* [[`f6a868bd77`](https://github.com/postlight/lux/commit/f6a868bd77)] - **deps**: update rollup to version 0.36.3 (#447) (Greenkeeper)
287* [[`3dfc2907e2`](https://github.com/postlight/lux/commit/3dfc2907e2)] - **fix**: remove unused plugins in lib/babel-hook (#444) (Zachary Golba)
288* [[`e7316c0df3`](https://github.com/postlight/lux/commit/e7316c0df3)] - **fix**: use path.sep to resolve root tmp dirs in fs tests (#442) (Zachary Golba)
289* [[`345e8c6b73`](https://github.com/postlight/lux/commit/345e8c6b73)] - **test**: add unit tests for controller utils (#441) (Zachary Golba)
290* [[`a4d9952984`](https://github.com/postlight/lux/commit/a4d9952984)] - **refactor**: make watcher a child of the fs package (#412) (Zachary Golba)
291* [[`20480fa1c9`](https://github.com/postlight/lux/commit/20480fa1c9)] - **deps**: update test-app dependencies (#440) (Zachary Golba)
292* [[`b3445ce5a4`](https://github.com/postlight/lux/commit/b3445ce5a4)] - **deps**: update nyc to version 8.3.1 (#439) (Greenkeeper)
293* [[`1bfd98e77a`](https://github.com/postlight/lux/commit/1bfd98e77a)] - **test**: run flow on appveyor builds (#432) (Zachary Golba)
294* [[`9e2f84bd2d`](https://github.com/postlight/lux/commit/9e2f84bd2d)] - **refactor**: use airbnb eslint rules (#434) (Zachary Golba)
295* [[`57101cfaf1`](https://github.com/postlight/lux/commit/57101cfaf1)] - **deps**: update eslint-plugin-flowtype to version 2.20.0 (#438) (Greenkeeper)
296* [[`bf213b49b8`](https://github.com/postlight/lux/commit/bf213b49b8)] - **deps**: update eslint to version 3.7.1 (#437) (Zachary Golba)
297* [[`84b7bd0d14`](https://github.com/postlight/lux/commit/84b7bd0d14)] - **deps**: update babel-preset-lux to version 1.3.0 (#436) (Greenkeeper)
298* [[`eaeb9eb983`](https://github.com/postlight/lux/commit/eaeb9eb983)] - **test**: enable parallel circleci builds (#435) (Zachary Golba)
299* [[`c8f05ee180`](https://github.com/postlight/lux/commit/c8f05ee180)] - **deps**: update babel-core to version 6.17.0 (#433) (Greenkeeper)
300* [[`856aeae646`](https://github.com/postlight/lux/commit/856aeae646)] - **test**: switch to circleci (#431) (Zachary Golba)
301* [[`0a49d14f1e`](https://github.com/postlight/lux/commit/0a49d14f1e)] - **deps**: update source-map-support to version 0.4.3 (#428) (Greenkeeper)
302* [[`339c35c864`](https://github.com/postlight/lux/commit/339c35c864)] - **deps**: update babel-core to version 6.16.0 (#427) (Zachary Golba)
303* [[`c3483ac1dc`](https://github.com/postlight/lux/commit/c3483ac1dc)] - chore(package): update babel-core to version 6.16.0 (greenkeeperio-bot)
304* [[`17780a1c6c`](https://github.com/postlight/lux/commit/17780a1c6c)] - **deps**: update babel-plugin-transform-es2015-modules-commonjs to version 6.16.0 (#430) (Greenkeeper)
305* [[`fd7bbe2f90`](https://github.com/postlight/lux/commit/fd7bbe2f90)] - **deps**: update flow-bin to version 0.33.0 🚀 (#429) (Greenkeeper)
306* [[`d3c67a51c8`](https://github.com/postlight/lux/commit/d3c67a51c8)] - **deps**: update rollup to version 0.36.1 (#426) (Greenkeeper)
307* [[`de8c3f16bb`](https://github.com/postlight/lux/commit/de8c3f16bb)] - **chore**: change ecmaVersion to 2017 in .eslintrc.json (#425) (Zachary Golba)
308* [[`32064c964e`](https://github.com/postlight/lux/commit/32064c964e)] - **deps**: update babel-eslint to version 7.0.0 (#424) (Greenkeeper)
309* [[`5fb4a42192`](https://github.com/postlight/lux/commit/5fb4a42192)] - **deps**: update mocha to version 3.1.0 (#423) (Greenkeeper)
310* [[`c7fe135343`](https://github.com/postlight/lux/commit/c7fe135343)] - **deps**: update eslint to version 3.6.1 (#422) (Greenkeeper)
311* [[`0e6ec39138`](https://github.com/postlight/lux/commit/0e6ec39138)] - **refactor**: cleanup unecessary controller props (#420) (Zachary Golba)
312* [[`a12bcad4c9`](https://github.com/postlight/lux/commit/a12bcad4c9)] - **deps**: update node-fetch to version 1.6.3 (#421) (Zachary Golba)
313* [[`85fc7fc82f`](https://github.com/postlight/lux/commit/85fc7fc82f)] - chore(package): update node-fetch to version 1.6.3 (greenkeeperio-bot)
314* [[`28b03d63f7`](https://github.com/postlight/lux/commit/28b03d63f7)] - **docs**: update examples (#419) (Zachary Golba)
315* [[`6b2f86da48`](https://github.com/postlight/lux/commit/6b2f86da48)] - **deps**: update sinon to version 1.17.6 (#416) (Zachary Golba)
316* [[`15c5ca0c0c`](https://github.com/postlight/lux/commit/15c5ca0c0c)] - **deps**: update node-fetch to version 1.6.2 (#415) (Greenkeeper)
317* [[`aa81af568c`](https://github.com/postlight/lux/commit/aa81af568c)] - **deps**: update eslint to version 3.6.0 (#414) (Greenkeeper)
318* [[`f0d660c599`](https://github.com/postlight/lux/commit/f0d660c599)] - **fix**: application keys being overwritten (#411) (Zachary Golba)
319* [[`585584d2f7`](https://github.com/postlight/lux/commit/585584d2f7)] - **test**: improve luxify test coverage (#409) (Zachary Golba)
320* [[`73579fb570`](https://github.com/postlight/lux/commit/73579fb570)] - **test**: add unit tests for route namespaces (#410) (Zachary Golba)
321* [[`29dab32f86`](https://github.com/postlight/lux/commit/29dab32f86)] - **test**: refactor serializer tests to improve coverage (#408) (Zachary Golba)
322* [[`999f64933c`](https://github.com/postlight/lux/commit/999f64933c)] - **deps**: update mysql2 to v1.1.0 in test-app (#413) (Zachary Golba)
323* [[`233d4a716c`](https://github.com/postlight/lux/commit/233d4a716c)] - **test**: add unit tests for relationships module in database package (#407) (Zachary Golba)
324* [[`ade16b5d5e`](https://github.com/postlight/lux/commit/ade16b5d5e)] - **deps**: update eslint-plugin-flowtype to version 2.19.0 (#406) (Greenkeeper)
325* [[`a11ee86f27`](https://github.com/postlight/lux/commit/a11ee86f27)] - **deps**: update rollup to version 0.36.0 (Greenkeeper)
326* [[`4d35d593bf`](https://github.com/postlight/lux/commit/4d35d593bf)] - **test**: improve overall test coverage (#287) (Zachary Golba)
327* [[`cd1e822817`](https://github.com/postlight/lux/commit/cd1e822817)] - **deps**: update eslint-plugin-flowtype to version 2.18.2 (#397) (Greenkeeper)
328* [[`bf5571db8f`](https://github.com/postlight/lux/commit/bf5571db8f)] - **deps**: update test-app dependencies (#395) (Zachary Golba)
329* [[`007fd125ae`](https://github.com/postlight/lux/commit/007fd125ae)] - **deps**: update eslint-plugin-flowtype to version 2.18.1 (#389) (Greenkeeper)
330* [[`b0bb089ae3`](https://github.com/postlight/lux/commit/b0bb089ae3)] - **deps**: update eslint-plugin-flowtype to version 2.17.1 (#387) (Greenkeeper)
331* [[`d1e42c47f4`](https://github.com/postlight/lux/commit/d1e42c47f4)] - **chore**: switch to bcryptjs instead of native bcrypt in social-network example (#383) (Zachary Golba)
332* [[`e4966fd1f7`](https://github.com/postlight/lux/commit/e4966fd1f7)] - **chore**: fix authentication in social-network example (#378) (Zachary Golba)
333* [[`bbbe317a44`](https://github.com/postlight/lux/commit/bbbe317a44)] - **deps**: update eslint to version 3.5.0 (#373) (Greenkeeper)
334* [[`271722efd2`](https://github.com/postlight/lux/commit/271722efd2)] - **deps**: update eslint-plugin-flowtype to version 2.16.1 (#372) (Greenkeeper)
335* [[`7a3b836d51`](https://github.com/postlight/lux/commit/7a3b836d51)] - **deps**: update rollup-plugin-eslint to version 3.0.0 (#370) (Greenkeeper)
336* [[`c823ce4da2`](https://github.com/postlight/lux/commit/c823ce4da2)] - **chore**: use bcrypt in social network example (#371) (Adrien Montfort)
337* [[`bc7eba0e44`](https://github.com/postlight/lux/commit/bc7eba0e44)] - **deps**: update eslint-plugin-flowtype to version 2.16.0 (#369) (Greenkeeper)
338* [[`15e21ec3bf`](https://github.com/postlight/lux/commit/15e21ec3bf)] - **deps**: update rollup-plugin-json to version 2.0.2 (#368) (Greenkeeper)
339* [[`9f1e3ef7db`](https://github.com/postlight/lux/commit/9f1e3ef7db)] - **deps**: update eslint-plugin-flowtype to version 2.15.0 (#367) (Greenkeeper)
340* [[`38081786f6`](https://github.com/postlight/lux/commit/38081786f6)] - **deps**: update eslint-plugin-flowtype to version 2.14.3 (#366) (Greenkeeper)
341* [[`77b623a257`](https://github.com/postlight/lux/commit/77b623a257)] - **release**: 1.0.0-rc.7 (#363) (Zachary Golba)
342
343### 1.0.0-rc.7 (Sept 4, 2016)
344
345This release implements a fix for a regression in `1.0.0-rc.6` where model migrations would include the formatted filename as the table name (i.e `'2016050414243335_create_posts'` instead of `'posts'`).
346
347##### Commits
348
349* [[`7bd0f4d87b`](https://github.com/postlight/lux/commit/7bd0f4d87b)] - **chore**: update example applications (#361) (Zachary Golba)
350* [[`9bcecc5650`](https://github.com/postlight/lux/commit/9bcecc5650)] - **release**: 1.0.0-rc.6 (#360) (Zachary Golba)
351
352### 1.0.0-rc.6 (Sept 4, 2016)
353
354This release contains a number of bug fixes related to overriding default behavior such as custom actions, model-less controllers, etc. In addition to bug fixes this release contains some awesome new features.
355
356##### Upgrading
357
358Route definitions have changed quite a bit with the implementation of router namespaces. In order to upgrade you will have to remove any calls to `this.route` within the `app/routes.js` file.
359
360Previously, `this.route` was a means of defining custom routes or just defining individual routes rather than a whole resource. It did not scale well to multiple namespaces and was kind of a clunky API to begin with.
361
362To define a custom route within a resource you may do the following:
363
364```javascript
365export default function routes() {
366 // Arbitrary Routes (i.e /{route})
367 // GET /health => ApplicationController#health
368 this.get('health');
369
370 this.resource('posts', function () {
371 // Member Routes (i.e /posts/:id/{route})
372 this.member(function () {
373 // GET /posts/1/comments => PostsController#comments()
374 this.get('comments');
375
376 // POST /posts/1/comments => PostsController#createComment()
377 this.post('comments', 'createComment');
378 });
379
380 // Collection Routes (i.e /posts/{route})
381 this.collection(function () {
382 // GET /posts/drafts => PostsController#drafts()
383 this.get('drafts');
384 });
385 });
386}
387```
388
389To only define a subset of routes for a given resource you may now do the following as shortcut:
390
391```javascript
392export default function routes() {
393 // GET /posts => 200 OK
394 // GET /posts/1 => 200 OK
395 // POST /posts => 404 Not Found
396 // PATCH /posts/1 => 404 Not Found
397 // DELETE /posts/1 => 404 Not Found
398 this.resource('posts', {
399 only: ['show', 'index']
400 });
401}
402```
403
404##### Features
405
406###### Router Namespaces
407
408You now have the ability to define namespaces with your routes. Common uses cases for defining a namespace within your routes include admin-only routes, requiring payment from a user, api versioning, etc.
409
410**Generators**
411
412To generate a resource within a namespace, include the namespace as part of the name argument passed to the `generate` command.
413
414*Example:*
415
416```bash
417lux generate resource admin/posts
418```
419
420The command above will result in the following files being created:
421
422* `app/controllers/admin/posts`
423* `app/serializers/admin/posts`
424
425If you do not already have an `ApplicationController` or `ApplicationSerializer` for a namespace, they will automatically be generated.
426
427Also, the `generate` command will omit namespaces when generating a `Model` or `Migration`. If you generate a resource in a namespace that already has a `Model`, you will be given the choice to either overwrite or skip the `Model` or `Migration` files.
428
429**Controllers**
430
431You can think of a namespace as if it is it's own Lux application that you are mounting into it's parent namespace. Similar to how a `Controller` works in previous versions, a `Controller` within a namespace will merge it's middleware with the `ApplicationController` for the namespace it is a part of. If the `Controller` is the `ApplicationController` for a namespace, it will merge it's middleware with the `ApplicationController` of parent namespace if possible.
432
433*Example:*
434
435```javascript
436/*********************
437 * Namespace: 'Root' *
438 * Path: '/' *
439 *********************/
440
441import { Controller } from 'lux-framework';
442
443class ApplicationController extends Controller {
444 beforeAction = [
445 async function sayHello({ logger }) {
446 logger.info('Hello world!');
447 }
448 ];
449}
450
451class PostsController extends Controller {
452 index() {
453 return Post.isPublic();
454 }
455}
456```
457
458A `GET` request to `/posts` will result in the following functions (in this order) handling the request:
459
460* `sayHello`
461* `PostsController#index`
462
463The `PostsController#index` action only gives us the posts that are publicly available. This is what we want, but we should have a way for user's with admin access to be able to see what has not been published yet. To accomplish this we will use a namespace.
464
465```javascript
466/**********************
467 * Namespace: 'admin' *
468 * Path: '/admin' *
469 **********************/
470
471import { Controller } from 'lux-framework';
472
473class AdminApplicationController extends Controller {
474 beforeAction = [
475 async function authenticate() {
476 // Authenticate request...
477 }
478 ];
479}
480
481class AdminPostsController extends Controller {
482 index() {
483 return Post.all();
484 }
485}
486```
487
488A `GET` request to `/admin/posts` will result in the following functions (in this order) handling the request:
489
490* `sayHello`
491* `authenticate`
492* `AdminPostsController#index`
493
494As you can see in the example above, namespaces allow you to isolate middleware functions in a `beforeAction` array to only execute at certain paths of your application. This is done behind the scenes with Lux and does not require you to use inheritance between your controllers. Inheritance is 100% opt-in so feel free to start from scratch while still gaining the benefit of shared middleware functions.
495
496Sometimes it can be nice to use inheritance if we're only slightly changing the behavior of a `Controller`. Let's look at an example where the `AdminPostsController` extends the `PostsController`.
497
498```javascript
499import PostsController from 'app/controllers/posts';
500
501class AdminPostsController extends PostsController {
502 index(request, response) {
503 return super.index(request, response).unscope('isPublic');
504 }
505}
506```
507
508In the example above we are able to simply remove the `isPublic` scope from the `#index()` action because we are using inheritance. This would be very helpful if we added additional logic to the `#index()` route that would have otherwise had to duplicate across `posts` routes in other namespaces.
509
510Keep in mind, inheritance can be an anti-pattern if it takes you more work to override methods than it would be to start fresh.
511
512**Serializers**
513
514Serializers within a namespace work very similar to a `Controller`. The main difference being that it is not required to have a `Serializer` within each namespace. Serializers will resolve to their closest ancestor. That means that if you have a `PostsSerializer` for a `posts` resource at the root namespace, requests to `/admin/posts` will fall back to use the `PostsSerializer` if a `AdminPostsSerializer` is not found at `app/serializers/admin/posts.js`.
515
516Serializers within a namespace are great for versioning an api. Over time some fields may become deprecated in your responses and using serializers in a namespace is a great way to solve this problem.
517
518*Example:*
519
520```javascript
521/**********************
522 * Namespace: 'v1' *
523 * Path: '/v1' *
524 **********************/
525import { Serializer } from 'lux-framework';
526
527class V1PostsSerializer extends Serializer {
528 attributes = [
529 'body',
530 'title',
531 'deprecated'
532 ];
533
534 hasOne = [
535 'author'
536 ];
537
538 haMany = [
539 'comments'
540 ];
541}
542```
543
544As you can see above we have a `V1PostsSerializer` that has an attribute that we no longer wish to include in responses in the `v2` namespace. We can use a namespaces to help us accomplish this task.
545
546```javascript
547/**********************
548 * Namespace: 'v2' *
549 * Path: '/v2' *
550 **********************/
551
552import V1PostsSerializer from 'app/serializers/v1/posts';
553
554 class V2PostsSerializer extends V1PostsSerializer {
555 attributes = [
556 'body',
557 'title'
558 ];
559 }
560```
561
562🎉 It's that simple. Requests to `/v1/posts` will include the `deprecated` attribute while requests to `/v2/posts` will not.
563
564
565**Defining Namespaces**
566
567To define a namespace in your application, you must specify it in the `app/routes.js` file.
568
569```javascript
570function routes() {
571 this.resource('posts');
572
573 this.namespace('admin', function () {
574 this.resource('posts');
575 });
576}
577```
578
579There is no limit to how many levels you nest namespaces. Lux will flatten the execution of functions nested within namespaces during application boot so feel free to go crazy.
580
581```javascript
582function routes() {
583 this.namespace('a', function () {
584 this.resource('posts');
585
586 this.namespace('b', function () {
587 this.resource('posts');
588
589 this.namespace('c', function () {
590 this.resource('posts');
591
592 this.namespace('d', function () {
593 this.resource('posts');
594 });
595 });
596 });
597 });
598}
599```
600
601###### Persistence Checking
602
603Previously, the only means of checking persistence was by checking if a Model has an dirty attributes. This was unsuitable for determining wether or not a record has been persisted to the database yet.
604
605We have added `Model#isNew` and `Model#persisted` to handle this.
606
607*Example:*
608
609```javascript
610import Post from 'app/models/posts';
611
612let post = await Post.first();
613
614
615/**
616 * Check existing record's persistence...
617 */
618post.isDirty
619// => false
620post.isNew
621// => false
622post.persisted
623// => true
624
625
626/**
627 * Check an existing record's persistence after an attribute has been changed...
628 */
629post.title = 'add ability to check if model has been saved';
630// => 'add ability to check if model has been saved'
631post.isDirty
632// => true
633post.isNew
634// => false
635post.persisted
636// => false
637
638
639await post.save();
640
641/**
642 * Check a recently saved record's persistence...
643 */
644post.isDirty
645// => false
646post.isNew
647// => false
648post.persisted
649// => true
650
651
652post = new Post({
653 title: 'I have yet to be saved.'
654});
655
656/**
657 * Check the persistence of a record that has yet to be saved...
658 */
659post.isDirty
660// => false
661post.isNew
662// => true
663post.persisted
664// => false
665
666
667/**
668 * Check a new record that was created via the #create() method...
669 */
670post = await Post.create({
671 title: 'I have yet to be saved.'
672});
673
674post.isDirty
675// => false
676post.isNew
677// => false
678post.persisted
679// => true
680```
681
682###### Distinct Queries
683
684🎉 You can now do distinct queries on a Model.
685
686```javascript
687import Post from 'app/models/post';
688
689Post.distinct('title' /*, 'body', ...etc */).where({
690 isPublic: true
691});
692
693// SELECT DISTINCT "posts"."title" AS "title" FROM "posts" WHERE "posts"."is_public" = TRUE
694```
695
696##### Commits
697
698* [[`361acd467f`](https://github.com/postlight/lux/commit/361acd467f)] - **deps**: update babel-preset-lux to version 1.2.0 (#359) (Greenkeeper)
699* [[`1adeb907df`](https://github.com/postlight/lux/commit/1adeb907df)] - **feat**: router namespaces (#338) (Zachary Golba)
700* [[`1f9094e5db`](https://github.com/postlight/lux/commit/1f9094e5db)] - **chore**: add appveyor badge to readme (#358) (Zachary Golba)
701* [[`af75c59062`](https://github.com/postlight/lux/commit/af75c59062)] - **chore**: remove unnecessary event emitter decl (#357) (Zachary Golba)
702* [[`ce5568297d`](https://github.com/postlight/lux/commit/ce5568297d)] - **deps**: update flow-bin to version 0.32.0 🚀 (#356) (Greenkeeper)
703* [[`48d1cf8cd9`](https://github.com/postlight/lux/commit/48d1cf8cd9)] - **chore**: improve ci set up (#350) (Zachary Golba)
704* [[`58a4c6ed04`](https://github.com/postlight/lux/commit/58a4c6ed04)] - **deps**: update rollup to version 0.34.13 (#355) (Greenkeeper)
705* [[`603c45a5ec`](https://github.com/postlight/lux/commit/603c45a5ec)] - **deps**: update rollup to version 0.34.11 (#353) (Greenkeeper)
706* [[`0e05e3d9b9`](https://github.com/postlight/lux/commit/0e05e3d9b9)] - **fix**: lux console fails when running on an npm linked version of the master branch (#349) (Zachary Golba)
707* [[`5d492f5cea`](https://github.com/postlight/lux/commit/5d492f5cea)] - **feat**: add #distinct() query method (#346) (Zachary Golba)
708* [[`d9e00625e6`](https://github.com/postlight/lux/commit/d9e00625e6)] - **feat**: add ability to check if model has been saved (#347) (Zachary Golba)
709* [[`6474d516b5`](https://github.com/postlight/lux/commit/6474d516b5)] - **deps**: update eslint to version 3.4.0 (#345) (Greenkeeper)
710* [[`482bfe272a`](https://github.com/postlight/lux/commit/482bfe272a)] - **deps**: update eslint-plugin-flowtype to version 2.11.4 (#344) (Greenkeeper)
711* [[`0e66aa5405`](https://github.com/postlight/lux/commit/0e66aa5405)] - **deps**: update flow-bin to version 0.31.1 🚀 (#341) (Greenkeeper)
712* [[`6e88a55c08`](https://github.com/postlight/lux/commit/6e88a55c08)] - **deps**: update babel-plugin-transform-es2015-modules-commonjs to version 6.14.0 (#343) (Greenkeeper)
713* [[`15b648aa77`](https://github.com/postlight/lux/commit/15b648aa77)] - **deps**: update babel-core to version 6.14.0 (#342) (Greenkeeper)
714* [[`d33e6e67c3`](https://github.com/postlight/lux/commit/d33e6e67c3)] - **deps**: update eslint-plugin-flowtype to version 2.11.1 (#339) (Greenkeeper)
715* [[`56e329f968`](https://github.com/postlight/lux/commit/56e329f968)] - **docs**: small readme typos/rephrasings (#330) (Kevin Barrett)
716* [[`bace2de2bd`](https://github.com/postlight/lux/commit/bace2de2bd)] - **fix**: errors occuring during application boot fail silently (#316) (Zachary Golba)
717* [[`b8c5815045`](https://github.com/postlight/lux/commit/b8c5815045)] - **deps**: update rollup to version 0.34.10 (#328) (Greenkeeper)
718* [[`20f18a3459`](https://github.com/postlight/lux/commit/20f18a3459)] - **Feat**: Ignoring build/dist folder (#327) (Adam Pash)
719* [[`98dcfe05ce`](https://github.com/postlight/lux/commit/98dcfe05ce)] - **deps**: update eslint-plugin-flowtype to version 2.7.1 (#326) (Greenkeeper)
720* [[`d28529ffc6`](https://github.com/postlight/lux/commit/d28529ffc6)] - **deps**: update rollup to version 0.34.9 (#324) (Greenkeeper)
721* [[`86ea773e88`](https://github.com/postlight/lux/commit/86ea773e88)] - **deps**: update eslint to version 3.3.1 (#323) (Greenkeeper)
722* [[`6501ad00a0`](https://github.com/postlight/lux/commit/6501ad00a0)] - **Fix**: Environment variables overwritten by lux CLI (#322) (Adam Pash)
723* [[`9868b3d54d`](https://github.com/postlight/lux/commit/9868b3d54d)] - **Feat**: Added ssl for database; fixed port (#319) (Adam Pash)
724* [[`55cc30ae2b`](https://github.com/postlight/lux/commit/55cc30ae2b)] - **Feat**: Added minimum node version to package.json template (#321) (Adam Pash)
725* [[`612b9ced7a`](https://github.com/postlight/lux/commit/612b9ced7a)] - **deps**: update eslint-plugin-flowtype to version 2.7.0 (#318) (Greenkeeper)
726* [[`039dda77f2`](https://github.com/postlight/lux/commit/039dda77f2)] - **deps**: update rollup to version 0.34.8 (#317) (Greenkeeper)
727* [[`2b2829fbca`](https://github.com/postlight/lux/commit/2b2829fbca)] - **fix**: model-less controllers prevent applications from starting (#315) (Zachary Golba)
728* [[`2c90cfa994`](https://github.com/postlight/lux/commit/2c90cfa994)] - **deps**: update test-app dependencies (#314) (Zachary Golba)
729* [[`e9df74a9ef`](https://github.com/postlight/lux/commit/e9df74a9ef)] - **chore**: update examples (#313) (Zachary Golba)
730* [[`d1fbddc7b0`](https://github.com/postlight/lux/commit/d1fbddc7b0)] - **release**: 1.0.0-rc.5 (#312) (Zachary Golba)
731
732
733### 1.0.0-rc.5 (Aug 13, 2016)
734
735This release contains a number of bug fixes as well as some new features. Big shout out to [@adampash](https://github.com/adampash), a new member of the Postlight team. :clap: Awesome job these past 2 weeks!
736
737##### Features
738
739###### Aliased Imports
740
741Previously, you would have to use relative paths for importing modules within the `app` directory. Now, `app` is alias so you can import modules from the `app` directory without having to write out the relative path (`../../../`).
742
743```javascript
744import { Controller } from 'lux-framework';
745
746import Post from 'app/models/post';
747
748class PostsController extends Controller {
749 show({ params: { id } }) {
750 return Post.find(id);
751 }
752}
753
754export default PostsController;
755```
756
757###### CORS Config Options
758
759You now have the ability to setup CORS headers in your config file. These headers are added to the request before it is parsed. Doing so, prevents request that fail before reaching your `ApplicationController` from not having the CORS headers set. This should allow for a more graceful error handling experience on the client.
760
761Here is an example of how you may want to configure CORS for your application:
762
763```javascript
764export default {
765 server: {
766 cors: {
767 origin: '*',
768 enabled: true,
769
770 headers: [
771 'Accept',
772 'Content-Type'
773 ],
774
775 methods: [
776 'GET',
777 'POST',
778 'PATCH',
779 'DELETE',
780 'HEAD',
781 'OPTIONS'
782 ]
783 }
784 },
785
786 logging: {
787 level: 'DEBUG',
788 format: 'text',
789 enabled: true,
790
791 filter: {
792 params: [
793 'email',
794 'password'
795 ]
796 }
797 }
798};
799```
800
801###### Database Connection Strings
802
803You may now use connection strings to configure your database connection. You may now specify a full config object as we have supported in previous versions, a config object containing `driver` and `url` properties, or a config object containing only the `driver` property if your environment variables contain a `DATABASE_URL`.
804
805The following three examples are equivalent:
806
807*Example A:*
808
809```javascript
810// ./config/database.js
811export default {
812 development: {
813 port: 5432,
814 host: '127.0.0.1',
815 driver: 'pg',
816 username: 'postgres',
817 password: '********',
818 database: 'lux_test'
819 }
820}
821```
822
823*Example B:*
824
825```javascript
826// ./config/database.js
827export default {
828 development: {
829 driver: 'pg',
830 url: 'postgres://postgres:********@127.0.0.1:5432/lux_test'
831 }
832}
833```
834
835*Example C:*
836
837```bash
838# ~/.bash_profile
839export DATABASE_URL='postgres://postgres:********@127.0.0.1:5432/lux_test'
840```
841
842```javascript
843// ./config/database.js
844export default {
845 development: {
846 driver: 'pg'
847 }
848}
849```
850
851###### Default Config
852
853In prior versions, it could be a pain to upgrade due to differing config files based on when you first generated your Lux application. Now, you can have an easier time upgrading as default values for config options are used internally.
854
855##### Commits
856
857* [[`30e3e2e6b9`](https://github.com/postlight/lux/commit/30e3e2e6b9)] - **fix**: id null check fails if using postgres (#308) (Adam Pash)
858* [[`d01c27eae5`](https://github.com/postlight/lux/commit/d01c27eae5)] - **feat**: adding support for urls in database config (#307) (Adam Pash)
859* [[`bf6a518239`](https://github.com/postlight/lux/commit/bf6a518239)] - **deps**: update eslint to version 3.3.0 (#310) (Greenkeeper)
860* [[`fb22a31c8a`](https://github.com/postlight/lux/commit/fb22a31c8a)] - **deps**: update eslint-plugin-flowtype to version 2.6.4 (#305) (Greenkeeper)
861* [[`8b416b748b`](https://github.com/postlight/lux/commit/8b416b748b)] - **deps**: update eslint-plugin-flowtype to version 2.6.3 (#303) (Greenkeeper)
862* [[`fd1d01ec1b`](https://github.com/postlight/lux/commit/fd1d01ec1b)] - **feat**: added CORS to config (#302) (Adam Pash)
863* [[`a04c0fdda9`](https://github.com/postlight/lux/commit/a04c0fdda9)] - **fix**: camel cased relationships do not resolve correctly (#300) (Zachary Golba)
864* [[`c90377052f`](https://github.com/postlight/lux/commit/c90377052f)] - **deps**: update eslint-plugin-flowtype to version 2.6.1 (#301) (Greenkeeper)
865* [[`386cd24270`](https://github.com/postlight/lux/commit/386cd24270)] - **feat**: setting default configuration (#299) (Adam Pash)
866* [[`99b48107d0`](https://github.com/postlight/lux/commit/99b48107d0)] - **deps**: update eslint-plugin-flowtype to version 2.4.1 (#296) (Greenkeeper)
867* [[`d11aafc5f8`](https://github.com/postlight/lux/commit/d11aafc5f8)] - **fix**: pad function is failing due to negative values (#295) (Zachary Golba)
868* [[`164daec01a`](https://github.com/postlight/lux/commit/164daec01a)] - **fix**: lining up stats in debug logger when ms length differs (#292) (Adam Pash)
869* [[`e33f742d0e`](https://github.com/postlight/lux/commit/e33f742d0e)] - **feat**: aliased app dir for easier imports (#293) (Adam Pash)
870* [[`14a9cea1f6`](https://github.com/postlight/lux/commit/14a9cea1f6)] - **feat**: added default fallback for CLI (#271) (Adam Pash)
871* [[`4ff3f81218`](https://github.com/postlight/lux/commit/4ff3f81218)] - **deps**: update mocha to version 3.0.2 (#291) (Greenkeeper)
872* [[`9e658e9daa`](https://github.com/postlight/lux/commit/9e658e9daa)] - **chore**: enable flow on windows (#286) (Zachary Golba)
873* [[`cceb67995d`](https://github.com/postlight/lux/commit/cceb67995d)] - **release**: 1.0.0-rc.4 (#285) (Zachary Golba)
874
875### 1.0.0-rc.4 (Aug 7, 2016)
876
877This release contains a fix for a number of bugs introduced in `1.0.0-rc.3`. In addition to bug fixes this release introduces a couple new features.
878
879##### Features
880
881###### Generating Utilities
882
883You can now generate utility functions via the command line!
884
885```bash
886$ lux generate util do-something
887create app/utils/do-something.js
888```
889
890```javascript
891// app/utils/do-something.js
892
893export default function doSomething() {
894
895}
896```
897
898###### Generating Middleware
899
900You can now generate middleware functions via the command line!
901
902```bash
903$ lux generate middleware do-something
904create app/middleware/do-something.js
905```
906
907```javascript
908// app/middleware/do-something.js
909
910export default function doSomething(/*request, response*/) {
911
912}
913```
914
915##### Upgrading
916
917Make sure the following directories exist:
918
919* `app/middleware`
920* `app/utils`
921
922Also, `1.0.0-rc.3` introduced some changes to config files so make sure that the files in your `config/environments` directory match the following format:
923
924```javascript
925// config/environments/development.js
926
927export default {
928 logging: {
929 level: 'DEBUG',
930 format: 'text',
931 enabled: true,
932
933 filter: {
934 params: []
935 }
936 }
937};
938```
939
940```javascript
941// config/environments/test.js
942
943export default {
944 logging: {
945 level: 'WARN',
946 format: 'text',
947 enabled: false,
948
949 filter: {
950 params: []
951 }
952 }
953};
954```
955
956```javascript
957// config/environments/production.js
958
959export default {
960 logging: {
961 level: 'INFO',
962 format: 'json',
963 enabled: true,
964
965 filter: {
966 params: []
967 }
968 }
969};
970```
971
972
973##### Commits
974
975* [[`62431679b2`](https://github.com/postlight/lux/commit/62431679b2)] - **deps**: update rollup to version 0.34.7 (#284) (Greenkeeper)
976* [[`0c12e8b754`](https://github.com/postlight/lux/commit/0c12e8b754)] - **fix**: indentation is off when using model generators (#281) (Zachary Golba)
977* [[`4d89474fce`](https://github.com/postlight/lux/commit/4d89474fce)] - **refactor**: remove bluebird in favor of native apis (#279) (Zachary Golba)
978* [[`241ae8993d`](https://github.com/postlight/lux/commit/241ae8993d)] - **refactor**: improve third party type declarations (#276) (Zachary Golba)
979* [[`5de7a0d6c3`](https://github.com/postlight/lux/commit/5de7a0d6c3)] - **fix**: empty n:m relationships loads every record instead of an empty array (#277) (Zachary Golba)
980* [[`48d2fb7377`](https://github.com/postlight/lux/commit/48d2fb7377)] - **deps**: update rollup to version 0.34.5 (#275) (Greenkeeper)
981* [[`6ea44c3aef`](https://github.com/postlight/lux/commit/6ea44c3aef)] - **deps**: update babel-core to version 6.13.2 (#273) (Greenkeeper)
982* [[`329309d9ec`](https://github.com/postlight/lux/commit/329309d9ec)] - **fix**: empty 'fields' params cause all keys of a resource to be exposed (#270) (Zachary Golba)
983* [[`a412aa7493`](https://github.com/postlight/lux/commit/a412aa7493)] - **deps**: update test-app dependencies (#268) (Zachary Golba)
984* [[`35f301c1d8`](https://github.com/postlight/lux/commit/35f301c1d8)] - **deps**: update babel-core to version 6.13.1 (#267) (Greenkeeper)
985* [[`d0f4f2bfd3`](https://github.com/postlight/lux/commit/d0f4f2bfd3)] - **Feat**: Added generator for utils (#262) (Adam Pash)
986* [[`2ead12a73a`](https://github.com/postlight/lux/commit/2ead12a73a)] - **deps**: update mocha to version 3.0.1 (#265) (Greenkeeper)
987* [[`94abf145d1`](https://github.com/postlight/lux/commit/94abf145d1)] - **Feat**: Added generator for middleware (#261) (Adam Pash)
988* [[`d9d008111c`](https://github.com/postlight/lux/commit/d9d008111c)] - **release**: 1.0.0-rc.3 (#264) (Zachary Golba)
989
990### 1.0.0-rc.3 (Aug 3, 2016)
991
992Shout out to @adampash for fixing a bug that prevents newly created Lux apps from successfully being built! 👏
993
994##### Notable Changes
995
996* Newly created Lux projects no longer fail to build due to invalid config files.
997
998##### Commits
999
1000* [[`6b598748d0`](https://github.com/postlight/lux/commit/6b598748d0)] - **Fix**: Quoting quotes inside config template (#260) (Adam Pash)
1001* [[`74416748e4`](https://github.com/postlight/lux/commit/74416748e4)] - **release**: 1.0.0-rc.2 (#253) (Zachary Golba)
1002
1003### 1.0.0-rc.2 (Aug 2, 2016)
1004
1005##### Notable Changes
1006
1007* Invalid parameters and malformed request bodies no longer fail silently.
1008* Controller's now accept relationships for `create` and `update` actions.
1009
1010##### Commits
1011
1012* [[`1172d562c5`](https://github.com/postlight/lux/commit/1172d562c5)] - **fix**: do not allow public route definitions to set private params (#252) (Zachary Golba)
1013* [[`278ab5dda3`](https://github.com/postlight/lux/commit/278ab5dda3)] - **fix**: allow show action to be chained (#251) (Zachary Golba)
1014* [[`4777e1a22e`](https://github.com/postlight/lux/commit/4777e1a22e)] - **chore**: update example apps (#250) (Zachary Golba)
1015* [[`5f55d63b57`](https://github.com/postlight/lux/commit/5f55d63b57)] - **deps**: update eslint to version 3.2.2 (#248) (Greenkeeper)
1016* [[`831a61c7a1`](https://github.com/postlight/lux/commit/831a61c7a1)] - **deps**: update rollup to version 0.34.3 (#249) (Greenkeeper)
1017* [[`e49e7df0e6`](https://github.com/postlight/lux/commit/e49e7df0e6)] - **deps**: update all dependencies (#247) (Zachary Golba)
1018* [[`f41007d873`](https://github.com/postlight/lux/commit/f41007d873)] - **deps**: update eslint to version 3.2.1 (#245) (Greenkeeper)
1019* [[`62ee4be098`](https://github.com/postlight/lux/commit/62ee4be098)] - **deps**: update rollup-plugin-multi-entry to version 2.0.1 (#246) (Greenkeeper)
1020* [[`32aa4484d0`](https://github.com/postlight/lux/commit/32aa4484d0)] - **deps**: update rollup to version 0.34.2 (#244) (Greenkeeper)
1021* [[`82fb3ce32e`](https://github.com/postlight/lux/commit/82fb3ce32e)] - **deps**: update mocha to version 3.0.0 (#243) (Greenkeeper)
1022* [[`e4de52d116`](https://github.com/postlight/lux/commit/e4de52d116)] - **refactor**: add better relationship support and refactor type systems (#229) (Zachary Golba)
1023* [[`e5e4c7afde`](https://github.com/postlight/lux/commit/e5e4c7afde)] - **deps**: update rollup-plugin-node-resolve to version 2.0.0 (#242) (Greenkeeper)
1024* [[`edefdb50be`](https://github.com/postlight/lux/commit/edefdb50be)] - **deps**: update rollup-plugin-node-resolve to version 1.7.3 (#241) (Greenkeeper)
1025* [[`2d35a05c43`](https://github.com/postlight/lux/commit/2d35a05c43)] - **deps**: update ora to version 0.3.0 (#239) (Greenkeeper)
1026* [[`6787f15135`](https://github.com/postlight/lux/commit/6787f15135)] - **deps**: update eslint to version 3.2.0 (#237) (Greenkeeper)
1027* [[`aab024dc10`](https://github.com/postlight/lux/commit/aab024dc10)] - **deps**: update flow-bin to version 0.30.0 (#238) (Greenkeeper)
1028* [[`4fcf1fcb54`](https://github.com/postlight/lux/commit/4fcf1fcb54)] - **deps**: update rollup-plugin-node-resolve to version 1.7.2 (#236) (Greenkeeper)
1029* [[`dff620b617`](https://github.com/postlight/lux/commit/dff620b617)] - **deps**: update eslint-plugin-flowtype to version 2.4.0 (#235) (Greenkeeper)
1030* [[`c1e1d69956`](https://github.com/postlight/lux/commit/c1e1d69956)] - **deps**: update babel-plugin-transform-es2015-modules-commonjs to version 6.11.5 (#234) (Greenkeeper)
1031* [[`8c2494cd4b`](https://github.com/postlight/lux/commit/8c2494cd4b)] - **deps**: update babel-core to version 6.11.4 (#233) (Greenkeeper)
1032* [[`7682b8720a`](https://github.com/postlight/lux/commit/7682b8720a)] - **deps**: update eslint to version 3.1.1 (#231) (Greenkeeper)
1033* [[`6b62779f27`](https://github.com/postlight/lux/commit/6b62779f27)] - **fix**: pluralize fields resource name (#216) (Louis Person)
1034* [[`44025b35f7`](https://github.com/postlight/lux/commit/44025b35f7)] - **deps**: update documentation (package) to version 4.0.0-beta8 (#228) (Zachary Golba)
1035* [[`ef8a1f6e22`](https://github.com/postlight/lux/commit/ef8a1f6e22)] - **deps**: update pg to version 6.0.2 in test-app (#227) (Zachary Golba)
1036* [[`4247194886`](https://github.com/postlight/lux/commit/4247194886)] - **feat**: deduce domain protocol from connection (#217) (Louis Person)
1037* [[`cb5e45d342`](https://github.com/postlight/lux/commit/cb5e45d342)] - **deps**: update eslint to version 3.1.0 (#226) (Greenkeeper)
1038* [[`d8ef797d46`](https://github.com/postlight/lux/commit/d8ef797d46)] - **refactor**: remove response stream in favor of res.end() (#225) (Zachary Golba)
1039* [[`a8a5406995`](https://github.com/postlight/lux/commit/a8a5406995)] - **feat**: improve log messages and data (#213) (Zachary Golba)
1040* [[`6cd3474a53`](https://github.com/postlight/lux/commit/6cd3474a53)] - **deps**: update flow-bin to version 0.29.0 (#224) (Greenkeeper)
1041* [[`2960a4148a`](https://github.com/postlight/lux/commit/2960a4148a)] - **deps**: update source-map-support to version 0.4.2 (#220) (Greenkeeper)
1042* [[`c06a677c81`](https://github.com/postlight/lux/commit/c06a677c81)] - **deps**: update eslint-plugin-flowtype to version 2.3.1 (#219) (Greenkeeper)
1043* [[`e69f04f6d9`](https://github.com/postlight/lux/commit/e69f04f6d9)] - **feat**: check directory for valid directory structure (#215) (kev5873)
1044* [[`a7960f6bea`](https://github.com/postlight/lux/commit/a7960f6bea)] - **deps**: update rollup to version 0.34.1 (#214) (Greenkeeper)
1045* [[`9c7e24a6dd`](https://github.com/postlight/lux/commit/9c7e24a6dd)] - **refactor**: add flow comment to the top of decl files (#212) (Zachary Golba)
1046* [[`fc325ea65b`](https://github.com/postlight/lux/commit/fc325ea65b)] - **refactor**: improve and simplify eslint rules (#209) (Zachary Golba)
1047* [[`a8460e5d4c`](https://github.com/postlight/lux/commit/a8460e5d4c)] - **fix**: resource IDs must be strings (#211) (Louis Person)
1048* [[`fd0a593bb1`](https://github.com/postlight/lux/commit/fd0a593bb1)] - **deps**: update rollup to version 0.34.0 (#210) (Greenkeeper)
1049* [[`4cc248bed4`](https://github.com/postlight/lux/commit/4cc248bed4)] - **deps**: update test-app dependencies (#208) (Zachary Golba)
1050* [[`81a30f76b9`](https://github.com/postlight/lux/commit/81a30f76b9)] - **feat**: improve proxy decl (#207) (Zachary Golba)
1051* [[`99523b7a0d`](https://github.com/postlight/lux/commit/99523b7a0d)] - **deps**: update babel-eslint to version 6.1.2 (#206) (Greenkeeper)
1052* [[`eca77d5e9f`](https://github.com/postlight/lux/commit/eca77d5e9f)] - **deps**: update rollup to version 0.33.2 (#205) (Greenkeeper)
1053* [[`4bb1878b91`](https://github.com/postlight/lux/commit/4bb1878b91)] - **deps**: update babel-eslint to version 6.1.1 (#204) (Greenkeeper)
1054* [[`3bb6e07431`](https://github.com/postlight/lux/commit/3bb6e07431)] - **fix**: errors is a top level member (#203) (Louis Person)
1055* [[`370630c8d4`](https://github.com/postlight/lux/commit/370630c8d4)] - **deps**: update rollup to version 0.33.1 (#202) (Greenkeeper)
1056* [[`3eb6790091`](https://github.com/postlight/lux/commit/3eb6790091)] - **deps**: update rollup-plugin-multi-entry to version 2.0.0 🚀 (#199) (Greenkeeper)
1057* [[`dc2e232b94`](https://github.com/postlight/lux/commit/dc2e232b94)] - **deps**: update flow-bin to version 0.28.0 🚀 (#201) (Greenkeeper)
1058* [[`000bf415a2`](https://github.com/postlight/lux/commit/000bf415a2)] - **deps**: update eslint to version 3.0.1 (#200) (Greenkeeper)
1059* [[`14b7bab46c`](https://github.com/postlight/lux/commit/14b7bab46c)] - **docs**: update CHANGELOG.md to include docker images (#198) (Zachary Golba)
1060* [[`236c3961f0`](https://github.com/postlight/lux/commit/236c3961f0)] - **docs**: update ROADMAP.md (#197) (Zachary Golba)
1061* [[`1d3a7b29ae`](https://github.com/postlight/lux/commit/1d3a7b29ae)] - **docs**: update testing section of README.md (#196) (Zachary Golba)
1062* [[`266b2120a2`](https://github.com/postlight/lux/commit/266b2120a2)] - **release**: 1.0.0-rc.1 (#195) (Zachary Golba)
1063
1064### 1.0.0-rc.1 (July 4, 2016)
1065
1066Happy Independence Day 🇺🇸
1067
1068This release brings a few bug fixes and some of the features tracked in the [1.0 milestone](https://github.com/postlight/lux/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0). Special thanks to @kev5873 for finding and fixing a bug related to generating a new project with more than one dash in the title!
1069
1070##### Features
1071
1072###### Docker Images
1073
1074🐳 We now have images on Docker Hub for seamless Lux development and deploying.
1075
1076* [Docker Hub](https://hub.docker.com/r/zacharygolba/lux-framework)
1077* [GitHub](https://github.com/postlight/docker-lux)
1078
1079###### `Query#first` & `Query#last`
1080
1081You are now able to query for a single record similar to `Query#find` but with all chainable query methods rather than just `WHERE 'id' = ?`.
1082
1083*Async/Await*
1084```javascript
1085const post = await Post
1086 .first()
1087 .where({ isPublic: true });
1088
1089console.log(post);
1090// => Post {}
1091```
1092
1093*Promise*
1094```javascript
1095Post
1096 .first()
1097 .where({ isPublic: true })
1098 .then(post => console.log(post));
1099// => Post {}
1100```
1101
1102
1103###### `Model#relationship` => `Promise`
1104
1105Models now return a `Promise` when accessing a relationship. If the related record have been eager loaded with includes it will immediately resolve to the eager loaded value. Otherwise, it will load the related records from the database and resolve with the result.
1106
1107*Async/Await*
1108```javascript
1109const post = await Post.find(1);
1110
1111console.log(await post.author);
1112// => Author {}
1113```
1114
1115*Promise*
1116```javascript
1117Post.find(1)
1118 .then(post => post.author)
1119 .then(author => console.log(author));
1120// => Author {}
1121```
1122
1123##### Commits
1124
1125* [[`32c1b92d04`](https://github.com/postlight/lux/commit/32c1b92d04)] - **deps**: update moment to version 2.14.1 (#194) (Greenkeeper)
1126* [[`e43e2e6c00`](https://github.com/postlight/lux/commit/e43e2e6c00)] - **deps**: update eslint to version 3.0.0 (#192) (Greenkeeper)
1127* [[`40863b4fbd`](https://github.com/postlight/lux/commit/40863b4fbd)] - **fix**: display correct error messages from flow script (#191) (Zachary Golba)
1128* [[`5aeb903196`](https://github.com/postlight/lux/commit/5aeb903196)] - **feat**: return a promise from relationships (#190) (Zachary Golba)
1129* [[`38d7a9bcbf`](https://github.com/postlight/lux/commit/38d7a9bcbf)] - **feat**: add Query#first and Query#last (#189) (Zachary Golba)
1130* [[`bceb825976`](https://github.com/postlight/lux/commit/bceb825976)] - **fix**: fixes #187 issue with class name generation with multiple dashes (#188) (kev5873)
1131* [[`620ab46eae`](https://github.com/postlight/lux/commit/620ab46eae)] - **chore(package)**: update source-map-support to version 0.4.1 (#186) (Greenkeeper)
1132* [[`22dfbaf03b`](https://github.com/postlight/lux/commit/22dfbaf03b)] - **release**: 1.0.0-rc (#185) (Zachary Golba)
1133
1134### 1.0.0-rc (June 25, 2016)
1135
1136🔅🎊🎈 This is the final set of functionality that will be added in 1.0! The remainder of pull requests from now until the 1.0 release will just be bug fixes or adding polish (Dockerfile, Website, Quick Start Guide, API docs, etc.). These issues can be tracked in the [1.0 milestone](https://github.com/postlight/lux/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0).
1137
1138In addition to features, this release includes bug fixes and general performance improvements.
1139
1140##### Features
1141
1142###### Lux Console
1143
1144You can now debug your application rails style with a custom repl that has your application built and loaded as global variables.
1145
1146To start the repl, run `lux console` or `lux c` in your
1147
1148```javascript
1149> User.find(1).then(user => {
1150 console.log(`${user.name} is working as expected.`);
1151});
1152// => Promise
1153// 'Stephen Curry is working as expected.'
1154> PostsController.beforeAction
1155// => [[Function], [Function], [Function]]
1156> routes
1157// => Router {...routes}
1158```
1159
1160###### Intelligent Responses
1161
1162Lux now intelligently observes the return value (or resolved `Promise` value for async functions) of your applications middleware and controller actions to serialize and respond with the correct data and status codes. Throwing an error at any point in time will cause a `500` and will be caught and handled gracefully (stack traces included when running outside of production).
1163
1164These are a few example edge cases where returning a Model or an Array of Models may not be what you want to do.
1165
1166```javascript
1167import { Controller } from 'lux-framework';
1168
1169class ApplicationController extends Controller {
1170 beforeAction = [
1171 /**
1172 * If any request is sent to this application with `?bad=true` the server
1173 * will respond with 400 (Bad Request) and the latter actions will not be
1174 * called. Otherwise, the request will be handled normally.
1175 */
1176 function isGood(req) {
1177 if (req.params.bad) {
1178 return 400;
1179 }
1180 }
1181 ];
1182
1183 /**
1184 * This will return 204 (No Content) and is equivalent to `return 204`.
1185 */
1186 health() {
1187 return true;
1188 }
1189
1190 /**
1191 * This will return 401 (Unauthorized) and is equivalent to `return 204`.
1192 */
1193 topSecret() {
1194 return false;
1195 }
1196
1197 /**
1198 * This will return 200 (OK) with the string 'bar'.
1199 */
1200 foo() {
1201 return 'bar';
1202 }
1203
1204 /**
1205 * This will return 200 (OK) with the following JSON.
1206 *
1207 * {
1208 * "foo": "bar"
1209 * }
1210 */
1211 fooJSON() {
1212 return {
1213 foo: 'bar'
1214 };
1215 }
1216
1217 /**
1218 * This will return 404 (Not Found). Returning undefined will also result in
1219 * a 404 unless the function returning undefined is called from beforeAction.
1220 */
1221 notFound() {
1222 return null;
1223 }
1224}
1225
1226export default ApplicationController;
1227```
1228
1229
1230###### Windows Support
1231
1232Lux now is 100% compatible with Windows!
1233
1234**NOTE:**
1235Travis-CI does not enable us to run our test suite on Windows. This shouldn't be an issue for development but it is highly recommend that you run Lux in a Docker container if your a deploying to Windows in production.
1236
1237##### Notable Changes
1238
1239* `lux serve` does not start in cluster mode by default. To run your application as a cluster run `lux serve -c` or `lux serve --cluster`.
1240
1241* Commands that require an application build (`serve`, `db:*`, etc) now prefer strict mode and require you to specify `--use-weak` if you do not want to run in strict mode (you should pretty much always use strict mode).
1242
1243##### Upgrading
1244
1245The Lux CLI in 1.0 is not backwards compatible with previous beta versions so please perform a local upgrade before upgrading Lux globally.
1246
1247###### Routes
1248
1249Route definitions now must call `this.route` and `this.resource` rather than having `route` and `resource` as arguments to the function in `./app/routes.js`. This is the initial ground work for implementing [router namespaces](https://github.com/postlight/lux/blob/master/ROADMAP.md#router-namespaces).
1250
1251```javascript
1252// ./app/routes.js
1253
1254export default function routes() {
1255 this.resource('post');
1256 this.resource('users');
1257
1258 this.route('users/login', {
1259 action: 'login',
1260 method: 'POST'
1261 });
1262
1263 this.route('users/logout', {
1264 action: 'logout',
1265 method: 'DELETE'
1266 });
1267}
1268```
1269
1270##### Commits
1271
1272* [[`81f52fc1c8`](https://github.com/postlight/lux/commit/81f52fc1c8)] - **feat**: add luxify function for converting traditional middleware (#183) (Zachary Golba)
1273* [[`39ce152574`](https://github.com/postlight/lux/commit/39ce152574)] - **fix**: index names sometimes exceed max length in generated migrations (#182) (Zachary Golba)
1274* [[`fb5a71a897`](https://github.com/postlight/lux/commit/fb5a71a897)] - **feat**: add custom repl for debugging (#180) (Zachary Golba)
1275* [[`c2b0b30d01`](https://github.com/postlight/lux/commit/c2b0b30d01)] - **feat**: do not cluster by default use -c || --cluster (#179) (Zachary Golba)
1276* [[`785ebf1c39`](https://github.com/postlight/lux/commit/785ebf1c39)] - **fix**: regression from #177 local lux not being used in cli (#178) (Zachary Golba)
1277* [[`67b9940e5c`](https://github.com/postlight/lux/commit/67b9940e5c)] - **feat**: add windows support (#177) (Zachary Golba)
1278* [[`c4ab5e0b3b`](https://github.com/postlight/lux/commit/c4ab5e0b3b)] - **deps**: update rollup to version 0.33.0 (#176) (Greenkeeper)
1279* [[`a7e860dd97`](https://github.com/postlight/lux/commit/a7e860dd97)] - **deps**: update rollup-plugin-babel to version 2.6.1 (#172) (Greenkeeper)
1280* [[`68e7d8fafe`](https://github.com/postlight/lux/commit/68e7d8fafe)] - **deps**: update rollup-plugin-json to version 2.0.1 (#173) (Greenkeeper)
1281* [[`7abf664c99`](https://github.com/postlight/lux/commit/7abf664c99)] - **deps**: update rollup-plugin-eslint to version 2.0.2 (#175) (Greenkeeper)
1282* [[`f4e17aabf9`](https://github.com/postlight/lux/commit/f4e17aabf9)] - **deps**: update rollup-plugin-node-resolve to version 1.7.1 (#174) (Greenkeeper)
1283* [[`c2a77c68d5`](https://github.com/postlight/lux/commit/c2a77c68d5)] - **deps**: update rollup to version 0.32.4 (#171) (Greenkeeper)
1284* [[`b23873109b`](https://github.com/postlight/lux/commit/b23873109b)] - **deps**: update rollup-plugin-babel to version 2.6.0 (#169) (Greenkeeper)
1285* [[`7ed59ab595`](https://github.com/postlight/lux/commit/7ed59ab595)] - **deps**: update rollup to version 0.32.2 (#168) (Greenkeeper)
1286* [[`b25237a647`](https://github.com/postlight/lux/commit/b25237a647)] - **refactor**: use process.cwd() instead of process.env.PWD (#167) (Zachary Golba)
1287* [[`5bab51a38b`](https://github.com/postlight/lux/commit/5bab51a38b)] - **deps**: update babel-eslint to version 6.1.0 (#165) (Greenkeeper)
1288* [[`53cb1e53e2`](https://github.com/postlight/lux/commit/53cb1e53e2)] - **deps**: update rollup to version 0.32.1 (#164) (Greenkeeper)
1289* [[`022b2e954c`](https://github.com/postlight/lux/commit/022b2e954c)] - **deps**: upgrade pg version in test-app (#166) (Zachary Golba)
1290* [[`ef3f9ce8d3`](https://github.com/postlight/lux/commit/ef3f9ce8d3)] - **fix**: ensure lux is not an external dependency (#163) (Zachary Golba)
1291* [[`fba8654d2e`](https://github.com/postlight/lux/commit/fba8654d2e)] - **deps**: update test-app dependencies (#162) (Zachary Golba)
1292* [[`84160c9149`](https://github.com/postlight/lux/commit/84160c9149)] - **deps**: update babel-core to version 6.10.4 (#161) (Greenkeeper)
1293* [[`7ee935afa1`](https://github.com/postlight/lux/commit/7ee935afa1)] - **deps**: update babel-eslint to version 6.0.5 (#160) (Greenkeeper)
1294* [[`cd53552aca`](https://github.com/postlight/lux/commit/cd53552aca)] - **deps**: update eslint to version 2.13.1 (#159) (Greenkeeper)
1295* [[`8e6a23dad3`](https://github.com/postlight/lux/commit/8e6a23dad3)] - **refactor**: improve build process and stack traces (#158) (Zachary Golba)
1296* [[`6748638ca6`](https://github.com/postlight/lux/commit/6748638ca6)] - **refactor**: rename serializer methods and return objects (#155) (Zachary Golba)
1297* [[`7597031076`](https://github.com/postlight/lux/commit/7597031076)] - **feat**: ensure Application#port is a number (#156) (Zachary Golba)
1298* [[`2d83f30df6`](https://github.com/postlight/lux/commit/2d83f30df6)] - **deps**: update rollup to version 0.32.0 (#154) (Greenkeeper)
1299* [[`64250ebe5b`](https://github.com/postlight/lux/commit/64250ebe5b)] - **refactor**: separate responsibilities in req/res flow (#153) (Zachary Golba)
1300
1301### 0.0.1-beta.13 (June 18, 2016)
1302
1303* [[`30a60c10ca`](https://github.com/postlight/lux/commit/30a60c10ca)] - **chore**: bump version to 0.0.1-beta.13 (Zachary Golba)
1304* [[`a569225072`](https://github.com/postlight/lux/commit/a569225072)] - **feat**: match ember-data jsonapi pagination implementation (#151) (Zachary Golba)
1305* [[`ea4786b791`](https://github.com/postlight/lux/commit/ea4786b791)] - **deps**: update mysql2 to version 1.0.0-rc.5 in test-app (#150) (Zachary Golba)
1306* [[`9b78c19540`](https://github.com/postlight/lux/commit/9b78c19540)] - **style**: change tabs to spaces in .eslintrc.js (#149) (Zachary Golba)
1307* [[`853d81a5d5`](https://github.com/postlight/lux/commit/853d81a5d5)] - **deps**: update bluebird to version 3.4.1 (#147) (Greenkeeper)
1308* [[`873f92dcac`](https://github.com/postlight/lux/commit/873f92dcac)] - **deps**: update eslint to version 2.13.0 (#146) (Greenkeeper)
1309
1310### 0.0.1-beta.12 (June 13, 2016)
1311
1312* [[`723c403598`](https://github.com/postlight/lux/commit/723c403598)] - **feat**: generate basic .eslintrc.json with `lux new` cmd (Zachary Golba)
1313* [[`952fa65db3`](https://github.com/postlight/lux/commit/952fa65db3)] - **deps**: update rollup to version 0.31.2 (#141) (Greenkeeper)
1314* [[`07bdc43db1`](https://github.com/postlight/lux/commit/07bdc43db1)] - **docs**: update CHANGELOG.md (Zachary Golba)
1315
1316### 0.0.1-beta.11 (June 12, 2016)
1317
1318This is the last big set of breaking changes before a stable `1.0.0` release
1319and moving forward we will strictly follow semantic versioning.
1320
1321If all goes well in this release the next release will be `1.0.0-rc` and will
1322only contain a few more features geared towards application profiling.
1323
1324##### Commits
1325
1326* [[`30f962c003`](https://github.com/postlight/lux/commit/30f962c003)] - **deps**: update dependencies (Zachary Golba)
1327* [[`b6700be793`](https://github.com/postlight/lux/commit/b6700be793)] - **refactor**: move query proxy to initializer function (Zachary Golba)
1328* [[`b53c58a06f`](https://github.com/postlight/lux/commit/b53c58a06f)] - **chore**: update examples (Zachary Golba)
1329* [[`2d0f2ef941`](https://github.com/postlight/lux/commit/2d0f2ef941)] - **feat**: support n:m relationships (Zachary Golba)
1330* [[`93e3c0a14b`](https://github.com/postlight/lux/commit/93e3c0a14b)] - **feat**: add chainable query interface (Zachary Golba)
1331* [[`425b8de4cc`](https://github.com/postlight/lux/commit/425b8de4cc)] - **feat**: use watchman for file watcher with fs.watch fallback (Zachary Golba)
1332* [[`97bed29798`](https://github.com/postlight/lux/commit/97bed29798)] - **refactor**: remove all decorators from private and public APIs (Zachary Golba)
1333* [[`53e257ae66`](https://github.com/postlight/lux/commit/53e257ae66)] - **refactor**: use lux babel preset (Zachary Golba)
1334* [[`2512e857b2`](https://github.com/postlight/lux/commit/2512e857b2)] - **refactor**: use streams for Logger (Zachary Golba)
1335* [[`4341f5cebd`](https://github.com/postlight/lux/commit/4341f5cebd)] - **refactor**: use rollup for build (Zachary Golba)
1336* [[`6bc225ac87`](https://github.com/postlight/lux/commit/6bc225ac87)] - **feat**: add file watcher (Zachary Golba)
1337* [[`5425c512e8`](https://github.com/postlight/lux/commit/5425c512e8)] - **feat**: add process manager (Zachary Golba)
1338* [[`7d0463a3f0`](https://github.com/postlight/lux/commit/7d0463a3f0)] - **feat**: tree-shaking, native es6, and start of HMR work (Zachary Golba)
1339* [[`82eab320d2`](https://github.com/postlight/lux/commit/82eab320d2)] - **docs**: start api documentation (Zachary Golba)
1340* [[`7e4a38c781`](https://github.com/postlight/lux/commit/7e4a38c781)] - **deps**: update eslint to version 2.12.0 (#140) (Greenkeeper)
1341* [[`6b8b29aea3`](https://github.com/postlight/lux/commit/6b8b29aea3)] - **deps**: update eslint to version 2.11.1 (#139) (Greenkeeper)
1342* [[`ef8b36cb2f`](https://github.com/postlight/lux/commit/ef8b36cb2f)] - **deps**: update babel-core to version 6.9.1 (#137) (Greenkeeper)
1343* [[`c5c812dc62`](https://github.com/postlight/lux/commit/c5c812dc62)] - **deps**: update eslint to version 2.11.0 (#135) (Greenkeeper)
1344* [[`24033dcfb3`](https://github.com/postlight/lux/commit/24033dcfb3)] - **chore**: update eslint config (#133) (Zachary Golba)
1345* [[`ed58e7a685`](https://github.com/postlight/lux/commit/ed58e7a685)] - **deps**: update mocha to version 2.5.3 (#132) (Greenkeeper)
1346* [[`c76c51b802`](https://github.com/postlight/lux/commit/c76c51b802)] - **deps**: update mocha to version 2.5.2 (#130) (Greenkeeper)
1347
1348##### Upgrading
1349
1350###### Application
1351
1352For the sake of proper namespacing, Lux no longer exports the `Application`
1353class as a `default` export. To upgrade simply use a named import of
1354`Application` within your `./app/index.js` file.
1355
1356```javascript
1357import { Application } from 'lux-framework';
1358
1359class MyApp extends Application {
1360
1361}
1362
1363export default MyApp;
1364```
1365
1366You could also use a namespaced import of Lux if you are worried about
1367collisions.
1368
1369```javascript
1370import Lux from 'lux-framework';
1371
1372class MyApp extends Lux.Application {
1373
1374}
1375
1376export default MyApp;
1377```
1378
1379###### Models
1380
1381Models now support scopes and have a chainable query interface. More docs will
1382soon be available on this but for now it should be as simple as replacing calls
1383to `Model.findAll` with `Model.where`.
1384
1385###### Controllers
1386
1387Decorators are no longer used to declare custom actions on your controller. For
1388an easy upgrade simply remove the `@action` at the top of your custom actions.
1389
1390```javascript
1391import { Controller } from 'lux-framework';
1392
1393import Post from '../models/post';
1394
1395class PostsController extends Controller {
1396 drafts() {
1397 return Post.drafts();
1398 }
1399}
1400
1401export default PostsController;
1402```
1403
1404###### Routes
1405
1406Route declarations no longer support an arrow function export since arrow
1407functions do not have a `name` property.
1408
1409```javascript
1410// ./app/routes.js
1411
1412export default function routes(route, resource) {
1413 resource('posts');
1414}
1415```
1416
1417###### Seed
1418
1419The db seed function no longer support an arrow function export since arrow
1420functions do not have a `name` property.
1421
1422```javascript
1423// ./db/seed.js
1424
1425export default function seed() {
1426 resource('posts');
1427}
1428```
1429
1430###### Config
1431
1432Config files found in `./config/environments` now only require a single option
1433`log`.
1434
1435```javascript
1436// ./config/environments/development.js
1437
1438export default {
1439 log: true
1440};
1441```
1442
1443###### .babelrc
1444
1445Lux now uses a special babel [preset](https://github.com/zacharygolba/babel-preset-lux)
1446to only transpile features that are missing from Node 6.X. That means that ~95%
1447of ES2015 syntax is actually using a native implementation. You can expect a
1448performance boost in this release 🐇.
1449
1450```json
1451{
1452 "presets": ["lux"]
1453}
1454```
1455
1456###### package.json
1457
1458Update your `package.json` to only include the following base packages required
1459for a Lux application (plus the ones you installed yourself).
1460
1461```json
1462{
1463 "babel-core": "6.9.1",
1464 "babel-preset-lux": "1.0.0",
1465 "knex": "0.11.5",
1466 "lux-framework": "0.0.1-beta.11",
1467 "sqlite3": "3.1.4"
1468}
1469```
1470
1471### 0.0.1-beta.10 (May 23, 2016)
1472
1473* [[`f2b63501c9`](https://github.com/postlight/lux/commit/f2b63501c9)] - **chore**: bump version to 0.0.1-beta.10 (Zachary Golba)
1474* [[`00a139653b`](https://github.com/postlight/lux/commit/00a139653b)] - **refactor**: use webpack for build (#121) (Zachary Golba)
1475* [[`47cfa90f02`](https://github.com/postlight/lux/commit/47cfa90f02)] - **deps**: update mocha to version 2.5.1 (#128) (Greenkeeper)
1476* [[`bbf73047eb`](https://github.com/postlight/lux/commit/bbf73047eb)] - **docs**: remove node-orm2 references from ROADMAP.md (#126) (Zachary Golba)
1477* [[`4338d05c3b`](https://github.com/postlight/lux/commit/4338d05c3b)] - **docs**: fix broken links in CHANGELOG.md (#125) (Zachary Golba)
1478* [[`50c18275a0`](https://github.com/postlight/lux/commit/50c18275a0)] - **docs**: update code sample in README.md (#124) (Zachary Golba)
1479* [[`940b53a7ed`](https://github.com/postlight/lux/commit/940b53a7ed)] - **chore**: add CHANGELOG.md (#123) (Zachary Golba)
1480* [[`8837cb5064`](https://github.com/postlight/lux/commit/8837cb5064)] - **fix**: NODE_ENV is not being passed down to child processes (#122) (Zachary Golba)
1481* [[`c9f2aef952`](https://github.com/postlight/lux/commit/c9f2aef952)] - **feat**: confirm overwriting files with lux generate cmd (#120) (Zachary Golba)
1482* [[`06dffaf0cd`](https://github.com/postlight/lux/commit/06dffaf0cd)] - **chore**: .editorconfig file (#119) (Joan Piedra)
1483* [[`a7f191003d`](https://github.com/postlight/lux/commit/a7f191003d)] - **feat**: improve error handling on missing controller & serializer files (#118) (Joan Piedra)
1484* [[`1dd3ab64c4`](https://github.com/postlight/lux/commit/1dd3ab64c4)] - **refactor**: remove Base package (#117) (Zachary Golba)
1485* [[`0f64cc864a`](https://github.com/postlight/lux/commit/0f64cc864a)] - **fix**: hasMany relationships are not eager loading properly (#116) (Zachary Golba)
1486* [[`11cb766267`](https://github.com/postlight/lux/commit/11cb766267)] - **fix**: select statement not being optimized by fields param (#115) (Zachary Golba)
1487* [[`ad3564fc8b`](https://github.com/postlight/lux/commit/ad3564fc8b)] - **fix**: pagination links break with an empty table (#114) (Zachary Golba)
1488* [[`1b84009543`](https://github.com/postlight/lux/commit/1b84009543)] - **fix**: ignore hidden and non .js files in loader (#113) (Joan Piedra)
1489* [[`6d97ca7545`](https://github.com/postlight/lux/commit/6d97ca7545)] - **fix**: using ?include is not working with multiple resources (#112) (Zachary Golba)
1490* [[`ef8e779867`](https://github.com/postlight/lux/commit/ef8e779867)] - **fix**: defaultValue is not accounted for in #108 (#111) (Zachary Golba)
1491* [[`71a1be6ccc`](https://github.com/postlight/lux/commit/71a1be6ccc)] - **fix**: column data not consistent across all dbms (#108) (Zachary Golba)
1492* [[`7c897ae0f2`](https://github.com/postlight/lux/commit/7c897ae0f2)] - **fix**: multiple 'hasMany' 'type' values are incorrect in serialized data (#109) (Zachary Golba)
1493* [[`a03cde5195`](https://github.com/postlight/lux/commit/a03cde5195)] - **chore**: update example apps (#105) (Zachary Golba)
1494* [[`824caab17f`](https://github.com/postlight/lux/commit/824caab17f)] - **deps**: update ora to version 0.2.3 (#101) (Greenkeeper)
1495
1496### 0.0.1-beta.9 (May 18, 2016)
1497
1498* [[`4002a5a64d`](https://github.com/postlight/lux/commit/4002a5a64d)] - **chore**: bump version to 0.0.1-beta.9 (#97) (Zachary Golba)
1499* [[`a7e54aa4da`](https://github.com/postlight/lux/commit/a7e54aa4da)] - **fix**: middleware functions added in 'beforeAction' not executing (#95) (Zachary Golba)
1500* [[`b16557647e`](https://github.com/postlight/lux/commit/b16557647e)] - **fix**: migration generator does not change - to _ (#96) (Zachary Golba)
1501* [[`81cdd2108b`](https://github.com/postlight/lux/commit/81cdd2108b)] - **fix**: remove short -db flag from lux new cmd (#93) (Zachary Golba)
1502* [[`71f4593fbb`](https://github.com/postlight/lux/commit/71f4593fbb)] - **refactor**: use chalk instead of colors (#92) (Zachary Golba)
1503* [[`786872becb`](https://github.com/postlight/lux/commit/786872becb)] - **fix**: config generator uses double quotes (#89) (Zachary Golba)
1504* [[`2fb314ad1b`](https://github.com/postlight/lux/commit/2fb314ad1b)] - **deps**: update bluebird to version 3.4.0 (#91) (Zachary Golba)
1505* [[`d95fb392c2`](https://github.com/postlight/lux/commit/d95fb392c2)] - **deps**: update babel-preset-es2015 to version 6.9.0 (#90) (Zachary Golba)
1506* [[`6c7b42ddad`](https://github.com/postlight/lux/commit/6c7b42ddad)] - **deps**: update babel-runtime to version 6.9.0 (#88) (Greenkeeper)
1507* [[`095d12a100`](https://github.com/postlight/lux/commit/095d12a100)] - **deps**: update babel-plugin-transform-runtime to version 6.9.0 (#87) (Greenkeeper)
1508* [[`9ef804ecd9`](https://github.com/postlight/lux/commit/9ef804ecd9)] - **deps**: update babel-core to version 6.9.0 (#86) (Greenkeeper)
1509* [[`23251651e9`](https://github.com/postlight/lux/commit/23251651e9)] - **chore**: add keywords to package.json (#81) (Zachary Golba)
1510* [[`418cadb662`](https://github.com/postlight/lux/commit/418cadb662)] - **chore**: add dependencies badge to README.md (#80) (Zachary Golba)
1511* [[`af3e72b73e`](https://github.com/postlight/lux/commit/af3e72b73e)] - **deps**: Update all dependencies 🌴 (#79) (Greenkeeper)
1512* [[`2560584a4f`](https://github.com/postlight/lux/commit/2560584a4f)] - **chore**: update roadmap to reflect changes in #65 (#78) (Zachary Golba)
1513
1514### 0.0.1-beta.8 (May 14, 2016)
1515
1516* [[`6416c6c309`](https://github.com/postlight/lux/commit/6416c6c309)] - **feat**: implement custom orm on top of knex.js (#65) (Zachary Golba)
1517* [[`d117376a46`](https://github.com/postlight/lux/commit/d117376a46)] - **test**: add sudo and correct g++ version for node 4+ in .travis.yml (#70) (Zachary Golba)
1518* [[`9a293bd117`](https://github.com/postlight/lux/commit/9a293bd117)] - **feat**: use js instead of json for config files (#67) (John-Henry Liberty)
1519* [[`720f0e1323`](https://github.com/postlight/lux/commit/720f0e1323)] - **test**: update travis to use npm link (#68) (John-Henry Liberty)
1520* [[`2fc214c045`](https://github.com/postlight/lux/commit/2fc214c045)] - **feat**: use local lux install if one exists (#66) (Zachary Golba)
1521
1522### 0.0.1-beta.7 (May 01, 2016)
1523
1524* [[`e35c430cdc`](https://github.com/postlight/lux/commit/e35c430cdc)] - **chore**: bump version to 0.0.1-beta.7 (#64) (Zachary Golba)
1525* [[`ec0b60b191`](https://github.com/postlight/lux/commit/ec0b60b191)] - **fix**: HEAD and OPTIONS request result in a 404 (#63) (Zachary Golba)
1526
1527### 0.0.1-beta.6 (April 28, 2016)
1528
1529* [[`4079b07269`](https://github.com/postlight/lux/commit/4079b07269)] - **chore**: bump version to 0.0.1-beta.6 (#61) (Zachary Golba)
1530* [[`b94c526e87`](https://github.com/postlight/lux/commit/b94c526e87)] - **fix**: serialize hasMany relationships (#60) (Zachary Golba)
1531* [[`2f5aa41c1a`](https://github.com/postlight/lux/commit/2f5aa41c1a)] - **chore**: test on node 6 (#58) (Zachary Golba)
1532* [[`e26a900e43`](https://github.com/postlight/lux/commit/e26a900e43)] - **docs**: add ROADMAP.md (#57) (Zachary Golba)
1533
1534### 0.0.1-beta.5 (April 22, 2016)
1535
1536* [[`8a21b472e0`](https://github.com/postlight/lux/commit/8a21b472e0)] - **chore**: bump version to 0.0.1-beta.5 (#55) (Zachary Golba)
1537* [[`909e732b9a`](https://github.com/postlight/lux/commit/909e732b9a)] - **chore**: update dependencies (#54) (Zachary Golba)
1538* [[`47ef4b87a8`](https://github.com/postlight/lux/commit/47ef4b87a8)] - **fix**: miss-match session key/secret error (#53) (Zachary Golba)
1539* [[`e70a032c0f`](https://github.com/postlight/lux/commit/e70a032c0f)] - **fix**: strings w/ commas interpreted as an array for POST/PATCH (#49) (Zachary Golba)
1540* [[`23da23d74d`](https://github.com/postlight/lux/commit/23da23d74d)] - **docs**: add npm package badge to README (#47) (Zachary Golba)
1541* [[`0788e468a6`](https://github.com/postlight/lux/commit/0788e468a6)] - **test**: add unit/integration tests (#39) (Zachary Golba)
1542* [[`498c951917`](https://github.com/postlight/lux/commit/498c951917)] - **chore**: add Gitter badge (#46) (The Gitter Badger)
1543
1544### 0.0.1-beta.4 (April 21, 2016)
1545
1546* [[`77dcdbe03b`](https://github.com/postlight/lux/commit/77dcdbe03b)] - **chore**: bump version to 0.0.1-beta.4 (#45) (Zachary Golba)
1547* [[`7c529fa235`](https://github.com/postlight/lux/commit/7c529fa235)] - **fix**: correct typo in README (#44) (Nic Young)
1548* [[`0880a71d89`](https://github.com/postlight/lux/commit/0880a71d89)] - **fix**: globally disable orm2 cache (Zachary Golba)
1549* [[`0bd7c8dfde`](https://github.com/postlight/lux/commit/0bd7c8dfde)] - **fix**: make ora a runtime dependency (#40) (Zachary Golba)
1550* [[`30ca0c27d5`](https://github.com/postlight/lux/commit/30ca0c27d5)] - **feat**: add spinner for long running task (#38) (Albert Yu)
1551
1552### 0.0.1-beta.3 (April 18, 2016)
1553
1554* [[`03958b98d1`](https://github.com/postlight/lux/commit/03958b98d1)] - **chore**: bump version to 0.0.1-beta.3 (#37) (Zachary Golba)
1555* [[`10b782be1f`](https://github.com/postlight/lux/commit/10b782be1f)] - **fix**: logger date incorrect (#35) (kev5873)
1556* [[`e9897371be`](https://github.com/postlight/lux/commit/e9897371be)] - **chore**: Link to Medium Article in Readme (#33) (Zachary Golba)
1557
1558### 0.0.1-beta.2 (April 18, 2016)
1559
1560* [[`c073253cd0`](https://github.com/postlight/lux/commit/c073253cd0)] - **fix**: listening message dispatched before workers are ready (#34) (Zachary Golba)
1561
1562### 0.0.1-beta.1 (April 17, 2016)
1563
1564* [[`5a734e79ce`](https://github.com/postlight/lux/commit/5a734e79ce)] - **fix**: shebang line not finding node on linux (#32) (Zachary Golba)
1565
1566### 0.0.1-beta (April 07, 2016)
1567
1568* [[`4a193b86d2`](https://github.com/postlight/lux/commit/4a193b86d2)] - Initial Commit (Zachary Golba)