Skip to content

Commit 5cf27c0

Browse files
committed
refact: 절대경로 사용하도록 수정
1 parent ba0b4a1 commit 5cf27c0

28 files changed

+104
-78
lines changed

example02/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "hexagonal-architecture-with-ts-02",
33
"version": "0.0.0",
44
"description": "만들면서 배우는 헥사고날 아키텍처 설계와 구현 with Typescript 2장 예제",
5-
"type": "module",
65
"engines": {
76
"node": ">= 18.12 <19"
87
},
@@ -18,11 +17,13 @@
1817
"prettier": "~2.8",
1918
"rimraf": "~3.0",
2019
"ts-jest": "~29.0",
20+
"tsconfig-paths": "^4.1.2",
2121
"tsutils": "~3.21",
2222
"typescript": "~4.9"
2323
},
2424
"scripts": {
25-
"start": "node build/src/main.js",
25+
"start": "NODE_ENV=production ts-node-esm --transpile-only -r tsconfig-paths/register src/main.ts",
26+
"start:dev": "NODE_ENV=development ts-node-dev --transpile-only --respawn -r tsconfig-paths/register --trace-warnings --trace-uncaught -- ./src/main.ts",
2627
"clean": "rimraf coverage build tmp",
2728
"prebuild": "npm run lint",
2829
"build": "tsc -p tsconfig.json",

example02/src/application/port/input/router-view.input-port.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Router } from '../../../domain/entity/router.js';
2-
import { RouterSearch } from '../../../domain/service/router.search.js';
3-
import { Predicate } from '../../../utils/types.js';
4-
import { RouterViewUsecase } from '../../usecase/router-view.usecase.js';
5-
import { RouterViewOutputPort } from '../output/router-view.output-port.js';
1+
import { RouterViewOutputPort } from 'src/application/port/output/router-view.output-port';
2+
import { RouterViewUsecase } from 'src/application/usecase/router-view.usecase';
3+
import { Router } from 'src/domain/entity/router';
4+
import { RouterSearch } from 'src/domain/service/router.search';
5+
import { Predicate } from 'src/utils/types';
66

77
export class RouterViewInputPort implements RouterViewUsecase {
88
public constructor(private readonly routerViewOutputPort: RouterViewOutputPort) {}

example02/src/application/port/output/router-view.output-port.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Router } from '../../../domain/entity/router.js';
1+
import { Router } from 'src/domain/entity/router';
22

33
export interface RouterViewOutputPort {
44
fetchRouters(): Promise<Router[]>;

example02/src/application/usecase/router-view.usecase.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Router } from '../../domain/entity/router.js';
2-
import { Predicate } from '../../utils/types.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { Predicate } from 'src/utils/types';
33

44
export interface RouterViewUsecase {
55
getRouters(filter: Predicate<Router>): Promise<Router[]>;

example02/src/domain/entity/events.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { RegexEventParser } from '../policy/regex.event-parser.js';
2-
import { SplitEventParser } from '../policy/split.event-parser.js';
3-
import { Activity } from '../vo/activity.js';
4-
import { EventId } from '../vo/event.id.js';
5-
import { ParsePolicyType } from '../vo/parse.policy.type.js';
6-
import { Protocol } from '../vo/protocol.js';
1+
import { RegexEventParser } from 'src/domain/policy/regex.event-parser';
2+
import { SplitEventParser } from 'src/domain/policy/split.event-parser';
3+
import { Activity } from 'src/domain/vo/activity';
4+
import { EventId } from 'src/domain/vo/event.id';
5+
import { ParsePolicyType } from 'src/domain/vo/parse.policy.type';
6+
import { Protocol } from 'src/domain/vo/protocol';
77

88
export class Events {
99
public constructor(private _timestamp: Date, private _id: EventId, private _protocol: Protocol, private _activity: Activity) {}

example02/src/domain/entity/router.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { Predicate } from '../../utils/types.js';
2-
import { Switch } from './switch.js';
3-
import { IP } from '../vo/ip.js';
4-
import { Network } from '../vo/network.js';
5-
import { RouterId } from '../vo/router.id.js';
6-
import { RouterType } from '../vo/router.type.js';
1+
import { Switch } from 'src/domain/entity/switch';
2+
import { IP } from 'src/domain/vo/ip';
3+
import { Network } from 'src/domain/vo/network';
4+
import { RouterId } from 'src/domain/vo/router.id';
5+
import { RouterType } from 'src/domain/vo/router.type';
6+
import { Predicate } from 'src/utils/types';
77

88
export class Router {
99
private _networkSwitch: Switch;

example02/src/domain/entity/switch.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { IP } from '../vo/ip.js';
2-
import { Network } from '../vo/network.js';
3-
import { SwitchId } from '../vo/switch.id.js';
4-
import { SwitchType } from '../vo/switch.type.js';
1+
import { IP } from 'src/domain/vo/ip';
2+
import { Network } from 'src/domain/vo/network';
3+
import { SwitchId } from 'src/domain/vo/switch.id';
4+
import { SwitchType } from 'src/domain/vo/switch.type';
55

66
export class Switch {
77
public constructor(private _type: SwitchType, private _id: SwitchId, private _networks: Network[], private _address: IP) {}

example02/src/domain/policy/event-parser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Events } from '../entity/events.js';
1+
import { Events } from 'src/domain/entity/events';
22

33
export abstract class EventParser {
44
/**

example02/src/domain/policy/regex.event-parser.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Events } from '../entity/events.js';
2-
import { Activity } from '../vo/activity.js';
3-
import { EventId } from '../vo/event.id.js';
4-
import { Protocol } from '../vo/protocol.js';
5-
import { EventParser } from './event-parser.js';
1+
import { Events } from 'src/domain/entity/events';
2+
import { EventParser } from 'src/domain/policy/event-parser';
3+
import { Activity } from 'src/domain/vo/activity';
4+
import { EventId } from 'src/domain/vo/event.id';
5+
import { Protocol } from 'src/domain/vo/protocol';
66

77
export class RegexEventParser extends EventParser {
88
parseEvent(event: string): Events {

example02/src/domain/policy/split.event-parser.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
/* eslint-disable @typescript-eslint/no-unused-vars */
2-
import { Events } from '../entity/events.js';
3-
import { Activity } from '../vo/activity.js';
4-
import { EventId } from '../vo/event.id.js';
5-
import { Protocol } from '../vo/protocol.js';
6-
import { EventParser } from './event-parser.js';
2+
3+
import { Events } from 'src/domain/entity/events';
4+
import { EventParser } from 'src/domain/policy/event-parser';
5+
import { Activity } from 'src/domain/vo/activity';
6+
import { EventId } from 'src/domain/vo/event.id';
7+
import { Protocol } from 'src/domain/vo/protocol';
78

89
export class SplitEventParser extends EventParser {
910
parseEvent(event: string): Events {

example02/src/domain/service/event.search.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Events } from '../entity/events.js';
2-
import { ParsePolicyType } from '../vo/parse.policy.type.js';
1+
import { Events } from 'src/domain/entity/events';
2+
import { ParsePolicyType } from 'src/domain/vo/parse.policy.type';
33

44
export class EventSearch {
55
public retrieveEvents(unparseEvents: string[], policyType: ParsePolicyType): Events[] {

example02/src/domain/service/network.operation.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { Router } from '../entity/router.js';
2-
import { CIDRSpecification } from '../specification/cidr.specification.js';
3-
import { NetworkAmountSpecification } from '../specification/network-amount.specification.js';
4-
import { NetworkAvailabilitySpecification } from '../specification/network-availability.specification.js';
5-
import { RouterTypeSpecification } from '../specification/router-type.specification.js';
6-
import { IP } from '../vo/ip.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { CIDRSpecification } from 'src/domain/specification/cidr.specification';
3+
import { NetworkAmountSpecification } from 'src/domain/specification/network-amount.specification';
4+
import { NetworkAvailabilitySpecification } from 'src/domain/specification/network-availability.specification';
5+
import { RouterTypeSpecification } from 'src/domain/specification/router-type.specification';
6+
import { IP } from 'src/domain/vo/ip';
7+
78
/**
89
* 새로운 네트워크 객체를 생성하고 해당 객체를 라우터에 연결된 스위치에 추가
910
*/

example02/src/domain/service/router.search.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Predicate } from '../../utils/types.js';
2-
import { Router } from '../entity/router.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { Predicate } from 'src/utils/types';
33

44
export class RouterSearch {
55
public static retrieveRouter(routers: Router[], predicate: Predicate<Router>): Router[] {

example02/src/domain/specification/cidr.specification.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AbstractSpecification } from '../../utils/specification/abstract.specification.js';
1+
import { AbstractSpecification } from 'src/utils/specification/abstract.specification';
22

33
export class CIDRSpecification extends AbstractSpecification<number> {
44
public static readonly MINIMUM_ALLOWED_CIRD = 8;

example02/src/domain/specification/network-amount.specification.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { AbstractSpecification } from '../../utils/specification/abstract.specification.js';
2-
import { Router } from '../entity/router.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { AbstractSpecification } from 'src/utils/specification/abstract.specification';
33

44
export class NetworkAmountSpecification extends AbstractSpecification<Router> {
55
public static readonly MAXIMUM_ALLOWED_NETWORKS = 0;

example02/src/domain/specification/network-availability.specification.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { AbstractSpecification } from '../../utils/specification/abstract.specification.js';
2-
import { Predicate } from '../../utils/types.js';
3-
import { Router } from '../entity/router.js';
4-
import { IP } from '../vo/ip.js';
5-
import { Network } from '../vo/network.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { IP } from 'src/domain/vo/ip';
3+
import { Network } from 'src/domain/vo/network';
4+
import { AbstractSpecification } from 'src/utils/specification/abstract.specification';
5+
import { Predicate } from 'src/utils/types';
66

77
export class NetworkAvailabilitySpecification extends AbstractSpecification<Router> {
88
public constructor(private _address: IP, private _name: string, private _cidr: number) {

example02/src/domain/specification/router-type.specification.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { AbstractSpecification } from '../../utils/specification/abstract.specification.js';
2-
import { Router } from '../entity/router.js';
3-
import { RouterType } from '../vo/router.type.js';
1+
import { Router } from 'src/domain/entity/router';
2+
import { RouterType } from 'src/domain/vo/router.type';
3+
import { AbstractSpecification } from 'src/utils/specification/abstract.specification';
44

55
export class RouterTypeSpecification extends AbstractSpecification<Router> {
66
isSatisfiedBy(router: Router): boolean {

example02/src/domain/vo/ip.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Protocol } from './protocol.js';
1+
import { Protocol } from 'src/domain/vo/protocol';
22

33
const IPV4_STRING_LENGTH = 15 as const;
44

example02/src/domain/vo/network.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IP } from './ip.js';
1+
import { IP } from 'src/domain/vo/ip';
22

33
export class Network {
44
public constructor(private readonly _address: IP, private readonly _name: string, private readonly _cidr: number) {

example02/src/domain/vo/router.id.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { UUID } from '../../utils/uuid.js';
1+
import { UUID } from 'src/utils/uuid';
22

33
export class RouterId {
44
constructor(private readonly _id: UUID) {}

example02/src/domain/vo/switch.id.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { UUID } from '../../utils/uuid.js';
1+
import { UUID } from 'src/utils/uuid';
22

33
export class SwitchId {
44
constructor(private readonly _id: UUID) {}

example02/src/framework/adapter/input/router-view.cli.adapter.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RouterViewInputPort } from '../../../application/port/input/router-view.input-port.js';
2-
import { RouterViewUsecase } from '../../../application/usecase/router-view.usecase.js';
3-
import { Router } from '../../../domain/entity/router.js';
4-
import { RouterType } from '../../../domain/vo/router.type.js';
5-
import { routerViewFileAdapter } from '../output/router-view.file.adapter.js';
1+
import { RouterViewInputPort } from 'src/application/port/input/router-view.input-port';
2+
import { RouterViewUsecase } from 'src/application/usecase/router-view.usecase';
3+
import { Router } from 'src/domain/entity/router';
4+
import { RouterType } from 'src/domain/vo/router.type';
5+
import { routerViewFileAdapter } from 'src/framework/adapter/output/router-view.file.adapter';
66

77
export class RouterViewCliAdapter {
88
private _routerViewUseCase: RouterViewUsecase;

example02/src/framework/adapter/output/router-view.file.adapter.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { readFile } from 'fs/promises';
22
import { join, resolve } from 'path';
3-
import { RouterViewOutputPort } from '../../../application/port/output/router-view.output-port.js';
4-
import { Router } from '../../../domain/entity/router.js';
5-
import { RouterId } from '../../../domain/vo/router.id.js';
6-
import { RouterType } from '../../../domain/vo/router.type.js';
3+
import { RouterViewOutputPort } from 'src/application/port/output/router-view.output-port';
4+
import { Router } from 'src/domain/entity/router';
5+
import { RouterId } from 'src/domain/vo/router.id';
6+
import { RouterType } from 'src/domain/vo/router.type';
77

88
class RouterViewFileAdapter implements RouterViewOutputPort {
99
async fetchRouters(): Promise<Router[]> {

example02/src/main.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { RouterType } from './domain/vo/router.type.js';
2-
import { RouterViewCliAdapter } from './framework/adapter/input/router-view.cli.adapter.js';
1+
import { RouterType } from 'src/domain/vo/router.type';
2+
import { RouterViewCliAdapter } from 'src/framework/adapter/input/router-view.cli.adapter';
33

44
const cli = new RouterViewCliAdapter();
55
// const routers = await cli.obtainRelatedRouters(RouterType.EDGE);

example02/src/utils/specification/abstract.specification.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { AndSpecification } from './and.specification.js';
2-
import { Specification } from './specification.js';
1+
import { AndSpecification } from 'src/utils/specification/and.specification';
2+
import { Specification } from 'src/utils/specification/specification';
33

44
export abstract class AbstractSpecification<T> implements Specification<T> {
55
abstract isSatisfiedBy(t: T): boolean;

example02/src/utils/specification/and.specification.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { AbstractSpecification } from './abstract.specification.js';
2-
import { Specification } from './specification.js';
1+
import { AbstractSpecification } from 'src/utils/specification/abstract.specification';
2+
import { Specification } from 'src/utils/specification/specification';
33

44
export class AndSpecification<T> extends AbstractSpecification<T> {
55
constructor(private readonly _spec1: Specification<T>, private readonly _spec2: Specification<T>) {

example02/tsconfig.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
"noUnusedParameters": true,
1818
"noImplicitAny": false,
1919
"noImplicitThis": false,
20-
"strictNullChecks": false
20+
"strictNullChecks": false,
21+
"baseUrl": ".",
22+
"paths": {
23+
"src/*": ["src/*"]
24+
}
2125
},
2226
"include": ["src/**/*", "__tests__/**/*"]
2327
}

example02/yarn.lock

+19
Original file line numberDiff line numberDiff line change
@@ -2279,6 +2279,11 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
22792279
dependencies:
22802280
brace-expansion "^1.1.7"
22812281

2282+
minimist@^1.2.6:
2283+
version "1.2.7"
2284+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
2285+
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
2286+
22822287
moment@*:
22832288
version "2.29.4"
22842289
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
@@ -2634,6 +2639,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
26342639
dependencies:
26352640
ansi-regex "^5.0.1"
26362641

2642+
strip-bom@^3.0.0:
2643+
version "3.0.0"
2644+
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
2645+
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
2646+
26372647
strip-bom@^4.0.0:
26382648
version "4.0.0"
26392649
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
@@ -2720,6 +2730,15 @@ ts-jest@~29.0:
27202730
semver "7.x"
27212731
yargs-parser "^21.0.1"
27222732

2733+
tsconfig-paths@^4.1.2:
2734+
version "4.1.2"
2735+
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a"
2736+
integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==
2737+
dependencies:
2738+
json5 "^2.2.2"
2739+
minimist "^1.2.6"
2740+
strip-bom "^3.0.0"
2741+
27232742
tslib@^1.8.1:
27242743
version "1.14.1"
27252744
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"

0 commit comments

Comments
 (0)