@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

    Install

    npm i @hapiness/config

    DownloadsWeekly Downloads

    6

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    20.1 kB

    Total Files

    15

    Last publish

    Collaborators

    • hapiness