@hapiness/config
TypeScript icon, indicating that this package has built-in type declarations

1.2.1 • Public • Published

Hapiness

Hapiness Config

Configuration module based on node-config & js-yaml libraries.

Table of contents

Using config module

yarn or npm it in your package.json

$ npm install --save @h@hapiness/config

or

$ yarn add @hapiness/config
"dependencies": {
    "@hapiness/config": "^1.2.1",
    //...
}
//...

Standalone

./config/default.yml:

my:
    config: test

Node.js Script:

import { Config } from '@hapiness/config';

if (Config.has('my.config')) {
    console.log(Config.get('my.config')); // output: 'test'
}

Hapiness

./config/default.yml:

external_service:
    baseUrl: 'test'

mymodule_database:
    provider: postgresql
    hostname: localhost
    user: pguser
    password: keyboard cat

Hapiness module:

// external-module.ts
  import {
    HapinessModule,
    CoreModuleWithProviders,
    InjectionToken,
    Inject,
    Optional,
  } from '@hapiness/core';

  import { ConfigHelper, ConfigInterface } from '@hapiness/config';

    @HapinessModule({
        ...
    })

    export class ExternalModule {
        static setConfig(config: ConfigInterface): CoreModuleWithProviders {
            return {
                module: ExternalModule,
                providers: [ConfigHelpers.getProvider('mymodule_database', config)]
            };
        }
    }

    export class Service {
      constructor(@Optional() @Inject(ConfigHelper.getInjectionToken('mymodule_database')) config) { // @Optional to not throw errors if config is not passed
        ...
      }
    }
    // main-module.ts
    import {
      HapinessModule,
    } from '@hapiness/core';
    import { ExternalModule } from 'external-module';
    import { Config } from '@hapiness/config';

    @HapinessModule({
        ...
        imports: [ ExternalModule.setConfig(Config.get('mymodule_database')) ]
    })
    ...

Hapiness service:

    // main-module.ts
    import {
      HapinessModule,
    } from '@hapiness/core';
    import { ConfigHelper, Config } from '@hapiness/config';
    import { MyCustomService } from './services';

    @HapinessModule({
        ...
        providers: [
            ConfigHelper.getProvider('external_service'),
            MyCustomService,
            ...
        ]
    })
    ...
    import { Injectable } from '@hapiness/core';
    import { ConfigInterface } from '@hapiness/config';

    // my-custom-service.ts
    @Injectable()
    class MyCustomService {

        private _baseUrl: string;

        constrcutor(
            @Inject(ConfigHelper.getInjectionToken('external_service'))
            private _config: ConfigInterface
        ) {}

        connect() {
            this._baseUrl = this._config.get<string>('baseUrl');
        }

    }
    ...

Back to top

Change History

  • v1.2.1 (2018-09-26)
    • Fix a bug when default value of get() was a falsy value and wrongly interpreted as undefined
  • v1.2.0 (2018-05-09)    * Delete obsolete peerDependencies
    • Latest packages' versions
    • Documentation
  • v1.1.1 (2017-12-28)    * Fix load config
  • v1.1.0 (2017-11-20)
    • Latest packages' versions.
    • Documentation.
    • Change packaging process.
  • v1.0.0 (2017-10-27)
    • Create Config module.
    • Tests module.
    • Documentation.
    • First stable version.

Back to top

Maintainers

tadaweb
Julien Fauville Antoine Gomez Sébastien Ritz Nicolas Jessel

Back to top

License

Copyright (c) 2018 Hapiness Licensed under the MIT license.

Back to top

Dependencies (4)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i @hapiness/config

    Weekly Downloads

    4

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    20.1 kB

    Total Files

    15

    Last publish

    Collaborators

    • hapiness