History

[codex] Enforce canonical Node namespace imports (#3238)

Julius Marminge committed 4 months ago

Commit 2fa37ec1 parent db2750271 files · +1205 −952Browse files

Showing the changes to apps/server/src/workspace (4 of 71 files). Show all

Unified · Split

4 files
  1. apps/server/src/workspace/WorkspaceEntries.test.ts +9 −3
  2. apps/server/src/workspace/WorkspaceEntries.ts +5 −5
  3. apps/server/src/workspace/WorkspaceFileSystem.ts +4 −4
  4. apps/server/src/workspace/WorkspacePaths.ts +3 −3
apps/server/src/workspace/WorkspaceEntries.test.ts+9−3
@@ -1,13 +1,14 @@
11 // @effect-diagnostics nodeBuiltinImport:off
2−import fsPromises from "node:fs/promises";
2+import * as NodeFSP from "node:fs/promises";
33 import * as NodeServices from "@effect/platform-node/NodeServices";
44 import { FileFinder } from "@ff-labs/fff-node";
5−import { it, afterEach, describe, expect, vi } from "@effect/vitest";
5+import { it, afterEach, describe, expect } from "@effect/vitest";
66 import * as Effect from "effect/Effect";
77 import * as FileSystem from "effect/FileSystem";
88 import * as Layer from "effect/Layer";
99 import * as Path from "effect/Path";
1010 import * as PlatformError from "effect/PlatformError";
11+import { vi } from "vite-plus/test";
1112
1213 import * as ServerConfig from "../config.ts";
1314 import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
@@ -15,6 +16,11 @@ import * as VcsProcess from "../vcs/VcsProcess.ts"; · 1 unmodified line
1516 import * as WorkspaceEntries from "./WorkspaceEntries.ts";
1617 import * as WorkspacePaths from "./WorkspacePaths.ts";
1718
19+vi.mock("node:fs/promises", async (importOriginal) => {
20+ const actual = await importOriginal<typeof import("node:fs/promises")>();
21+ return { ...actual, readdir: vi.fn(actual.readdir) };
22+});
23+
1824 const TestLayer = Layer.empty.pipe(
1925 Layer.provideMerge(WorkspaceEntries.layer.pipe(Layer.provide(WorkspacePaths.layer))),
2026 Layer.provideMerge(WorkspacePaths.layer),
@@ -376,7 +382,7 @@ it.layer(TestLayer, { excludeTestServices: true })("WorkspaceEntries", (it) => { · 355 unmodified lines
376382 const cwd = yield* makeTempDir({ prefix: "t3code-workspace-browse-eacces-" });
377383
378384 const denied = Object.assign(new Error("EACCES: permission denied"), { code: "EACCES" });
379− vi.spyOn(fsPromises, "readdir").mockRejectedValueOnce(denied);
385+ vi.mocked(NodeFSP.readdir).mockRejectedValueOnce(denied);
380386
381387 const result = yield* workspaceEntries.browse({
382388 partialPath: yield* appendSeparator(cwd),
apps/server/src/workspace/WorkspaceEntries.ts+5−5
@@ -1,6 +1,6 @@
11 // @effect-diagnostics nodeBuiltinImport:off
2−import { readdir } from "node:fs/promises";
3−import { homedir } from "node:os";
2+import * as NodeFSP from "node:fs/promises";
3+import * as NodeOS from "node:os";
44
55 import * as Context from "effect/Context";
66 import * as Effect from "effect/Effect";
@@ -98,10 +98,10 @@ export class WorkspaceEntries extends Context.Service< · 91 unmodified lines
9898
9999 function expandHomePath(input: string, path: Path.Path): string {
100100 if (input === "~") {
101− return homedir();
101+ return NodeOS.homedir();
102102 }
103103 if (input.startsWith("~/") || input.startsWith("~\\")) {
104− return path.join(homedir(), input.slice(2));
104+ return path.join(NodeOS.homedir(), input.slice(2));
105105 }
106106 return input;
107107 }
@@ -176,7 +176,7 @@ export const make = Effect.gen(function* () { · 68 unmodified lines
176176 const prefix = endsWithSeparator ? "" : path.basename(resolvedInputPath);
177177
178178 const dirents = yield* Effect.tryPromise({
179− try: () => readdir(parentPath, { withFileTypes: true }),
179+ try: () => NodeFSP.readdir(parentPath, { withFileTypes: true }),
180180 catch: (cause) =>
181181 new WorkspaceEntriesReadDirectoryError({
182182 cwd: input.cwd,
apps/server/src/workspace/WorkspaceFileSystem.ts+4−4
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 *
88 * @module WorkspaceFileSystem
99 */
10−import { open, realpath } from "node:fs/promises";
10+import * as NodeFSP from "node:fs/promises";
1111
1212 import type {
1313 ProjectReadFileInput,
@@ -89,8 +89,8 @@ export const make = Effect.gen(function* () { · 75 unmodified lines
8989 return yield* Effect.tryPromise({
9090 try: async () => {
9191 const [realWorkspaceRoot, realTargetPath] = await Promise.all([
92− realpath(input.cwd),
93− realpath(target.absolutePath),
92+ NodeFSP.realpath(input.cwd),
93+ NodeFSP.realpath(target.absolutePath),
9494 ]);
9595 const relativeRealPath = path.relative(realWorkspaceRoot, realTargetPath);
9696 if (
@@ -101,7 +101,7 @@ export const make = Effect.gen(function* () { · 4 unmodified lines
101101 throw new Error("Workspace file path resolves outside the project root.");
102102 }
103103
104− const handle = await open(realTargetPath, "r");
104+ const handle = await NodeFSP.open(realTargetPath, "r");
105105 try {
106106 const stat = await handle.stat();
107107 if (!stat.isFile()) {
apps/server/src/workspace/WorkspacePaths.ts+3−3
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *
77 * @module WorkspacePaths
88 */
9−import { homedir } from "node:os";
9+import * as NodeOS from "node:os";
1010
1111 import * as Context from "effect/Context";
1212 import * as Effect from "effect/Effect";
@@ -105,10 +105,10 @@ function toPosixRelativePath(input: string): string { · 92 unmodified lines
105105
106106 function expandHomePath(input: string, path: Path.Path): string {
107107 if (input === "~") {
108− return homedir();
108+ return NodeOS.homedir();
109109 }
110110 if (input.startsWith("~/") || input.startsWith("~\\")) {
111− return path.join(homedir(), input.slice(2));
111+ return path.join(NodeOS.homedir(), input.slice(2));
112112 }
113113 return input;
114114 }