From 9b4c996f4d3b36ddd7944271cc80a80761219caf Mon Sep 17 00:00:00 2001 From: jekoo park Date: Wed, 13 Sep 2023 21:44:33 +0900 Subject: [PATCH 1/4] refactor: remove temp type and define it as a new type in package --- package-lock.json | 2 +- packages/vscode/src/types/Commit.ts | 16 ++++ packages/vscode/src/types/DiffStatistics.ts | 11 +++ packages/vscode/src/types/GitHubUser.ts | 5 ++ packages/vscode/src/types/Node.ts | 28 +++++++ packages/vscode/src/utils/NodeTypes.temps.ts | 80 -------------------- packages/vscode/src/utils/csm.mapper.ts | 8 +- 7 files changed, 65 insertions(+), 85 deletions(-) create mode 100644 packages/vscode/src/types/Commit.ts create mode 100644 packages/vscode/src/types/DiffStatistics.ts create mode 100644 packages/vscode/src/types/GitHubUser.ts create mode 100644 packages/vscode/src/types/Node.ts delete mode 100644 packages/vscode/src/utils/NodeTypes.temps.ts diff --git a/package-lock.json b/package-lock.json index 9e0e1cc4..9de92fed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30434,7 +30434,7 @@ "typescript": "^4.7.4", "webpack": "^5.74.0", "webpack-cli": "^4.10.0", - "webpack-dev-server": "*", + "webpack-dev-server": "^4.15.1", "webpack-merge": "^5.8.0", "yarn": "^1.22.19" }, diff --git a/packages/vscode/src/types/Commit.ts b/packages/vscode/src/types/Commit.ts new file mode 100644 index 00000000..1ddfbdb2 --- /dev/null +++ b/packages/vscode/src/types/Commit.ts @@ -0,0 +1,16 @@ +import type { DiffStatistics } from "./DiffStatistics"; +import type { GitHubUser } from "./GithubUser"; + +export type Commit = { + id: string; + parentIds: string[]; + author: GitHubUser; + committer: GitHubUser; + authorDate: string; + commitDate: string; + diffStatistics: DiffStatistics; + message: string; + tags: string[]; + releaseTags: string[]; + // fill necessary properties... +}; diff --git a/packages/vscode/src/types/DiffStatistics.ts b/packages/vscode/src/types/DiffStatistics.ts new file mode 100644 index 00000000..f1b4882e --- /dev/null +++ b/packages/vscode/src/types/DiffStatistics.ts @@ -0,0 +1,11 @@ +export type DiffStatistics = { + changedFileCount: number; + insertions: number; + deletions: number; + files: { + [id: string]: { + insertions: number; + deletions: number; + }; + }; +}; diff --git a/packages/vscode/src/types/GitHubUser.ts b/packages/vscode/src/types/GitHubUser.ts new file mode 100644 index 00000000..e0e0b96d --- /dev/null +++ b/packages/vscode/src/types/GitHubUser.ts @@ -0,0 +1,5 @@ +export type GitHubUser = { + id: string; + names: string[]; + emails: string[]; +}; diff --git a/packages/vscode/src/types/Node.ts b/packages/vscode/src/types/Node.ts new file mode 100644 index 00000000..de6f9c7a --- /dev/null +++ b/packages/vscode/src/types/Node.ts @@ -0,0 +1,28 @@ +import type { Commit } from "./Commit"; + +const NODE_TYPE_NAME = ["COMMIT", "CLUSTER"] as const; +type NodeTypeName = (typeof NODE_TYPE_NAME)[number]; + +type NodeBase = { + nodeTypeName: NodeTypeName; + // isRootNode: boolean; + // isLeafNode: boolean; + + // getParents: () => NodeType[]; +}; + +// Node = Commit + analyzed Data as node +export type CommitNode = NodeBase & { + nodeTypeName: "COMMIT"; + commit: Commit; + // seq: number; + clusterId: number; // 동일한 Cluster 내부 commit 참조 id + // hasMajorTag: boolean; + // hasMinorTag: boolean; + // isMergeCommit: boolean; +}; + +export type ClusterNode = NodeBase & { + nodeTypeName: "CLUSTER"; + commitNodeList: CommitNode[]; +}; diff --git a/packages/vscode/src/utils/NodeTypes.temps.ts b/packages/vscode/src/utils/NodeTypes.temps.ts deleted file mode 100644 index b5112265..00000000 --- a/packages/vscode/src/utils/NodeTypes.temps.ts +++ /dev/null @@ -1,80 +0,0 @@ -// TODO: Entire types will be imported from analysis-engine - -// todo: engine ComitRaw 와 통일 -// Holds just commit log raw data -export type CommitRaw = { - id: string; - parents: string[]; - message: string; - author: string; - authorDate: string; - committer: string; - date: string; - tags: string[]; - branches: string[]; - - // fill necessary properties... -}; - -// todo: engine DifferenceStatistic 와 통일 -export type DiffStatistics = { - changedFileCount: number; - insertions: number; - deletions: number; - files: { - [id: string]: { - insertions: number; - deletions: number; - }; - }; -}; - -// todo: engine GitUser 와 통일 -export type GitHubUser = { - id: string; - names: string[]; - emails: string[]; -}; - -export type Commit = { - id: string; - parentIds: string[]; - author: GitHubUser; - committer: GitHubUser; - authorDate: string; - commitDate: string; - diffStatistics: DiffStatistics; - message: string; - tags: string[]; - releaseTags: string[]; - // fill necessary properties... -}; - -export const NODE_TYPE_NAME = ["COMMIT", "CLUSTER"] as const; -export type NodeTypeName = (typeof NODE_TYPE_NAME)[number]; - -export type NodeBase = { - nodeTypeName: NodeTypeName; - // isRootNode: boolean; - // isLeafNode: boolean; - - // getParents: () => NodeType[]; -}; - -export type NodeType = CommitNode | ClusterNode; - -// Node = Commit + analyzed Data as node -export type CommitNode = NodeBase & { - nodeTypeName: "COMMIT"; - commit: Commit; - // seq: number; - clusterId: number; // 동일한 Cluster 내부 commit 참조 id - // hasMajorTag: boolean; - // hasMinorTag: boolean; - // isMergeCommit: boolean; -}; - -export type ClusterNode = NodeBase & { - nodeTypeName: "CLUSTER"; - commitNodeList: CommitNode[]; -}; diff --git a/packages/vscode/src/utils/csm.mapper.ts b/packages/vscode/src/utils/csm.mapper.ts index 88654622..5095b616 100644 --- a/packages/vscode/src/utils/csm.mapper.ts +++ b/packages/vscode/src/utils/csm.mapper.ts @@ -3,8 +3,8 @@ import type { CSMDictionary, DifferenceStatistic, } from "@githru-vscode-ext/analysis-engine/src/types"; - -import type { ClusterNode, CommitNode, DiffStatistics } from "./NodeTypes.temps"; +import type { DiffStatistics } from "../types/DiffStatistics"; +import type { ClusterNode, CommitNode } from "../types/Node"; /** * engine DifferenceStatistic → view DiffStatistics @@ -34,7 +34,7 @@ const mapDiffStatisticsFrom = (params: { differenceStatistic: DifferenceStatisti const mapCommitNodeListFrom = (params: { commits: StemCommitNode[]; clusterId: number }): CommitNode[] => { const { commits, clusterId } = params; return commits.map(({ commit }) => { - const releaseTags=commit.tags.filter(tag=>tag.startsWith('v')||/^[0-9.]+$/.test(tag)); + const releaseTags = commit.tags.filter((tag) => tag.startsWith("v") || /^[0-9.]+$/.test(tag)); return { nodeTypeName: "COMMIT" as const, commit: { @@ -63,7 +63,7 @@ const mapCommitNodeListFrom = (params: { commits: StemCommitNode[]; clusterId: n // hasMajorTag: false, // hasMinorTag: false, clusterId, - } + }; }); }; From 3b5c4be7eafcdb46a1897d9bf88e910737e58ff5 Mon Sep 17 00:00:00 2001 From: jekoo park Date: Wed, 13 Sep 2023 21:57:24 +0900 Subject: [PATCH 2/4] refactor: redefine the type defined in engine in vscode --- packages/vscode/src/types/CSMDictionary.ts | 10 +++++++ .../vscode/src/types/CommitMessageType.ts | 17 +++++++++++ .../vscode/src/types/DifferenceStatistic.ts | 12 ++++++++ packages/vscode/src/types/StemCommitNode.ts | 28 +++++++++++++++++++ packages/vscode/src/utils/csm.mapper.ts | 8 ++---- 5 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 packages/vscode/src/types/CSMDictionary.ts create mode 100644 packages/vscode/src/types/CommitMessageType.ts create mode 100644 packages/vscode/src/types/DifferenceStatistic.ts create mode 100644 packages/vscode/src/types/StemCommitNode.ts diff --git a/packages/vscode/src/types/CSMDictionary.ts b/packages/vscode/src/types/CSMDictionary.ts new file mode 100644 index 00000000..ecef1797 --- /dev/null +++ b/packages/vscode/src/types/CSMDictionary.ts @@ -0,0 +1,10 @@ +import type { StemCommitNode } from "./StemCommitNode"; + +interface CSMNode { + base: StemCommitNode; + source: StemCommitNode[]; +} + +export interface CSMDictionary { + [branch: string]: CSMNode[]; +} diff --git a/packages/vscode/src/types/CommitMessageType.ts b/packages/vscode/src/types/CommitMessageType.ts new file mode 100644 index 00000000..56225cbc --- /dev/null +++ b/packages/vscode/src/types/CommitMessageType.ts @@ -0,0 +1,17 @@ +export const CommitMessageTypeList = [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "pert", + "refactor", + "revert", + "style", + "test", +]; + +const COMMIT_MESSAGE_TYPE = [...CommitMessageTypeList] as const; + +export type CommitMessageType = (typeof COMMIT_MESSAGE_TYPE)[number]; diff --git a/packages/vscode/src/types/DifferenceStatistic.ts b/packages/vscode/src/types/DifferenceStatistic.ts new file mode 100644 index 00000000..d29ca62d --- /dev/null +++ b/packages/vscode/src/types/DifferenceStatistic.ts @@ -0,0 +1,12 @@ +interface FileChanged { + [path: string]: { + insertionCount: number; + deletionCount: number; + }; +} + +export interface DifferenceStatistic { + totalInsertionCount: number; + totalDeletionCount: number; + fileDictionary: FileChanged; +} diff --git a/packages/vscode/src/types/StemCommitNode.ts b/packages/vscode/src/types/StemCommitNode.ts new file mode 100644 index 00000000..a3376b75 --- /dev/null +++ b/packages/vscode/src/types/StemCommitNode.ts @@ -0,0 +1,28 @@ +import type { CommitMessageType } from "./CommitMessageType"; +import type { DifferenceStatistic } from "./DifferenceStatistic"; + +interface GitUser { + name: string; + email: string; +} + +interface CommitRaw { + sequence: number; + id: string; + parents: string[]; + branches: string[]; + tags: string[]; + author: GitUser; + authorDate: Date; + committer: GitUser; + committerDate: Date; + message: string; + differenceStatistic: DifferenceStatistic; + commitMessageType: CommitMessageType; +} + +export interface StemCommitNode { + // 순회 이전에는 stemId가 존재하지 않음. + stemId?: string; + commit: CommitRaw; +} diff --git a/packages/vscode/src/utils/csm.mapper.ts b/packages/vscode/src/utils/csm.mapper.ts index 5095b616..820cc3e8 100644 --- a/packages/vscode/src/utils/csm.mapper.ts +++ b/packages/vscode/src/utils/csm.mapper.ts @@ -1,10 +1,8 @@ -import type { - CommitNode as StemCommitNode, - CSMDictionary, - DifferenceStatistic, -} from "@githru-vscode-ext/analysis-engine/src/types"; import type { DiffStatistics } from "../types/DiffStatistics"; import type { ClusterNode, CommitNode } from "../types/Node"; +import type { DifferenceStatistic } from "../types/DifferenceStatistic"; +import type { CSMDictionary } from "../types/CSMDictionary"; +import type { StemCommitNode } from "../types/StemCommitNode"; /** * engine DifferenceStatistic → view DiffStatistics From 62fc98e0267032449de5e677999d0fdfa13ca7e5 Mon Sep 17 00:00:00 2001 From: jekoo park Date: Wed, 13 Sep 2023 22:26:42 +0900 Subject: [PATCH 3/4] fix: incorrect spelling Git'h'ubUser --- packages/vscode/src/types/Commit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vscode/src/types/Commit.ts b/packages/vscode/src/types/Commit.ts index 1ddfbdb2..838afac1 100644 --- a/packages/vscode/src/types/Commit.ts +++ b/packages/vscode/src/types/Commit.ts @@ -1,5 +1,5 @@ import type { DiffStatistics } from "./DiffStatistics"; -import type { GitHubUser } from "./GithubUser"; +import type { GitHubUser } from "./GitHubUser"; export type Commit = { id: string; From 4c46e7adc48e95bb63c16c108f31194a8c06d0dc Mon Sep 17 00:00:00 2001 From: jekoo park Date: Wed, 13 Sep 2023 23:02:11 +0900 Subject: [PATCH 4/4] fix: simple-import-sort on csm.mapper.ts --- packages/vscode/src/utils/csm.mapper.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vscode/src/utils/csm.mapper.ts b/packages/vscode/src/utils/csm.mapper.ts index 820cc3e8..f9738ef0 100644 --- a/packages/vscode/src/utils/csm.mapper.ts +++ b/packages/vscode/src/utils/csm.mapper.ts @@ -1,7 +1,7 @@ +import type { CSMDictionary } from "../types/CSMDictionary"; +import type { DifferenceStatistic } from "../types/DifferenceStatistic"; import type { DiffStatistics } from "../types/DiffStatistics"; import type { ClusterNode, CommitNode } from "../types/Node"; -import type { DifferenceStatistic } from "../types/DifferenceStatistic"; -import type { CSMDictionary } from "../types/CSMDictionary"; import type { StemCommitNode } from "../types/StemCommitNode"; /**