@hapiness/config

Configuration Library to use it inside Hapiness framework

Stats

StarsIssuesVersionUpdatedCreatedSize
@hapiness/config
001.2.13 years ago4 years agoMinified + gzip package size for @hapiness/config in KB

Readme

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

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.