Socket
Socket
Sign inDemoInstall

@mongez/config

Package Overview
Dependencies
1
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @mongez/config

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


Version published
Maintainers
1
Created

Readme

Source

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';
        };
    };
}

FAQs

Last updated on 20 Feb 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc