2.3.1 • Published 16 days ago

typeconfig v2.3.1

Weekly downloads
81
License
MIT
Repository
github
Last release
16 days ago

typeconfig

npm version Language grade: JavaScript Build Status Coverage Status dependencies Status

Configuration file for Typescript. Useful for separating frontend (public) and backend (private) config Features:

  • Creating Configuration in Typescript file with types
  • Loading configuration from file, command line arguments, environmental variables
  • Support config file hierarchy

#Install

npm install typeconfig

#Usage

  @SubConfigClass()
      class S {

        @ConfigProperty({envAlias: 'numAlias'})
        num: number = 5;

        @ConfigProperty({type: 'ratio',
          onNewValue: (v, c: C) => {
            c.temperature=v*100;
          }})
        temperatureRatio: number = 0.2;

      }

      @ConfigClass()
      class C {


        @ConfigProperty()
        sub: S = new S();

        @ConfigProperty({type: 'integer'})
        num: number = 5;

        @ConfigProperty({type: 'integer', constraint: {assert: v => v < 100 && v >0}})
        temperature: number = 5;


      }

Legacy usage

Legacy usage is still supported and can be accessed like the following way:

backend

let Config = {
    Private:{
        something:5,
        PORT:1234
    },
    Public:{
        a:6
    }
};
 

ConfigLoader.loadBackendConfig(Config, //Config object to load the data to
    path.join(__dirname, './../../../config.json'), // configuration file path
    [["PORT", "Private-PORT"]]); //environmental variable mapping to config variable

frontend

let Config = {
    Public:{
        a:6
    }
};

if (typeof ServerInject !== "undefined" && typeof ServerInject.ConfigInject !== "undefined") {
    WebConfigLoader.loadFrontendConfig(Config.Public, ServerInject.ConfigInject);
}

config changing

  • updating config file (if not exist, it will be created)
  • setting environmental variable
  • Command line arguments
    • node index.js --Private-something=3 --Public-a=10

Recommended Usage

See example/legacy folder.

The architecture helps separating public and private configuration. Private config will be only available at server side, while Public config at front and backend side too. The up-to-date public config is sent to the frontend with ejs template.

2.2.16

17 days ago

2.3.0

17 days ago

2.3.1

16 days ago

2.2.15

29 days ago

2.2.13

30 days ago

2.2.14

29 days ago

2.2.12

1 month ago

2.2.11

2 months ago

2.2.10

3 months ago

2.2.9

3 months ago

2.2.8

3 months ago

2.2.5

3 months ago

2.2.7

3 months ago

2.2.6

3 months ago

2.2.2

3 months ago

2.2.1

3 months ago

2.2.0

3 months ago

2.1.2

10 months ago

2.1.1

10 months ago

2.1.0

10 months ago

2.0.38

1 year ago

2.0.39

1 year ago

2.0.28

1 year ago

2.0.29

1 year ago

2.0.37

1 year ago

2.0.35

1 year ago

2.0.36

1 year ago

2.0.33

1 year ago

2.0.34

1 year ago

2.0.31

1 year ago

2.0.32

1 year ago

2.0.30

1 year ago

2.0.26

1 year ago

2.0.27

1 year ago

2.0.24

2 years ago

2.0.25

1 year ago

2.0.22

2 years ago

2.0.23

2 years ago

2.0.20

2 years ago

2.0.21

2 years ago

2.0.19

3 years ago

2.0.16

3 years ago

2.0.17

3 years ago

2.0.18

3 years ago

2.0.15

3 years ago

2.0.14

3 years ago

2.0.13

4 years ago

2.0.12

4 years ago

2.0.11

4 years ago

2.0.10

4 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0-beta7

4 years ago

2.0.0

4 years ago

2.0.0-beta5

4 years ago

2.0.0-beta6

4 years ago

2.0.0-beta4

4 years ago

2.0.0-beta3

4 years ago

2.0.0-beta2

4 years ago

2.0.0-beta

4 years ago

1.0.9

4 years ago

1.0.8-d

4 years ago

1.0.8-c

4 years ago

1.0.8-b

4 years ago

1.0.8

4 years ago

1.0.7

5 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago