or run

tessl search
Log in

Version

Files

tile.json

task.mdevals/scenario-1/

Configuration Field Sanitizer

A utility that filters configuration objects to extract only relevant fields using pattern-based key matching.

Requirements

Build a configuration sanitizer that processes configuration objects and extracts only the fields that match specific patterns. This is useful for scenarios like:

  • Extracting environment-specific settings from a larger configuration object
  • Filtering API response data to only include needed fields
  • Removing sensitive or internal fields before logging or transmission

Your implementation should handle:

  1. Pattern-based filtering of object keys
  2. Support for wildcard patterns to match multiple keys
  3. Negation patterns to exclude specific keys
  4. Multiple pattern matching (combining inclusion and exclusion rules)

@generates

API

/**
 * Filters an object to include only keys matching the given patterns
 * @param {object} config - The configuration object to filter
 * @param {string|string[]} patterns - Pattern(s) to match keys against
 * @returns {object} A new object with only matching keys
 */
function filterConfig(config, patterns);

Test Cases

  • It filters object keys using a simple wildcard pattern @test
  • It filters object keys using multiple patterns @test
  • It excludes keys using negation patterns @test
  • It combines inclusion and exclusion patterns @test

Example Usage

const { filterConfig } = require('./src/config-sanitizer');

// Example 1: Extract all API-related settings
const config = {
  apiKey: 'secret123',
  apiTimeout: 5000,
  apiRetries: 3,
  dbHost: 'localhost',
  dbPort: 5432
};

const apiConfig = filterConfig(config, 'api*');
// Result: { apiKey: 'secret123', apiTimeout: 5000, apiRetries: 3 }

// Example 2: Extract production environment variables
const env = {
  NODE_ENV: 'production',
  PROD_DB_HOST: 'prod.db.com',
  PROD_API_KEY: 'prod-key',
  DEV_DB_HOST: 'dev.db.com',
  DEV_API_KEY: 'dev-key',
  LOG_LEVEL: 'info'
};

const prodEnv = filterConfig(env, 'PROD_*');
// Result: { PROD_DB_HOST: 'prod.db.com', PROD_API_KEY: 'prod-key' }

// Example 3: Get all settings except sensitive ones
const settings = {
  username: 'admin',
  password: 'secret',
  sessionToken: 'abc123',
  theme: 'dark',
  language: 'en'
};

const safeSettings = filterConfig(settings, ['*', '!password', '!*Token']);
// Result: { username: 'admin', theme: 'dark', language: 'en' }

Dependencies { .dependencies }

micromatch { .dependency }

Provides pattern matching capabilities for filtering object keys.