open-index/open-npm huggingface dataset:
npm package: @malachi0412/envguard
Description: Validate nested environment variables with clear error messages
Author: Uko Chibuike Malachi
Latest version: 1.0.2

# @malachi0412/envguard

Validate nested environment variables with clear, developer-friendly error messages.

This utility recursively checks a configuration object and throws a structured error when required environment variables are missing or undefined.

---

## ✨ Features

* ✅ Supports deeply nested configuration objects
* 🧭 Reports full paths (e.g. `DB.CONNECTION.URL`)
* 🔢 Lists all missing variables with numbering
* ⚡ Zero dependencies
* 🧪 Fully testable with Node.js built-in test runner

---

## 📦 Installation

```bash
npm install @malachi0412/envguard
```

---

## 🚀 Usage

```js
import {validateEnvironmentVariables} from "@malachi0412/envguard";

validateEnvironmentVariables({
  DB: {
    HOST: process.env.DB_HOST,
    PORT: process.env.DB_PORT,
  },
  API_KEY: process.env.API_KEY,
});
```

---

## ❌ Example Error Output

If variables are missing, an error will be thrown:

```text
Missing environment variables:
1. DB.HOST
2. DB.PORT
3. API_KEY
```

---

## 🧠 How It Works

* Traverses your configuration object recursively
* Builds a path to each key using dot notation
* Flags values that are:

  * `undefined`
  * `null`
* Aggregates all missing values before throwing a single error

---

## 🧪 Tests

This package uses the built-in Node.js test runner (`node:test`).

Run tests with:

```bash
npm run test
```

### Example Test Cases

* ✔️ Does not throw when all variables are defined
* ❌ Throws for missing top-level variables
* ❌ Throws for nested missing variables
* ❌ Lists multiple missing variables correctly
* ❌ Treats `null` as missing
* ✔️ Handles deeply nested structures

---

## 🧩 API

### `validateEnvironmentVariables(configurationObject)`

#### Parameters

* `configurationObject` (object)
  A nested object representing required environment variables.

#### Returns

* `void` (throws on failure)

#### Throws

* `MissingEnvError`
  When one or more variables are missing.

---

## 📁 Example Structure

```js
{
  SERVICE: {
    DB: {
      CONNECTION: {
        URL: process.env.DB_URL
      }
    }
  }
}
```

---

## ⚠️ Behavior Notes

* `undefined` → ❌ treated as missing
* `null` → ❌ treated as missing
* Non-object values → ✅ considered valid if defined
* Objects → 🔁 traversed recursively


## 📌 Example

```js
validateEnvironmentVariables({
  SERVICE: {
    DB: {
      CONNECTION: {
        URL: undefined,
      },
    },
  },
});
```

Throws:

```text
Missing environment variable:
1. SERVICE.DB.CONNECTION.URL
```

---

## 🤝 Contributing

Contributions, issues, and feature requests are welcome.

---

## 📄 License

MIT
npm package: @malagu/component
Description: CLI for malagu component.
Latest version: 2.60.3

# CLI for malagu packages.

`malagu-component` is a command line tool to run shared npm scripts in malagu packages. 

For instance, if you want add a new `hello` script that prints `Hello World`:

- add a new script to [package.json](./package.json) with the `ext:` prefix.

```json
{
    "name": "@malagu/component",
    "scripts": {
        "ext:hello": "echo 'Hello World'"
    }
}
```

- install `malagu-component` in your package (the actual version can be different)

```json
{
    "name": "@malagu/mycomponent",
    "devDependencies": {
        "@malagu/component": "^0.1.1"
    }
}
```

- you should be able to call `hello` script in the context of your package:

```shell
    npx malagu-component hello
````

- and from npm scripts of your package:

```json
{
    "name": "@malagu/mycomponent",
    "scripts": {
        "hello": "malagu-component hello"
    }
}
```