From eb65e655866f097fe4ad07bb80d6a749cc2edb34 Mon Sep 17 00:00:00 2001 From: Gerrit Birkeland Date: Wed, 31 Aug 2022 18:38:10 -0600 Subject: [PATCH] Fix packages mode outside cwd Resolves #2043 --- CHANGELOG.md | 4 ++++ package-lock.json | 12 ++++++------ package.json | 2 +- src/lib/utils/entry-point.ts | 3 ++- src/test/slow/entry-point.test.ts | 25 +++++++++++++++++++++++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a42f274ce..aba8fcefb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +### Bug Fixes + +- Fixed packages mode for packages outside of cwd (again), #2043. + ## v0.23.12 (2022-08-31) ### Features diff --git a/package-lock.json b/package-lock.json index 0cfea296a..489107b53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "@types/node": "14", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", - "@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#b88cd06fe814614a0d924af9d10d04ff95a551de", + "@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#5a9486bc66f6e36988106685768396281f6cbc10", "c8": "^7.12.0", "esbuild": "^0.15.6", "eslint": "^8.23.0", @@ -607,8 +607,8 @@ }, "node_modules/@typestrong/fs-fixture-builder": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/TypeStrong/fs-fixture-builder.git#b88cd06fe814614a0d924af9d10d04ff95a551de", - "integrity": "sha512-pPa8hDfxdpjyoKMlYlORl7yQTz6JwPUdTmZGBzsxeU7dJSTVGRXalGhSnKeCQSaUeenf0IAHW4PSuDwv/dXY1Q==", + "resolved": "git+ssh://git@github.com/TypeStrong/fs-fixture-builder.git#5a9486bc66f6e36988106685768396281f6cbc10", + "integrity": "sha512-w4mw0puueKmRLpBuICu0uacDjjhtVkvVSYz8N03bQJ0OYfRGIfS2pKyn4VmqZDAitHVkuXSA4xdgzv4yjhWcjg==", "dev": true }, "node_modules/@ungap/promise-all-settled": { @@ -7627,10 +7627,10 @@ } }, "@typestrong/fs-fixture-builder": { - "version": "git+ssh://git@github.com/TypeStrong/fs-fixture-builder.git#b88cd06fe814614a0d924af9d10d04ff95a551de", - "integrity": "sha512-pPa8hDfxdpjyoKMlYlORl7yQTz6JwPUdTmZGBzsxeU7dJSTVGRXalGhSnKeCQSaUeenf0IAHW4PSuDwv/dXY1Q==", + "version": "git+ssh://git@github.com/TypeStrong/fs-fixture-builder.git#5a9486bc66f6e36988106685768396281f6cbc10", + "integrity": "sha512-w4mw0puueKmRLpBuICu0uacDjjhtVkvVSYz8N03bQJ0OYfRGIfS2pKyn4VmqZDAitHVkuXSA4xdgzv4yjhWcjg==", "dev": true, - "from": "@typestrong/fs-fixture-builder@github:TypeStrong/fs-fixture-builder#b88cd06fe814614a0d924af9d10d04ff95a551de" + "from": "@typestrong/fs-fixture-builder@github:TypeStrong/fs-fixture-builder#5a9486bc66f6e36988106685768396281f6cbc10" }, "@ungap/promise-all-settled": { "version": "1.1.2", diff --git a/package.json b/package.json index a635830d2..c057a026a 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@types/node": "14", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", - "@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#b88cd06fe814614a0d924af9d10d04ff95a551de", + "@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#5a9486bc66f6e36988106685768396281f6cbc10", "c8": "^7.12.0", "esbuild": "^0.15.6", "eslint": "^8.23.0", diff --git a/src/lib/utils/entry-point.ts b/src/lib/utils/entry-point.ts index cfe49bcbb..93a6c477e 100644 --- a/src/lib/utils/entry-point.ts +++ b/src/lib/utils/entry-point.ts @@ -306,7 +306,8 @@ function deriveRootDir(packageGlobPaths: string[]): string { const rootPaths = globs.flatMap((glob) => filterMap(glob.set, (set) => { const stop = set.findIndex((part) => typeof part !== "string"); - return stop === -1 ? set.join("/") : set.slice(0, stop).join("/"); + const path = stop === -1 ? set : set.slice(0, stop); + return `/${path.join("/")}`; }) ); return getCommonDirectory(rootPaths); diff --git a/src/test/slow/entry-point.test.ts b/src/test/slow/entry-point.test.ts index adc89454b..7b75ba664 100644 --- a/src/test/slow/entry-point.test.ts +++ b/src/test/slow/entry-point.test.ts @@ -1,6 +1,7 @@ import { tempdirProject } from "@typestrong/fs-fixture-builder"; import { deepStrictEqual as equal, ok } from "assert"; import { join } from "path"; +import { tmpdir } from "os"; import { Application, EntryPointStrategy, TSConfigReader } from "../.."; const fixture = tempdirProject(); @@ -86,4 +87,28 @@ describe("Entry Points", () => { equal(entryPoints.length, 1); equal(entryPoints[0].version, void 0); }); + + it("Supports resolving packages outside of cwd", () => { + const fixture = tempdirProject({ rootDir: tmpdir() }); + fixture.addJsonFile("tsconfig.json", { + include: ["."], + }); + fixture.addJsonFile("package.json", { + main: "index.ts", + }); + fixture.addFile("index.ts", "export function fromIndex() {}"); + fixture.write(); + + app.bootstrap({ + tsconfig: tsconfig, + entryPoints: [fixture.cwd], + entryPointStrategy: EntryPointStrategy.Packages, + }); + + const entryPoints = app.getEntryPoints(); + fixture.rm(); + ok(entryPoints); + equal(entryPoints.length, 1); + equal(entryPoints[0].version, void 0); + }); });