diff --git a/.gitignore b/.gitignore index 735f4af..c977c85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .DS_Store +*.d.ts *.log coverage/ node_modules/ diff --git a/index.js b/index.js index d111bc1..baa70d8 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,9 @@ -// `collapse(' \t\nbar \nbaz\t') // ' bar baz '` +/** + * Collapse whitespace to a single space. + * + * @param {string} value + * @returns {string} + */ export function collapseWhiteSpace(value) { return String(value).replace(/\s+/g, ' ') } diff --git a/package.json b/package.json index 30f54b4..c597e3f 100644 --- a/package.json +++ b/package.json @@ -21,22 +21,30 @@ "sideEffects": false, "type": "module", "main": "index.js", + "types": "index.d.ts", "files": [ + "index.d.ts", "index.js" ], "devDependencies": { + "@types/tape": "^4.0.0", "c8": "^7.0.0", "prettier": "^2.0.0", "remark-cli": "^9.0.0", "remark-preset-wooorm": "^8.0.0", + "rimraf": "^3.0.0", "tape": "^5.0.0", + "typescript": "^4.0.0", "xo": "^0.38.0" }, "scripts": { + "prepublishOnly": "npm run build", "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", + "prebuild": "rimraf \"*.d.ts\"", + "build": "tsc", "test-api": "node test", "test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node test.js", - "test": "npm run format && npm run test-coverage" + "test": "npm run format && npm run build && npm run test-coverage" }, "prettier": { "tabWidth": 2, diff --git a/readme.md b/readme.md index 72bca33..e2600f0 100644 --- a/readme.md +++ b/readme.md @@ -33,7 +33,8 @@ There is no default export. ### `collapseWhiteSpace(value)` -Replace multiple whitespace characters in value with a single space. +Replace multiple whitespace characters in `value` (`string`) with a single +space. ## License diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8ac10fe --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "files": ["index.js"], + "include": ["*.js"], + "compilerOptions": { + "target": "ES2020", + "lib": ["ES2020"], + "module": "ES2020", + "moduleResolution": "node", + "allowJs": true, + "checkJs": true, + "declaration": true, + "emitDeclarationOnly": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true + } +}