From c7a3fd4e7e299eb5ba27d913e1d4d04951eb661d Mon Sep 17 00:00:00 2001 From: isaacs Date: Sun, 9 Apr 2023 15:40:06 -0700 Subject: [PATCH] Named export only, no default export --- CHANGELOG.md | 4 ++ README.md | 8 +--- benchmark/create-fixture.js | 2 +- libtap-settings.js | 2 +- package-lock.json | 73 ++++++++++++++++++++++--------------- package.json | 8 ++-- src/bin.ts | 2 +- src/index-cjs.ts | 3 -- src/index.ts | 39 +++++++++----------- test/bin.js | 18 ++++++--- test/index.js | 4 +- tsconfig-esm.json | 2 +- 12 files changed, 89 insertions(+), 76 deletions(-) delete mode 100644 src/index-cjs.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 38d3429..5c6b86b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 5.0 + +- No default export, only named exports + # 4.4 - Provide Dirent or Stats object as second argument to filter diff --git a/README.md b/README.md index 0f57b05..73d3887 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,8 @@ Install with `npm install rimraf`. Hybrid module, load either with `import` or `require()`. ```js -// default export is the main rimraf function, or use named imports -import rimraf from 'rimraf' -// or -const rimraf = require('rimraf') - -// other strategies exported as well +// 'rimraf' export is the one you probably want, but other +// strategies exported as well. import { rimraf, rimrafSync, native, nativeSync } from 'rimraf' // or const { rimraf, rimrafSync, native, nativeSync } = require('rimraf') diff --git a/benchmark/create-fixture.js b/benchmark/create-fixture.js index 69f6777..99e7348 100644 --- a/benchmark/create-fixture.js +++ b/benchmark/create-fixture.js @@ -1,7 +1,7 @@ const { writeFile: writeFile_ } = require('fs') const writeFile = async (path, data) => new Promise((res, rej) => writeFile_(path, data, er => er ? rej(er) : res())) -const mkdirp = require('mkdirp') +const { mkdirp } = require('mkdirp') const { resolve } = require('path') const create = async (path, start, end, maxDepth, depth = 0) => { diff --git a/libtap-settings.js b/libtap-settings.js index f9edd74..5dba8c2 100644 --- a/libtap-settings.js +++ b/libtap-settings.js @@ -1,6 +1,6 @@ // use this module for tap's recursive directory removal, so that // the windows tests don't fail with EBUSY. -const rimraf = require('./') +const { rimraf } = require('./') module.exports = { rmdirRecursiveSync: path => rimraf.sync(path), rmdirRecursive(path, cb) { diff --git a/package-lock.json b/package-lock.json index b5565f3..16aa74a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.4.1", "license": "ISC", "dependencies": { - "glob": "^9.2.0" + "glob": "^10.0.0" }, "bin": { "rimraf": "dist/cjs/src/bin.js" @@ -19,7 +19,7 @@ "@types/tap": "^15.0.7", "c8": "^7.12.0", "eslint-config-prettier": "^8.6.0", - "mkdirp": "1", + "mkdirp": "^3.0.0", "prettier": "^2.8.2", "tap": "^16.3.4", "ts-node": "^10.9.1", @@ -1739,14 +1739,14 @@ } }, "node_modules/glob": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.2.1.tgz", - "integrity": "sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.0.0.tgz", + "integrity": "sha512-zmp9ZDC6NpDNLujV2W2n+3lH+BafIVZ4/ct+Yj3BMZTH/+bgm/eVjHzeFLwxJrrIGgjjS2eiQLlpurHsNlEAtQ==", "dependencies": { "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.6.4" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1777,14 +1777,14 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", - "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2282,11 +2282,11 @@ "peer": true }, "node_modules/lru-cache": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.1.tgz", - "integrity": "sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.0.0.tgz", + "integrity": "sha512-9AEKXzvOZc4BMacFnYiTOlDH/197LNnQIK9wZ6iMB5NXPzuv4bWR/Msv7iUMplkiMQ1qQL+KSv/JF1mZAB5Lrg==", "engines": { - "node": ">=12" + "node": ">=16.14" } }, "node_modules/lunr": { @@ -2341,23 +2341,26 @@ } }, "node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "engines": { "node": ">=8" } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.0.tgz", + "integrity": "sha512-7+JDnNsyCvZXoUJdkMR0oUE2AmAdsNXGTmRbiOjYIwQ6q+bL6NwrozGQdPcmYaNcrhH37F50HHBUzoaBV6FITQ==", "dev": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -2746,15 +2749,15 @@ } }, "node_modules/path-scurry": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz", - "integrity": "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.4.tgz", + "integrity": "sha512-Qp/9IHkdNiXJ3/Kon++At2nVpnhRiPq/aSvQN+H3U1WZbvNRK0RIQK/o4HMqPoXjpuGJUEWpHSs6Mnjxqh3TQg==", "dependencies": { - "lru-cache": "^7.14.1", - "minipass": "^4.0.2" + "lru-cache": "^9.0.0", + "minipass": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4600,6 +4603,18 @@ "node": ">=8" } }, + "node_modules/tap/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tap/node_modules/ms": { "version": "2.1.2", "dev": true, diff --git a/package.json b/package.json index 573563e..579a729 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "rimraf", "version": "4.4.1", - "main": "./dist/cjs/src/index-cjs.js", + "main": "./dist/cjs/src/index.js", "module": "./dist/mjs/index.js", "types": "./dist/mjs/index.d.ts", "bin": "./dist/cjs/src/bin.js", @@ -13,7 +13,7 @@ }, "require": { "types": "./dist/cjs/src/index.d.ts", - "default": "./dist/cjs/src/index-cjs.js" + "default": "./dist/cjs/src/index.js" } } }, @@ -55,7 +55,7 @@ "@types/tap": "^15.0.7", "c8": "^7.12.0", "eslint-config-prettier": "^8.6.0", - "mkdirp": "1", + "mkdirp": "^3.0.0", "prettier": "^2.8.2", "tap": "^16.3.4", "ts-node": "^10.9.1", @@ -79,6 +79,6 @@ "node": ">=14" }, "dependencies": { - "glob": "^9.2.0" + "glob": "^10.0.0" } } diff --git a/src/bin.ts b/src/bin.ts index 86163a9..b49b4e8 100755 --- a/src/bin.ts +++ b/src/bin.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node import { version } from '../package.json' -import rimraf from './index-cjs.js' +import { rimraf } from './index.js' import type { RimrafAsyncOptions } from './index.js' const runHelpForUsage = () => diff --git a/src/index-cjs.ts b/src/index-cjs.ts deleted file mode 100644 index 7662c67..0000000 --- a/src/index-cjs.ts +++ /dev/null @@ -1,3 +0,0 @@ -import rimraf from './index.js' - -export = Object.assign(rimraf, { default: rimraf }) diff --git a/src/index.ts b/src/index.ts index 5808c57..d654f3e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -111,27 +111,22 @@ export const rimrafSync = wrapSync((path, opt) => ) export const sync = rimrafSync -export const rimraf = Object.assign( - wrap((path, opt) => - useNative(opt) ? rimrafNative(path, opt) : rimrafManual(path, opt) - ), - { - // this weirdness because it's easier than explicitly declaring - rimraf: manual, - sync: rimrafSync, - rimrafSync: rimrafSync, - manual, - manualSync, - native, - nativeSync, - posix, - posixSync, - windows, - windowsSync, - moveRemove, - moveRemoveSync, - } +const rimraf_ = wrap((path, opt) => + useNative(opt) ? rimrafNative(path, opt) : rimrafManual(path, opt) ) +export const rimraf = Object.assign(rimraf_, { + rimraf: rimraf_, + sync: rimrafSync, + rimrafSync: rimrafSync, + manual, + manualSync, + native, + nativeSync, + posix, + posixSync, + windows, + windowsSync, + moveRemove, + moveRemoveSync, +}) rimraf.rimraf = rimraf - -export default rimraf diff --git a/test/bin.js b/test/bin.js index 8199d2e..aa6f26d 100644 --- a/test/bin.js +++ b/test/bin.js @@ -1,4 +1,3 @@ -const { basename } = require('path') const t = require('tap') const { readdirSync } = require('fs') @@ -14,15 +13,22 @@ t.test('basic arg parsing stuff', t => { console.error = (...msg) => ERRS.push(msg) const CALLS = [] - const rimraf = async (path, opt) => CALLS.push(['rimraf', path, opt]) - const bin = t.mock('../dist/cjs/src/bin.js', { - '../dist/cjs/src/index.js': Object.assign(rimraf, { + const rimraf = Object.assign( + async (path, opt) => CALLS.push(['rimraf', path, opt]), + { native: async (path, opt) => CALLS.push(['native', path, opt]), manual: async (path, opt) => CALLS.push(['manual', path, opt]), posix: async (path, opt) => CALLS.push(['posix', path, opt]), windows: async (path, opt) => CALLS.push(['windows', path, opt]), moveRemove: async (path, opt) => CALLS.push(['move-remove', path, opt]), - }), + } + ) + + const bin = t.mock('../dist/cjs/src/bin.js', { + '../dist/cjs/src/index.js': { + rimraf, + ...rimraf, + }, }).default t.afterEach(() => { @@ -264,7 +270,7 @@ t.test('actually delete something with it', async t => { const bin = require.resolve('../dist/cjs/src/bin.js') const { spawnSync } = require('child_process') const res = spawnSync(process.execPath, [bin, path]) - const { statSync, readdirSync } = require('fs') + const { statSync } = require('fs') t.throws(() => statSync(path)) t.equal(res.status, 0) }) diff --git a/test/index.js b/test/index.js index ee379bf..bc67def 100644 --- a/test/index.js +++ b/test/index.js @@ -10,7 +10,7 @@ t.same( types: './dist/mjs/index.d.ts', }, require: { - default: './dist/cjs/src/index-cjs.js', + default: './dist/cjs/src/index.js', types: './dist/cjs/src/index.d.ts', }, }, @@ -73,7 +73,7 @@ t.test('mocky unit tests to select the correct function', t => { }, } process.env.__TESTING_RIMRAF_PLATFORM__ = 'posix' - const rimraf = t.mock('../', mocks) + const { rimraf } = t.mock('../', mocks) t.afterEach(() => (CALLS.length = 0)) for (const useNative of [true, false]) { diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 1384ff2..bebee46 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,6 +1,6 @@ { "extends": "./tsconfig-base.json", - "exclude": ["./test", "./tap-snapshots", "src/index-cjs.ts", "src/bin.ts"], + "exclude": ["./test", "./tap-snapshots", "src/bin.ts"], "compilerOptions": { "module": "esnext", "outDir": "dist/mjs"