diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b376201..f3dea8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,22 +10,21 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - node-version: [18.18.2, 20.9.0] steps: - name: Set git to use LF run: | git config --global core.autocrlf false git config --global core.eol lf - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} + - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version-file: .tool-versions cache: "npm" - run: npm ci - run: npm run lint + - run: npm run build - run: npm test - - run: npm run coverage - name: Coveralls uses: coverallsapp/github-action@master with: diff --git a/.gitignore b/.gitignore index 03756b2..9144394 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ dist/ node_modules .nyc_output .idea +coverage diff --git a/.tool-versions b/.tool-versions index c2ca3d3..59f2f81 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 20.9.0 +nodejs 21.2.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 35b6b7c..bbfaba1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# Changelog + ## [v0.2.0] - 2023-06-10 - Now ignores workspaces that do not have a `name` property defined in their `package.json` file diff --git a/README.md b/README.md index bb98f3b..e7c3abc 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Returns [`Workspace[]`](#workspace) or `null` if `dirname` is not inside a monor Type: `string | undefined` Default: `process.cwd()` -The directory to start looking for the monorepo root. +The directory to start searching for the monorepo root. #### Options @@ -67,7 +67,7 @@ Returns [`WorkspacesRoot`](#workspaceroot) or `null` if `dirname` is not inside Type: `string | undefined` Default: `process.cwd()` -The directory to start looking for the monorepo root. +The directory to start searching for the monorepo root. #### Options @@ -87,7 +87,8 @@ Returns a cache which can be provided to [`findWorkspaces`](#findworkspacesdirna Type: `string | undefined` Default: `os.homedir()` -The directory to stop looking for the monorepo root. +The directory to stop searching for the monorepo root. +The provided directory will not be included in the search. #### cache diff --git a/package-lock.json b/package-lock.json index 7250872..c80d193 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "@types/node": "^20.9.2", "nyc": "^15.1.0", "prettier": "^3.1.0", - "rimraf": "^5.0.5", "ts-node": "^10.9.1", "typescript": "^5.2.2" } @@ -351,102 +350,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -552,16 +455,6 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -922,12 +815,6 @@ "node": ">=0.3.1" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "node_modules/electron-to-chromium": { "version": "1.4.588", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", @@ -1340,21 +1227,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -1465,24 +1337,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1611,15 +1465,6 @@ "node": "*" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mlly": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", @@ -1696,21 +1541,6 @@ "node": ">=8.9" } }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1810,67 +1640,6 @@ "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz", - "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-scurry/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/path-scurry/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/path-scurry/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/pathe": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", @@ -2007,92 +1776,15 @@ } }, "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "glob": "^7.1.3" }, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2188,21 +1880,6 @@ "node": ">=8" } }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -2223,21 +1900,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2250,19 +1912,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -2483,57 +2132,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", diff --git a/package.json b/package.json index 01c80ba..75780d7 100644 --- a/package.json +++ b/package.json @@ -11,21 +11,24 @@ "lerna", "bolt" ], - "repository": "joshuajaco/find-workspaces", + "repository": { + "type": "git", + "url": "git+https://github.com/joshuajaco/find-workspaces.git" + }, "license": "MIT", "exports": "./dist/index.js", "main": "dist/index.js", "types": "dist/index.d.js", "files": [ - "dist/" + "dist/", + "CHANGELOG.md" ], "scripts": { - "build": "rimraf dist && tsc", - "coverage": "mkdir -p coverage && touch coverage/lcov.info && nyc report --reporter=text-lcov > coverage/lcov.info", + "build": "rm -rf dist && tsc", "format": "prettier -w .", "lint": "prettier -c .", "prepublishOnly": "npm run build", - "test": "nyc ts-node tests" + "test": "nyc -r=lcov -r=text node --trace-warnings -r ts-node/register --test \"**/*.test.ts\"" }, "dependencies": { "fast-glob": "^3.3.2", @@ -36,7 +39,6 @@ "@types/node": "^20.9.2", "nyc": "^15.1.0", "prettier": "^3.1.0", - "rimraf": "^5.0.5", "ts-node": "^10.9.1", "typescript": "^5.2.2" } diff --git a/index.ts b/src/index.ts similarity index 96% rename from index.ts rename to src/index.ts index 122d975..3851bab 100644 --- a/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ -import { resolve, join, posix, sep } from "path"; -import { homedir } from "os"; -import { readFileSync } from "fs"; +import { resolve, join, posix, sep } from "node:path"; +import { homedir } from "node:os"; +import { readFileSync } from "node:fs"; import { sync as glob } from "fast-glob"; import type { PackageJson } from "pkg-types"; import { parse as parseYAML } from "yaml"; @@ -37,7 +37,7 @@ export function findWorkspacesRoot(dirname?: string, options: Options = {}) { if (cache) { for (const [key, value] of cache.root.entries()) { - if (dir.startsWith(key + sep)) return value; + if ((dir + sep).startsWith(key + sep)) return value; } } diff --git a/tests/findRoot.test.ts b/tests/findRoot.test.ts index 252d9b9..9e3d853 100644 --- a/tests/findRoot.test.ts +++ b/tests/findRoot.test.ts @@ -1,113 +1,129 @@ -import assert from "assert"; -import { join, resolve } from "path"; +import assert from "node:assert"; +import { describe, it } from "node:test"; +import { resolve } from "node:path"; import { posixResolve } from "./posixResolve"; -import { createWorkspacesCache, findWorkspacesRoot } from "../index"; - -assert.deepStrictEqual(findWorkspacesRoot(join("."), { stopDir: "bla" }), null); - -assert.deepStrictEqual( - findWorkspacesRoot(join("fixtures", "bolt", "packages", "a"), { - stopDir: join("fixtures", "bolt", "packages"), - }), - null, -); - -assert.strictEqual(findWorkspacesRoot(), null); - -assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "bolt")), { - location: posixResolve("fixtures", "bolt"), - globs: ["packages/**/*"], -}); - -assert.deepStrictEqual( - findWorkspacesRoot(join("fixtures", "lerna-with-packages")), - { - location: posixResolve("fixtures", "lerna-with-packages"), - globs: ["packages/*"], - }, -); - -assert.strictEqual( - findWorkspacesRoot(join("fixtures", "lerna-with-invalid-packages")), - null, -); - -assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "lerna")), { - location: posixResolve("fixtures", "lerna"), - globs: ["packages/*"], -}); - -assert.strictEqual( - findWorkspacesRoot(join("fixtures", "lerna-with-invalid-workspaces")), - null, -); - -assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "yarn-npm")), { - location: posixResolve("fixtures", "yarn-npm"), - globs: ["packages/*"], -}); - -assert.deepStrictEqual( - findWorkspacesRoot(join("fixtures", "yarn-npm-with-packages")), - { - location: posixResolve("fixtures", "yarn-npm-with-packages"), - globs: ["packages/*"], - }, -); - -assert.deepStrictEqual( - findWorkspacesRoot(join("fixtures", "yarn-npm", "packages", "a", "b")), - { - location: posixResolve("fixtures", "yarn-npm"), - globs: ["packages/*"], - }, -); - -assert.deepStrictEqual( - findWorkspacesRoot(posixResolve("fixtures", "yarn-npm")), - { - location: posixResolve("fixtures", "yarn-npm"), - globs: ["packages/*"], - }, -); - -const cache = createWorkspacesCache(); -const options = { cache, stopDir: "." }; - -assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "bolt"), options), { - location: posixResolve("fixtures", "bolt"), - globs: ["packages/**/*"], +import { createWorkspacesCache, findWorkspacesRoot } from "../src"; + +describe("findWorkspacesRoot", () => { + it("returns root for yarn/npm", () => { + assert.deepStrictEqual(findWorkspacesRoot("fixtures/yarn-npm/foo/bar"), { + location: posixResolve("fixtures/yarn-npm"), + globs: ["packages/*"], + }); + }); + + it("returns root for yarn/npm with packages", () => { + assert.deepStrictEqual( + findWorkspacesRoot("fixtures/yarn-npm-with-packages"), + { + location: posixResolve("fixtures/yarn-npm-with-packages"), + globs: ["packages/*"], + }, + ); + }); + + it("returns root for lerna", () => { + assert.deepStrictEqual(findWorkspacesRoot("fixtures/lerna"), { + location: posixResolve("fixtures/lerna"), + globs: ["packages/*"], + }); + }); + + it("returns root for lerna with packages", () => { + assert.deepStrictEqual(findWorkspacesRoot("fixtures/lerna-with-packages"), { + location: posixResolve("fixtures/lerna-with-packages"), + globs: ["packages/*"], + }); + }); + + it("returns root for bolt", () => { + assert.deepStrictEqual(findWorkspacesRoot("fixtures/bolt"), { + location: posixResolve("fixtures/bolt"), + globs: ["packages/**/*"], + }); + }); + + it("returns null for lerna with invalid packages", () => { + assert.strictEqual( + findWorkspacesRoot("fixtures/lerna-with-invalid-packages"), + null, + ); + }); + + it("returns null for lerna with invalid workspaces", () => { + assert.strictEqual( + findWorkspacesRoot("fixtures/lerna-with-invalid-workspaces"), + null, + ); + }); + + it("stops searching at stop dir", () => { + assert.deepStrictEqual( + findWorkspacesRoot("fixtures/bolt/packages/a", { + stopDir: "fixtures/bolt/packages", + }), + null, + ); + }); + + it("fills cache", () => { + const cache = createWorkspacesCache(); + const options = { cache, stopDir: "." }; + + assert.deepStrictEqual(findWorkspacesRoot("fixtures/bolt", options), { + location: posixResolve("fixtures/bolt"), + globs: ["packages/**/*"], + }); + + assert.deepStrictEqual(findWorkspacesRoot("fixtures/bolt", options), { + location: posixResolve("fixtures/bolt"), + globs: ["packages/**/*"], + }); + + assert.strictEqual( + findWorkspacesRoot("fixtures/lerna-with-invalid-packages", options), + null, + ); + + assert.strictEqual( + findWorkspacesRoot("fixtures/lerna-with-invalid-packages", options), + null, + ); + + assert.deepStrictEqual( + cache.root, + new Map([ + [ + resolve("fixtures/bolt"), + { + location: posixResolve("fixtures/bolt"), + globs: ["packages/**/*"], + }, + ], + [resolve("fixtures"), null], + ]), + ); + + assert.deepStrictEqual(cache.workspaces, new Map()); + + cache.clear(); + + assert.deepStrictEqual(cache.root, new Map()); + assert.deepStrictEqual(cache.workspaces, new Map()); + }); + + it("returns root from cache", () => { + const cache = createWorkspacesCache(); + const options = { cache, stopDir: "." }; + + const root = { + location: posixResolve("fixtures/bolt"), + globs: ["packages/**/*"], + }; + + cache.root.set(resolve("fixtures/bolt"), root); + + assert.strictEqual(findWorkspacesRoot("fixtures/bolt/foo", options), root); + assert.strictEqual(findWorkspacesRoot("fixtures/bolt", options), root); + }); }); - -assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "bolt"), options), { - location: posixResolve("fixtures", "bolt"), - globs: ["packages/**/*"], -}); - -assert.strictEqual( - findWorkspacesRoot(join("fixtures", "lerna-with-invalid-packages"), options), - null, -); - -assert.strictEqual( - findWorkspacesRoot(join("fixtures", "lerna-with-invalid-packages"), options), - null, -); - -assert.deepStrictEqual( - cache.root, - new Map([ - [ - resolve("fixtures", "bolt"), - { location: posixResolve("fixtures", "bolt"), globs: ["packages/**/*"] }, - ], - [resolve("fixtures"), null], - ]), -); - -assert.deepStrictEqual(cache.workspaces, new Map()); - -cache.clear(); - -assert.deepStrictEqual(cache.root, new Map()); -assert.deepStrictEqual(cache.workspaces, new Map()); diff --git a/tests/findWorkspaces.test.ts b/tests/findWorkspaces.test.ts index 0017f77..3253c89 100644 --- a/tests/findWorkspaces.test.ts +++ b/tests/findWorkspaces.test.ts @@ -1,319 +1,261 @@ -import assert from "assert"; -import { join, resolve } from "path"; +import assert from "node:assert"; +import { describe, it } from "node:test"; +import { resolve } from "node:path"; import { posixResolve } from "./posixResolve"; -import { createWorkspacesCache, findWorkspaces } from "../index"; +import { createWorkspacesCache, findWorkspaces } from "../src"; -assert.strictEqual(findWorkspaces(), null); - -assert.deepStrictEqual(findWorkspaces(join("fixtures", "bolt")), [ - { - location: posixResolve("fixtures", "bolt", "packages", "a"), - package: { name: "@bolt/a", private: true }, - }, - { - location: posixResolve("fixtures", "bolt", "packages", "b"), - package: { name: "@bolt/b", private: true }, - }, -]); - -assert.deepStrictEqual( - findWorkspaces(join("fixtures", "lerna-with-packages")), - [ - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "a", - ), - package: { name: "@lerna-with-packages/a", private: true }, - }, - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "b", - ), - package: { name: "@lerna-with-packages/b", private: true }, - }, - ], -); - -assert.strictEqual( - findWorkspaces(join("fixtures", "lerna-with-invalid-packages")), - null, -); - -assert.deepStrictEqual(findWorkspaces(join("fixtures", "lerna")), [ - { - location: posixResolve("fixtures", "lerna", "packages", "a"), - package: { name: "@lerna/a", private: true }, - }, - { - location: posixResolve("fixtures", "lerna", "packages", "b"), - package: { name: "@lerna/b", private: true }, - }, -]); +describe("findWorkspaces", () => { + it("returns workspaces for yarn/npm", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/yarn-npm/foo/bar"), [ + { + location: posixResolve("fixtures/yarn-npm/packages/a"), + package: { name: "@yarn-npm/a", private: true }, + }, + { + location: posixResolve("fixtures/yarn-npm/packages/b"), + package: { name: "@yarn-npm/b", private: true }, + }, + ]); + }); -assert.strictEqual( - findWorkspaces(join("fixtures", "lerna-with-invalid-workspaces")), - null, -); + it("returns workspaces for yarn/npm with packages", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/yarn-npm-with-packages"), [ + { + location: posixResolve("fixtures/yarn-npm-with-packages/packages/a"), + package: { name: "@yarn-npm-with-packages/a", private: true }, + }, + { + location: posixResolve("fixtures/yarn-npm-with-packages/packages/b"), + package: { name: "@yarn-npm-with-packages/b", private: true }, + }, + ]); + }); -assert.deepStrictEqual( - findWorkspaces(join("fixtures", "lerna-with-invalid-lerna-json")), - null, -); + it("returns workspaces for pnpm", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/pnpm"), [ + { + location: posixResolve("fixtures/pnpm/packages/a"), + package: { name: "@pnpm/a", private: true }, + }, + { + location: posixResolve("fixtures/pnpm/packages/b"), + package: { name: "@pnpm/b", private: true }, + }, + { + location: posixResolve("fixtures/pnpm/components/a"), + package: { name: "@pnpm/component-a", private: true }, + }, + { + location: posixResolve("fixtures/pnpm/components/b"), + package: { name: "@pnpm/component-b", private: true }, + }, + { + location: posixResolve("fixtures/pnpm/components/nested/component"), + package: { name: "@pnpm/nested-component", private: true }, + }, + ]); + }); -assert.strictEqual( - findWorkspaces(join("fixtures", "yarn-npm-with-invalid-package-json")), - null, -); + it("returns workspaces for pnpm with defaults", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/pnpm-with-defaults"), [ + { + location: posixResolve("fixtures/pnpm-with-defaults/components/a"), + package: { name: "@pnpm/component-a", private: true }, + }, + { + location: posixResolve("fixtures/pnpm-with-defaults/components/b"), + package: { name: "@pnpm/component-b", private: true }, + }, + { + location: posixResolve("fixtures/pnpm-with-defaults/packages/a"), + package: { name: "@pnpm/a", private: true }, + }, + { + location: posixResolve("fixtures/pnpm-with-defaults/packages/b"), + package: { name: "@pnpm/b", private: true }, + }, + ]); + }); -assert.strictEqual( - findWorkspaces(join("fixtures", "yarn-npm-with-invalid-workspaces")), - null, -); + it("returns workspaces for lerna", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/lerna"), [ + { + location: posixResolve("fixtures/lerna/packages/a"), + package: { name: "@lerna/a", private: true }, + }, + { + location: posixResolve("fixtures/lerna/packages/b"), + package: { name: "@lerna/b", private: true }, + }, + ]); + }); -assert.deepStrictEqual(findWorkspaces(join("fixtures", "pnpm")), [ - { - location: posixResolve("fixtures", "pnpm", "packages", "a"), - package: { name: "@pnpm/a", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm", "packages", "b"), - package: { name: "@pnpm/b", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm", "components", "a"), - package: { name: "@pnpm/component-a", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm", "components", "b"), - package: { name: "@pnpm/component-b", private: true }, - }, - { - location: posixResolve( - "fixtures", - "pnpm", - "components", - "nested", - "component", - ), - package: { name: "@pnpm/nested-component", private: true }, - }, -]); -assert.deepStrictEqual(findWorkspaces(join("fixtures", "pnpm-with-defaults")), [ - { - location: posixResolve("fixtures", "pnpm-with-defaults", "components", "a"), - package: { name: "@pnpm/component-a", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm-with-defaults", "components", "b"), - package: { name: "@pnpm/component-b", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm-with-defaults", "packages", "a"), - package: { name: "@pnpm/a", private: true }, - }, - { - location: posixResolve("fixtures", "pnpm-with-defaults", "packages", "b"), - package: { name: "@pnpm/b", private: true }, - }, -]); + it("returns workspaces for lerna with packages", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/lerna-with-packages"), [ + { + location: posixResolve("fixtures/lerna-with-packages/packages/a"), + package: { name: "@lerna-with-packages/a", private: true }, + }, + { + location: posixResolve("fixtures/lerna-with-packages/packages/b"), + package: { name: "@lerna-with-packages/b", private: true }, + }, + ]); + }); -assert.deepStrictEqual(findWorkspaces(join("fixtures", "yarn-npm")), [ - { - location: posixResolve("fixtures", "yarn-npm", "packages", "a"), - package: { name: "@yarn-npm/a", private: true }, - }, - { - location: posixResolve("fixtures", "yarn-npm", "packages", "b"), - package: { name: "@yarn-npm/b", private: true }, - }, -]); + it("returns workspaces for bolt", () => { + assert.deepStrictEqual(findWorkspaces("fixtures/bolt"), [ + { + location: posixResolve("fixtures/bolt/packages/a"), + package: { name: "@bolt/a", private: true }, + }, + { + location: posixResolve("fixtures/bolt/packages/b"), + package: { name: "@bolt/b", private: true }, + }, + ]); + }); -assert.deepStrictEqual( - findWorkspaces(join("fixtures", "yarn-npm-with-packages")), - [ - { - location: posixResolve( - "fixtures", - "yarn-npm-with-packages", - "packages", - "a", - ), - package: { name: "@yarn-npm-with-packages/a", private: true }, - }, - { - location: posixResolve( - "fixtures", - "yarn-npm-with-packages", - "packages", - "b", - ), - package: { name: "@yarn-npm-with-packages/b", private: true }, - }, - ], -); + it("returns null for cwd", () => { + assert.strictEqual(findWorkspaces(), null); + }); -assert.deepStrictEqual( - findWorkspaces(join("fixtures", "yarn-npm", "packages", "a", "b")), - [ - { - location: posixResolve("fixtures", "yarn-npm", "packages", "a"), - package: { name: "@yarn-npm/a", private: true }, - }, - { - location: posixResolve("fixtures", "yarn-npm", "packages", "b"), - package: { name: "@yarn-npm/b", private: true }, - }, - ], -); + it("returns null for yarn/npm with invalid package.json", () => { + assert.strictEqual( + findWorkspaces("fixtures/yarn-npm-with-invalid-package-json"), + null, + ); + }); -assert.deepStrictEqual(findWorkspaces(posixResolve("fixtures", "yarn-npm")), [ - { - location: posixResolve("fixtures", "yarn-npm", "packages", "a"), - package: { name: "@yarn-npm/a", private: true }, - }, - { - location: posixResolve("fixtures", "yarn-npm", "packages", "b"), - package: { name: "@yarn-npm/b", private: true }, - }, -]); + it("returns null for yarn/npm with invalid workspaces", () => { + assert.strictEqual( + findWorkspaces("fixtures/yarn-npm-with-invalid-workspaces"), + null, + ); + }); -const cache = createWorkspacesCache(); + it("returns null for lerna with invalid packages", () => { + assert.strictEqual( + findWorkspaces("fixtures/lerna-with-invalid-packages"), + null, + ); + }); -assert.deepStrictEqual( - findWorkspaces(posixResolve("fixtures", "lerna-with-packages", "foo"), { - cache, - }), - [ - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "a", - ), - package: { name: "@lerna-with-packages/a", private: true }, - }, - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "b", - ), - package: { name: "@lerna-with-packages/b", private: true }, - }, - ], -); + it("returns null for lerna with invalid workspaces", () => { + assert.strictEqual( + findWorkspaces("fixtures/lerna-with-invalid-workspaces"), + null, + ); + }); -assert.deepStrictEqual( - findWorkspaces(posixResolve("fixtures", "lerna-with-packages", "bar"), { - cache, - }), - [ - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "a", - ), - package: { name: "@lerna-with-packages/a", private: true }, - }, - { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "b", - ), - package: { name: "@lerna-with-packages/b", private: true }, - }, - ], -); + it("returns null for lerna with invalid lerna.json", () => { + assert.deepStrictEqual( + findWorkspaces("fixtures/lerna-with-invalid-lerna-json"), + null, + ); + }); -assert.deepStrictEqual( - findWorkspaces(posixResolve("fixtures", "lerna"), { cache }), - [ - { - location: posixResolve("fixtures", "lerna", "packages", "a"), - package: { name: "@lerna/a", private: true }, - }, - { - location: posixResolve("fixtures", "lerna", "packages", "b"), - package: { name: "@lerna/b", private: true }, - }, - ], -); + it("fills cache", () => { + const cache = createWorkspacesCache(); -assert.deepStrictEqual( - cache.root, - new Map([ - [ - resolve("fixtures", "lerna-with-packages"), + assert.deepStrictEqual(findWorkspaces("fixtures/lerna", { cache }), [ { - globs: ["packages/*"], - location: posixResolve("fixtures", "lerna-with-packages"), + location: posixResolve("fixtures/lerna/packages/a"), + package: { name: "@lerna/a", private: true }, }, - ], - [ - resolve("fixtures", "lerna"), { - globs: ["packages/*"], - location: posixResolve("fixtures", "lerna"), + location: posixResolve("fixtures/lerna/packages/b"), + package: { name: "@lerna/b", private: true }, }, - ], - ]), -); + ]); -assert.deepStrictEqual( - cache.workspaces, - new Map([ - [ - posixResolve("fixtures", "lerna-with-packages"), + assert.deepStrictEqual( + findWorkspaces("fixtures/lerna-with-packages/foo", { + cache, + }), [ { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "a", - ), + location: posixResolve("fixtures/lerna-with-packages/packages/a"), package: { name: "@lerna-with-packages/a", private: true }, }, { - location: posixResolve( - "fixtures", - "lerna-with-packages", - "packages", - "b", - ), + location: posixResolve("fixtures/lerna-with-packages/packages/b"), package: { name: "@lerna-with-packages/b", private: true }, }, ], - ], - [ - posixResolve("fixtures", "lerna"), + ); + + assert.deepStrictEqual( + findWorkspaces("fixtures/lerna-with-packages/bar", { + cache, + }), [ { - location: posixResolve("fixtures", "lerna", "packages", "a"), - package: { name: "@lerna/a", private: true }, + location: posixResolve("fixtures/lerna-with-packages/packages/a"), + package: { name: "@lerna-with-packages/a", private: true }, }, { - location: posixResolve("fixtures", "lerna", "packages", "b"), - package: { name: "@lerna/b", private: true }, + location: posixResolve("fixtures/lerna-with-packages/packages/b"), + package: { name: "@lerna-with-packages/b", private: true }, }, ], - ], - ]), -); + ); + + assert.deepStrictEqual( + cache.root, + new Map([ + [ + resolve("fixtures/lerna-with-packages"), + { + globs: ["packages/*"], + location: posixResolve("fixtures/lerna-with-packages"), + }, + ], + [ + resolve("fixtures/lerna"), + { + globs: ["packages/*"], + location: posixResolve("fixtures/lerna"), + }, + ], + ]), + ); + + assert.deepStrictEqual( + cache.workspaces, + new Map([ + [ + posixResolve("fixtures/lerna-with-packages"), + [ + { + location: posixResolve("fixtures/lerna-with-packages/packages/a"), + package: { name: "@lerna-with-packages/a", private: true }, + }, + { + location: posixResolve("fixtures/lerna-with-packages/packages/b"), + package: { name: "@lerna-with-packages/b", private: true }, + }, + ], + ], + [ + posixResolve("fixtures/lerna"), + [ + { + location: posixResolve("fixtures/lerna/packages/a"), + package: { name: "@lerna/a", private: true }, + }, + { + location: posixResolve("fixtures/lerna/packages/b"), + package: { name: "@lerna/b", private: true }, + }, + ], + ], + ]), + ); -cache.clear(); + cache.clear(); -assert.deepStrictEqual(cache.root, new Map()); -assert.deepStrictEqual(cache.workspaces, new Map()); + assert.deepStrictEqual(cache.root, new Map()); + assert.deepStrictEqual(cache.workspaces, new Map()); + }); +}); diff --git a/tests/index.ts b/tests/index.ts deleted file mode 100644 index 5b880ba..0000000 --- a/tests/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import "./findRoot.test"; -import "./findWorkspaces.test"; diff --git a/tests/posixResolve.ts b/tests/posixResolve.ts index 331ea7d..b07dd05 100644 --- a/tests/posixResolve.ts +++ b/tests/posixResolve.ts @@ -1,6 +1,4 @@ -import { posix, resolve, sep } from "path"; +import { posix, resolve, sep } from "node:path"; -export const posixResolve = (...segments: string[]) => - resolve(...segments) - .split(sep) - .join(posix.sep); +export const posixResolve = (path: string) => + resolve(path).split(sep).join(posix.sep); diff --git a/tsconfig.json b/tsconfig.json index dcd43e8..a229d11 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "include": ["index.ts"], + "include": ["src/**/*.ts"], "compilerOptions": { "outDir": "dist", "declaration": true,