tpmjs/packages/tools/official/normalize-whitespace
Ajax Davis 5c9f1a1d0a chore: update dependencies with compatibility fixes
- Update all packages to latest versions via pnpm update --latest
- Downgrade Prisma 7 to 6 (v7 requires schema migration)
- Downgrade Tailwind CSS 4 to 3 (v4 requires PostCSS migration)
- Downgrade Storybook 10 to 8 (addons not available in v10)
- Pin cheerio to 1.0.0-rc.12 via pnpm override (type exports changed)
- Fix AI SDK tool definitions: parameters -> inputSchema
- Fix cheerio types in extract-meta and table-extract tools
- Add explicit type annotations to tool execute functions
- Migrate biome config to v2.3.11 schema

All type-checks, tests, and builds pass.
2026-01-09 22:49:41 +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: update dependencies with compatibility fixes 2026-01-09 22:49:41 +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