All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
1.1.2 (2017-12-19)
1.1.1 (2017-11-07)
- internal-resources: namespaced resources could not be moved/renamed into other namespaces (fa4cc64)
1.1.0 (2017-11-04)
Notes: dpd-dashboard and dpd-clientlib now follow semver too. Please update their semver ranges in your project to ^1.0.0
- tests:
- run tests on random mongo port and update for new mocha/npm (#831) (4331b3c2)
-
Allow specifying resources in subdirectories/namespaces. (eg. namespace/hello) (#832) (4d22465b)
What this does is allow structuring resources in subdirectories. (eg clientapi/users, clientapi/photos, clientapi/v2/followers, etc)
This greatly improves the structure of projects, allowing easier separation of functions into their own separate concerns.
Each can have its own separate event code and deployd will handle the routing. This should work for any resource type.
- Update readme with some best practices (#833) (/aafd3fc5)
- collection: protect and hide should not modify
this
(#782) (a9fdc4cf) - internal-client: add req.resume() (#785) (5e2c7813)
- add socketIo check (#802) (ce04ddee)
- fix: server.attach() did not enable socket clustering (#777) (04bb24a2)
-
refactor: remove dpd cli from deployd core module (#776) (626d4ad6)
-
refactor(*): remove dashboard and clientlib from deployd core module (#783) (c9d0a91d)
ℹ️ A migration guide is available in the readme
- Dependencies: Fix: Force mime version v1.4.0 (1514b8decc4)
- db: convert skip/limit arg to integer (86e6f5f6)
- package:
- user-collection: ensure password is a string (e81c6c7b, #735)
- session: use socket.io rooms for emitToUsers (ff5f840c95)
- dpd.js: use encodeURIComponent (8d58a12e)
- repl: update outdated property name (05f731c8, #680)
- session:
- test: allow some time for sessions to be cleaned up (ca0ca85e)
- script: memoize dynamic function (ff6a4dce)
- dpd:: dpd CLI was crashing (shelljs global missing) (e1729f2d88)
- User-collection:
- collection: can't rename or delete new, empty collection (thx @docnoe) (49f769600)
- Dashboard: Property types in dashboard are sortable (thx @docnoe) (ab7cec630)
- Dependency Update:
- qs to version 5.2.0
- shelljs to version 0.5.3
- grunt-contrib-jshint to version 0.11.3
- sinon to version 1.17.1
- request to version 2.65.0
- Cleanup: request to version 2.65.0 (0adf309a5)
- Build: Our tests now run on NodeJS 4.2 (a5687dc352)
- bin/dpd: prevent process quit when latestversion is not writable (d8a507d5)
- collection: object queries on booleans would be converted to false (84a1d039)
- internal-client: add null check for ctx (d3ccf38f)
- session: improve how socket.io connection to finds session (bb05ce4a)
- user-collection: null check to prevent crash (36c4ec2d)
- collection:
- http:
- internal-client:
- script:
- chore: update mongo and socket.io
-
UserCollection:
onGet
event can break session handling (74f23631) -
db: Properly report database connection issues (25308f89)
-
http:
-
internal-resource: handle errors in type events (7cec886c)
-
session: socket disconnection after login (56fe4d83)
-
store: add error handling in callbacks (0bbce4e7)
-
user-collection: do not allow empty passwords on PUT/POST (fa076553)
NB: There's a breaking change for an undocumented feature: due to the CORS improvements, all unknown origins will be rejected for CORS requests. For more info, please refer to this message
- collection: add AfterCommit event (1d6bec51)
- dashboard: height of code editor should fill window (7ed76106)
- session: allow multiple sockets per sessions And add options.origins (f67ee1ec)
- collection: should not crash on deleting non existent id (1b85c2127c)
- UserCollection: res.cookies not available from internal client (5717c4d1)
- cli:
- dashboard: use ejs delimiter instead of open and close tag (776e17cf)
- delete: call Delete event for every record matched (462c6766)
- dpd.js: dpd.socket null (5331ac39)
- script: memory leak and performance improvement (578bd28d)
- server: allow request.rawBody for middlewares (59fbdbab, #519)
- user-collection: crash when password is not specified in login (65f4170b)
- typeload: load custom resources from package.json if exists (f1f0738)
- attach.js: mkdir resourcesPath if not exists (55cf4b36)
- collection:
- config-loader: improve the 'resources' dir reading (67218018)
- db:
- internal-client: exec resource.path is missing (c1acee8e)
- script: null values in domain were changed to {} (26311eea)
- session: correct usages of an emit queue. (53b226ad)
- session.js: Refactor session creation code to use promises in order to fix a possible race condition while inserting a session to the database. (3080de2f)
- tests: call done() properly from async function (061f16de)
- correctly delete cookies, update cookies-dependency
- collection: $addUnique for MongoDB $addToSet support (from yoneal PR #252) (730e980e)
- config-loader server: customize server and public dirs through options (f17d296d)
- core: wait for promises in events (964ec452)
- dashboard: sort sidebar resources in alphabetical order (4cf89a63)
- events: Expose ctx object to the event scripts (c0b39d3a)
- server: add deployd.attach to extend http/expressjs/connect server and provide a middleware (29cf94b4)
- session: get session by uid (ffb33bf5)
- dpd.js add promises to client library
- Add ability to query by subproperty within GET event
- Add X-Requested-With header for AngularJS support
- Add auto https support to dpd.js client lib
- Removed Forever Monitor support from CLI
- Fix bug with repl causing typed characters to be printed twice and not executed correctly
- Fix bug where dashboard would not load if a config had not yet been created
- Fix issue where number query params for string type properties were not being converted to strings on server
- Fix MongoDB startup and settings
- Add check for $inc operands to ensure numbers before attempting to increment
- Add more core tests, and features to make mocking easier within tests
- Fixed bug where missing content-type header when updating a user threw an error.
- Fixed bug where query strings were not properly parsed.
- Fixed certain errors returned as HTML rather than JSON.
- Fixed bug where changing a property type from "number" to "string" made existing properties uneditable.
- Fixed bug where
changed()
was returning true for values that had not changed. - Fixed certain error's returned as HTML rather than JSON.
- Data editor
- Fixed bug where data editor would expand as the page scrolls
- Fixed bug where the cursor would randomly move around while editing text
- Removed overlay for inline editing
- Fixed bug where
internal-client
was not accessible from modules - Fixed restarts caused by 404s of unexpected http verbs
- Fixed CORS incorrectly requiring a referer header
- Added
dpd.once(name, fn)
function to execute a realtime handler exactly once - Added
dpd.off(name, [fn])
function to remove a realtime handler - Added
dpd.socketReady(fn)
function to listen for the built-inconnect
event - Added
dpd.socket
property to provide direct access to socket.io. - Fixed bug where username and password could be updated by an unauthenticated put.
- Usernames and passwords can be updated only by that user's session, a root session, or an internal request.
- Made
data
folder smaller by default indevelopment
environment - Added
cancelIf()
,cancelUnless()
,errorIf()
, anderrorUnless()
functions to event API for more declarative events - Added
hasErrors()
function to event API - Added
isMe()
function to event API - Fixed external prototype bug causing custom external prototypes to fail
- Removed docs from repository. They are now available at http://docs.deployd.com or https://github.com/deployd/docs.
- Added new data editor
- Fixed major bug where calling error() would not always cancel the request
- Fixed bug where PUT would fail without an error if you provided a query
- Changed root behavior - no longer ignores cancel() in events
- Fixed bugs preventing events from being
emit()
ed to users in certain connection states - Fixed bug where boolean query values (?bool=true) were not treated as booleans
- Fixed unnecessary error when parsing JSON body
- Added more intelligent body parsing
- Added
changed()
method in collection events - Added
previous
object in collection events - Fixed
dpd showkey
prompt for missing keys.json
- Added CORS support
- Exposed the server object to modules as
process.server
- Fixed a rare bug where the first request after a login would not be authenticated
- Fixed minor bug when loading only node modules
- Fixed
process.send
bug - Remote DB Authentication
- Fixed incorrect Content-Length response header.
- Removed dependency on jQuery for dpd.js
- JSON-formatted "bad credentials" login error
- Improved error reporting on CLI when port is in use
- If in development mode, and no port has been specifically requested, CLI will retry with up to 5 different ports
- Fixed "no open connections" bug on startup
- Renamed
Db.connect()
toDb.create()
- Db connections are now lazy and only occur once a request is made
- Added 500 and 404 error pages
- Added module domain error handling for better module errors
- Added automatic reloading on error
- Dropped support for node 0.6
- Fixed rare but annoying bug where server would crash for no good reason ("Cannot set headers") on a request
- Bumped the default recursion limit to 2 levels
- Fixed rare case where a resource's dashboard would not load
- Fixed user events
- Fixed several validation bugs
- In a UserCollection /users/me will return 204 instead of 401
- Restructured Deployd app folder structure. Let us know if you need to migrate any 0.5 apps.
- Changed the "email" property of a UserCollection to "username", in order to be less opinionated about user logic.
- Rebuilt the dashboard
- You can now manage resources from any page on the dashboard. Navigation has also been improved
- You can now reorder properties in a collection
- Added custom resource API. You can now write your own resources and include them in your app. See the [docs] for examples and reference.
- Fixed bug where your session could get elevated to root after using the Dashboard (causing cancel() in events to be ignored)