Skip to content

Latest commit

 

History

History
62 lines (42 loc) · 4 KB

migrating-to-2.0.md

File metadata and controls

62 lines (42 loc) · 4 KB

Migrating to kraken-js 2.0

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)

    1. 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 of null.

    Implementation, Issue, Pull Request

    1. Default middleware enabled to true. I.e., omitting the enabled option will still enable the middleware.
      Previously: middleware was defaulted enabled to false.

    Implementation, Issue, Pull Request

    1. Remove the ability to toggle the enabled state of a middleware at arbitrary points during runtime. Now, a middleware that is not enabled—by explicitly setting enabled to false, given breaking change No.1—will not be required (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.

    Issue, Pull Request

  • Dependency: confit (v1 -> v2)

    1. Resolve the import shortstop handler after merging config.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

    New Behavior:
    { "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
    1. Change source priority—from highest to lowest (higher overrides lower)— to: command line arguments, environment variables, [env].json, config.json, convenience (environment normalization and env:* keys).
      Previously: source priority order, from highest to lowest, was [env].json, config.json, convenience, environment variables, command line arguments.

    Implementation, Pull Request

    New Behavior
    // 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" }