Skip to content

Commit c68e6ca

Browse files
author
Hweinstock
committed
refactor(project): swap to class based implementation
1 parent b69d817 commit c68e6ca

6 files changed

Lines changed: 26 additions & 20 deletions

File tree

src/core/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type {
1212
} from "./types";
1313
import type { Logger } from "../logging";
1414
import type { ProjectManager } from "../handlers/project/types";
15-
import { createProjectManager } from "./project";
15+
import { FsProjectManager } from "./project";
1616

1717
export type {
1818
AwsClients,
@@ -55,7 +55,7 @@ export class CoreClient implements AwsClients {
5555
this.createIamClient = config.createIamClient;
5656
this.logger = config.logger;
5757

58-
this.projectManager = createProjectManager({
58+
this.projectManager = new FsProjectManager({
5959
logger: this.logger.child({ module: "projectManager" }),
6060
});
6161
}

src/core/project/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export { createProjectManager } from "./manager";
1+
export { FsProjectManager } from "./manager";

src/core/project/manager.tsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
1-
import type { ProjectManager } from "../../handlers/project/types";
1+
import type {
2+
CreateProjectInput,
3+
FindProjectInput,
4+
Project,
5+
ProjectManager,
6+
} from "../../handlers/project/types";
27
import type { Logger } from "../../logging";
38

4-
type CreateProjectManagerConfig = {
9+
type ProjectManagerConfig = {
510
logger: Logger;
611
};
712

813
/**
9-
* Creates a {@link ProjectManager} that relies on the local file system to manage access to projects.
14+
* An implementation of {@link ProjectManager} that relies on the local file system to manage access to projects.
1015
*/
11-
export function createProjectManager(_config: CreateProjectManagerConfig): ProjectManager {
12-
return {
13-
find: (_input) => {
14-
throw new Error(`ProjectManager.find is not implemented yet`);
15-
},
16-
create: (_input) => {
17-
throw new Error(`ProjectManager.create is not implemented yet`);
18-
},
19-
};
16+
export class FsProjectManager implements ProjectManager {
17+
constructor(_config: ProjectManagerConfig) {}
18+
19+
public find(_input: FindProjectInput): Promise<Project> {
20+
throw new Error(`ProjectManager.find is not implemented yet`);
21+
}
22+
23+
public create(_input: CreateProjectInput): Promise<Project> {
24+
throw new Error(`ProjectManager.create is not implemented yet`);
25+
}
2026
}

src/handlers/runtime/runtime.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const MISSING_RUNTIME_ID = "missing_runtime-0000000000";
1616

1717
function createFixtureCore(): CoreClient {
1818
const { createControlClient, createDataClient, createIamClient } = fixtureFactories(FIXTURES);
19-
return new CoreClient(createControlClient, createDataClient, createIamClient);
19+
return new CoreClient({ createControlClient, createDataClient, createIamClient, logger: createSilentLogger() });
2020
}
2121

2222
async function run(args: string[]): Promise<string> {

src/middleware/withProject.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { test, expect, describe } from "bun:test";
22
import { Router, createHandler } from "../router";
3-
import { createProjectManager } from "../core/project";
43
import { createSilentLogger } from "../testing";
54
import { withProject } from "./withProject";
5+
import { FsProjectManager } from "../core/project";
66

77
describe("withProject", () => {
88
test("throws not implemented", async () => {
9-
const projectManager = createProjectManager({ logger: createSilentLogger() });
9+
const projectManager = new FsProjectManager({ logger: createSilentLogger() });
1010

1111
const app = new Router("app", "test");
1212
app.use(withProject({ projectManager, cwd: "/some/path" }));

src/testing/TestCoreClient.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import type { CoreOptions } from "../core/types";
3636
import type { ProjectManager } from "../handlers/project/types";
3737
import type { Logger } from "../logging";
3838
import { createSilentLogger } from "./logging";
39-
import { createProjectManager } from "../core/project";
39+
import { FsProjectManager } from "../core/project";
4040

4141
// TestCoreClient is a hand-controllable `Core` for tests. It implements the same
4242
// interface the real CoreClient satisfies, so it drops straight into
@@ -481,6 +481,6 @@ export class TestCoreClient implements Core {
481481
readonly projectManager: ProjectManager;
482482

483483
constructor(options?: TestCoreClientOptions) {
484-
this.projectManager = createProjectManager({ logger: options?.logger ?? createSilentLogger() });
484+
this.projectManager = new FsProjectManager({ logger: options?.logger ?? createSilentLogger() });
485485
}
486486
}

0 commit comments

Comments
 (0)