Skip to content

ODGodinho/ODGConfig

Repository files navigation

Stanley Imagem
Config Package

Config packages 📦, Using Stanley the template!

codecov Stargazers Made by ODGodinho Forks Repository size GitHub last commit License StyleCI

Table of Contents


🎇 Benefits

  • 🚀 Speed start new project or package using typescript
  • 🚨 Over 800 rules for pattern, possible errors and errors in Linter
  • 🎇 Code quality guaranteed
  • 📢 AutoReview when opening a pull-request/merge AutoReview Comment example
  • 🧪 Automatic Test when opening pull-request/merge
  • 📈 Automatic Code Coverage when opening pull-request/merge Code Coverage example
  • 📦 Automatic Package and release generate on merge
  • 🪝 Run Lint/Test command pre-commit execute
  • ⚙️ IOT/IOC (Inversion of Control) for easy use of libraries

📁 Dependencies

⏩ Get Started


🔘 Example Usage

Create new instance config class

// Example transform config with zod
const zBoolean = zod.union([
    zod.string().transform((value): boolean => value === "true" || value === "1"),
    zod.boolean(),
]);

const myValidator = zod.object({
    USE_HTTPS: zBoolean,
    OPTIONAL: zod.string().optional(),
});

// Container Instance Configuration

const config = new JsonConfig<zod.infer<typeof myValidator>>({ ...process.env }, validator);
await config.init();

🧲 Get Configs

const config: ConfigInterface;

// Get Configs
const useHttps = await config.get("USE_HTTPS");
const optional = await config.get("OPTIONAL", () => "default value");

// Has Config
if (await config.has("OPTIONAL")) {
    // Config key exists
}

// set Config
await config
    .set("OPTIONAL", "filled")
    .set("USE_HTTPS", false);

// All Configs
const all = config.all(); // Return Json with configs

// Prepare class to use
const all = config.init();

💌 Send Configs to class

For packages and SDK, always prefer to send an object instead of the entire config class

new PackageClass({
    timeout: await config.get("DEFAULT_TIMEOUT", () => 1000),
    attempt: await config.get("ATTEMPT"),
})

💻 Prepare To Develop

Copy .env.example to .env and add the values according to your needs.

📍 Start Project

First install dependencies with the following command

yarn install
# or
npm install

📨 Build and Run

To build the project, you can use the following command

if you change files, you need to run yarn build and yarn start again

yarn build && yarn test

🧪 Test Code

To Test execute this command

yarn test
# or
yarn test:watch