2.3.1 • Published 1 year ago

typeconfig v2.3.1

Weekly downloads
81
License
MIT
Repository
github
Last release
1 year 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

1 year ago

2.3.0

1 year ago

2.3.1

1 year ago

2.2.15

1 year ago

2.2.13

1 year ago

2.2.14

1 year ago

2.2.12

1 year ago

2.2.11

1 year ago

2.2.10

1 year ago

2.2.9

1 year ago

2.2.8

1 year ago

2.2.5

1 year ago

2.2.7

1 year ago

2.2.6

1 year ago

2.2.2

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.38

2 years ago

2.0.39

2 years ago

2.0.28

2 years ago

2.0.29

2 years ago

2.0.37

2 years ago

2.0.35

2 years ago

2.0.36

2 years ago

2.0.33

2 years ago

2.0.34

2 years ago

2.0.31

2 years ago

2.0.32

2 years ago

2.0.30

2 years ago

2.0.26

3 years ago

2.0.27

2 years ago

2.0.24

3 years ago

2.0.25

3 years ago

2.0.22

3 years ago

2.0.23

3 years ago

2.0.20

3 years ago

2.0.21

3 years ago

2.0.19

4 years ago

2.0.16

4 years ago

2.0.17

4 years ago

2.0.18

4 years ago

2.0.15

4 years ago

2.0.14

4 years ago

2.0.13

5 years ago

2.0.12

5 years ago

2.0.11

5 years ago

2.0.10

5 years ago

2.0.9

5 years ago

2.0.8

5 years ago

2.0.7

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0-beta7

5 years ago

2.0.0

5 years ago

2.0.0-beta5

5 years ago

2.0.0-beta6

5 years ago

2.0.0-beta4

5 years ago

2.0.0-beta3

5 years ago

2.0.0-beta2

5 years ago

2.0.0-beta

5 years ago

1.0.9

5 years ago

1.0.8-d

6 years ago

1.0.8-c

6 years ago

1.0.8-b

6 years ago

1.0.8

6 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago