1.0.26 • Published 2 years ago

@mongez/config v1.0.26

Weekly downloads
6
License
MIT
Repository
github
Last release
2 years ago

Mongez Config

A simple configuration package for settling data in a centered place for better code quality.

Why?

Well, the main purpose of this package is to provide a way to handle data between your project files and other outer packages, this can be useful when a package provides a configuration list, Check other Mongez packages for more illustrations.

Installation

yarn add @mongez/config

Or

npm i @mongez/config

Usage

The package has only three main functionalities: Setting configurations list config.set, getting a configuration value config.get and listing entire configurations config.list.

Setting configurations list

A configuration list is just an object with variant data that is manipulated by you to adjustify your configurations based on your project needs.

Create a src/config.js or src/config.ts (it's recommended to always use typescript in your project :)) and add the following code:

import config from '@mongez/config';

config.set({
    api: {
        url: 'https:site-name.com',
        apiKey: 'api-key',
    },
    languages: {
        en: {
            name: 'English',
            direction: 'ltr',
        }
    }
});

We may also set a single config value.

import config from '@mongez/config';

config.set('api.url', 'https://site-name.com/api');

That's it, now we're ready to get our configurations data from anywhere in our app.

Getting configuration value

// src /some-api-manager.js
import config from '@mongez/config';

const apiSetup = new Api({
    baseUrl: config.get('api.url'),
    apiKey: config.get('api.apiKey'),
});

As you can see, just calling config.get with a dot notation syntax will get the api data that can be used directly.

If the key is not defined in the configuration, pass the second argument to config.get as a default value to be returned instead.

import config from '@mongez/config';

console.log(config.get('some.nested.undefined.key', '000')); // 000

Getting the entire configurations list

import config from '@mongez/config';

console.log(config.list()); // {configurationsList as object}

Best practicing with typescript

Always define the configurations list with a type or an interface to determine the flow of the configurations.

// src/config.ts
import config from '@mongez/config';

import { AppConfigurations } from './types';

const configurationsList: AppConfigurations = {
    api: {
        url: 'https:site-name.com',
        apiKey: 'api-key',
    },
    languages: {
        en: {
            name: 'English',
            direction: 'ltr',
        }
    }
}

config.set(configurationsList);
// src/types.ts

export type AppConfigurations = {
    /**
     * Api configurations list
     */ 
    api?: {
        /**
         * Base url
         */
        url: string;
        /**
         * Api Key
         */ 
        apiKey: string;
    };
    /**
     * Languages List
     */ 
    languages?: {
        /**
         * Locale code name
         */ 
        [localeCode: string]: {
            /**
             * Language name
             */ 
            name: string;
            /**
             * Language direction
             */ 
            direction: 'ltr' | 'rtl';
        };
    };
}
1.0.26

2 years ago

1.0.25

3 years ago

1.0.22

3 years ago

1.0.21

3 years ago

1.0.24

3 years ago

1.0.23

3 years ago

1.0.20

3 years ago

1.0.19

3 years ago

1.0.18

3 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.6

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago