Skip to content

Commit 7f9d822

Browse files
committed
refactor(core)!: remove some scripts use cases
1 parent 5e6f9dc commit 7f9d822

File tree

15 files changed

+40
-256
lines changed

15 files changed

+40
-256
lines changed

packages/core/__tests__/in-memory-config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import AppConfig from '../config/app'
22
import InMemoryDrive from './gateways/in-memory-drive'
33
import InMemoryWorkspaceRepository from './repositories/in-memory-workspace-repository'
4+
import NodeVmEvaluation from '../gateways/evaluation/implementations/node-vm-evaluation'
45

56
export default class InMemoryAppConfig extends AppConfig {
67
public workspaceRepository: InMemoryWorkspaceRepository
@@ -18,7 +19,11 @@ export default class InMemoryAppConfig extends AppConfig {
1819
workspace: workspaceRepository,
1920
}
2021

21-
super({ repositories, drives, ...args })
22+
const services: AppConfig['services'] = {
23+
evaluation: new NodeVmEvaluation(),
24+
}
25+
26+
super({ repositories, drives, services, ...args })
2227

2328
this.workspaceRepository = workspaceRepository
2429
this.drive = drive

packages/core/app.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ import ShowItem from './use-cases/show-item/show-item'
2323
import CreateItem from './use-cases/create-item/create-item'
2424
import UpdateItem from './use-cases/update-item/update-item'
2525
import DeleteItem from './use-cases/delete-item/delete-item'
26-
import ListScripts from './use-cases/list-scripts/list-scripts'
27-
import CreateScript from './use-cases/create-script/create-script'
28-
import UpdateScript from './use-cases/update-script/update-script'
29-
import DeleteScript from './use-cases/delete-script/delete-script'
26+
3027
import ExecuteScript from './use-cases/execute-script/execute-script'
28+
3129
import ShowMenu from './use-cases/show-menu/show-menu'
3230
import UpdateMenu from './use-cases/update-menu/update-menu'
3331
import UpdateDirectoryEntry from './use-cases/update-directory-entry/update-directory-entry'
@@ -64,10 +62,6 @@ function createUseCases(app: AppConfig) {
6462
'update-item': new UpdateItem(app),
6563
'delete-item': new DeleteItem(app),
6664

67-
'list-scripts': new ListScripts(app),
68-
'create-script': new CreateScript(app),
69-
'update-script': new UpdateScript(app),
70-
'delete-script': new DeleteScript(app),
7165
'execute-script': new ExecuteScript(app),
7266

7367
'show-menu': new ShowMenu(app),

packages/core/config/app.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import CollectionFacade from '../facades/collection'
22
import DriveFacade from '../facades/drive'
33
import ItemFacade from '../facades/item'
4-
import ItemFacade from '../facades/item'
54
import Drive from '../gateways/drive/drive'
5+
import IEvaluationService from '../gateways/evaluation/evaluation'
66
import IWorkspaceRepository from '../repositories/workspace/workspace-repository'
77

88
interface Repositories {
@@ -15,14 +15,20 @@ interface Facades {
1515
item: ItemFacade
1616
}
1717

18+
interface Services {
19+
evaluation: IEvaluationService
20+
}
21+
1822
export default class AppConfig {
1923
public drives: Record<string, Drive>
2024
public repositories: Repositories
2125
public facades: Facades
26+
public services: Services
2227

23-
constructor({ drives, repositories }: Omit<AppConfig, 'facades'>) {
28+
constructor({ drives, repositories, services }: Omit<AppConfig, 'facades'>) {
2429
this.drives = drives
2530
this.repositories = repositories
31+
this.services = services
2632

2733
const driveFacade = new DriveFacade(drives)
2834
const collectionFacade = new CollectionFacade(driveFacade)

packages/core/use-cases/create-script/create-script.dto.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

packages/core/use-cases/create-script/create-script.spec.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

packages/core/use-cases/create-script/create-script.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

packages/core/use-cases/delete-script/delete-script.dto.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/core/use-cases/delete-script/delete-script.spec.ts

Lines changed: 0 additions & 44 deletions
This file was deleted.

packages/core/use-cases/delete-script/delete-script.ts

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,4 @@
1-
declare namespace ExecuteScriptDTO {
2-
export interface Input {
3-
workspaceId: string
4-
content: string
5-
}
6-
7-
export interface Output {
8-
logs: string[]
9-
error: any
10-
result: any
11-
}
1+
export default interface ExecuteScriptDTO {
2+
workspaceId: string
3+
content: string
124
}
13-
14-
export default ExecuteScriptDTO

packages/core/use-cases/execute-script/execute-script.spec.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { test } from '@japa/runner'
2+
import DirectoryEntry from '../../entities/directory-entry'
23
import Workspace from '../../entities/workspace'
34

45
import InMemoryApp from '../../__tests__/app'
6+
import InMemoryAppConfig from '../../__tests__/in-memory-config'
57
import ExecuteScript from './execute-script'
68

79
test.group('execute-script (use-case)', (group) => {
8-
const app = new InMemoryApp()
10+
const app = new InMemoryAppConfig()
911
const useCase = new ExecuteScript(app)
1012

1113
let workspace: Workspace
@@ -35,8 +37,6 @@ test.group('execute-script (use-case)', (group) => {
3537
})
3638

3739
test('should throw an error when trying to use import fs from "fs"', async ({ expect }) => {
38-
app.memoryDrive.createFile('.is/scripts/hello.js', `import fs from "fs"`)
39-
4040
const result = await useCase.execute({
4141
workspaceId: workspace.id,
4242
content: `import fs from "fs"`,
@@ -48,11 +48,13 @@ test.group('execute-script (use-case)', (group) => {
4848
test('should create a file in workspace', async ({ expect }) => {
4949
await useCase.execute({
5050
workspaceId: workspace.id,
51-
content: `await workspace.drive.write("hello.txt", "Hello word")`,
51+
content: `await Drive.write("hello.txt", Entry.encode("Hello word"))`,
5252
})
5353

54-
const content = await app.managers.drive.readAsString('hello.txt')
54+
const content = await app.drive.read('hello.txt')
55+
56+
expect(content).toBeDefined()
5557

56-
expect(content?.toString()).toBe('Hello word')
58+
expect(DirectoryEntry.decode(content!)).toBe('Hello word')
5759
})
5860
})
Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
import ExecuteScriptDTO from './execute-script.dto'
2-
import AppService from '../../services/app-service'
3-
import WorkspaceService from '../../services/workspace-service'
2+
import AppConfig from '../../config/app'
3+
import DirectoryEntry from '../../entities/directory-entry'
44
export default class ExecuteScript {
5-
constructor(private readonly app: AppService) {}
5+
constructor(private readonly app: AppConfig) {}
66

7-
public async execute({
8-
workspaceId,
9-
content,
10-
}: ExecuteScriptDTO.Input): Promise<ExecuteScriptDTO.Output> {
11-
const workspace = await WorkspaceService.from(this.app, workspaceId)
7+
public async execute({ workspaceId, content }: ExecuteScriptDTO) {
8+
const workspace = await this.app.repositories.workspace.show(workspaceId)
129

13-
const result = await this.app.evaluation.evaluate(content, { workspace })
10+
const drive = this.app.facades.drive.fromWorkspace(workspace)
1411

15-
return result
12+
const scope = {
13+
Drive: drive,
14+
Facades: this.app.facades,
15+
Entry: DirectoryEntry,
16+
}
17+
18+
return this.app.services.evaluation.evaluate(content, scope)
1619
}
1720
}

packages/core/use-cases/list-scripts/list-scripts.dto.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/core/use-cases/list-scripts/list-scripts.spec.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

packages/core/use-cases/list-scripts/list-scripts.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)