JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 90
  • Score
    100M100P100Q54543F
  • License Apache-2.0

Praetorian CLI – A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.

Package Exports

  • @syntropysoft/praetorian
  • @syntropysoft/praetorian/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@syntropysoft/praetorian) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Praetorian CLI πŸ›οΈ

Guardian of Configurations – Universal Validation Framework for DevSecOps

⚠️ NOTICE: This is an ALPHA release. While thoroughly tested with 1225+ tests and 38.32% mutation score, it's still under active development. Use in production with caution.

πŸš€ LATEST: v0.0.4-alpha with Pipeline Mode support for CI/CD integration!

npm version
license
build status
CodeQL
Dependabot
Mutation Score
Test Coverage
Bundle Size
Production Ready


  ____                 _             _                ____ _     ___ 
 |  _ \ _ __ __ _  ___| |_ ___  _ __(_) __ _ _ __    / ___| |   |_ _|
 | |_) | '__/ _` |/ _ \ __/ _ \| '__| |/ _` | '_ \  | |   | |    | | 
 |  __/| | | (_| |  __/ || (_) | |  | | (_| | | | | | |___| |___ | | 
 |_|   |_|  \__,_|\___|\__\___/|_|  |_|\__,_|_| |_|  \____|_____|___|
                                                                     
πŸ›‘οΈ  Guardian of Configurations & Security

πŸŽ‰ ALPHA-4 RELEASE HIGHLIGHTS

πŸš€ Praetorian CLI v0.0.4-alpha - PIPELINE MODE RELEASE!

βœ… NEW FEATURES & IMPROVEMENTS:

  • πŸ—οΈ Clean Architecture - Complete codebase reorganization with SOLID principles
  • πŸ§ͺ Robust Testing - 557 tests passing with comprehensive coverage (100% success rate)
  • 🧬 Mutation Testing - 22.40% mutation score with improved test quality
  • πŸ“¦ Optimized Dependencies - 36 unnecessary packages removed (66% reduction)
  • πŸ”§ Enhanced Build System - Improved TypeScript compilation and error handling
  • πŸ“š Professional Documentation - Complete English documentation with working examples
  • 🎯 Perfect Example - Ready-to-use example that demonstrates best practices
  • πŸ›‘οΈ Plugin System - Functional plugin architecture for extensibility
  • ⚑ Performance Improvements - Faster validation and better error handling
  • 🧹 Automatic Cleanup - Smart temporary file management
  • πŸ” Advanced Validation - Improved key comparison and structure validation
  • 🎨 Declarative Programming - Functional patterns with 100% mutation score
  • πŸ”§ Multi-Format Support - 9 file formats supported with clean adapters
  • πŸ”’ Schema Validation - NEW! JSON Schema validation with type checking and pattern matching
  • 🎯 Pattern Matching - NEW! Advanced pattern validation (email, URL, UUID, regex)
  • πŸ›‘οΈ Security Rules - NEW! Secret detection, vulnerability scanning, and compliance checking
  • πŸ” Secret Detection - NEW! Detect exposed API keys, passwords, and sensitive data
  • πŸ” Vulnerability Scanning - NEW! Scan for weak encryption, SQL injection, XSS vulnerabilities
  • πŸ“‹ Compliance Checking - NEW! PCI-DSS, GDPR, HIPAA, SOX, ISO 27001 compliance validation
  • πŸš€ Pipeline Mode - NEW! CI/CD friendly output with --pipeline flag for automated workflows
  • πŸ“Š Dual Output Modes - User-friendly detailed output + concise pipeline output
  • πŸ”§ DevSecOps Integration - Ready for Jenkins, GitHub Actions, Dockerfile, and Makefile integration
  • πŸ”§ Permission Validation - NEW! File permission validation for security-sensitive files

βœ… CORE FEATURES (All Working):

  • CLI with professional banner - Beautiful ASCII art with security colors
  • Key comparison - Compare keys across multiple configuration files (JSON/YAML/ENV/TOML/INI/XML/Properties/HCL/PLIST)
  • Multi-folder support - Works with files in different directories
  • C# compatibility - Supports appsettings.json and other .NET configurations
  • Configuration file - praetorian.yaml for defining files to compare
  • Exit codes - Proper exit codes for CI/CD integration
  • Missing file detection - Automatically create empty structure files for missing configurations
  • Required keys validation - Ensure mandatory configuration keys are present
  • Environment mapping - Support for environment-specific configuration files

🚧 COMING IN FUTURE RELEASES:

  • JSON/HTML reports for CI/CD
  • Improved mutation score (50%+ target)
  • Custom rule plugins & audit engine
  • Secret management integrations (AWS/Azure/GCP)
  • Performance optimizations (parallel processing)

For production use, wait for stable releases (1.0.0+)


βœ… Feature Checklist (At a Glance)

Available

  • Multi-format adapters: JSON, YAML, .env, TOML, INI, XML, Properties, HCL, PLIST
  • Key comparison and required keys validation
  • Environment mapping and auto-create for missing files
  • Declarative Rule System: core/local/custom ruleSets, overrides, and customRules
  • DevSecOps template (praetorian init --devsecops) with environment-specific sources
  • Security features: secret detection, vulnerability scanning, compliance checks
  • Permission validation for security-sensitive files
  • Functional validation engine (pure functions, guard clauses)
  • Plugin system (loader, manager, health checks)
  • CLI commands: init, validate
  • 557 tests across 34 suites; mutation testing configured (22.40%)

Planned

  • JSON/HTML reports for CI/CD
  • Improved mutation score (50%+ target)
  • Custom rule plugins & audit engine
  • Secret management integrations (AWS/Azure/GCP)
  • Performance optimizations (parallel processing)

πŸš€ Description

Concept Overview

  • Schema Validation: Validates objects against a JSON-like schema (types, required fields, ranges, nested structures). Designed for fast, pure-functional checks with clear error codes.
  • Pattern Matching: Validates strings using known formats (email, URL, UUID, semver) and custom regex patterns; supports warnings or errors via rule severity.
  • Security Rules: Detects secrets, weak constructs and compliance issues via rule sets; configurable by environment with guard-clause based evaluators.
  • Permission Validation: Checks file permissions by file type and provides recommended secure modes (e.g., .env β†’ 600, config.* β†’ 644).
  • Rule Loader & Dictionary: Loads rules from core/local/remote sources, deduplicates by unique ID, supports overrides and user-defined custom rules.
  • DevSecOps Rule Connector: Declarative source selection per environment; merges, overrides and disables rules deterministically; CI/CD friendly.

Praetorian CLI is a multi-environment configuration validation tool designed for DevSecOps teams. It ensures that your configuration files remain consistent across environments, enables declarative rule sets, and integrates seamlessly with CI/CD pipelines.

Perfect for:

  • πŸ—οΈ Microservices architectures with multiple config files
  • πŸ”„ Multi-environment deployments (dev, staging, prod)
  • πŸ›‘οΈ Security compliance and configuration drift detection
  • πŸš€ CI/CD pipelines requiring config validation
  • πŸ“ Development workflow - Auto-create missing configuration structures

✨ Features

  • πŸ›‘οΈ Multi-file, multi-environment validation (dev, staging, prod)
  • πŸ” Detects missing keys or inconsistent values across files
  • πŸ“ Multi-folder support - Compare files in different directories
  • πŸ”§ Framework agnostic - Works with any tech stack
  • πŸ“ Simple setup with praetorian.yaml
  • πŸ“¦ CI/CD friendly with proper exit codes
  • πŸ”‘ Supports ignored keys and required keys validation
  • πŸ†• Auto-create missing files - Generate empty structure files for missing configurations
  • 🌍 Environment mapping - Validate specific environments or all environments

πŸ”§ Compatible With

  • Configuration Formats: JSON, YAML, .env, TOML, INI, XML files
  • Frameworks: Node.js, .NET (appsettings.json), Python, Java, Go, Rust
  • Environments: Development, Staging, Production, Testing
  • Architectures: Monoliths, Microservices, Serverless
  • Platforms: Docker, Kubernetes, Cloud (AWS, Azure, GCP)

πŸ“ Supported File Formats

Praetorian supports multiple configuration file formats through its modular adapter system:

Format Extensions Status Notes
JSON .json βœ… Full Support Native support with nested object validation
YAML .yaml, .yml βœ… Full Support Supports anchors, aliases, and complex structures
Environment .env, env.* βœ… Full Support Key-value pairs with type inference
TOML .toml βœ… Full Support Table-based configuration format
INI .ini, .cfg, .conf βœ… Full Support Section-based configuration
XML .xml βœ… Full Support Nested element validation
Properties .properties βœ… Full Support Java-style properties with multiple separators
HCL .hcl, .tf, .tfvars βœ… Full Support HashiCorp Configuration Language
PLIST .plist βœ… Full Support Apple Property List format

βœ… Recent Fixes

PLIST File Adapter - Bug Fixed! πŸŽ‰

Issue: Complex nested structures with arrays containing objects were not fully supported.

Status: βœ… FIXED - The PlistFileAdapterV2 now correctly handles complex array structures.

What was fixed:

  • βœ… Simple arrays work correctly: <array><string>item1</string><string>item2</string></array>
  • βœ… Nested dictionaries work correctly: <dict><key>nested</key><dict>...</dict></dict>
  • βœ… Arrays with objects now work perfectly: <array><dict>...</dict><dict>...</dict></array>

Example of now-working structure:

<dict>
    <key>configs</key>
    <array>
        <dict>
            <key>debug</key>
            <true/>
            <key>env</key>
            <string>dev</string>
        </dict>
        <dict>
            <key>debug</key>
            <false/>
            <key>env</key>
            <string>prod</string>
        </dict>
    </array>
</dict>

Result: { configs: [{ debug: true, env: 'dev' }, { debug: false, env: 'prod' }] } βœ…

Technical Details: The fix involved properly handling the currentKey storage in the PlistStateManager when processing arrays, ensuring that arrays are correctly associated with their parent dictionary keys.


πŸš€ Quick Start

# config.yaml
database:
  host: localhost
  port: 5432

DevSecOps Quick Start (NEW)

# Generate DevSecOps template
praetorian init --devsecops --config praetorian.yaml

# Validate by environment
praetorian validate --env dev --config praetorian.yaml
praetorian validate --env prod --config praetorian.yaml
// config.json
{
  "database": {
    "host": "localhost",
    "port": 5432
  }
}
# config.toml
[database]
host = "localhost"
port = 5432
# config.ini
[database]
host=localhost
port=5432
<!-- config.xml -->
<config>
  <database>
    <host>localhost</host>
    <port>5432</port>
  </database>
</config>

πŸ“¦ Installation

npm install -g @syntropysoft/praetorian

Prerequisites:

  • Node.js 18+ (recommended: use NVM)
  • npm or yarn

βš™οΈ Basic Configuration

Create a praetorian.yaml file:

files:
  - config-dev.yaml
  - config-prod.yaml
  - config-staging.yaml

ignore_keys:
  - debug
  - temp

required_keys:
  - database.host
  - database.port
  - api.version
  - api.port

environments:
  dev: config-dev.yaml
  prod: config-prod.yaml
  staging: config-staging.yaml

πŸ› οΈ Usage

Available Commands

# Validate configuration files for key consistency
praetorian validate [FILES] [OPTIONS]

# Initialize a new configuration file
praetorian init [OPTIONS]

# Generate DevSecOps configuration template
praetorian init --devsecops [--config devsecops.yaml]

Basic Validation

Validate that all configuration files have matching keys:

praetorian validate

Output example:

πŸ“Š Validation Results:
βœ… All configuration files are consistent!
πŸ“ˆ Summary:
  β€’ Files compared: 3
  β€’ Total keys: 15
  β€’ Duration: 2ms

In case of differences:

❌ Key inconsistencies found:
  β€’ Key 'database.url' is missing in config-staging.yaml
  β€’ Key 'api.timeout' is missing in config-dev.yaml

Environment-Specific Validation

Validate a specific environment:

praetorian validate --env dev

Validate all environments:

praetorian validate --all

Missing File Detection

When files are missing, Praetorian automatically creates empty structure files:

⚠️  Missing files detected: config-staging.yaml
πŸ’‘ Creating empty structure files...
βœ… Created 1 empty structure file(s)

The created file will have the structure based on required_keys:

# config-staging.yaml (auto-created)
database:
  host: null
  port: null
api:
  version: null
  port: null

Rule System (NEW)

Praetorian uses a declarative, unified, and extensible rule system.

Concepts:

  • ruleSets: list of rule sources to load (core/local/remote)
  • overrideRules: override properties by id (e.g., severity)
  • customRules: additional user-defined rules

Minimal praetorian.yaml example:

ruleSets:
  - "@praetorian/core/all"
  - "./rules/structure.yaml"
  - "./rules/security.yaml"

overrideRules:
  - id: "version-format"
    severity: "warning"

customRules:
  - id: "team-tag-required"
    name: "Team Tag Required"
    description: "Every config must include team tag"
    type: "structure"
    severity: "error"
    enabled: true
    category: "governance"
    requiredProperties: ["metadata.team"]

πŸ“‹ Examples

🎯 Quick Examples

Example 1: Basic Configuration Files

# config-dev.yaml
app:
  name: my-app
  debug: true
  port: 3000

database:
  host: localhost
  port: 5432
# config-prod.yaml
app:
  name: my-app
  port: 80

database:
  host: prod-db.example.com
  port: 5432
  url: postgresql://user:pass@prod-db.example.com:5432/db

Example 2: C# appsettings.json

// apps/web/appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=WebApp;"
  },
  "AppSettings": {
    "ApiKey": "web-api-key-12345",
    "BaseUrl": "https://web.example.com"
  }
}

Example 3: Multi-folder Structure

# praetorian.yaml
files:
  - configs/frontend/app.config.json
  - configs/backend/app.config.json
  - apps/web/appsettings.json
  - apps/api/appsettings.json

ignore_keys:
  - debug
  - Logging
  - AllowedHosts

required_keys:
  - database.host
  - api.port
  - logging.level

Example 4: Environment Mapping

# environments.yaml
dev: config-dev.yaml
staging: config-staging.yaml
production: config-prod.yaml
# Validate specific environment
praetorian validate --environments environments.yaml --env dev

# Validate all environments
praetorian validate --environments environments.yaml --all

πŸ“š Complete Examples

Check out our examples directory for comprehensive examples:

Each example includes:


πŸ”’ NEW: Advanced Security Features

πŸ›‘οΈ Secret Detection

Detect exposed sensitive data in configuration files:

# Run validation (secrets detection is enabled via ruleSets)
praetorian validate --config praetorian.yaml

Supported Secret Types:

  • API Keys: sk-, pk_, ak_, api_key
  • JWT Tokens: eyJ...
  • Passwords: password: "mypassword123"
  • Database URLs: mysql://user:pass@host/db

πŸ” Vulnerability Scanning

Scan for security vulnerabilities:

# Run validation (vulnerability checks are enabled via ruleSets)
praetorian validate --config praetorian.yaml

Detected Vulnerabilities:

  • Weak Encryption: MD5, SHA1, DES, RC4
  • Insecure Protocols: HTTP, FTP, Telnet
  • Weak Credentials: Default passwords, short passwords
  • SQL Injection: String interpolation in queries
  • XSS: innerHTML with interpolation

πŸ“‹ Compliance Checking

Verify compliance with security standards:

# Run validation (compliance checks are enabled via ruleSets)
praetorian validate --config praetorian.yaml

Supported Standards:

  • PCI DSS: Credit card data encryption
  • GDPR: Personal data protection
  • HIPAA: Health information access control
  • SOX: Financial data controls
  • ISO 27001: Information security management

πŸ”§ Permission Validation

Validate file permissions for security:

# Run validation (permission checks are enabled via ruleSets)
praetorian validate --config praetorian.yaml

Permission Rules:

  • Environment Files: .env β†’ 600 permissions
  • Config Files: config.* β†’ 644 permissions
  • Secret Files: *secret* β†’ 600 permissions
  • Key Files: *.key β†’ 600 permissions

πŸ§ͺ Testing & Quality

Comprehensive Test Suite

  • βœ… 557 tests passing across 34 test suites (100% success rate)
  • βœ… Unit tests for all core functionality
  • βœ… Integration tests for end-to-end validation
  • βœ… Mutation testing configured with Stryker (22.40% mutation score)
  • βœ… Coverage reporting for quality assurance
  • βœ… Schema validation tests for new JSON Schema functionality
  • βœ… Pattern matching tests for regex and format validation
  • βœ… Security validation tests for secret detection and vulnerability scanning
  • βœ… Permission validation tests for file security and access control

Test Coverage Highlights

  • 100% coverage on core validation logic
  • 100% coverage on plugin management
  • 100% coverage on environment management
  • 97% coverage on utility functions
  • 86% coverage on validation rules
  • 100% mutation score on declarative programming patterns

Mutation Testing Improvements

  • FormatValidator: 72.00% mutation score (improved from 61.14%)
  • PermissionValidator: 39.16% mutation score (improved from 0%)
  • SchemaValidator: 25.74% mutation score (improved from 23.53%)
  • SecretDetector: 22.66% mutation score (improved from 12.32%)
  • Overall Project: 22.40% mutation score (improved from 20.96%)

Running Tests

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run mutation tests
npm run test:mutation

# Run integration tests only
npm run test:integration

# Run mutation tests
npm run test:mutation

Quality Metrics

  • Clean Architecture - SOLID principles applied
  • Functional Programming - Pure functions and immutability
  • Type Safety - Full TypeScript coverage
  • Error Handling - Comprehensive error management
  • Performance - Optimized for speed and efficiency
  • Sample configuration files
  • praetorian.yaml setup
  • Expected validation results
  • Common use cases

🧩 CI/CD Integration

GitHub Actions Example

- name: Validate Configurations
  run: |
    npm install -g @syntropysoft/praetorian
    praetorian validate --config praetorian.yaml

GitLab CI Example

validate_configs:
  stage: test
  script:
    - npm install -g @syntropysoft/praetorian
    - praetorian validate

🧬 Testing & Quality Improvements v0.0.4-alpha

Enhanced Test Coverage

  • +315 new tests added (from 242 to 557 total tests)
  • +7 new test suites β†’ 34 suites en total
  • Permission validation tests - File permission security validation
  • Enhanced schema validation tests - Complex nested object and array validation
  • Improved pattern matching tests - Advanced regex and format validation
  • Extended security tests - Secret detection and vulnerability scanning

Mutation Testing Enhancements

  • 22.40% overall mutation score
  • FormatValidator: 72.00% mutation score (+10.86% improvement)
  • PermissionValidator: 39.16% mutation score (new coverage from 0%)
  • SchemaValidator: 25.74% mutation score (+2.21% improvement)
  • SecretDetector: 22.66% mutation score (+10.34% improvement)

Test Organization

  • Hierarchical test structure - Tests organized by architectural layers
  • Domain tests - Core business logic validation
  • Application tests - Service and orchestrator validation
  • Infrastructure tests - Adapter and plugin validation
  • Integration tests - End-to-end workflow validation

πŸ—ΊοΈ Roadmap

  • Schema validation - Type checking and pattern matching βœ… COMPLETED v0.0.4-alpha
  • Security rules - Detect sensitive data exposure βœ… COMPLETED v0.0.4-alpha
  • Pattern matching - Advanced regex and format validation βœ… COMPLETED v0.0.4-alpha
  • Enhanced testing - Comprehensive test coverage and mutation testing βœ… COMPLETED v0.0.4-alpha
  • Pipeline Mode - CI/CD friendly output with --pipeline flag βœ… COMPLETED v0.0.4-alpha
  • JSON/HTML reports - Detailed validation reports
  • Improved mutation score - Target 50%+ mutation score for production readiness
  • Custom rule plugins - Extensible validation system
  • Secret management integration - AWS Secrets Manager, Azure Key Vault
  • Performance optimization - Parallel processing for large configs

🏒 About SyntropySoft

Praetorian CLI is proudly developed by SyntropySoft - Your trusted partner in DevSecOps solutions.

Our Products

  • πŸ” SyntropyLog - Advanced logging and monitoring platform
  • 🎨 SyntropyFront - Modern frontend development framework
  • πŸ›‘οΈ Praetorian CLI - Configuration validation framework (you are here)

Connect With Us


πŸ“œ License

Apache 2.0 Β© SyntropySoft

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.


🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Star us on GitHub ⭐ - It helps a lot!