@odg/config
v1.1.2
Published
Config interface abstraction
Downloads
266
Readme
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
- 🧪 Automatic Test when opening pull-request/merge
- 📈 Automatic Code Coverage when opening pull-request/merge
- 📦 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
andyarn start
again
yarn build && yarn test
🧪 Test Code
To Test execute this command
yarn test
# or
yarn test:watch