tpmjs/packages/tools/official/normalize-whitespace
Ajax Davis 09fd0a5833 feat: add 55 new business tools and improve existing implementations
New tools added across multiple domains:
- Sales: lead-score, proposal-outline, objection-response
- Marketing: competitor-brief, campaign-brief, social-post-draft, email-subject-score, audience-persona, content-calendar-plan, pricing-page-copy
- HR: job-description-draft, interview-questions, performance-review-draft, onboarding-checklist, compensation-band, survey-analyze, org-chart-format, offer-letter-draft, exit-interview-summarize, policy-doc-format
- Legal: contract-clause-scan, nda-template-draft, tos-readability, risk-clause-highlight, invoice-terms-extract, gdpr-data-map, copyright-notice, trademark-check
- Finance: expense-categorize, invoice-data-extract, budget-variance, cash-flow-project, revenue-breakdown, ratio-analysis, tax-deduction-scan, reconciliation-match
- Customer Experience: feedback-themes, churn-risk-score, nps-analysis, ticket-categorize, response-template-suggest, health-score-calculate, renewal-forecast
- Education: lesson-plan-outline, quiz-generate, rubric-create, syllabus-format, progress-report-draft, learning-objective-write, curriculum-map

Also includes improvements to 68 existing tool implementations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-01 19:23:32 +10:00
..
src feat: add 55 new business tools and improve existing implementations 2026-01-01 19:23:32 +10:00
CHANGELOG.md chore: version packages 2025-12-31 23:54:47 +10:00
package.json chore: version packages 2025-12-31 23:54:47 +10:00
README.md feat: add 100+ official TPMJS tools 2025-12-31 22:55:56 +10:00
tsconfig.json feat: add 100+ official TPMJS tools 2025-12-31 22:55:56 +10:00
tsup.config.ts feat: add 100+ official TPMJS tools 2025-12-31 22:55:56 +10:00

@tpmjs/tools-normalize-whitespace

Normalize whitespace in text by trimming lines, collapsing spaces, and standardizing line endings.

Installation

npm install @tpmjs/tools-normalize-whitespace

Usage

import { normalizeWhitespaceTool } from '@tpmjs/tools-normalize-whitespace';

// Use with AI SDK
const result = await normalizeWhitespaceTool.execute({
  text: '  Hello    World  \n  This  is   a test  \r\n',
  options: {
    trimLines: true,
    collapseSpaces: true,
    normalizeLineEndings: true
  }
});

console.log(result.text);
// "Hello World\nThis is a test"

console.log(result.changes);
// {
//   linesTrimmed: 2,
//   spacesCollapsed: 5,
//   lineEndingsNormalized: 1,
//   originalLength: 44,
//   normalizedLength: 24
// }

Features

  • Trim Lines: Remove leading and trailing whitespace from each line
  • Collapse Spaces: Replace multiple consecutive spaces with a single space
  • Normalize Line Endings: Convert CRLF (\r\n) to LF (\n)
  • Change Tracking: Reports detailed statistics about transformations applied
  • Configurable: Enable/disable each normalization option independently

Input Schema

Parameter Type Required Description
text string Yes The text to normalize
options object No Normalization options (see below)

Options

Option Type Default Description
trimLines boolean true Trim whitespace from start/end of lines
collapseSpaces boolean true Collapse multiple spaces into one
normalizeLineEndings boolean true Convert CRLF to LF

Output Schema

interface NormalizeWhitespaceResult {
  text: string;           // The normalized text
  changes: {
    linesTrimmed: number;          // Number of lines that were trimmed
    spacesCollapsed: number;       // Number of spaces removed by collapsing
    lineEndingsNormalized: number; // Number of CRLF converted to LF
    originalLength: number;        // Character count before normalization
    normalizedLength: number;      // Character count after normalization
  };
}

Examples

Trim Lines Only

const result = await normalizeWhitespaceTool.execute({
  text: '  Hello  \n  World  ',
  options: {
    trimLines: true,
    collapseSpaces: false,
    normalizeLineEndings: false
  }
});
console.log(result.text);
// "Hello\nWorld"

Collapse Spaces Only

const result = await normalizeWhitespaceTool.execute({
  text: 'Hello    World   Test',
  options: {
    trimLines: false,
    collapseSpaces: true,
    normalizeLineEndings: false
  }
});
console.log(result.text);
// "Hello World Test"

Normalize Line Endings Only

const result = await normalizeWhitespaceTool.execute({
  text: 'Line 1\r\nLine 2\r\nLine 3',
  options: {
    trimLines: false,
    collapseSpaces: false,
    normalizeLineEndings: true
  }
});
console.log(result.text);
// "Line 1\nLine 2\nLine 3"

All Options Enabled (Default)

const result = await normalizeWhitespaceTool.execute({
  text: '  Hello    World  \r\n  Line   2  '
});
console.log(result.text);
// "Hello World\nLine 2"
console.log(result.changes);
// {
//   linesTrimmed: 2,
//   spacesCollapsed: 5,
//   lineEndingsNormalized: 1,
//   originalLength: 35,
//   normalizedLength: 18
// }

Use Cases

  • Data Cleaning: Normalize text data from various sources
  • Configuration Files: Clean up YAML/JSON/config file content
  • User Input: Sanitize and normalize user-submitted text
  • Text Processing: Prepare text for analysis or comparison
  • Code Formatting: Normalize whitespace in code snippets

License

MIT