Skip to content

Commit a6edad1

Browse files
[codex] Filter staged desktop patched dependencies (#2945)
Co-authored-by: codex <codex@users.noreply.github.com>
1 parent 203f58e commit a6edad1

2 files changed

Lines changed: 44 additions & 11 deletions

File tree

scripts/build-desktop-artifact.test.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,37 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => {
6565
);
6666
});
6767

68-
it("carries workspace patch metadata into staged desktop installs", () => {
68+
it("carries only staged dependency patch metadata into staged desktop installs", () => {
6969
assert.deepStrictEqual(
70-
createStagePnpmConfig({
71-
"@pierre/diffs@1.1.20": "patches/@pierre%2Fdiffs@1.1.20.patch",
72-
}),
70+
createStagePnpmConfig(
71+
{
72+
"@expo/metro-config@56.0.13": "patches/@expo%2Fmetro-config@56.0.13.patch",
73+
"@pierre/diffs@1.1.20": "patches/@pierre%2Fdiffs@1.1.20.patch",
74+
"alchemy@2.0.0-beta.49": "patches/alchemy@2.0.0-beta.49.patch",
75+
"effect@4.0.0-beta.73": "patches/effect@4.0.0-beta.73.patch",
76+
},
77+
{
78+
"@pierre/diffs": "1.1.20",
79+
effect: "4.0.0-beta.73",
80+
},
81+
),
7382
{
7483
patchedDependencies: {
7584
"@pierre/diffs@1.1.20": "patches/@pierre%2Fdiffs@1.1.20.patch",
85+
"effect@4.0.0-beta.73": "patches/effect@4.0.0-beta.73.patch",
7686
},
7787
},
7888
);
7989

80-
assert.equal(createStagePnpmConfig({}), undefined);
90+
assert.equal(
91+
createStagePnpmConfig(
92+
{
93+
"@expo/metro-config@56.0.13": "patches/@expo%2Fmetro-config@56.0.13.patch",
94+
},
95+
{ effect: "4.0.0-beta.73" },
96+
),
97+
undefined,
98+
);
8199
});
82100

83101
it("falls back to the default mock update port when the configured port is blank", () => {

scripts/build-desktop-artifact.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,22 @@ interface StagePackageJson {
278278

279279
export function createStagePnpmConfig(
280280
patchedDependencies: Record<string, string>,
281+
dependencies: Record<string, unknown>,
281282
): StagePackageJson["pnpm"] | undefined {
282-
return Object.keys(patchedDependencies).length > 0 ? { patchedDependencies } : undefined;
283+
const stagePatchedDependencies = Object.fromEntries(
284+
Object.entries(patchedDependencies).filter(([patchKey]) =>
285+
Object.hasOwn(dependencies, getPatchedDependencyPackageName(patchKey)),
286+
),
287+
);
288+
289+
return Object.keys(stagePatchedDependencies).length > 0
290+
? { patchedDependencies: stagePatchedDependencies }
291+
: undefined;
292+
}
293+
294+
function getPatchedDependencyPackageName(patchKey: string): string {
295+
const versionSeparator = patchKey.lastIndexOf("@");
296+
return versionSeparator > 0 ? patchKey.slice(0, versionSeparator) : patchKey;
283297
}
284298

285299
const AzureTrustedSigningOptionsConfig = Config.all({
@@ -878,7 +892,11 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (
878892
// electron-builder is filtering out stageResourcesDir directory in the AppImage for production
879893
yield* fs.copy(stageResourcesDir, path.join(stageAppDir, "apps/desktop/prod-resources"));
880894
881-
const stagePnpmConfig = createStagePnpmConfig(workspacePatchedDependencies);
895+
const stageDependencies = {
896+
...resolvedServerDependencies,
897+
...resolvedDesktopRuntimeDependencies,
898+
};
899+
const stagePnpmConfig = createStagePnpmConfig(workspacePatchedDependencies, stageDependencies);
882900
const stagePackageJson: StagePackageJson = {
883901
name: "t3code",
884902
version: appVersion,
@@ -897,10 +915,7 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (
897915
options.mockUpdates,
898916
options.mockUpdateServerPort,
899917
),
900-
dependencies: {
901-
...resolvedServerDependencies,
902-
...resolvedDesktopRuntimeDependencies,
903-
},
918+
dependencies: stageDependencies,
904919
devDependencies: {
905920
electron: electronVersion,
906921
},

0 commit comments

Comments
 (0)