diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..95471ca --- /dev/null +++ b/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; diff --git a/index.test-d.ts b/index.test-d.ts new file mode 100644 index 0000000..8186672 --- /dev/null +++ b/index.test-d.ts @@ -0,0 +1,11 @@ +import {expectType} from 'tsd'; +import wrapAnsi from './index.js'; + +expectType(wrapAnsi('input', 80)); +expectType(wrapAnsi('input', 80, {})); +expectType(wrapAnsi('input', 80, {hard: true})); +expectType(wrapAnsi('input', 80, {hard: false})); +expectType(wrapAnsi('input', 80, {trim: true})); +expectType(wrapAnsi('input', 80, {trim: false})); +expectType(wrapAnsi('input', 80, {wordWrap: true})); +expectType(wrapAnsi('input', 80, {wordWrap: false})); diff --git a/package.json b/package.json index 1681f24..7671d38 100644 --- a/package.json +++ b/package.json @@ -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", @@ -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" } }