Skip to content

Commit

Permalink
Add TypeScript definition (#50)
Browse files Browse the repository at this point in the history
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
  • Loading branch information
Leon Si and sindresorhus committed Jan 23, 2023
1 parent 99ada39 commit bafa535
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 3 deletions.
41 changes: 41 additions & 0 deletions index.d.ts
@@ -0,0 +1,41 @@
export type Options = {
/**
By default the wrap is soft, meaning long words may extend past the column width. Setting this to `true` will make it hard wrap at the column width.
@default false
*/
readonly hard?: boolean;

/**
By default, an attempt is made to split words at spaces, ensuring that they don't extend past the configured columns. If wordWrap is `false`, each column will instead be completely filled splitting words as necessary.
@default true
*/
readonly wordWrap?: boolean;

/**
Whitespace on all lines is removed by default. Set this option to `false` if you don't want to trim.
@default true
*/
readonly trim?: boolean;
};

/**
Wrap words to the specified column width.
@param string - String with ANSI escape codes. Like one styled by [`chalk`](https://github.com/chalk/chalk). Newline characters will be normalized to `\n`.
@param columns - Number of columns to wrap the text to.
@example
```
import chalk from 'chalk';
import wrapAnsi from 'wrap-ansi';
const input = 'The quick brown ' + chalk.red('fox jumped over ') +
'the lazy ' + chalk.green('dog and then ran away with the unicorn.');
console.log(wrapAnsi(input, 20));
```
*/
export default function wrapAnsi(string: string, columns: number, options?: Options): string;
11 changes: 11 additions & 0 deletions index.test-d.ts
@@ -0,0 +1,11 @@
import {expectType} from 'tsd';
import wrapAnsi from './index.js';

expectType<string>(wrapAnsi('input', 80));
expectType<string>(wrapAnsi('input', 80, {}));
expectType<string>(wrapAnsi('input', 80, {hard: true}));
expectType<string>(wrapAnsi('input', 80, {hard: false}));
expectType<string>(wrapAnsi('input', 80, {trim: true}));
expectType<string>(wrapAnsi('input', 80, {trim: false}));
expectType<string>(wrapAnsi('input', 80, {wordWrap: true}));
expectType<string>(wrapAnsi('input', 80, {wordWrap: false}));
11 changes: 8 additions & 3 deletions package.json
Expand Up @@ -11,15 +11,19 @@
"url": "https://sindresorhus.com"
},
"type": "module",
"exports": "./index.js",
"exports": {
"types": "./index.d.ts",
"default": "./index.js"
},
"engines": {
"node": ">=12"
},
"scripts": {
"test": "xo && nyc ava"
"test": "xo && nyc ava && tsd"
},
"files": [
"index.js"
"index.js",
"index.d.ts"
],
"keywords": [
"wrap",
Expand Down Expand Up @@ -59,6 +63,7 @@
"coveralls": "^3.1.1",
"has-ansi": "^5.0.1",
"nyc": "^15.1.0",
"tsd": "^0.25.0",
"xo": "^0.44.0"
}
}

0 comments on commit bafa535

Please sign in to comment.