The kraken 2.0 migration is extremely straight forward.
Please be aware that in the next major release, the included 404 and 500 error handling middleware (opt-in) will be removed. In 2.0, if you use these middlewares, you will begin to see deprecation warnings.
Please review the following breaking changes introduced by dependencies:
-
Dependency: meddleware (v1 -> v3)
- Call registered middleware factories with a context set to the method owner. This helps in specific cases (e.g., Passport).
Previously: The factory was called with a context ofnull
.
Implementation, Issue, Pull Request
- Default middleware
enabled
totrue
. I.e., omitting theenabled
option will still enable the middleware.
Previously: middleware was defaultedenabled
tofalse
.
Implementation, Issue, Pull Request
- Remove the ability to toggle the
enabled
state of a middleware at arbitrary points during runtime. Now, a middleware that is notenabled
—by explicitly settingenabled
tofalse
, given breaking change No.1—will not berequire
d (i.e., not parsed), and cannot be enabled at a later time.
Previously: middleware could be toggled. Was by design, but largely unused and caused unanticipated behavior.
- Call registered middleware factories with a context set to the method owner. This helps in specific cases (e.g., Passport).
-
Dependency: confit (v1 -> v2)
- Resolve the
import
shortstop handler after mergingconfig.json
,[env].json
, and before the other shortstop handlers are resolved.
Previously:import
handler resolved only once, before the rest of the shortstop handlers.
implementation 1, implementation 2, Issue, Pull Request
{ "main": "import:main.json" } // config/config.json { "key": "value", "otherKey": "otherValue" } // config/main.json { "main": { "key": "devValue" } } // config/dev.json { "main": { "key": "devValue", "otherKey": "otherValue" } } // result
- Change source priority—from highest to lowest (higher overrides lower)— to: command line arguments, environment variables,
[env].json
,config.json
, convenience (environment normalization andenv:*
keys).
Previously: source priority order, from highest to lowest, was[env].json
,config.json
, convenience, environment variables, command line arguments.
// config/config.json { "KEY": "fromConfig", "OTHER_KEY": "fromConfig", "THIRD_KEY": "fromConfig" }
OTHER_KEY=fromEnv THIRD_KEY=fromEnv node myApp.js --THIRD_KEY=fromArgv
// result { "KEY": "fromConfig", "OTHER_KEY": "fromEnv", "THIRD_KEY": "fromArgv" }
- Resolve the