Nutritious Polygonal Meatball

    @nwx/cfg
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.2 • Public • Published

    @nwx/cfg

    A simple configuration module for Angular applications

    status-image version-image coverage-image download-image

    Overview

    @nwx/cfg attempts to streamline the app configuration while keeping it DRY.

    How to install

    npm i @nwx/cfg |OR| yarn add @nwx/cfg
    

    How to use

    // In your environment{prod,staging}.ts
     
    import { AppCfg, TargetPlatform, HttpMethod } from '@nwx/cfg';
     
    export const environment: AppCfg = {
      // release version
      version: string;
      // app name
      appName'Neekware',
      // target (browser, mobile, desktop)
      target: TargetPlatform.web,
      // production, staging or development
      production: true
      // one or more app specific field(s)
    };
    // In your app.module.ts
     
    import { CfgModule } from '@nwx/cfg';
    import { environment } from '../environments/environment';
     
    @NgModule({
      declarations: [AppComponent],
      imports: [BrowserModule, CfgModule.forRoot(environment)],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    // In your app.component.ts or (some.service.ts)
     
    import { Component } from '@angular/core';
    import { CfgService } from '@nwx/cfg';
     
    @Component({
      selector: 'app-root'
    })
    export class AppComponent {
      title = '@nwx/cfg';
     
      constructor(public cfg: CfgService) {
        this.title = this.cfg.options.appName;
      }
    }

    Advanced usage:

    • Remote configuration

    @nwx/cfg can also be used to fetch remote configuration prior to start of an Angular app.

    // In your environment{prod,staging}.ts
     
    import { AppCfg, TargetPlatform, HttpMethod } from '@nwx/cfg';
     
    export const environment: AppCfg = {
      // release version
      version: '1.0.0',
      // app name
      appName: 'Neekware',
      // target (browser, mobile, desktop)
      target: TargetPlatform.web,
      // production, staging or development
      production: true,
      // remote configuration (from the server prior to ng bootstrap)
      rmtCfg: {
        // server url to get remote config from (default = null)
        endpoint: '/api/cfg',
        // GET or POST http method to connect to remote server (default = get)
        method: HttpMethod.get,
        // Max timeout of http connection to remote server (default = 2 seconds)
        timeout: 3,
        // http headers to include in http connection to remote server
        headers: { 'Content-Type': 'application/json' }
        // body of request when using http POST method (default = {})
        body{
          // one or more app specific field(s)
        }
      }
      // one or more app specific field(s)
    };
    // In your app.module.ts
     
    import { CfgModule } from '@nwx/cfg';
    import { environment } from '../environments/environment';
     
    @NgModule({
      declarations: [AppComponent],
      imports: [BrowserModule, CfgModule.forRoot(environment)],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    // In your app.component.ts or (some.service.ts)
     
    import { Component } from '@angular/core';
    import { CfgService } from '@nwx/cfg';
    import { merge } from 'lodash';
     
    @Component({
      selector: 'app-root'
    })
    export class AppComponent {
      title = '@nwx/cfg';
      options = {};
     
      constructor(public cfg: CfgService) {
        this.options = merge({ name: 'AppComponent' }, this.cfg.options};
        const remoteCfgData = this.options.rmtData;
      }
    }

    Running the tests

    To run the tests against the current environment:

    npm run ci:all
    

    License

    Released under a (MIT) license.

    Version

    X.Y.Z Version

    `MAJOR` version -- making incompatible API changes
    `MINOR` version -- adding functionality in a backwards-compatible manner
    `PATCH` version -- making backwards-compatible bug fixes
    

    Sponsors

    Surge

    Install

    npm i @nwx/cfg

    DownloadsWeekly Downloads

    0

    Version

    2.0.2

    License

    MIT

    Unpacked Size

    157 kB

    Total Files

    38

    Last publish

    Collaborators

    • un33k